Advertisement
foosda

RAM Map for SM

Feb 28th, 2017
548
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 85.25 KB | None | 0 0
  1. 7E0000 - 7E0019 Misc. Direct Page Temporary Values
  2. 7E0012 - 7E0013 Common horizontal subpixel value or X coordinate
  3. 7E0014 - 7E0015 Common vertical subpixel value or Y coordinate
  4. 7E0016 - 7E0017 Common type or index value
  5. 7E0018 - 7E0019 Common palette value (sometimes unused)
  6.  
  7. 7E0026 - 7E0027 16 bit multiplier
  8. 7E0028 - 7E0029 16 bit multiplier
  9. 7E002A - 7E002D 32 bit product
  10. 7E002E - 7E002F Misc. Direct Page Temporary Value
  11.  
  12. 7E003C - 7E003D Direct Page version of 7E071F
  13.  
  14. 7E0051 Value for $2100 with $8091EE (referred to as 'A') Screen Display Register a000bbbb a 0=screen on 1=screen off, b = brightness
  15. 7E0052 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
  16.  
  17. 7E0055 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
  18. 7E0056 Value for $07EC with 'A'
  19. 7E0057 Value for $2106 with 'A' Mosaic Size and BG Enable aaaabbbb a = Mosaic Size b = Mosaic BG Enable
  20. 7E0058 Value for $2107 with 'A' BG 1 Address and Size aaaaaabb a = Screen Base Address (Upper 6-bit), b = Screen Size
  21. 7E0059 Value for $2108 with 'A' BG 2 Address and Size aaaaaabb a = Screen Base Address (Upper 6-bit), b = Screen Size
  22. 7E005A Value for $2109 with 'A' BG 3 Address and Size aaaaaabb a = Screen Base Address (Upper 6-bit), b = Screen Size
  23. 7E005B Value for $2109 during interrupt 0006 (VRAM Address of tiles and size for BG3)
  24. 7E005C Value for $210A with 'A' BG 4 Address and Size aaaaaabb a = Screen Base Address (Upper 6-bit), b = Screen Size unused
  25. 7E005D Value for $210B with 'A' BG 1 & 2 Tile Data Designation aaaabbbb a = BG 2 Tile Base Address, b = BG 1 Tile Base Address
  26. 7E005E Value for $210C with 'A' BG 3 & 4 Tile Data Designation aaaabbbb a = BG 4 Tile Base Address, b = BG 3 Tile Base Address
  27. 7E005F Value for $211A with 'A' Initial Setting for Mode 7 aa0000bc a = Screen Over b = Vertical Flip c = Horizontal Flip
  28. 7E0060 Value for $2123 with 'A' BG 1 and 2 Window Mask Settings aaaabbbb a = BG 2 Window Settings b = BG 1 Window Settings
  29. 7E0061 Value for $2124 with 'A' BG 3 and 4 Window Mask Settings aaaabbbb a = BG 4 Window Settings b = BG 3 Window Settings
  30. 7E0062 Value for $2125 with 'A' OBJ and Color Window Settings aaaabbbb a = Color Window Settings b = OBJ Window Settings
  31. 7E0063 Value for $2126 with 'A' Window 1 Left Position Designation
  32. 7E0064 Value for $2127 with 'A' Window 1 Right Position Designation
  33. 7E0065 Value for $2128 with 'A' Window 2 left Position Designation
  34. 7E0066 Value for $2129 with 'A' Window 2 Right Position Designation
  35. 7E0067 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
  36. 7E0068 Value for $212B with 'A' Color and OBJ Window Logic Settings 0000aabb a = Color Window b = OBJ Window
  37. 7E0069 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
  38. 7E006A 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
  39. 7E006B 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
  40. 7E006C 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
  41. 7E006D 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
  42. 7E006E Value for $70 with 'A'
  43. 7E006F 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
  44. 7E0070 Value for $2130 during interrupt 0006 (Which windows to add/subtract from)
  45. 7E0071 Value for $73 with 'A'
  46. 7E0072 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
  47. 7E0073 Value for $2131 during interrupt 0006 (Which layers to modify, and whether to add or to subtract)
  48. 7E0074 Value 1 for $2132 with 'A' Fixed Color Data abcddddd a = Blue b = Green c = Red ddddd = Color Data
  49. 7E0075 Value 2 for $2132 with 'A' Fixed Color Data abcddddd a = Blue b = Green c = Red ddddd = Color Data
  50. 7E0076 Value 3 for $2132 with 'A' Fixed Color Data abcddddd a = Blue b = Green c = Red ddddd = Color Data
  51. 7E0077 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
  52. Registers 211b through 2120 are 16 bits wide.
  53. 0x211B is also used as the 16-bit multiplicand for registers 0x2134-6 (write twice)
  54. 0x211C is also used as the 8-bit multiplier for registers 0x2134-6
  55. 7E0078 First value for $211B with 'A' Mode 7 Matrix Parameter A always changed while zooming and while rotating
  56. 7E0079 Second value for $211B with 'A' Mode 7 Matrix Parameter A
  57. 7E007A First value for $211C with 'A' Mode 7 Matrix Parameter B
  58. 7E007B Second value for $211C with 'A' Mode 7 Matrix Parameter B
  59. 7E007C First value for $211D with 'A' Mode 7 Matrix Parameter C
  60. 7E007D Second value for $211D with 'A' Mode 7 Matrix Parameter C
  61. 7E007E First value for $211E with 'A' Mode 7 Matrix Parameter D always seems to be the same like $78
  62. 7E007F Second value for $211E with 'A' Mode 7 Matrix Parameter D
  63. 7E0080 First value for $211F with 'A' Mode 7 Center Position X
  64. 7E0081 Second value for $211F with 'A' Mode 7 Center Position X
  65. 7E0082 First value for $2120 with 'A' Mode 7 Center Position Y
  66. 7E0083 Second value for $2120 with 'A' Mode 7 Center Position Y
  67. 7E0084 Value for $4200 - NMI, V/H Count, and Joypad Enable a0bc000d a = NMI b = V-Count c = H-Count d = Joypad
  68. 7E0085 HDMA channels to turn on? Not sure for what, looks like for Layer 3 blending for something.
  69. 7E0086 ROM Access Speed. Probably never changed.
  70. 7E0087 - 7E0088 Never seems to be written to except by RAM-clearing routines. (Seraphim HUD Input counter)
  71. 7E0089 - 7E008A Never seems to be written to except by RAM-clearing routines. (Seraphim HUD Slowdown counter)
  72. 7E008B - 7E008C Controller 1 Input
  73. 7E008D - 7E008E Controller 2 Input. ALL Controller 2 Unused (Debug mode)
  74. 7E008F - 7E0090 Controller 1 Buttons newly pressed this frame
  75. 7E0091 - 7E0092 Controller 2 Buttons newly pressed this frame
  76. 7E0093 - 7E0094 Mirror of $8F (common) or $8B (Input, no new buttons held, $A3 was 1/is now 0)
  77. 7E0095 - 7E0096 Mirror of $91 (common) or $8D (Input, no new buttons held, $A5 was 1/is now 0)
  78. 7E0097 - 7E0098 Controller 1 Input from previous frame (updated at end of button-updating routine - this will always mirror $8B except during the button-updating routine)
  79. 7E0099 - 7E009A Controller 2 Input from previous frame (updated at end of button-updating routine - this will always mirror $8D except during the button-updating routine)
  80.  
  81. 7E00A3 - 7E00A4 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.
  82. 7E00A5 - 7E00A6 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.
  83. 7E00A7 - 7E00A8 Optional Next Interrupt Jump Index (must be a multiple of 2)(0 = unused)
  84. 7E00A9 - 7E00AA Optional Next 'Optional Next' Interrupt Jump Index (must be a multiple of 2)(0 = unused)
  85. 7E00AB - 7E00AC Interrupt Jump Index (must be a multiple of 2)
  86.  
  87. 7E00B1 - 7E00B2 Value for $210D (X scroll of BG 1)
  88. 7E00B3 - 7E00B4 Value for $210E (Y scroll of BG 1)
  89. 7E00B5 - 7E00B6 Value for $210F (X scroll of BG 2)
  90. 7E00B7 - 7E00B8 Value for $2110 (Y scroll of BG 2)
  91. 7E00B9 - 7E00BA Value for $2111 (X scroll of BG 3)
  92. 7E00BB - 7E00BC Value for $2112 (Y scroll of BG 3)
  93. 7E00BD - 7E00BE Value for $2113 (X scroll of BG 4)
  94. 7E00BF - 7E00C0 Value for $2114 (Y scroll of BG 4)
  95.  
  96. 7E00D0 - 7E02AF Table of entries to update graphics, 7 bytes Size (2 bytes), source address (3 bytes), VRAM target (2 bytes) (Unsure of size)
  97. 7E02D0 - 7E02D1 Something for Mode 7?
  98. 7E0330 - 7E0331 'Stack' pointer for 00D0 table
  99. 7E0334 - 7E0335 Something for Mode 7?
  100. 7E0340 - 7E035B 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)
  101. 7E035C - 7E035D 0000; garbage write for end of table.
  102. 7E0360 - 7E0361 'Stack' pointer for 0340 table
  103. 7E0370 - 7E058F *ALL* OAM data (according to routine at 80933A)
  104. 7E0590 - 7E0591 Index for 0370
  105. 7E0592 - 7E0593 Read during X-Ray setup
  106.  
  107. 7E05A2 - 7E05A3 Percent of message box is open? Or something like that. Max of #$1800
  108. 7E05A4 - 7E05A5 Something for message boxes. Seems to be related to graphics and tilemaps
  109. 7E05A6 - 7E05A7 Something for message boxes. Seems to be related to graphics and tilemaps
  110.  
  111. 7E05AC - 7E05AD Minimum X scroll on minimap
  112. 7E05AE - 7E05AF Maximum X scroll on minimap
  113. 7E05B0 - 7E05B1 Minimum y scroll on minimap
  114. 7E05B2 - 7E05B3 Maximum Y scroll on minimap
  115. 7E05B4 1 = Game is waiting for an NMI, 0 = Game is processing current frame
  116. 7E05B5 Something for animating minimap cursor (used as a general purpose... animation index, I guess)
  117. 7E05B6 - 7E05B7 Frame counter. Incremented EVERY NMI when processing has been completed (05B4 has been set)
  118. 7E05B8 - 7E05B9 I'm guessing this is some sort of HBlank check. Used by message boxes for smooth opening/closing
  119. 7E05BA How many NMI's elapsed while this frame has been processing. Never used, only for statistics.
  120. 7E05BB The most NMI's elapsed while waiting for a frame to process. Caps at FF.
  121. 7E05BC - 7E05BD High bit is a flag to write to VRAM (for BG3?). Cleared during 809632, when you enter a door, set in 82E4A9
  122. 7E05BE - 7E05BF Offset for VRAM. Used by 809632, when you enter a door
  123. 7E05C0 - 7E05C2 Source for VRAM update, including bank byte. Used by 809632, when you enter a door
  124. 7E05C3 - 7E05C4 Size of VRAM update. Used by 809632, when you enter a door
  125. 7E05C5 - 7E05C6 Mirror of $8F, only enabled with debug mode. Used for debug functions.
  126. 7E05C7 - 7E05C8 Also mirrors $8F sometimes with debug mode. Not sure when.
  127. 7E05C9 - 7E05CA 'Swap' of missiles for debug mode. Select + R + B
  128. 7E05CB - 7E05CC 'Swap' of super missiles for debug mode. Select + R + B
  129. 7E05CD - 7E05CE 'Swap' of power bombs for debug mode. Select + R + B
  130. 7E05CF - 7E05D0 Top bit is set if weaponry is 'swapped' at the moment.
  131. 7E05D1 - 7E05D2 Debug mode. Set to 808004 at game start, unused in the normal rom.
  132. 7E05D3 - 7E05D4 Save/Load Scroll position toggle. Requires 808006 to be set
  133. 7E05D5 - 7E05D6 Saved X-Scroll position ($0911). Unused (Debug mode)
  134. 7E05D7 - 7E05D8 Saved Y-Scroll position ($0915). Unused (Debug mode)
  135. 7E05D9 - 7E05DA Previous frame's 008B during the pause screen? (as is up to 05E4)
  136. 7E05DB - 7E05DC Frames left to wait for this same set of buttons being held down till significant
  137. 7E05DD - 7E05DE Potential value for 05DB?
  138. 7E05DF - 7E05E0 Buttons held down for 05DD frames
  139. 7E05E1 - 7E05E2 Buttons newly held down for 05DD frames
  140. 7E05E3 - 7E05E4 Buttons previously held down for 05DD frames
  141. 7E05E5 - 7E05E6 Random Number
  142. 7E05E7 - 7E05E8 Often used to check bits for completed tasks/picked up items
  143. 7E05E9 - 7E05EA 16-bit multiplier A. Used by 8082D6
  144. 7E05EB - 7E05EC 16-bit multiplier B. Used by 8082D6
  145.  
  146. 7E05F1 - 7E05F4 16-bit * 16-bit result registers. Used by routine 8082D6
  147. 7E05F5 - 7E05F6 Disable sounds
  148. 7E05F7 - 7E05F8 Disable automap
  149.  
  150. 7E05FB - 7E05FC Delay for scrolling when holding a direction in the pause screen. 00 = free scrolling (hold) 01+ = number of "scrolls" until free scrolling
  151. 7E05FD - 7E05FE Which direction the map scrolls in the pause screen
  152. 7E05FF - 7E0600 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
  153. 7E0601 - 7E0603 Pointer to code executed when pausing
  154. 7E0604 - 7E0606 Pointer to code executed when unpausing
  155. 7E0607 - 7E0608 Sound index used during earthquakes after collecting SpeedBooster and at the statues
  156. 7E0609 - 7E060A Delay between sounds during earthquakes. Used with $7E0607
  157. 7E060B - 7E060C 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.
  158. 7E060D - 7E060E First byte at enemy's ?special hitbox? pointer address
  159. 7E060F - 7E0610 Number of projectiles to check for by enemy collision detection? (mirror of $0CCE)
  160.  
  161. 7E0617 - 7E0618 0 = allow Soft Reset via Start+Select+L+R. Unused (Debug mode)
  162. 7E0619 - 7E0628 List of words If negative, low-byte is index to new music/instruments. If positive, use as new track number (*2 = SPC 581E index)
  163. 7E0629 - 7E0638 List of words Timer till current command should process. Minimum of 8.
  164. 7E0639 - 7E063A 'Next Available' Index for 0619 and 0629. Increments of 2, loops from E to 0
  165. 7E063B - 7E063C 'Next to process' Index for 0619 and 0629. Increments of 2, loops from E to 0
  166. 7E063D - 7E063E Currently processing value of 0619,x. (Current new music/instrument or new track)
  167. 7E063F - 7E0640 Currently processing value of 0629,x. (Time left to process current command)
  168. 7E0641 - 7E0642 Unused? Never seems to be written to except by ram clearing routines
  169. 7E0643 Currently playing index of queued sound clips? For most of Samus?
  170. 7E0644 Currently playing index of queued sound clips? For most of enemies?
  171. 7E0645 Currently playing index of queued sound clips? Miscellaneous?
  172. 7E0646 Current index of queued sound clips? For most of Samus?
  173. 7E0647 Current index of queued sound clips? For most of enemies?
  174. 7E0648 Current index of queued sound clips? Miscellaneous?
  175. 7E0649 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?
  176. 7E064A Current 'state' of sound clip. For most of enemies?
  177. 7E064B Current 'state' of sound clip. Miscellaneous?
  178. 7E064C Current track index (SPC ram 581E,x index, 0-7)
  179. 7E064D Sound clip currently playing? For most of Samus?
  180. 7E064E Sound clip currently playing? For most of enemies?
  181. 7E064F Sound clip currently playing? Miscellaneous?
  182. 7E0650 Delay before clearing soundclip
  183. 7E0651 Delay before clearing soundclip
  184. 7E0652 Delay before clearing soundclip
  185. 7E0653 Maximum allowed queue number for new sound trying to play
  186. 7E0654 Maximum allowed queue number for new sound trying to play
  187. 7E0655 Maximum allowed queue number for new sound trying to play
  188. 7E0656 - 7E0665 Queue of sound clips? For most of Samus?
  189. 7E0666 - 7E0675 Queue of sound clips? For most of enemies?
  190. 7E0676 - 7E0685 Queue of sound clips? Miscellaneous?
  191.  
  192. 7E071D Flag - Samus' top sprites need to be loaded to VRAM.
  193. 7E071E Flag - Samus' bottom sprites need to be loaded to VRAM.
  194. 7E071F - 7E0720 Pointer to DMA data (bank 92) for Samus' top sprites (3 byte address, 2 byte part 1 size, 2 byte part 2 size)
  195. 7E0721 - 7E0722 Pointer to DMA data (bank 92) for Samus' bottom sprites (3 byte address, 2 byte part 1 size, 2 byte part 2 size)
  196. 7E0723 - 7E0724 Frames between changes in screen brightness while pausing the game.
  197. 7E0725 - 7E0726 Counter for frames between changes in screen brightness.
  198. 7E0727 Used by pause screen (map/items/transitions - main index to look up code) and Game Over screen (not sure)
  199.  
  200. 7E0729 - 7E072A Frames to flash L/R/Start button on pause screen
  201.  
  202. 7E072D - 7E072E Used as a timer in the pause screen for selection flashing
  203. 7E072F - 7E0730 Used as a timer in the pause screen for reserve tank flashing
  204.  
  205. 7E073B - 7E073C Timer/counter for L and R button backgrounds' color animation (Top byte initialized to 00 but unused (8bit) during routine)
  206.  
  207. 7E0741 - 7E0742 Used as an animation index in the pause screen for selection flashing
  208. 7E0743 - 7E0744 Used as an animation index in the pause screen for reserve tank flashing
  209.  
  210. 7E074F - 7E0750 Index for animation and color for L and R button backgrounds' color animation (Top byte initialized to 00 but unused (8bit) during routine)
  211. 7E0751 - 7E0752 Which button lights up for 0729 frames when changing screens from pause screen (00 = none, 01 = L, 02 = R)
  212. 7E0753 - 7E0754 Which buttons show on the pause screen ('SAMUS' R = 00, neither (unpausing) = 01, 'MAP' L = 02). Often used to check active screen.
  213. 7E0755 Which list is selected on the equipment pause screen
  214. 7E0756 Which item of the list is selected on the equipment pause screen
  215. 7E0757 Delay counter for reserve tank sound
  216.  
  217. 7E0765 Backup value for 58 during pause screen
  218. 7E0766 Backup value for 59 during pause screen
  219. 7E0767 Backup value for 5A during pause screen
  220. 7E0768 Backup value for 5D during pause screen
  221. 7E0769 Backup value for 5E during pause screen
  222. 7E076A Backup value for 52 during pause screen
  223. 7E076B Backup value for B1 during pause screen
  224. 7E076C Backup value for B5 during pause screen
  225. 7E076D Backup value for B9 during pause screen
  226. 7E076E Backup value for B3 during pause screen
  227. 7E076F Backup value for B7 during pause screen
  228. 7E0770 Backup value for BB during pause screen
  229. 7E0771 Backup value for 55 during pause screen
  230. 7E0772 Backup value for 091B during pause screen
  231. 7E0773 Backup value for 091C during pause screen
  232. 7E0774 Backup value for 57 during pause screen
  233. 7E0775 Backup value for 71 during pause screen
  234.  
  235. 7E077A - 7E077B Bit 1 controls flashing for Samus' helmet icon while loading
  236. 7E077C - 7E077D palette value for status bar. Sharable.
  237.  
  238. 7E0783 - 7E0784 Mode 7 flag
  239. 7E0785 - 7E0786 Mode 7 rotation angle (in units of 2pi/100h radians)
  240.  
  241. 7E0789 - 7E078A 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)
  242. 7E078B - 7E078C Which save in the current area to load from? Might alternatively be X/Y of save station on map
  243. 7E078D - 7E078E DDB pointer for current room transition
  244. 7E078F - 7E0790 BTS of the door that lead to this room. Never read.
  245. 7E0791 - 7E0792 Current room transition direction.
  246. 0: right
  247. 1: left
  248. 2: down
  249. 3: up
  250. +4: close a door on next screen
  251. 7E0793 Door bitflags
  252. 7E0794 Room transition direction
  253. 7E0795 - 7E0796 If set, not an elevator?
  254. 7E0797 - 7E0798 Currently transitioning the room
  255. 7E0799 - 7E079A Direction of current elevator (0000 = down, 8000 = up)
  256. 7E079B - 7E079C Current room mdb (Room ID in SMILE)
  257. 7E079D - 7E079E First byte of room mdb, unknown (Apparently room # for this region)
  258. 7E079F - 7E07A0 Region Number
  259. 0: Crateria
  260. 1: Brinstar
  261. 2: Norfair
  262. 3: Wrecked Ship
  263. 4: Maridia
  264. 5: Tourian
  265. 6: Ceres
  266. 7: Debug
  267. 7E07A1 - 7E07A2 Room's Automap X coordinate
  268. 7E07A3 - 7E07A4 Room's Automap Y coordinate
  269. 7E07A5 - 7E07A6 Current room's width in blocks
  270. 7E07A7 - 7E07A8 Current room's height in blocks
  271. 7E07A9 - 7E07AA Number of screens wide current room is. Used only by scrolling? (and beams)
  272. 7E07AB - 7E07AC Number of screens tall current room is, used by beams at the least.
  273. 7E07AD - 7E07AE 7th byte of room mdb. Target screen Y position for Samus while moving down (used by scrolling) "up scroller"
  274. 7E07AF - 7E07B0 8th byte of room mdb. Target screen Y position for Samus while moving up (used by scrolling) "down scroller"
  275. 7E07B1 - 7E07B2 9th byte of previous room's mdb
  276. 7E07B3 - 7E07B4 9th byte of this room's mdb (GFX Bitflag)
  277. 7E07B5 - 7E07B6 Room's doorout pointer
  278. 7E07B7 - 7E07B8 Roomstate test pointer (used when testing roomstate conditions)
  279. 7E07B9 - 7E07BA Area of current room, in blocks
  280. 7E07BB - 7E07BC Current roomstate pointer
  281. 7E07BD - 7E07BF 3 byte pointer to current room tilemap (Level Data Pointer)
  282. 7E07C0 - 7E07C2 3 byte pointer. Something for the tiles. 8F0000,[8FE7A7,[graphics set * 2]]. Decompressed to 7EA800
  283. 7E07C3 - 7E07C5 Another 3 byte pointer. Something for the tiles. 8F0003,[8FE7A7,[graphics set * 2]]. Room tiles. Decompressed to 7E2000, 5000 bytes?
  284. 7E07C6 - 7E07C8 Another 3 byte pointer. Colors? 8F0006,[8FE7A7,[graphics set * 2]]. Decompressed to 7EC200
  285. 7E07C9 - 7E07CA Music track index (0 = off, 1-4 = fixed, 5-7 = song/instrument dependant)
  286. 7E07CB - 7E07CC Music song/instrument index
  287. 7E07CD - 7E07CE Pointer to room FX1
  288. 7E07CF - 7E07D0 Room's enemy population pointer
  289. 7E07D1 - 7E07D2 Room's enemies allowed pointer (gets names and palettes, also gets list name for 7ED552)
  290.  
  291. 7E07DF - 7E07E0 Pointer to room FX2
  292. 7E07E1 - 7E07E8 FX2 variables
  293. 7E07E1 - 7E07E2 Maridia elevatube subposition
  294. Ceres escape elevator shaft rotation matrix index
  295. Ceres pre-elevator hall debris timer
  296. 7E07E3 - 7E07E4 Maridia elevatube position
  297. Ceres escape elevator shaft rotation matrix timer
  298. 7E07E5 - 7E07E6 Maridia elevatube speed (low byte << 8 is $07E1 subspeed, high byte is $07E3 speed)
  299. 7E07E7 - 7E07E8 Maridia elevatube acceleration (accelerates until [$07E5] + [$07E7] > 0E20h)
  300. 7E07E9 - 7E07EA Pointer to routine (or unused; 0000). Used in scroll routines.
  301.  
  302. 7E07EC Some sort of very special-case write during DMA or HDMA, probably (see 888435 and related RAM - if not with that still almost surely bank 88 related). Noted use when leaving Ridley's room in Ceres.
  303.  
  304. 7E07F3 - 7E07F4 Currently loaded song/instrument index
  305. 7E07F5 - 7E07F6 Currently loaded track index
  306. 7E07F7 - 7E08F6 Map tiles explored for current area (1 tile = 1 bit).
  307.  
  308. 7E08F7 - 7E08F8 How many blocks X Layer 1 is scrolled?
  309. 7E08F9 - 7E08FA How many blocks Y Layer 1 is scrolled? (up = positive)
  310. 7E08FB - 7E08FC How many blocks X Layer 2 is scrolled?
  311. 7E08FD - 7E08FE How many blocks Y Layer 2 is scrolled? (up = positive)
  312. 7E08FF - 7E0900 How many blocks X Layer 1 was scrolled previously (Checked to know when to update blocks)
  313. 7E0901 - 7E0902 How many blocks Y Layer 1 was scrolled previously (Checked to know when to update blocks) (up = positive)
  314. 7E0903 - 7E0904 How many blocks X Layer 2 was scrolled previously (Checked to know when to update blocks)
  315. 7E0905 - 7E0906 How many blocks Y Layer 2 was scrolled previously (Checked to know when to update blocks) (up = positive)
  316. 7E0907 - 7E0908 How many blocks X BG1 is scrolled?
  317. 7E0909 - 7E090A How many blocks Y BG1 is scrolled? (up = positive)
  318. 7E090B - 7E090C How many blocks X BG2 is scrolled?
  319. 7E090D - 7E090E How many blocks Y BG2 is scrolled? (up = positive)
  320. 7E090F - 7E0910 Layer 1's subpixel X position.
  321. 7E0911 - 7E0912 Layer 1's X position in pixels
  322. 7E0913 - 7E0914 Layer 1's subpixel Y position
  323. 7E0915 - 7E0916 Layer 1's Y position in pixels
  324. 7E0917 - 7E0918 Layer 2's X scroll in room in pixels?
  325. 7E0919 - 7E091A Layer 2's Y scroll in room in pixels? (up = positive)
  326. 7E091B - 7E091C BG2 scroll percent to Layer 1 scroll (0 = 100, 1 = ?) (1 byte for X, 1 byte for Y)
  327. 7E091D - 7E091E BG1 X scroll offset due to room transitions (Translates between Layer 1 scroll and BG1 scroll)
  328. 7E091F - 7E0920 BG1 Y scroll offset due to room transitions (Translates between Layer 1 scroll and BG1 scroll)
  329. 7E0921 - 7E0922 BG2 X scroll offset due to room transitions (Translates between Layer 2 scroll and BG2 scroll)
  330. 7E0923 - 7E0924 BG2 Y scroll offset due to room transitions (Translates between Layer 2 scroll and BG2 scroll)
  331. 7E0925 - 7E0926 How many times the Layer 1 has scrolled? Stops at 40.
  332. 7E0927 - 7E0928 X offset of room entrance for room transition (multiple of 100, screens)
  333. 7E0929 - 7E092A Y offset of room entrance for room transition (multiple of 100, screens. Adjusted by 20 when moving up)
  334. 7E092B - 7E092C Movement speed for room transitions (subpixels per frame of room transition movement)
  335. 7E092D - 7E092E Movement speed for room transitions (pixels per frame of room transition movement)
  336.  
  337. 7E0931 - 7E0932 Flag. If negative, Layer 1 is done scrolling for room transition?
  338. 7E0933 - 7E0934 Some sort of variable limit of Layer 1'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)
  339.  
  340. 7E0939 - 7E093A Layer 1's X position in pixels, before checking legality. Seems to have different uses at other times.
  341.  
  342. 7E093F - 7E0940 Ceres status
  343. 0000: before Ridley escape
  344. 0001: during Ridley escape cutscene
  345. 0002: during escape sequence
  346. 8000: when elevator room rotates
  347.  
  348. 7E0943 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)
  349.  
  350. 7E0945 Timer, centiseconds (in decimal)
  351. 7E0946 Timer, seconds (in decimal)
  352. 7E0947 Timer, minutes (in decimal)
  353. 7E0948 Timer mode counter, or lower byte of X position
  354. 7E0949 Timer's X position (pixels)
  355. 7E094A Timer's Y position (1/100 pixels)
  356. 7E094B Timer's Y position (pixels)
  357.  
  358. 7E0950 - 7E0951 Area selected in the polygon map screen
  359. 7E0952 - 7E0953 Save slot selected, 0 - 2 (or menu item on save slot screen, 0 - 5)
  360.  
  361. 7E0956 - 7E0957 Size for VRAM update of BG1 Tilemap. Used by horizontal scrolling routine.
  362.  
  363. 7E095A - 7E095B Offset for VRAM update of BG1 Tilemap. Used by horizontal scrolling routine.
  364.  
  365. 7E0962 - 7E0963 Flag to update VRAM BG1 tilemap during NMI because of horizontal scroll
  366. 7E0964 - 7E0965 Size for VRAM update onto screen 1 BG1 tilemap. Used by vertical scrolling routine.
  367. 7E0966 - 7E0967 Size for VRAM update onto screen 2 (X >= 100) BG1 tilemap. Sometimes used by vertical scrolling routine.
  368. 7E0968 - 7E0969 Offset for VRAM, screen 1 BG1 tilemap. Used by vertical scrolling routine.
  369. 7E096A - 7E096B Offset for VRAM, screen 2 BG1 tilemap. Sometimes used by vertical scrolling routine.
  370. 7E096C - 7E096D Source address for top half of VRAM update, screen 2 BG1 tilemap, in bank 7E. Sometimes used by vertical scrolling routine.
  371. 7E096E - 7E096F Source address for bottom half of VRAM update, screen 2 BG1 tilemap, in bank 7E. Sometimes used by vertical scrolling routine.
  372. 7E0970 - 7E0971 Flag to update VRAM BG1 tilemap because of vertical scroll
  373. 7E0972 - 7E0973 Size for VRAM update. Used by elevator background loading routine (808D49)
  374. 7E0974 - 7E0975 Size for VRAM update. Sometimes used by elevator background loading (808D49)
  375. 7E0976 - 7E0977 Offset for VRAM. Used by elevator background loading (808D49)
  376. 7E0978 - 7E0979 Offset for VRAM. Sometimes used by elevator background loading (808D49)
  377. 7E097A - 7E097B Source address for VRAM, bank 7E. Sometimes used by elevator background loading (808D49)
  378. 7E097C - 7E097D Source address for VRAM, bank 7E. Sometimes used by elevator background load (808D49)
  379. 7E097E Unknown. Zeroed by elevator background loading routine (808D49)
  380.  
  381. 7E0980 - 7E0981 Size for VRAM update. Used by ???? routine (808E2B)
  382. 7E0982 - 7E0983 Size for VARM update. Sometimes used by ???? routine (808E2B)
  383. 7E0984 - 7E0985 Offset for VRAM. Used by ???? routine (808E2B)
  384. 7E0986 - 7E0987 Offset for VRAM. Sometimes used by ???? routine (808E2B)
  385. 7E0988 - 7E0989 Source address for VRAM, bank 7E. Used by ???? routine (808E2B)
  386. 7E098A - 7E098B Source address for VRAM, bank 7E. Sometimes used by ???? routine (808E2B)
  387. 7E098C Unknown. Zeroed by ???? routine (808E2B)
  388.  
  389. 7E0990 - 7E0991 Current X position of block(s) on screen Layer 1 or 2 to update?
  390. 7E0992 - 7E0993 Current Y position of block(s) on screen Layer 1 or 2 to update?
  391. 7E0994 - 7E0995 Current X position of block(s) in VRAM BG1 or 2 tilemap to update?
  392. 7E0996 - 7E0997 Current Y position of block(s) in VRAM BG1 or 2 tilemap to update?
  393. 7E0998 - 7E0999 Game state
  394. 00: reset/start
  395. 01: opening
  396. 02: game options menu
  397. 03: nothing (RTS)
  398. 04: save game menus
  399. 05: loading game map view
  400. 06: loading game data
  401. 07: setting game up after loading the game
  402. 08: main gameplay
  403. 09: hit a door block
  404. 0A: loading next room
  405. 0B: loading next room
  406. 0C: pausing, normal gameplay but darkening
  407. 0D: pausing, loading pause screen
  408. 0E: paused, loading pause screen
  409. 0F: paused, map and item screens
  410. 10: unpausing, loading normal gameplay
  411. 11: unpausing, loading normal gameplay
  412. 12: unpausing, normal gameplay but brightening
  413. 13: Samus ran out of health
  414. 14: Samus ran out of health, black out surroundings
  415. 15: Samus ran out of health, black out surroundings
  416. 16: Samus ran out of health, starting death animation
  417. 17: Samus ran out of health, flashing
  418. 18: Samus ran out of health, explosion
  419. 19: Samus ran out of health, black out (also cut to by timeup death)
  420. 1A: game over screen
  421. 1B: reserve tanks auto
  422. 1C: unused. Does JMP ($0DEA) ($0DEA is also unused)
  423. 1D: debug menu (end/continue)
  424. 1E: set up entirely new game with cutscenes
  425. 1F: set up new game
  426. 20: made it to Ceres elevator
  427. 21: blackout from Ceres
  428. 22: Ceres goes boom, Samus goes to Zebes
  429. 23: time up
  430. 24: whiting out from time up
  431. 25: Ceres goes boom with Samus
  432. 26: Samus escapes from Zebes
  433. 27: ending and credits
  434. 28: transition to demo
  435. 29: transition to demo
  436. 2A: playing demo
  437. 2B: transition from demo
  438. 2C: transition from demo
  439.  
  440. 7E099C - 7E099D Pointer to next frame of code in bank 82 for room transitions
  441. 7E099E - 7E099F Which option in the title screen menus Samus has selected
  442.  
  443. 7E09A2 - 7E09A3 Equipped items
  444. 7E09A4 - 7E09A5 Collected items
  445. 7E09A6 Equipped beams
  446. 7E09A7 Equipped Charge beam
  447. 7E09A8 Collected beams
  448. 7E09A9 Collected Charge beam
  449. 7E09AA - 7E09AB Up See ControllerInput.txt
  450. 7E09AC - 7E09AD Down
  451. 7E09AE - 7E09AF Left
  452. 7E09B0 - 7E09B1 Right
  453. 7E09B2 - 7E09B3 Shoot
  454. 7E09B4 - 7E09B5 Jump
  455. 7E09B6 - 7E09B7 Run
  456. 7E09B8 - 7E09B9 Item Cancel
  457. 7E09BA - 7E09BB Switch Item
  458. 7E09BC - 7E09BD Aim Down
  459. 7E09BE - 7E09BF Aim Up
  460. 7E09C0 - 7E09C1 1 = Auto Reserve tanks, 2 = manual
  461. 7E09C2 - 7E09C3 Samus' health
  462. 7E09C4 - 7E09C5 Samus' max health
  463. 7E09C6 - 7E09C7 Samus' missiles
  464. 7E09C8 - 7E09C9 Samus' max missiles
  465. 7E09CA - 7E09CB Samus' super missiles
  466. 7E09CC - 7E09CD Samus' max super missiles
  467. 7E09CE - 7E09CF Samus' power bombs
  468. 7E09D0 - 7E09D1 Samus' max power bombs
  469. 7E09D2 - 7E09D3 Currently selected status bar item
  470. 7E09D4 - 7E09D5 Samus' max reserve tanks
  471. 7E09D6 - 7E09D7 Samus' reserve tanks
  472. 7E09D8 - 7E09D9 Samus' reserve missiles. Only used by missile pickup routine(91DF80)
  473. 7E09DA - 7E09DB Game time, frames
  474. 7E09DC - 7E09DD Game time, seconds
  475. 7E09DE - 7E09DF Game time, minutes
  476. 7E09E0 - 7E09E1 Game time, hours
  477. 7E09E2 - 7E09E3 Japanese Text (1 = on)
  478. 7E09E4 - 7E09E5 Moonwalk flag (1 = on)
  479.  
  480. 7E09EA - 7E09EB Icon Cancel flag (1 = on)
  481.  
  482. 7E0A04 - 7E0A05 Item selected for auto-cancel
  483. 7E0A06 - 7E0A07 Mirror's Samus' health. Used to check to update health display
  484. 7E0A08 - 7E0A09 Mirror's Samus' missiles. Used to check to update missile count
  485. 7E0A0A - 7E0A0B Mirror's Samus' supers. Used to check to update super count
  486. 7E0A0C - 7E0A0D Mirror's Samus' power bombs. Used to check to update power bomb count
  487. 7E0A0E - 7E0A0F Mirror's 09D2. Used to check to update select display
  488. 7E0A10 - 7E0A11 Mirrors 0A1E. Used to check to update sound.
  489. 7E0A12 - 7E0A13 Mirror's Samus' health. Used to check to make hurt sound and flash.
  490.  
  491. 7E0A14 - 7E0A15 $8B from previous frame. Used when $0A42 = #$E6C9
  492. 7E0A16 - 7E0A17 $8F from previous frame. Used when $0A42 = #$E6C9
  493.  
  494. 7E0A1C - 7E0A1D Samus' current pose
  495. 7E0A1E X-Direction Samus is facing? 8 = right, 4 = left
  496. 7E0A1F Samus' movement type
  497. 7E0A20 - 7E0A21 Samus' pose from the previous frame?
  498. 7E0A22 X-Direction Samus was moving last frame?
  499. 7E0A23 Samus' movement type last frame?
  500. 7E0A24 - 7E0A25 Previous *different* pose?
  501. 7E0A26 X-Direction during the previous *different* pose?
  502. 7E0A27 Movement type during the previous *different* pose?
  503. 7E0A28 - 7E0A29 Potential new value for Samus' current pose. Controller-attempted move, taking Samus' previous pose, buttons, and momentum into account in that order.
  504. 7E0A2A - 7E0A2B Potential new value for Samus' current pose? Interruption via 90DDE9; enemy damage or bomb jump, also grapple connection.
  505. 7E0A2C - 7E0A2D Potential new value for Samus' current pose. Natural following of previous pose (generally used by transitional poses).
  506. 7E0A2E - 7E0A2F Momentum routine index? JSR index for EC16,X, bank 91 (Cause of Yapping Maw Super Jump crash. I think. (918304 --> 91EBEE --> ...)
  507. 7E0A30 - 7E0A31 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 91E16D (unknown use), 09 and 0A = grapple related (also death related?)
  508. 7E0A32 - 7E0A33 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
  509. 7E0A34 - 7E0A35 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.
  510. 7E0A36 - 7E0A37 Bitflag? Bits set if 9496AB SECs. Jump index for FE92.
  511. 7E0A38 - 7E0A39 $12 after 9496AB, $12 was -$0A3A
  512. 7E0A3A - 7E0A3B Difference between old vertical radius and new vertical radius
  513. 7E0A3C - 7E0A3D $12 after 9496AB, $12 was $0A3A
  514. 7E0A3E - 7E0A3F $12 after A0A8F0, $12 was $0A3A and $0B02 was 2
  515. 7E0A40 - 7E0A41 $12 after A0A8F0, $12 was $0A3A and $0B02 was 3
  516. 7E0A42 - 7E0A43 Pointer to code to run every frame, normally E695. Very high level. Handles Samus' size, controller input, elevator status, button transitions, palette, gravity, overlapping blocks, weapon selecting/firing/cooldown, and sound management(?).
  517. 7E0A44 - 7E0A45 Pointer to code to run every frame, normally E725. Seems to change for different game modes (7E0998). Very high level. Handles Samus' contact damage, movement, animation, hurt, block collision reaction, automatic transitions, pausing, and minimap
  518. 7E0A46 - 7E0A47 Bit 0002 enables horizontal slope detection
  519. 7E0A48 - 7E0A49 Something to do with Samus' palette.
  520. 7E0A4A - 7E0A4B Almost always 0. Occasionally used to mess with Samus' palette (flashing blue from Metroids, rainbow from acquiring hyper beam)
  521. 7E0A4C - 7E0A4D Samus' subunit health? Only affected by environmental damage (0A4E)
  522. 7E0A4E - 7E0A4F Deal damage to Samus (1/65536th)
  523. 7E0A50 Deal damage to Samus (1) Will be adjusted by suit divisors
  524.  
  525. 7E0A52 - 7E0A53 Something for Samus getting hurt (direction?)
  526. 7E0A54 - 7E0A55 Direction Samus moves when she gets hurt. 0 = left, 1 = right
  527. 7E0A56 - 7E0A57 Bomb jump direction?
  528. 7E0A58 - 7E0A59 Pointer to code to run (JMP from 90E94B) (Once every frame, depending on 7E0A44) Seems to affect Samus' movement type.
  529. 7E0A5A - 7E0A5B Pointer to code to run (JMP from 90E097) (Once every frame, depending on 7E0A44). Special instructions for things like when Ridley runs away from Ceres. (E0E6 = handle timer code)
  530. 7E0A5C - 7E0A5D Pointer to code to run (JMP from 90EB4E) (Once every frame?) Displays Samus and certain graphics (e.g. grapple)?
  531.  
  532. 7E0A60 - 7E0A61 Pointer to code to run (JMP from 90E90F) (Once every frame, depending on 7E0A42) Looks like it handles controller input for Samus' poses.
  533.  
  534. 7E0A64 - 7E0A65 Flag, Samus is currently grappled onto something
  535. 7E0A66 - 7E0A67 Divisor for Samus' horizontal speed(2^n). Can range from 2^0 to 2^4. Also slows down animations linearly, no limit.
  536. 7E0A68 - 7E0A69 Samus' super jump timer. Also used by crystal flash.
  537. 7E0A6A - 7E0A6B Samus' health warning is on
  538. 7E0A6C - 7E0A6D 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)
  539. 7E0A6E - 7E0A6F Samus' contact damage index
  540.  
  541. 7E0A72 Samus' visor palette timer
  542. 7E0A73 Samus' visor palette index
  543. 7E0A74 - 7E0A75 Samus' palette index or something?
  544. 7E0A76 - 7E0A77 Hyper Beam
  545. 7E0A78 - 7E0A79 Pause time, ala energy tank and x-ray scope.
  546.  
  547. 7E0A7A - 7E0A7B Pointer to routine for use when game is controlling controller input. Not sure what the routine is for.
  548. 7E0A7C - 7E0A7D Timer for how long to use current game-controlling input
  549. 7E0A7E - 7E0A7F 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).
  550.  
  551. 7E0A82 - 7E0A83 Angle from X-Ray to Samus.
  552. 7E0A84 - 7E0A85 Intro Samus controls. Calculated controls to use (put into 8B and 0A8C)
  553. 7E0A86 - 7E0A87 Intro Samus controls. Calculated controls to use (put into 8F and 0A8E)
  554. 7E0A88 - 7E0A89 Flag for if game is using game-input instead of player input (8000+ = game input)
  555. 7E0A8A - 7E0A8B How many frames of input have been saved to bank B8. Yeeeaah. Enabled with 808002, otherwise never used
  556. 7E0A8C - 7E0A8D Intro Samus controls. Mirror of 8B when game is controlling Samus.
  557. 7E0A8E - 7E0A8F Intro Samus controls. Mirror of 8F when game is controlling Samus.
  558. 7E0A90 - 7E0A91 Controller input (8B) from game from 2 frames ago. Used when $0A42 = #$E6C9
  559. 7E0A92 - 7E0A93 Controller input (8F) from game from 2 frames ago. Used when $0A42 = #$E6C9
  560. 7E0A94 - 7E0A95 Frames till next Samus Animation Frame
  561. 7E0A96 - 7E0A97 Samus Animation Frame
  562.  
  563. 7E0A9A - 7E0A9B Animation frame skip. 8000 means don't reset 0A96? (when changing poses?)
  564.  
  565. 7E0A9E - 7E0AA1 Cleared by jumping routine. Unknown uses.
  566. 7E0AA2 - 7E0AA3 Timer for Samus rising into position during crystal flash start
  567.  
  568. 7E0AA6 Flag; Arm cannon is open / opening (else arm cannon is closed / closing)
  569. 7E0AA7 Flag; Arm cannon is transitioning between open and closed
  570. 7E0AA8 - 7E0AA9 Frame number of Arm cannon graphic (0 = closed/none, 3 = fully open)
  571. 7E0AAA - 7E0AAB 1 if arm cannon selection has changed this frame, else 2
  572. 7E0AAC - 7E0AAD 0 if arm cannon graphic isn't shown, 1 if drawn in front of Samus, 2 if drawn behind(?) Samus
  573. 7E0AAE - 7E0AAF Index value for Samus' echoes (00, 02)
  574. 7E0AAF Index value to find routine for Samus' echoes? Only when she ends a Super Jump?
  575. 7E0AB0 - 7E0AB1 X position of echo 0 (pixels)
  576. 7E0AB2 - 7E0AB3 X position of echo 2 (pixels)
  577.  
  578. 7E0AB8 - 7E0AB9 Y position of echo 0 (pixels)
  579. 7E0ABA - 7E0ABB Y position of echo 2 (pixels)
  580.  
  581. 7E0AC0 - 7E0AC1 Horizontal speed for echo 0
  582. 7E0AC2 - 7E0AC3 Horizontal speed for echo 2
  583.  
  584. 7E0AC8 - 7E0AC9 Which tileset for Samus' top half to save to VRAM? Written to, but virtually never used.
  585. 7E0ACA - 7E0ACB Which tileset for Samus' bottom half to save to VRAM? Written to, but virtually never used.
  586. 7E0ACC - 7E0ACD What kind of timer to use for 0A68? 2*this = JSL index for 91D72D.
  587. 7E0ACE - 7E0ACF Some unknown related to running (0 if running with speed boots)
  588. 7E0AD0 - 7E0AD1 Some unknown related to running (1 if running with speed boots)
  589.  
  590. ;Atmospheric graphics are footsteps, water splash, air bubbles, etc.
  591. 7E0AD4 - 7E0ADB Atmospheric graphics animation timers (1-4). 8000+ means 'don't run related code during timer'
  592. 7E0ADC - 7E0AE3 Atmospheric graphics X position (1-4)
  593. 7E0AE4 - 7E0AEB Atmospheric graphics Y position (1-4)
  594. 7E0AEC - 7E0AF3 Atmospheric graphics type/animation frame number (1-4)
  595. ;01XX = water splash from steps, 03XX = splash in deep water, 04XX = smoke moving right, 05XX = bubbles, 06XX = ? 07XX = smoke from speed running
  596.  
  597. 7E0AF6 - 7E0AF7 Samus' X position in pixels
  598. 7E0AF8 - 7E0AF9 Samus' sub-pixel X position
  599. 7E0AFA - 7E0AFB Samus' Y position in pixels
  600. 7E0AFC - 7E0AFD Samus' sub-pixel Y position
  601. 7E0AFE - 7E0AFF Samus' X radius
  602. 7E0B00 - 7E0B01 Samus' Y radius
  603. 7E0B02 - 7E0B03 What kind of collision detection to use for Samus. 03 = below, 02 = above, 01 = right, 00 = left
  604. 7E0B04 - 7E0B05 Samus' X position on screen (0AF6 - 0911)
  605. 7E0B06 - 7E0B07 Samus' Y position on screen (0AFA - 0915)
  606.  
  607. 7E0B0A - 7E0B0B 'Ideal' placement for $0911.
  608. 7E0B0C - 7E0B0D Unused? Never seems to be written to except by ram clearing routines
  609. 7E0B0E - 7E0B0F 'Ideal' placement for $0915.
  610. 7E0B10 - 7E0B11 Samus' previous X position in pixels. (Used for scrolling only?)
  611. 7E0B12 - 7E0B13 Samus' previous sub-pixel X position. (Used for scrolling only?)
  612. 7E0B14 - 7E0B15 Samus' previous Y position in pixels. (Used for scrolling only?)
  613. 7E0B16 - 7E0B17 Samus' previous sub-pixel Y position. (Used for scrolling only?)
  614. 7E0B18 - 7E0B19 Frames of yellow from firing charge beam left
  615. 7E0B1A - 7E0B1B STZ'd when Samus lands, hits her head on the ceiling, or she hits a block while shinesparking. Never seems to be read
  616. 7E0B1C - 7E0B1D Unused? Never seems to be written to except by ram clearing routines
  617. 7E0B1E - 7E0B1F Unused? Never seems to be written to except by ram clearing routines
  618. 7E0B20 - 7E0B21 Used for bouncing as a ball when you land. Set to 0601 on the first bounce, and 0602 on the second bounce. STZ'd when changing poses or direction
  619. 7E0B22 - 7E0B23 Flag. Samus is falling after crashing into something from a shinespark
  620. 7E0B24 - 7E0B25 Temp value, used during Samus' graphics calculations. Shareable.
  621. 7E0B26 - 7E0B27 Temp value, used during Samus' graphics calculations. Shareable (even with the above byte).
  622.  
  623. 7E0B2C - 7E0B2D Samus' vertical speed (1/65536ths pixel/frame). Unsigned
  624. 7E0B2E - 7E0B2F Samus' vertical speed (pixels/frame). Unsigned
  625.  
  626. 7E0B32 - 7E0B33 Vertical acceleration in sub-pixels. (Vertical rate of acceleration for super jumps)
  627. 7E0B34 - 7E0B35 Vertical acceleration in pixels. Not recommended for use. (Vertical rate of acceleration for super jumps)
  628. 7E0B36 - 7E0B37 00 = Samus is on the ground (?) 01 = Samus is moving up, 02 = Samus is moving down
  629. 7E0B38 - 7E0B39 Cleared when Samus lands after jumping or falling. If Samus is morphed and bounces, it only clears on the last bounce.
  630. 7E0B3A - 7E0B3B Unused? Never seems written to except by ram clearing routines
  631. 7E0B3C - 7E0B3D Flag to check Samus' speed counter. Reason why temporary blue suit cannot become permanent.
  632. 7E0B3E - 7E0B3F Upper byte is Samus' 'speed' counter. Lower byte is used for some weird animation counter thing for incrementing upper byte.
  633. 7E0B40 - 7E0B41 Flag, Samus' echoes sound is playing.
  634. 7E0B42 - 7E0B43 Samus' horizontal speed forward. (pixels/frame)
  635. 7E0B44 - 7E0B45 Samus' horizontal speed forward (1/65536ths pixel/frame)
  636. 7E0B46 - 7E0B47 Samus' horizontal 'momentum' forward (pixels/frame)
  637. 7E0B48 - 7E0B49 Samus' horizontal 'momentum' forward (1/65536ths pixel/frame)
  638. 7E0B4A - 7E0B4B Something to do with momentum and speed. Cause of mockball. (0 = increasing momentum, !0(always 1?) = decreasing momentum)
  639. 7E0B4C 1/256 Multiplier for momentum subtraction (0 = normal momentum subtraction)
  640.  
  641. 7E0B56 - 7E0B57 Moves Samus this distance horizontally, in subpixels.
  642. 7E0B58 - 7E0B59 Moves Samus this distance horizontally, in pixels.
  643. 7E0B5A - 7E0B5B Moves Samus this distance vertically, in subpixels.
  644. 7E0B5C - 7E0B5D Moves Samus this distance vertically, in pixels.
  645. 7E0B5E - 7E0B5F Samus is currently firing in this direction (will fire beams even if you aren't pressing fire)
  646. 7E0B60 - 7E0B61 Used for the SBA attacks. Cleared by Spazer. Set to 0004 by Wave, but unused. Used as a rotation speed with Ice and Plasma
  647. 7E0B62 - 7E0B63 palette index for Samus' charge.
  648. 7E0B64 - 7E0B6D Projectile X position in pixels
  649. 7E0B6E - 7E0B77 Bomb X position in pixels
  650. 7E0B78 - 7E0B81 Projectile Y position in pixels
  651. 7E0B82 - 7E0B8B Bomb Y position in pixels
  652. 7E0B8C - 7E0B95 Projectile X position in sub-pixels
  653. 7E0B96 - 7E0B9F Bomb X position in sub-pixels
  654. 7E0BA0 - 7E0BA9 Projectile Y position in sub-pixels
  655. 7E0BAA - 7E0BB3 Bomb Y position in sub-pixels
  656. 7E0BB4 - 7E0BBD Projectile X radius (radius or width?). Pixels
  657. 7E0BBE - 7E0BC7 Bomb X radius, pixels
  658. 7E0BC8 - 7E0BD1 Projectile Y radius (radius or height?). Pixels
  659. 7E0BD2 - 7E0BDB Bomb Y radius, pixels
  660. 7E0BDC - 7E0BE5 Projectile X speed (1/256th pixel/frame?).
  661. 7E0BE6 - 7E0BEF Bomb X speed
  662. 7E0BF0 - 7E0BF9 Projectile Y speed
  663. 7E0BFA - 7E0C03 Bomb Y speed
  664. 7E0C04 - 7E0C0D 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)
  665. 7E0C0E - 7E0C17 Bomb accelerating direction. Cleared on bomb drop, but pretty much unused
  666. 7E0C18 - 7E0C21 Projectile type array.
  667. 0001 = wave
  668. 0002 = ice
  669. 0004 = spazer
  670. 0008 = plasma
  671. 0010 = charged
  672. 0020 = end of spazer SBA
  673. 0100 = missile
  674. 0200 = super missile
  675. 0700 = dead beam
  676. 0800 = dead (super) missile
  677. 1000 = charge beam
  678. 8000 = live
  679. 7E0C22 - 7E0C2B Bomb type array. 8000+ = live, X3XX = power bomb, X5XX = bomb
  680. 7E0C2C - 7E0C35 Projectile damage array.
  681. 7E0C36 - 7E0C3F Bomb damage array
  682. 7E0C40 - 7E0C53 Projectile PLM-like instruction array? (projectiles, then bombs)
  683. 7E0C54 - 7E0C67 Projectile PLM-like delay array?
  684. 7E0C68 - 7E0C69 Pointer to code for projectile #1
  685. 7E0C6A - 7E0C71 Pointer to code for projectiles #2-5
  686. 7E0C72 - 7E0C73 Pointer to code for bomb #1
  687. 7E0C74 - 7E0C7B Pointer to code for bombs #2-5
  688.  
  689. 7E0C7C - 7E0C85 Links super missile halves together (top byte is a flag, linked if set. Bottom byte tells linked index)
  690. 7E0C86 - 7E0C8F Bomb timer array
  691. 7E0C90 - 7E0C9B Timer for projectile trails
  692.  
  693. 7E0CB8 - 7E0CD7 Projectile Sprite data pointer
  694.  
  695. 7E0CCC - 7E0CCD Cooldown counter
  696. 7E0CCE - 7E0CCF Projectile counter?
  697. 7E0CD0 - 7E0CD1 Current charge for Samus' beams
  698. 7E0CD2 - 7E0CD3 Bomb counter
  699.  
  700. 7E0CD6 - 7E0CD7 Charge beam animation frame (main spark on cannon)
  701. 7E0CD8 - 7E0CD9 Charge beam animation frame (3 outer sparks)
  702. 7E0CDA - 7E0CDB Charge beam animation frame (other 3 outer sparks)
  703. 7E0CDC - 7E0CDD Charge beam animation delay (main spark on cannon)
  704. 7E0CDE - 7E0CDF Charge beam animation delay (3 outer sparks)
  705. 7E0CE0 - 7E0CE1 Charge beam animation delay (other 3 outer sparks)
  706. 7E0CE2 - 7E0CE3 X position of powerbomb explosion
  707. 7E0CE4 - 7E0CE5 Y position of powerbomb explosion
  708. 7E0CE6 - 7E0CE7 0100 + Screen X position of powerbomb explosion
  709. 7E0CE8 - 7E0CE9 01FF - Screen Y position of powerbomb explosion
  710. 7E0CEA - 7E0CEB Power bomb 'radius'
  711. 7E0CEC - 7E0CED Power bomb pre-explosion flash radius
  712. 7E0CEE - 7E0CEF Special powerbomb timer
  713. 7E0CF0 - 7E0CF1 Power bomb radius speed (888DE7 is radius acceleration)
  714. 7E0CF2 - 7E0CF3 Some kind of pointer. Seemed to change with the PowerBomb flash palette.
  715. 7E0CF4 - 7E0CF5 Flags. First bit set if Samus is in liquid, last bit cleared when grapple beam hits grapple block.
  716. 7E0CF6 - 7E0CF7 Unknown, set to A when grapple is fired
  717. 7E0CF8 - 7E0CF9 Force slow/stupid-scrolling? Screen scrolls at 3 pixels per frame. Enabled during grappling, disabled when grapple beam is newly shot.
  718. 7E0CFA - 7E0CFB Something for grapple beam graphics (Angle from grapple beam to Samus)
  719. 7E0CFC - 7E0CFD Same as above; angle from grapple beam to Samus). This is write-only memory. >_>
  720. 7E0CFE - 7E0CFF Cleared when starting grapple beam. Length of grapple beam? Stops at #$0080, I think
  721. 7E0D00 - 7E0D01 Set to C when starting grapple beam. Speed of grapple beam? Added to 0CFE every frame
  722. 7E0D02 - 7E0D03 X offset of grapple point relative to Samus
  723. 7E0D04 - 7E0D05 Y offset of grapple point relative to Samus
  724. 7E0D06 - 7E0D07 Sub-pixel X position of Grapple point?
  725. 7E0D08 - 7E0D09 X position of Grapple point
  726. 7E0D0A - 7E0D0B Sub-pixel Y position of Grapple point?
  727. 7E0D0C - 7E0D0D Y position of Grapple point
  728. 7E0D0E - 7E0D0F 32-bit running sum of X speed * 64
  729. 7E0D10 - 7E0D11 32-bit running sum of X speed * 64
  730. 7E0D12 - 7E0D13 32-bit running sum of Y speed * 64
  731. 7E0D14 - 7E0D15 32-bit running sum of Y speed * 64
  732. 7E0D16 - 7E0D17 X position of start of grapple beam
  733. 7E0D18 - 7E0D19 Y position of start of grapple beam
  734. 7E0D1A - 7E0D1B X position of start of grapple beam previous frame
  735. 7E0D1C - 7E0D1D Y position of start of grapple beam previous frame
  736. 7E0D1E - 7E0D1F Unknown. Cleared when starting grapple beam
  737. 7E0D20 - 7E0D21 Unknown. Cleared when starting grapple beam
  738. 7E0D22 - 7E0D23 X Speed of grapple point
  739. 7E0D24 - 7E0D25 Y Speed of grapple point
  740. 7E0D26 - 7E0D27 Unknown. Cleared when starting grapple beam
  741. 7E0D28 - 7E0D29 Unknown. Cleared when starting grapple beam
  742. 7E0D2A - 7E0D2B Unknown. Cleared when starting grapple beam
  743. 7E0D2C - 7E0D2D Unknown. Cleared when starting grapple beam
  744. 7E0D2E - 7E0D2F Unknown. Cleared when starting grapple beam
  745. 7E0D30 - 7E0D31 Unknown. Cleared when starting grapple beam
  746. 7E0D32 - 7E0D33 Pointer to code for grapple beam. Usually C4F0 (start beam, not active), C703 is firing beam (not hitting anything), C856 is force-cancel beam?
  747. 7E0D34 - 7E0D35 Direction to fire (grapple beam specific?)
  748. 7E0D36 - 7E0D37 Unknown. Cleared when starting grapple beam
  749. 7E0D38 - 7E0D39 Unknown. Cleared when starting grapple beam
  750. 7E0D3A - 7E0D3B Unknown. Set to 2 when starting grapple beam
  751. 7E0D3C - 7E0D3D Unknown. Cleared when starting grapple beam
  752. 7E0D3E - 7E0D3F Grapple point animation timer. Set to 5 when starting grapple beam
  753. 7E0D40 - 7E0D41 Grapple point animation pointer. Set to 8200 when starting grapple beam
  754. 7E0D42 - 7E0D61 Grapple segment animation instruction timers. Similar to PLM setup
  755. 7E0D62 - 7E0D81 Grapple segment animation instruction pointers. Similar to PLM setup
  756. 7E0D82 - 7E0D83 Variable, cleared when starting grapple beam. 32-bit Signed X speed * 64 during grapple collision detection. Used also as a temporary JMP target
  757. 7E0D84 - 7E0D85 Variable, cleared when starting grapple beam. 32-bit Signed X speed * 64
  758. 7E0D86 - 7E0D87 Variable, cleared when starting grapple beam. 32-bit Signed Y speed * 64
  759. 7E0D88 - 7E0D89 Variable, cleared when starting grapple beam. 32-bit Signed Y speed * 64
  760. 7E0D8A - 7E0D8B Variable, cleared when starting grapple beam. Counter during grapple collision detection
  761. 7E0D8C - 7E0D8D Unknown. Cleared when starting grapple beam
  762. 7E0D8E - 7E0D8F Unknown. Cleared when starting grapple beam
  763. 7E0D90 - 7E0D91 Unknown. Cleared when starting grapple beam. X Position of grapple start, calculated from grapple point and grapple length (94A957)
  764. 7E0D92 - 7E0D93 Y position of grapple start, calculated from grapple point and grapple length
  765. 7E0D94 - 7E0D95 Grapple start's block X position, calculated from above
  766. 7E0D96 - 7E0D97 Grapple start's block X position, calculated from above
  767.  
  768. 7E0DA2 - 7E0DA3 Absolute distance Samus moved last frame horizontally + 1, pixels.
  769. 7E0DA4 - 7E0DA5 Absolute distance Samus moved last frame horizontally, subpixels.
  770. 7E0DA6 - 7E0DA7 Absolute distance Samus moved last frame vertically + 1, pixels.
  771. 7E0DA8 - 7E0DA9 Absolute distance Samus moved last frame vertically, subpixels.
  772. 7E0DAA - 7E0DAB How far Samus moved left, in pixels (negative)
  773. 7E0DAC - 7E0DAD How far Samus moved left, in subpixels (negative)
  774. 7E0DAE - 7E0DAF How far Samus moved right, in pixels
  775. 7E0DB0 - 7E0DB1 How far Samus moved right, in subpixels
  776. 7E0DB2 - 7E0DB3 How far Samus moved up, in pixels (negative)
  777. 7E0DB4 - 7E0DB5 How far Samus moved up, in subpixels (negative)
  778. 7E0DB6 - 7E0DB7 How far Samus moved down, in pixels
  779. 7E0DB8 - 7E0DB9 How far Samus moved down, in subpixels
  780.  
  781. 7E0DBA - 7E0DBB Flag Samus' position was adjusted by a slope
  782. 7E0DBC - 7E0DBD Mirror of distance to move Samus horizontally, in pixels?
  783. 7E0DBE - 7E0DBF Mirror of distance to move Samus horizontally, in subpixels?
  784. 7E0DC0 - 7E0DC1 Unknown. Cleared when starting grapple beam
  785. 7E0DC2 - 7E0DC3 Mirror of 0CD0?
  786. 7E0DC4 - 7E0DC5 Current block index (nth block of the room)
  787. 7E0DC6 - 7E0DC7 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
  788.  
  789. 7E0DCE - 7E0DCF Set if Samus collides with a solid enemy(Only read as a flag, written as a direction?)
  790. 7E0DD0 - 7E0DD1 0000 = Samus did not collide with anything. 0001 = Collision with block. FFFF = Collision with enemy?
  791.  
  792. 7E0DD4 - 7E0DD5 Current block's X position? Used for calculating 0DC4. Used as Samus' lower boundary in 9487F4. Used as Slope BTS * 4 in horizontal slope collision routine.
  793. 7E0DD6 - 7E0DD7 Slope BTS * #$10, according to 9487F4. Used as Slope X/Y flip in horizontal slope collision routine.
  794.  
  795. 7E0DDE - 7E0DDF Current projectile index? (FFFE for grapple)
  796. 7E0DE0 - 7E0DE1 Only debug use, I think. 07 = uber invincibility.
  797. 7E0DE2 - 7E0DE3 Which screen Samus is on during loading
  798.  
  799. 7E0DEA - 7E0DEB Which item to decrement during crystal flash. 0 for missiles, 1 for super missiles, 2 for power bombs
  800. 7E0DEC - 7E0DED Crystal flash timer for decrementing (super) missiles/power bombs (from 10 to 0). Vertical acceleration during super jumps (sub-pixels). Draygon-escape button counter
  801. 7E0DEE - 7E0DEF Crystal flash related. Vertical acceleration during super jumps (pixels)
  802. 7E0DF0 - 7E0DF1 Crystal flash related, set to Samus Y position
  803. 7E0DF2 - 7E0DF3 Crystal flash related
  804. 7E0DF4 - 7E0DF5 Debug only. Some sort of flag for messing with graphics, only used in 828AB0
  805.  
  806. 7E0DF8 - 7E0DF9 Unknown. STZ at start, read when Samus changes to a running pose, otherwise unused.
  807. 7E0DFA - 7E0DFB Unknown. Something to do with beams or sound?
  808.  
  809. 7E0DFE - 7E0DFF Controller input (8B) from game from previous frame. (any other use?)
  810. 7E0E00 - 7E0E01 Controller input (8F) from game from previous frame. (any other use?)
  811. 7E0E02 - 7E0E03 Samus' lower boundary's Y position
  812.  
  813. 7E0E12 - 7E0E13 Only enabled with debug. Forgot it's exact use, skips certain routines.
  814.  
  815. 7E0E16 - 7E0E17 Flag, 80 = elevator room transition. 0001 = Standing on elevator
  816. 7E0E18 - 7E0E19 Used by elevators. Direction to move in (00 = Sitting, 01 = leaving the room, 02 = once when entering, 03 = entering the room)
  817. 7E0E1A - 7E0E1B Triggers more energy drops if Samus is low on health. On if drop at health below 30, off if health at least 50.
  818. 7E0E1C - 7E0E1D If #$FFFF, ignored. Else, used as a pointer to an enemy for setting 0FA2,X to #$0040.
  819.  
  820. 7E0E2E - 7E0E2F Flag for when enemies are hit; display hit flash if damaged.
  821.  
  822. 7E0E32 - 7E0E33 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.
  823.  
  824. 7E0E36 - 7E0E37 Whole number value from sin/cos multiplier function
  825. 7E0E38 - 7E0E39 Fractional value from sin/cos multiplier function
  826.  
  827. 7E0E40 - 7E0E41 Damage multiplier for enemies
  828.  
  829. 7E0E44 - 7E0E45 Not sure exactly. Used to determine enemy hurt flashing frames
  830.  
  831. 7E0E4C - 7E0E4D First free enemy index in the room + 1((n+1)*40). If 0, disable enemy processing (powerbombs still kill)
  832. 7E0E4E - 7E0E4F Number of enemies in the room
  833. 7E0E50 - 7E0E51 Number of enemies killed in the current room.
  834. 7E0E52 - 7E0E53 Number of enemies needed to clear current room.
  835. 7E0E54 - 7E0E55 Current Enemy Index
  836.  
  837. 7E0E58 - 7E0E59 Pointer to start of current enemy data ($0F78,X)
  838.  
  839. 7E0F78 - 7E1777 Enemy data
  840. 7E0F78 - 7E0FB7 Enemy 00 data
  841. 7E0FB8 - 7E0FF7 Enemy 01 data
  842. 7E0FF8 - 7E1037 Enemy 02 data
  843. 7E1038 - 7E1077 Enemy 03 data
  844. 7E1078 - 7E10B7 Enemy 04 data
  845. 7E10B8 - 7E10F7 Enemy 05 data
  846. 7E10F8 - 7E1137 Enemy 06 data
  847. 7E1138 - 7E1177 Enemy 07 data
  848. 7E1178 - 7E11B7 Enemy 08 data
  849. 7E11B8 - 7E11F7 Enemy 09 data
  850. 7E11F8 - 7E1237 Enemy 0A data
  851. 7E1238 - 7E1277 Enemy 0B data
  852. 7E1278 - 7E12B7 Enemy 0C data
  853. 7E12B8 - 7E12F7 Enemy 0D data
  854. 7E12F8 - 7E1337 Enemy 0E data
  855. 7E1338 - 7E1377 Enemy 0F data
  856. 7E1378 - 7E13B7 Enemy 10 data
  857. 7E13B8 - 7E13F7 Enemy 11 data
  858. 7E13F8 - 7E1437 Enemy 12 data
  859. 7E1438 - 7E1477 Enemy 13 data
  860. 7E1478 - 7E14B7 Enemy 14 data
  861. 7E14B8 - 7E14F7 Enemy 15 data
  862. 7E14F8 - 7E1537 Enemy 16 data
  863. 7E1538 - 7E1577 Enemy 17 data
  864. 7E1578 - 7E15B7 Enemy 18 data
  865. 7E15B8 - 7E15F7 Enemy 19 data
  866. 7E15F8 - 7E1637 Enemy 1A data
  867. 7E1638 - 7E1677 Enemy 1B data
  868. 7E1678 - 7E16B7 Enemy 1C data
  869. 7E16B8 - 7E16F7 Enemy 1D data
  870. 7E16F8 - 7E1737 Enemy 1E data
  871. 7E1738 - 7E1777 Enemy 1F data
  872.  
  873. 7E1778 - 7E1779 Brightness loop counter for firefly rooms. 6 frames per index increment.
  874. 7E177A - 7E177B Brightness loop index for firefly rooms. Indexes 88B058,X
  875.  
  876. 7E177E - 7E177F Brightness base index for firefly rooms. Indexes 88B070,X. Intended as increments of 2.
  877.  
  878. 7E1784 - 7E1787 Used as a long pointer to enemy AI, ran when the enemy is placed in the room. Top byte is $0FA7,X, probably unused.
  879.  
  880. 7E179C - 7E179D Special fight number used for bosses.
  881.  
  882. 7E17A4 - 7E17A5 'Stack' pointer for 7E17AC
  883. 7E17A6 - 7E17A7 'Stack' pointer for 7E17EC
  884. 7E17A8 - 7E17A9 Current index for 17AC,X
  885. 7E17AA - 7E17AB Current index for 17EC,X
  886. 7E17AC - 7E17EB List of enemy indexes of enemies that are to be run this frame. Ends at a #$FFFF
  887. 7E17EC - 7E182B List of enemy indexes of enemies that might interact with Samus. Ends at a #$FFFF
  888. 7E182C - 7E1833 Table for an enemy index value (this table indexed by 7E0B02). Unknown use.
  889. 7E1834 - 7E183B Table for distance between Samus and above enemy? Same index.
  890. 7E183C - 7E183D Process all enemies regardless of on-screen or not.
  891. 7E183E - 7E183F Type of screen-shaking?
  892. 7E1840 - 7E1841 Duration of screen-shaking?
  893. 7E1842 - 7E1843 Frame counter (*Every* frame)
  894.  
  895. 7E184A - 7E184B Mirror of Samus' X position (pixels)
  896. 7E184C - 7E184D Mirror of Samus' X position (subpixels)
  897. 7E184E - 7E184F Mirror of enemy's X position (pixels)
  898. 7E1850 - 7E1851 Mirror of enemy's X position (subpixels)
  899. 7E1852 - 7E1853 Mirror of Samus' target Y(?) position (pixels)
  900. 7E1854 - 7E1855 Mirror of Samus' target Y(?) position (subpixels)
  901. 7E1856 - 7E1857 Mirror of Samus' Y position (pixels)
  902. 7E1858 - 7E1859 Mirror of Samus' Y position (subpixels)
  903. 7E185A - 7E185B Unknown. Type of collision between Samus and solid enemy?
  904. 7E185C - 7E185D Debug mode routine index. Used for JSR ($981F,X) in bank B4. #$00 - #$10, above will crash. Upper byte ignored.
  905. 7E185E - 7E185F Debug mode... for skipping enemy processing, I think. Still die to PBs.
  906.  
  907. 7E186E - 7E186F Enemy graphic pointer + 2 when detecting collisions between enemies and projectiles or Samus
  908. 7E1870 - 7E1871 Enemy left collision border for enemy/projectile collisions
  909. 7E1872 - 7E1873 Enemy bottom collision border for enemy/projectile collisions
  910. 7E1874 - 7E1875 Enemy right collision border for enemy/projectile collisions
  911. 7E1876 - 7E1877 Enemy top collision border for enemy/projectile collisions
  912. 7E1878 - 7E1879 Enemy; pointer at (graphic pointer + 8) + 2
  913. 7E187A - 7E187B 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.
  914. 7E187C - 7E187D Y position of current enemy graphic during enemy collision detection with projectiles or Samus.
  915. 7E187E - 7E187F Right border of Samus when enemy is checking for collisions with Samus
  916. 7E1880 - 7E1881 Left border of Samus when enemy is checking for collisions with Samus
  917. 7E1882 - 7E1883 Bottom border of Samus when enemy is checking for collisions with Samus
  918. 7E1884 - 7E1885 Top border of Samus when enemy is checking for collisions with Samus
  919.  
  920. 7E189A - 7E189B Samus' target X position for next frame, in pixels
  921. 7E189C - 7E189D Samus' target X position for next frame, in subpixels
  922. 7E189E - 7E189F Samus' target Y position for next frame, in pixels
  923. 7E18A0 - 7E18A1 Samus' target Y position for next frame, in subpixels
  924. 7E18A2 - 7E18A3 Mirror of Samus' X radius (7E0AFE)
  925. 7E18A4 - 7E18A5 Mirror of Samus' Y radius (7E0B00)
  926. 7E18A6 - 7E18A7 Various use collision detection index (Samus/Enemy is an enemy index, Enemy/Projectile is a projectile index)
  927. 7E18A8 - 7E18A9 Samus' invincibility timer when hurt
  928. 7E18AA - 7E18AB Samus' hurt-timer (pushed back, unable to move)
  929.  
  930. 7E18B0 - 7E18B1 HDMA flag. $8000 = HDMA
  931. 7E18B2 - 7E18B3 Index value for RAM placement of HDMA (max of $0A)
  932. 7E18B4 - 7E18BF List of DMA things? This entry is the value to write to 420b to start a DMA (top byte always 00)
  933. 7E18C0 - 7E18CB Index for channel to use for DMA effect (00, 10, 20, 30, etc). High byte is bank to use for 18CC.
  934. 7E18CC - 7E18D7 PLM instruction-esque pointer for above list.
  935. 7E18D8 - 7E18E3 Pointer to HDMA table for HDMA effect. (Probably just a general DMA source; put into 43X2)
  936. 7E18E4 - 7E18EF Delay to go to PLM instruction-esque pointer. Also, the 2-byte argument for a delay goes into 18D8.
  937. 7E18F0 - 7E18FB First 2 bytes of a pointer. Pre PLM-esque code to run every frame.
  938. 7E18FC - 7E1907 Seperated by bytes - low byte is a bank byte for 18F0 pointer. High byte is unknown, unused?
  939.  
  940. 7E195E - 7E195F Actual FX3 height
  941.  
  942. 7E1962 - 7E1963 Something to do with FX3 height. Referred to if 195E is negative. Used by lava?
  943. 7E1964 - 7E1965 Pointer to something for VRAM in bank 8A. I'm guessing FX3 tilemap.
  944. 7E1966 - 7E1967 Direct pointer to room's FX1 entry
  945. 7E1968 - 7E1969 Index into room's FX1 entry (added to 07CD to get 1966)
  946. 7E196A - 7E196B palette 'animation', LSRed out immediately, then animated tiles, LSRed out again.
  947. 7E196C - 7E196D FX3 something. Need to look into. (Causes rumbling)
  948. 7E196E - 7E196F FX3 type (none, lava, acid, water, spores, rain, fog...) JSR index for 8067,X, in bank 90.
  949.  
  950. 7E1972 - 7E1973 FX3 height variance?
  951.  
  952. 7E1978 - 7E1979 FX3 height (average?) (measured from top of room down)
  953. 7E197A - 7E197B FX3 height to go to
  954. 7E197C - 7E197D FX3 height adjustment speed (signed)
  955. 7E197E - 7E197F 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)
  956. 7E1980 - 7E1981 FX3, frames to wait till beginning movement. (0 means 10000)
  957. 7E1982 - 7E1983 FX3 'A'.
  958. 7E1984 - 7E1985 FX3 'B'.
  959.  
  960. 7E198D - 7E198E Flag, - enables e/r projectiles
  961.  
  962. 7E1991 - 7E1992 Current e/r projectile
  963.  
  964. 7E1995 - 7E1996 Unknown, something for projectiles?
  965. 7E1997 - 7E19BA Header / ID for projectiles ($12 / 18 max)
  966. 7E19BB - 7E19DE Add low byte to sprite character indices, set palette to high byte
  967. 7E19DF - 7E1A02 Table for something for enemy/room projectiles?
  968. 7E19F7?- 7E1A48? Used for tile animations during new game intro text.
  969. 7E1A03 - 7E1A26 Run-This-First-Every-Frame for enemy/room projectiles
  970. 7E1A27 - 7E1A4A Table for something for enemy/room projectiles?
  971. 7E1A4B - 7E1A6E X position of projectile, in pixels
  972. 7E1A6F - 7E1A92 X subpixel position? (guessing)
  973. 7E1A93 - 7E1AB6 Y position of projectile, in pixels
  974. 7E1AB7 - 7E1ADA Y subpixel position? (guessing)
  975. 7E1ADB - 7E1AFE Some sort of speed value?
  976. 7E1AFF - 7E1B22 Table for something for enemy/room projectiles? (Custom?)
  977. 7E1B23 - 7E1B46 Table for something for enemy/room projectiles? (Used by item drops as countdown to disappear)
  978.  
  979. 7E1B3D - 7E1B4A Control icons during controller setting menu screen (Fire, Jump, Run, Select, Cancel, AimUp, AimDown. 0-6 = X, A, B, Select, Y, R, L)
  980.  
  981. 7E1B47 - 7E1B6A Instruction address / Graphic AI for e/r projectiles
  982. 7E1B6B - 7E1B8E 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) (7E1B7D - MB's intro hit counter?)
  983. 7E1B8F - 7E1BB2 Frames Delay for 1B47
  984. 7E1BA1 - 7E1BA2 Flag to play click in the intro text
  985. 7E1BB3 - 7E1BD6 X and Y radii. If either one is 0, intangible.
  986. 7E1BD7 - 7E1BFA Often bits 0-11 = damage value, bit 12 = invisibility, bit 13 = disable collisions with Samus' projectiles, bit 14 = don't die on contact, bit 15 = detect collisions with projectiles (all not really tested)
  987. 7E1BFB - 7E1C1E Table for something for enemy/room projectiles? What kind of projectile hit this?
  988. 7E1C1F - 7E1C20 Current message box type
  989.  
  990. 7E1C23 - 7E1C24 PLM flag. Set to negative to enable PLMs.
  991.  
  992. 7E1C27 - 7E1C28 Current PLM's Index. See PLM_Details.txt for PLM data
  993. 7E1C29 - 7E1C2A Calculated PLM's X position
  994. 7E1C2B - 7E1C2C Calculated PLM's Y position
  995. 7E1C2D - 7E1C2E Current PLM's Index (used during unpausing graphics refresh)
  996. 7E1C2F - 7E1C36 Pointer to graphics for special PLMs (beams, equipment, etc.) in bank 89
  997. 7E1C37 - 7E1C86 PLM header table
  998. 7E1C87 - 7E1CD6 PLM's location in the room (nth block * 2)
  999. 7E1CD7 - 7E1D26 Pre-PLM instruction
  1000. 7E1D27 - 7E1D76 Next PLM instruction
  1001. 7E1D77 - 7E1DC6 Variable use PLM value. Noted as a counter and for touch detection.
  1002. 7E1DC7 - 7E1E16 PLM Room argument
  1003. 7E1E17 - 7E1E66 Variable use PLM value. Generally used to store block type/graphic.
  1004. 7E1E67 - 7E1E68 Used as draw instruction to custom-draw PLM blocks. Usually #$0001 (1 block)
  1005. 7E1E69 - 7E1E6A Used as draw instruction to custom-draw PLM blocks. Custom block value
  1006. 7E1E6B - 7E1E6C Used as draw instruction to custom-draw PLM blocks. Usually #$0000, end value.
  1007.  
  1008. 7E1E6F - 7E1E70 Tourian entrance statue animation state
  1009. 0001 = Phantoon is being processed
  1010. 0002 = Ridley is being processed
  1011. 0004 = Kraid is being processed
  1012. 0008 = Draygon is being processed
  1013. 8000 = busy releasing lock of a boss
  1014. 7E1E71 - 7E1E72 Flag, set Samus is in quicksand. Forces Samus into a ground position, fakes collision with ground.
  1015. 7E1E73 - 7E1E74 Which part of Samus is inside the block? Bottom(0), middle(1), top(2)
  1016. 7E1E75 - 7E1E76 Flag. Samus has used a save station in this room. Cleared when leaving the room.
  1017. 7E1E77 - 7E1E78 BTS of current block (used by sloped blocks, at least)
  1018. 7E1E79 - 7E1E7A 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' ship. Not dark firefly rooms, or waving backgrounds like in Norfair). Very rarely used.
  1019. 7E1E7B - 7E1E7C Current X for 7E1E7D,X
  1020. 7E1E7D - 7E1E8C Pointer to code to run. F761 is heat check + damage
  1021. 7E1E8D - 7E1E9C Used for glow color indexing. Which colors are affected
  1022. 7E1E9D - 7E1EAC Used for glow colors.
  1023. 7E1EAD - 7E1EBC Pointer to code. Like pre-PLM code, I guess.
  1024. 7E1EBD - 7E1ECC 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 7EC000,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.
  1025. 7E1ECD - 7E1EDC Delay counter.
  1026.  
  1027. 7E1EF1 - 7E1EF2 Misc. animations flag. bit15 set = enabled
  1028. 7E1EF3 - 7E1EF4 Index for misc. animations table
  1029. 7E1EF5 - 7E1F00 Misc. animations pointer table
  1030. 7E1F01 - 7E1F0D Misc. animations counter
  1031. 7E1F0D - 7E1F18 Misc. animation instruction pointer
  1032. 7E1F19 - 7E1F24 Misc. animation instruction delay
  1033. 7E1F25 - 7E1F30 Misc. animation graphic pointer (in $87)
  1034. 7E1F31 - 7E1F3C Misc. animation graphic size
  1035. 7E1F3D - 7E1F48 Misc. animation VRAM address
  1036. 7E1F49 - 7E1F4A Current misc. animation instruction
  1037.  
  1038. 7E1F51 - 7E1F52 Used during intro scenes and pic of baby Metroid at Ceres (pointer to code?)
  1039. 7E1F53 - 7E1F54 Timer for demo scenes?
  1040. 7E1F55 - 7E1F56 Which set of demo scenes is playing?
  1041. 7E1F57 - 7E1F58 Which demo scene of this set is playing?
  1042. 7E1F59 - 7E1F5A The last set of demo scenes unlocked?
  1043. 7E1F5B - 7E1FFF Stack (Lowest observed ATM is 1FC5, 1FB5 by Jathys. No known used RAM above 1F5B)
  1044.  
  1045. 7E2000 - 7E5FFF Room Tiles, decompressed here temporarily then copied to VRAM 0000.
  1046. 7E2000 - 7E2??? Extra RAM usable during rooms (Used by bosses especially, up to 20A7)
  1047.  
  1048. 7E3300 - 7E34FF Temporary CGRAM backup during pause screen.
  1049.  
  1050. 7E3800 - 7E3EFF Tilemap for part of layer 3? Cleared during message boxes.
  1051.  
  1052. 7E3900 - 7E6980 Used for tilemaps/graphics during equipment screen
  1053.  
  1054. 7E5000 - 7E5800 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?
  1055. 7E5800 - 7E5FFF Page 2 of BG2 tilemap for main screen gameplay is stored here temporarily some time?
  1056. 7E6000 - 7E67FF Page 1 of BG3 tilemap for main screen gameplay is stored here temporarily some time?
  1057. 7E6800 - 7E6FFF Page 2 of BG3 tilemap for main screen gameplay is stored here temporarily some time?
  1058.  
  1059. 7E7000 - 7E???? CRE is decompressed to here during room load, if unknown 4 bit 1 is set for the new room.
  1060. 7E7000 - 7E9800 Cleared before gameplay begins in new room
  1061.  
  1062. 7E7000?- 7E77FF? Table of some sort for enemies. Related to graphics, I think.
  1063.  
  1064. 7E7006,X is where in vram the tiles are (I think)
  1065. 7E7008,X is which color palette it uses.
  1066.  
  1067. 7E701E,X mirrors 7E0F78, X
  1068. 7E7020,X mirrors 7E0F7A, X
  1069. 7E7022,X mirrors 7E0F7E, X
  1070. 7E7024,X mirrors 7E0F92, X (Used by Chozo statues for orientation?)
  1071. 7E7026,X mirrors 7E0F86, X
  1072. 7E7028,X mirrors 7E0F88, X
  1073. 7E702A,X mirrors 7E0FB4, X
  1074. 7E702C,X mirrors 7E0FB6, X
  1075. 7E702E,X-7E7038,X is the enemy's name, if it has one. Else #$0000
  1076.  
  1077. 7E7800 - 7E7FFF Extra RAM for enemy use ($40 bytes each)
  1078.  
  1079. 7E7802 - 7E7803 Unknown, initialized to 0 by Ridley
  1080. 7E7804 - 7E7805 Unknown, initialized to 1 by Norfair Ridley, 0 by Ceres Ridley
  1081. 7E7806 - 7E7807 Unknown, initialized to BF31 by Ceres Ridley
  1082. 7E7808 - 7E7809 Unknown, initialized to 1 by Ceres Ridley
  1083.  
  1084. 7E780E - 7E780F Unknown, initialized to 5 by Ceres Ridley
  1085.  
  1086. 7E7818 - 7E7819 palette for Ridley?
  1087. 7E781A - 7E781B Unknown, initialized to 0 by Ridley
  1088.  
  1089. 7E7820 - 7E7821 Unknown. Initialized to 2 by Norfair Ridley, 0 by Ceres Ridley
  1090.  
  1091. 7E7824 General use 'speed' byte set aside for Ridley?
  1092.  
  1093. 7E7838 - 7E7839 Unknown. Initialized to 78 by Norfair Ridley, F by Ceres Ridley
  1094.  
  1095. 7E8000 - 7E8001 Used for Draygon's direction when grabbing Samus; 0 = left, 1 = right. Initialized to 40 by Norfair Ridley, FFE0 by Ceres Ridley
  1096. 7E8002 - 7E8003 Initialized to 1A0 by Norfair Ridley, B0 by Ceres Ridley
  1097. 7E8004 - 7E8005 Initialized to 40 by Norfair Ridley, 28 by Ceres Ridley
  1098. 7E8006 - 7E8007 Initialized to E0 by both Ridleys
  1099.  
  1100. 7E800A Ridley's final attack swoop counter?
  1101.  
  1102. 7E8800 - 7E8801 Unknown, initialized to BE9C by Ceres Ridley
  1103. 7E8802 - 7E8803 Unused byte for topleft turret in Draygon's room
  1104. 7E8804 - 7E8805 Death byte for bottomleft turret in Draygon's room (1 = no more turret fire)
  1105. 7E8806 - 7E8807 Death byte for topright turret in Draygon's room (1 = no more turret fire)
  1106. 7E8808 - 7E8809 Death byte for bottomright turret in Draygon's room (1 = no more turret fire)
  1107.  
  1108. 7E9100 - 7E91FF Something to do with HDMA, used when Phantoon makes his swirl animation when he dies
  1109.  
  1110. 7E9C00 Something for Layer 3 Horizontal Scroll HDMA (scroll value for air?)
  1111.  
  1112. 7E9C04 - 7E9C22 Layer 3 horizontal scroll HDMA data (at least for water)
  1113.  
  1114. 7E9F80 - 7E9FFF Layer 2? HDMA for scrolling sky? seems to be how much each 'section' has scrolled
  1115.  
  1116. 7EA000 - 7EBFFF Stuff for tiles (A000 to A7FF is CRE). 8 bytes per tile, unknown format. I *think* it's the '7F0002 03FF character --> 4 subtiles from VRAM' table. TODO
  1117.  
  1118. 7EC000 - 7EC1FF Color palettes, copied straight to CGRAM
  1119. 7EC000 - 7EC01F Area color palette line 0
  1120. 7EC020 - 7EC03F Area color palette line 1
  1121. 7EC040 - 7EC05F Area color palette line 2
  1122. 7EC060 - 7EC07F Area color palette line 3
  1123. 7EC080 - 7EC0AF Area color palette line 4
  1124. 7EC0A0 - 7EC0BF Area color palette line 5
  1125. 7EC0C0 - 7EC0DF Area color palette line 6
  1126. 7EC0E0 - 7EC0FF Area color palette line 7
  1127. 7EC100 - 7EC11F White palette for flashing enemies and pickups
  1128. 7EC120 - 7EC13F Enemy color palette line 0001
  1129. 7EC140 - 7EC15F Enemy color palette line 0002
  1130. 7EC160 - 7EC17F Enemy color palette line 0003
  1131. 7EC180 - 7EC1AF Samus' palette
  1132. 7EC1A0 - 7EC1BF Most common sprites (item drops, smoke, explosions, bombs, power bombs, missiles, gates(wall part), water splashes, grapple beam)
  1133. 7EC1C0 - 7EC1DF Beam Color palette line
  1134. 7EC1E0 - 7EC1FF Enemy color palette line 0007
  1135. 7EC200 - 7EC3FF Target color palettes
  1136. 7EC200 - 7EC21F Target color palette line 0
  1137. 7EC220 - 7EC23F Target color palette line 1
  1138. 7EC240 - 7EC25F Target color palette line 2
  1139. 7EC260 - 7EC27F Target color palette line 3
  1140. 7EC280 - 7EC2AF Target color palette line 4
  1141. 7EC2A0 - 7EC2BF Target color palette line 5
  1142. 7EC2C0 - 7EC2DF Target color palette line 6
  1143. 7EC2E0 - 7EC2FF Target color palette line 7
  1144. 7EC300 - 7EC31F Target palette for flashing enemies and pickups
  1145. 7EC320 - 7EC33F Target enemy color palette line 0001
  1146. 7EC340 - 7EC35F Target enemy color palette line 0002
  1147. 7EC360 - 7EC37F Target enemy color palette line 0003
  1148. 7EC380 - 7EC3AF Target Samus' palette
  1149. 7EC3A0 - 7EC3BF Target colors for most common sprites (item drops, smoke, explosions, bombs, power bombs, missiles, gates(wall part), water splashes, grapple beam)
  1150. 7EC3C0 - 7EC3DF Target Beam Color palette line
  1151. 7EC3E0 - 7EC3FF Target enemy color palette line 0007
  1152. 7EC400 - 7EC401 Color palette change fraction, numerator
  1153. 7EC402 - 7EC403 Color palette change fraction, denominator (C000,X = (C200,X * C400 / C402) + (original C000,X * (C402 - C400) / C402))
  1154. 7EC404 - 7EC405 Current index for C000/C200
  1155.  
  1156. 7EC2E2 - 7EC2FF Unknown, initialized to 0 by Norfair Ridley
  1157.  
  1158. 7EC320 - 7EC35F Unknown (Enemy 1 palette?)
  1159. 7EC340 - 7EC37F Unknown, initialized differently by both Ridleys
  1160. 7EC380 - 7EC39E Samus' target colors for room transitions. Set by 91/DDD7, from bank 9B, depending on X.
  1161.  
  1162. 7EC3E2 - 7EC3FF Unknown, initialized to 0 by both Ridleys
  1163. 7EC400 - 7EC607 Powerbomb HDMA tilemap? Also used by gradual color change routine (probably targed colors for Powerbombs?)
  1164. 7EC608 - 7EC6C7 Status bar tilemap
  1165.  
  1166. 7EC8C8 - 7EC907 Copied to VRAM by horizontal scroll routine (left half of new tilemap). Size is 7E0956, VRAM address 7E095A
  1167. 7EC908 - 7EC947 Copied to VRAM by horizontal scroll routine (right half of new tilemap). Size is 7E0956, VRAM address 7E095A + 1
  1168. 7EC948 - 7EC98B Copied to VRAM by vertical scroll routine(top half of new tilemap?). Size is 7E0964 (screen 1) + 7E0966 (screen 2)
  1169. 7EC98C - 7EC9CF copied to VRAM by vertical scroll routine(bottom half of new tilemap?). Size is 7E0964
  1170. 7EC9D0 - 7EC??? Copied to VRAM. Size is 7E0972. Used by elevator background loading (808D49)
  1171.  
  1172. 7ECA10 - 7EC??? Copied to VRAM. Size is 7E0972. Used by elevator background loading (808D49)
  1173.  
  1174. 7ECA50 - 7EC??? Copied to VRAM. Size is 7E0980. Used by ???? routine (808E2B)
  1175.  
  1176. 7ECA94 - 7EC??? Copied to VRAM. Size is 7E0980. Used by ???? routine (808E2B)
  1177.  
  1178. 7ECAD8 - 7ECADB Scroll offsets for BG3 during tilebar. (2 bytes horizontal, 2 bytes vertical). Copied via HDMA during tilebar
  1179. 7ECADC - 7ECADF Scroll offsets for BG3 during main display. (2 bytes horizontal, 2 bytes vertical). Copied via HDMA once at end of tilebar.
  1180.  
  1181. 7ECD20 - 7ECD51 Scrollmap for current room
  1182. 7ECD52 - 7ECE51 Explored map for Area 0 (Crateria)
  1183. 7ECE52 - 7ECF51 Explored map for Area 1 (Brinstar)
  1184. 7ECF52 - 7ED051 Explored map for Area 2 (Norfair)
  1185. 7ED052 - 7ED151 Explored map for Area 3 (Wrecked Ship)
  1186. 7ED152 - 7ED251 Explored map for Area 4 (Maridia)
  1187. 7ED252 - 7ED351 Explored map for Area 5 (Tourian)
  1188. 7ED352 - 7ED451 Explored map for Area 6 (Ceres)
  1189. 7ED452 - 7ED551 Explored map for Area 7 (Debug Unused)
  1190. 7ED552 - 7ED558 Name of current enemy list
  1191. 7ED559 - 7ED??? Name of allowed enemies in the room. C bytes alloted for each enemy.
  1192.  
  1193. 7ED7C0 - 7EDE1B RAM that is saved to SRAM
  1194. 7ED7C0 - 7ED81F SRAM copy of 7E09A2 - 7E0A01
  1195. 7ED820 - 7ED86F Event bit array. 30-6F are never used
  1196. 7ED828 - 7ED82F Boss bits. 1 byte per area (C-B-N-W-M-T-C-D)
  1197. 7ED870 - 7ED8AF Item bit array. 90-AF are never used
  1198. 7ED8B0 - 7ED8EF Opened door bit array. D0-EF are never used
  1199.  
  1200. 7ED8F8 - 7ED907 Used elevator(Odd bytes) and save point(Even bytes) array, indexed by area.
  1201. 7ED908 - 7ED90F Map Station byte array
  1202.  
  1203. 7ED914 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
  1204.  
  1205. 7ED91A Unknown use (some sort of counter? Incremented by hidden item shot blocks initialization)
  1206.  
  1207. 7ED91C - 7EDE1B? Loaded 'compressed' map data from SRAM. Only first 160 bytes or so are actually used by original game.
  1208.  
  1209. 7EDE1C - 7EDE6B PLM frame delay
  1210. 7EDE6C - 7EDEBB PLM Block Edit pointer
  1211. 7EDEBC - 7EDF0B PLM Goto Instruction Pointer
  1212. 7EDF0C - 7EDF5B Unknown PLM value. Initialized to #$0000
  1213. 7EDF5C - 7EEF5B Backup of VRAM word 3980 - 417F (bytes 7300 - 82FF). Technically, word 3980 is not backed up, but that doesn't seem too important.
  1214.  
  1215. 7EEF78 - 7EEFB7 Tilemap pointer for misc enemy GFX. Pulled from table at 86BDA8 (BE5A, BE6C, BE86, BEA4, BEBE, BED4, BEEA...)
  1216.  
  1217. 7EEFF8 - 7EF037 Delay timer for above table, or instruction pointer if $8000+
  1218.  
  1219. 7EF078 - 7EF0B7
  1220.  
  1221. 7EF0F8 - 7EF137 X position of misc enemy GFX
  1222.  
  1223. 7EF178 - 7EF1B7
  1224.  
  1225. 7EF1F8 - 7EF237 Y position of misc enemy GFX
  1226.  
  1227. 7EF278 - 7EF2B7
  1228.  
  1229. 7EF2F8 - 7EF337 Misc enemy GFX disable flag?
  1230.  
  1231.  
  1232.  
  1233. 7EF378 - 7EF379 Unknown, set to #$0002 by processing enemies before JSRing to A0C26A, set to #$0003 by enemies when detecting collisions with projectiles, set to #$0006 by enemies when detecting Samus
  1234.  
  1235. 7EF380 - 7EF49F Enemy/room projectile data 'cleared' every time on room load
  1236. 7EF380 - 7EF3A3 Use different response when hit by projectile (0000 = normal?, 0001 = Samus' projectile?, 0002 = Ignore collision?)
  1237.  
  1238. 7F0000 - 7F0001 Size of room tilemap in bytes (and size of background tilemap, and 2x size of bts map)
  1239. 7F0002 - 7F6401 Room Tilemap
  1240. 7F6402 - 7F9601 Room BTS map
  1241. 7F9602 - 7FFA01 Room Background Tilemap
  1242. 7FFA02 - 7FFFFF Unused
  1243.  
  1244. VRAM during main gameplay (In byte addresses, not word addresses)
  1245. $0000 - $47FF Area graphics (4 bit)
  1246. $4800 - $4FFF Layer 2 tilemap? Sometimes seems to be unused
  1247. $5000 - $7BFF CRE graphics (4 bit)
  1248. $6000 - $6FFF Layer 1 tilemap on pause screen (2x1 wide)
  1249. $7000 - $77FF Layer 2 tilemap on pause screen (1x1)
  1250. $7C00 - $7FFF Misc. graphics? (4 bit, Contains beam item tiles)
  1251. $8000 - $8FFF Layer 3 graphics. (2 bit. Lotta available space scattered around.)
  1252. $9000 - $9FFF Sometimes used as Layer 2 tilemap (like with Phantoon). Usually unused?
  1253. $A000 - $AFFF Layer 1 tilemap
  1254. $B000 - $B03F Unknown (Probably works as top tiles in Layer 3 Status Bar tilemap, but never seen written to)
  1255. $B040 - $B0FF Layer 3 Status Bar tilemap
  1256. $B100 - $B7BF Unknown (unused? Often all set to #$184E by 82/E566 during room transitions)
  1257. $B7C0 - $BFFF Layer 3 FX tilemap?
  1258. $C000 - $C43F? Samus graphics (4 bit, pal 192)
  1259. $C000 - $C0FF Samus Top 1 graphics
  1260. $C100 - $C1FF Samus Bottom 1 graphics
  1261. $C200 - $C2FF Samus Top 2 graphics
  1262. $C300 - $C3FF Samus Bottom 2 graphics
  1263. $C440 - $C49F Unknown (unused?)
  1264. $C4A0 - $C4BF Misc. sprite graphics (Samus' air bubbles?) (4 bit, pal 208)
  1265. $C4C0 - $C4FF Power Bomb (4 bit, pal 208)
  1266. $C500 - $C57F M1 Ridley's Fireballs? (4 bit, pal 208)
  1267. $C580 - $C5FF Water from Samus' footsteps (4 bit, pal 208)
  1268. $C600 - $C6FF Beam graphics (4 bit, pal 224)
  1269. $C700 - $C77F Beam trail graphics (4 bit, pal 224)
  1270. $C780 - $C7FF Small energy pickup (4 bit, pal 208. 1st and 4th look unused)
  1271. $C800 - $C81F Air bubbles (4 bit, pal 208)
  1272. $C81F - $C85F Small energy pickup (4 bit, pal 208)
  1273. $C860 - $C87F Air bubbles (4 bit, pal 208)
  1274. $C880 - $C8FF Large energy pickup (4 bit, pal 208, last looks unused)
  1275. $C900 - $C97F Dust clouds from footsteps(or smoke from missiles?) (4 bit, pal 208)
  1276. $C980 - $C9FF Bomb graphics (4 bit, pal 208)
  1277. $CA00 - $CA7F Explosions, small (4 bit)
  1278. $CA80 - $CB5F Missile (Tiles 2 horizontal, 3 diagonal, 2 vertical. 4 bit, pal 208)
  1279. $CB60 - $CBBF Unknown (small dots)
  1280. $CBC0 - $CBDF Unknown, looks like (and might be) splash from water
  1281. $CBE0 - $CC7F Explosions, medium - small. (4 bit, pal 208)
  1282. $CC80 - $CD5F Super missile (Tiles 2 horizontal, 3 diagonal, 2 vertical. 4 bit, pal 208)
  1283. $CD60 - $CDFF Enemy projectiles? (not sure if all used. 4 bit, pal 208)
  1284. $CE00 - $D9FF If not otherwise stated, explosions of various colors, shapes, and sizes (4 bit, pal 208)
  1285. $CF60 - $CF7F Power bomb (just 1 tile. 4 bit, pal 208)
  1286. $D740 - $D75F Top half of water burst (4 bit, pal 208)
  1287. $D7C0 - $D7FF Top (identical) half of gate (4 bit, pal 208)
  1288. $D8E0 - $D8FF Air bubbles for Samus? (4 bit)
  1289. $D940 - $D95F Bottom half of water burst (4 bit, pal 208)
  1290. $D9C0 - $D9FF Bottom (identical) half of gate (4 bit, pal 208)
  1291. $DA00 - $FFFF Enemy graphics and enemy projectiles (4 bit, variable palettes)
  1292.  
  1293. palettes (note This part is currently very unthorough)
  1294. 0 (16 colors) Much of CRE. Grey doors
  1295. 1 (16 colors) Also much of CRE, but with different lighting. Green doors
  1296. 2 (16 colors) Red doors. That looks like it.
  1297. 3 (16 colors) Blue doors. Might be it.
  1298. 4 (16 colors) Don't see anything that uses this. Might only be certain tiles in certain tilesets, or enemies
  1299. 5 (16 colors) A couple tiles.
  1300. 6 (16 colors) Don't see anything that uses this. Might only be certain tiles in certain tilesets, or enemies
  1301. 7 (16 colors) A couple tiles.
  1302. 8 (16 colors) Enemy hurt palette?
  1303. 9 (16 colors) I think this is for enemies.
  1304. A (16 colors) Ditto
  1305. B (16 colors) Ditto
  1306. C (16 colors) Samus
  1307. D (16 colors) Most common sprites (item drops, smoke, explosions, bombs, power bombs, missiles, gates(wall part), water splashes, grapple beam)
  1308. E (16 colors) Samus' beam
  1309. F (16 colors) Unknown
  1310.  
  1311. 2 (4 colors) Much text, explored areas on minimap, energy
  1312. 3 (4 colors) Much text, unexplored areas on minimap
  1313. 4 (4 colors) Selected items
  1314. 5 (4 colors) Unselected items, possibly some water animations
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement