User Tools

Site Tools


super:data_maps:ram_map

This is an old revision of the document!


RAM Adress Description
7E:0019 Misc. Direct Page Temporary Values
7E:0013 Commmon horizontal subpixel value or X coordinate
7E:0015 Commmon vertical subpixel value or Y coordinate
7E:0017 Commmon type or index value
7E:0019 Commmon palette value (sometimes unused)
7E:0027 16 bit multiplier
7E:0029 16 bit multiplier
7E:002D 32 bit product
7E:002F Misc. Direct Page Temporary Value
7E:003D Direct Page version of 7E:071F
7E:0051 Value for $2100 with $80:91EE (referred to as 'A') Screen Display Register a000bbbb a: 0=screen on 1=screen off, b = brightness
7E:0052 Value for $2101 with 'A'(in-game = 03, paused = 01) OAM Size and Data Area Designation aaabbccc a = Size, b = Name Selection, c = Base Selection
7E:0055 Value for $2105 with 'A' BG Mode and Tile Size Setting abcdefff abcd = BG tile size (4321): 0 = 8×8 1 = 16×16, e = BG 3 High Priority, f = BG Mode
7E:0056 Value for $07EC with 'A'
7E:0057 Value for $2106 with 'A' Mosaic Size and BG Enable aaaabbbb a = Mosaic Size b = Mosaic BG Enable
7E:0058 Value for $2107 with 'A' BG 1 Address and Size aaaaaabb a = Screen Base Address (Upper 6-bit), b = Screen Size
7E:0059 Value for $2108 with 'A' BG 2 Address and Size aaaaaabb a = Screen Base Address (Upper 6-bit), b = Screen Size
7E:005A Value for $2109 with 'A' BG 3 Address and Size aaaaaabb a = Screen Base Address (Upper 6-bit), b = Screen Size
7E:005B Value for $2109 during interrupt 0006 (VRAM Address of tiles and size for BG3)
7E:005C Value for $210A with 'A' BG 4 Address and Size aaaaaabb a = Screen Base Address (Upper 6-bit), b = Screen Size unused
7E:005D Value for $210B with 'A' BG 1 & 2 Tile Data Designation aaaabbbb a = BG 2 Tile Base Address, b = BG 1 Tile Base Address
7E:005E Value for $210C with 'A' BG 3 & 4 Tile Data Designation aaaabbbb a = BG 4 Tile Base Address, b = BG 3 Tile Base Address
7E:005F Value for $211A with 'A' Initial Setting for Mode 7 aa0000bc a = Screen Over b = Vertical Flip c = Horizontal Flip
7E:0060 Value for $2123 with 'A' BG 1 and 2 Window Mask Settings aaaabbbb a = BG 2 Window Settings b = BG 1 Window Settings
7E:0061 Value for $2124 with 'A' BG 3 and 4 Window Mask Settings aaaabbbb a = BG 4 Window Settings b = BG 3 Window Settings
7E:0062 Value for $2125 with 'A' OBJ and Color Window Settings aaaabbbb a = Color Window Settings b = OBJ Window Settings
7E:0063 Value for $2126 with 'A' Window 1 Left Position Designation
7E:0064 Value for $2127 with 'A' Window 1 Right Position Designation
7E:0065 Value for $2128 with 'A' Window 2 left Position Designation
7E:0066 Value for $2129 with 'A' Window 2 Right Position Designation
7E:0067 Value for $212A with 'A' BG 1, 2, 3 and 4 Window Logic Settings aabbccdd a = BG 4 b = BG 3 c = BG 2 d = BG 1
7E:0068 Value for $212B with 'A' Color and OBJ Window Logic Settings 0000aabb a = Color Window b = OBJ Window
7E:0069 Value for $6A and $212C with 'A' Background and Object Enable (Main Screen) 000abcde a = Object b = BG 4 c = BG 3 d = BG 2 e = BG 1
7E:006A Value for $212C (when?) Background and Object Enable (Main Screen) 000abcde a = Object b = BG 4 c = BG 3 d = BG 2 e = BG 1
7E:006B Value for $212D with 'A' Background and Object Enable (Sub Screen) 000abcde a = Object b = BG 4 c = BG 3 d = BG 2 e = BG 1
7E:006C Value for $212E with 'A' Window Mask Designation for Main Screen 000abcde a = Object b = BG 4 c = BG 3 d = BG 2 e = BG 1
7E:006D Value for $212F with 'A' Window Mask Designation for Sub Screen 000abcde a = Object b = BG 4 c = BG 3 d = BG 2 e = BG 1
7E:006E Value for $70 with 'A'
7E:006F Value for $2130 with 'A' Initial Settings for Color Addition aabb00cd a = Main Color Window On/Off, b = Sub Color Window On/Off, c = Fixed Color Add/Subtract Enable, d = Direct Select
7E:0070 Value for $2130 during interrupt 0006 (Which windows to add/subtract from)
7E:0071 Value for $73 with 'A'
7E:0072 Value for $2131 with 'A' Add/Subtract Select and Enable abcdefgh a = 0 for Addition, 1 for Subtraction, b = 1/2 Enable c = Back Enable, d = Object Enable, efgh = Enable BG 4, 3, 2, 1
7E:0073 Value for $2131 during interrupt 0006 (Which layers to modify, and whether to add or to subtract)
7E:0074 Value 1 for $2132 with 'A' Fixed Color Data abcddddd a = Blue b = Green c = Red ddddd = Color Data
7E:0075 Value 2 for $2132 with 'A' Fixed Color Data abcddddd a = Blue b = Green c = Red ddddd = Color Data
7E:0076 Value 3 for $2132 with 'A' Fixed Color Data abcddddd a = Blue b = Green c = Red ddddd = Color Data
7E:0077 Value for $2133 with 'A' Screen Initial Settings ab00cdef a = External Sync, b = ExtBG Mode, c = Pseudo 512 Mode, d = Vertical Size, e = Object-V Select, f = Interlace
7E:0078 First value for $211B with 'A' Mode 7 Matrix Parameter A always changed while zooming and while rotating
7E:0079 Second value for $211B with 'A' Mode 7 Matrix Parameter A
7E:007A First value for $211C with 'A' Mode 7 Matrix Parameter B
7E:007B Second value for $211C with 'A' Mode 7 Matrix Parameter B
7E:007C First value for $211D with 'A' Mode 7 Matrix Parameter C
7E:007D Second value for $211D with 'A' Mode 7 Matrix Parameter C
7E:007E First value for $211E with 'A' Mode 7 Matrix Parameter D always seems to be the same like $78
7E:007F Second value for $211E with 'A' Mode 7 Matrix Parameter D
7E:0080 First value for $211F with 'A' Mode 7 Center Position X
7E:0081 Second value for $211F with 'A' Mode 7 Center Position X
7E:0082 First value for $2120 with 'A' Mode 7 Center Position Y
7E:0083 Second value for $2120 with 'A' Mode 7 Center Position Y
7E:0084 Value for $4200 - NMI, V/H Count, and Joypad Enable a0bc000d a = NMI b = V-Count c = H-Count d = Joypad
7E:0085 HDMA channels to turn on? Not sure for what, looks like for Layer 3 blending for something.
7E:0086 ROM Access Speed. Probably never changed.
7E:0087 - 7E:0088 Never seems to be written to except by RAM-clearing routines.
7E:0089 - 7E:008A Never seems to be written to except by RAM-clearing routines.
7E:008B - 7E:008C Controller 1 Input
7E:008D - 7E:008E Controller 2 Input. ALL Controller 2 Unused (Debug mode)
7E:008F - 7E:0090 Controller 1 Buttons newly pressed this frame
7E:0091 - 7E:0092 Controller 2 Buttons newly pressed this frame
7E:0093 - 7E:0094 Mirror of $8F (common) or $8B (Input, no new buttons held, $A3 was 1/is now 0)
7E:0095 - 7E:0096 Mirror of $91 (common) or $8D (Input, no new buttons held, $A5 was 1/is now 0)
7E:0097 - 7E:0098 Controller 1 Input from previous frame (updated at end of button-updating routine - this will always mirror $8B except during the button-updating routine)
7E:0099 - 7E:009A Controller 2 Input from previous frame (updated at end of button-updating routine - this will always mirror $8D except during the button-updating routine)
7E:00A3 - 7E:00A4 Controller 1: If (Input, no new buttons held) $A3 is decremented. If it now = #$0000, then $A3 = $89. If no Input or no new buttons, $A3 = $87.
7E:00A5 - 7E:00A6 Controller 2: If (Input, no new buttons held) $A5 is decremented. If it now = #$0000, then $A5 = $89. If no Input or no new buttons, $A5 = $87.
7E:00A7 - 7E:00A8 Optional Next Interrupt Jump Index (must be a multiple of 2)(0 = unused)
7E:00A9 - 7E:00AA Optional Next 'Optional Next' Interrupt Jump Index (must be a multiple of 2)(0 = unused)
7E:00AB - 7E:00AC Interrupt Jump Index (must be a multiple of 2)
7E:00B1 - 7E:00B2 Value for $210D (X scroll of BG 1)
7E:00B3 - 7E:00B4 Value for $210E (Y scroll of BG 1)
7E:00B5 - 7E:00B6 Value for $210F (X scroll of BG 2)
7E:00B7 - 7E:00B8 Value for $2110 (Y scroll of BG 2)
7E:00B9 - 7E:00BA Value for $2111 (X scroll of BG 3)
7E:00BB - 7E:00BC Value for $2112 (Y scroll of BG 3)
7E:00BD - 7E:00BE Value for $2113 (X scroll of BG 4)
7E:00BF - 7E:00C0 Value for $2114 (Y scroll of BG 4)
7E:00D0 - 7E:02AF Table of entries to update graphics, 7 bytes: Size (2 bytes), source address (3 bytes), VRAM target (2 bytes) (Unsure of size)
7E:02D0 - 7E:02D1 Something for Mode 7?
7E:0330 - 7E:0331 'Stack' pointer for 00D0 table
7E:0334 - 7E:0335 Something for Mode 7?
7E:0340 - 7E:035B Table of entries to read from graphics, 9 bytes: VRAM target(cannot be 0, 2 bytes), and all other DMA data (7 bytes) (Unsure of size)
7E:035C - 7E:035D 0000; garbage write for end of table.
7E:0360 - 7E:0361 'Stack' pointer for 0340 table
7E:0370 - 7E:058F *ALL* OAM data (according to routine at 80:933A)
7E:0590 - 7E:0591 Index for 0370
7E:0592 - 7E:0593 Read during X-Ray setup
7E:05A2 - 7E:05A3 Percent of message box is open? Or something like that. Max of #$1800
7E:05A4 - 7E:05A5 Something for message boxes. Seems to be related to graphics and tilemaps
7E:05A6 - 7E:05A7 Something for message boxes. Seems to be related to graphics and tilemaps
7E:05AC - 7E:05AD Minimum X scroll on minimap
7E:05AE - 7E:05AF Maximum X scroll on minimap
7E:05B0 - 7E:05B1 Minimum y scroll on minimap
7E:05B2 - 7E:05B3 Maximum Y scroll on minimap
7E:05B4 1 = Game is waiting for an NMI, 0 = Game is processing current frame
7E:05B5 Something for animating minimap cursor (used as a general purpose… animation index, I guess)
7E:05B6 - 7E:05B7 Frame counter. Incremented EVERY NMI when processing has been completed (05B4 has been set)
7E:05B8 - 7E:05B9 I'm guessing this is some sort of HBlank check. Used by message boxes for smooth opening/closing
7E:05BA How many NMI's elapsed while this frame has been processing. Never used, only for statistics.
7E:05BB The most NMI's elapsed while waiting for a frame to process. Caps at FF.
7E:05BC - 7E:05BD High bit is a flag to write to VRAM (for BG3?). Cleared during 80:9632, when you enter a door, set in 82:E4A9
7E:05BE - 7E:05BF Offset for VRAM. Used by 80:9632, when you enter a door
7E:05C0 - 7E:05C2 Source for VRAM update, including bank byte. Used by 80:9632, when you enter a door
7E:05C3 - 7E:05C4 Size of VRAM update. Used by 80:9632, when you enter a door
7E:05C5 - 7E:05C6 Mirror of $8F, only enabled with debug mode. Used for debug functions.
7E:05C7 - 7E:05C8 Also mirrors $8F sometimes with debug mode. Not sure when.
7E:05C9 - 7E:05CA 'Swap' of missiles for debug mode. Select + R + B
7E:05CB - 7E:05CC 'Swap' of super missiles for debug mode. Select + R + B
7E:05CD - 7E:05CE 'Swap' of power bombs for debug mode. Select + R + B
7E:05CF - 7E:05D0 Top bit is set if weaponry is 'swapped' at the moment.
7E:05D1 - 7E:05D2 Debug mode. Set to 80:8004 at game start, unused in the normal rom.
7E:05D3 - 7E:05D4 Save/Load Scroll position toggle. Requires 80:8006 to be set
7E:05D5 - 7E:05D6 Saved X-Scroll position ($0911). Unused (Debug mode)
7E:05D7 - 7E:05D8 Saved Y-Scroll position ($0915). Unused (Debug mode)
7E:05D9 - 7E:05DA Previous frame's 008B during the pause screen? (as is up to 05E4)
7E:05DB - 7E:05DC Frames left to wait for this same set of buttons being held down till significant
7E:05DD - 7E:05DE Potential value for 05DB?
7E:05DF - 7E:05E0 Buttons held down for 05DD frames
7E:05E1 - 7E:05E2 Buttons newly held down for 05DD frames
7E:05E3 - 7E:05E4 Buttons previously held down for 05DD frames
7E:05E5 - 7E:05E6 Random Number
7E:05E7 - 7E:05E8 Often used to check bits for completed tasks/picked up items
7E:05E9 - 7E:05EA 16-bit multiplier A. Used by 80:82D6
7E:05EB - 7E:05EC 16-bit multiplier B. Used by 80:82D6
7E:05F1 - 7E:05F4 16-bit * 16-bit result registers. Used by routine 80:82D6
7E:05F5 - 7E:05F6 Disable sounds
7E:05F7 - 7E:05F8 Disable automap
7E:05F9 - 7E:05FA used during message boxes, has index for selected choice for save message
7E:05FB - 7E:05FC Delay for scrolling when holding a direction in the pause screen. 00 = free scrolling (hold) 01+ = number of 'scrolls' until free scrolling
7E:05FD - 7E:05FE Which direction the map scrolls in the pause screen
7E:05FF - 7E:0601 Related to above, seems to be a timer for how long between 'scrolls', and also an index for which value to load to change the map position
7E:0607 - 7E:0608 Sound index used during earthquakes after collecting SpeedBooster and at the statues
7E:0609 - 7E:060A Delay between sounds during earthquakes. Used with $7E:0607
7E:060B - 7E:060C First byte at enemy's graphic pointer address (used during enemy detecting collisions with projectiles or Samus). Possibly number of tilemaps in multi-tilemap enemies.
7E:060D - 7E:060E First byte at enemy's ?special hitbox? pointer address
7E:060F - 7E:0610 Number of projectiles to check for by enemy collision detection? (mirror of $0CCE)
7E:0617 - 7E:0618 0 = allow Soft Reset via Start+Select+L+R. Unused (Debug mode)
7E:0619 - 7E:0628 List of words: If negative, low-byte is index to new music/instruments. If positive, use as new track number (*2 = SPC 581E index)
7E:0629 - 7E:0638 List of words: Timer till current command should process. Minimum of 8.
7E:0639 - 7E:063A 'Next Available' Index for 0619 and 0629. Increments of 2, loops from E to 0
7E:063B - 7E:063C 'Next to process' Index for 0619 and 0629. Increments of 2, loops from E to 0
7E:063D - 7E:063E Currently processing value of 0619,x. (Current new music/instrument or new track)
7E:063F - 7E:0640 Currently processing value of 0629,x. (Time left to process current command)
7E:0641 - 7E:0642 Unused? Never seems to be written to except by ram clearing routines
7E:0643 Currently playing index of queued sound clips? For most of Samus?
7E:0644 Currently playing index of queued sound clips? For most of enemies?
7E:0645 Currently playing index of queued sound clips? Miscellaneous?
7E:0646 Current index of queued sound clips? For most of Samus?
7E:0647 Current index of queued sound clips? For most of enemies?
7E:0648 Current index of queued sound clips? Miscellaneous?
7E:0649 Current 'state' of sound clip: 0 = waiting, 1 = sent, waiting for confirmation from SPC, 2 = pause before clearing it, 3 = cleared, waiting for confirmation from SPC, 4 = unused code. For most of Samus?
7E:064A Current 'state' of sound clip. For most of enemies?
7E:064B Current 'state' of sound clip. Miscellaneous?
7E:064C Current track index (SPC ram: 581E,x index, 0-7)
7E:064D Sound clip currently playing? For most of Samus?
7E:064E Sound clip currently playing? For most of enemies?
7E:064F Sound clip currently playing? Miscellaneous?
7E:0650 Delay before clearing soundclip
7E:0651 Delay before clearing soundclip
7E:0652 Delay before clearing soundclip
7E:0653 Maximum allowed queue number for new sound trying to play
7E:0654 Maximum allowed queue number for new sound trying to play
7E:0655 Maximum allowed queue number for new sound trying to play
7E:0656 - 7E:0665 Queue of sound clips? For most of Samus?
7E:0666 - 7E:0675 Queue of sound clips? For most of enemies?
7E:0676 - 7E:0685 Queue of sound clips? Miscellaneous?
7E:0686 Timer for next
7E:071D Flag - Samus's top sprites need to be loaded to VRAM.
7E:071E Flag - Samus's bottom sprites need to be loaded to VRAM.
7E:071F - 7E:0720 Pointer to DMA data (bank 92) for Samus's top sprites (3 byte address, 2 byte part 1 size, 2 byte part 2 size)
7E:0721 - 7E:0722 Pointer to DMA data (bank 92) for Samus's bottom sprites (3 byte address, 2 byte part 1 size, 2 byte part 2 size)
7E:0723 - 7E:0724 Frames between changes in screen brightness while pausing the game.
7E:0725 - 7E:0726 Counter for frames between changes in screen brightness.
7E:0727 Used by pause screen (map/items/transitions - main index to look up code) and Game Over screen (not sure)
7E:0729 - 7E:072A Frames to flash L/R/Start button on pause screen
7E:072D - 7E:072E Used as a timer in the pause screen for selection flashing
7E:072F - 7E:0730 Used as a timer in the pause screen for reserve tank flashing
7E:073B - 7E:073C Timer/counter for L and R button backgrounds' color animation (Top byte initialized to 00 but unused (8bit) during routine)
7E:0741 - 7E:0742 Used as an animation index in the pause screen for selection flashing
7E:0743 - 7E:0744 Used as an animation index in the pause screen for reserve tank flashing
7E:074F - 7E:0750 Index for animation and color for L and R button backgrounds' color animation (Top byte initialized to 00 but unused (8bit) during routine)
7E:0751 - 7E:0752 Which button lights up for 0729 frames when changing screens from pause screen (00 = none, 01 = L, 02 = R)
7E:0753 - 7E:0754 Which buttons show on the pause screen ('SAMUS' R = 00, neither (unpausing) = 01, 'MAP' L = 02). Often used to check active screen.
7E:0755 Which list is selected on the equipment pause screen
7E:0756 Which item of the list is selected on the equipment pause screen
7E:0757 Delay counter for reserve tank sound
7E:0765 Backup value for 58 during pause screen
7E:0766 Backup value for 59 during pause screen
7E:0767 Backup value for 5A during pause screen
7E:0768 Backup value for 5D during pause screen
7E:0769 Backup value for 5E during pause screen
7E:076A Backup value for 52 during pause screen
7E:076B Backup value for B1 during pause screen
7E:076C Backup value for B5 during pause screen
7E:076D Backup value for B9 during pause screen
7E:076E Backup value for B3 during pause screen
7E:076F Backup value for B7 during pause screen
7E:0770 Backup value for BB during pause screen
7E:0771 Backup value for 55 during pause screen
7E:0772 Backup value for 091B during pause screen
7E:0773 Backup value for 091C during pause screen
7E:0774 Backup value for 57 during pause screen
7E:0775 Backup value for 71 during pause screen
7E:077A - 7E:077B Bit 1 controls flashing for Samus's helmet icon while loading
7E:077C - 7E:077D Pallete value for status bar. Sharable.
7E:0789 - 7E:078A Flag. Current area's map has been collected, display boss and blue rooms. (Blue rooms will not be marked on pause map until Samus leaves the area)
7E:078B - 7E:078C Which save in the current area to load from? Might alternatively be X/Y of save station on map
7E:078D - 7E:078E DDB pointer for current room transition
7E:078F - 7E:0790 BTS of the door that lead to this room. Never read.
7E:0791 - 7E:0792 Current room transition direction. 0 = right, 1 = left, 2 = down, 3 = up. +4 = Close a door on next screen
7E:0793 - 7E:0794 Door bitflags(low byte) and room transition direction (high byte)
7E:0795 - 7E:0796 If set, not an elevator?
7E:0797 - 7E:0798 Currently transitioning the room
7E:0799 - 7E:079A Direction of current elevator (0000 = down, 8000 = up)
7E:079B - 7E:079C Current room mdb (Room ID in SMILE)
7E:079D - 7E:079E First byte of room mdb, unknown (Apparently room # for this region)
7E:079F - 7E:07A0 Region Number
7E:07A1 - 7E:07A2 Room's Automap X coordinate
7E:07A3 - 7E:07A4 Room's Automap Y coordinate
7E:07A5 - 7E:07A6 Current room's width in blocks
7E:07A7 - 7E:07A8 Current room's height in blocks
7E:07A9 - 7E:07AA Number of screens wide current room is. Used only by scrolling? (and beams)
7E:07AB - 7E:07AC Number of screens tall current room is, used by beams at the least.
7E:07AD - 7E:07AE 7th byte of room mdb. Target screen Y position for Samus while moving down (used by scrolling)
7E:07AF - 7E:07B0 8th byte of room mdb. Target screen Y position for Samus while moving up (used by scrolling)
7E:07B1 - 7E:07B2 9th byte of previous room's mdb
7E:07B3 - 7E:07B4 9th byte of this room's mdb (GFX Bitflag)
7E:07B5 - 7E:07B6 Room's doorout pointer
7E:07B7 - 7E:07B8 Roomstate test pointer (used when testing roomstate conditions)
7E:07B9 - 7E:07BA Area of current room, in blocks
7E:07BB - 7E:07BC Current roomstate pointer
7E:07BD - 7E:07BF 3 byte pointer to current room tilemap (Level Data Pointer)
7E:07C0 - 7E:07C2 3 byte pointer. Something for the tiles. 8F0000,[8FE7A7,[graphics set * 2]]. Decompressed to 7E:A800
7E:07C3 - 7E:07C5 Another 3 byte pointer. Something for the tiles. 8F0003,[8FE7A7,[graphics set * 2]]. Room tiles. Decompressed to 7E:2000, 5000 bytes?
7E:07C6 - 7E:07C8 Another 3 byte pointer. Colors? 8F0006,[8FE7A7,[graphics set * 2]]. Decompressed to 7E:C200
7E:07C9 - 7E:07CA Music track index (0 = off, 1-4 = fixed, 5-7 = song/instrument dependant)
7E:07CB - 7E:07CC Music song/instrument index
7E:07CD - 7E:07CE Pointer to room FX1
7E:07CF - 7E:07D0 Room's enemy population pointer
7E:07D1 - 7E:07D2 Room's enemies allowed pointer (gets names and palletes, also gets list name for 7E:D552)
7E:07DF - 7E:07E0 Pointer to room FX2
7E:07E9 - 7E:07EA Pointer to routine (or unused; 0000). Used in scroll routines.
7E:07EC Some sort of very special-case write during DMA or HDMA, probably (see 88:8435 and related RAM - if not with that still almost surely bank 88 related). Noted use when leaving Ridley's room in Ceres.
7E:07F3 - 7E:07F4 Currently loaded song/instrument index
7E:07F5 - 7E:07F6 Currently loaded track index
7E:07F7 - 7E:08F6 Map tiles explored for current area (1 tile = 1 bit).
7E:08F7 - 7E:08F8 How many blocks X the screen is scrolled?
7E:08F9 - 7E:08FA How many blocks Y the screen is scrolled? (up = positive)
7E:08FB - 7E:08FC How many blocks X Layer 2 is scrolled?
7E:08FD - 7E:08FE How many blocks Y Layer 2 is scrolled? (up = positive)
7E:08FF - 7E:0900 How many blocks X the screen was scrolled previously (Checked to know when to update blocks)
7E:0901 - 7E:0902 How many blocks Y the screen was scrolled previously (Checked to know when to update blocks) (up = positive)
7E:0903 - 7E:0904 How many blocks X Layer 2 was scrolled previously (Checked to know when to update blocks)
7E:0905 - 7E:0906 How many blocks Y Layer 2 was scrolled previously (Checked to know when to update blocks) (up = positive)
7E:0907 - 7E:0908 How many blocks X BG1 is scrolled?
7E:0909 - 7E:090A How many blocks Y BG1 is scrolled? (up = positive)
7E:090B - 7E:090C How many blocks X BG2 is scrolled?
7E:090D - 7E:090E How many blocks Y BG2 is scrolled? (up = positive)
7E:090F - 7E:0910 Screen's subpixel X position.
7E:0911 - 7E:0912 Screen's X position in pixels
7E:0913 - 7E:0914 Screen's subpixel Y position
7E:0915 - 7E:0916 Screen's Y position in pixels
7E:0917 - 7E:0918 Layer 2's X scroll in room in pixels?
7E:0919 - 7E:091A Layer 2's Y scroll in room in pixels? (up = positive)
7E:091B - 7E:091C BG2 scroll percent to screen scroll (0 = 100, 1 = ?) (1 byte for X, 1 byte for Y)
7E:091D - 7E:091E BG1 X scroll offset due to room transitions (Translates between screen scroll and BG1 scroll)
7E:091F - 7E:0920 BG1 Y scroll offset due to room transitions (Translates between screen scroll and BG1 scroll)
7E:0921 - 7E:0922 BG2 X scroll offset due to room transitions (Translates between Layer 2 scroll and BG2 scroll)
7E:0923 - 7E:0924 BG2 Y scroll offset due to room transitions (Translates between Layer 2 scroll and BG2 scroll)
7E:0925 - 7E:0926 How many times the screen has scrolled? Stops at 40.
7E:0927 - 7E:0928 X offset of room entrance for room transition (multiple of 100, screens)
7E:0929 - 7E:092A Y offset of room entrance for room transition (multiple of 100, screens. Adjusted by 20 when moving up)
7E:092B - 7E:092C Movement speed for room transitions (subpixels per frame of room transition movement)
7E:092D - 7E:092E Movement speed for room transitions (pixels per frame of room transition movement)
7E:0932 Flag? If negative, screen is done scrolling for room transition?
7E:0933 - 7E:0934 Some sort of variable limit of Screen's X scrolling (= high byte of 091B * 0911, unless 091B = 0 or 1?) (Seems to be used by vram updating as well… lots of different uses)
7E:0939 - 7E:093A Screen's X position in pixels, before checking legality. Seems to have different uses at other times.
7E:093F - 7E:0940 Unknown. Initialized to 0 by Ceres(?) Ridley
7E:0943 Timer type/setup (00 = inactive, 01 = Ceres start, 02 = MB start, 03 = pause a moment, go to 4, 04 = timer running, wait a moment, then go to 5, 5 = timer moving, 6 = timer in place and running)
7E:0945 Timer, centiseconds (in decimal)
7E:0946 Timer, seconds (in decimal)
7E:0947 Timer, minutes (in decimal)
7E:0948 Timer mode counter, or lower byte of X position
7E:0949 Timer's X position (pixels)
7E:094A Timer's Y position (1/100 pixels)
7E:094B Timer's Y position (pixels)
7E:0950 - 7E:0951 Area selected in the polygon map screen
7E:0952 - 7E:0953 Save slot selected, 0 - 2 (or menu item on save slot screen, 0 - 5)
7E:0956 - 7E:0957 Size for VRAM update of BG1 Tilemap. Used by horizontal scrolling routine.
7E:095A - 7E:095B Offset for VRAM update of BG1 Tilemap. Used by horizontal scrolling routine.
7E:0962 - 7E:0963 Flag to update VRAM BG1 tilemap during NMI because of horizontal scroll
7E:0964 - 7E:0965 Size for VRAM update onto screen 1 BG1 tilemap. Used by vertical scrolling routine.
7E:0966 - 7E:0967 Size for VRAM update onto screen 2 (X >= 100) BG1 tilemap. Sometimes used by vertical scrolling routine.
7E:0968 - 7E:0969 Offset for VRAM, screen 1 BG1 tilemap. Used by vertical scrolling routine.
7E:096A - 7E:096B Offset for VRAM, screen 2 BG1 tilemap. Sometimes used by vertical scrolling routine.
7E:096C - 7E:096D Source address for top half of VRAM update, screen 2 BG1 tilemap, in bank 7E. Sometimes used by vertical scrolling routine.
7E:096E - 7E:096F Source address for bottom half of VRAM update, screen 2 BG1 tilemap, in bank 7E. Sometimes used by vertical scrolling routine.
7E:0970 - 7E:0971 Flag to update VRAM BG1 tilemap because of vertical scroll
7E:0972 - 7E:0973 Size for VRAM update. Used by elevator background loading routine (80:8D49)
7E:0974 - 7E:0975 Size for VRAM update. Sometimes used by elevator background loading (80:8D49)
7E:0976 - 7E:0977 Offset for VRAM. Used by elevator background loading (80:8D49)
7E:0978 - 7E:0979 Offset for VRAM. Sometimes used by elevator background loading (80:8D49)
7E:097A - 7E:097B Source address for VRAM, bank 7E. Sometimes used by elevator background loading (80:8D49)
7E:097C - 7E:097D Source address for VRAM, bank 7E. Sometimtes used by elevator background load (80:8D49)
7E:097E Unknown. Zeroed by elevator background loading routine (80:8D49)
7E:0980 - 7E:0981 Size for VRAM update. Used by ???? routine (80:8E2B)
7E:0982 - 7E:0983 Size for VARM update. Sometimes used by ???? routine (80:8E2B)
7E:0984 - 7E:0985 Offset for VRAM. Used by ???? routine (80:8E2B)
7E:0986 - 7E:0987 Offset for VRAM. Sometimes used by ???? routine (80:8E2B)
7E:0988 - 7E:0989 Source address for VRAM, bank 7E. Used by ???? routine (80:8E2B)
7E:098A - 7E:098B Source address for VRAM, bank 7E. Sometimes used by ???? routine (80:8E2B)
7E:098C Unknown. Zeroed by ???? routine (80:8E2B)
7E:0990 - 7E:0991 Current X position of block(s) on screen Layer 1 or 2 to update?
7E:0992 - 7E:0993 Current Y position of block(s) on screen Layer 1 or 2 to update?
7E:0994 - 7E:0995 Current X position of block(s) in VRAM BG1 or 2 tilemap to update?
7E:0996 - 7E:0997 Current Y position of block(s) in VRAM BG1 or 2 tilemap to update?
7E:0998 - 7E:0999 Game state.
01 = Title screen
04 = menus
05 = Load area
06 = Loading game
07 = Samus being electrified in save capsule
08 = normal gameplay
0C = pausing
0F = paused
12 = unpausing
15, 17, 18, 19, 1A = Dead or dying
22 = Landing on Zebes
23 = Timer up
24 = blackout and gameover (Ceres explodes if not escaping Zebes)
2A = intro demos
7E:099C - 7E:099D Pointer to next frame of code in bank 82 for room transitions
7E:099E - 7E:099F Which option in the title screen menus Samus has selected
7E:09A2 - 7E:09A3 Equipped items
7E:09A4 - 7E:09A5 Collected items
7E:09A6 Equipped beams
7E:09A7 Equipped Charge beam
7E:09A8 Collected beams
7E:09A9 Collected Charge beam
7E:09AA - 7E:09AB Up See ControllerInput.txt
7E:09AC - 7E:09AD Down
7E:09AE - 7E:09AF Left
7E:09B0 - 7E:09B1 Right
7E:09B2 - 7E:09B3 Shoot
7E:09B4 - 7E:09B5 Jump
7E:09B6 - 7E:09B7 Run
7E:09B8 - 7E:09B9 Item Cancel
7E:09BA - 7E:09BB Switch Item
7E:09BC - 7E:09BD Aim Down
7E:09BE - 7E:09BF Aim Up
7E:09C0 - 7E:09C1 1 = Auto Reserve tanks, 2 = manual
7E:09C2 - 7E:09C3 Samus's health
7E:09C4 - 7E:09C5 Samus's max health
7E:09C6 - 7E:09C7 Samus's missiles
7E:09C8 - 7E:09C9 Samus's max missiles
7E:09CA - 7E:09CB Samus's super missiles
7E:09CC - 7E:09CD Samus's max super missiles
7E:09CE - 7E:09CF Samus's power bombs
7E:09D0 - 7E:09D1 Samus's max power bombs
7E:09D2 - 7E:09D3 Currently selected status bar item
7E:09D4 - 7E:09D5 Samus's max reserve tanks
7E:09D6 - 7E:09D7 Samus's reserve tanks
7E:09D8 - 7E:09D9 Samus's reserve missiles. Only used by missile pickup routine(91:DF80)
7E:09DA - 7E:09DB Game time, frames
7E:09DC - 7E:09DD Game time, seconds
7E:09DE - 7E:09DF Game time, minutes
7E:09E0 - 7E:09E1 Game time, hours
7E:09E2 - 7E:09E3 Japanese Text (1 = on)
7E:09E4 - 7E:09E5 Moonwalk flag (1 = on)
7E:09EA - 7E:09EB Icon Cancel flag (1 = on)
7E:0A04 - 7E:0A05 Item selected for auto-cancel
7E:0A06 - 7E:0A07 Mirror's Samus's health. Used to check to update health display
7E:0A08 - 7E:0A09 Mirror's Samus's missiles. Used to check to update missile count
7E:0A0A - 7E:0A0B Mirror's Samus's supers. Used to check to update super count
7E:0A0C - 7E:0A0D Mirror's Samus's power bombs. Used to check to update power bomb count
7E:0A0E - 7E:0A0F Mirror's 09D2. Used to check to update select display
7E:0A10 - 7E:0A11 Mirrors 0A1E. Used to check to update sound.
7E:0A12 - 7E:0A13 Mirror's Samus's health. Used to check to make hurt sound and flash.
7E:0A14 - 7E:0A15 $8B from previous frame. Used when $0A42 = #$E6C9
7E:0A16 - 7E:0A17 $8F from previous frame. Used when $0A42 = #$E6C9
7E:0A1C - 7E:0A1D Samus's current position/state
7E:0A1E X-Direction Samus is moving? 8 = right, 4 = left
7E:0A1F Samus's movement type
7E:0A20 - 7E:0A21 Samus's position/state from the previous frame?
7E:0A22 X-Direction Samus was moving last frame?
7E:0A23 Samus's movement type last frame?
7E:0A24 - 7E:0A25 Previous *different* position/state?
7E:0A26 X-Direction during the previous *different* position/state?
7E:0A27 Movement type during the previous *different* position/state?
7E:0A28 - 7E:0A29 Potential new value for Samus's current position/state. Controller-attempted move, taking Samus's previous pose, buttons, and momentum into account in that order.
7E:0A2A - 7E:0A2B Potential new value for Samus's current position/state? Interruption via 90:DDE9; enemy damage or bomb jump, also grapple connection.
7E:0A2C - 7E:0A2D Potential new value for Samus's current position/state. Natural following of previous pose (generally used by transitional poses).
7E:0A2E - 7E:0A2F Momentum routine index? JSR index for EC16,X, bank 91 (Cause of Yapping Maw Super Jump crash. I think. (91:8304 –> 91:EBEE –> …)
00: RTS,
01: $91:EBF5 spinjump?,
02: STZ $0B4A
03: RTS
04: Jump related (90:98BC)
05: collision detection?
06: Stop all movement 07: todo with moving and aiming
08: clears speed
not momentum?
7E:0A30 - 7E:0A31 JSR index for EC28,X, bank 91. Related to 0A2A. 01 = hurt(18AA)? and DE82,X routine(X = 0A1F) does SEC (todo), 03 = hurt(0A52, !0A56)? and DFB5,X (X = 0A1F) does SEC (todo), 04 = unused code?, 05 = possibly set by 91:E16D (unknown use), 09 and 0A = grapple related (also death related?)
7E:0A32 - 7E:0A33 JSR index for EC3E,X, bank 91. Related to 0A2C, source? 01 = hurt($0A2C = 29/2A if hurt movement, else $0A1C), 03 = animation loop transition, 02 = , 06 and 07 = death related, 08 = hurt during animation loop transition
7E:0A34 - 7E:0A35 Bitflag? 1 = Samus collided with an enemy below because of new vertical radius? 2 = collided with an enemy above same reason. Jump index for FE8A.
7E:0A36 - 7E:0A37 Bitflag? Bits set if 94:96AB SECs. Jump index for FE92.
7E:0A38 - 7E:0A39 $12 after 94:96AB, $12 was -$0A3A
7E:0A3A - 7E:0A3B Difference between old vertical radius and new vertical radius
7E:0A3C - 7E:0A3D $12 after 94:96AB, $12 was $0A3A
7E:0A3E - 7E:0A3F $12 after A0:A8F0, $12 was $0A3A and $0B02 was 2
7E:0A40 - 7E:0A41 $12 after A0:A8F0, $12 was $0A3A and $0B02 was 3
7E:0A42 - 7E:0A43 Pointer to code to run every frame, normally E695. Very high level. Handles Samus's size, controller input, elevator status, button transitions, pallete, gravity, overlapping blocks, weapon selecting/firing/cooldown, and sound management(?).
7E:0A44 - 7E:0A45 Pointer to code to run every frame, normally E725. Seems to change for different game modes (7E:0998). Very high level. Handles Samus's contact damage, movement, animation, hurt, block collision reaction, automatic transitions, pausing, and minimap
7E:0A46 - 7E:0A47 Bit 0002 enables horizontal slope detection
7E:0A48 - 7E:0A49 Something to do with Samus's pallete.
7E:0A4A - 7E:0A4B Almost always 0. Occassionally used to mess with Samus's pallete (flashing blue from Metroids, rainbow from acquiring hyper beam)
7E:0A4C - 7E:0A4D Samus's subunit health? Only affected by environmental damage (0A4E)
7E:0A4E - 7E:0A4F Deal damage to Samus (1/65536th)
7E:0A50 Deal damage to Samus (1) Will be adjusted by suit divisors
7E:0A52 - 7E:0A53 Something for Samus getting hurt (direction?)
7E:0A54 - 7E:0A55 Direction Samus moves when she gets hurt. 0 = left, 1 = right
7E:0A56 - 7E:0A57 Bomb jump direction?
7E:0A58 - 7E:0A59 Pointer to code to run (JMP from 90:E94B) (Once every frame, depending on 7E:0A44) Seems to affect Samus's movement type.
7E:0A5A - 7E:0A5B Pointer to code to run (JMP from 90:E097) (Once every frame, depending on 7E:0A44). Special instructions for things like when Ridley runs away from Ceres. (E0E6 = handle timer code)
7E:0A5C - 7E:0A5D Pointer to code to run (JMP from 90:EB4E) (Once every frame?) Displays Samus and certain graphics (e.g. grapple)?
7E:0A60 - 7E:0A61 Pointer to code to run (JMP from 90:E90F) (Once every frame, depending on 7E:0A42) Looks like it handles controller input for Samus's poses.
7E:0A64 - 7E:0A65 Flag, Samus is currently grappled onto something
7E:0A66 - 7E:0A67 Divisor for Samus's horizontal speed(2n). Can range from 20 to 24. Also slows down animations linearly, no limit.
7E:0A68 - 7E:0A69 Samus's super jump timer. Also used by crystal flash.
7E:0A6A - 7E:0A6B Samus's health warning is on
7E:0A6C - 7E:0A6D Pointer to momentum related table for 0A1F: momentum increase in pixels (2 bytes), momentum increase in subpixels (2 bytes), momentum max in pixels (2 bytes), momentum max in subpixels (2 bytes), momentum decrease in pixels (2 bytes), momentum decrease in subpixels (2 bytes)
7E:0A6E - 7E:0A6F Samus's contact damage index
7E:0A72 Samus's visor pallete timer
7E:0A73 Samus's visor pallete index
7E:0A74 - 7E:0A75 Samus's pallete index or something?
7E:0A76 - 7E:0A77 Hyper Beam
7E:0A78 - 7E:0A79 Pause time, ala energy tank and x-ray scope.
7E:0A7A - 7E:0A7B Pointer to routine for use when game is controlling controller input. Not sure what the routine is for.
7E:0A7C - 7E:0A7D Timer for how long to use current game-controlling input
7E:0A7E - 7E:0A7F Pointer (Y value) to entry for game-controlling input. Entry may be a pointer to asm, if so Y will be used again after the asm as a pointer to an entry for game-controlling input. Otherwise the entries start with the frames to run (2 bytes), current input (2 bytes), then current new input (2 bytes).
7E:0A82 - 7E:0A83 Angle from X-Ray to Samus.
7E:0A84 - 7E:0A85 Intro Samus controls. Calculated controls to use (put into 8B and 0A8C)
7E:0A86 - 7E:0A87 Intro Samus controls. Calculated controls to use (put into 8F and 0A8E)
7E:0A88 - 7E:0A89 Flag for if game is using game-input instead of player input (8000+ = game input)
7E:0A8A - 7E:0A8B How many frames of input have been saved to bank B8. Yeeeaah. Enabled with 808002, otherwise never used
7E:0A8C - 7E:0A8D Intro Samus controls. Mirror of 8B when game is controlling Samus.
7E:0A8E - 7E:0A8F Intro Samus controls. Mirror of 8F when game is controlling Samus.
7E:0A90 - 7E:0A91 Controller input (8B) from game from 2 frames ago. Used when $0A42 = #$E6C9
7E:0A92 - 7E:0A93 Controller input (8F) from game from 2 frames ago. Used when $0A42 = #$E6C9
7E:0A94 - 7E:0A95 Frames till next Samus Animation Frame
7E:0A96 - 7E:0A97 Samus Animation Frame
7E:0A9A - 7E:0A9B Animation frame skip. 8000 means don't reset 0A96? (when changing poses?)
7E:0A9E - 7E:0AA1 Cleared by jumping routine. Unknown uses.
7E:0AA6 Flag; Arm cannon is open / opening (else arm cannon is closed / closing)
7E:0AA7 Flag; Arm cannon is transitioning between open and closed
7E:0AA8 - 7E:0AA9 Frame number of Arm cannon graphic (0 = closed/none, 3 = fully open)
7E:0AAA - 7E:0AAB 1 if arm cannon selection has changed this frame, else 2
7E:0AAC - 7E:0AAD 0 if arm cannon graphic isn't shown, 1 if drawn in front of Samus, 2 if drawn behind(?) Samus
7E:0AAE - 7E:0AAF Index value for Samus's echoes (00, 02)
7E:0AAF Index value to find routine for Samus's echoes? Only when she ends a Super Jump?
7E:0AB0 - 7E:0AB1 X position of echo 0 (pixels)
7E:0AB2 - 7E:0AB3 X position of echo 2 (pixels)
7E:0AB8 - 7E:0AB9 Y position of echo 0 (pixels)
7E:0ABA - 7E:0ABB Y position of echo 2 (pixels)
7E:0AC0 - 7E:0AC1 Horizontal speed for echo 0
7E:0AC2 - 7E:0AC3 Horizontal speed for echo 2
7E:0AC8 - 7E:0AC9 Which tileset for Samus's top half to save to VRAM? Written to, but virtually never used.
7E:0ACA - 7E:0ACB Which tileset for Samus's bottom half to save to VRAM? Written to, but virtually never used.
7E:0ACC - 7E:0ACD What kind of timer to use for 0A68? 2*this = JSL index for 91:D72D.
7E:0ACE - 7E:0ACF Some unknown related to running (0 if running with speed boots)
7E:0AD0 - 7E:0AD1 Some unknown related to running (1 if running with speed boots)
7E:0AD4 - 7E:0ADB Atmospheric graphics animation timers (1-4). 8000+ means 'don't run related code during timer'
7E:0ADC - 7E:0AE3 Atmospheric graphics X position (1-4)
7E:0AE4 - 7E:0AEB Atmospheric graphics Y position (1-4)
7E:0AEC - 7E:0AF3 Atmospheric graphics type/animation frame number (1-4)
7E:0AF6 - 7E:0AF7 Samus's X position in pixels
7E:0AF8 - 7E:0AF9 Samus's sub-pixel X position
7E:0AFA - 7E:0AFB Samus's Y position in pixels
7E:0AFC - 7E:0AFD Samus's sub-pixel Y position
7E:0AFE - 7E:0AFF Samus's X radius
7E:0B00 - 7E:0B01 Samus's Y radius
7E:0B02 - 7E:0B03 What kind of collision detection to use for Samus. 03 = below, 02 = above, 01 = right, 00 = left
7E:0B04 - 7E:0B05 Samus's X position on screen (0AF6 - 0911)
7E:0B06 - 7E:0B07 Samus's Y position on screen (0AFA - 0915)
7E:0B0A - 7E:0B0B 'Ideal' placement for $0911.
7E:0B0C - 7E:0B0D Unused? Never seems to be written to except by ram clearing routines
7E:0B0E - 7E:0B0F 'Ideal' placement for $0915.
7E:0B10 - 7E:0B11 Samus's previous X position in pixels. (Used for scrolling only?)
7E:0B12 - 7E:0B13 Samus's previous sub-pixel X position. (Used for scrolling only?)
7E:0B14 - 7E:0B15 Samus's previous Y position in pixels. (Used for scrolling only?)
7E:0B16 - 7E:0B17 Samus's previous sub-pixel Y position. (Used for scrolling only?)
7E:0B18 - 7E:0B19 Frames of yellow from firing charge beam left
7E:0B1A - 7E:0B1B STZ'd when Samus lands, hits her head on the cieling, or she hits a block while shinesparking. Never seems to be read
7E:0B1C - 7E:0B1D Unused? Never seems to be written to except by ram clearing routines
7E:0B1E - 7E:0B1F Unused? Never seems to be written to except by ram clearing routines
7E:0B20 - 7E:0B21 Used for bouncing as a ball when you land. Set to 0601 on the first bounch, and 0602 on the second bounce. STZ'd when changing poses or direction
7E:0B22 - 7E:0B23 Flag. Samus is falling after crashing into something from a shinespark
7E:0B24 - 7E:0B25 Temp value, used during Samus's graphics calculations. Sharable.
7E:0B26 - 7E:0B27 Temp value, used during Samus's graphics calculations. Sharable (even with the above byte).
7E:0B2C - 7E:0B2D Samus's vertical speed (1/65536ths pixel/frame). Unsigned
7E:0B2E - 7E:0B2F Samus's vertical speed (pixels/frame). Unsigned
7E:0B32 - 7E:0B33 Vertical acceleration in sub-pixels. (Vertical rate of acceleration for super jumps)
7E:0B34 - 7E:0B35 Vertical acceleration in pixels. Not recommended for use. (Vertical rate of acceleration for super jumps)
7E:0B36 - 7E:0B37 00 = Samus is on the ground (?) 01 = Samus is moving up, 02 = Samus is moving down
7E:0B38 - 7E:0B39 Cleared when Samus lands after jumping or falling. If Samus is morphed and bounces, it only clears on the last bounce.
7E:0B3A - 7E:0B3B Unused? Never seems written to except by ram clearing routines
7E:0B3C - 7E:0B3D Flag to check Samus's speed counter. Reason why temporary blue suit cannot become permanent.
7E:0B3E - 7E:0B3F Upper byte is Samus's 'speed' counter. Lower byte is used for some weird animation counter thing for incrementing upper byte.
7E:0B40 - 7E:0B41 Flag, Samus's echoes sound is playing.
7E:0B42 - 7E:0B43 Samus's horizontal speed forward. (pixels/frame)
7E:0B44 - 7E:0B45 Samus's horizontal speed forward (1/65536ths pixel/frame)
7E:0B46 - 7E:0B47 Samus's horizontal 'momentum' forward (pixels/frame)
7E:0B48 - 7E:0B49 Samus's horizontal 'momentum' forward (1/65536ths pixel/frame)
7E:0B4A - 7E:0B4B Something to do with momentum and speed. Cause of mockball. (0 = increasing momentum, !0(always 1?) = decreasing momentum)
7E:0B4C 1/256 Multiplier for momentum subtraction (0 = normal momentum subtraction)
7E:0B56 - 7E:0B57 Moves Samus this distance horizontally, in subpixels.
7E:0B58 - 7E:0B59 Moves Samus this distance horizontally, in pixels.
7E:0B5A - 7E:0B5B Moves Samus this distance vertically, in subpixels.
7E:0B5C - 7E:0B5D Moves Samus this distance vertically, in pixels.
7E:0B5E - 7E:0B5F Samus is currently firing in this direction (will fire beams even if you aren't pressing fire)
7E:0B60 - 7E:0B61 Used for the SBA attacks. Cleared by Spazer. Set to 0004 by Wave, but unused. Used as a rotation speed with Ice and Plasma
7E:0B62 - 7E:0B63 Pallete index for Samus's charge.
7E:0B64 - 7E:0B6D Projectile X position in pixels
7E:0B6E - 7E:0B77 Bomb X position in pixels
7E:0B78 - 7E:0B81 Projectile Y position in pixels
7E:0B82 - 7E:0B8B Bomb Y position in pixels
7E:0B8C - 7E:0B95 Projectile X position in sub-pixels
7E:0B96 - 7E:0B9F Bomb X position in sub-pixels
7E:0BA0 - 7E:0BA9 Projectile Y position in sub-pixels
7E:0BAA - 7E:0BB3 Bomb Y position in sub-pixels
7E:0BB4 - 7E:0BBD Projectile X radius (radius or width?). Pixels
7E:0BBE - 7E:0BC7 Bomb X radius, pixels
7E:0BC8 - 7E:0BD1 Projectile Y radius (radius or height?). Pixels
7E:0BD2 - 7E:0BDB Bomb Y radius, pixels
7E:0BDC - 7E:0BE5 Projectile X speed (1/256th pixel/frame?).
7E:0BE6 - 7E:0BEF Bomb X speed
7E:0BF0 - 7E:0BF9 Projectile Y speed
7E:0BFA - 7E:0C03 Bomb Y speed
7E:0C04 - 7E:0C0D Projectile accelerating direction. Starting at 0: Ur, UR, R, DR, Dr, Dl, DL, L, UL, Ul. A - F = glitchy, 10+ = kill beam, including plasma (hit an enemy)
7E:0C0E - 7E:0C17 Bomb accelerating direction. Cleared on bomb drop, but pretty much unused
7E:0C18 - 7E:0C21 Projectile type array. 8000+ = live, X0YY = beam, YY = beamtype, X1XX = missile, X2XX = super missile, X7XX = dead beam, X8XX = dead missile/super
7E:0C22 - 7E:0C2B Bomb type array. 8000+ = live, X3XX = power bomb, X5XX = bomb
7E:0C2C - 7E:0C35 Projectile damage array.
7E:0C36 - 7E:0C3F Bomb damage array
7E:0C40 - 7E:0C53 Projectile PLM-like instruction array? (projectiles, then bombs)
7E:0C54 - 7E:0C67 Projectile PLM-like delay array?
7E:0C68 - 7E:0C69 Pointer to code for projectile #1
7E:0C6A - 7E:0C71 Pointer to code for projectiles #2-5
7E:0C72 - 7E:0C73 Pointer to code for bomb #1
7E:0C74 - 7E:0C7B Pointer to code for bombs #2-5
7E:0C7C - 7E:0C85 Links super missile halves together (top byte is a flag, linked if set. Bottom byte tells linked index)
7E:0C86 - 7E:0C8F Bomb timer array
7E:0C90 - 7E:0C9B Timer for projectile trails
7E:0CB8 - 7E:0CD7 Projectile Sprite data pointer
7E:0CCC - 7E:0CCD Cooldown counter
7E:0CCE - 7E:0CCF Projectile counter?
7E:0CD0 - 7E:0CD1 Current charge for Samus's beams
7E:0CD2 - 7E:0CD3 Bomb counter
7E:0CD6 - 7E:0CD7 Charge beam animation frame (main spark on cannon)
7E:0CD8 - 7E:0CD9 Charge beam animation frame (3 outer sparks)
7E:0CDA - 7E:0CDB Charge beam animation frame (other 3 outer sparks)
7E:0CDC - 7E:0CDD Charge beam animation delay (main spark on cannon)
7E:0CDE - 7E:0CDF Charge beam animation delay (3 outer sparks)
7E:0CE0 - 7E:0CE1 Charge beam animation delay (other 3 outer sparks)
7E:0CE2 - 7E:0CE3 X position of powerbomb explosion
7E:0CE4 - 7E:0CE5 Y position of powerbomb explosion
7E:0CE6 - 7E:0CE7 0100 + Screen X position of powerbomb explosion
7E:0CE8 - 7E:0CE9 01FF - Screen Y position of powerbomb explosion
7E:0CEA - 7E:0CEB Power bomb 'radius'
7E:0CEC - 7E:0CED Power bomb pre-explosion flash radius
7E:0CEE - 7E:0CEF Special powerbomb timer
7E:0CF0 - 7E:0CF1 Power bomb radius speed (88:8DE7 is radius acceleration)
7E:0CF2 - 7E:0CF3 Some kind of pointer. Seemed to change with the PowerBomb flash palette.
7E:0CF4 - 7E:0CF5 Flags. First bit set if Samus is in liquid, last bit cleared when grapple beam hits grapple block.
7E:0CF6 - 7E:0CF7 Unknown, set to A when grapple is fired
7E:0CF8 - 7E:0CF9 Force slow/stupid-scrolling? Screen scrolls at 3 pixels per frame. Enabled during grappling, disabled when grapple beam is newly shot.
7E:0CFA - 7E:0CFB Something for grapple beam graphics (Angle from grapple beam to Samus)
7E:0CFC - 7E:0CFD Same as above; angle from grapple beam to Samus). This is write-only memory. >_>
7E:0CFE - 7E:0CFF Cleared when starting grapple beam. Length of grapple beam? Stops at #$0080, I think
7E:0D00 - 7E:0D01 Set to C when starting grapple beam. Speed of grapple beam? Added to 0CFE every frame
7E:0D02 - 7E:0D03 X offset of grapple point relative to Samus
7E:0D04 - 7E:0D05 Y offset of grapple point relative to Samus
7E:0D06 - 7E:0D07 Sub-pixel X position of Grapple point?
7E:0D08 - 7E:0D09 X position of Grapple point
7E:0D0A - 7E:0D0B Sub-pixel Y position of Grapple point?
7E:0D0C - 7E:0D0D Y position of Grapple point
7E:0D0E - 7E:0D0F 32-bit running sum of X speed * 64
7E:0D10 - 7E:0D11 32-bit running sum of X speed * 64
7E:0D12 - 7E:0D13 32-bit running sum of Y speed * 64
7E:0D14 - 7E:0D15 32-bit running sum of Y speed * 64
7E:0D16 - 7E:0D17 X position of start of grapple beam
7E:0D18 - 7E:0D19 Y position of start of grapple beam
7E:0D1A - 7E:0D1B X position of start of grapple beam previous frame
7E:0D1C - 7E:0D1D Y position of start of grapple beam previous frame
7E:0D1E - 7E:0D1F Unknown. Cleared when starting grapple beam
7E:0D20 - 7E:0D21 Unknown. Cleared when starting grapple beam
7E:0D22 - 7E:0D23 X Speed of grapple point
7E:0D24 - 7E:0D25 Y Speed of grapple point
7E:0D26 - 7E:0D27 Unknown. Cleared when starting grapple beam
7E:0D28 - 7E:0D29 Unknown. Cleared when starting grapple beam
7E:0D2A - 7E:0D2B Unknown. Cleared when starting grapple beam
7E:0D2C - 7E:0D2D Unknown. Cleared when starting grapple beam
7E:0D2E - 7E:0D2F Unknown. Cleared when starting grapple beam
7E:0D30 - 7E:0D31 Unknown. Cleared when starting grapple beam
7E:0D32 - 7E:0D33 Pointer to code for grapple beam. Usually C4F0 (start beam, not active), C703 is firing beam (not hitting anything), C856 is force-cancel beam?
7E:0D34 - 7E:0D35 Direction to fire (grapple beam specific?)
7E:0D36 - 7E:0D37 Unknown. Cleared when starting grapple beam
7E:0D38 - 7E:0D39 Unknown. Cleared when starting grapple beam
7E:0D3A - 7E:0D3B Unknown. Set to 2 when starting grapple beam
7E:0D3C - 7E:0D3D Unknown. Cleared when starting grapple beam
7E:0D3E - 7E:0D3F Grapple point animation timer. Set to 5 when starting grapple beam
7E:0D40 - 7E:0D41 Grapple point animation pointer. Set to 8200 when starting grapple beam
7E:0D42 - 7E:0D61 Grapple segment animation instruction timers. Similar to PLM setup
7E:0D62 - 7E:0D81 Grapple segment animation instruction pointers. Similar to PLM setup
7E:0D82 - 7E:0D83 Variable, cleared when starting grapple beam. 32-bit Signed X speed * 64 during grapple collision detection. Used also as a temporary JMP target
7E:0D84 - 7E:0D85 Variable, cleared when starting grapple beam. 32-bit Signed X speed * 64
7E:0D86 - 7E:0D87 Variable, cleared when starting grapple beam. 32-bit Signed Y speed * 64
7E:0D88 - 7E:0D89 Variable, cleared when starting grapple beam. 32-bit Signed Y speed * 64
7E:0D8A - 7E:0D8B Variable, cleared when starting grapple beam. Counter during grapple collision detection
7E:0D8C - 7E:0D8D Unknown. Cleared when starting grapple beam
7E:0D8E - 7E:0D8F Unknown. Cleared when starting grapple beam
7E:0D90 - 7E:0D91 Unknown. Cleared when starting grapple beam. X Position of grapple start, calculated from grapple point and grapple length (94:A957)
7E:0D92 - 7E:0D93 Y position of grapple start, calculated from grapple point and grapple length
7E:0D94 - 7E:0D95 Grapple start's block X position, calculated from above
7E:0D96 - 7E:0D97 Grapple start's block X position, calculated from above
7E:0DA2 - 7E:0DA3 Absolute distance Samus moved last frame horizontally + 1, pixels.
7E:0DA4 - 7E:0DA5 Absolute distance Samus moved last frame horizontally, subpixels.
7E:0DA6 - 7E:0DA7 Absolute distance Samus moved last frame vertically + 1, pixels.
7E:0DA8 - 7E:0DA9 Absolute distance Samus moved last frame vertically, subpixels.
7E:0DAA - 7E:0DAB How far Samus moved left, in pixels (negative)
7E:0DAC - 7E:0DAD How far Samus moved left, in subpixels (negative)
7E:0DAE - 7E:0DAF How far Samus moved right, in pixels
7E:0DB0 - 7E:0DB1 How far Samus moved right, in subpixels
7E:0DB2 - 7E:0DB3 How far Samus moved up, in pixels (negative)
7E:0DB4 - 7E:0DB5 How far Samus moved up, in subpixels (negative)
7E:0DB6 - 7E:0DB7 How far Samus moved down, in pixels
7E:0DB8 - 7E:0DB9 How far Samus moved down, in subpixels
7E:0DBA - 7E:0DBB Flag: Samus's position was adjusted by a slope
7E:0DBC - 7E:0DBD Mirror of distance to move Samus horizontally, in pixels?
7E:0DBE - 7E:0DBF Mirror of distance to move Samus horizontally, in subpixels?
7E:0DC0 - 7E:0DC1 Unknown. Cleared when starting grapple beam
7E:0DC2 - 7E:0DC3 Mirror of 0CD0?
7E:0DC4 - 7E:0DC5 Current block index (nth block of the room)
7E:0DC6 - 7E:0DC7 Unknown, something to do with collisions (direction?) 0 = jumping up?, 1 = ground, 2 = moving down, 4 = hit head, 5 = walljump. Top byte is related but used seperately
7E:0DCE - 7E:0DCF Set if Samus collides with a solid enemy(Only read as a flag, written as a direction?)
7E:0DD0 - 7E:0DD1 0000 = Samus did not collide with anything. 0001 = Collision with block. FFFF = Collision with enemy?
7E:0DD4 - 7E:0DD5 Current block's X position? Used for calculating 0DC4. Used as Samus's lower boundary in 94:87F4. Used as Slope BTS * 4 in horizontal slope collision routine.
7E:0DD6 - 7E:0DD7 Slope BTS * #$10, according to 94:87F4. Used as Slope X/Y flip in horizontal slope collision routine.
7E:0DDE - 7E:0DDF Current projectile index? (FFFE for grapple)
7E:0DE0 - 7E:0DE1 Only debug use, I think. 07 = uber invincibility.
7E:0DE2 - 7E:0DE3 Main menu screen index
7E:0DEC - 7E:0DED Vertical acceleration during super jumps (sub-pixels). Used as Draygon-escape button counter
7E:0DEE - 7E:0DEF Vertical acceleration during super jumps (pixels)
7E:0DF4 - 7E:0DF5 Debug only. Some sort of flag for messing with graphics, only used in 82:8AB0
7E:0DF8 - 7E:0DF9 Unknown. STZ at start, read when Samus changes to a running pose, otherwise unused.
7E:0DFA - 7E:0DFB Unknown. Something to do with beams or sound?
7E:0DFE - 7E:0DFF Controller input (8B) from game from previous frame. (any other use?)
7E:0E00 - 7E:0E01 Controller input (8F) from game from previous frame. (any other use?)
7E:0E02 - 7E:0E03 Samus's lower boundary's Y position
7E:0E12 - 7E:0E13 Only enabled with debug. Forgot it's exact use, skips certain routines.
7E:0E16 - 7E:0E17 Flag, 80 = elevator room transition. 0001 = Standing on elevator
7E:0E18 - 7E:0E19 Used by elevators. Direction to move in (00 = Sitting, 01 = leaving the room, 02 = once when entering, 03 = entering the room)
7E:0E1A - 7E:0E1B Triggers more energy drops if Samus is low on health. On if drop at health below 30, off if health at least 50.
7E:0E1C - 7E:0E1D If #$FFFF, ignored. Else, used as a pointer to an enemy for setting 0FA2,X to #$0040.
7E:0E2E - 7E:0E2F Flag for when enemies are hit; display hit flash if damaged.
7E:0E32 - 7E:0E33 Position of a boundary. Variable use, Samus or enemy. Used as real damage multiplier (AND #$007F) for enemy damage (Max #$000F for charge beams). Also used in some calculations (absolute, sin/cos) 'Sharable' RAM for immediate uses.
7E:0E36 - 7E:0E37 Whole number value from sin/cos multiplier function
7E:0E38 - 7E:0E39 Fractional value from sin/cos multiplier function
7E:0E40 - 7E:0E41 Damage multiplier for enemies
7E:0E44 - 7E:0E45 Not sure exactly. Used to determine enemy hurt flashing frames
7E:0E4C - 7E:0E4D
super/data_maps/ram_map.1473187855.txt.gz · Last modified: 2016/09/06 18:50 by black_falcon