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(2 | n). Can range from 2 | 0 to 2 | 4. 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 |