The ARM7TDMI addresses 32 bits, but the console uses only the ranges below. The cartridge answers in two places: the ROM at
0x08000000 and its two copies, and the save memory at 0x0E000000. The explorer labels the start of every range in
the disassembly. Facts on this page are from GBATEK (“GBA Memory Map”).
Address space
| Range | Name | What is there |
|---|---|---|
0x00000000–0x00003FFF | BIOS ROM | 16 KiB, readable only while the program counter is inside it |
0x02000000–0x0203FFFF | On-board work RAM (EWRAM) | 256 KiB on a 16-bit bus with 2 wait states |
0x03000000–0x03007FFF | On-chip work RAM (IWRAM) | 32 KiB on a 32-bit bus, the fastest memory |
0x04000000–0x040003FE | I/O registers | Display, sound, DMA, timers, serial, keypad, interrupt control (see I/O registers) |
0x05000000–0x050003FF | Palette RAM | 1 KiB: background palette then object palette |
0x06000000–0x06017FFF | Video RAM (VRAM) | 96 KiB of tile data, tile maps and bitmaps |
0x07000000–0x070003FF | Object attribute memory (OAM) | 1 KiB: 128 sprites and the rotation and scaling parameters |
0x08000000–0x09FFFFFF | Game Pak ROM, wait state 0 | The cartridge ROM (or flash), up to 32 MiB; the program starts at 0x08000000 |
0x0A000000–0x0BFFFFFF | Game Pak ROM, wait state 1 | The same ROM again, read with the second wait-state setting |
0x0C000000–0x0DFFFFFF | Game Pak ROM, wait state 2 | The same ROM a third time, read with the third wait-state setting; EEPROM sits at the top on large cartridges |
0x0E000000–0x0E00FFFF | Game Pak SRAM | Up to 64 KiB of battery RAM or flash on an 8-bit bus |
The names in the first column of the viewer’s table are GBATEK’s ranges; the abbreviations EWRAM and IWRAM are common usage, not GBATEK’s.
Where the file goes
Byte n of a .gba file is at address 0x08000000 + n, so the header’s entry word is at
0x08000000 and the first program byte after the header is at 0x080000C0. The viewer’s disassembly starts at
that address and labels the entry branch’s target start. The same bytes also appear at 0x0A000000 and
0x0C000000; the viewer uses the first.