RAM Addresses | |||
Address ![]() | Length | Description | |
$7E:0000 | 16 bytes | Scratch RAM, is and can be used for multiple purposes. (Temporarily preserving a value) In SMW (and LM ASM hacks), it includes, but is not excluded to: $7E0000 - Xpos Used For Sprite Creation, Low Byte $7E0001 - Ypos Used For Sprite Creation, Low Byte $7E0003 - Block # from LM Map16 Editor $7E0004 - Sprite GFX table - Used for when uploading sprite GFX files to VRAM, also used as high byte for block number $7E0008 - Xpos Used For Sprite Creation, High Byte $7E0009 - Ypos Used For Sprite Creation, High Byte $7E000E - Used by the game to store the level number briefly while deciding which Level and Sprite Pointers to use (during Overworld->Level transitions). | |
$7E:0010 | 1 byte | If value is != #$00, run the actual game (otherwise, loop forever). Is set to a non-zero value during NMI. | |
$7E:0011 | 1 byte | Used to distinguish IRQ #1 from IRQ #2's code. (Inside the Morton/Ludwig/Roy room, although it can be used in other areas that run IRQ as well.) #$00 = IRQ #1, #$01 = IRQ #2. | |
$7E:0012 | 1 byte | Image loader. (Value must be divisible by 3) | |
$7E:0013 | 1 byte | Frame Counter (Increases by 1 each frame) | |
$7E:0014 | 1 byte | "Sprite" frame counter. Stops when sprites are frozen, etc. Basically, a frame counter that only runs when a sprite is running. | |
$7E:0015 | 1 byte | Controller data 1 01=Right, 02=Left, 04=Down, 08=Up, 10=Start, 20=Select, 40=Y and X, 80=B and A | |
$7E:0016 | 1 byte | Controller data 1 (one frame) - Same values as $15 | |
$7E:0017 | 1 byte | Controller data 2 - 10=R, 20=L, 40=X, 80=A | |
$7E:0018 | 1 byte | Controller data 2 (one frame) - Same values as $17 | |
$7E:0019 | 1 byte | Powerup. #$00 = Small, #$01 = Big, #$02 = Cape, #$03 = Fire. | |
$7E:001A | 2 bytes | Layer 1 X position. Mirror of $210D. | |
$7E:001C | 2 bytes | Layer 1 Y position. Mirror of $210E. | |
$7E:001E | 2 bytes | Layer 2 X position. Mirror of $210F. | |
$7E:0020 | 2 bytes | Layer 2 Y position. Mirror of $2110. | |
$7E:0022 | 2 bytes | Layer 3 X postion. Mirror of $2111. | |
$7E:0024 | 2 bytes | Layer 3 Y position. Mirror of $2112. | |
$7E:0026 | 2 bytes | Depending on Layer 3 tides being activated or not, it's either: Not activated: (Layer 2 Xpos) minus (Layer 1 Xpos) Activated: Layer 3 Xpos) minus (Layer 1 Xpos) | |
$7E:0028 | 2 bytes | Depending on layer 3 tides being activated or not, it's either: Not activated: (Layer 2 Ypos) minus (Layer 1 Ypos) Activated: Layer 3 Ypos) minus (Layer 1 Ypos) | |
$7E:002A | 2 bytes | Mode 7 Center X Position. Mirror of $211F, + #$0080. | |
$7E:002C | 2 bytes | Mode 7 Center Y position. Mirror of $2120, + #$0080. | |
$7E:002E | 2 bytes | Mode 7 Parameter A (Scale X). Mirror of $211B. | |
$7E:0030 | 2 bytes | Mode 7 Parameter B (Shear X). Mirror of $211C. | |
$7E:0032 | 2 bytes | Mode 7 Parameter C (Shear Y). Mirror of $211D. | |
$7E:0034 | 2 bytes | Mode 7 Parameter D (Scale Y). Mirror of $211E. | |
$7E:0036 | 2 bytes | Mode 7 Rotation. It will rotate layer 1/BG1 clockwise as you increase it. | |
$7E:0038 | 2 bytes | Mode 7 scaling. Byte 1 scales it horizontally, while byte 2 scales it vertically. | |
$7E:003A | 2 bytes | Mode 7 Layer 1 X Position. Mirror of $210D. | |
$7E:003C | 2 bytes | Mode 7 Layer 1 Y Position. Mirror of $210E. | |
$7E:003E | 1 byte | BG Mode select ($2105) applied with IRQ below status bar. Setting bit 3 (%00001000) gives Layer 3 priority. | |
$7E:003F | 1 byte | OAM Address, low byte. Also known as the mirror of register $2102. High byte is at ROM $00:846B. | |
$7E:0040 | 1 byte | CGADSUB setting: 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 (bit 3 only affect below the status bar). Mirror of $2131. | |
$7E:0041 | 1 byte | BG 1 and 2 Window Mask Settings: aaaabbbb a = BG 2 Window Settings b = BG 1 Window Settings. Mirror of $2123. | |
$7E:0042 | 1 byte | BG 3 and 4 Window Mask Settings: aaabbbb a = BG 4 Window Settings b = BG 3 Window Settings. Mirror of $2124. | |
$7E:0043 | 1 byte | OBJ and Color Window Settings: aaaabbbb a = Color Window Settings b = OBJ Window Settings. Mirror of $2125. | |
$7E:0044 | 1 byte | 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. Mirror of $2130. | |
$7E:0045 | 2 bytes | Column (or row) of map16 tiles to use for VRAM upload when L1 is scrolling left (or up) | |
$7E:0047 | 2 bytes | Identical to $7E0045, but used for right (or down) direction scrolling | |
$7E:0049 | 2 bytes | Identical to $7E0045-$7E0046, but for layer 2 levels where applicable. | |
$7E:004B | 2 bytes | Identical to $7E0047-$7E0048, but for layer 2 levels where applicable. | |
$7E:004D | 2 bytes | Last X (or Y) L1 scroll value where VRAM upload of map16 tiles was performed when scrolling left (or up). The low 4 bits are forced to zero in order to get scroll values on a 16 pixel boundary. It is used to determine if a VRAM update is necessary during scrolling. | |
$7E:004F | 2 bytes | Identical to $7E004D-$7E004E, but for scroll in the right (or down) direction. | |
$7E:0051 | 2 bytes | Identical to $7E004D-$7E004E, but for L2 where applicable. | |
$7E:0053 | 2 bytes | Identical to $7E004F-$7E0050, but for L2 where applicable. | |
$7E:0055 | 1 byte | Direction of scroll for L1. 00: left (or up) 02: right (or down) Used to index the above 2 byte camera tables. | |
$7E:0056 | 1 byte | Identical to $7E0055, but for L2 where applicable. | |
$7E:0057 | 1 byte | Used in the level loading code. It's the position within the subscreen. Could be used as scratch RAM (except in ObjecTool and similar codes). | |
$7E:0058 | 1 byte | Cleared during reset, titlescreen load and OW load. | |
$7E:0059 | 1 byte | Used in the level loading routine. It's the size of the object, or extended object type depending on what object is being loaded. Could be used as scratch RAM (except in ObjecTool and similar codes). | |
$7E:005A | 1 byte | Used in the level loading routine. It's the object number. Could be used as scratch RAM (except in ObjecTool and similar codes). | |
$7E:005B | 1 byte | Screen mode: Cc????Vv C=Collision with layer 2 c=Collision with layer 1? V=Vertical layer 2 v=Vertical layer 1 | |
$7E:005C | 1 byte | Empty. Cleared during reset, titlescreen and overworld load. | |
$7E:005D | 1 byte | # of screens in level | |
$7E:0060 | 4 bytes | Empty. Cleared during reset, titlescreen and overworld load. | |
$7E:0064 | 1 byte | Properties (YXPPCCCT) byte for most sprites. | |
$7E:0065 | 3 bytes | 24bit pointer to Level Data. | |
$7E:0068 | 3 bytes | 24bit pointer to the layer 2 data. | |
$7E:006B | 3 bytes | Pointer to low byte of block data (used during level load). | |
$7E:006E | 3 bytes | Pointer to high byte of block data (used during level load). | |
$7E:0071 | 1 byte | Mario Action trigger 00=nothing 01=flashing as if Mario's hurt by an enemy 02=get mushroom animation 03=get cape animation (note: you must write to $1496 for it to work) 04=get flower animation (note: you must write to $149B for it to work) 05=enter a horizontal pipe 06=enter a vertical pipe 07=shoot from a diagonal pipe 08=shoot into the sky (like when yoshi get's wings from a ?-block) 09=end the level without activating events on the OW (used when Mario dies) (note: you will lose a life) 0A=used in castle entrance moves 0B=Mario stops until $00 is written 0C=used in castle entrance moves 0D=enter a door | |
$7E:0072 | 1 byte | Mario's image while in the air. | |
$7E:0073 | 1 byte | Mario is ducking flag. | |
$7E:0074 | 1 byte | Mario is climbing flag | |
$7E:0075 | 1 byte | "Mario is in water" flag | |
$7E:0076 | 1 byte | Mario's direction. 00=Left; 01=Right | |
$7E:0077 | 1 byte | Player blocked status - Used to check if player is blocked in a certain direction. Format: SxxMUDLR The M bit means that Mario is in the middle of a block. The S bit indicates that Mario is touching the side of the screens while horizontal screen scrolling is disabled. | |
$7E:0078 | 1 byte | Used to obscure (parts of) Mario. | |
$7E:0079 | 1 byte | Empty. Cleared during reset and titlescreen load. | |
$7E:007B | 1 byte | Mario Xspeed. #$7F is the fastest rightwards speed, while #$80 is the highest leftwards. +/-#$15 is fully walking, +/-#$30 is fully running. #$00-#$7F is right, #$80-#$FF is left. | |
$7E:007C | 1 byte | Empty. Cleared during reset, titlescreen, overworld and level load. | |
$7E:007D | 1 byte | Mario Yspeed. #$80 is the highest upwards speed, while #$7F is the highest downwards speed. #$15 is falling at mid-speed, #$30 is falling at max-speed, #$EB is jumping at mid-speed and #$D0 is jumping at full speed. #$00-#$7F = falling, #$80-#$FF = rising. | |
$7E:007E | 2 bytes | Mario's X position (screen) | |
$7E:0080 | 2 bytes | Mario's Y position (screen) | |
$7E:0085 | 1 byte | Water Level flag | |
$7E:0086 | 1 byte | Slippery Level flag. #$FF makes the player slip a LOT while #$01 makes the player slip barely. #$00 disables the slippery level flag. | |
$7E:0087 | 1 byte | Empty. Cleared during reset, titlescreen, overworld and level load. | |
$7E:0088 | 1 byte | How long Mario goes into a pipe until he warps to another level. | |
$7E:0089 | 1 byte | Actions to take when Mario enters/exits a pipe. (Writing to it will only have effect if 7E:0071 is equal to 06.) 00=Enter a right-facing horizontal pipe. 01=Enter a left-facing horizontal pipe. 02=Enter a down-facing vertical pipe. 03=Enter an up-facing vertical pipe. 04=Exit from a left-facing horizontal pipe. 05=Exit from a right-facing horizontal pipe. 06=Exit from an up-facing vertical pipe. 07=Exit from a down-facing vertical pipe. | |
$7E:008A | 3 bytes | Holds the 3-byte pointer to the location of the decompressed GFX files inside the ROM. Solely $8A is used as number of options to select in a blinking cursor menu. Solely $8A also controls the speed of revealing event tiles (Only 01 and 08 are valid though) | |
$7E:008D | 3 bytes | 24-bit pointer to part of the decompressed graphics; starts at $7EACFE/F and decrementing. RAM address has multiple purposes, however. | |
$7E:0094 | 2 bytes | Mario's X position (level, next frame) | |
$7E:0096 | 2 bytes | Mario's Y position (level, next frame) | |
$7E:0098 | 1 byte | Sprite creation: Y position (low) Custom Block: Y position of contact(low) | |
$7E:0099 | 1 byte | Sprite creation: Y position (high) Custom Block: Y position of contact(high) | |
$7E:009A | 1 byte | Sprite creation: X position (low) Custom Block: X position of contact(low) | |
$7E:009B | 1 byte | Sprite creation: X position (high) Custom Block: X position of contact(high) | |
$7E:009C | 1 byte | Generate Map16 tile | |
$7E:009D | 1 byte | Lock sprites timer | |
$7E:009E | 12 bytes | Sprite number | |
$7E:00AA | 12 bytes | Sprite Y Speed Table | |
$7E:00B6 | 12 bytes | Sprite X Speed Table | |
$7E:00C2 | 12 bytes | Sprite table that is not restricted to one predefined purpose. In SMW, it's most commonly used as a pointer to different parts of a sprite. | |
$7E:00CE | 3 bytes | 24bit pointer to level's sprite data. | |
$7E:00D1 | 2 bytes | Mario's X position (level, current frame) | |
$7E:00D3 | 2 bytes | Mario's Y position (level, current frame) | |
$7E:00D5 | 3 bytes | Pointer to X and Y positions of Wiggler segments. | |
$7E:00D8 | 12 bytes | Sprite Ypos Low Byte (table) | |
$7E:00E4 | 12 bytes | Sprite Xpos Low Byte (table) | |
$7E:00F0 | 16 bytes | Empty space. Note: Is used by Lunar Magic. | |
$7E:0100 | 1 byte | Game Mode. 00 Load Nintendo Presents - 01 Nintendo Presents - 02 Fade to Title Screen 03 Load Title Screen - 04 Prepare Title Screen - 05 Title Screen: Fade in 06 Title Screen: Circle effect - 07 Title Screen - 08 Title Screen: File select 09 Title Screen: File delete - 0A Title Screen: Player select - 0B Fade to Overworld 0C Load Overworld - 0D Overworld: Fade in - 0E Overworld 0F Fade to Level - 10 Fade to Level (black) - 11 Load Level (Mario Start!) 12 Prepare Level - 13 Level: Fade in - 14 Level 15 Fade to Game Over - 16 Fade to Game Over? - 17 Game Over 18 Load Credits/Cutscene? - 19 Load Credits/Cutscene? - 1A Load Credits/Cutscene? 1B Ending: Credits / Cutscene - 1C Fade to Yoshi's House - 1D Fade to Yoshi's House (black) 1E Ending: Yoshi's House: Fade in - 1F Ending: Yoshi's House - 20 Fade to Enemies 21 Fade to Enemies (black)- 22 Fade to Enemies? - 23 Fade to Enemies (black)? 24 Ending: Enemies: Fade in - 25 Ending: Enemies - 26 Fade to The End / Go to 22 27 Fade to The End (black) - 28 Ending: The End: Fade in - 29 Ending: The End | |
$7E:0101 | 4 bytes | Currently loaded sprite GFX files (stored in reverse order) | |
$7E:0105 | 4 bytes | Currently loaded layer GFX files (stored in reverse order) | |
$7E:0109 | 1 byte | When set to a non-zero value, the OW loading routine is overridden by loading level value stored here-$24. This means levels 0-FF can be used with the exception of level DC. | |
$7E:010A | 1 byte | Save File # | |
$7E:010B | 245 bytes | Stack | |
$7E:0200 | 544 bytes | OAM. $0310-$0313 is for Mario's upper tile, $0314-$0317 for Mario's lower tile. | |
$7E:0420 | 128 bytes | Table that determines the size of a sprite's tile - 8x8 (#$00) or 16x16 (#$02). Each byte corresponds to 4 OAM bytes. Stores to $0400-$041F (where each 2 bits correspond to 4 OAM bytes.) | |
$7E:04A0 | 448 bytes | HDMA table for windowing effects (keyhole, level end, etc.) | |
$7E:0660 | 32 bytes | Empty. Cleared during reset and titlescreen load. | |
$7E:0680 | 21 bytes | Used for the lightning effect, Big Boo Boss fading, and Magikoopa's fading. | |
$7E:0695 | 108 bytes | Empty. Cleared during reset and titlescreen load. | |
$7E:0701 | 2 bytes | BG Colour. Used during gameplay in conjunction with $2132. | |
$7E:0703 | 512 bytes | The whole palette. Seems to only be used in the level loading routine. | |
$7E:0903 | 2 bytes | Copy of BG colour $0701/2. | |
$7E:0905 | 496 bytes | Copy of palettes 0-F from $0703-$08F2. Only the first half of palette F is included. | |
$7E:0AF5 | 1 byte | Cleared during reset and titlescreen load. Also cleared after a boss had been beaten. | |
$7E:0AF6 | 256 bytes | Used for three different things: 1. Decompressed overworld graphics, animated tiles. For that it also cooperates with $0BF6-$0C55. 2. Iggy's platform interaction. (16x16.) 3. Various tables for the Yoshi eggs at the credits. That includes how much time to wait until a new egg breaks ($0B08), Y speed ($0B0C,x), etc. | |
$7E:0BF6 | 384 bytes | Decompressed GFX for tiles 4A-4F, 5A-5F of SP1. | |
$7E:0D76 | 2 bytes | Used during the Mario GFX DMA routine. It holds the first of three possible source addresses. | |
$7E:0D78 | 2 bytes | Used during the Mario GFX DMA routine. It holds the second of three possible source addresses. | |
$7E:0D7A | 2 bytes | Used during the Mario GFX DMA routine. It holds the third of three possible source addresses. | |
$7E:0D7C | 2 bytes | Used during the Mario GFX DMA routine. It holds the first of three possible VRAM addresses. | |
$7E:0D7E | 2 bytes | Used during the Mario GFX DMA routine. It holds the second of three possible VRAM addresses. | |
$7E:0D80 | 2 bytes | Used during the Mario GFX DMA routine. It holds the third of three possible VRAM addresses. | |
$7E:0D82 | 2 bytes | Pointer to Mario/Luigi pallete. B2C8=Mario B2DC=Luigi, B2F0=Fire Mario, B304=Fire Luigi | |
$7E:0D85 | 20 bytes | 2 byte pointers in bank 7E for uploading Player's onscreen tiles. 2 sets of 10 bytes (top half, bottom half) for Mario's head, body, cape, Yoshi head / Fireball, Yoshi body / Fireball. | |
$7E:0D99 | 2 bytes | Holds the lower two bytes of the RAM address where the player's graphics are stored; used during the player graphics DMA routine. | |
$7E:0D9B | 1 byte | Activates different level modes, depending on the following values: $00 = Regular level $01 = Mario Start, Time Up, etc. + Title Screen + Castle destruction scene $02 = Overworld $80 = Iggy's and Larry's battle mode $C0 = Morton's and Roy's battle mode $C1 = Bowser (Not sure if this is all of them) | |
$7E:0D9C | 1 byte | Empty. Cleared during reset and titlescreen load. | |
$7E:0D9D | 1 byte | Main Screen Setting of Current Level Mode (000abcde a = Object b = BG 4 c = BG 3 d = BG 2 e = BG 1). Appear as TM in LM. Mirror of $212C, transfer only occurs on level load. | |
$7E:0D9E | 1 byte | Sub Screen Setting of Current Level Mode (000abcde a = Object b = BG 4 c = BG 3 d = BG 2 e = BG 1). Appear as TD in LM. Mirror of $212D, transfer only occurs on level load. | |
$7E:0D9F | 1 byte | H-DMA Channel Enable: abcdefgh a = Channel 7 .. h = Channel 0: 1 = Enable 0 = Disable. Mirror of $420C. | |
$7E:0DA0 | 1 byte | Current Player (0 - Player 1, 1 - Player 2). Used by controller Routine. | |
$7E:0DA1 | 1 byte | Empty. Cleared during reset and titlescreen load. | |
$7E:0DA2 | 1 byte | Copy of controller data 1. | |
$7E:0DA3 | 1 byte | 2nd Player Controller data 1 - All the same values as $7E0015 | |
$7E:0DA4 | 1 byte | Copy of controller data 2. | |
$7E:0DA5 | 1 byte | 2nd Player Controller data 2 - All the same values as $7E0017 | |
$7E:0DA7 | 1 byte | 2nd Player Controller data 1 - All the same values as $7E0015 - One frame | |
$7E:0DA9 | 1 byte | 2nd Player Controller data 2 - All the same values as $7E0017 - One frame | |
$7E:0DAE | 1 byte | Brightness (0-F). Mirror of $2100. | |
$7E:0DAF | 1 byte | Mosaic direction. 00 when shrinking size. 01 when increasing size. | |
$7E:0DB0 | 1 byte | Current mosaic pixel size on level load. Mirror of $2106, bits 0 and 1 always set. | |
$7E:0DB1 | 1 byte | Is used to keep a mode active. If value is positive, game mode doesn't change. | |
$7E:0DB2 | 1 byte | 2-Player Flag | |
$7E:0DB3 | 1 byte | Character. 00=Mario; 01=Luigi | |
$7E:0DB4 | 1 byte | Mario's Lives | |
$7E:0DB5 | 1 byte | Luigi Lives | |
$7E:0DB6 | 1 byte | Mario Coins | |
$7E:0DB7 | 1 byte | Luigi Coins | |
$7E:0DB8 | 1 byte | Mario Powerup | |
$7E:0DB9 | 1 byte | Luigi Powerup | |
$7E:0DBA | 1 byte | Mario Yoshi Colour | |
$7E:0DBB | 1 byte | Luigi Yoshi Colour | |
$7E:0DBC | 1 byte | Mario Item Box. 00=Nothing; 01=Mushroom; 02=Cape; 03=Fire Flower | |
$7E:0DBD | 1 byte | Luigi Item Box. 00=Nothing; 01=Mushroom; 02=Cape; 03=Fire Flower | |
$7E:0DBE | 1 byte | Current player's lives | |
$7E:0DBF | 1 byte | Current player's coins | |
$7E:0DC0 | 1 byte | Green Star Block Count Counter (starts at 30, decrements for each coin) | |
$7E:0DC1 | 1 byte | Player can carry Yoshi over levels flag. | |
$7E:0DC2 | 1 byte | Item in the reserved item aka Item Box. #$00=None; #$01=Mushroom; #$02=Fire Flower; #$03=Star; #$04=Cape | |
$7E:0DC4 | 3 bytes | Empty. Cleared during reset and titlescreen load. | |
$7E:0DC7 | 2 bytes | OW X position of Mario (Same as $7E:1F17(?)) | |
$7E:0DC9 | 2 bytes | OW Y position of Mario (Same as $7E:1F19 (?)) | |
$7E:0DCB | 2 bytes | OW X position of Luigi (Same as $7E:1F1B (?)) | |
$7E:0DCD | 2 bytes | OW Y position of Luigi (Same as $7E:1F1D (?)) | |
$7E:0DD3 | 1 byte | Player direction. 0 = up, 2 = down, 4 = left, 6 = right. | |
$7E:0DD5 | 1 byte | FF = activate secret event on level exit | |
$7E:0DD6 | 1 byte | Current player. Used on the overworld. Is actually $0DB3 * 4. | |
$7E:0DD7 | 1 byte | Empty. Cleared during reset and titlescreen load. | |
$7E:0DD9 | 1 byte | Empty. Cleared during reset and titlescreen load. | |
$7E:0DDA | 1 byte | Copy of $1DFB, the music register, but is forced to be normal music (nothing above 80.) | |
$7E:0DDB | 3 bytes | Empty. Cleared during reset and titlescreen load. | |
$7E:0DDE | 1 byte | Which file to erase on the erase file screen. Format: xxxxx123 | |
$7E:0DE5 | 16 bytes | OW Sprite Type (table) | |
$7E:0E35 | 16 bytes | OW Sprite XPos Low | |
$7E:0E45 | 16 bytes | OW Sprite YPos Low | |
$7E:0E65 | 16 bytes | OW Sprite XPos High | |
$7E:0E75 | 16 bytes | OW Sprite YPos High | |
$7E:0E85 | 16 bytes | Apparently unused RAM; judging by the surrounding addresses, there was once an overworld sprite table of some kind here. Cleared during reset and titlescreen load. | |
$7E:0E95 | 16 bytes | OW Sprite X speed | |
$7E:0EA5 | 16 bytes | OW Sprite Y speed | |
$7E:0EF7 | 1 byte | If negative and Mario is on a level tile, Mario will enter it directly. | |
$7E:0EF8 | 1 byte | Yoshi has been saved for the first time flag (used for Yoshi's thank message) | |
$7E:0EF9 | 55 bytes | Status Bar Tilemap | |
$7E:0F30 | 1 byte | Timer Frame Counter. After this reaches $00, the game decrements the timer. | |
$7E:0F31 | 3 bytes | Timer $0F31 = Hundreds $0F32 = Tens $0F33 = Ones | |
$7E:0F34 | 3 bytes | Mario Score | |
$7E:0F37 | 3 bytes | Luigi Score | |
$7E:0F3A | 6 bytes | Empty. Cleared on reset and titlescreen load. | |
$7E:0F40 | 2 bytes | Amount of score to add up to the score total, at level end. (Decrements as total score increments.) | |
$7E:0F42 | 6 bytes | Empty. Cleared on reset and titlescreen load. | |
$7E:0F48 | 1 byte | Mario Bonus stars | |
$7E:0F49 | 1 byte | Luigi Bonus Stars | |
$7E:0F4A | 20 bytes | Castle background flame's frame to display. Is also used for Boo ring to determine its speed, 00 = still, 01-7F = counter-clockwise, 80-FF = clockwise. Is also used for several other sprites that are generated by one single sprites, such as the ghost ceiling, not necessarily for the same purpose. | |
$7E:0F5E | 20 bytes | Empty. Cleared during reset and titlescreen load. (Was probably intended for use with castle BG flame generator.) | |
$7E:0FBA | 2 bytes | Determines if Boo ring should be loaded or not. 00 = no, any non-zero value = yes. | |
$7E:0FBE | 1,024 bytes | 16-bit pointer table, indexed by Map16 tile number*2. Points to the image to use for a certain Map16 tile. Usually starts with $8000 or $9100 and the value counts up with 8 per 2 RAM addresses. Bank byte should be $0D. | |
$7E:13BE | 1 byte | Item Memory settings from header | |
$7E:13BF | 1 byte | Translevel number, set during transfer from world map to level. This identifies the first room of the current level. To convert this to a room number (the "level number" in Lunar Magic), if > $24, then add $DC. The actual formula is more complex. If translevel number > $24, then subtract $24. Then check RAM $7E:1F11 or $7E:1F12. If the player is in a submap (not the big world map), then add $100. The submaps of Super Mario World use translevel numbers > $24, and the big map uses numbers <= $24, so the simplication is that $100 - $24 is $DC. | |
$7E:13C0 | 1 byte | Empty. Cleared during reset and titlescreen load. | |
$7E:13C1 | 1 byte | Current overworld tile the player is standing on. | |
$7E:13C2 | 1 byte | Empty. Cleared during reset and titlescreen load. | |
$7E:13C3 | 1 byte | Current player's submap (0 = Main Map, 1 = Yoshi's, 2 = Vanilla, 3 = Forest, 4 = Bowser's, 5 = Special, 6 = Star) | |
$7E:13C4 | 1 byte | Empty. Cleared during reset and titlescreen load. | |
$7E:13C5 | 1 byte | Increases each time a 3UP moon is collected, serves no other purpose. (Its value is never loaded originally.) | |
$7E:13C6 | 1 byte | Used by SMW's cutscenes. It's from 1-8 and go in the order of the boss battles, e.g. 01 = Iggy's castle, 02 = Morton's castle and 08 = Credits | |
$7E:13C7 | 1 byte | Yoshi colour (4=yellow, 6=blue, 8=red, A=green - refreshes on level change) | |
$7E:13C8 | 1 byte | Empty. Cleared on reset and titlescreen load. | |
$7E:13C9 | 1 byte | Show "Continue/End menu on the Overworld" flag | |
$7E:13CA | 1 byte | Show Save Prompt on the overworld flag. It actually triggers when you get on a new level tile. | |
$7E:13CB | 1 byte | This has been left out in the current SMW version. When you hit a goal tape, and spawn a starman (which is never), this is set to $01. Now each time you switch an area in a level, this gets multiplied by 2. When this reaches $80 (changed area 7 times), you will start the area with the star power. The instructions which sets this address to $01 is located at $00:FB5C. | |
$7E:13CC | 1 byte | The value you store here is the amount of coins that are being added up to the total. Usually, $13CC is either #$00 or #$01, but it can be set to other values too. | |
$7E:13CD | 1 byte | "Don't activate the midway point when you touch it" flag | |
$7E:13CE | 1 byte | Midway Point flag | |
$7E:13D2 | 1 byte | Multi-purpose flag. Used, for example, for when the level ending flag is set, it acts similarly to when the ! Switches are pressed if value != $00. On the OW, it will temporarily spawn ! blocks. (#$01 for Yellow, #$02 for Blue, #$03 for Red and #$04 for Green, all others unused). | |
$7E:13D3 | 1 byte | Timer that disables Start from flipping the Pause flag, if value isn't 0. | |
$7E:13D4 | 1 byte | Pause flag (Levels) and look around the overworld flag (Overworld). [01] activates the flag. | |
$7E:13D7 | 1 byte | Y speed for the intro march (walking to Yoshi's House). It's in fractions. The higher the value, the lower the speed. | |
$7E:13D9 | 1 byte | Seems to be a "Cause Mario event" address on the OW. Probably used when mario just beat a level, the events are activated, etc. 01 -mario goes down whatever path is available (used when just loading OW after finishing a level, to show events and then make mario walk down them?) 02 - Freeze mario, does nothing. 03 - Makes mario face the direction he wants to go 04 - acts like mario just beat the level, aside from activating events. 05 - Same as 02 06 - fade in/out 07 - switches between mario and luigi (even on 1 player) 08 - Same as 06 09 - fades to black. 0A - Fades in/out like when you enter a new area 0B - Activates star warp, if no star warp on that tile warps to closest pipe/star etc 0C - Causes mario to slowly walk forward like he does when you enter the OW for the first time Also used by level end: 00 - Show up the course clear stuff 01 - Keep it on the screen? 02 - Count down timer/convert to score 03 - Do nothing | |
$7E:13DA | 1 byte | Accumulating fraction bits for fixed point Mario X speed. | |
$7E:13DC | 1 byte | Accumulating fraction bits for fixed point Mario Y speed. | |
$7E:13DD | 1 byte | Posed used when player is turning around. Uses same format as $13E0. | |
$7E:13DF | 1 byte | Cape Image | |
$7E:13E0 | 1 byte | Mario Image | |
$7E:13E2 | 1 byte | Seems to be another spin-jump fireball timer. It increments every frame. If any of the first four bits are set, Mario won't shoot a fireball. If bit 4 ($10) is set, it shoots a fireball. | |
$7E:13E3 | 1 byte | Mario is wall-running flag. 0=not wall-running 2=on bottom left (45° angle) 3=on bottom right (45° angle) 4=on top left (45° angle, on top of the wall) 5=on top right (45° angle, on top of the wall) 6=on the left wall 7=on the right wall Note that custom blocks doesn't work while wall-running! | |
$7E:13E4 | 1 byte | Mario Dash Timer. Increases by $02 every frame Mario is walking (and on the ground) with the Dash button held, decrements until at $00 otherwise. $70 indicates Max Running Speed, and means you are ready to take off with the cape. | |
$7E:13E6 | 2 bytes | Empty. Cleared during reset, titlescreen, OW and level load. | |
$7E:13E8 | 1 byte | Set to $01 if the game is suppose to run the cape spin interraction with sprite | |
$7E:13E9 | 2 bytes | Determines X position of cape interaction inside the level (relative to screen 0, not the visible part). It's adjusted when the cape attack is used. | |
$7E:13EB | 2 bytes | Determines Y position of cape interaction inside the level (relative to screen 0, not the visible part). It's adjusted when the cape attack is used. | |
$7E:13ED | 1 byte | Probably a Player Is On Slope flag or a Player Is Sliding flag | |
$7E:13F1 | 1 byte | Vertical Scroll enable flag. | |
$7E:13F3 | 1 byte | Frame to show for inflated Mario. (P-Balloon) | |
$7E:13F4 | 5 bytes | A byte assigned to each row of blocks in the coin bonus game. Updated as blocks are chosen by Mario to decide whether a life is given or not. | |
$7E:13F9 | 1 byte | Mario goes behind stuff flag | |
$7E:13FB | 1 byte | Mario is frozen flag. This includes controls and animation. Other sprites still move and can interact with Mario, but cause the game to mess up if they touch him. This may be useful for cutscenes to eliminate the jumping sound. | |
$7E:13FD | 1 byte | When the R or L triggers are pressed this address gets set to 01 which briefly freezes the screen while the screen scrolls in whatever direction you pressed. | |
$7E:13FE | 1 byte | 02 = scroll right, 04 = scroll left. Is used when L/R is pressed. | |
$7E:1401 | 1 byte | Amount of time you need to press the L/R button to be able to scroll the screen. | |
$7E:1403 | 1 byte | Tide settings for current layer 3 image 00 - Not a tide image 01 - Water level changes 02 - Water level doesn't change | |
$7E:1407 | 1 byte | Mario is flying flag | |
$7E:140D | 1 byte | Spin Jump flag | |
$7E:140F | 1 byte | Keeps increasing as long as you are in the Reznor boss battle room. Likely to be used as a flag to determine which OAM index the smoke tiles coming from Mario's feet should have. | |
$7E:1410 | 1 byte | Yoshi Has Wings flag # 1. The value 02 enables it. This doesn't handle the flying ability. | |
$7E:1411 | 1 byte | Horizontal scroll settings from header flag. If clear, disable horizontal scrolling. Else, enable horizontal scrolling. | |
$7E:1412 | 1 byte | Vertical scroll settings from header | |
$7E:1413 | 1 byte | Horizontal scroll setting (0 = None, 1 = Constant, 2 = Variable) | |
$7E:1414 | 1 byte | Vertical scroll setting (0 = None, 1 = Constant, 2 = Variable, 3 = Slow) | |
$7E:1419 | 1 byte | Somewhat of a "Sprites go behind stuff" flag. 00-No effect 01-Any sprite Mario is holding will go behind objects (includes riding Yoshi) 02-Same as 0x01, but the sprite has the same XY coordinates as Mario. | |
$7E:141A | 1 byte | Counter that increments every time a new level is entered (with a door or pipe) - this enables you to distinguish the 'mother'-level from sublevels. Note: Don't enter a new level 256 times, or a glitch will occur. | |
$7E:141C | 1 byte | Secret Goal Sprite flag (not checked in vertical levels) | |
$7E:141D | 1 byte | Disable Mario Start! Flag | |
$7E:141E | 1 byte | Yoshi has wings flag. The only possible value for this address in the original is #$02, but setting to #$01 will allow Mario to throw fireballs if on Yoshi (even if he is not Firey Mario) | |
$7E:1420 | 1 byte | Yoshi Coins collected. Does not affect status bar. | |
$7E:1421 | 1 byte | Counter used by the invisible 1up checkpoint (starts from 0, increases after touching each block) | |
$7E:1422 | 1 byte | Amount of Yoshi Coins to display on the status bar. (Values 01-04 will make it display any.) | |
$7E:1425 | 1 byte | Bonus game - If set, Mario will be sent to the bonus game when you change areas in the level. | |
$7E:1426 | 1 byte | Message Box Trigger (1=Message 1, 2=Message 2, 3=Yoshi thanks message) | |
$7E:1433 | 1 byte | Scaling factor of the growing circle before the Titlescreen starts. Starts at 0, circle gets bigger when the value increases. Loads titlescreen when value becomes #$F0 or higher. Also used for the keyhole. | |
$7E:1434 | 1 byte | Set to #$30 to end level via keyhole | |
$7E:1435 | 1 byte | Keyhole growing/shrinking flag. | |
$7E:1436 | 1 byte | Keyhole X position | |
$7E:1438 | 1 byte | Keyhole Y position | |
$7E:143A | 1 byte | When set to a non-zero value, it will load the "Mario Start!" tiles (Mario GFX will be replaced with the letters) | |
$7E:143B | 1 byte | Death Message. $1D = "Time up!" Message. $14 = "Game Over" Message | |
$7E:143C | 1 byte | Death Message Animation timer. (For example, when "Game" and "Over" come to each other like this: Game --> <--Over) | |
$7E:143D | 1 byte | How long the Death Message lasts timer. | |
$7E:143E | 1 byte | Scrolling command number. Basically the sprite value you find in Lunar Magic - #$E7. 0F-FF are incompatible. | |
$7E:1446 | 2 bytes | Speed to give the player when he's touching the side of a screen, during a level which does not have regular Layer 1 scrolling. Values are different depending on the type of (auto-)scroll. | |
$7E:1460 | 1 byte | Layer 3 scrolling direction | |
$7E:1462 | 2 bytes | Layer 1 X position (level) (16-bit) | |
$7E:1464 | 2 bytes | Layer 1 Y position (level) (16-bit) | |
$7E:1466 | 2 bytes | Layer 2 X position(level) | |
$7E:1468 | 2 bytes | Layer 2 Y position(level) | |
$7E:1470 | 1 byte | Carrying something flag | |
$7E:1471 | 1 byte | Determines what type of platform you are on. I.E., 01 is for the floating rock. It enables you to jump and run in the air. Followed by a sinking effect. The same effect you get when standing on a floating rock. This is on Yoshi's Island 4 stage. | |
$7E:148B | 2 bytes | Output of random number generation routine, located at $01:ACF9. | |
$7E:148D | 2 bytes | Used by random number generation subroutine to determine the next output. | |
$7E:148F | 1 byte | Flag used to detect if Mario holds an object. | |
$7E:1490 | 1 byte | Star timer ($FF=16 (hex) sec on game timer) | |
$7E:1491 | 1 byte | Amount of pixels on the X/Y axis a sprite has moved in the current frame. It is set after every call to update sprite position based on speed, and the routine that updates both X/Y position based on speed will leave $1491 with the movement on the X axis in this address. Very often used for rideable sprites as this address can be added to mario's position to move Mario in tandem with the sprite. | |
$7E:1492 | 1 byte | Mario Peace Image (level finished march) timer. | |
$7E:1493 | 1 byte | End level timer. Setting to FF will end the level as a goal sphere; however, this is a timer. If your code always sets this address, then it will never end. Setting it to 01 (even repeatly) will make it flash with ugly colors and end the level. | |
$7E:1495 | 1 byte | Something related about the fadeout after you defeat a boss. Seems to stop increasing when it reaches $40. | |
$7E:1496 | 1 byte | Mario Hurt Frame Timer | |
$7E:1497 | 1 byte | Flashing Invincible Timer | |
$7E:1498 | 1 byte | Time to show Mario's Ducking while holding an item pose. | |
$7E:1499 | 1 byte | Timer for Mario to face the screen. | |
$7E:149A | 1 byte | Time to show Mario's kicking Pose. | |
$7E:149B | 1 byte | Time for Mario to change through palettes (Used for fire animation) | |
$7E:149C | 1 byte | Time to show Mario shooting a fireball pose (Includes in air and on ground) | |
$7E:149F | 1 byte | Related to Vertical Screen Scrolling. #$00 = No effect. $%01+ = Vertical Screen Scrolling. Possibly related to flying or running fast? | |
$7E:14A0 | 1 byte | Is set to $10 when the player is running and is supposed to display the running images. | |
$7E:14A1 | 1 byte | "Player slides a bit when turning around" timer. | |
$7E:14A5 | 1 byte | Is set to $10 when Mario is flying in the air with a cape. | |
$7E:14A6 | 1 byte | Cape spin timer. | |
$7E:14AB | 1 byte | Bonus game ending timer. Does nothing in a normal level, but during a bonus game, setting it will end the bonus game and return to the overworld. At 44 it starts the "end bonus game" music, and at 01 it actually fades to the overworld. | |
$7E:14AD | 1 byte | Blue POW Timer | |
$7E:14AE | 1 byte | Silver POW Timer | |
$7E:14AF | 1 byte | On/Off Switch Value. 00 is ON and all others are OFF. | |
$7E:14B2 | 1 byte | Used when Bowser is scaling (before the flames fall out of the sky). 0 = shrinking 1 = growing 2 = disappear | |
$7E:14C8 | 12 bytes | Sprite Status Table. 00=Non-existant 01=Initial 02=Killed, falling off screen 03=Smushed 04=Spinjumped 05=Sinking in lava 06=Turn into coin at lvl end 07=Stay in Yoshi's mouth 08=Normal routines 09=Stationary/Carryable 0A=Kicked 0B=Carried 0C=Powerup from being carried past goaltape. | |
$7E:14D4 | 12 bytes | Sprite Ypos High Byte (table) | |
$7E:14E0 | 12 bytes | Sprite Xpos High Byte (table) | |
$7E:14EC | 12 bytes | Accumulating fraction bits for fixed point Y speed. | |
$7E:14F8 | 12 bytes | Accumulating fraction bits for fixed point X speed. | |
$7E:1504 | 12 bytes | Sprite table that is not restricted to one predefined purpose. Is used as e.g. throw timer. | |
$7E:1510 | 12 bytes | Misc. sprite table apparently. Used in the brown platform's graphics routine but nowhere else in SMW's entire code. | |
$7E:151C | 12 bytes | Sprite table that is not restricted to one predefined purpose. Is used for vertical direction in SMW, and Yoshi uses it to determine which sprite to spawn out of an egg. $1520-$1523 is a 'Reznor killed flag'. If a byte is set to $01, the Reznor will disappear. Byte 1 is for Reznor 1, Byte 2 for Reznor 2 and so on. | |
$7E:1528 | 12 bytes | Sprite table that is not restricted to one predefined purpose. In SMW it's used for Chargin' Chuck HP, Thwomp's face expression, etc. | |
$7E:1534 | 12 bytes | Sprite table that does not affect most of the common sprites. It's a table that is not restricted to one predefined purpose. Certain powerups use this table as a blink-fall flag: $00 => off. $01 => on, powerup will blink and fall straight down. The game stores $01 here when it drops the reserved item from the item box. The blink-fall flag affects the Super Mushroom and the Fire Flower, but not the Cape Feather. The blink-fall flag also affects some other sprites, at least the Starman, the 1up Mushroom and the sprite-coin (from fireballing enemies), but these sprites might glitch if you set the flag. One glitch is that the blinking sprite-coin permanently occupies a sprite slot if it falls off the level, so might prevent the spawning of other common sprites. This table might also have an unknown affect to a few other sprites. Value $01 seems to cause Super Koopas to flash their capes (but not to give feathers). | |
$7E:1540 | 12 bytes | Sprite table that is not restricted to one predefined purpose. This table already decrements by itself once per frame. Some sprites use this table as a stun timer. For example, this timer controls when flipped Goombas and squashed Mecha-Koopas decide to rise and walk. This table is also the Sprite Spin Jump Death Frame Counter. | |
$7E:154C | 12 bytes | Time to disable sprite's contact with Mario. This table already decrements by itself once per frame. | |
$7E:1558 | 12 bytes | Sprite table that is not restricted to one predefined purpose. This table already decrements by itself once per frame. | |
$7E:1564 | 12 bytes | Time to disable sprite's contact with other sprites. This table already decrements by itself once per frame. | |
$7E:1570 | 12 bytes | Sprite table that does not have a predefined purpose. In SMW, it's used as a frame counter for timed lifts (amount of frames until it hits zero), a frame counter that indicates when sprites 00-13 that have the 'Follow player' flag set should turn, etc. | |
$7E:157C | 12 bytes | Sprite table that is not restricted to one predefined purpose. Often used as horizontal sprite direction table (0=Right, 1=Left) | |
$7E:1588 | 12 bytes | Sprite blocked status table. Format: xxxxUDLR. | |
$7E:1594 | 12 bytes | Sprite table that has no predefined purpose. (Read: Can be used for any purpose.) In classic Piranha Plants, it is used to check if the sprite should be made visible and have interaction with Mario. (If it's any non-zero value, it will become invisible.) | |
$7E:15A0 | 12 bytes | Sprite off screen flag, horizontal | |
$7E:15AC | 12 bytes | Sprite table that is not restricted to one predefined purpose. This table already decrements by itself once per frame. In SMW, it is often used as a timer to determine how long it takes to turn around. | |
$7E:15C4 | 12 bytes | A table which is set to $01 if the sprite in question is off-screen. For example, the rings of the Ball 'n' Chain are never drawn if this is a non-zero value. | |
$7E:15D0 | 12 bytes | Sprite Being Eaten Flag Table | |
$7E:15DC | 12 bytes | Table Related to sprite interaction with objects. Set and the sprite falls through objects. | |
$7E:15E9 | 1 byte | Sprite index for the current sprite that is being processed. | |
$7E:15EA | 12 bytes | Sprite's index to OAM | |
$7E:15F6 | 12 bytes | Sprite Palette/GFX High Byte Table - (Tile#Hi - 2) + 2 * (Palette# - 8). YXPPCCCT format. | |
$7E:1602 | 12 bytes | Sprite table that is not restricted to one predefined purpose. Often used as graphics pointer. | |
$7E:160E | 12 bytes | Sprite table that has no predefined purpose. In SMW, it is used to keep track of things such as the green bouncing Koopa's Y speed and the sprite number of certain spawned, kicked, etc. sprites. | |
$7E:161A | 12 bytes | Sprite's index to level table - set to FF to prevent from reloading it once it goes offscreen | |
$7E:1626 | 12 bytes | Consecutive enemies jumped on table. | |
$7E:1632 | 12 bytes | Sprite Interaction Disable Flag | |
$7E:163E | 12 bytes | Sprite table that is not restricted to one predefined purpose. This table already decrements by itself once per frame. | |
$7E:164A | 12 bytes | Sprite Follower Table (0=None, 1-7F=Clouds, 80-FF=Fire) | |
$7E:1656 | 12 bytes | Sprite properties, first Tweaker/MWR byte. Format: sSjJcccc s=Disappear in cloud of smoke S=Hop in/kick shells j=Dies when jumped on J=Can be jumped on cccc=Object clipping | |
$7E:1662 | 12 bytes | Sprite properties, second Tweaker/MWR byte. Format: dscccccc d=Falls straight down when killed s=Use shell as death frame cccccc=Sprite clipping | |
$7E:166E | 12 bytes | Sprite properties, third Tweaker/MWR byte. Format: lwcfpppg l=Don't interact with layer 2 w=Disable water splash c=Disable cape killing f=Disable fireball killing ppp=Palette g=Use second graphics page | |
$7E:167A | 12 bytes | Sprite properties, fourth Tweaker/MWR byte. Format: dpmksPiS d=Don't use default interaction with Mario p=Gives power-up when eaten by Yoshi m=Process interaction with Mario every frame k=Can't be kicked like a shell s=Don't change into a shell when stunned P=Process while off screen i=Invincible to star/cape/fire/bouncing bricks S=Don't disable clipping when killed with star | |
$7E:1686 | 12 bytes | Sprite properties, fifth Tweaker/MWR byte. Format: dnctswye d=Don't interact with objects n=Spawns a new sprite c=Don't turn into a coin when goal passed t=Don't change direction if touched s=Don't interact with other sprites w=Weird ground behavior y=Stay in Yoshi's mouth e=Inedible | |
$7E:1692 | 1 byte | Sprite Memory setting from header | |
$7E:1693 | 1 byte | Block # in custom block code (low byte; high byte is Y register) | |
$7E:1697 | 1 byte | Consecutive enemies stomped | |
$7E:1698 | 1 byte | Used as index to minor extended sprites. | |
$7E:1699 | 4 bytes | Block Bounce Sprite Image Table / Block Bounce sprite number | |
$7E:169D | 4 bytes | Block Bounce Sprite ? Table | |
$7E:16A1 | 4 bytes | Block Bounce Sprite Ypos Low Byte Table | |
$7E:16A5 | 4 bytes | Block Bounce Sprite Xpos Low Byte Table | |
$7E:16A9 | 4 bytes | Block Bounce Sprite Ypos High Byte Table | |
$7E:16AD | 4 bytes | Block Bounce Sprite Xpos High Byte Table | |
$7E:16B1 | 4 bytes | Block Bounce Sprite YSpeed Table | |
$7E:16B5 | 4 bytes | Block Bounce Sprite XSpeed Table | |
$7E:16C1 | 4 bytes | Block Bounce Sprite Turns Into Table | |
$7E:16C5 | 4 bytes | Block Bounce Sprite Bouncing Flag Table | |
$7E:16C9 | 4 bytes | Block Bounce Sprite ? Table | |
$7E:16CD | 4 bytes | Block Bounce Sprite Exists Flag Table | |
$7E:16E1 | 6 bytes | Score/1up Sprite Type (table) #$00: None #$01: 10 points #$02: 20 points #$03: 40 points #$04: 80 points #$05: 100 points #$06: 200 points #$07: 400 points #$08: 800 points #$09: 1000 points #$0A: 2000 points #$0B: 4000 points #$0C: 8000 points #$0D: 1UP #$0E: 2UP #$0F: 3UP #$10: 5UP | |
$7E:16E7 | 6 bytes | Score/1up sprite Ypos low byte (table) | |
$7E:16ED | 6 bytes | Score/1up Sprite X-pos low byte (table) | |
$7E:16F3 | 6 bytes | Score/1up Sprite X-pos high byte (table) | |
$7E:16F9 | 6 bytes | Score/1up Sprite Y-pos, high byte (table) | |
$7E:16FF | 6 bytes | Score/1up Sprite Movement/Speed (table) | |
$7E:1705 | 6 bytes | Score/1up Sprite Inital Ypos (table) | |
$7E:170B | 8 bytes | Type of extended sprite (0-12): 01 - Puff of smoke with various objects 02 - reznor fireball 03 - flame left by hopping flame 04 - hammer 05 - mario fireball 06 - bone 07 - Lava Splash (doesn't hurt, parabolic down) 08 - Torpedo Ted shooter's arm 09 - Red thing that flickers from 16x16 to 8x8 0A - coin from cloud game 0B - piranha fireball 0C - lava lotus fire 0D - baseball 0E - Flower of Wiggler 0F - Trail of smoke 10 - Spin Jump star 11 - yoshi fireballs 12 - Water bubble | |
$7E:1713 | 1 byte | Fireball 2 Status (0=Doesn't Exist, 1=Hit Something, 5=Exists) | |
$7E:1714 | 1 byte | Fireball 1 Status (0=Doesn't Exist, 1=Hit Something, 5=Exists) | |
$7E:1715 | 8 bytes | Extended sprite Y position, Low Byte | |
$7E:171D | 1 byte | Fireball 2 Ypos Low Byte | |
$7E:171E | 1 byte | Fireball 1 Ypos Low Byte | |
$7E:171F | 8 bytes | Extended sprite X position, Low Byte | |
$7E:1727 | 1 byte | Fireball 2 Xpos Low Byte | |
$7E:1728 | 1 byte | Fireball 1 Xpos Low Byte | |
$7E:1729 | 8 bytes | Extended sprite Y position, High Byte | |
$7E:1731 | 1 byte | Fireball 2 Ypos High Byte | |
$7E:1732 | 1 byte | Fireball 1 Ypos High Byte | |
$7E:1733 | 8 bytes | Extended sprite X position, high byte | |
$7E:173B | 1 byte | Fireball 2 Xpos High Byte | |
$7E:173C | 1 byte | Fireball 1 Xpos High Byte | |
$7E:173D | 8 bytes | Extended sprite Y speed | |
$7E:1745 | 1 byte | Fireball Y Speed (2nd fireball) | |
$7E:1746 | 1 byte | Fireball Y Speed (First Fireball) | |
$7E:1747 | 8 bytes | Extended sprite X speed | |
$7E:174F | 1 byte | Fireball #2 X Speed | |
$7E:1750 | 1 byte | Fireball #1 X Speed (Default is 3 for right, $FD for left) | |
$7E:175B | 1 byte | Fireball Hit Flag Table | |
$7E:1763 | 2 bytes | Empty. Cleared during reset, titlescreen load, OW load and level load. | |
$7E:1765 | 8 bytes | Extended sprite table. Most extended sprites increment this table and use it for their GFX table. (Use a different image every x frames.) | |
$7E:176F | 1 byte | Fireball Hit Frame Counter Table | |
$7E:1779 | 8 bytes | Extended sprite goes behind stuff flag. | |
$7E:1781 | 1 byte | Fireball 2 Goes Behind Stuff Flag | |
$7E:1782 | 1 byte | Fireball 1 Goes Behind Stuff Flag | |
$7E:1783 | 8 bytes | Shooter number table. (Bullet Bill shooter = #$01, Torpedo Launcher = #$02.) | |
$7E:178B | 8 bytes | Related to the Y position of a shooter (low byte) | |
$7E:1793 | 8 bytes | Related to the Y position of a shooter (high byte) | |
$7E:179B | 8 bytes | Related to the X position of a shooter (low byte) | |
$7E:17A3 | 8 bytes | Related to the X position of a shooter (high byte) | |
$7E:17AB | 8 bytes | Amount of time it takes for a shooter to shoot the next sprite. | |
$7E:17B3 | 8 bytes | Table which holds the index for 'sprite being reloaded' for the table at $1938, for shooters. Shooters are always reloaded. | |
$7E:17C0 | 4 bytes | Smoke images. 00=Nothing 01=Puff of smoke 02=Contact graphic 03=Smoke when Mario turns around abruptly 04=None 05=Glitter sprite | |
$7E:17C4 | 4 bytes | Y low position of smoke images. | |
$7E:17C8 | 4 bytes | X low position of smoke images. | |
$7E:17CC | 4 bytes | Amount of time to show the smoke image. | |
$7E:17D0 | 4 bytes | "Spinning coin coming out of ? block" table. It's a free slot if it's zero. | |
$7E:17D4 | 4 bytes | Y position of spinning coin from a ? block (low byte). | |
$7E:17D8 | 4 bytes | Y speed of spinning coin spawned by ? block. $20-$9F will erase the sprite. | |
$7E:17DC | 4 bytes | Accumulating fraction bits of Y speed of spinning coin spawned by ? block. | |
$7E:17E0 | 4 bytes | X position of spinning coin from a ? block (low byte). | |
$7E:17E4 | 4 bytes | Table for spinning coin from a ? block. Value depends on whether the block is processed on Layer 1 or Layer 2 - the bounce sprite / smoke image will adjust its position relative to the layer in which it is processed. | |
$7E:17E8 | 4 bytes | Y position of spinning coin from a ? block (high byte). | |
$7E:17EC | 4 bytes | X position of spinning coin from a ? block (high byte). | |
$7E:17F0 | 12 bytes | Minor Extended Sprites type. 00=None 01=Piece of brick block 02=Small star 03=Cracked shell (Yoshi egg) 04=Fireball from Podoboo 05=Small star? 06=Rip van Fish Z tile 07=Water splash 08=Rip van Fish Z tile (unused) 09=Rip van Fish Z tile (unused) 0A=Boo Stream tile 0B=Unused Yoshi smoke | |
$7E:17FC | 12 bytes | Minor Extended Sprite's Y position, low. | |
$7E:1808 | 12 bytes | Minor Extended Sprite's X position, low. | |
$7E:1814 | 12 bytes | Minor Extended Sprite's Y position, high. | |
$7E:1820 | 12 bytes | Minor Extended Sprite's Y speed. | |
$7E:182C | 12 bytes | Minor Extended Sprite's X speed. | |
$7E:1850 | 12 bytes | Minor Extended Sprite timer, how long it stays active. | |
$7E:185C | 1 byte | Mario falls through Layer 1 flag. | |
$7E:185D | 1 byte | Related to the spawning of extended sprites. Used to index $17F0 (minor extended sprite type table) if there are no empty slots when an extended sprite needs to be spawned. This is so that the oldest extended sprite can be removed when a new one needs to be made. | |
$7E:185E | 1 byte | Sometimes used to keep track of a tile to generate at $00BEB0 (before storing to $9C). Also used to determine Y position of Mario when he's on the line guided rope, used to determine positions and such of Yoshi's tiles, etc. | |
$7E:185F | 1 byte | This is the low byte of the Map16 tile (actual tile number, not "acts like" setting) that a sprite is touching vertically. This is set after $019138, the subroutine that allows the sprite to interact with objects, is called. (This includes $01802A, the routine that updates the sprite's position with gravity, which calls $019138.) | |
$7E:1860 | 1 byte | This is the low byte of the Map16 tile (actual tile number, not "acts like" setting) that a sprite is touching horizontally. This is set after $019138, the subroutine that allows the sprite to interact with objects, is called. (This includes $01802A, the routine that updates the sprite's position with gravity, which calls $019138.) | |
$7E:1862 | 1 byte | This is the high byte of the Map16 tile (actual tile number, not "acts like" setting) that a sprite is touching horizontally. This is set after $019138, the subroutine that allows the sprite to interact with objects, is called. (This includes $01802A, the routine that updates the sprite's position with gravity, which calls $019138.) | |
$7E:186B | 1 byte | Multiple Coin Block timer. Set to 01 and the block becomes unused instantly. Set to FF for maximum time length. | |
$7E:186C | 12 bytes | Sprite off screen flag, vertical | |
$7E:187A | 1 byte | Riding Yoshi Flag (0=No, 1 or 2=Yes) | |
$7E:187B | 12 bytes | Sprite Stomp Immunity Flag Table. The changing item sprite uses it to determine which sprite it is. (#$00 = mushroom, #$40 = fire flower, #$80 = feather, #$C0 = star). Also used for things such as determining whether the goal tape should use the normal exit or the secret one, to hold the radius of rotating chain sprites, handling Yoshi abilities, etc. Most likely a miscellaneous sprite table with no predefined purpose. | |
$7E:1887 | 1 byte | Time to shake ground | |
$7E:1888 | 2 bytes | Layer 1 Image Y position, used by RAM $7E1887 (Shake ground) | |
$7E:188A | 1 byte | Empty. Cleared on death, level load, and in the Peach Rescued scene (not sure about details here). | |
$7E:188B | 1 byte | Something related about Mario's Image Y position, used by RAM $7E1887 (Shake Ground) | |
$7E:1890 | 1 byte | How many 1UPs to spawn. (Used for bonus game.) | |
$7E:1891 | 1 byte | P-balloon's timer | |
$7E:1892 | 20 bytes | Cluster sprites type. 00 = None (free slot), 01 = 1UP (bonus game), 02 = Unused (Would crash if used), 03 = Boo from ghost ceiling, 04 = Boo from Boo ring, 05 = castle candle flame, 06 = Sumo Brother flame, 07 = Reappearing ghost, 08 = Death bat. The pointer for those is at $02F825. | |
$7E:18AC | 1 byte | Yoshi Swallow Frame Counter/Status | |
$7E:18AF | 1 byte | Yoshi squatting timer. | |
$7E:18B0 | 2 bytes | Yoshi's Current X position. Used to determine where Yoshi is when eating a berry. | |
$7E:18B2 | 2 bytes | Yoshi's Current Y Position. Used to determine where Yoshi is when eating a berry. | |
$7E:18B6 | 1 byte | Sometimes used to keep track of a tile to generate at $00BEB0 (before storing to $9C); may be in conjunction with $185E. Also used to determine X position of Mario when he's on the line guided rope, used when Mario is on top of Boo Block, etc. | |
$7E:18B8 | 1 byte | If clear, cluster sprite code does not run. | |
$7E:18B9 | 1 byte | Shooter type of sprite. 00 - Eerie Generator, 01 = Para Goomba and so on. The pointer for this address is located at $02/B00C (SNES). | |
$7E:18BA | 1 byte | Determines amount of Boo rings per screen. Depending on bit 0 of this byte, the reappearing ghosts use position combination 1 or 2. | |
$7E:18BC | 1 byte | Floating skulls activation flag. Is set to 0x0C when Mario touches the sprite, and is reset in the sprite's INIT routine. | |
$7E:18BD | 1 byte | Time to stun mario. Mario will face the screen and be unable to move. | |
$7E:18BE | 1 byte | Related to Mario climbing. If > #$01, climbs if pressing up. | |
$7E:18BF | 1 byte | Timer used by a bunch of appearing/disappearing sprites (examples: Lakitu, Magikoopa, and Layer 3 smasher). Sprite D2 freezes it. | |
$7E:18C0 | 1 byte | Seems to be the timer for respawning certain sprites, such as the Boo Buddies of sprite E5 (and Lakitu). Sprite D2, Turn Off Generator 2, sets this to 00 when it is active. | |
$7E:18C1 | 1 byte | Used by Magikoopa and Lakitu to determine which sprite number to respawn. | |
$7E:18C2 | 1 byte | Mario is standing normal flag. Set above #$01 and his image stays at normal, but can still move. | |
$7E:18CD | 1 byte | Used as (alternative) index to bounce sprites. | |
$7E:18D2 | 1 byte | This address is increased every time mario kills a sprite with a star while the star is active and will reset when the star runs out. 00 = 200 01 = 400 02 = 800 03 = 1000 04 = 2000 05 = 4000 06 = 8000 07 and above = 1up | |
$7E:18D4 | 1 byte | Red berries eaten | |
$7E:18D5 | 1 byte | Pink berries eaten. | |
$7E:18D6 | 1 byte | Berry Type (0=Coin (no eggs), 1=Red, 2=Pink Berry, 3=Green) | |
$7E:18D7 | 1 byte | This is the high byte of the Map16 tile (actual tile number, not "acts like" setting) that a sprite is touching vertically. This is set after $019138, the subroutine that allows the sprite to interact with objects, is called. (This includes $01802A, the routine that updates the sprite's position with gravity, which calls $019138.) | |
$7E:18D9 | 1 byte | How far the castle door is open in the castle intro screen. | |
$7E:18DA | 1 byte | Sprite number that spawns when yoshi lays an egg. Is set to 78 normally (1up). | |
$7E:18DC | 1 byte | Flag that is set when Yoshi gets his tongue out while ducking. Yoshi cannot turn around in this state. If you were to use the debug codes at $00D085-$00D089 (x5285 - x5289), this also makes the fireballs that the player fires when on Yoshi appear at a different position. | |
$7E:18DE | 1 byte | Yoshi laying eggs timer. | |
$7E:18E2 | 1 byte | Loose Yoshi Flag (if set, any Yoshis spawned become 1ups instead) | |
$7E:18E4 | 1 byte | 1up Handler Address: Write a number to give that many lives. Handles everything except '1up' sprite. | |
$7E:18E5 | 1 byte | Timer for the 1up handler ($18E4). | |
$7E:18E7 | 1 byte | Yoshi ground stomp flag. (This is set to #$01 for a Yellow Yoshi or Yoshi with a yellow shell) | |
$7E:18E8 | 1 byte | Yoshi growing animation timer. Additionally, it freezes everything on the screen except Yoshi. | |
$7E:18EA | 12 bytes | Minor Extended Sprite's X position, high. | |
$7E:18F7 | 1 byte | Sprite index to $16E1. | |
$7E:18FD | 1 byte | Flag set when Whistlin' Chuck whistles. | |
$7E:18FE | 1 byte | The diagonal and surrounded bullet bills timer. It increments every frame, and when it reaches A0, it sends out some more bullet bills and resets itself. | |
$7E:18FF | 1 byte | Shooter index for the current shooter that is being processed. | |
$7E:1900 | 1 byte | Star Points Gained at level end (decrements to 0) | |
$7E:1901 | 4 bytes | YXPPCCCT data of bounce sprite that is being shown. | |
$7E:1905 | 1 byte | Iggy's Platform holds the total number of tilts made counter. It will increment everytime the platform will be at a maximum tilt. | |
$7E:1906 | 1 byte | Iggy's platform stationary phase counter. It will stop rotating the platform when you set it to anything higher than $01, and will stay so until it decrements to $00. | |
$7E:1907 | 1 byte | Iggy's platform rotation phase counter. Resets when it is about to reach $06. | |
$7E:1909 | 1 byte | Flag that makes the creating/eating block run or not run. FF = don't run, any other value (00) = run. Is set when a brown block is touched. | |
$7E:190B | 1 byte | Big Boo Boss palette index, used for the transparency effect. | |
$7E:190C | 1 byte | Directional coin timer. | |
$7E:190E | 1 byte | Sprite buoyancy settings from level header. Format: XY00 0000 (bits) X = Enable sprite buoyancy, but reduces the number of sprites that can be on the screen at once without slowing down. Y = Enable sprite buoyancy, but disables all other sprite interaction with layer 2 to reduce the processing cost and slowdown. | |
$7E:190F | 12 bytes | Sprite properties, sixth Tweaker/MWR byte. Format: wcdj5sDp w=Don't get stuck in walls (carryable sprites) c=Don't turn into a coin with silver POW d=Death frame 2 tiles high j=Can be jumped on with upward Y speed 5=Takes 5 firebals to kill s=Can't be killed by sliding D=Don't erase when goal passed p=Make platform passable from below | |
$7E:191F | 1 byte | Empty. Cleared on reset and titlescreen load. | |
$7E:1920 | 1 byte | How many 1UPs from the bonus game are still not collected. This ends the bonus game when this RAM address is $00, after you hit the spinning thing. | |
$7E:1925 | 1 byte | Level Mode settings from header | |
$7E:192A | 1 byte | Level header RAM address. Format: swaaaaaa. s = slippery level, w = water level, a = Mario action. If one of bits 3-5 are set, Mario action will be Vertical Pipe exit downwards, water level. | |
$7E:192B | 1 byte | Which Sprite GFX set to use | |
$7E:192D | 1 byte | FG Palette settings from header | |
$7E:192E | 1 byte | Sprite Palette settings from header | |
$7E:192F | 1 byte | BG Colour settings from header | |
$7E:1930 | 1 byte | BG Colour setting from header | |
$7E:1931 | 1 byte | Tileset (but also used for some other random stuff...?) | |
$7E:1932 | 1 byte | Tileset again | |
$7E:1933 | 1 byte | Layer being processed (0=layer 1, 1=layer 2; used in both level loading routine and processing interactions) | |
$7E:1938 | 128 bytes | Sprite Load Status Table. Loaded sprites' indices to this table are stored in the sprite table at $7E:161A All sprites are set to #$00 when the player enters a new area, meaning they are marked to be loaded. If a sprite's value is set to anything else, it will not reload until the player exits and re-enters the area. | |
$7E:19B8 | 32 bytes | Exit Table. This connects doors and exit-enabled pipes to their correct entrances. The index for this exit table is the position of the exit (relative to layer 1) divided by 256. If layer 1 is vertical, then use the Y position of the exit, else use the X position. This is also known as the current screen number. For primary exits, the value in this exit table is the low 8 bits of the level number of the destination room. For secondary exits, the value in this exit table is the index to the secondary entrance ROM tables; and ROM table $05:F800 provides the low 8 bits of the room number. | |
$7E:19D8 | 32 bytes | Exit Table, flags + high bit. Bit 0 = High bit of level # (1=level 1xx, 0=level 0xx) Bit 1 = Is Secondary Exit Flag Bit 2 = Is Exit Present Flag (set if any exit is on this screen) Bit 3 = Make Destination Water Flag (Secondary Exit only) Bits 4-7 = Unused Only used when LM is done with the ROM. | |
$7E:19F8 | 384 bytes | Three tables (128 bytes each) for remembering which items has been taken (item memory settings). 16 bits for each subscreen (X position is used to determine which of those bits is used). Note that item memory 3 propably won't work well! | |
$7E:1B80 | 1 byte | If 0, the player is walking with a regular speed. If 1, the player is walking with climbing speed. 2-FF are unused. | |
$7E:1B86 | 1 byte | Determines which pointer to use for the routine that runs events. | |
$7E:1B87 | 1 byte | Seems to be the overworld "continue/quit" image trigger, for when you get a game over and then go to the overworld. The values trigger as follows, although they all are glitchy: 00-04: (Nothing) 05 (play sound and get rid of mario 06 (display words, no functions 07 (Display select thing, which doesn't function 08 (open box again and again 09 open box do not repeat, disappears | |
$7E:1B88 | 1 byte | Message box expanding (0) or shrinking (1) flag. | |
$7E:1B89 | 1 byte | Message box expansion and shrinking timer/size. Note: Setting expanding timer above #$04 will cause the message to be blank. | |
$7E:1B91 | 1 byte | Blinking cursor frame counter (file select, save prompt, etc.) | |
$7E:1B92 | 1 byte | Blinking cursor position (value 00-03) | |
$7E:1B93 | 1 byte | Use Secondary Exits flag (likely not used when LM is done with the ROM) | |
$7E:1B94 | 1 byte | Disable bonus game sprite from being loaded flag. If not zero, the bonus game sprite will terminate itself in the init routine. | |
$7E:1B95 | 1 byte | When this flag is set, you will go to the special yoshi levels (C8, or 1C8) at the soonest possible loading time. Does not necessarily mean yoshi has wings. | |
$7E:1B96 | 1 byte | Side Exit Enabled flag | |
$7E:1B9A | 1 byte | Level::BG Scroll Activated Flag. Setting it to #$08 activates it. | |
$7E:1B9B | 1 byte | Keep status item upon death flag. If set to 01, mario will not lose his status box item when he dies. | |
$7E:1B9D | 1 byte | Time to wait after rising/lowering the tide | |
$7E:1B9F | 1 byte | Timer used for breaking the bridge in Reznor battles. | |
$7E:1BA0 | 1 byte | OW- Triggers shaking the ground. Any value will shake it, FE = valley of bowser entrance fanfare and rumble. never stops until value is set back to 00. | |
$7E:1BE3 | 1 byte | Layer 3 settings [citation needed] | |
$7E:1BE4 | 2 bytes | VRAM address to start uploading data from 7E1BE6. Big endian. | |
$7E:1BE6 | 256 bytes | Which tiles should be used for each row of 16x16 tiles, 2 bytes per 8x8 tile, used while updating the screen (loading new tiles). In horizontal levels, $1BE6-$1C65 forms the left column of 8x8 tiles while $1C66 forms the right column of 8x8 tiles. On the OW and in vertical levels, $1BE6-$1C65 forms the upper row of 8x8 tiles, while $1C66-$1CE5 forms the bottom row of 8x8 tiles. | |
$7E:1CE6 | 2 bytes | VRAM address to start uploading data from 7E1CE8. Big endian. | |
$7E:1CE8 | 256 bytes | Same as 7E1BE6, but for layer 2. | |
$7E:1DE9 | 1 byte | Overworld::Ending enemy presentation screen (Count to 0x0C) | |
$7E:1DEA | 1 byte | Overworld event to run at level end ($FF=None) | |
$7E:1DEB | 2 bytes | Event tile to load to the overworld. A starting value is set to this at level end, and it increases until it reaches the value of $1DED. | |
$7E:1DED | 2 bytes | Last event tile to load to the overworld during a given event, set at level end. | |
$7E:1DF0 | 2 bytes | 7E1DF0 - X position of the camera when using the "survey OW w/ select" function, low byte 7E1DF1 - X position of the camera, when using survey function, high byte (These values are only used to determine which way the camera should go to get back to mario- there is another set for usual movement) | |
$7E:1DF2 | 2 bytes | Ypos of the camera when using the "scroll around OW" function. 7E1DF2 = low byte 7E1DF3 = high byte Note: This is only used when determining how to get back to mario. There must be a different set for when simply scrolling around the screen. | |
$7E:1DF4 | 1 byte | Index to intro control sequence data table. | |
$7E:1DF5 | 1 byte | Frame counter to use the same controller bits for intro sequence. Is also used as timer to determine how long the Nintendo Presents screen will remain active. | |
$7E:1DF6 | 1 byte | StarRoad and Tunnel handler (Map). Controls where you warp to. I've tested 00-88 (Dec). The values load by adding +2 to the previous one. This is starting from 00 and so on. | |
$7E:1DF7 | 1 byte | Used by the Star Road Warp Star on the overworld. It is the speed of Mario getting launched in the air during warping. The higher the value, the faster he gets launched in the air. | |
$7E:1DF8 | 1 byte | Used by the Star Road Warp Star on the overworld. It is how long Mario stays on the ground before he gets launched in the air, during warping. (Timer) | |
$7E:1DF9 | 4 bytes | SPC700 I/O Ports (Write values to play music/SFX) | |
$7E:1DFD | 2 bytes | Empty. Cleared during reset, titlescreen, OW and level load. | |
$7E:1DFF | 1 byte | Seems like it is the copy of $7E1DFB, the music register. Writing to it doesn't give any effect though. | |
$7E:1E00 | 1 byte | Empty. Cleared during reset, titlescreen, OW and level load. | |
$7E:1E01 | 1 byte | If debug code at $00CC86 is enabled, this RAM address allows you to be in free roaming mode: Mario can move in any direction, without being affected by objects or sprites. 00 = none, 01 = dash immediately, 02 = free roaming. | |
$7E:1E02 | 20 bytes | Y low position of cluster sprites. | |
$7E:1E16 | 20 bytes | X low position of cluster sprites. | |
$7E:1E2A | 20 bytes | Y high position of cluster sprites. | |
$7E:1E3E | 20 bytes | X high position of cluster sprites. | |
$7E:1E52 | 20 bytes | Y position of reappearing Boos, frame 1. Not relative to screen border. Also used as Y speed for Boos from ghost ceiling and death bats. | |
$7E:1E66 | 20 bytes | X position of reappearing Boos, frame 1. Not relative to screen border. Also used as X speed for Boos from ghost ceiling and death bats. | |
$7E:1E7A | 20 bytes | Y position of reappearing Boos, frame 2. Not relative to screen border. Also used as accumulating fraction bits for Y speed of death bats. | |
$7E:1E8E | 20 bytes | X position of reappearing Boos, frame 2. Not relative to screen border. | |
$7E:1EA2 | 96 bytes | OW Level Setting Flags, location corresponds to $7E13BF. Bits: 01: Enable walking right 02: Enable walking left 04: Enable walking down 08: Enable walking up 10: Save Prompt when level beaten 20: No entry if level passed 40: Midway point 80: Beaten Setting $7E:1EEB to hex value $83 will enable the special stage features in ORIGINAL SMW. | |
$7E:1F02 | 15 bytes | Overworld event flags | |
$7E:1F11 | 1 byte | Current submap for Mario (0=Overworld, 1=Yoshi, 2=Vanilla, 3=Forest, 4=Bowser, 5=Special, 6=Star) | |
$7E:1F12 | 1 byte | Current submap for Luigi (0=Overworld, 1=Yoshi, 2=Vanilla, 3=Forest, 4=Bowser, 5=Special, 6=Star) | |
$7E:1F13 | 2 bytes | Mario's and Luigi's animation on the overworld. $00 = Look away from screen $02 = Face the screen $04 = Look to the left $06 = Walk to the right $08 = Look away from screen in the water $0A = Face the screen in the water $0C = Walk to the left in the water $0E = Walk to the right in the water $10 = Stick your hand out (entering level) $12 = Stick your hand out in the water (entering level) $14 = Climb ladder/vine? $16 = Climb ladder/vine Byte 1 is for Mario, byte 2 is for Luigi. | |
$7E:1F17 | 2 bytes | OW X position of Mario | |
$7E:1F19 | 2 bytes | OW Y position of Mario | |
$7E:1F1B | 2 bytes | OW X position of Luigi | |
$7E:1F1D | 2 bytes | OW Y position of Luigi | |
$7E:1F1F | 2 bytes | Pointer to Mario's OW Xpos. Value is Mario's OW Xpos divided by 10 hex. | |
$7E:1F21 | 2 bytes | Pointer to Mario's OW Ypos. Value is Mario's OW Ypos divided by 10 hex. | |
$7E:1F23 | 2 bytes | Luigi's X position in the world map (OW Xpos) divided by 16 (by $10 hex). | |
$7E:1F25 | 2 bytes | Luigi's Y position in the world map (OW Ypos) divided by 16 (by $10 hex). All four values from $1F1F, $1F21, $1F23 and $1F25 are always in range from 0 to 31. Thus you may access them as 8-bit or 16-bit values. | |
$7E:1F27 | 4 bytes | Switch block flags (Green, Yellow, Blue, Red) | |
$7E:1F2B | 1 byte | Cleared at reset, titlescreen load and file load (1/2 Player -> OW / intro screen). | |
$7E:1F2E | 1 byte | # of normal exits gotten | |
$7E:1F2F | 12 bytes | "Collected five or more Yoshi Coins" flags. Each byte represents the values for 8 levels, with each bit acting as a flag for a given level. Level # ($13BF) DIVIDED by 8 (LSR x3) provides the BYTE index into this table, since 8 levels are represented by a single byte. The level # MODULO 8 (AND #$07) is the BIT index into this table. It will choose a single bit out of the byte and this is the flag for this level. | |
$7E:1F3B | 1 byte | Empty. Cleared during reset and titlescreen load. | |
$7E:1F3C | 12 bytes | RAM table handling in which levels the invisible 1up spawning tiles are flagged as 'do not respawn'. This happens after they're collected in that level. 8 levels go in 1 byte ; one bit per level. Order of levels is the same as RAM address $13BF, but then in bits, to compress the amount of space needed. If the bit relative to the level is flagged, the tiles will not respawn. If it's clear, it will respawn. | |
$7E:1F48 | 1 byte | Empty. Cleared during reset and titlescreen load. | |
$7E:1F49 | 141 bytes | Buffer for $1EA2-$1F2E. SRAM transfer goes through this buffer. | |
$7E:1FD6 | 12 bytes | Unused sprite table, cleared at individual sprite load. (1 slot each.) | |
$7E:1FE2 | 12 bytes | Time to disable sprite's contact with cape. This table already decrements by itself once per frame. | |
$7E:1FEE | 12 bytes | RAM table handling in which levels the 3UP moons are flagged as 'do not respawn'. This happens after they're collected in that level. 8 levels go in 1 byte ; one bit per level. Order of levels is the same as RAM address $13BF, but then in bits, to compress the amount of space needed. If the bit relative to the level is flagged, the moon will not respawn. If it's clear, it will respawn. | |
$7E:1FFA | 1 byte | Empty. Cleared during reset and titlescreen load. | |
$7E:1FFB | 1 byte | Lightning Flash Color. Most values are just shades of white, but 70+ is actual colors. Only active while lightning flash is active. | |
$7E:1FFC | 1 byte | Lightning Flash Timer. 00- no time, 01- constant, and so on. Only active while lightning flash effect is active. | |
$7E:1FFD | 1 byte | Lightning Flash "Step." 00- step 8, 01, step 7, and so on. Repeats steps 0-8 all the way up to FF. Only active while lightning flash effect is active. | |
$7E:1FFE | 1 byte | If flag is set, the credit cutscene backgrounds will get updated every frame. If clear, they won't. | |
$7E:1FFF | 1 byte | Empty. Cleared during reset and titlescreen load. | |
$7E:2000 | 23,808 bytes | GFX32 decompressed. | |
$7E:7D00 | 12,288 bytes | GFX33 decompressed. | |
$7E:AD00 | 3,072 bytes | GFX file decompression buffer. Decompressed as 3bpp (3kb) for unexpanded GFX and as 4bpp for expanded. Also used for LM's extra animated tile space. $7EB900 is also used as additional buffer kilobyte. | |
$7E:B900 | 1,024 bytes | BG2 tilemap, low byte. | |
$7E:BD00 | 1,024 bytes | BG2 tilemap, high byte. The first seven bytes are used by custom block ASM/ExAnimated Tile GFX. | |
$7E:C100 | 1,408 bytes | Empty on an unhacked ROM, potentially occupied with extended animated tile graphics in a hacked ROM. $7EC380-$7EC387 are also used by Mikeyk's SMB3 Pipes: $7EC380 is Mario's direction (1-up, 2-right, 3-down... (DATA MISSING) $7EC381 is the counter that increments when Mario is... (DATA MISSING) $7EC382 is the counter that increments when Mario is... (DATA MISSING) $7EC383 is the Mario/Yoshi status (1-small, 2-big... (DATA MISSING) $7EC384 is the target location of corner piece low byte $7EC385 is the target location of corner piece high byte $7EC386 is the water level flag $7EC387 is the time that Mario has entered the pipe | |
$7E:C680 | 96 bytes | Tilemap of Mode 7 bosses (Ludwig, Roy, Morton and Bowser). | |
$7E:C6E0 | 288 bytes | Empty on an unhacked ROM, potentially occupied with extended animated tile graphics in a hacked ROM. | |
$7E:C800 | 14,336 bytes | Map16 Low Byte Table. In the overworld, $7ED000-$7ED3FF is used as a table that contains translevel numbers for the big world map (the one with Donut Plains and Chocolate Island). If you divide the map into 16x16 blocks, then this table connects each block to a level. To interpret the value, see RAM $7E:13BF. To index this table, use RAM $7E:1F1F and $7E:1F21 to find Mario, or use RAM $7E:1F23 and RAM $7E:1F25 to find Luigi. X position / 16: %0000 0000 000X xxxx Y position / 16: %0000 0000 000Y yyyy index to this table: %0000 00YX yyyy xxxx. $7ED400-$7ED7FF is used for the submaps as a whole and has the same kind of format. | |
$7F:0000 | 3,328 bytes | Layer 2 event tilemap of the overworld. $7F0B44-$7F1343 are also used as buffer for dynamic sprite graphics (they get uploaded during vblank). | |
$7F:0D00 | 13,056 bytes | Empty, untouched RAM on a vanilla ROM. Used to hold expanded layer 2 event tilemap on a hacked ROM. | |
$7F:4000 | 16,384 bytes | The Layer 2 tilemap of the whole overworld (including submaps, starting at $7F:6000). It does NOT affect the event tiles. The tiles are also 8x8. The tilemap starts from the top left corner of the main overworld. Format is as following: [Tile number], [Tile properties] Part of this table is also used for a RAM buffer for the credit cutscene backgrounds. | |
$7F:8000 | 387 bytes | Unrolled loop which writes to OAM to set all sprite tiles off screen on each frame | |
$7F:8183 | 504 bytes | Empty, untouched RAM. | |
$7F:837B | 2 bytes | Used for indexing the stripe image table | |
$7F:837D | 5,118 bytes | VRAM upload table (In stripe image). Not all of it is used during normal gameplay, so $7F8600+ shouldn't be dangerous to use. $7F8601 is used by Schwa's Pseudo Powerups to determine what powerups Mario has, in Binary... (DATA MISSING) $7F8602 is used by Schwa's Pseudo Powerups to determine if Mario has already used his... (DATA MISSING) $7F8820 is used by Mikeyk's Ice Power generator $7F8821 is used by Mikeyk's mushroom block (sprite portion). $7F8900 (768 bytes) are extra sprite tables used by smwedit's fire chomp, and some by smwedit's chain... (DATA MISSING) | |
$7F:977B | 768 bytes | Mario Start, Game Over, Time Up etc. messages Graphics, decompressed. | |
$7F:9A7B | 512 bytes | Position of Wiggler's segments. | |
$7F:9C7B | 9,093 bytes | Empty, untouched RAM on a clean ROM. In a hacked ROM: $7FAB10 (12 bytes) is used by Sprite Tool... (DATA MISSING) $7FAB1C (12 bytes) is used by Sprite Tool to indicate whether the sprite being processed uses custom code, maybe for other things? $7FAB28 (12 bytes) is used by Sprite Tool to indicate the extra property byte 1 from the cfg file $7FAB34 (12 bytes) is used by Sprite Tool to indicate the extra property byte 2 from the cfg file $7FAB9E (12 bytes) is used by Sprite Tool to indicate the custom sprite number | |
$7F:C000 | 2,048 bytes | Empty on an unhacked ROM, used incrementally for Lunar Magic hacks. More space will be used here as more hacks are changed or added to Lunar Magic. Currently $00A bytes are used, more data will used and this RAM entry will be updated as such. | |
$7F:C800 | 14,336 bytes | Map16 High Byte Table in a clean ROM. In a hacked ROM, the following are also placed here: $7FFF00 (32 bytes) is used for LevelNames 2.0 by Ice Man $7FFFDF (10 bytes) is used by BMF's LevelNames code $7FFFF0 (10 bytes) is used by FuSoYa's SMB3 Pipe Code. $7FFFF0 (4 bytes) is used by BMF's LevelASM code $7FFFF8 (8 bytes) is used by LM demo recording/playing ASM |