ARM9 RAM regions
| Range | Size | Role |
|---|---|---|
0x02000000..0x02000800 | 2 KB | Secure-area / boot init (ARM mode, encrypted on disk) |
0x02000800 | β | Entry point (ARM mode, switches to THUMB ~0x02001000) |
0x02000000..0x020A87A0 | 723 KB | ARM9 text + data (plaintext after BLZ decompress) |
0x020A1000..0x020A8000 | 28 KB | Path string region (131 unique paths into RESO containers) |
0x020A6E44..0x020A6F88 | ~324 B | ARM9 menu string pool (26 strings). See ARM9 menu pool. |
0x020A7XXX | β | BSS managers (0x020A749C OAM manager pointer + 41 refs) |
0x020A87A0..0x02125420 | ~512 KB | ARM9 BSS |
0x020AA740 | β | Master content-cache table (712 references) |
0x02125420..0x02155A00 | β | Overlay BSS / persistent |
0x02155A00..0x021570A0 | β | Shared overlay slot 1 β 66 game-mode controllers |
0x021597A0..0x021643E0 | β | Shared overlay slot 2 β 25 body / renderer |
0x0215C540..0x0215DE40 | β | Shared overlay slot 3 β 20 bodies |
0x0216DA40..0x0218E2A0 | 132 KB | ov137 (2D engine) or ov138 (3D map) |
0x02190768..0x02190A00 | β | ov137 OAM manager state (sprite-slot array etc.) |
0x021A55C0 | β | Game state struct pointer (750 references) |
0x021B6080..0x021C3420 | β | Shared overlay slot 4 (ov156/157) |
0x021C3420..0x021FB320 | β | Shared overlay slot 5 (ov158/159) |
0x021FB3C0..0x02201000 | β | Shared overlay slot 6 β 18 overlays |
0x023FFE00..0x023FFFFC | ~512 B | Stack region (per NDS spec) |
0x027E0000+ | β | ARM7 shared work RAM (used by VBlank) |
NDS hardware (referenced from ARM9 code)
| Address | Role |
|---|---|
0x040000B0..0x040000BC | DMA0 source / dest / count / control |
0x04000050 | BLDCNT β blend control (used in FUN_02181D24) |
0x04000208 | IME β interrupt master enable |
0x05000000 | BG palette main |
0x05000400 | BG palette sub |
0x06000000..0x06FFFFFF | VRAM (BG + OBJ) |
0x06400000 | OBJ VRAM main |
0x06600000 | OBJ VRAM sub |
0x07000000 | OAM main HW (1 reference in arm9 init only) |
0x07000400 | OAM sub HW |
ROM layout
| Range | Size | Content |
|---|---|---|
0x4000 | β | ARM9 (BLZ-compressed; 564,488 bytes = 0x89D08) |
0x8DE00 | 0x1680 | Overlay table β 180 entries Γ 32 bytes |
0x239600 | 0x91E5 | FNT (filename table) |
0x242800 | 0x52C8 | FAT (file allocation table) |
| β | β | 2,649 total files |
Notable BSS globals
| Address | Refs | Role |
|---|---|---|
0x020A749C | 42 | ARM9 OAM manager pointer |
0x020AA740 | 712 | Master content-cache table |
0x02190768, 0x02190764, 0x02190840, 0x02190A00 | β | Additional OAM-related BSS managers |
0x021907BC | 28 writes | ov137 sprite-slot array pointer |
0x021907C0, 0x021908A4, 0x021908B4, 0x021908B8, 0x021908BC, 0x021908C8 | β | Further sprite/OAM managers |
0x02190908 | β | ov137 OAM manager pointer |
0x021A55C0 | 750 | Game state struct pointer (top-most reference) |
Source
notes/phaseA_ghidra/DISCOVERIES.mdΒ§"Memory map"arm9_full_plaintext.binβ module-params decoded for region boundaries