This is an old revision of the document!
An in-progress RAM map to aid in custom assembly and ROM disassembly.
0000-3FFF - 16KB ROM Bank (fixed - bank 0)
4000-7FFF - 16KB ROM Bank (swappable)
8000-9FFF - 8KB Video RAM
A000-BFFF - 8KB SRAM
01:A000-A007 - SRAM Check - Must be 0123456789ABCDEF 01:A008-A02D - File 1 01:A080-A087 - SRAM Check 01:A088-A0AD - File 2 (verify) 01:A0C0-A0C7 - SRAM Check 01:A0C8-A0ED - File 3 (verify)
C000-DFFF - 8KB WRAM
01:C000-C09F - OAM buffer (gets copied by the sprite DMA) 01:C205 - Mirror of SCY ($FF42) 01:C206 - Mirror of SCX ($FF43) 01:C600-C7FF - Enemy Slots (0x10 slots, 0x20 bytes each) Music RAM (01:CE00-CFFF -ish) 01:CEDC - Song Enqueued (poking this causes the song to change the next frame) 01:CEDD - Song Playing (poking this does nothing) These below get copied to the sound hardware registers. 01:CF10 - Mirror of NR10 01:CF11 - Mirror of NR11 01:CF12 - Mirror of NR12 01:CF13 - Mirror of NR13 01:CF14 - Mirror of NR14 01:CF16 - Mirror of NR16 01:CF17 - Mirror of NR17 01:CF18 - Mirror of NR18 01:CF19 - Mirror of NR19 01:CF1A - Mirror of NR30 01:CF1B - Mirror of NR31 01:CF1C - Mirror of NR32 01:CF1D - Mirror of NR33 01:CF1E - Mirror of NR34 01:D02B - Direction Samus is facing 01:D045 - Item Bits 01:D04D - Weapon selected 01:D04E - Current ROM bank loaded 01:D050 - Current e-tanks owned 01:D051 - Current energy [BCD] 01:D052 - Current e-tanks filled 01:D053 - Current missile count, lo byte [BCD] 01:D054 - Current missile count, hi byte [BCD] 01:D055 - Current beam Samus has 01:D056 - Samus' solidity index 01:D058 - Current level bank loaded 01:D069 - Enemy Solidity Index 01:D077 - Damage done by acid [BCD?] 01:D078 - Damage done by spikes [BCD?] 01:D07E - Mirror of BGP ($FF47) 01:D07F - Mirror of OBP0 ($FF48) 01:D080 - Mirror of OBP1 ($FF49) 01:D081 - Max missile count, lo byte [BCD] 01:D082 - Max missile count, hi byte [BCD] 01:D084 - Samus' current tank energy (on HUD) [BCD] 01:D089 - Metroids remaining (real) [BDC] 01:D08A - Weapon solidity index 01:D08E - Screen Transition index, lo byte 01:D08F - Screen Transition index, hi byte 01:D092 - Song to resume (upon defeating a Metroid, reloading a save) 01:D09A - Metroids remaining (HUD display) [BCD] 01:D0A3 - Save File Selected 01:D0A7 - "L" Counter [BCD?] 01:D700-D73F - Door Transition Data Buffer 01:D800-D825 - Savegame data buffer 01:DA00-DBFF - Metatile data buffer 01:DC00-DCFF - Collision data buffer 01:DD00-?? - Projectile RAM
FF00-FF7F - Hardware I/O Ports/Registers
FF80-FFFE - High RAM (HRAM)
01:FF80 - Buttons being held 01:FF81 - Buttons just pressed 01:FF8D - OAM offset (beginning of first unused entry) 01:FF99 - Samus Y pos onscreen (?) 01:FF9B - Game Mode ($00-$13) 01:FFA0-FFA9 - Sprite DMA Routine 01:FFC0 - Samus Y pos (pixels) 01:FFC1 - Samus Y pos (screens) 01:FFC2 - Samus X pos (pixels) 01:FFC3 - Samus X pos (screens) 01:FFC4 - temp sprite Y position 01:FFC5 - temp sprite X position 01:FFC6 - temp sprite frame/tile (depends on the subroutine using it) 01:FFC7 - temp sprite attributes 01:FFC8 - Camera Y position (pixels) 01:FFC9 - Camera Y position (screens) 01:FFCA - Camera X position (pixels) 01:FFCB - Camera X position (screens) 01:FFE0-FFF5 - Used by active enemies (??)