ARM9 memory map

DS game only γ¨γ‚“γŒγ‚Šγƒœγ‚¦γ‚·γ¨γŠγ—γ‚ƒγ‚Œγͺまほう぀かい The field guide documents the DS game's internals.

Where each region of ARM9 RAM lives in the running game. Code, BSS, overlay slots, VRAM/OAM hardware bases.

ARM9 RAM regions

RangeSizeRole
0x02000000..0x020008002 KBSecure-area / boot init (ARM mode, encrypted on disk)
0x02000800β€”Entry point (ARM mode, switches to THUMB ~0x02001000)
0x02000000..0x020A87A0723 KBARM9 text + data (plaintext after BLZ decompress)
0x020A1000..0x020A800028 KBPath string region (131 unique paths into RESO containers)
0x020A6E44..0x020A6F88~324 BARM9 menu string pool (26 strings). See ARM9 menu pool.
0x020A7XXXβ€”BSS managers (0x020A749C OAM manager pointer + 41 refs)
0x020A87A0..0x02125420~512 KBARM9 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..0x0218E2A0132 KBov137 (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 BStack region (per NDS spec)
0x027E0000+β€”ARM7 shared work RAM (used by VBlank)

NDS hardware (referenced from ARM9 code)

AddressRole
0x040000B0..0x040000BCDMA0 source / dest / count / control
0x04000050BLDCNT β€” blend control (used in FUN_02181D24)
0x04000208IME β€” interrupt master enable
0x05000000BG palette main
0x05000400BG palette sub
0x06000000..0x06FFFFFFVRAM (BG + OBJ)
0x06400000OBJ VRAM main
0x06600000OBJ VRAM sub
0x07000000OAM main HW (1 reference in arm9 init only)
0x07000400OAM sub HW

ROM layout

RangeSizeContent
0x4000β€”ARM9 (BLZ-compressed; 564,488 bytes = 0x89D08)
0x8DE000x1680Overlay table β€” 180 entries Γ— 32 bytes
0x2396000x91E5FNT (filename table)
0x2428000x52C8FAT (file allocation table)
β€”β€”2,649 total files

Notable BSS globals

AddressRefsRole
0x020A749C42ARM9 OAM manager pointer
0x020AA740712Master content-cache table
0x02190768, 0x02190764, 0x02190840, 0x02190A00β€”Additional OAM-related BSS managers
0x021907BC28 writesov137 sprite-slot array pointer
0x021907C0, 0x021908A4, 0x021908B4, 0x021908B8, 0x021908BC, 0x021908C8β€”Further sprite/OAM managers
0x02190908β€”ov137 OAM manager pointer
0x021A55C0750Game state struct pointer (top-most reference)

Source