User Tools

Site Tools


return_of_samus:data_locations:ram_map

This is an old revision of the document!


Return of Samus: RAM Map

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 (??)
return_of_samus/data_locations/ram_map.1432330681.txt.gz · Last modified: 2015/05/22 21:38 by rt-55j