7E:0000 - 7E:0019 Misc. Direct Page Temporary Values 7E:0026 - 7E:0027 16 bit multiplier 7E:0028 - 7E:0029 16 bit multiplier 7E:002A - 7E:002D 32 bit product 7E:002E - 7E:002F Misc. Direct Page Temporary Value 7E:003C - 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 = 8x8 1 = 16x16, 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: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 Mode 7 if the first three bits of either $55 or $56 are set: 7E:005F Value for $211A with 'A' Initial Setting for Mode 7 aa0000bc a = Screen Over b = Vertical Flip c = Horizontal Flip Registers 211b through 2120 are 16 bits wide. 0x211B is also used as the 16-bit multiplicand for registers 0x2134-6 (write twice) 0x211C is also used as the 8-bit multiplier for registers 0x2134-6 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:0330 - 7E:0331 'Stack' pointer for 00D0 table 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:05A2 - 7E:05A3 Percent of message box is open? Or something like that. Max of #$1800 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:060B - 7E:060C First byte at enemy's graphic pointer address (used during enemy detecting collisions with projectiles or Samus) 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: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: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: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 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 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, 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 --> ...) 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) ;Atmospheric graphics are footsteps, water splash, air bubbles, etc. 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) ;01XX = water splash, 04XX = smoke moving right, 05XX = bubbles, 06XX and 07XX = smoke moving up 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: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: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: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: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 Accelerating direction. Starting at 0: U, UR, R, DR, D, D, DL, L, UL, U. A - F = glitchy, 10+ = kill beam, including plasma (hit an enemy) 7E:0C16 - 7E:0C17 Might be reserved for grapple-projectile type (always 0000, I guess) 7E:0C18 - 7E:0C2B Projectile type array. 8000+ = live(?), X0YY = beam, YY = beamtype, X1XX = missile, X2XX = super missile, X3XX = power bomb, X5XX = bomb, X7XX = dead beam, X8XX = dead missile/super. First 5 slots used for beams/missiles, last 5 for bombs 7E:0C2C - 7E:0C35 Projectile damage array. 7E:0C36 - 7E:0C3F Bomb damage array 7E:0C40 - 7E:0C53 Projectile PLM-like instruction array? 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: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: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 Which screen Samus is on during loading 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 7E:0E18 - 7E:0E19 Used by elevators. Direction to move in (01 = leaving the room, 02 = entering) 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 Index value of the last enemy in the room + 1((n+1)*40). If 0, disable enemy processing (powerbombs still kill) 7E:0E4E - 7E:0E4F Number of enemies in the room 7E:0E50 - 7E:0E51 Number of enemies killed in the current room. 7E:0E52 - 7E:0E53 Number of enemies needed to clear current room. 7E:0E54 - 7E:0E55 Current Enemy Index 7E:0E58 - 7E:0E59 Pointer to start of current enemy data ($0F78,X) 7E:0F78 - 7E:1777 Enemy 1-32($20) data. See Enemy_Mem.txt 7E:1778 - 7E:1779 Brightness loop counter for firefly rooms. 6 frames per index increment. 7E:177A - 7E:177B Brightness loop index for firefly rooms. Indexes 88:B058,X 7E:177E - 7E:177F Brightness base index for firefly rooms. Indexes 88:B070,X. Intended as increments of 2. 7E:1784 - 7E:1787 Used as a long pointer to enemy AI, ran when the enemy is placed in the room. Top byte is $0FA7,X, probably unused. 7E:179C - 7E:179D Special fight number used for bosses. 7E:17A4 - 7E:17A5 'Stack' pointer for 7E:17AC 7E:17A6 - 7E:17A7 'Stack' pointer for 7E:17EC 7E:17A8 - 7E:17A9 Current index for 17AC,X 7E:17AA - 7E:17AB Current index for 17EC,X 7E:17AC - 7E:17EB List of enemy indexes of enemies that are to be run this frame. Ends at a #$FFFF 7E:17EC - 7E:182B List of enemy indexes of enemies that might interact with Samus. Ends at a #$FFFF 7E:182C - 7E:1833 Table for an enemy index value (this table indexed by 7E:0B02). Unknown use. 7E:1834 - 7E:183B Table for distance between Samus and above enemy? Same index. 7E:183C - 7E:183D Process all enemies regardless of on-screen or not. 7E:183E - 7E:183F Type of screen-shaking? 7E:1840 - 7E:1841 Duration of screen-shaking? 7E:1842 - 7E:1843 Frame counter (*Every* frame) 7E:184A - 7E:184B Mirror of Samus's X position (pixels) 7E:184C - 7E:184D Mirror of Samus's X position (subpixels) 7E:184E - 7E:184F Mirror of enemy's X position (pixels) 7E:1850 - 7E:1851 Mirror of enemy's X position (subpixels) 7E:1852 - 7E:1853 Mirror of Samus's target Y(?) position (pixels) 7E:1854 - 7E:1855 Mirror of Samus's target Y(?) position (subpixels) 7E:1856 - 7E:1857 Mirror of Samus's Y position (pixels) 7E:1858 - 7E:1859 Mirror of Samus's Y position (subpixels) 7E:185A - 7E:185B Unknown. Type of collision between Samus and solid enemy? 7E:185C - 7E:185D Debug mode routine index. Used for JSR ($981F,X) in bank B4. #$00 - #$10, above will crash. Upper byte ignored. 7E:185E - 7E:185F Debug mode... for skipping enemy processing, I think. Still die to PBs. 7E:186E - 7E:186F Enemy graphic pointer + 2 when detecting collisions between enemies and projectiles or Samus 7E:1870 - 7E:1871 Enemy left collision border for enemy/projectile collisions 7E:1872 - 7E:1873 Enemy bottom collision border for enemy/projectile collisions 7E:1874 - 7E:1875 Enemy right collision border for enemy/projectile collisions 7E:1876 - 7E:1877 Enemy top collision border for enemy/projectile collisions 7E:1878 - 7E:1879 Enemy; pointer at (graphic pointer + 8) + 2 7E:187A - 7E:187B X position of current enemy graphic during enemy collision detection with projectiles or Samus. Also used as a mirror of projectile damage if they do collide, then later total damage. 7E:187C - 7E:187D Y position of current enemy graphic during enemy collision detection with projectiles or Samus. 7E:187E - 7E:187F Right border of Samus when enemy is checking for collisions with Samus 7E:1880 - 7E:1881 Left border of Samus when enemy is checking for collisions with Samus 7E:1882 - 7E:1883 Bottom border of Samus when enemy is checking for collisions with Samus 7E:1884 - 7E:1885 Top border of Samus when enemy is checking for collisions with Samus 7E:189A - 7E:189B Samus's target X position for next frame, in pixels 7E:189C - 7E:189D Samus's target X position for next frame, in subpixels 7E:189E - 7E:189F Samus's target Y position for next frame, in pixels 7E:18A0 - 7E:18A1 Samus's target Y position for next frame, in subpixels 7E:18A2 - 7E:18A3 Mirror of Samus's X radius (7E:0AFE) 7E:18A4 - 7E:18A5 Mirror of Samus's Y radius (7E:0B00) 7E:18A6 - 7E:18A7 Various use collision detection index (Samus/Enemy is an enemy index, Enemy/Projectile is a projectile index) 7E:18A8 - 7E:18A9 Samus's invincibility timer when hurt 7E:18AA - 7E:18AB Samus's hurt-timer (pushed back, unable to move) 7E:18B4 - 7E:18BF List of DMA things? This entry is the value to write to 420b to start a DMA (top byte always 00) 7E:18C0 - 7E:18CB Index for channel to use for DMA effect (00, 10, 20, 30, etc). High byte is bank to use for 18CC. 7E:18CC - 7E:18D7 PLM instruction-esque pointer for above list. 7E:18D8 - 7E:18E3 Pointer to HDMA table for HDMA effect. (Probably just a general DMA source; put into 43X2) 7E:18E4 - 7E:18EF Delay to go to PLM instruction-esque pointer. Also, the 2-byte argument for a delay goes into 18D8. 7E:18F0 - 7E:18FB First 2 bytes of a pointer. Pre PLM-esque code to run every frame. 7E:18FC - 7E:1907 Seperated by bytes - low byte is a bank byte for 18F0 pointer. High byte is unknown, unused? 7E:195E - 7E:195F Actual FX3 height 7E:1962 - 7E:1963 Something to do with FX3 height. Referred to if 195E is negative. Used by lava? 7E:1964 - 7E:1965 Pointer to something for VRAM in bank 8A. I'm guessing FX3 tilemap. 7E:1966 - 7E:1967 Direct pointer to room's FX1 entry 7E:1968 - 7E:1969 Index into room's FX1 entry (added to 07CD to get 1966) 7E:196A - 7E:196B Pallete 'animation', LSRed out immediately, then animated tiles, LSRed out again. 7E:196C - 7E:196D FX3 something. Need to look into. (Causes rumbling) 7E:196E - 7E:196F FX3 type (none, lava, acid, water, spores, rain, fog...) JSR index for 8067,X, in bank 90. 7E:1972 - 7E:1973 FX3 height variance? 7E:1978 - 7E:1979 FX3 height (average?) (measured from top of room down) 7E:197A - 7E:197B FX3 height to go to 7E:197C - 7E:197D FX3 height adjustment speed (signed) 7E:197E - 7E:197F FX3 'C'. Bitflags: 0 = FX3 flows left, 1 = bg heat effect, 2 = 'line shift'? (Water does not affect Samus), 3 = unknown, 6 = Big FX3 tide, 7 = Small FX3 tide (priority over 6) 7E:1980 - 7E:1981 FX3, frames to wait till beginning movement. (0 means 10000) 7E:1982 - 7E:1983 FX3 'A'. 7E:1984 - 7E:1985 FX3 'B'. 7E:198D - 7E:198E Flag, - enables e/r projectiles 7E:1991 - 7E:1992 Current e/r projectile 7E:1995 - 7E:1996 Unknown, something for projectiles? 7E:1997 - 7E:19BA Header / ID for projectiles ($12 / 18 max) 7E:19BB - 7E:19DE Add low byte to sprite character indices, set pallete to high byte 7E:19DF - 7E:1A02 Table for something for enemy/room projectiles? 7E:19F7?- 7E:1A48? Used for tile animations during new game intro text. 7E:1A03 - 7E:1A26 Run-This-First-Every-Frame for enemy/room projectiles 7E:1A27 - 7E:1A4A Table for something for enemy/room projectiles? 7E:1A4B - 7E:1A6E X position of projectile, in pixels 7E:1A6F - 7E:1A92 X subpixel position? (guessing) 7E:1A93 - 7E:1AB6 Y position of projectile, in pixels 7E:1AB7 - 7E:1ADA Y subpixel position? (guessing) 7E:1ADB - 7E:1AFE Some sort of speed value? 7E:1AFF - 7E:1B22 Table for something for enemy/room projectiles? (Custom?) 7E:1B23 - 7E:1B46 Table for something for enemy/room projectiles? (Used by item drops as countdown to disappear) 7E:1B3D - 7E:1B4A Control icons during controller setting menu screen (Fire, Jump, Run, Select, Cancel, AimUp, AimDown. 0-6 = X, A, B, Select, Y, R, L) 7E:1B47 - 7E:1B6A Instruction address / Graphic AI for e/r projectiles 7E:1B6B - 7E:1B8E e/r projectile graphic pointer. Points to data entry: #sprites, (2-byte X, 1-byte Y, sprite bytes 3-4, 5 total bytes per sprite) (7E:1B7D - MB's intro hit counter?) 7E:1B8F - 7E:1BB2 Frames Delay for 1B47 7E:1BB3 - 7E:1BD6 X and Y radii. If either one is 0, intangible. 7E:1BD7 - 7E:1BFA Often: bits 0-11 = damage value, bit 12 = invisibility, bit 13 = disable collisions with Samus's projectiles, bit 14 = don't die on contact, bit 15 = detect collisions with projectiles (all not really tested) 7E:1BFB - 7E:1C1E Table for something for enemy/room projectiles? What kind of projectile hit this? 7E:1C1F - 7E:1C20 Current message box type? 7E:1C23 - 7E:1C24 PLM flag. Set to negative to enable PLMs. 7E:1C27 - 7E:1C28 Current PLM's Index. See PLM_Details.txt for PLM data 7E:1C29 - 7E:1C2A Calculated PLM's X position 7E:1C2B - 7E:1C2C Calculated PLM's Y position 7E:1C2D - 7E:1C2E Current PLM's Index (used during unpausing graphics refresh) 7E:1C2F - 7E:1C36 Pointer to graphics for special PLMs (beams, equipment, etc.) in bank 89 7E:1C37 - 7E:1C86 PLM header table 7E:1C87 - 7E:1CD6 PLM's location in the room (nth block * 2) 7E:1CD7 - 7E:1D26 Pre-PLM instruction 7E:1D27 - 7E:1D76 Next PLM instruction 7E:1D77 - 7E:1DC6 Variable use PLM value 7E:1DC7 - 7E:1E16 PLM Room argument 7E:1E17 - 7E:1E66 Variable use PLM value 7E:1E67 - 7E:1E68 Used as draw instruction to custom-draw PLM blocks. Usually #$0001 (1 block) 7E:1E69 - 7E:1E6A Used as draw instruction to custom-draw PLM blocks. Custom block value 7E:1E6B - 7E:1E6C Used as draw instruction to custom-draw PLM blocks. Usually #$0000, end value. 7E:1E71 - 7E:1E72 Flag, set Samus is in quicksand. Forces Samus into a ground position, fakes collision with ground. 7E:1E73 - 7E:1E74 Which part of Samus is inside the block? Bottom(0), middle(1), top(2) 7E:1E77 - 7E:1E78 BTS of current block (used by sloped blocks, at least) 7E:1E79 - 7E:1E7A Flag. Minus = Whatevers present (below structure). Known uses: heat damage, making parts of the background glow. (e.g. Brinstar blue plants or lightning at Samus's ship. Not dark firefly rooms, or waving backgrounds like in Norfair). Very rarely used. 7E:1E7B - 7E:1E7C Current X for 7E:1E7D,X 7E:1E7D - 7E:1E8C Pointer to code to run. F761 is heat check + damage 7E:1E8D - 7E:1E9C 7E:1E9D - 7E:1EAC 7E:1EAD - 7E:1EBC Pointer to code. Like pre-PLM code, I guess. 7E:1EBD - 7E:1ECC Pointer to current PLM-like instruction. If positive, store in delay and put 1E8D,X into X. If the argument is also positive, put it into 7E:C000,X and INC X and Y twice. Repeat until the next argument is negative, put a value onto the stack to loop at RTS, and JMP to the argument. Similar to the normal instruction loop, except Y is not incremented, and points to 2 bytes *before* the current instruction, not just after it. 7E:1ECD - 7E:1EDC Delay counter. 7E:1EF1 - 7E:1EF2 Flag, disables misc. animations if positive (spikes, FX1) 7E:1EF3 - 7E:1EF4 Index value for following table 7E:1EF5 - 7E:1F00 Unknown. Header? 7E:1F0D - 7E:1F18 Pointer to current instruction to run 7E:1F19 - 7E:1F24 Delay counter for something? 7E:1F25 - 7E:1F30 Graphic pointer 7E:1F31 - 7E:1F3C Graphic size 7E:1F3D - 7E:1F48 VRAM address 7E:1F49 - 7E:1F4A Specific instruction being run by above stuff 7E:1F51 - 7E:1F52 Used during intro scenes and pic of baby Metroid at Ceres (pointer to code?) 7E:1F53 - 7E:1F54 Timer for demo scenes? 7E:1F55 - 7E:1F56 Which set of demo scenes is playing? 7E:1F57 - 7E:1F58 Which demo scene of this set is playing? 7E:1F59 - 7E:1F5A The last set of demo scenes unlocked? 7E:1F5B - 7E:1FFF Stack (Lowest observed ATM is 1FC5, 1FB5 by Jathys. No known used RAM above 1F5B) 7E:2000 - 7E:5FFF Room Tiles, decompressed here temporarily then copied to VRAM 0000. 7E:2000 - 7E:2??? Extra RAM usable during rooms (Used by bosses especially, up to 20A7) 7E:3300 - 7E:34FF Temporary CGRAM backup during pause screen. 7E:3800 - 7E:3EFF Tilemap for part of layer 3? Cleared during message boxes. 7E:3900 - 7E:6980 Used for tilemaps/graphics during equipment screen 7E:5000 - 7E:5800 Page 1 of BG2 tilemap for main screen gameplay is stored here temporarily some time? Kraid (or possibly Phantoon?) copies some unknown stuff from VRAM here too some time? 7E:5800 - 7E:5FFF Page 2 of BG2 tilemap for main screen gameplay is stored here temporarily some time? 7E:6000 - 7E:67FF Page 1 of BG3 tilemap for main screen gameplay is stored here temporarily some time? 7E:6800 - 7E:6FFF Page 2 of BG3 tilemap for main screen gameplay is storeyyd here temporarily some time? 7E:7000 - 7E:???? CRE is decompressed to here during room load, if unknown 4 bit 1 is set for the new room. 7E:7000 - 7E:9800 Cleared before gameplay begins in new room 7E:7000?- 7E:77FF? Table of some sort for enemies. Related to graphics, I think. 7E:7006,X is where in vram the tiles are (I think) 7E:7008,X is which color pallete it uses. 7E:701E,X mirrors 7E:0F78, X 7E:7020,X mirrors 7E:0F7A, X 7E:7022,X mirrors 7E:0F7E, X 7E:7024,X mirrors 7E:0F92, X (Used by Chozo statues for orientation?) 7E:7026,X mirrors 7E:0F86, X 7E:7028,X mirrors 7E:0F88, X 7E:702A,X mirrors 7E:0FB4, X 7E:702C,X mirrors 7E:0FB6, X 7E:702E,X-7E:7038,X is the enemy's name, if it has one. Else #$0000 7E:7800 - 7E:7FFF Extra RAM for enemy use ($40 bytes each) 7E:7802 - 7E:7803 Unknown, initialized to 0 by Ridley 7E:7804 - 7E:7805 Unknown, initialized to 1 by Norfair Ridley, 0 by Ceres Ridley 7E:7806 - 7E:7807 Unknown, initialized to BF31 by Ceres Ridley 7E:7808 - 7E:7809 Unknown, initialized to 1 by Ceres Ridley 7E:780E - 7E:780F Unknown, initialized to 5 by Ceres Ridley 7E:7818 - 7E:7819 Pallete for Ridley? 7E:781A - 7E:781B Unknown, initialized to 0 by Ridley 7E:7820 - 7E:7821 Unknown. Initialized to 2 by Norfair Ridley, 0 by Ceres Ridley 7E:7824 General use 'speed' byte set aside for Ridley? 7E:7838 - 7E:7839 Unknown. Initialized to 78 by Norfair Ridley, F by Ceres Ridley 7E:8000 - 7E:8001 Used for Draygon's direction when grabbing Samus; 0 = left, 1 = right. Initialized to 40 by Norfair Ridley, FFE0 by Ceres Ridley 7E:8002 - 7E:8003 Initialized to 1A0 by Norfair Ridley, B0 by Ceres Ridley 7E:8004 - 7E:8005 Initialized to 40 by Norfair Ridley, 28 by Ceres Ridley 7E:8006 - 7E:8007 Initialized to E0 by both Ridleys 7E:800A Ridley's final attack swoop counter? 7E:8800 - 7E:8801 Unknown, initialized to BE9C by Ceres Ridley 7E:8802 - 7E:8803 Unused byte for topleft turret in Draygon's room 7E:8804 - 7E:8805 Death byte for bottomleft turret in Draygon's room (1 = no more turret fire) 7E:8806 - 7E:8807 Death byte for topright turret in Draygon's room (1 = no more turret fire) 7E:8808 - 7E:8809 Death byte for bottomright turret in Draygon's room (1 = no more turret fire) 7e:9100 - 7E:91FF Something to do with HDMA, used when Phantoon makes his swirl animation when he dies 7E:9C00 Something for Layer 3 Horizontal Scroll HDMA (scroll value for air?) 7E:9C04 - 7E:9C22 Layer 3 horizontal scroll HDMA data (at least for water) 7E:A000 - 7E:BFFF Stuff for tiles (A000 to A7FF is CRE). 8 bytes per tile, unknown format. I *think* it's the '7F:0002 03FF character --> 4 subtiles from VRAM' table. TODO 7E:C000 - 7E:C1FF Color palletes, copied straight to CGRAM 7E:C000 - 7E:C01F area color palette line 0 7E:C020 - 7E:C03F area color palette line 1 7E:C040 - 7E:C05F area color palette line 2 7E:C060 - 7E:C07F area color palette line 3 7E:C080 - 7E:C0AF area color palette line 4 7E:C0A0 - 7E:C0BF area color palette line 5 7E:C0C0 - 7E:C0DF area color palette line 6 7E:C0E0 - 7E:C0FF area color palette line 7 7E:C100 - 7E:C11F White palette for flashing enemies and pickups 7E:C120 - 7E:C13F Enemy color palette line 0001 7E:C140 - 7E:C15F Enemy color palette line 0002 7E:C160 - 7E:C17F Enemy color palette line 0003 7E:C180 - 7E:C1AF Samus' palette 7E:C1A0 - 7E:C1BF Most common sprites (item drops, smoke, explosions, bombs, power bombs, missiles, gates(wall part), water splashes, grapple beam) 7E:C1C0 - 7E:C1DF Beam Color palette line 7E:C1E0 - 7E:C1FF Enemy color palette line 0007 7E:C200 - 7E:C3FF Target color palletes 7E:C400 - 7E:C401 Color pallete change fraction, numerator 7E:C402 - 7E:C403 Color pallete change fraction, denominator (C000,X = (C200,X * C400 / C402) + (original C000,X * (C402 - C400) / C402)) 7E:C404 - 7E:C405 Current index for C000/C200 7E:C2E2 - 7E:C2FF Unknown, initialized to 0 by Norfair Ridley 7E:C320 - 7E:C35F Unknown (Enemy 1 pallete?) 7E:C340 - 7E:C37F Unknown, initialized differently by both Ridleys 7E:C380 - 7E:C39E Samus' target colors for room transitions. Set by 91/DDD7, from bank 9B, depending on X. 7E:C3E2 - 7E:C3FF Unknown, initialized to 0 by both Ridleys 7E:C400 - 7E:C607 Powerbomb HDMA tilemap? Also used by gradual color change routine (probably targed colors for Powerbombs?) 7E:C608 - 7E:C6C7 Status bar tilemap 7E:C8C8 - 7E:C907 Copied to VRAM by horizontal scroll routine (left half of new tilemap). Size is 7E:0956, VRAM address 7E:095A 7E:C908 - 7E:C947 Copied to VRAM by horizontal scroll routine (right half of new tilemap). Size is 7E:0956, VRAM address 7E:095A + 1 7E:C948 - 7E:C98B Copied to VRAM by vertical scroll routine(top half of new tilemap?). Size is 7E:0964 (screen 1) + 7E:0966 (screen 2) 7E:C98C - 7E:C9CF copied to VRAM by vertical scroll routine(bottom half of new tilemap?). Size is 7E:0964 7E:C9D0 - 7E:C??? Copied to VRAM. Size is 7E:0972. Used by elevator background loading (80:8D49) 7E:CA10 - 7E:C??? Copied to VRAM. Size is 7E:0972. Used by elevator background loading (80:8D49) 7E:CA50 - 7E:C??? Copied to VRAM. Size is 7E:0980. Used by ???? routine (80:8E2B) 7E:CA94 - 7E:C??? Copied to VRAM. Size is 7E:0980. Used by ???? routine (80:8E2B) 7E:CAD8 - 7E:CADB Scroll offsets for BG3 during tilebar. (2 bytes horizontal, 2 bytes vertical). Copied via HDMA during tilebar 7E:CADC - 7E:CADF Scroll offsets for BG3 during main display. (2 bytes horizontal, 2 bytes vertical). Copied via HDMA once at end of tilebar. 7E:CD20 - 7E:CD51 Scrollmap for current room 7E:CD52 - 7E:CE51 Explored map for Area 0 (Crateria) 7E:CE52 - 7E:D551 Explored map for Areas 1-7 7E:D552 - 7E:D558 Name of current enemy list 7E:D559 - 7E:D??? Name of allowed enemies in the room. C bytes alloted for each enemy. 7E:D7C0 - 7E:DE1B RAM that is saved to SRAM 7E:D7C0 - 7E:D81F SRAM copy of 7E:09A2 - 7E:0A01 7E:D820 - 7E:D86F Event bit array. 30-6F are never used 7E:D870 - 7E:D8AF Item bit array. 90-AF are never used 7E:D8B0 - 7E:D8EF Opened door bit array. D0-EF are never used 7E:D8F8 - 7E:D907 Used elevator(Odd bytes) and save point(Even bytes) array, indexed by area. 7E:D908 - 7E:D90F Map Station byte array 7E:D914 Value to use in 0998. Kinda used to keep track of what part of the game we're at. 5 = main, 22 = escaping Ceres / landing on Zebes, 1F = starting at Ceres 7E:D91C - 7E:DE1B? Loaded 'compressed' map data from SRAM. Only first 160 bytes or so are actually used by original game. 7E:DE1C - 7E:DE6B PLM frame delay 7E:DE6C - 7E:DEBB PLM Block Edit pointer 7E:DEBC - 7E:DF0B PLM Goto Instruction Pointer 7E:DF0C - 7E:DF5B Unknown PLM value. Initialized to #$0000 7E:DF5C - 7E:EF5B Backup of VRAM word 3980 - 417F (bytes 7300 - 82FF). Technically, word 3980 is not backed up, but that doesn't seem too important. 7E:EF78 - 7E:EFB7 ID/Header for some unknown. Pulled from table at 86:BDA8: (BE5A, BE6C, BE86, BEA4, BEBE, BED4, BEEA...) 7E:EFF8 - 7E:F037 A property of above unknown (Initialized to first word from above pointer) 7E:F078 - 7E:F0B7 A property of above unknown 7E:F0F8 - 7E:F137 X position of above unknown 7E:F178 - 7E:F1B7 A property of above unknown 7E:F1F8 - 7E:F237 Y position of above unknown 7E:F278 - 7E:F2B7 A property of above unknown 7E:F2F8 - 7E:F337 A property of above unknown 7E:F378 - 7E:F379 Unknown, set to #$0002 by processing enemies before JSRing to A0:C26A, set to #$0003 by enemies when detecting collisions with projectiles, set to #$0006 by enemies when detecting Samus 7E:F380 - 7E:F49F Enemy/room projectile data 'cleared' every time on room load 7E:F380 - 7E:F3A3 Use different response when hit by projectile (0000 = normal?, 0001 = Samus's projectile?, 0002 = Ignore collision?) 7F:0000 - 7F:0001 Size of room tilemap in bytes (and size of background tilemap, and 2x size of bts map) 7F:0002 - 7F:6401 Room Tilemap 7F:6402 - 7F:9601 Room BTS map 7F:9602 - 7F:FA01 Room Background Tilemap 7F:FA02 - 7F:FFFF Unused VRAM during main gameplay (In byte addresses, not word addresses) $0000 - $47FF Area graphics (4 bit) $4800 - $4FFF Layer 2 tilemap? Sometimes seems to be unused $5000 - $7BFF CRE graphics (4 bit) $6000 - $6FFF Layer 1 tilemap on pause screen (2x1 wide) $7000 - $77FF Layer 2 tilemap on pause screen (1x1) $7C00 - $7FFF Misc. graphics? (4 bit, Contains beam item tiles) $8000 - $8FFF Layer 3 graphics. (2 bit. Lotta available space scattered around.) $9000 - $9FFF Sometimes used as Layer 2 tilemap (like with Phantoon). Usually unused? $A000 - $AFFF Layer 1 tilemap $B000 - $B03F Unknown (Probably works as top tiles in Layer 3 Status Bar tilemap, but never seen written to) $B040 - $B0FF Layer 3 Status Bar tilemap $B100 - $B7BF Unknown (unused? Often all set to #$184E by 82/E566 during room transitions) $B7C0 - $BFFF Layer 3 FX tilemap? $C000 - $C43F? Samus graphics (4 bit, pal 192) $C000 - $C0FF Samus Top 1 graphics $C100 - $C1FF Samus Bottom 1 graphics $C200 - $C2FF Samus Top 2 graphics $C300 - $C3FF Samus Bottom 2 graphics $C440 - $C49F Unknown (unused?) $C4A0 - $C4BF Misc. sprite graphics (Samus's air bubbles?) (4 bit, pal 208) $C4C0 - $C4FF Power Bomb (4 bit, pal 208) $C500 - $C57F M1 Ridley's Fireballs? (4 bit, pal 208) $C580 - $C5FF Water from Samus's footsteps (4 bit, pal 208) $C600 - $C6FF Beam graphics (4 bit, pal 224) $C700 - $C77F Beam trail graphics (4 bit, pal 224) $C780 - $C7FF Small energy pickup (4 bit, pal 208. 1st and 4th look unused) $C800 - $C81F Air bubbles (4 bit, pal 208) $C81F - $C85F Small energy pickup (4 bit, pal 208) $C860 - $C87F Air bubbles (4 bit, pal 208) $C880 - $C8FF Large energy pickup (4 bit, pal 208, last looks unused) $C900 - $C97F Dust clouds from footsteps(or smoke from missiles?) (4 bit, pal 208) $C980 - $C9FF Bomb graphics (4 bit, pal 208) $CA00 - $CA7F Explosions, small (4 bit) $CA80 - $CB5F Missile (Tiles: 2 horizontal, 3 diagonal, 2 vertical. 4 bit, pal 208) $CB60 - $CBBF Unknown (small dots) $CBC0 - $CBDF Unknown, looks like (and might be) splash from water $CBE0 - $CC7F Explosions, medium - small. (4 bit, pal 208) $CC80 - $CD5F Super missile (Tiles: 2 horizontal, 3 diagonal, 2 vertical. 4 bit, pal 208) $CD60 - $CDFF Enemy projectiles? (not sure if all used. 4 bit, pal 208) $CE00 - $D9FF If not otherwise stated, explosions of various colors, shapes, and sizes (4 bit, pal 208) $CF60 - $CF7F Power bomb (just 1 tile. 4 bit, pal 208) $D740 - $D75F Top half of water burst (4 bit, pal 208) $D7C0 - $D7FF Top (identical) half of gate (4 bit, pal 208) $D8E0 - $D8FF Air bubbles for Samus? (4 bit) $D940 - $D95F Bottom half of water burst (4 bit, pal 208) $D9C0 - $D9FF Bottom (identical) half of gate (4 bit, pal 208) $DA00 - $FFFF Enemy graphics and enemy projectiles (4 bit, variable palletes) Palletes: (note: This part is currently very unthorough) 0 (16 colors): Much of CRE. Grey doors 1 (16 colors): Also much of CRE, but with different lighting. Green doors 2 (16 colors): Red doors. That looks like it. 3 (16 colors): Blue doors. Might be it. 4 (16 colors): Don't see anything that uses this. Might only be certain tiles in certain tilesets, or enemies 5 (16 colors): A couple tiles. 6 (16 colors): Don't see anything that uses this. Might only be certain tiles in certain tilesets, or enemies 7 (16 colors): A couple tiles. 8 (16 colors): Enemy hurt pallete? 9 (16 colors): I think this is for enemies. A (16 colors): Ditto B (16 colors): Ditto C (16 colors): Samus D (16 colors): Most common sprites (item drops, smoke, explosions, bombs, power bombs, missiles, gates(wall part), water splashes, grapple beam) E (16 colors): Samus's beam F (16 colors): Unknown 2 (4 colors): Much text, explored areas on minimap, energy 3 (4 colors): Much text, unexplored areas on minimap 4 (4 colors): Selected items 5 (4 colors): Unselected items, possibly some water animations