SMAS Memory Map
Displaying 1220 out of 1220 addresses.
View: moderated | waiting (204)
- Pages:
- 1
RAM Address | Length | Type | Context | Description | Details |
---|---|---|---|---|---|
$7E0000 | 8 bytes | Miscellaneous | Super Mario Bros. 1 | Scratch RAM for many subroutines | |
$7E0000 | Unknown | Miscellaneous | Super Mario Bros. 1 | TODOs: - Fix inconsistent SMB1 sprite table sizes - Consistent naming (player instead of Mario, Y Position instead of ypos, and the likes) - Find out what kind of sprites there are in SMB1. How many types of extended sprites, and so on. - SMB3/Global addresses need context re-assigning. |
|
$7E0008 | 1 byte | Empty | Super Mario Bros. 1 | Unused scratch RAM. | |
$7E0009 | 1 byte | Counter | Super Mario Bros. 1 | Frame Counter | |
$7E000A | 3 bytes | Flag | Super Mario Bros. 1 | Player action data. Note that these flags are not mirrors of SNES controller flags. They merely signify which states the player is experiencing. For example, the Jump flag can be set by whatever button maps to jumping. Also, the flag is set only by the controller of the current player. |
|
$7E000A | 1 byte | Flag | Super Mario Bros. 1 | Bit flags: JD000000 J - Jump button D - Dash button |
|
$7E000B | 1 byte | Flag | Super Mario Bros. 1 | Bit flags: 0000UD00 U - Up button D - Down button |
|
$7E000C | 1 byte | Flag | Super Mario Bros. 1 | Bit flags: 000000LR L - Left flag R - Right flag |
|
$7E000D | 1 byte | Flag | Super Mario Bros. 1 | Saves the value of $7E:000A (jump/run flags) from the previous frame. | |
$7E000F | 1 byte | Player Action | Super Mario Bros. 1 | Player's current action (Entering pipe, fade to image before level, vine, etc.) TODO: verify "Number of subroutines to run in game engine on next frame" |
|
$7E0010 | 8 bytes | Sprites | Super Mario Bros. 1 | Sprite onscreen flag. Bit 7 = never overwrite sprite slot of current index. Bit 0 = Onscreen flag. |
|
$7E0010 | 1 byte | Counter | Super Mario Bros. 2 | Frame Counter | |
$7E0011 | 1 byte | Stripe Image | Super Mario Bros. 1 | Layer image upload | |
$7E0012 | 1 byte | Position | Super Mario Bros. 3/Global | Which screen number the player is in. TODO: Verify, editing this seems to screw with the level drawing | |
$7E0014 | 1 byte | Player | Super Mario Bros. 2 | Player's X-position, high byte. | |
$7E0014 | 1 byte | Flag | Super Mario Bros. 3/Global | Level completed flag. | |
$7E0015 | 9 bytes | Sprites | Super Mario Bros. 2 | Sprites' X-position, high byte. | |
$7E0015 | 1 byte | Counter | Super Mario Bros. 3/Global | Frame counter. | |
$7E0016 | 1 byte | Hardware Mirror | Super Mario Bros. 3/Global | Brightness. Does not affect the statusbar on the overworld. | |
$7E001C | 8 bytes | Sprites | Super Mario Bros. 1 | Sprite number | |
$7E001C | 1 byte | Timer | Intro & Game Select Screens | Number of frames to show intro logo. Is initially set to #$81. At #$61, the logo will flash. |
|
$7E001E | 1 byte | Player | Super Mario Bros. 2 | Player's Y-position, high byte. | |
$7E001F | 9 bytes | Sprites | Super Mario Bros. 2 | Sprites' Y-position, high byte. | |
$7E0022 | 1 byte | Level | Super Mario Bros. 3/Global | How many screens the level has. | |
$7E0022 | 1 byte | Timer | Intro & Game Select Screens | Timer for various things. 1. Number of frames to show each flash state during intro logo flashing |
|
$7E0022 | 1 byte | Timer | Intro & Game Select Screens | Amount of time to wait until the "Super Mario All-Stars" text flashes. | |
$7E0023 | 1 byte | Counter | Intro & Game Select Screens | What step we are in, in the flashing "ALL*STARS" text in the hall screen. | |
$7E0024 | 1 byte | Flag | Intro & Game Select Screens | Flag for various animation timers. When set, the animation timers will begin. 1. Flash animation for intro logo |
|
$7E0025 | 1 byte | Sprites | Super Mario Bros. 1 | Sprite number which came out of a question block. | |
$7E0027 | 1 byte | Flag | Intro & Game Select Screens | Is #$10 if the start button has been pressed by either controller, otherwise #$00. | |
$7E0028 | 1 byte | Player | Super Mario Bros. 2 | Player's X position, low byte | |
$7E0029 | 8 bytes | Sprites | Super Mario Bros. 1 | Sprite state. TODO: Find a list of values |
|
$7E0029 | 9 bytes | Sprites | Super Mario Bros. 2 | Sprites' X-position, low byte. First three bytes also used for movement of bonus slots. 00 = stop, 01 = slowing down, 02-FF = not slowing down. | |
$7E002E | 3 bytes | Pointers | Super Mario Bros. 3/Main gameplay | 24-bit pointer to the level map16 layout in RAM. (Note that this is used for both the low and high bytes; the game changes the index to switch between them.) | |
$7E0031 | 3 bytes | Pointers | Super Mario Bros. 3/Global | Pointer to current current level's sprite data (SNES Address, Little endian) | |
$7E0032 | 1 byte | Player | Super Mario Bros. 2 | Player's Y-Position, low byte | |
$7E0033 | 2 bytes | Sprites | Super Mario Bros. 1 | Fireball states TODO: Find out about the values |
|
$7E0033 | 9 bytes | Sprites | Super Mario Bros. 2 | Sprites' Y-position, low byte. $7E0038-9 is speed of bonus slot 1's images. $7E003A-B is speed of bonus slot 2's images. | |
$7E0035 | 2 bytes | Sprites | Super Mario Bros. 1 | Bounce block state TODO: find out the states |
|
$7E003C | 1 byte | Speed | Super Mario Bros. 2 | Speed of one of bonus slot 3's images. Also used for player's speed. | |
$7E003D | 9 bytes | Sprites | Super Mario Bros. 2 | Sprite X speed table. $3D is also used for speed of the other of bonus slot 3's images. | |
$7E0042 | 2 bytes | X Position | Super Mario Bros. 1 | X-Position of screen | |
$7E0042 | 2 bytes | X Position | Super Mario Bros. 1 | Horizontal X coordinate of left side of the screen - 16-bit value. Used for rendering certain sprites and sprite particles at their proper position. |
|
$7E0043 | 2 bytes | Overworld | Super Mario Bros. 3/Overworld | Low byte of the player Y position on the overworld. Byte 1 is for Mario, byte 2 is for Luigi | |
$7E0043 | 1 byte | Miscellaneous | Super Mario Bros. 3/Main gameplay | Player X position in the level, high byte (i.e. screen number) | |
$7E0044 | 9 bytes | Sprites | Super Mario Bros. 3/Global | Sprite X position, high byte. TODO: Verify length |
|
$7E0045 | 2 bytes | Overworld | Super Mario Bros. 3/Overworld | High byte of the player X position. Alternatively, this can be considered the submap number of the current world the players are on. The first byte is for Mario, while the second is for Luigi. | |
$7E0046 | 1 byte | Player | Super Mario Bros. 1 | Facing direction of player $01 - Right $02 - Left |
|
$7E0046 | 1 byte | Player | Super Mario Bros. 2 | Player's Y-speed | |
$7E0047 | 8 bytes | Sprites | Super Mario Bros. 1 | Sprite direction $01 - Right $02 - Left |
|
$7E0047 | 9 bytes | Sprites | Super Mario Bros. 2 | Sprite Y speed table | |
$7E0047 | 2 bytes | X Position | Super Mario Bros. 3/Global | Player overworld X-position. First byte is for Mario, second byte for Luigi. |
|
$7E0047 | Unknown | X Position | Super Mario Bros. 3/Main gameplay | Sprite X position in the level, high byte. TODO: verify length |
|
$7E004C | 1 byte | Direction | Super Mario Bros. 3/Global | Player's direction on the overworld. | |
$7E0050 | 1 byte | Direction | Super Mario Bros. 1 | The direction of the sprite which came out of a [?]-block. | |
$7E0051 | 9 bytes | Sprites | Super Mario Bros. 2 | Sprite status table. 00 = non-existant/init, 01 = main, 02 = falling from screen, 03 = flat, 04 = explode, 05 = disappear in a puff of smoke, 06 = dissolving sand, 07 = stop interacting, 08 = disappear in two puffs of smoke, 09 = disappear abruptly | |
$7E0055 | 1 byte | Y Position | Super Mario Bros. 3/Main gameplay | Player Y-position in the level, high byte. | |
$7E0056 | 9 bytes | Sprites | Super Mario Bros. 3/Global | Sprite Y position, high byte. TODO: Verify length |
|
$7E005A | 1 byte | Flag | Super Mario Bros. 3/Global | "Players spins in the overworld" flag (e.g. when player dies and gets placed to the latest checkpoint) | |
$7E005C | 1 byte | Level Data | Super Mario Bros. 1 | Map Type $00 - Underwater $01 - Normal $02 - Underground $03 - Castle This address always has the same value as $7E:00BA. |
|
$7E005D | 1 byte | X Speed | Super Mario Bros. 1 | Player's X Speed | |
$7E005E | 8 bytes | X Speed | Super Mario Bros. 1 | Sprite X-Speed | |
$7E005E | 1 byte | X Position | Super Mario Bros. 3/Global | Player X-position in the level, low byte | |
$7E005F | 9 bytes | Sprites | Super Mario Bros. 3/Global | Sprite X position, low byte. TODO: Verify length |
|
$7E0060 | 4 bytes | Sound Effect | Intro & Game Select Screens | SPC700 I/O Ports. Write values to play music/sound effects. | |
$7E0067 | 1 byte | X Speed | Super Mario Bros. 1 | X speed of the sprite which came out of a [?]-block. | |
$7E0068 | 2 bytes | X Speed | Super Mario Bros. 1 | Fireball X-Speed | |
$7E006A | 2 bytes | X Speed | Super Mario Bros. 1 | Bounce blocks X-Speed | |
$7E0070 | 1 byte | Y Position | Super Mario Bros. 3/Global | Player Y-position in the level, low byte. TODO: Also related to OW 'player spawns' stars (those spinning ones), 34 bytes. |
|
$7E0071 | 9 bytes | Sprites | Super Mario Bros. 3/Global | Sprite Y position, low byte. TODO: Verify length |
|
$7E0078 | 1 byte | X Position | Super Mario Bros. 1 | Player X-Position, high byte. | |
$7E0079 | 8 bytes | X Position | Super Mario Bros. 1 | Sprite X-Position, high byte. | |
$7E0082 | 1 byte | Player | Super Mario Bros. 2 | Amount of time to remain in a player state. | |
$7E0084 | 2 bytes | X Position | Super Mario Bros. 1 | Fireball X-Position, high byte. | |
$7E0086 | 2 bytes | X Position | Super Mario Bros. 1 | Bounce block X-Position, high byte. | |
$7E008B | 1 byte | Speed | Super Mario Bros. 3/Global | Player X-speed | |
$7E008C | 9 bytes | Sprites | Super Mario Bros. 3/Global | Sprite X speed. TODO: Verify length |
|
$7E008F | 1 byte | Player | Super Mario Bros. 2 | Current player. #$00 = Mario; #$01 = Peach; #$02 = Toad; #$03 = Luigi. | |
$7E0090 | 9 bytes | Sprite Number | Super Mario Bros. 2 | Sprite num table | |
$7E0099 | 1 byte | Level | Super Mario Bros. 1 | Which tileset to load upon level load. $00 - Unused? $01 - Mario bonus background + cave FG $02 - Hills background & SUPER MARIO BROS banner $03 - Underground background $04 - Castle FG & BG tileset $05 - Tall slim hills background $06 - Castle FG & BG tileset $07 - Hills background $08 - Underwater BG & FG tileset $09 - Hills background & SUPER MARIO BROS banner $0A - Game over screen & Mario bonus room background $0B - Starry night background $0C - Bowser's Castle (outside) background $0D - Mushrooms background $0E - Waterfall background $0F - Underwater ruins background $10 - Goomba pillars BG & snow FG $11 - Underground foreground $12 - Snow foreground $13 - Bowser's Castle BG, part 1 $14 - Bowser's Castle BG, part 2 $15 - Game Over and Time Up text $16 - Starry night background $17 - Grass foreground $18 - Luigi bonus background + cave FG |
|
$7E0099 | 1 byte | Level | Super Mario Bros. 1 | Graphics to upload during level load. See this for a list of values. | |
$7E009B | 1 byte | Sprites | Super Mario Bros. 3/Global | The current sprite index. | |
$7E009C | 1 byte | Flag | Super Mario Bros. 2 | Player holding item flag ($01 = Holding.) | |
$7E009D | 1 byte | Player | Super Mario Bros. 2 | Player's Direction ($00 = Left, $01 = Right) | |
$7E009D | 1 byte | Y Speed | Super Mario Bros. 3/Global | Player Y-speed | |
$7E009E | 1 byte | Index | Super Mario Bros. 1 | Current sprite index | |
$7E009E | 9 bytes | Sprites | Super Mario Bros. 3/Global | Sprite Y speed. TODO: Verify length |
|
$7E00A0 | 1 byte | Y Speed | Super Mario Bros. 1 | Player's Y Speed | |
$7E00A1 | 8 bytes | Y Speed | Super Mario Bros. 1 | Sprite Y Speed | |
$7E00A2 | 1 byte | Counter | Super Mario Bros. 2 | Alternative Frame Counter (Stops at times) | |
$7E00A8 | 9 bytes | Sprites | Super Mario Bros. 2 | Sprite is picked up table. 07 = sprite = bottom at player, 01 = top, 00 = normal state | |
$7E00AA | 1 byte | Y Speed | Super Mario Bros. 1 | Y speed of the sprite which came out of a [?]-block. TODO: Value is only applied when the sprite is airborne? | |
$7E00AB | 2 bytes | Y Speed | Super Mario Bros. 1 | Player fireballs Y speed | |
$7E00AB | 3 bytes | Pointers | Super Mario Bros. 3/Global | Pointer to 24-bit RAM address which contains the windowing HDMA table used for various effects. Seems to alternate between $7F:9000 and $7F:9200. |
|
$7E00AD | 2 bytes | Y Speed | Super Mario Bros. 1 | Bounce block Y speed | |
$7E00B3 | 1 byte | Overworld | Super Mario Bros. 3/Global | What overworld tile the player is standing on. TODO: List of overworld tiles. |
|
$7E00BA | 1 byte | Level | Super Mario Bros. 1 | Current background palette and music. $00 - Light blue background with underwater music $01 - Light blue background with normal world music $02 - Black background with underground music $03 - Black background with castle music This address always has the same value as $7E:005C. |
|
$7E00BB | 1 byte | Y Position | Super Mario Bros. 1 | Player position in the level: $00 - Top of screen (above status bar) $01 - Inside range (anywhere he can shoot fireballs) $02 - In pit (obviously causes death, value increases up to 6) |
|
$7E00BB | 1 byte | Miscellaneous | Super Mario Bros. 3/Global | Something related about OW powerup get? ($07 + higher= glitch) TODO: Verify |
|
$7E00BC | 8 bytes | Y Position | Super Mario Bros. 1 | Sprite Y position in the level. $00 - Top of screen (above status bar) $01 - Inside range $02 - In pit |
|
$7E00BD | 1 byte | Direction | Super Mario Bros. 3/Global | Player direction ($40 = right) $00 - Left $40 - Right $41 - End level walk? TODO: Find out the format of this address, seems bitwise rather than raw numbers. |
|
$7E00BF | 1 byte | Player | Super Mario Bros. 3/Main gameplay | Indicates that the player is dying. Setting it causes the player to die immediately. | |
$7E00C5 | 1 byte | Y Position | Super Mario Bros. 1 | [?]-block sprite Y position $00 - Top of screen (above status bar) $01 - Inside range $02 - In pit |
|
$7E00D0 | 1 byte | Index | Intro & Game Select Screens | Selected game index in the Game Select screen | |
$7E00D1 | 1 byte | Index | Intro & Game Select Screens | Selected file index in the File Select screen | |
$7E00D9 | 2 bytes | Pointers | Super Mario Bros. 2 | 16-bit pointer to Layer 1 room data. | |
$7E00DB | 1 byte | Level Data | Super Mario Bros. 1 | An index value signifying the Layer 2 Background map to use. $00 - Underwater (short) $01 - Underwater (full) $02 - Underwater (castle) $03 - Night sky (w/o mountains) $04 - Outside castle (W8-3) $05 - Mountains and trees $06 - Night sky (w/ mountains) $07 - Night sky (w/ mountains & snow) $08 - Mountains $09 - Waterfall $0A - Goomba statues/pillars $0B - Narrow green hills (W2-1) $0C - One big mountain w/ underground palette $0D - Narrow hills w/ snow (W5-1) $0E - Mario/Luigi Bonus room $0F - Mushrooms $10 - Night sky (w/o mountains) $11 - Night sky (w/ mountains) $12 - Mushrooms $13 - Mountains $14 - Narrow hills w/ snow (W5-1) $15 - Narrow orange hills $16 - Narrow hills w/ snow $17 - Mario/Luigi bonus room $18 - Night sky (w/ mountains) $19 - Underground $1A - Underground $1B - Mario/Luigi bonus room (underground) $1C - Castle $1D - Castle w/ pillars & chandeliers $1E - Castle w/ pillars $1F - Castle w/ pillars $20 - Castle w/ pillars & doors $21 - Castle w/ windows w/ thunder & lightning |
|
$7E00DE | 1 byte | Flag | Intro & Game Select Screens | If non-zero $7F:0000 will get uploaded to BG1's tilemap. | |
$7E00E2 | 8 bytes | X Position | Super Mario Bros. 3/Global | Extended sprite X-position, high byte. | |
$7E00E3 | 2 bytes | Timer | Intro & Game Select Screens | Timer for showing the current hall screen state (blackout) or (lightened). #$011A - First blackout time #$044A - First lightened time |
|
$7E00EB | 2 bytes | Clipping | Super Mario Bros. 1 | Used during level loading to load level backgrounds: Starting index of the background map16 to place the background objects at (Every $0100 bytes of RAM $7ED000 is a page). Also used by the podoboo lava splash. |
|
$7E00EB | 1 byte | Flag | Super Mario Bros. 2 | Horizontal level flag. #$00 = Vertical level; #$01 = Horizontal level. | |
$7E00ED | 2 bytes | Miscellaneous | Super Mario Bros. 1 | Used during level loading to load level backgrounds: Used to calculate $7E00EB Also used by the podoboo lava splash. |
|
$7E00EF | 2 bytes | Level Data | Super Mario Bros. 1 | Command to use in a level's background generation routine. $00 - Increase index to background map16 tilemap's latest written tile by 1 $01 - Handle HDMA gradient. Underwater levels use below value, instead. $02 - Enable underwater HDMA gradient. TODO: does it enable anything else? (cgadsub etc) $03 - TODO: figure out what $04 - TODO: figure out what $05 - Related to background map16 tilemap generation $06 - Fill background with repetitive rock pattern of cave background $07 - Fill top 3 rows with blank tiles for underwater levels $08 - Generate the rocks of the waterfall background $09 - Enable Layer 3 image $0A - Generate the waterfall of the waterfall background $0B - Load tilemap-specific graphics? TODO: verify $0C - Generate Goomba pillar background's sand Despite being two bytes in size, only the first byte is used. Also used by the podoboo lava splash. |
|
$7E00F0 | 3 bytes | Pointers | Super Mario Bros. 2 | Indirect pointer to load a layer image from. Controlled by $11. | |
$7E00F0 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $7E:4219 - Controller Port 1 Data1 Register high byte. This mirror is for controller data from the current frame. |
|
$7E00F1 | 1 byte | HDMA | Super Mario Bros. 1 | Associated value with a background generation command, e.g. value to enable/disable layer 3, which HDMA gradient, and so on. Also used by the podoboo lava splash. |
|
$7E00F1 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $7E:421B - Controller Port 2 Data1 Register high byte. This mirror is for controller data from the current frame. |
|
$7E00F2 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $7E:4218 - Controller Port 1 Data1 Register low byte. This mirror is for controller data from the current frame. |
|
$7E00F3 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $7E:421A - Controller Port 2 Data1 Register low byte. This mirror is for controller data from the current frame. |
|
$7E00F4 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $7E:4219 - Controller Port 1 Data1 Register high byte. This mirror is for controller data that was set on the current frame but was clear on the previous frame. Basically, this determines which buttons were pressed on this frame while not having been held on the last frame. |
|
$7E00F5 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $7E:421B - Controller Port 2 Data1 Register high byte. This mirror is for controller data that was set on the current frame but was clear on the previous frame. Basically, this determines which buttons were pressed on this frame while not having been held on the last frame. |
|
$7E00F6 | 1 byte | Hardware Mirror | Super Mario Bros. 2 | Controller Data 1. AXSPUDLR. All frames. | |
$7E00F6 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $7E:4218 - Controller Port 1 Data1 Register low byte. This mirror is for controller data that was set on the current frame but was clear on the previous frame. Basically, this determines which buttons were pressed on this frame while not having been held on the last frame. |
|
$7E00F7 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $7E:421A - Controller Port 2 Data1 Register low byte. This mirror is for controller data that was set on the current frame but was clear on the previous frame. Basically, this determines which buttons were pressed on this frame while not having been held on the last frame. |
|
$7E00F8 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $7E:4219 - Controller Port 1 Data1 Register high byte. This mirror is for controller data from the previous frame. |
|
$7E00F9 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $7E:421B - Controller Port 2 Data1 Register high byte. This mirror is for controller data from the previous frame. |
|
$7E00FA | 3 bytes | Pointers | Super Mario Bros. 1 | 24-bit pointer to current level's objects, and their positions (SNES Address, Little endian) | |
$7E00FA | 1 byte | Hardware Mirror | Super Mario Bros. 2 | Controller Data 2. AXSPUDLR. 1 frame. | |
$7E00FA | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $7E:4218 - Controller Port 1 Data1 Register low byte. This mirror is for controller data from the previous frame. |
|
$7E00FB | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $7E:421A - Controller Port 2 Data1 Register low byte. This mirror is for controller data from the previous frame. |
|
$7E00FD | 3 bytes | Pointers | Super Mario Bros. 1 | 24-bit pointer to current level's sprites, and their positions (SNES Address, Little endian) | |
$7E00FD | 1 byte | Counter | Intro & Game Select Screens | Frame counter. | |
$7E00FE | 1 byte | Hardware Mirror | Super Mario Bros. 2 | Brightness Register | |
$7E00FF | 1 byte | Hardware Mirror | Super Mario Bros. 2 | NMI / Joypad Enable | |
$7E0100 | 9 bytes | Empty | Super Mario Bros. 1 | Free space | |
$7E0100 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Screen brightness. | |
$7E0101 | 1 byte | Index | Super Mario Bros. 3/Global | IRQ Mode index? Valid values are: { 80 40 20 60 A0 55 75 95 } TODO: seems like this goes bitwise. Figure it out. Also, figure out what each IRQ mode is. |
|
$7E0101 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $7E:2101 - Object Size and Chr Size | |
$7E0102 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $2105: BG Mode and Character Size | |
$7E0103 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $2106: Screen Pixelation | |
$7E0104 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $2107: BG1 Tilemap Address and Size | |
$7E0105 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $2108: BG2 Tilemap Address and Size | |
$7E0106 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $2109: BG3 Tilemap Address and Size | |
$7E0107 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $210B: Mirror of BG1 and 2 Chr Address | |
$7E0108 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $210D: BG1 Horizontal Scroll This value represents the low byte address and is written to the register first. |
|
$7E0109 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $210D: BG1 Horizontal Scroll This value represents the high byte address and is written to the register second. |
|
$7E010A | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $210E: BG1 Vertical Scroll This value represents the low byte address and is written to the register first. |
|
$7E010B | 1 byte | Flag | Super Mario Bros. 1 | "Three byte object" flag when loading level data | |
$7E010B | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $210E: BG1 Vertical Scroll This value represents the high byte address and is written to the register second. |
|
$7E010C | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $210F: BG2 Horizontal Scroll This value represents the low byte address and is written to the register first. |
|
$7E010D | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $210F: BG2 Horizontal Scroll This value represents the high byte address and is written to the register second. |
|
$7E010E | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $2110: BG2 Vertical Scroll This value represents the low byte address and is written to the register first. |
|
$7E010F | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $2110: BG2 Vertical Scroll This value represents the high byte address and is written to the register second. |
|
$7E0110 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $2111: BG3 Horizontal Scroll This value represents the low byte address and is written to the register first. |
|
$7E0111 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $2111: BG3 Horizontal Scroll This value represents the high byte address and is written to the register second. |
|
$7E0112 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $2112: BG3 Vertical Scroll This value represents the low byte address and is written to the register first. |
|
$7E0113 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $2112: BG3 Vertical Scroll This value represents the high byte address and is written to the register second. |
|
$7E0114 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $2123: Window Mask Settings for BG1 and BG2 | |
$7E0115 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $2124: Window Mask Settings for BG3 and BG4 | |
$7E0116 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $2125: Window Mask Settings for OBJ and Color Window | |
$7E0117 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $212C (Main screen designation). | |
$7E0117 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $212C: Main Screen Designation | |
$7E0118 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $212D: Subscreen Designation | |
$7E0118 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $212D (Sub screen designation). | |
$7E0119 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $212E: Window Mask Designation for the Main Screen | |
$7E011A | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $212F: Window Mask Designation for the Subscreen | |
$7E011B | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $2130: Color addition select | |
$7E011B | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $2130 (Color Addition Select). | |
$7E011C | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $2131: Color math designation | |
$7E011C | 1 byte | Hardware Mirror | Intro & Game Select Screens | Miror of $2131 (Color math designation). | |
$7E011D | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $2132: Fixed color data This value is written to the mirror first. |
|
$7E011D | 3 bytes | Hardware Mirror | Intro & Game Select Screens | Mirror of $2132 (Fixed Color Data). $011D - Red fixed color component. $011E - Green fixed color component. $011F - Blue fixed color component. |
|
$7E011E | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $2132: Fixed color data This value is written to the mirror second. |
|
$7E011F | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $2132: Fixed color data This value is written to the mirror third. |
|
$7E0120 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $7E:420C - HDMA Enable | |
$7E0121 | 1 byte | Miscellaneous | Intro & Game Select Screens | Value is always $7E:0124 & #$FE, but is never read in-game. | |
$7E0122 | 1 byte | Flag | Intro & Game Select Screens | "Main program loop initialize" flag. This flag is set during NMI. Once set, the game will go through its main program loop. When the loop is finished, it will clear the flag and wait for NMI to set it again before continuing. |
|
$7E0124 | 1 byte | Flag | Intro & Game Select Screens | General IRQ flag. If set, IRQ mode registers will be enabled | |
$7E0124 | 2 bytes | Counter | Intro & Game Select Screens | IRQ Vertical timer. Writes to $4209 and $420A. Used to keep the "Select v Game" box at a static position. | |
$7E0125 | 1 byte | Hardware Mirror | Intro & Game Select Screens | Mirror of $7E:4209 - V-timer low byte. | |
$7E0142 | 2 bytes | Empty | Super Mario Bros. 1 | Free space | |
$7E014D | 7 bytes | Empty | Super Mario Bros. 1 | Free space | |
$7E0154 | 1 byte | Flag | Super Mario Bros. 1 | If the value in it is not zero, run the actual game; otherwise, loop forever. It's set to a non-zero value during NMI, and it's set to zero after the game mode has been run, so that the game runs exactly once a frame - one NMI trigger per frame. | |
$7E0155 | 1 byte | Empty | Super Mario Bros. 1 | Free space | |
$7E0156 | 170 bytes | Stack | Global | Stack RAM. Ends at $7E01FF. | |
$7E0160 | 1 byte | Player | Super Mario Bros. 3/Global | Debug RAM. Setting it to $80 will allow you to cycle through the player's power-ups by using select. You can also press A / B / X / Y and Select to toggle the Kuribo's Shoe power-up. | |
$7E0200 | 2 bytes | Hardware Mirror | Super Mario Bros. 2 | BG 1 X position | |
$7E0200 | 1 byte | Hardware Mirror | Super Mario Bros. 3/Global | Window Mask Settings for BG1 and BG2 | |
$7E0200 | 1 byte | Index | Intro & Game Select Screens | Tilemap index for animating Luigi's head | |
$7E0201 | 1 byte | Hardware Mirror | Super Mario Bros. 3/Global | Window Mask Settings for BG3 and BG4 | |
$7E0201 | 1 byte | Index | Intro & Game Select Screens | Tilemap index for animating Luigi's right hand | |
$7E0202 | 1 byte | Direction | Super Mario Bros. 1 | Player direction. $01 - Right $02 - left |
|
$7E0202 | 2 bytes | Hardware Mirror | Super Mario Bros. 2 | BG 2 X position | |
$7E0202 | 1 byte | Hardware Mirror | Super Mario Bros. 3/Global | Window Mask Settings for OBJ and Color Window | |
$7E0202 | 1 byte | Index | Intro & Game Select Screens | Tilemap index for animating Peach's head | |
$7E0203 | 1 byte | Hardware Mirror | Super Mario Bros. 3/Global | Color Addition Select | |
$7E0203 | 1 byte | Index | Intro & Game Select Screens | Tilemap index for animating Toad | |
$7E0204 | 2 bytes | Hardware Mirror | Super Mario Bros. 2 | BG 3 X position | |
$7E0204 | 1 byte | Hardware Mirror | Super Mario Bros. 3/Global | Color math designation | |
$7E0204 | 1 byte | Index | Intro & Game Select Screens | Tilemap index for animating Birdo's eyes. This animation sequence was cut from the final game. |
|
$7E0205 | 1 byte | Hardware Mirror | Super Mario Bros. 3/Global | Fixed Color Data (red) | |
$7E0205 | 1 byte | Index | Intro & Game Select Screens | Tilemap index for animating Birdo's right arm | |
$7E0206 | 2 bytes | Hardware Mirror | Super Mario Bros. 2 | BG 1 Y Position, works together with $04C6 (low byte) | |
$7E0206 | 1 byte | Hardware Mirror | Super Mario Bros. 3/Global | Fixed Color Data (green) | |
$7E0206 | 1 byte | Index | Intro & Game Select Screens | Tilemap index for animating Birdo's tail | |
$7E0207 | 1 byte | Hardware Mirror | Super Mario Bros. 3/Global | Fixed Color Data (blue) | |
$7E0207 | 1 byte | Index | Intro & Game Select Screens | Tilemap index for animating Gommba's head. This animation sequence was cut from the final game. |
|
$7E0208 | 2 bytes | Hardware Mirror | Super Mario Bros. 2 | BG 2 Y position | |
$7E0208 | 1 byte | Hardware Mirror | Super Mario Bros. 3/Global | Main Screen Designation | |
$7E0208 | 1 byte | Index | Intro & Game Select Screens | Tilemap index for animating Bob-omb's fuse. This animation sequence was cut from the final game. |
|
$7E0209 | 1 byte | Hardware Mirror | Super Mario Bros. 3/Global | Subscreen Designation | |
$7E0209 | 1 byte | Index | Intro & Game Select Screens | Tilemap index for animating Spiney's head. This animation sequence was cut from the final game. |
|
$7E020A | 2 bytes | Hardware Mirror | Super Mario Bros. 2 | BG 3 Y position | |
$7E020A | 1 byte | Hardware Mirror | Super Mario Bros. 3/Global | Window Mask Designation for the Main Screen | |
$7E020A | 1 byte | Index | Intro & Game Select Screens | Tilemap index for animating Pidgit. | |
$7E020B | 1 byte | Hardware Mirror | Super Mario Bros. 3/Global | Window Mask Designation for the Subscreen | |
$7E020B | 1 byte | Index | Intro & Game Select Screens | Tilemap index for animating Mario's head. Also acts as a flag to animate Mario's left arm on frame 0 and frame 6. Resets after 10 frames |
|
$7E020C | 1 byte | Powerup | Super Mario Bros. 1 | Which powerup the current powerup entity is. ($00 = Mushroom, $01 = Fireflower, $02 = Star, $03 = 1-up) Note: You can only have one powerup on the screen, hence this address is a single byte. |
|
$7E020C | 1 byte | Clipping | Super Mario Bros. 3/Global | BG Mode and Character Size | |
$7E020C | 1 byte | Index | Intro & Game Select Screens | Tilemap index for animating Mario's left arm. | |
$7E020D | 1 byte | Hardware Mirror | Super Mario Bros. 3/Global | Screen Pixelation | |
$7E020D | 1 byte | Index | Intro & Game Select Screens | Tilemap index for animating Bowser's left arm. | |
$7E020E | 1 byte | Graphics | Super Mario Bros. 3/Global | BG mode of statusbar (Mode 1 by default) | |
$7E020F | 1 byte | Hardware Mirror | Super Mario Bros. 3/Global | Main screen designation of statusbar | |
$7E0210 | 2 bytes | X Position | Super Mario Bros. 3/Global | BG1 Horizontal Scroll position TODO: maybe break up into 2 sub addresses for low and high byte |
|
$7E0214 | 2 bytes | Hardware Mirror | Intro & Game Select Screens | Mirror of $7E:210D - BG1 horizontal scroll. The low byte is written first and then the high byte is written second. This mirror is only applied during IRQ. |
|
$7E0214 | 2 bytes | Hardware Mirror | Intro & Game Select Screens | BG1 Vertical scroll (IRQ) in Game Select screen | |
$7E0216 | 1 byte | Timer | Intro & Game Select Screens | BG1 IRQ scroll timer in Game Select screen. This timer is used when scrolling right. | |
$7E0216 | 2 bytes | Y Position | Super Mario Bros. 3/Main gameplay | BG1 Camera Y position. In the top of the level, this has a value of $0000 while on ground level in horizontal levels, this has a value of $00EF. | |
$7E0217 | 1 byte | Timer | Intro & Game Select Screens | BG1 IRQ scroll timer in Game Select screen. This timer is used when scrolling left. | |
$7E0218 | 1 byte | Flag | Super Mario Bros. 1 | Player's "peace" pose flag. (Used when entering vertical pipes) | |
$7E0218 | 1 byte | Counter | Intro & Game Select Screens | Scroll index in Game Select menu. Increments by 1 when scrolling right, decrements by 1 when scrolling left. | |
$7E0218 | 2 bytes | Y Position | Super Mario Bros. 3/Main gameplay | BG2 Camera Y position. | |
$7E0219 | 1 byte | X Position | Super Mario Bros. 1 | Player's current X position within the screen. | |
$7E0219 | 1 byte | Flag | Intro & Game Select Screens | "File Select mode" flag | |
$7E021A | 8 bytes | X Position | Super Mario Bros. 1 | Sprite X position, low byte | |
$7E021A | 1 byte | Flag | Intro & Game Select Screens | "File Select open/close" flag. When set, the File Select menu will either open if closed, or close if opened. | |
$7E021B | 128 bytes | Timer | Intro & Game Select Screens | "File Select open/close" timer. Counts the number of frames remaining to continue opening/closing the File Select menu. | |
$7E0220 | 1 byte | Flag | Intro & Game Select Screens | "File Select menu open" flag. When set, the File Select menu in the Game Select screen is open. | |
$7E0223 | 1 byte | Timer | Intro & Game Select Screens | Wait time before fading out the screen after a game has been selected. | |
$7E0224 | 1 byte | Flag | Intro & Game Select Screens | "Begin gameplay" flag. Becomes set as soon as the player chooses a file in the Game Select screen. The flag is set to #$29 because it is set at the same time the "Begin gameplay" SFX is loaded (which is also #$29). | |
$7E0225 | 1 byte | Flag | Intro & Game Select Screens | When $7E:00E3 decrements to this value, the timer delay for the next shine effect on the ALL-STARS logo in the intro will be set. | |
$7E0235 | 1 byte | Hardware Mirror | Super Mario Bros. 2 | Window Mask for BG1 & BG2 | |
$7E0236 | 1 byte | Flag | Super Mario Bros. 1 | Grow vine in start of level (e.g. bonus cloud) flag. | |
$7E0236 | 1 byte | Hardware Mirror | Super Mario Bros. 2 | Window Mask for BG3 & BG4 | |
$7E0237 | 1 byte | Y Position | Super Mario Bros. 1 | Player's Y Position | |
$7E0237 | 1 byte | Hardware Mirror | Super Mario Bros. 2 | Window Mask for OBJ & COL | |
$7E0238 | 8 bytes | Y Position | Super Mario Bros. 1 | Sprite Y position, low byte | |
$7E0238 | 1 byte | Hardware Mirror | Super Mario Bros. 2 | Color addition select | |
$7E0239 | 1 byte | Hardware Mirror | Super Mario Bros. 2 | CGADSUB settings | |
$7E023A | 1 byte | Hardware Mirror | Super Mario Bros. 2 | HDMA Enable | |
$7E023B | 1 byte | Hardware Mirror | Super Mario Bros. 2 | Window Mask Desig. Main Screen | |
$7E023D | 3 bytes | Hardware Mirror | Super Mario Bros. 2 | RGB Values for backdrop color | |
$7E0243 | 1 byte | Hardware Mirror | Super Mario Bros. 2 | Main Screen Designation | |
$7E024B | 1 byte | Hardware Mirror | Super Mario Bros. 2 | V-count for IRQ. Starry BG appears at screen load. | |
$7E024C | 1 byte | Hardware Mirror | Super Mario Bros. 2 | BG1 Tilemap Address & Size | |
$7E026C | 5 bytes | X Position | Super Mario Bros. 1 | Whirlpool sprite X position, high byte. | |
$7E0283 | 1 byte | Counter | Super Mario Bros. 1 | Bowser sprite's health against the player's fireballs. | |
$7E0285 | 2 bytes | DMA | Super Mario Bros. 1 | Graphics DMA: Source address low and high byte | |
$7E0287 | 1 byte | DMA | Super Mario Bros. 1 | Graphics DMA: Bank byte | |
$7E0288 | 2 bytes | DMA | Super Mario Bros. 1 | Graphics DMA: DMA size | |
$7E028A | 2 bytes | DMA | Super Mario Bros. 1 | Graphics DMA: VRAM destination address | |
$7E028C | 1 byte | Flag | Super Mario Bros. 1 | Flag to disable scenery graphics animation and most of the background animations. | |
$7E028C | 1 byte | Flag | Super Mario Bros. 3/Global | Shows the Game Over dialogue on the overworld. | |
$7E028D | 1 byte | Flag | Super Mario Bros. 1 | Flag to upload the next frame of animated FG. | |
$7E02A9 | 1 byte | Flag | Super Mario Bros. 2 | (Don't) update palettes flag. | |
$7E02C5 | 1 byte | Level Data | Super Mario Bros. 3/Global | Layer 2 Palette, written upon level load. $00 - TODO: List of possible values. |
|
$7E02DA | 2 bytes | Score | Super Mario Bros. 3/Battle Mode | The number of rounds each player has won in this match. | |
$7E02DE | 2 bytes | Score | Super Mario Bros. 3/Battle Mode | The number of matches each player has won. This determines the number of stars on the scoreboard. | |
$7E02DF | 3 bytes | Pointers | Super Mario Bros. 2 | Layer 2 Map16 data pointer. | |
$7E02E0 | 1 byte | Speed | Super Mario Bros. 3/Global | Something related about Mario running at full speed TODO: Figure out what |
|
$7E02F8 | 1 byte | Flag | Super Mario Bros. 1 | Bonus Room flag. | |
$7E0350 | 1 byte | Level Data | Super Mario Bros. 3/Global | Layer 2 Background, written upon level load. Values #$26 and higher are most likely invalid. (TODO: double-check this) | |
$7E0364 | 1 byte | Timer | Super Mario Bros. 1 | Amount of time left to make the next part of Bowser's bridge crumble todo: also has other purposes during the Bowser fight |
|
$7E0365 | 1 byte | Direction | Super Mario Bros. 1 | Bowser sprite's movement direction. $01 = right $02 = right, but all he does is run towards the axe $FF = left |
|
$7E0367 | 1 byte | Timer | Super Mario Bros. 1 | Index to ROM table $03:D6F1 (timer delay for next Bowser fireball). Increases as a bowser fireball is launched | |
$7E0368 | 1 byte | Index | Super Mario Bros. 1 | Index of the Bowser sprite. | |
$7E037C | 1 byte | Miscellaneous | Super Mario Bros. 3/Global | Used by the 'slot machine' minigame to determine xposition of the parts. TODO: What exactly is this address for? |
|
$7E0399 | 1 byte | Sprites | Super Mario Bros. 1 | How long the vine (both in start of a level and item boxes) has grown. | |
$7E03A2 | 8 bytes | Timer | Super Mario Bros. 1 | Hammer bros hammer throw timer. TODO: Also related to the player interacting with the red platforms. |
|
$7E03CA | 1 byte | Timer | Super Mario Bros. 1 | Bowser's "dizzy bubbles" timer. Increases and shows the animation, until value $34. Used in combination with $7E03CB. |
|
$7E03CB | 1 byte | Flag | Super Mario Bros. 1 | Bowser's "dizzy bubbles" animation flag upon receiving the 4th fireball hit. Used in combination with $7E03CA. | |
$7E03F2 | 1 byte | Counter | Super Mario Bros. 1 | Counts the amount of bounce blocks you've created in the current level. Doesn't seem to be used for anything else. | |
$7E0400 | 896 bytes | VRAM Tilemap | Intro & Game Select Screens | "File Select tileset" buffer | |
$7E0422 | 1 byte | Counter | Super Mario Bros. 3/Global | Amount of coins added to the coin counter (so setting this to $02 will add 2 coins to the coin counter). | |
$7E0428 | 1 byte | Flag | Super Mario Bros. 3/Global | Setting this to $01 in a level gives the player the star powerup for the default amount of time. Setting this in the overworld will give the player the star powerup on the overworld, to be applied when you enter a level. |
|
$7E0429 | 1 byte | Player | Super Mario Bros. 3/Global | Player's image on the overworld. $00 - Small $01 - Big $02 - Big $03 - Leaf $04 - Frog $05 - Tanooki $06 - Hammer $07 - Jugem's Cloud $08 - P-Wing $09 and higher - Glitch Does not affect the powerup upon level entrance. Palette does not update when changing image. |
|
$7E04B5 | 1 byte | Flag | Super Mario Bros. 2 | Crystal ball has been collected flag, height of opened mouth of hawkmouth. | |
$7E04B7 | 1 byte | Counter | Super Mario Bros. 2 | How long the dark potion rooms last. | |
$7E04C3 | 1 byte | Counter | Super Mario Bros. 2 | HP count. (Red hearts.) | |
$7E04C4 | 1 byte | Miscellaneous | Super Mario Bros. 2 | Amount of hearts to show + 2. | |
$7E04C6 | 1 byte | Hardware Mirror | Super Mario Bros. 2 | BG 1 Y (low byte) position, works together with $0206. Used for effects such as the POW. | |
$7E04CA | 1 byte | Player | Super Mario Bros. 2 | The amount of time the player can float. | |
$7E04CB | 1 byte | Counter | Super Mario Bros. 2 | Amount of time the player has to charge up for before doing the super jump. | |
$7E04E1 | 1 byte | Timer | Super Mario Bros. 2 | Flashing timer, can kill enemies. | |
$7E04E8 | 1 byte | Counter | Super Mario Bros. 2 | Accumulative level number to continue on. | |
$7E04E9 | 1 byte | Level Data | Super Mario Bros. 2 | Current room to continue on. | |
$7E04EA | 1 byte | Level Data | Super Mario Bros. 2 | Screen number to continue on. | |
$7E04ED | 1 byte | Level Data | Super Mario Bros. 2 | 0 = don't go out of level, 1 = go to player select screen, 2 = go to Game Over screen, 3 = go to bonus game, 4-FF = go to warp screen. | |
$7E04EE | 1 byte | Counter | Super Mario Bros. 2 | Current amount of lives. | |
$7E04EF | 1 byte | Miscellaneous | Super Mario Bros. 2 | Jar type. 0 = warp jar, 1 = regular jar, 2 = 'enclosed' jar | |
$7E0500 | 1 byte | Sprites | Super Mario Bros. 2 | Amount of time sprites are frozen. (Stopwatch.) | |
$7E0533 | 1 byte | Level Data | Super Mario Bros. 2 | Accumulative level number | |
$7E0534 | 1 byte | Level Data | Super Mario Bros. 2 | Current room | |
$7E0535 | 1 byte | Level Data | Super Mario Bros. 2 | Screen number to start out on. | |
$7E0545 | 1 byte | Level | Super Mario Bros. 3/Main gameplay | During level load: Set level entrance type. Value is 00-07, set by the level header. 00 = normal 01 = slide 02 = vertical pipe exit up 03 = vertical pipe exit down?? 04 = horizontal pipe exit right 05 = horizontal pipe exit left 06 = airship intro 07 = weird vertical scrolling? (TODO: verify values 3 and 7) During gameplay: Player sliding speed. $00-$7F: right $80-$FF: left TODO: Doesn't seem to work in levels without slopes? |
|
$7E0551 | 1 byte | Timer | Super Mario Bros. 3/Main gameplay | Player growing/shrinking animation timer. $2F is the maximum value. Does not apply to other animations (smoke animation, fire flower animation, etc.) |
|
$7E0552 | 1 byte | Timer | Super Mario Bros. 3/Global | Player is hurt flag (flashing after they get hit) | |
$7E0553 | 1 byte | Timer | Super Mario Bros. 3/Global | Star power timer. Does not adjust the music. | |
$7E0554 | 1 byte | Timer | Super Mario Bros. 3/Global | Player turns into smoke timer. (When you get Leaf, Tanooki suit etc.) | |
$7E0555 | 1 byte | Timer | Super Mario Bros. 3/Global | Mario changes pallette rapidly timer (When you get fireflower) | |
$7E0556 | 1 byte | Timer | Super Mario Bros. 3/Global | Everything freezes timer (Activates when Mario gets hit) | |
$7E0557 | 1 byte | Timer | Super Mario Bros. 3/Global | Player kicks object image timer | |
$7E0558 | 1 byte | Timer | Super Mario Bros. 3/Global | Player faces screen image timer | |
$7E0559 | 1 byte | Timer | Super Mario Bros. 3/Global | Player walks to the right in level end timer (Activates when only on ground) | |
$7E055A | 1 byte | Timer | Super Mario Bros. 3/Global | Player walking towards doomship timer (during that one cutscene). | |
$7E0566 | 1 byte | Generator | Super Mario Bros. 3/Global | Generator number. Valid values: $00 - Nothing $01 - Flying Cheep-Cheeps $02 - Spiny Cheep-Cheeps $03 - ? (turns off generator and does something else...) $04 - Para-Beetles (red and green) $05 - Moving background clouds? $06 - Left-moving falling platforms $07 - Exit on treasure chest obtain? $08 - Turns off generators? TODO: Verify values 05, 07, and 08 and check out 03. |
|
$7E0567 | 1 byte | Timer | Super Mario Bros. 3/Global | P-Switch timer. | |
$7E0577 | 1 byte | Player | Super Mario Bros. 3/Global | Player Kuribo shoe status $00 - Without $01 - With |
|
$7E0578 | 1 byte | Powerup | Super Mario Bros. 3/Global | Current player's powerup. $00 - Small $01 - Small $02 - Big $03 - Fiery $04 - Raccoon $05 - Frog $06 - Tanooki $07 - Hammer $20 - Tanooki statue |
|
$7E057A | 1 byte | Timer | Super Mario Bros. 3/Global | Tanooki Player's statue mode timer. Makes the player lose statue mode once it hits 00. | |
$7E0598 | 1 byte | Overworld | Super Mario Bros. 3/Global | Flag to enable the spotlight on the overworld. Read upon overworld loading, pausing and level entry. | |
$7E0598 | 1 byte | Overworld | Super Mario Bros. 3/Global | Flag to hide the overworld in darkness when the Game Over screen pops up. Only used in World 8's 3rd submap (with the spotlight). | |
$7E05A5 | 1 byte | Timer | Super Mario Bros. 2 | How long it takes Phanto to initially take off after grabbing a key. Starts at #$A0 | |
$7E05BF | 8 bytes | Y Position | Super Mario Bros. 3/Global | Extended sprite Y-position, low byte. TODO: Verify length |
|
$7E05C9 | 8 bytes | X Position | Super Mario Bros. 3/Global | Extended sprite X position, low byte TODO: Verify length |
|
$7E05EE | 3 bytes | Timer | Super Mario Bros. 3/Global | Current level timer (example: $03 $02 $05 = 325 seconds left) | |
$7E0620 | 1 byte | Flag | Super Mario Bros. 2 | 1UP has been collected flag. | |
$7E0628 | 1 byte | Level Data | Super Mario Bros. 2 | In potion room or not. #$00 = regular level, #$01 = jar, #$02 = potion room. | |
$7E0629 | 1 byte | Level Data | Super Mario Bros. 2 | Level number without world number added | |
$7E062A | 1 byte | Counter | Super Mario Bros. 2 | Amount of cherries collected | |
$7E062B | 1 byte | Counter | Super Mario Bros. 2 | Amount of coins you have for the bonus game | |
$7E062D | 4 bytes | Level Data | Super Mario Bros. 2 | Amount of levels completed per character table. | |
$7E0635 | 1 byte | World | Super Mario Bros. 2 | World number. | |
$7E0671 | 8 bytes | Sprites | Super Mario Bros. 3/Global | Sprite number. TODO: Verify length; include list? |
|
$7E06A1 | 13 bytes | Map16 | Super Mario Bros. 1 | Map16 tile buffer. Map16 tile which gets drawn off-screen as the level progresses. Tiles are drawn from top to bottom, so the first byte is for the top of the level while the last byte is for the bottom of the level. |
|
$7E06C2 | 1 byte | Player | Super Mario Bros. 2 | Player is shrinking or growing | |
$7E06CB | 1 byte | Generator | Super Mario Bros. 1 | Which generator to activate. | |
$7E06CC | 1 byte | Flag | Super Mario Bros. 1 | "Hard mode" flag. This flag is set at W5-3 and modifies sprites (makes platforms smaller and have bullet generators, etc.) | |
$7E06CD | 1 byte | Sprite Number | Super Mario Bros. 1 | Which enemy to generate during generators. | |
$7E06D9 | 1 byte | Counter | Super Mario Bros. 1 | Looping maze level amount of correct checkpoints counter. Resets everytime you pass the last checkpoint of a certain part of the level. | |
$7E06DA | 1 byte | Counter | Super Mario Bros. 1 | Looping maze level amount of checkpoints counter. Resets everytime you pass the last checkpoint of a certain part of the level. | |
$7E06DB | 1 byte | Y Speed | Super Mario Bros. 1 | Springboard launch force. Later stored into $7E00A0, player Y Speed. | |
$7E0714 | 1 byte | Flag | Super Mario Bros. 1 | Player is ducking flag. $04 = duck, $00 = normal. Unwritten when player is small. | |
$7E0715 | 3 bytes | Routine | Super Mario Bros. 3/Global | Current player's score | |
$7E0716 | 1 byte | Flag | Super Mario Bros. 1 | Disable player collision detection with objects flag. Can still interact with sprites. |
|
$7E0717 | 1 byte | Counter | Super Mario Bros. 1 | Current Demo action executed | |
$7E0718 | 1 byte | Timer | Super Mario Bros. 1 | Current Demo action's timer, counts down. | |
$7E071A | 1 byte | X Position | Super Mario Bros. 1 | Horizontal X coordinate of left side of the screen, high byte. | |
$7E071A | 1 byte | Hardware Mirror | Super Mario Bros. 1 | Mirror of $210D: BG1 X Position (high byte) | |
$7E071B | 1 byte | X Position | Super Mario Bros. 1 | Horizontal X coordinate of right side of the screen, high byte. | |
$7E071C | 1 byte | X Position | Super Mario Bros. 1 | Horizontal X coordinate of left side of the screen, low byte. | |
$7E071D | 1 byte | X Position | Super Mario Bros. 1 | Horizontal X coordinate of right side of the screen, low byte. | |
$7E0720 | 2 bytes | VRAM | Super Mario Bros. 1 | Handles drawing of the layer 1 tiles? Adding 1 to it moves every layer 1 stuff to the left 1 8x8 tile. "Is 0x04 on every odd numbered page and 0x00 on even." TODO: Verify |
|
$7E0725 | 1 byte | Level | Super Mario Bros. 1 | Current screen number. Starts with $01 unlike traditional counters which start at $00. Changing this seems to affect level loading in real-time. Seems to be used in maze castle levels (like 7-4) |
|
$7E0726 | 1 byte | Player | Super Mario Bros. 3/Main gameplay | Current player number. $00 - Mario $01 - Luigi |
|
$7E0727 | 1 byte | World | Super Mario Bros. 3/Global | Current world | |
$7E0727 | 1 byte | Overworld | Super Mario Bros. 3/Overworld | Current player's overworld action. | |
$7E072C | 2 bytes | Objects | Super Mario Bros. 1 | Offset of level data, used as an index for [$FA],y | |
$7E0733 | 1 byte | Level | Super Mario Bros. 1 | Area object style $00 - Regular (green platforms, also used in cloud levels) $01 - Mushroom platforms $02 - Bullet Bill Cannons |
|
$7E0735 | 1 byte | Level | Super Mario Bros. 1 | Vertical length of object, used in rendering objects into the level. | |
$7E0739 | 1 byte | Sprites | Super Mario Bros. 1 | Offset of sprite data, used as an index for [$FD],y | |
$7E073A | 1 byte | Sprites | Super Mario Bros. 1 | Screen number of the most recent sprite placed into the level. | |
$7E073D | 2 bytes | Flag | Super Mario Bros. 3/Main gameplay | Flag to beat the current world, display the "Oh thank heavens!" cutscene and proceed to the next world. Read upon level load. Byte 1 is for Mario Byte 2 is for Luigi |
|
$7E073F | 1 byte | X Position | Super Mario Bros. 1 | BG1 X Position low byte. | |
$7E073F | 1 byte | Hardware Mirror | Super Mario Bros. 1 | Mirror of $210D: BG1 X Position (low byte) | |
$7E0740 | 1 byte | Y Position | Super Mario Bros. 1 | BG1 Y Position low byte. | |
$7E0740 | 1 byte | Hardware Mirror | Super Mario Bros. 1 | Mirror of $210E: BG1 Y Position (low byte) High byte version of this address does not exist. |
|
$7E0742 | 1 byte | Flag | Super Mario Bros. 3/Global | Flag to keep N-Spade cards as is. 0 = shuffle, 1 = keep. | |
$7E0743 | 1 byte | Flag | Super Mario Bros. 1 | Cloud bonus game level type flag (also replaces most objects with clouds as the level progresses). | |
$7E0744 | 3 bytes | Pointers | Super Mario Bros. 2 | Layer 3 Map16 data pointer. | |
$7E0746 | 1 byte | Counter | Super Mario Bros. 1 | Flagpole task control. $00 - Nothing $01 - Check if firework is applicable $02 - Award points $03 - Raise star flag and launch fireworks $04 - Delay to level fadeout |
|
$7E0747 | 1 byte | Timer | Super Mario Bros. 1 | Everything freezes timer (when the player get a powerup or dies for example). | |
$7E0747 | 2 bytes | Player | Super Mario Bros. 3/Global | Current player's powerup on the overworld. $00 - Small $01 - Big $02 - Fire $03 - Raccoon $04 - Frog Suit $05 - Tanooki Suit $06 - Hammer Suit $07 - Jugem's Cloud $08 - P-Wing $09 or higher - Glitch Byte 1 is for Mario, byte 2 is for Luigi. Behaviour of certain powerups apply once the overworld loads , not immediately upon changing the value (like Jugem's Cloud). Jugem's Cloud will also have seemingly infinite uses. |
|
$7E074D | 1 byte | Sprites | Super Mario Bros. 3/Global | Number of pixels that a sprite has moved along the X- or Y-axis. It is set during the routine that updates a sprite's position based on its speed. | |
$7E074E | 1 byte | Graphics | Super Mario Bros. 2 | Enable Layer 3 image. Also controls which Layer 3 image to load. | |
$7E074F | 9 bytes | Sprites | Super Mario Bros. 3/Global | Sprite X position fractional bits. TODO: Verify length |
|
$7E0753 | 1 byte | Player | Super Mario Bros. 1 | Current Player $00 - Player 1 (Mario) $01 - Player 2 (Luigi) Changing this value effectively changes the input controller as well. |
|
$7E0754 | 1 byte | Flag | Super Mario Bros. 1 | Current player's small player flag. | |
$7E0756 | 1 byte | Player | Super Mario Bros. 1 | Current player's powerup | |
$7E075A | 1 byte | Player | Super Mario Bros. 1 | Current player's current amount of lives. | |
$7E075B | 1 byte | Counter | Super Mario Bros. 1 | Current player's midway point screen number | |
$7E075C | 1 byte | Counter | Super Mario Bros. 1 | Current player's level number (used for dash-number display) | |
$7E075D | 1 byte | Flag | Super Mario Bros. 1 | Current player's hidden 1-up block can be hit flag. | |
$7E075E | 1 byte | Counter | Super Mario Bros. 1 | Current player's coins. (Statusbar display not updated) | |
$7E075F | 1 byte | World | Super Mario Bros. 1 | Current player's world. | |
$7E0760 | 1 byte | World | Super Mario Bros. 1 | Current player's level (does not update dash-number) | |
$7E0761 | 1 byte | Player | Super Mario Bros. 1 | Previous player's current amount of lives. | |
$7E0761 | 9 bytes | Sprites | Super Mario Bros. 3/Global | Sprite Y position fractional bits. TODO: Verify length |
|
$7E0762 | 1 byte | Counter | Super Mario Bros. 1 | Previous player's midway point screen number | |
$7E0763 | 1 byte | Counter | Super Mario Bros. 1 | Previous player's level number (used for dash-number display) | |
$7E0764 | 1 byte | Flag | Super Mario Bros. 1 | Previous player's hidden 1-up block can be hit flag. | |
$7E0765 | 1 byte | Counter | Super Mario Bros. 1 | Previous player's coins. (Statusbar display not updated) | |
$7E0766 | 1 byte | World | Super Mario Bros. 1 | Previous player's world. | |
$7E0767 | 1 byte | World | Super Mario Bros. 1 | Previous player's level (does not update dash-number) | |
$7E0769 | 1 byte | Flag | Super Mario Bros. 1 | Disable level preview flag. | |
$7E076A | 1 byte | Flag | Super Mario Bros. 1 | Current player's "More difficult quest" flag. | |
$7E0770 | 1 byte | Routine | Super Mario Bros. 1 | Game operation mode. $00 - Title screen $01 - Main $02 - Defeated Bowser $03 - Game Over |
|
$7E0772 | 1 byte | Routine | Super Mario Bros. 1 | Which task to execute of the current operation mode ($7E0770). | |
$7E0772 | 1 byte | Flag | Super Mario Bros. 2 | Layer 3 transparency flag. (Layer 3 in front of Layer 2) Used for light beams in cave levels. | |
$7E0773 | 1 byte | VRAM | Super Mario Bros. 1 | Stripe image uploader destination VRAM address index. Indexes the tables at $0382DE (VRAM low byte) and $0382F1 (VRAM high byte). | |
$7E0775 | 1 byte | Speed | Super Mario Bros. 1 | Camera scrolling x-speed. | |
$7E0775 | 1 byte | Hardware Mirror | Super Mario Bros. 2 | BG Mode / Character Size / Layer 3 priority | |
$7E0776 | 1 byte | Flag | Super Mario Bros. 1 | Pause flag. Shows the pause menu. | |
$7E0777 | 1 byte | Timer | Super Mario Bros. 1 | Counter which disables the start button. Used when pausing the game so you can't rapidly pause/unpause. Counts down automatically. | |
$7E077A | 1 byte | Flag | Super Mario Bros. 1 | 2-Player game flag | |
$7E077F | 1 byte | Flag | Super Mario Bros. 1 | Previous player's small player flag. | |
$7E0780 | 1 byte | Player | Super Mario Bros. 1 | Previous player's powerup. | |
$7E0781 | 1 byte | Flag | Super Mario Bros. 1 | "More difficult quest" flag for previous player | |
$7E0782 | 1 byte | Timer | Super Mario Bros. 2 | Amount of times 'No Bonus' should flash. (Up to 7F) | |
$7E0783 | 1 byte | Timer | Super Mario Bros. 2 | Amount of frames 'No Bonus' remains present or not. (00 slowest, 01 fastest) | |
$7E078A | 1 byte | Timer | Super Mario Bros. 2 | Amount of time to wait before changing music back to the original level music again. Used for several occasions like the Crystal Ball collecting scene. | |
$7E078C | 1 byte | Flag | Super Mario Bros. 3/Battle Mode | The player who won the round. $01 = Luigi, $02 = Mario. | |
$7E078F | 1 byte | Timer | Super Mario Bros. 1 | Countdown timer which when it hits 0, it reduces the level timer by 1. Lower values means the level timer counts down faster. | |
$7E079B | 1 byte | Timer | Super Mario Bros. 1 | Used in generators: Timer to spawn the next sprite. TODO: Seems to behave differently for the bullet bill generator |
|
$7E079C | 1 byte | Timer | Super Mario Bros. 1 | Time until Bowser's sprite shoots a fireball. | |
$7E07AE | 1 byte | Timer | Super Mario Bros. 1 | Player invincibility (after getting hit) timer. | |
$7E07AF | 1 byte | Timer | Super Mario Bros. 1 | Player Star power timer. | |
$7E07B7 | 7 bytes | Miscellaneous | Super Mario Bros. 1 | Table of randomly generated numbers. | |
$7E07CE | 6 bytes | Player | Super Mario Bros. 1 | Player 1's current score. 1 digit each byte. Example: $01 $02 $03 $04 $05 $06 = 1234560 points | |
$7E07D4 | 6 bytes | Player | Super Mario Bros. 1 | Player 2's current score. | |
$7E07E9 | 3 bytes | Timer | Super Mario Bros. 1 | The level's current timer. First byte is the hundreds, second byte is the tens, and the third byte is the ones. |
|
$7E07FC | 1 byte | Flag | Super Mario Bros. 1 | "More difficult quest" flag. Actually affects the world and level number display to show the star. |
|
$7E07FD | 1 byte | World | Super Mario Bros. 1 | Residual address from NES SMB1: World number for the secret continue function (A + Start) of NES SMB1 | |
$7E0800 | 544 bytes | OAM Tilemap | Super Mario Bros. 1 | OAM table. | |
$7E0800 | 544 bytes | OAM Tilemap | Super Mario Bros. 2 | OAM table. | |
$7E0800 | 512 bytes | OAM Tilemap | Intro & Game Select Screens | OAM low table mirror | |
$7E0800 | 544 bytes | Hardware Mirror | Super Mario Bros. 3/Battle Mode | Mirror of the entirety of OAM. | |
$7E0886 | 1 byte | OAM Tile Number | Super Mario Bros. 3/Global | Miniature player's tile number in the WORLD N MARIO/LUIGI x N blue screen popup on the overworld. |
|
$7E0A00 | 32 bytes | OAM Tilemap | Intro & Game Select Screens | OAM high table mirror (actual). | |
$7E0A20 | 128 bytes | OAM Tilemap | Super Mario Bros. 2 | Table that determines the size of a sprite's tile - 8x8 (#$00) or 16x16 (#$02). Each byte corresponds to 4 OAM bytes. Stores to $0A00-$0A1F (where each 2 bits correspond to 4 OAM bytes.) | |
$7E0A20 | 128 bytes | OAM Tilemap | Intro & Game Select Screens | OAM high table mirror (expanded). Each byte only sets the lowest two bits that then get inserted into $7E:0A00. |
|
$7E0AC0 | 1 byte | Flag | Intro & Game Select Screens | If non-zero CGRAM will update (transfer $7F:9200 to CGRAM). | |
$7E0B00 | 512 bytes | Palette | Super Mario Bros. 2 | CGRAM (palette) table. | |
$7E0B75 | 1 byte | Pointers | Super Mario Bros. 1 | Pause window states. $00 - Expand $01 - Maintain pause window, wait for input, etc. $02 - Option selected (?) $03 - Collapse |
|
$7E0B78 | 1 byte | Timer | Super Mario Bros. 1 | Frame counter which increases every frame only when paused. Used to do the cursor blinking animation. | |
$7E0B9A | 1 byte | HDMA | Super Mario Bros. 1 | How big the windowing HDMA circle is of the player's and Peach's portrait after rescuing the princess. Maximum valid value is $30. | |
$7E0BA5 | 1 byte | Flag | Super Mario Bros. 1 | Animation locked flag. $01 Locks the player animation. Seems to be only used during the fadeout to a new world after rescuing Toad. |
|
$7E0E4F | 1 byte | Flag | Super Mario Bros. 1 | Pipe fadeout flag - when taking a pipe, makes all screen fades mosaic and hides OAM tiles. | |
$7E0E7E | 1 byte | Hardware Mirror | Super Mario Bros. 1 | Mirror of $2105: Mosaic/pixelation register. | |
$7E0EC0 | 2 bytes | Index | Super Mario Bros. 1 | Index to the final background map16 page written. (Every $0100 bytes of RAM $7ED000 is a page) | |
$7E0EC2 | 1 byte | Flag | Super Mario Bros. 1 | Current player's character graphics. $00 - Mario's graphics $01 - Luigi's graphics |
|
$7E0ED1 | 1 byte | Flag | Super Mario Bros. 1 | "Starry Night" background mode flag. Enables IRQ parallax scrolling and other things. | |
$7E0ED2 | 1 byte | Hardware Mirror | Super Mario Bros. 1 | Mirror of $2110: BG2 Y Position (low byte) | |
$7E0ED3 | 1 byte | Hardware Mirror | Super Mario Bros. 1 | Mirror of $2110: BG2 Y Position (high byte) | |
$7E0EDC | 1 byte | Flag | Super Mario Bros. 1 | Process layer 3 image display flag | |
$7E0EDE | 1 byte | Flag | Super Mario Bros. 1 | IRQ-related flag. $00 during fades, $01 during normal levels and $02 during Starry Night levels. | |
$7E0EE0 | 1 byte | Hardware Mirror | Super Mario Bros. 1 | Mirror of $2132: Direct Color Register | |
$7E0EE1 | 1 byte | Hardware Mirror | Super Mario Bros. 1 | Mirror of $2132: Direct Color Register | |
$7E0EE2 | 1 byte | Hardware Mirror | Super Mario Bros. 1 | Mirror of $2132: Direct Color Register | |
$7E0EEE | 2 bytes | Hardware Mirror | Super Mario Bros. 1 | if $7E0EF1 (starry night IRQ flag) is set: Mirror of $210F: BG2 Horizontal scroll. else: Mirror of $2111: BG3 Horizontal scroll. |
|
$7E0EF2 | 1 byte | Counter | Super Mario Bros. 1 | IRQ V-Timer thing. #$AF during Starry Night levels to do the parallax effect, #$1F during other levels. | |
$7E0EFD | 1 byte | Hardware Mirror | Super Mario Bros. 1 | Mirror of $210F: BG2 X Position (low byte) | |
$7E0EFE | 1 byte | Hardware Mirror | Super Mario Bros. 1 | Mirror of $210F: BG2 X Position (high byte) | |
$7E0F4C | 1 byte | Timer | Super Mario Bros. 1 | Bowser animation freeze timer | |
$7E0F4E | 1 byte | Index | Super Mario Bros. 1 | Sprite index of latest generated Bowser fire. | |
$7E0F89 | 1 byte | Counter | Super Mario Bros. 1 | 'Phase' of the floating heart in the Princess kisses player sequence. | |
$7E1000 | 512 bytes | Palette | Super Mario Bros. 1 | Level Palette | |
$7E1019 | 1 byte | Counter | Super Mario Bros. 3/Global | An unused counter variable which controls how many times you get to play the Spade minigame. Setting the value to any value besides 00 during the game will allow you to keep trying until either you win, or the counter reaches zero (whichever comes first). Simply press A, B, or Start to spin the reels again. | |
$7E1061 | 1 byte | Music | Super Mario Bros. 3/Main gameplay | The level music. Values: 00 = nothing 01 = athletic 02 = grassland 03 = water 04 = P-switch 05 = Bowser battle 06 = underground 07 = bonus win 08 = fortress 09 = miss 0A = game over 0B = boss clear 0C = level clear 0D = invincible 0E = Bowser defeated? 0F = falling with wand 10 = airship 11 = Hammer Bros. battle 12 = boss battle 13 = king saved 14 = Coin Heaven 15 = title screen 16 = 2-player battle (with intro) 17 = Bowser's letter 18 = Peach's letter 19-FF = nothing? |
|
$7E1062 | 1 byte | Music | Super Mario Bros. 3/Main gameplay | Music backup, used to restore the level music when it changes (as a result of something like a P-Switch or star). | |
$7E116C | 14 bytes | VRAM Tilemap | Super Mario Bros. 2 | Line of white squares to display how many levels there are in current world. 2 bytes per tile. 1st byte = tilemap, 2nd byte = properties. | |
$7E118E | 1 byte | VRAM Tilemap | Super Mario Bros. 2 | World number in beginning of level display tilemap | |
$7E118F | 1 byte | VRAM Tilemap | Super Mario Bros. 2 | World number in beginning of level display properties | |
$7E1190 | 1 byte | VRAM Tilemap | Super Mario Bros. 2 | Dash in beginning of level display tilemap | |
$7E1191 | 1 byte | VRAM Tilemap | Super Mario Bros. 2 | Dash in beginning of level display properties | |
$7E1192 | 1 byte | VRAM Tilemap | Super Mario Bros. 2 | Level number in beginning of level display tilemap | |
$7E1193 | 1 byte | VRAM Tilemap | Super Mario Bros. 2 | Level number in beginning of level display properties | |
$7E11B4 | 1 byte | Counter | Super Mario Bros. 2 | Amount of lives in char. select, 10s | |
$7E11B5 | 1 byte | VRAM Tilemap | Super Mario Bros. 2 | Properties of lives in char. select, 10s | |
$7E11B6 | 1 byte | Counter | Super Mario Bros. 2 | Amount of lives in char. select, 1s | |
$7E11B7 | 1 byte | VRAM Tilemap | Super Mario Bros. 2 | Properties of lives in char. select, 1s | |
$7E11BD | 6 bytes | VRAM Tilemap | Super Mario Bros. 2 | Tilemap and properties of number of 'World | |
$7E1200 | 1 byte | Sound Effect | Super Mario Bros. 3/Global | Sound effects channel 1 | |
$7E1201 | 1 byte | Hardware Mirror | Super Mario Bros. 1 | Mirror of $2100: Brightness settings. Automatically goes into F-Blank when brightness is 0. |
|
$7E1201 | 1 byte | Sound Effect | Super Mario Bros. 3/Global | Sound effects channel 2 | |
$7E1202 | 1 byte | Music | Super Mario Bros. 3/Global | Current music number. Write $F2 to lower the volume, and $80 to fade out the music, although doing this disallows you from pausing inside levels. | |
$7E1203 | 1 byte | Hardware Mirror | Super Mario Bros. 1 | Mirror of $420C: Enable HDMA channels | |
$7E1203 | 1 byte | Sound Effect | Super Mario Bros. 3/Global | Sound effects channel 3 | |
$7E1204 | 1 byte | Hardware Mirror | Super Mario Bros. 1 | Mirror of $2123: Window Mask Settings for BG1 and 2 | |
$7E1204 | 4 bytes | Hardware Mirror | Super Mario Bros. 3/Global | Backup of $1200; used to determine which music was played recently. | |
$7E1205 | 1 byte | Hardware Mirror | Super Mario Bros. 1 | Mirror of $2124: Window Mask Settings for BG3 and 4 | |
$7E1206 | 1 byte | Hardware Mirror | Super Mario Bros. 1 | Mirror of $2125: Window Mask Settings for OAM and color window | |
$7E1207 | 1 byte | Hardware Mirror | Super Mario Bros. 1 | Mirror of $212E: Window Mask Designation for main screen | |
$7E1208 | 1 byte | Hardware Mirror | Super Mario Bros. 1 | Mirror of $212F: Window Mask Designation for sub screen | |
$7E1208 | 4 bytes | Hardware Mirror | Super Mario Bros. 3/Global | SPC700 -> SNES I/O registers. Used to determine if a sound effect or music is finished playing. | |
$7E1209 | 1 byte | Hardware Mirror | Super Mario Bros. 1 | Mirror of $2130: Color addition select | |
$7E120A | 1 byte | Hardware Mirror | Super Mario Bros. 1 | Mirror of $2131: CGADSUB | |
$7E120B | 1 byte | Hardware Mirror | Super Mario Bros. 1 | Mirror of $212C: Main Screen Designation | |
$7E120C | 1 byte | Hardware Mirror | Super Mario Bros. 1 | Mirror of $212D: Sub Screen Designation | |
$7E120D | 1 byte | Hardware Mirror | Super Mario Bros. 1 | Mirror of $2105: Screen mode | |
$7E120E | 1 byte | Hardware Mirror | Super Mario Bros. 1 | Mirror of $2128: Window 2 left position | |
$7E120F | 1 byte | Hardware Mirror | Super Mario Bros. 1 | Mirror of $2129: Window 2 right position | |
$7E1210 | 1 byte | Hardware Mirror | Super Mario Bros. 1 | Mirror of $2132: Direct color register | |
$7E1300 | 5 bytes | Level Data (Objects) | Super Mario Bros. 1 | A buffer for rendering horizontally extendable objects. The buffer is represented as a stack that starts at $7E1304 and ends at $7E1300. A value of #$FF means there is no object to render. A value greater than or equal to zero means this object should render at the current X-coordinate. Each byte represents the remaining width of the object to render. The area data parser renders the level an X-coordinate at a time. The renderer pauses until the player moves forward and more tile data needs to be read (this strategy to load area data is why you can't scroll backwards in SMB1). How the buffer works is, when an object is at the X-coordinate as the area data renderer (the coordinate it is currently rendering) it will do the render logic for that coordinate, decrement the buffer value, and move on. Once the buffer value gets to $FF, this buffer value is free to use for another object. It will save the 16-bit index of this object relative to the area data address at $7E1305,x, and the 8-bit width of the object at $7E1300,x. If there is already an object at the current buffer stack, the object will be saved to the next buffer location. If all five buffers are filled, the render will not render anymore objects until it gets to the next screen and the buffer is reset. This places a limit of 5 objects per X-coordinate in SMB1. |
|
$7E1300 | 512 bytes | Palette | Super Mario Bros. 3/Global | A buffer for the entire palette, both in levels and on the overworld. It may be uploaded to CGRAM depending on $1500. | |
$7E1305 | 10 bytes | Level Data (Objects) | Super Mario Bros. 1 | A buffer that saves the index of the area data object in the respective buffer of $7E1300. Once an object is ready to be rendered at its X-coordinate, the width of the object is saved to $7E1300,x and the index of this object in the area object data is saved at $7E1305,x. The X register for $7E1300,x is 8-bit, but for $7E1305,x it's 16-bit. |
|
$7E130F | 5 bytes | Level Data (Objects) | Super Mario Bros. 1 | A flag for the current buffer object at $7E1300. If that object is a green tree platform, then this flag is set when it's rendering the left base of the tree (the stem), and then cleared once it reaches the right base. This flag is used to determine when to start and stop rendering the stem green tree platform. |
|
$7E1314 | 5 bytes | Level Data (Objects) | Super Mario Bros. 1 | A value used for the current buffer object at $7E1300,x. If that object is an orange mushroom platform, then this value is set to half the width of the platform and is used to determine where to draw the stem of the mushroom. |
|
$7E1319 | 231 bytes | Empty | Super Mario Bros. 1 | Unused free space. Ends at $7E13FF. | |
$7E1400 | 64 bytes | HDMA | Super Mario Bros. 1 | The red intensity of the HDMA background colors. Seems to be used in indirect HDMA to $2132, HDMA channel 5 | |
$7E1408 | 1 byte | Counter | Super Mario Bros. 2 | Amount of coins in bonus game, 10s (if low byte is a blank tile, this is used as 1s) | |
$7E1409 | 1 byte | VRAM Tilemap | Super Mario Bros. 2 | Properties of coins in bonus game, 10s | |
$7E140A | 1 byte | Counter | Super Mario Bros. 2 | Amount of coins in bonus game, 1s | |
$7E140B | 1 byte | VRAM Tilemap | Super Mario Bros. 2 | Properties of coins in bonus game, 1s | |
$7E142A | 1 byte | Counter | Super Mario Bros. 2 | Amount of lives in bonus game, 10s | |
$7E142B | 1 byte | VRAM Tilemap | Super Mario Bros. 2 | Properties of lives in bonus game, 10s | |
$7E142C | 1 byte | Counter | Super Mario Bros. 2 | Amount of lives in bonus game, 1s | |
$7E142D | 1 byte | VRAM Tilemap | Super Mario Bros. 2 | Properties of lives in bonus game, 1s | |
$7E1460 | 96 bytes | HDMA | Super Mario Bros. 1 | The green intensity of the HDMA background colors. Seems to be used in indirect HDMA to $2132, HDMA channel 6 | |
$7E14C0 | 96 bytes | HDMA | Super Mario Bros. 1 | The blue intensity of the HDMA background colors. Seems to be used in indirect HDMA to $2132, HDMA channel 7 | |
$7E1500 | 1 byte | Palette | Super Mario Bros. 3/Global | A flag that determines whether or not to upload the data at $1300. If this is nonzero, $1300-$14FF will be uploaded to CGRAM and $1500 will be cleared to zero. The relevant check is at $20F923. | |
$7E1520 | 96 bytes | HDMA | Super Mario Bros. 1 | Indirect HDMA Table for $7E1400 - HDMA red intensity, channel 5. | |
$7E1560 | 64 bytes | HDMA | Super Mario Bros. 1 | Indirect HDMA Table for $7E1460 - HDMA green intensity, channel 6. | |
$7E15A0 | 64 bytes | HDMA | Super Mario Bros. 1 | Indirect HDMA Table for $7E14C0 - HDMA blue intensity, channel 7. | |
$7E1600 | 1 byte | Sound Effect | Super Mario Bros. 1 | Sound effect channel 1 | |
$7E1601 | 1 byte | Sound Effect | Super Mario Bros. 1 | Sound effect channel 2 | |
$7E1602 | 1 byte | Music | Super Mario Bros. 1 | Music channel | |
$7E1603 | 1 byte | Sound Effect | Super Mario Bros. 1 | Sound effect channel 3 | |
$7E1680 | 1 byte | Flag | Super Mario Bros. 1 | "Pause" flag after you rescue the princess. TODO: has another purpose too? |
|
$7E1800 | 17 bytes | Sprites | Super Mario Bros. 3/Battle Mode | Sprite status table (2 bytes for players, 13 bytes for enemies, then 2 bytes for bouncing blocks) Players: $00 - Initiate $01 - Alive $02 - Dying $03 - Climbing Enemies: $00 - No sprite (empty slot) $01 - Normal $02 - Flipped upside-down $03 - Dying $04 - Kicked (shell only) Bouncing blocks: $00 - No sprite (empty slot) $0D - Normal (decrements once per frame until despawned) |
|
$7E1811 | 17 bytes | Y Position | Super Mario Bros. 3/Battle Mode | Sprite Y position, low byte (2 bytes for players, 13 bytes for enemies, then 2 bytes for bouncing blocks). | |
$7E1822 | 17 bytes | X Position | Super Mario Bros. 3/Battle Mode | Sprite X position, low byte (2 bytes for players, 13 bytes for enemies, then 2 bytes for bouncing blocks). | |
$7E1833 | 17 bytes | Y Speed | Super Mario Bros. 3/Battle Mode | Sprite Y speed (2 bytes for players, 13 bytes for enemies, then 2 bytes for bouncing blocks). | |
$7E1844 | 17 bytes | X Speed | Super Mario Bros. 3/Battle Mode | Sprite X speed (2 bytes for players, 13 bytes for enemies, then 2 bytes for bouncing blocks). | |
$7E1855 | 15 bytes | Timer | Super Mario Bros. 3/Battle Mode | Sprite animation timer (2 bytes for players, then 13 bytes for enemies). | |
$7E1864 | 15 bytes | Direction | Super Mario Bros. 3/Battle Mode | Sprite horizontal facing direction (2 bytes for players, then 13 bytes for enemies). $01 = left, $02 = right. | |
$7E1873 | 17 bytes | Y Position | Super Mario Bros. 3/Battle Mode | Sprite Y position subpixel (2 bytes for players, 13 bytes for enemies, then 2 bytes for bouncing blocks). | |
$7E1884 | 17 bytes | X Position | Super Mario Bros. 3/Battle Mode | Sprite X position subpixel (2 bytes for players, 13 bytes for enemies, then 2 bytes for bouncing blocks). | |
$7E1895 | 17 bytes | Flag | Super Mario Bros. 3/Battle Mode | Sprite interaction direction(s) (2 bytes for players, 13 bytes for enemies, then 2 bytes for bouncing blocks). Bitwise: ????cf?? where c = 1 if hit a ceiling f = 1 if hit a floor |
|
$7E18A6 | 13 bytes | Sprites | Super Mario Bros. 3/Battle Mode | Unknown sprite table (13 bytes for enemies). TODO: figure this one out |
|
$7E18B3 | 2 bytes | Player | Super Mario Bros. 3/Battle Mode | Player kicking timer. If non-zero, player will display a kicking pose. | |
$7E18B5 | 2 bytes | Player | Super Mario Bros. 3/Battle Mode | Player squished timer. If non-zero, player will display a squished pose. | |
$7E18B7 | 2 bytes | Player | Super Mario Bros. 3/Battle Mode | Player frozen vertically timer. If non-zero, player will not move vertically. Used when a player hits their head on a block. | |
$7E18B9 | 1 byte | Flag | Super Mario Bros. 3/Battle Mode | Disable player interaction flag. Used so players don't get stuck to each other when they collide. | |
$7E18BA | 1 byte | Timer | Super Mario Bros. 3/Battle Mode | POW timer. If non-zero, the screen will shake and all sprites on a floor will be stunned. | |
$7E18BB | 13 bytes | Sprite Number | Super Mario Bros. 3/Battle Mode | Sprite number for active sprites. $00 - Spiny $01 - ? $02 - Crab $03 - Fly $04-$06 - Fireball $07-$09 - Boo $0A - Koopa $0B - ? $0C-$0E - Level cards $0F - Brown Block $10 - Super Mushroom $11 - Red ? Mushroom $12 - Green ? Mushroom $13 - Coin |
|
$7E18CA | 1 byte | Counter | Super Mario Bros. 3/Battle Mode | Number of unique enemies that have spawned this round. | |
$7E18CB | 15 bytes | Sprites | Super Mario Bros. 3/Battle Mode | Sprite lock timer (2 bytes for players, then 13 bytes for enemies). If non-zero, this sprite will be frozen in time. | |
$7E18DA | 13 bytes | Sprites | Super Mario Bros. 3/Battle Mode | Sprite turning around timer (13 bytes for enemies). | |
$7E18E7 | 15 bytes | Sprites | Super Mario Bros. 3/Battle Mode | Sprite stunned timer (2 bytes for players, then 13 bytes for enemies). | |
$7E18F6 | 2 bytes | Player | Super Mario Bros. 3/Battle Mode | Player has jumped flag. | |
$7E18F8 | 15 bytes | Sprites | Super Mario Bros. 3/Battle Mode | What block a sprite is standing on top of (2 bytes for players, then 13 bytes for sprites). | |
$7E1908 | 2 bytes | Position | Super Mario Bros. 3/Battle Mode | Coordinates of the block a player has hit from below. Bitwise: xxxxyyyy where x = block X position / $10 y = block Y position / $10 |
|
$7E190C | 1 byte | Counter | Super Mario Bros. 3/Battle Mode | Enemy spawning counter. A Swooping Boo is spawned when this value is divisible by 8. | |
$7E190D | 1 byte | Counter | Super Mario Bros. 3/Battle Mode | Enemy spawning counter. A Bouncing Boo is spawned when this value is divisible by 256. | |
$7E190E | 1 byte | Index | Super Mario Bros. 3/Battle Mode | A temporary register used for saving an index when iterating through various tables. | |
$7E190F | 2 bytes | Player | Super Mario Bros. 3/Battle Mode | The block that is direction above the players' heads. | |
$7E1911 | 13 bytes | Sprites | Super Mario Bros. 3/Battle Mode | Bitwise sprite status table (13 bytes for enemies). Bitwise: p?????e? where p = entering/exiting a pipe e = sprite exists |
|
$7E191E | 13 bytes | Sprites | Super Mario Bros. 3/Battle Mode | Sprite entering/exiting a pipe timer (13 bytes for enemies). | |
$7E192B | 3 bytes | Miscellaneous | Super Mario Bros. 3/Battle Mode | Random number generation (RNG) bytes. First two bytes are the seeds, and $192D is the actual output of the routine. | |
$7E192E | 2 bytes | Player | Super Mario Bros. 3/Battle Mode | Player coin count. | |
$7E1930 | 1 byte | Timer | Super Mario Bros. 3/Battle Mode | Round is over timer. Set to $FF when the round is finished, and advances to the next screen when it hits zero. | |
$7E1931 | 13 bytes | Sprites | Super Mario Bros. 3/Battle Mode | Miscellaneous sprite table, fast animation? (13 bytes for enemies). | |
$7E193E | 1 byte | Counter | Super Mario Bros. 3/Battle Mode | Number of times the POW has been hit. | |
$7E193F | 2 bytes | Player | Super Mario Bros. 3/Battle Mode | Player Y offset. Used to adjust the player sprite when standing on the POW. | |
$7E1942 | 15 bytes | Y Position | Super Mario Bros. 3/Battle Mode | Sprite Y position, high byte (2 bytes for players, then 13 bytes for enemies). | |
$7E1951 | 15 bytes | Sprites | Super Mario Bros. 3/Battle Mode | Miscellaneous sprite table, fast animation? (2 bytes for players, then 13 bytes for enemies) | |
$7E1962 | 13 bytes | Sprites | Super Mario Bros. 3/Battle Mode | Sprite vertical direction (13 bytes for enemies). $04 = down, $08 = up. | |
$7E198B | 15 bytes | Sprites | Super Mario Bros. 3/Battle Mode | Backup of $18CB sprite lock timer (2 bytes for players, then 13 bytes for enemies). Saves all values for when the game is paused. | |
$7E199C | 2 bytes | Player | Super Mario Bros. 3/Battle Mode | Fractional bits for $199E player animation. | |
$7E199E | 2 bytes | Player | Super Mario Bros. 3/Battle Mode | Player walking animation frame. | |
$7E19AB | 1 byte | Player | Super Mario Bros. 3/Global | Mario powerup status in the Battle Game mode. $00 - Small $01 - Big |
|
$7E19AB | 2 bytes | Player | Super Mario Bros. 3/Battle Mode | Player size. $00 = small, $01 = big. | |
$7E19AC | 1 byte | Player | Super Mario Bros. 3/Global | Luigi powerup status in the Battle Game mode. $00 - Small $01 - Big |
|
$7E19AD | 2 bytes | Player | Super Mario Bros. 3/Battle Mode | Player ducking flag. | |
$7E19AF | 2 bytes | Player | Super Mario Bros. 3/Battle Mode | Player transitioning between sizes timer. | |
$7E19B1 | 2 bytes | Player | Super Mario Bros. 3/Battle Mode | Player size after the transition animation is complete. | |
$7E19B3 | 2 bytes | Player | Super Mario Bros. 3/Battle Mode | Player flashing invincible timer. | |
$7E19B5 | 2 bytes | Player | Super Mario Bros. 3/Battle Mode | Player remains flashing invincible timer. Used so a player won't lose invincibility until after they move around. | |
$7E19B7 | 1 byte | X Position | Super Mario Bros. 3/Battle Mode | X position of the block that has a mushroom hidden inside. | |
$7E19B9 | 1 byte | Y Position | Super Mario Bros. 3/Battle Mode | Y position of the block that has a mushroom hidden inside. | |
$7E19BC | 1 byte | Counter | Super Mario Bros. 3/Battle Mode | Total number of enemies killed this round. | |
$7E19C0 | 1 byte | Timer | Super Mario Bros. 3/Battle Mode | ? Mushroom effects are active timer. | |
$7E19C5 | 9 bytes | X Position | Super Mario Bros. 3/Battle Mode | Particle X position. | |
$7E19CE | 9 bytes | Y Position | Super Mario Bros. 3/Battle Mode | Particle Y position. | |
$7E19D7 | 9 bytes | Sprites | Super Mario Bros. 3/Battle Mode | Particle animation timer. | |
$7E19E0 | 9 bytes | Sprites | Super Mario Bros. 3/Battle Mode | Particle animation frame. | |
$7E19E9 | 9 bytes | Sprite Number | Super Mario Bros. 3/Battle Mode | Particle number. $01 - Skid smoke $02 - Yellow star |
|
$7E19FF | 21 bytes | Generator | Super Mario Bros. 3/Main gameplay | Various properties for layer 1 movement generator (moving spikes, autoscroll, etc) $7E1A01: Layer 1 movements 00 - None 01 - No effect 02 - Scrolls Upright 03 - Prompt to Spike Ceiling movement. 04 - Same as 03, but scrolls down completely. 05 - Layer 1 moves up and down, the bottom of the screen has water TODO: what are the properties |
|
$7E1A25 | 9 bytes | Y Position | Super Mario Bros. 3/Global | Sprite Y position, low byte TODO: Verify length |
|
$7E1A2D | 9 bytes | X Position | Super Mario Bros. 3/Global | Sprite X position, high byte TODO: Verify length |
|
$7E1A35 | 9 bytes | X Position | Super Mario Bros. 3/Global | Sprite X position, low byte TODO: Verify length |
|
$7E1A35 | 1 byte | Counter | Super Mario Bros. 3/Battle Mode | Counter that respawns the POW when it reaches zero. | |
$7E1A38 | 1 byte | Index | Super Mario Bros. 3/Battle Mode | Index of the missing coin tile in the status bar when a player wins via collecting 5 coins. | |
$7E1A39 | 1 byte | Timer | Super Mario Bros. 3/Battle Mode | Timer that controls which palette to display in the status bar when a player wins via collecting 5 coins. | |
$7E1CFE | 1 byte | Miscellaneous | Super Mario Bros. 3/Global | Something related to Magic Wand's image TODO: Verify. Is there really a RAM address for something trivial like this? |
|
$7E1D80 | 28 bytes | Powerup | Super Mario Bros. 3/Global | What items Player 1 has in his inventory on the overworld. $00 - Nothing $01 - Mushroom $02 - Fire Flower $03 - Leaf $04 - Frog Suit $05 - Tanooki suit $06 - Hammer suit $07 - Jugem's Cloud $08 - P-wing $09 - Star $0A - Anchor $0B - Hammer $0C - Warp Whistle $0D - Music box $0E-FF - Unused |
|
$7E1D9C | 28 bytes | Powerup | Super Mario Bros. 3/Global | What items Player 2 has in his inventory on the overworld. $00 - Nothing $01 - Mushroom $02 - Fire Flower $03 - Leaf $04 - Frog Suit $05 - Tanooki suit $06 - Hammer suit $07 - Jugem's Cloud $08 - P-wing $09 - Star $0A - Anchor $0B - Hammer $0C - Warp Whistle $0D - Music box $0E-FF - Unused |
|
$7E1D9C | 3 bytes | Player | Super Mario Bros. 3/Battle Mode | Player 1's level cards. | |
$7E1DA2 | 1 byte | Counter | Super Mario Bros. 3/Global | Current player's coins | |
$7E1DBF | 3 bytes | Player | Super Mario Bros. 3/Battle Mode | Player 2's level cards. | |
$7E1DE0 | 1 byte | Music | Super Mario Bros. 2 | SFX panel 1 | |
$7E1DE1 | 1 byte | Music | Super Mario Bros. 2 | SFX panel 2 | |
$7E1DE2 | 1 byte | Music | Super Mario Bros. 2 | Current Music | |
$7E1DE3 | 1 byte | Music | Super Mario Bros. 2 | SFX panel 3 | |
$7E1E84 | 18 bytes | Objects | Super Mario Bros. 3/Global | N-Spade cards. 00 = Mushroom, 01 = Fire Flower, 02 = Star, 03 = 1-up, 04 = 10 coins, 05 = 20 coins. Anything beyond that is glitched. Layout goes from top-left to bottom-right. | |
$7E1EBB | 3 bytes | Pointers | Super Mario Bros. 3/Global | Pointer to level object data (SNES Address, Little endian) | |
$7E1F26 | 1 byte | Counter | Super Mario Bros. 3/Battle Mode | The current round number. | |
$7E1F55 | 1 byte | Overworld | Super Mario Bros. 3/Global | Amount of times the music box is supposed to play on the overworld. Is set to $02 when you first use a music box. | |
$7E1F9C | 2 bytes | Sprite Number | Super Mario Bros. 3/Global | Smoke image sprite number TODO: Verify length |
|
$7E1F9F | 2 bytes | Y Position | Super Mario Bros. 3/Global | Smoke image Y position. TODO: Verify length |
|
$7E1FA2 | 2 bytes | X Position | Super Mario Bros. 3/Global | Smoke image X position. TODO: Verify length |
|
$7E1FC8 | 8 bytes | Sprite Number | Super Mario Bros. 3/Global | Extended sprite number. $15 = laser from Bowser's Castle TODO: Verify length, get list of values |
|
$7E2000 | 45056 bytes | Map16 Tile | Super Mario Bros. 1 | Layer 2 Map16 Tiles | |
$7E2000 | 28672 bytes | Map16 | Super Mario Bros. 2 | Layer 1 Map16 table for the entire level, low byte. | |
$7E2000 | 240 bytes | Level | Super Mario Bros. 3/Battle Mode | The entire level layout. | |
$7E3965 | 1 byte | Miscellaneous | Super Mario Bros. 3/Global | Number of coins needed to activate the White Mushroom House in a level that has one. Set by sprite D4. | |
$7E3966 | 1 byte | Miscellaneous | Super Mario Bros. 3/Global | How many coins have been collected in the current level so far. | |
$7E3970 | 1 byte | Flag | Super Mario Bros. 3/Global | Flag that indicates that the white mushroom house has been spawned once. When it's set, it's not possible to spawn another white mushroom house. | |
$7E9000 | 28672 bytes | Map16 | Super Mario Bros. 2 | Layer 1 Map16 table for the entire level, high byte. | |
$7ED000 | 3328 bytes | Map16 Tilemap | Super Mario Bros. 1 | Layer 2 Map16 tilemap | |
$7F2000 | 40960 bytes | Map16 | Super Mario Bros. 2 | Layer 2 Map16 table for the entire level. | |
$7F3000 | 2688 bytes | Map16 | Super Mario Bros. 1 | Layer 3 Map16 tilemap, read upon level load for the individual VRAM tiles located around $04:BD09. TODO: Confirm size, size of ROM address, format of ROM address, and $7F2000 & $7F2004,x |
|
$7F300C | 1 byte | Index | Super Mario Bros. 3/Battle Mode | The cursor selection on the results screen. $00 = continue, $02 = quit | |
$7F4000 | 45056 bytes | Empty | Super Mario Bros. 1 | Unused space. Ends at $7FEFFF (0xB000 bytes). | |
$7F4FFE | 128 bytes | VRAM Tilemap | Super Mario Bros. 3/Battle Mode | Mirror of offset-per-tile BG3 tilemap for the barn door effect of results screen transition. | |
$7F8000 | 800 bytes | VRAM Tilemap | Intro & Game Select Screens | Tilemap buffer for BG1. | |
$7F9000 | 959 bytes | HDMA | Super Mario Bros. 3/Global | Windowing HDMA table. TODO: Verify length. Having an odd number for a windowing table is odd. |
|
$7F9200 | 200 bytes | Palette | Intro & Game Select Screens | Palette buffer. | |
$7F9200 | 200 bytes | Palette | Intro & Game Select Screens | Palette buffer. | |
$7FC000 | 2400 bytes | Map16 | Super Mario Bros. 2 | Layer 3 Map16 table for the current room. | |
$7FFB00 | 1 byte | World | Super Mario Bros. 1 | World number loaded from save file. Used in order to load the correct world number after the title screen. | |
$7FFB01 | 1 byte | Level | Super Mario Bros. 1 | Level number loaded from save file, typically 0 due to how SMB1's save system works. Setting this anyway displays the level number you set it to, but doesn't load that specific level. Use $7FFB02 for that. | |
$7FFB02 | 1 byte | Level | Super Mario Bros. 1 | Level number loaded from save file, but it's typically 0 due to how SMB1's save system works. Read after starting the game from title screen. Setting this changes which level the game starts at. | |
$7FFB03 | 1 byte | Counter | Super Mario Bros. 1 | Player 1 amount of lives loaded from save file. Read after starting the game from title screen. | |
$7FFB04 | 1 byte | Counter | Super Mario Bros. 1 | Player 2 amount of lives loaded from save file. Read after starting the game from title screen. | |
$7FFB05 | 1 byte | Flag | Super Mario Bros. 1 | More difficult quest flag loaded from save file. | |
$7FFB06 | 1 byte | Flag | Super Mario Bros. 1 | 2-Player flag, loaded from save file. Affects the game's title screen menu. | |
$7FFF00 | 1 byte | Index | Global | The current game being played. Used to run the appropriate NMI and IRQ routines of the games. $00 - Nintendo presents, hall screen, game select screen, etc. $02 - Super Mario Bros. 1 $04 - Super Mario Bros. The Lost Levels $06 - Super Mario Bros. 2 $08 - Super Mario Bros. 3 |
|
ROM Address | Length | Type | Description | Details | |
$0082CE | 10 bytes | Pointers | [Other] NMI routine pointers based on each game, 2 bytes for each pointer. 1st pointer = Game Select, 2nd = SMB1, 3rd = SMB:TLL, 4th = SMB2, 5th = SMB3 | ||
$008362 | 10 bytes | Pointers | [Other] IRQ routine pointers based on each game, 2 bytes for each pointer. 1st pointer = Game Select, 2nd = SMB1, 3rd = SMB:TLL, 4th = SMB2, 5th = SMB3 |
||
$008C1E | 1 byte | Flag | [Other] Change 00 to 01 to enable debug mode for all games. | ||
$009307 | 192 bytes | VRAM Tilemap (Text) | [Other] Error message tilemap: Tile, properties, tile, etc. Text says "THIS GAME PAK IS NOT DESIGINED FOR YOUR SUPER FAMICOM OR SUPER NES. NINTENDO CO.,LTD.". This error message triggers when your SNES is PAL. |
||
$009383 | 2 bytes | Palette | [Other] First color of the "pirated" message. Palette $00, color $0C. |
||
$009389 | 2 bytes | Palette | [Other] Second color of the "pirated" message. Palette $00, color $0D. |
||
$00938F | 2 bytes | Palette | [Other] Third color of the "pirated" message. Palette $00, color $0E. |
||
$009395 | 2 bytes | Palette | [Other] Fourth color of the "pirated" message. Palette $00, color $0F. |
||
$0093C7 | 322 bytes | Routine | [Other] "Incompatible SNES" message routine |
||
$0093EC | 2 bytes | Palette | [Other] First color of the "not compatible" message. Palette $00, color $0C. |
||
$0093F2 | 2 bytes | Palette | [Other] Second color of the "not compatible" message. Palette $00, color $0D. |
||
$0093F8 | 2 bytes | Palette | [Other] Third color of the "not compatible" message. Palette $00, color $0E. |
||
$0093FE | 2 bytes | Palette | [Other] Fourth color of the "not compatible" message. Palette $00, color $0F. |
||
$009509 | 312 bytes | VRAM Tilemap (Text) | [Other] "Serious crime" pirated message. Format is the same as the "Not Compatible" message. |
||
$009641 | 190 bytes | Routine | [Other] Pirated ROM message routine. |
||
$00965A | 1 byte | Music | [Other] Which music to play at the "Pirated" message. Default value fades out the music. |
||
$009780 | 514 bytes | HDMA | [Other] Used in "peach saved" sequence at the end of SMB1 and SMB:TLL for the windowing HDMA circle which expands. Format = unknown. TODO: Figure out the format |
||
$009C8D | 1 byte | Timer | [Other] Nintendo presents blink time. The higher the number, the sooner the logo will blink. Max number is $7F, min number is $01. Other numbers won't make it blink at all |
||
$009C91 | 1 byte | Sound Effect | [Other] Nintendo presents blink SFX. Caution: Uses other samples than the games themselves, so -some- SFX might sound glitched such as $03. |
||
$009FAB | 70 bytes | Pointers | [Hall screen] "Triangle fading" graphics offsets when fading into the game select menu, used to create the nifty effect. Bank is hardcoded at #$02 |
||
$00A017 | 20 bytes | OAM Tile Number | [Other] Nintendo presents logo tilemap (16x16 tiles) |
||
$00A02F | 1 byte | OAM Tile Y Position | [Other] Nintendo presents logo Y position. |
||
$00A033 | 1 byte | OAM Tile X Position | [Other] Nintendo presents logo X position |
||
$00A052 | 1 byte | OAM Tile Size | [Other] Nintendo presents logo tile sizes. $02 = 16x16, $00 = 8x8 |
||
$00A072 | 4 bytes | Timer | [Other] Nintendo presents logo blinks duration. Change to [00 00 00 00] to make the logo keep its blinking color after the blink. |
||
$00A076 | 48 bytes | Palette | [Other] Nintendo presents logo blinking colors. Format is currently unknown? TODO: Figure out the color |
||
$00A1A7 | 161 bytes | OAM Tilemap | [Hall screen] "SUPER MARIO ALL*STARS" OAM tilemap on the hall screen. Format: XX YY TT PP. XX = Xpos, YY = Ypos, TT = Tile, PP = properties. These tiles are 16x16. A value of $FF as XX marks the end of the table. |
||
$00A248 | 125 bytes | OAM Tilemap | [Hall screen] "SUPER MARIO ALL*STARS" OAM tilemap on the hall screen. Format: XX YY TT PP. XX = Xpos, YY = Ypos, TT = Tile, PP = properties. These tiles are 8x8. A value of $FF as XX marks the end of the table. |
||
$00A521 | 1 byte | Sound Effect | [Game select screen] SFX to play when you're moving the cursor |> over file A/B/C/D screen |
||
$00A60E | 1 byte | Sound Effect | [Game select screen] SFX to play when you can't decrease world number in a file A/B/C/D select screen |
||
$00A9B1 | 14 bytes | VRAM Tilemap | [Game select screen] Tilemap in selected game's file select. Tilemap of "FILE" and the entire thin line below it (which includes the bottom part of "NEW"). Table is for ALL the 4 "FILE" sections. Format: Tile, properties. $FFFF ends the table |
||
$00A9C7 | 34 bytes | VRAM Tilemap | [Game select screen] Tilemap in selected game's file select. Tilemap of the small controller in the bottom-left corner. Format: Tile, properties. Tilemap is for controller -only-, text around it is excluded. |
||
$00BE08 | 30 bytes | Palette | [Hall screen] Palette of the shining ALL*STARS logo. The final 8 colors should be the same color to make the logo stay decent after the flash. | ||
$00BE26 | 474 bytes | Empty | [Other] Empty, unused space. | ||
$00C083 | 32 bytes | Palette | [Super Mario Bros.: The Lost Levels] Palette of Mario and Princess during the princess rescued sequence. | ||
$00C0A3 | 32 bytes | Palette | [Super Mario Bros.: The Lost Levels] Palette of Luigi and Princess during the princess rescued sequence. | ||
$00C12E | 164 bytes | Stripe Image (Text) | [Super Mario Bros.: The Lost Levels] "Thank you Mario! The kingdom is saved! Now try a more difficult quest..." text. Encoded in stripe image | ||
$00C1D2 | 178 bytes | Stripe Image (Text) | [Super Mario Bros.: The Lost Levels] "Thank you Mario for restoring peace to our kingdom. Hurrah to our hero, Mario!" text. Encoded in stripe image | ||
$00C284 | 164 bytes | Stripe Image (Text) | [Super Mario Bros.: The Lost Levels] "Thank you Luigi! The kingdom is saved! Now try a more difficult quest..." text. Encoded in stripe image | ||
$00C328 | 178 bytes | Stripe Image (Text) | [Super Mario Bros.: The Lost Levels] "Thank you Luigi for restoring peace to our kingdom. Hurrah to our hero, Luigi!" text. Encoded in stripe image | ||
$00E5C4 | 6652 bytes | Empty | [Other] Empty, unused space. | ||
$018000 | 32768 bytes | Graphics | [Hall screen] Hall screen graphics with those characters and all (NOT animation). 8bpp |
||
$028000 | 4096 bytes | Graphics | [Other] The Nintendo Presents (Mario head) + the "© 1993 Nintendo" text for the hall screen graphics | ||
$02A000 | 8192 bytes | Graphics | [Hall screen] Graphics of the fancy Super Mario All-Stars text as well as the "© 1993 Nintendo" text. | ||
$02F000 | 4096 bytes | VRAM Tilemap | [Game select screen] Game select menu tilemap. Format: Tile, properties. Keep in mind that the first 448 bytes affects the "SELECT GAME" area which does NOT scroll when you are scrolling through the games! |
||
$0386E6 | 48 bytes | Routine | [Super Mario Bros. 1] Reset highscore (access by B+A+L+R on title screen) |
||
$03896B | 1 byte | Music | [Super Mario Bros. 1] Princess got rescued music. |
||
$039440 | 1736 bytes | Map16 | [Super Mario Bros. 1] Map16 data of FG? Partial? Format: $upperleft,$property,$bottomleft,$property,$upperright,$property,$bottomright,$property. TODO: Confirm this address |
||
$039B08 | 21 bytes | Routine | [Super Mario Bros. 1] ExecutePtrShort routine. |
||
$039BBC | 168 bytes | Routine | [Super Mario Bros. 1] Stripe image uploader. $00-$02: Pointer to stripe image. Format of stripe image: VVVVVVVV VVVVVVVV DRLLLLLL LLLLLLLL <data bytes> V = VRAM D = Stripe image direction. 1 = vertical, 0 = horizontal R = RLE flag L = Length of data |
||
$039D4A | 37 bytes | Empty | [Other] Empty, unused space. | ||
$03A7C9 | 94 bytes | Pointers | [Super Mario Bros. 1] Pointers to level object generation routines (pipes, springboards, etc.) | ||
$03AB26 | 4 bytes | Map16 Tile | [Super Mario Bros. 1] Coin map16 tile, depending on $7E005C In this order: Underwater coin, regular coin, underground coin, castle coin |
||
$03AB5A | 4 bytes | Map16 Tile | [Super Mario Bros. 1] Stone block map16 tile, depending on $7E005C In this order: Coral stone, normal stone, underground stone, castle dark brick |
||
$03AB5E | 5 bytes | Map16 Tile | [Super Mario Bros. 1] Level brick map16, depending on RAM $7E005C In this order: Underwater coral, normal bricks, underground bricks, castle bricks, smiling cloud tiles |
||
$03B1B5 | 1 byte | Music | [Super Mario Bros. 1] Mario died music (when you fall in a pit). |
||
$03B6AC | 1 byte | Sound Effect | [Super Mario Bros. 1] Fireball throwing sound effect. |
||
$03B6E4 | 2 bytes | X Speed | [Super Mario Bros. 1] Fireball X-speed (right, left). |
||
$03B6FE | 1 byte | X Position | [Super Mario Bros. 1] Fireball creation X-position, relative to the player's X-position. |
||
$03B71B | 1 byte | Y Speed | [Super Mario Bros. 1] Fireball initial Y-speed. |
||
$03B953 | 1 byte | Music | [Super Mario Bros. 1] Goal at flagpole music. |
||
$03BA2F | 1 byte | Sprites | [Super Mario Bros. 1] How long the vine at the start of a (bonus) level grows at most. | ||
$03BA30 | 1 byte | Sprites | [Super Mario Bros. 1] How long the vine from item boxes grows at most. | ||
$03C970 | 4 bytes | Y Position | [Super Mario Bros. 1] Bowser's fireball Y positions on the screen (fireball generator). |
||
$03D4F0 | 1 byte | Music | [Super Mario Bros. 1] Goal music when you defeat (any) Bowser |
||
$03D6B3 | 1 byte | World | [Super Mario Bros. 1] At which world the "real" Bowser battle music plays. |
||
$03D6B7 | 1 byte | Music | [Super Mario Bros. 1] "Real" Bowser music. |
||
$03D6BB | 1 byte | Music | [Super Mario Bros. 1] "Fake" Bowser music. |
||
$03DC62 | 15 bytes | Empty | [Other] Empty, unused space |
||
$03DCCD | 8 bytes | Sprite Number | [Super Mario Bros. 1] Sprite to generate when you kill Bowser with fireballs. In this order: Goomba, Green Koopa, Red Koopa, Spiny, Lakitu, Blooper, Hammer Bros., Bowser | ||
$03DE13 | 1 byte | Timer | [Super Mario Bros. 1] How long the star power lasts. |
||
$03DE18 | 1 byte | Music | [Super Mario Bros. 1] Star power music. |
||
$03E51D | 1 byte | X Position | [Super Mario Bros. 1] Player's X position while sliding down the flagpole, relative to the flagpole position. $00-$7F is the left side, $80-$FF is the right side. |
||
$03EBD9 | 55 bytes | Empty | [Other] Empty, unused space |
||
$03FFDE | 34 bytes | Empty | [Other] Empty, unused space |
||
$04825E | 34 bytes | HDMA | [Super Mario Bros. 1] HDMA Gradient enable routine, to be JSLed to. Used during level loading. Input: A = Which HDMA gradient to display. $00 - Regular $01 - Starry night $02 - Underwater $03 - A bright cyan/white gradient. |
||
$048ED6 | 48 bytes | Map16 Tilemap | [Super Mario Bros. 1] Small castle/top part of big castle object MAP16 tilemap. |
||
$048F06 | 62 bytes | Map16 Tilemap | [Super Mario Bros. 1] Bottom part of big castle object MAP16 tilemap. |
||
$049172 | 12 bytes | Map16 Tilemap | [Super Mario Bros. 1] World X-2 go to the surface pipe object map16 tilemap. Consult image 1 for the layout. |
||
$049679 | 32 bytes | Palette | [Super Mario Bros. 1] Bonus room Luigi background palette |
||
$04991D | 32 bytes | Palette | [Super Mario Bros. 1] Luigi Palette | ||
$04993D | 32 bytes | Palette | [Super Mario Bros. 1] Fire Mario Palette | ||
$04995D | 32 bytes | Palette | [Super Mario Bros. 1] Fire Luigi Palette | ||
$0499FD | 32 bytes | Palette | [Super Mario Bros. 1] Mario Palette | ||
$04BE89 | 237 bytes | Empty | [Other] Empty, unused space. |
||
$04C1D8 | 39 bytes | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of 1-4 and 6-4 |
||
$04C1FF | 25 bytes | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of 4-4 |
||
$04C218 | 47 bytes | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of 2-4 |
||
$04C247 | 44 bytes | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of 3-4 |
||
$04C272 | 21 bytes | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of 7-4 |
||
$04C287 | 58 bytes | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of 8-4 |
||
$04C2C1 | 37 bytes | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of 3-3 |
||
$04C2E6 | 29 bytes | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of 8-3 |
||
$04C303 | 14 bytes | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of 4-1 |
||
$04C311 | 39 bytes | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of 6-2 |
||
$04C338 | 49 bytes | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of 3-1 |
||
$04C369 | 30 bytes | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of 1-1 |
||
$04C387 | 29 bytes | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of 1-3 and 5-3 |
||
$04C3A4 | 21 bytes | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of 2-3 and 7-3 |
||
$04C3B9 | 43 bytes | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of 2-1 |
||
$04C3E4 | 44 bytes | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of 5-1 |
||
$04C408 | 9 bytes | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of Sky Bonus Area (Day) |
||
$04C411 | 37 bytes | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of 4-3 |
||
$04C436 | 35 bytes | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of 6-3 |
||
$04C459 | 9 bytes | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of 6-1 |
||
$04C462 | 1 byte | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of 4-2's Warpzone |
||
$04C463 | 58 bytes | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of 8-1 |
||
$04C49D | 43 bytes | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of 5-2 |
||
$04C4C8 | 46 bytes | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of 8-2 |
||
$04C4F6 | 28 bytes | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of 7-1 |
||
$04C512 | 9 bytes | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of Sky Bonus Area (Night) |
||
$04C51B | 37 bytes | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of 3-2 |
||
$04C540 | 45 bytes | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of 1-2 |
||
$04C56D | 47 bytes | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of 4-2 |
||
$04C59B | 45 bytes | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of Underground Bonus Area |
||
$04C5C8 | 17 bytes | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of Underwater Bonus Area |
||
$04C5D9 | 26 bytes | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of 2-2 and 7-2 |
||
$04C603 | 20 bytes | Level Data (Sprite) | [Super Mario Bros. 1] Sprite data of 8-4 Underwater |
||
$04C617 | 187 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of 1-4 and 6-4 |
||
$04C6D2 | 296 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of 4-4 |
||
$04C7FA | 222 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of 2-4 and 5-4 |
||
$04C8D8 | 252 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of 3-4 |
||
$04C9D4 | 301 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of 7-4 |
||
$04CB01 | 266 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of 8-4 |
||
$04CC0B | 105 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of 3-3 |
||
$04CC74 | 79 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of 8-3 |
||
$04CCC3 | 88 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of 4-1 |
||
$04CD1B | 149 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of 6-2 |
||
$04CDB0 | 127 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of 3-1 |
||
$04CE2F | 107 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of 1-1 |
||
$04CE9A | 87 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of 1-3 and 5-3 |
||
$04CEF1 | 137 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of 2-3 and 7-3 |
||
$04CF7A | 109 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of 2-1 |
||
$04CFE7 | 10 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of Pipe Entrance |
||
$04CFF1 | 68 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of 5-1 |
||
$04D035 | 21 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of Sky Bonus Area (Day) |
||
$04D04A | 113 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of 4-3 |
||
$04D0BB | 109 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of 6-3 |
||
$04D128 | 123 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of 6-1 |
||
$04D1A3 | 50 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of 4-2's Warpzone |
||
$04D1D5 | 152 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of 8-1 |
||
$04D26D | 126 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of 5-2 |
||
$04D2EB | 128 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of 8-2 |
||
$04D36B | 95 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of 7-1 |
||
$04D3CA | 43 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of Sky Bonus Area (Night) |
||
$04D3F5 | 56 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of 3-2 |
||
$04D42D | 165 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of 1-2 |
||
$04D4D2 | 164 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of 4-2 |
||
$04D576 | 146 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of Underground Bonus Area |
||
$04D608 | 105 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of Underwater Bonus Area |
||
$04D671 | 156 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of 2-2 and 7-2 |
||
$04D70D | 105 bytes | Level Data (Objects) | [Super Mario Bros. 1] 2-byte header and object data of 8-4 Underwater |
||
$04D776 | 138 bytes | Empty | [Other] Empty, unused space. |
||
$04D813 | 1 byte | Frequency | [Super Mario Bros. 1] The amount frames of delay of playing the "Mario is turning" sound repeatedly |
||
$04D883 | 32 bytes | Palette | [Super Mario Bros. 1] Mario palette of "Princess kisses player" sequence |
||
$04D8A3 | 32 bytes | Palette | [Super Mario Bros. 1] Luigi palette of "Princess kisses player" sequence |
||
$04D92E | 164 bytes | Stripe Image (Text) | [Super Mario Bros. 1] "Thank you Mario! The kingdom is saved! Now try a more difficult quest..." text. Encoded in stripe image |
||
$04D9D2 | 178 bytes | Stripe Image (Text) | [Super Mario Bros. 1] "Thank you Mario for restoring peace to our kingdom. Hurrah to our hero, Mario!" text. Encoded in stripe image |
||
$04DA84 | 164 bytes | Stripe Image (Text) | [Super Mario Bros. 1] "Thank you Luigi! The kingdom is saved! Now try a more difficult quest..." text. Encoded in stripe image |
||
$04DB28 | 178 bytes | Stripe Image (Text) | [Super Mario Bros. 1] "Thank you Luigi for restoring peace to our kingdom. Hurrah to our hero, Luigi!" text. Encoded in stripe image |
||
$04FD86 | 2 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 1] Properties byte of character, then the character "P" of "PUSH START" (after saving the princess). | ||
$04FD8B | 2 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 1] Properties byte of character, then the character "U" of "PUSH START" (after saving the princess). | ||
$04FD90 | 2 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 1] Properties byte of character, then the character "S" of "PUSH START" (after saving the princess). | ||
$04FD95 | 2 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 1] Properties byte of character, then the character "H" of "PUSH START" (after saving the princess). | ||
$04FD9A | 2 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 1] Properties byte of character, then the character " " of "PUSH START" (after saving the princess). | ||
$04FD9F | 2 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 1] Properties byte of character, then the character "S" of "PUSH START" (after saving the princess). | ||
$04FDA4 | 2 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 1] Properties byte of character, then the character "T" of "PUSH START" (after saving the princess). | ||
$04FDA9 | 2 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 1] Properties byte of character, then the character "A" of "PUSH START" (after saving the princess). | ||
$04FDAE | 2 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 1] Properties byte of character, then the character "R" of "PUSH START" (after saving the princess). | ||
$04FDB3 | 2 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 1] Properties byte of character, then the character "T" of "PUSH START" (after saving the princess). | ||
$04FDBF | 1 byte | Sound Effect | [Super Mario Bros. 1] "Push start" SFX at princess rescued sequence |
||
$04FDEF | 529 bytes | Empty | [Other] Empty, unused space. |
||
$05D60A | 6 bytes | OAM Tile Number | [Super Mario Bros. 1] Tile number of the lava splash of when podoboo lands in lava, each tile corresponds to a frame. | ||
$05E762 | 50 bytes | DMA | [Super Mario Bros. 1] Graphics bank bytes used in DMA. Every 2nd byte are unused. The graphics associated with this address and the next 4 addresses are as following: Address - VRAM - Size $000000 - $0000 - $1000 ; $00 - Unused $08E000 - $2000 - $1000 ; $01 - Mario bonus background $06A000 - $2000 - $2000 ; $02 - Hills background & SUPER MARIO BROS. title screen banner $098000 - $2000 - $1000 ; $03 - Underground background $09A000 - $2000 - $2000 ; $04 - Castle background & foreground $089800 - $2C00 - $0800 ; $05 - Tall slim hills background $09A000 - $2000 - $2000 ; $06 - Castle background & foreground $06A000 - $2000 - $1000 ; $07 - Hills background $088000 - $2000 - $1000 ; $08 - Underwater background & foreground $06A000 - $2000 - $2000 ; $09 - Hills background & SUPER MARIO BROS. title screen banner $08D000 - $3400 - $2000 ; $0A - Game over screen & Mario bonus room background $09E000 - $2C00 - $0800 ; $0B - Starry night background $08A000 - $2800 - $1000 ; $0C - Bowser's Castle background (outside) & princess cage $089000 - $2C00 - $0800 ; $0D - Mushrooms background $08B000 - $2C00 - $0800 ; $0E - Waterfall background $099000 - $2000 - $1000 ; $0F - Underwater ruins background $08B800 - $2C00 - $1000 ; $10 - Goomba pillars background & snow foreground $09D000 - $3000 - $1000 ; $11 - Underground foreground $08C000 - $3000 - $1000 ; $12 - Snow foreground $09E800 - $2000 - $0800 ; $13 - Bowser's Castle background, part 1 $09F000 - $2800 - $0800 ; $14 - Bowser's Castle background, part 2 $09F800 - $2C00 - $0800 ; $15 - Game Over and Time Up text $09E000 - $2C00 - $0800 ; $16 - Starry night background $09C000 - $3000 - $1000 ; $17 - Grass foreground $08F000 - $2000 - $1000 ; $18 - Luigi bonus background |
||
$05E794 | 50 bytes | DMA | [Super Mario Bros. 1] Graphics addresses low and high bytes used in DMA. | ||
$05E7C6 | 50 bytes | DMA | [Super Mario Bros. 1] Graphics VRAM addresses used in DMA. | ||
$05E7F8 | 50 bytes | DMA | [Super Mario Bros. 1] Graphics DMA size. | ||
$05EE66 | 4506 bytes | Empty | [Other] Empty, unused space. | ||
$068000 | 49152 bytes | Graphics | [Super Mario Bros. 1] Super Mario Bros. 1 & The Lost Levels graphics. | ||
$07FC00 | 160 bytes | SPC-700 | [Other] Block of SPC data. As with all blocks of SPC data, the data starts with a 2-word header: $009C - The size of the SPC data block $3D00 - The destination of the SPC-700 data block within ARAM. TODO: Figure out what SPC data this is. |
||
$07FCA0 | 28 bytes | SPC-700 | [Other] Block of SPC data. As with all blocks of SPC data, the data starts with a 2-word header: $0018 - The size of the SPC data block $3EE8 - The destination of the SPC-700 data block within ARAM. TODO: Figure out what SPC data this is. |
||
$07FCC0 | 832 bytes | SPC-700 | [Other] Part 1 of the entire SMAS SPC-700 engine (ASM) As with all blocks of SPC data, the data starts with a 2-word header: $210F - The size of the SPC data block $0500 - The destination of the SPC-700 data block within ARAM. |
||
$088000 | 98304 bytes | Graphics | [Super Mario Bros. 1] Super Mario Bros. 1 & The Lost Levels graphics. | ||
$0B8000 | 116 bytes | SPC-700 | [Hall screen] Pointers to sample data (points to ARAM) for the piano in the hall screen and game select music |
||
$0CD000 | 10240 bytes | Graphics | [Super Mario Bros. 3] Super Mario Bros. 3 credits graphics (?) | ||
$0CF800 | 2048 bytes | Graphics | [Super Mario Bros. 1] Super Mario Bros. 1 & The Lost Levels layer 3 graphics. | ||
$0D977C | 163 bytes | Routine | [Super Mario Bros.: The Lost Levels] Stripe image uploader. $00-$02: Pointer to stripe image. Format of stripe image: VVVVVVVV VVVVVVVV DRLLLLLL LLLLLLLL <data bytes> V = VRAM D = Stripe image direction. 1 = vertical, 0 = horizontal R = RLE flag L = Length of data |
||
$108000 | 32768 bytes | Graphics | [Super Mario Bros.: The Lost Levels] The Lost Levels graphics and animated graphics. | ||
$1187EF | 1 byte | Music | [Super Mario Bros. 2] Which music is used in the potion rooms. | ||
$118FB2 | 1 byte | Level Data | [Super Mario Bros. 2] After which level the credits are triggered. | ||
$1198BF | 193 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$119D4D | 3 bytes | X Speed | [Super Mario Bros. 2] Player X speed when climbing. (First value = pressing no button, second value = pressing right, third value = pressing left) | ||
$11ACF0 | 11 bytes | Pointers | [Super Mario Bros. 2] Low byte of pointer to Layer 1 Map16 tilemap in RAM, per screen. | ||
$11ACFB | 11 bytes | Pointers | [Super Mario Bros. 2] Middle byte of pointer to Layer 1 Map16 tilemap in RAM, per screen. | ||
$11AD06 | 11 bytes | Pointers | [Super Mario Bros. 2] High byte of pointer to Layer 1 Map16 tilemap in RAM, per screen. | ||
$11AF64 | 4 bytes | Pointers | [Super Mario Bros. 2] Low byte of pointer to Layer 1 Map16 tilemap data, page 0. Indexed per $40 tiles. | ||
$11AF68 | 4 bytes | Pointers | [Super Mario Bros. 2] High byte of pointer to Layer 1 Map16 tilemap data, page 0. Indexed per $40 tiles. | ||
$11AF6C | 2040 bytes | Map16 | [Super Mario Bros. 2] Layer 1 Map16 tilemap data, page 0. | ||
$11BA39 | 200 bytes | Music | [Super Mario Bros. 2] Music table for all rooms. | ||
$11BC9C | 32 bytes | Palette | [Super Mario Bros. 2] Mario's palette - 16 colours. | ||
$11BCBC | 32 bytes | Palette | [Super Mario Bros. 2] Peach's palette - 16 colours. | ||
$11BCDC | 32 bytes | Palette | [Super Mario Bros. 2] Toad's palette - 16 colours. | ||
$11BCFC | 32 bytes | Palette | [Super Mario Bros. 2] Luigi's palette - 16 colours. | ||
$11C3D0 | 81 bytes | Pointers | [Super Mario Bros. 2] Pointer to various images used in the game, such as the character select screen, starry BG, etc. | ||
$11CBB4 | 8 bytes | Level Data | [Super Mario Bros. 2] Starting room for each world. Also used to calculate how many levels one world must have. | ||
$11CDF1 | 3 bytes | Y Speed | [Super Mario Bros. 2] Player Y speed when climbing. (First value = pressing no button, second value = pressing down, third value = pressing up) | ||
$11D152 | 200 bytes | HDMA | [Super Mario Bros. 2] Table indexed by room number. Determines which HDMA BG should be used for which room. | ||
$11D2AD | 210 bytes | Pointers | [Super Mario Bros. 2] Low byte of pointer to level data (objects + level header). Indexed by room number. | ||
$11D37F | 210 bytes | Pointers | [Super Mario Bros. 2] High byte of pointer to level data (objects + level header). Indexed by room number. | ||
$11D451 | 8796 bytes | Level Data (Objects) | [Super Mario Bros. 2] Object data + level headers. | ||
$11F6AE | 13 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$11F6BB | 21 bytes | Pointers | [Super Mario Bros. 2] High byte of pointer to high byte of room pointers of sprite data, indexed by level number. | ||
$11F6D0 | 21 bytes | Pointers | [Super Mario Bros. 2] Low byte of pointer to high byte of room pointers of sprite data, indexed by level number. | ||
$11F6E5 | 21 bytes | Pointers | [Super Mario Bros. 2] High byte of pointer to low byte of room pointers of sprite data, indexed by level number. | ||
$11F6FA | 21 bytes | Pointers | [Super Mario Bros. 2] Low byte of pointer to low byte of room pointers of sprite data, indexed by level number. | ||
$11F70F | 420 bytes | Pointers | [Super Mario Bros. 2] High and low bytes of pointers to sprite data, indexed by room number of level. | ||
$11F8B3 | 2349 bytes | Level Data (Sprite) | [Super Mario Bros. 2] Sprite data. | ||
$1281E0 | 32 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$128230 | 1 byte | Miscellaneous | [Super Mario Bros. 2] Player state to change into when getting hurt. (Default: 08, changing size.) Change to 00 to actually never shrink. | ||
$12823F | 18 bytes | Pointers | [Super Mario Bros. 2] Pointer to various player animations, from $50. | ||
$128343 | 1 byte | Player | [Super Mario Bros. 2] While climbing, this button needs to be pressed in order to animate (flipping direction) the player. 00 - neither of the two, 01 - down, 02 - up. | ||
$128386 | 1 byte | Frequency | [Super Mario Bros. 2] Amount of frames to wait until direction is flipped and climbing sound is generated, when climbing. | ||
$128390 | 1 byte | Sound Effect | [Super Mario Bros. 2] Sound effect when player is climbing. | ||
$1283BA | 1 byte | Player | [Super Mario Bros. 2] On which height of the screen the player should be put at when he enters a jar room. 00 = bottom, 02 = top, 05 = middle. | ||
$1283E4 | 1 byte | Sound Effect | [Super Mario Bros. 2] Sound effect that is used when the player goes out of a jar. | ||
$12843D | 1 byte | X Speed | [Super Mario Bros. 2] X-speed of player when entering Hawkmouth. | ||
$128441 | 1 byte | Direction | [Super Mario Bros. 2] Player's direction when entering Hawkmouth. | ||
$128758 | 1 byte | Map16 Tile | [Super Mario Bros. 2] What map16 block to spawn after grabbing any item (except sprites) |
||
$128887 | 1 byte | Counter | [Super Mario Bros. 2] Amount of cherries necessary to get a star. | ||
$128891 | 1 byte | Sound Effect | [Super Mario Bros. 2] Which sound effect to generate when cherry is collected. (Bank = $1DE3.) | ||
$1288A0 | 1 byte | Map16 Tile | [Super Mario Bros. 2] Which 16x16 tile to spawn for the cherry object when collected | ||
$128907 | 1 byte | Timer | [Super Mario Bros. 2] How long it lasts until the sand digging sprite tile has vanished. | ||
$12890B | 1 byte | Sprites | [Super Mario Bros. 2] Sprite state for digging up a sand tile | ||
$12898D | 1 byte | Map16 | [Super Mario Bros. 2] Which 16x16 tile should act like a warp jar. (6F of page 0) | ||
$1289A8 | 1 byte | Sound Effect | [Super Mario Bros. 2] Which sound effect to generate when the player is going down a jar. | ||
$1289AD | 1 byte | Player | [Super Mario Bros. 2] X-speed of player when entering jar. | ||
$1289B1 | 1 byte | Player | [Super Mario Bros. 2] In which state the player sould go when going down a jar. (Default: 04.) | ||
$129112 | 1 byte | Timer | [Super Mario Bros. 2] Amount of time you remain in the dark potion room. | ||
$1292E7 | 1 byte | Timer | [Super Mario Bros. 2] Amount of time it takes for one line of text to load (Story). | ||
$1293DD | 7 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$129444 | 1 byte | Timer | [Super Mario Bros. 2] Amount of frames the 'pulling fairies out of jar' cutscene is going to take. | ||
$129448 | 1 byte | Player | [Super Mario Bros. 2] Direction the player is going to face during the 'pulling fairies out of jar' cutscene. 00 = left, 01 = right. | ||
$1294B7 | 1 byte | Music | [Super Mario Bros. 2] Which song to play with the credits. (Default: 0E.) | ||
$129A3E | 66 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$129B74 | 1 byte | Sound Effect | [Super Mario Bros. 2] Falling SFX which plays when you enter 1-1 |
||
$129CE7 | 25 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$129F56 | 20 bytes | Pointers | [Super Mario Bros. 2] 16-bit pointer for sprite statuses. ($51,x.) | ||
$12A0EC | 142 bytes | Pointers | [Super Mario Bros. 2] 16-bit pointer to sprite data, init routine. | ||
$12A246 | 1 byte | Music | [Super Mario Bros. 2] Which music to play for defeating a boss. (Default: 0B) | ||
$12A38C | 1 byte | Sprite Number | [Super Mario Bros. 2] Which sprite should have different properties when flattened. (Default: POW, sprite 3A.) | ||
$12A390 | 1 byte | OAM Tile Properties | [Super Mario Bros. 2] YXPPCCCT byte of flat POW sprite. (Default: 22) | ||
$12A4B3 | 4 bytes | OAM Tilemap | [Super Mario Bros. 2] Tilemap of the "BOMB" sprite | ||
$12A4B7 | 4 bytes | OAM Tile X Position | [Super Mario Bros. 2] XDisp of the "BOMB" sprite | ||
$12A4BB | 4 bytes | OAM Tile Y Position | [Super Mario Bros. 2] YDisp of the "BOMB" sprite | ||
$12A506 | 1 byte | OAM Tilemap | [Super Mario Bros. 2] Part of what indicates the YXPPCCCT properties the "BOMB" tiles use (= palette, graphics page, etc.). This one relies on the frame counter, meaning that this byte controls the animation of the "BOMB" sprite. With #$06 it scrolls through pal 8-B only, with #$0E through 8-F, with #$02 through 8-9. Other combinations are possible, but do know what you are doing. | ||
$12A508 | 1 byte | OAM Tilemap | [Super Mario Bros. 2] Other part of what indicates the YXPPCCCT properties the "BOMB" tiles use. This one, by default, adds priority to the sprite tiles. | ||
$12A516 | 1 byte | OAM Tilemap | [Super Mario Bros. 2] Size of "BOMB" tiles (default: 02, 16x16. 00 = 8x8. Other values not recommended.) Accounts for all four tiles. | ||
$12A8B7 | 1 byte | Y Speed | [Super Mario Bros. 2] Y speed of dissolving sand sprite. | ||
$12A8BE | 1 byte | OAM Tilemap | [Super Mario Bros. 2] Tile number of dissolving sand sprite for the first 16 frames. | ||
$12A8C2 | 1 byte | Timer | [Super Mario Bros. 2] How many frames are still left before the 'almost completely dissolved' sand tile. | ||
$12A8D7 | 1 byte | OAM Tile Number | [Super Mario Bros. 2] Tile number of dissolving sand sprite for the last 16 frames. | ||
$12AB3D | 142 bytes | Pointers | [Super Mario Bros. 2] 16-bit pointer to sprite data, main routine. | ||
$12AE12 | 1 byte | Y Speed | [Super Mario Bros. 2] Y speed of star. | ||
$12AE16 | 1 byte | X Speed | [Super Mario Bros. 2] X speed of star, first 128 frames. | ||
$12AE1F | 1 byte | X Speed | [Super Mario Bros. 2] X speed of star, other 128 frames. | ||
$12AE67 | 1 byte | Sprite Number | [Super Mario Bros. 2] Sprite spawned by Bob-omb generator. | ||
$12AE9F | 1 byte | Sound Effect | [Super Mario Bros. 2] Sound effect generated when Hawkmouth opens his mouth. | ||
$12AF15 | 1 byte | Player | [Super Mario Bros. 2] In which state the player should go when entering Hawkmouth. (Default: 06.) | ||
$12AF19 | 1 byte | Player | [Super Mario Bros. 2] Amount of frames to make the player walking when entering Hawkmouth. | ||
$12AF1D | 1 byte | Y Speed | [Super Mario Bros. 2] Y-speed of player when entering Hawkmouth. | ||
$12AF21 | 1 byte | Music | [Super Mario Bros. 2] Music to play when entering Hawkmouth. (Default: 80, fading away.) | ||
$12AF29 | 1 byte | Sound Effect | [Super Mario Bros. 2] Entering Hawkmouth sound effect. | ||
$12B0CB | 1 byte | X Speed | [Super Mario Bros. 2] X-speed (left) of Heart. | ||
$12B0D3 | 1 byte | X Speed | [Super Mario Bros. 2] X-speed (right) of Heart. | ||
$12B0D7 | 1 byte | Y Speed | [Super Mario Bros. 2] Y-speed of Heart. | ||
$12B100 | 1 byte | OAM Tile Number | [Super Mario Bros. 2] Upper tile of heart. | ||
$12B105 | 1 byte | OAM Tile Number | [Super Mario Bros. 2] Lower tile of heart. | ||
$12B111 | 1 byte | OAM Tile Properties | [Super Mario Bros. 2] YXPPCCCT data for the heart tiles. | ||
$12B122 | 1 byte | OAM Tile Size | [Super Mario Bros. 2] Size of tiles of hearts. #$00 = 8x8, #$02 = 16x16. | ||
$12B244 | 1 byte | Sprite Number | [Super Mario Bros. 2] Which sprite should add a life to the player's total and set the '1UP collected flag'. (1UP.) | ||
$12B259 | 1 byte | Sound Effect | [Super Mario Bros. 2] Sound effect generated when 1UP is collected. | ||
$12B289 | 1 byte | Music | [Super Mario Bros. 2] Music to play when a crystal ball is collected. | ||
$12B28E | 1 byte | Timer | [Super Mario Bros. 2] Amount of time to wait before Hawkmouth opens his mouth fully after crystal ball has been collected. | ||
$12B293 | 1 byte | Timer | [Super Mario Bros. 2] Amount of time to wait before music is changed back to the original again after crystal ball has been collected. | ||
$12B2B6 | 1 byte | Music | [Super Mario Bros. 2] Music to play when a mushroom is collected. | ||
$12B2C5 | 1 byte | Y Speed | [Super Mario Bros. 2] Y speed of 1-Up mushroom when collected. | ||
$12B2CE | 1 byte | Timer | [Super Mario Bros. 2] Amount of time to freeze sprite when stopwatch is collected. (#$FF) | ||
$12B4CD | 1 byte | Sprite Number | [Super Mario Bros. 2] Sprite spawned by Albatoss with Bob-Omb. | ||
$12B58C | 1 byte | Sprite Number | [Super Mario Bros. 2] If this sprite is carried, Phanto comes alive. Use in conjunction with $12:B390/0x9B590 | ||
$12B590 | 1 byte | Sprite Number | [Super Mario Bros. 2] If this sprite is carried, Phanto comes alive. Value = sprite number + 1. Use in conjunction with $12:B38C/0x9B58C. | ||
$12B885 | 1 byte | Y Speed | [Super Mario Bros. 2] Y speed of bullet spawned by Snifits. | ||
$12B889 | 1 byte | Sprite Number | [Super Mario Bros. 2] Sprite spawned by Snifits. (Bullet.) | ||
$12B977 | 1 byte | Sprite Number | [Super Mario Bros. 2] Which sprite number should behave like a POW sprite when thrown on the ground (default: 3A, POW). The only other sprite that can be affected by this is the mushroom block. | ||
$12B97B | 1 byte | Timer | [Super Mario Bros. 2] How long to shake screen and kill all sprites which are on screen when a POW has been thrown. | ||
$12B980 | 1 byte | Sound Effect | [Super Mario Bros. 2] Sound effect for POW being thrown on ground. | ||
$12B985 | 1 byte | Sprites | [Super Mario Bros. 2] Sprite state for flattened POW generating two puffs of smoke. (Default: 08) | ||
$12B98C | 1 byte | Y Speed | [Super Mario Bros. 2] Minimum Y speed at which the mushroom block will start bouncing if hitting the ground. | ||
$12B9A9 | 1 byte | Y Speed | [Super Mario Bros. 2] Y speed of mushroom block when bouncing off the ground for one time. | ||
$12C460 | 16 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$12C7E2 | 1 byte | Speed | [Super Mario Bros. 2] X and Y speed of Pidgit's carpet, when spawned. | ||
$12C7E8 | 1 byte | Sprite Number | [Super Mario Bros. 2] Sprite spawned when Pidgit is picked up. (Carpet.) | ||
$12C80D | 1 byte | Timer | [Super Mario Bros. 2] Amount of time carpet stays active after being spawned. | ||
$12CEE7 | 1 byte | Y Speed | [Super Mario Bros. 2] How fast the Cobrat in sand jumps up. | ||
$12CEF0 | 1 byte | Y Speed | [Super Mario Bros. 2] Rising speed of Cobrat in sand (while in sand). | ||
$12CEF9 | 1 byte | Y Speed | [Super Mario Bros. 2] Sinking speed of Cobrat in sand (while in sand). | ||
$12DF75 | 27 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$12E2E3 | 1 byte | Sprite Number | [Super Mario Bros. 2] Which sprite should be touched to obtain star power. (Star.) | ||
$12E2E7 | 1 byte | Timer | [Super Mario Bros. 2] How long until the star timer runs out. | ||
$12E2F1 | 1 byte | Sprites | [Super Mario Bros. 2] In which sprite state the star goes after being collected. (00, non-existant.) | ||
$12E399 | 1 byte | Sprite Number | [Super Mario Bros. 2] Which sprite should spawn a carpet when picked up. (Pidgit.) | ||
$12E657 | 9 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$12E665 | 26 bytes | Pointers | [Super Mario Bros. 2] 16-bit pointer to the code that uploads objects 30-FF. | ||
$1381F2 | 14 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$138200 | 14 bytes | Pointers | [Super Mario Bros. 2] 16-bit pointer to graphics for tiles 140-17F. Indexed by world number*2. | ||
$13820E | 7 bytes | Pointers | [Super Mario Bros. 2] Bank byte of pointer to graphics for tiles 140-17F. Indexed by world number. | ||
$138215 | 14 bytes | Pointers | [Super Mario Bros. 2] 16-bit pointer for tiles 180-1BF. Indexed by world number*2. | ||
$138223 | 7 bytes | Pointers | [Super Mario Bros. 2] Bank byte of pointer for tiles 180-1BF. Indexed by world number. | ||
$13822A | 14 bytes | Pointers | [Super Mario Bros. 2] 16-bit pointer to boss graphics. Indexed by world number*2. | ||
$138238 | 14 bytes | Pointers | [Super Mario Bros. 2] 16-bit pointer to tiles 00-7F of the FG/BG slots (not the animated ones). Indexed by world number*2. | ||
$138246 | 7 bytes | Pointers | [Super Mario Bros. 2] Bank byte of pointer to tiles 00-7F of the FG/BG slots (not the animated ones). Indexed by world number. | ||
$13824D | 14 bytes | Pointers | [Super Mario Bros. 2] 16-bit pointer to tiles C0-FF of the FG/BG slots. Indexed by world number*2. | ||
$13825B | 7 bytes | Pointers | [Super Mario Bros. 2] Bank byte of pointer to tiles C0-FF of the FG/BG slots. Indexed by world number. | ||
$13832A | 200 bytes | Pointers | [Super Mario Bros. 2] High byte of pointer to tiles 140-17F of the FG/BG slots. Indexed by room number. | ||
$1383F2 | 200 bytes | Pointers | [Super Mario Bros. 2] High byte of pointer to tiles 180-1BF of the FG/BG slots. Indexed by room number. | ||
$1384BA | 200 bytes | Pointers | [Super Mario Bros. 2] High byte of pointer to tiles 1C0-1FF of the FG/BG slots. Indexed by room number. | ||
$138582 | 200 bytes | Pointers | [Super Mario Bros. 2] Bank byte of pointer to tiles 140-17F of the FG/BG slots. Indexed by room number. | ||
$13864A | 200 bytes | Pointers | [Super Mario Bros. 2] Bank byte of pointer to tiles 180-1BF of the FG/BG slots. Indexed by room number. | ||
$138712 | 200 bytes | Pointers | [Super Mario Bros. 2] Bank byte of pointer to tiles 1C0-1FF of the FG/BG slots. Indexed by room number. | ||
$1387DA | 351 bytes | Routine | [Super Mario Bros. 2] Subroutine that loads tiles C0-FF of the FG/BG slots. | ||
$13893D | 60 bytes | Routine | [Super Mario Bros. 2] Subroutine that loads tiles 200-27F of the FG/BG slots. | ||
$1389C7 | 1 byte | Pointers | [Super Mario Bros. 2] Bank byte of pointer to boss graphics. | ||
$1394B3 | 77 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$139FE7 | 25 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$13DD67 | 153 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$13DEE8 | 14 bytes | Palette | [Super Mario Bros. 2] BG colour of the 'World x-x' screen, per world. SNES RGB values. | ||
$13E2EC | 1 byte | Music | [Super Mario Bros. 2] Which music to play when the player has star power. | ||
$13E736 | 458 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$13F13F | 193 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$13F698 | 104 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$13FA6B | 149 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$13FEA1 | 863 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$14C200 | 512 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$14CF45 | 11 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$14E045 | 27 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$14E8AC | 4 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$14EF42 | 30 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$14F67E | 130 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$14F84A | 28 bytes | Routine | [Super Mario Bros. 2] Clears the entire Layer 3 tilemap. | ||
$14FA27 | 217 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$14FBF0 | 169 bytes | Routine | [Super Mario Bros. 2] Clears all OAM subroutine. | ||
$14FD7E | 98 bytes | HDMA | [Super Mario Bros. 2] Scanline counts and RAM pointer table for the red colours. | ||
$14FDE0 | 98 bytes | HDMA | [Super Mario Bros. 2] Scanline counts and RAM pointer table for the green colours. | ||
$14FE42 | 98 bytes | HDMA | [Super Mario Bros. 2] Scanline counts and RAM pointer table for the blue colours. | ||
$14FEA4 | 64 bytes | HDMA | [Super Mario Bros. 2] Red colours for the four HDMA gradients. | ||
$14FEE4 | 64 bytes | HDMA | [Super Mario Bros. 2] Green colours for the four HDMA gradients. | ||
$14FF24 | 64 bytes | HDMA | [Super Mario Bros. 2] Blue colours for the four HDMA gradients. | ||
$14FF64 | 668 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$158682 | 126 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$158A20 | 224 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$158B00 | 40 bytes | Pointers | [Super Mario Bros. 2] Index to another pointer. Holds the value that determines which cloud background (Layer 3) will be used. | ||
$158B28 | 20 bytes | Pointers | [Super Mario Bros. 2] 16-bit pointer to the various cloud images. | ||
$158B3C | 2095 bytes | VRAM Tilemap | [Super Mario Bros. 2] Layer 3 cloud images. | ||
$15936B | 200 bytes | Map16 | [Super Mario Bros. 2] Which set of Map16 tiles to use for Layer 3. (00 or 01) | ||
$159437 | 208 bytes | Map16 | [Super Mario Bros. 2] Tilemap of Layer 3 Map16 tiles 00-19, cloud tiles. | ||
$159507 | 64 bytes | Map16 | [Super Mario Bros. 2] Tilemap of Layer 3 Map16 tiles 1A-22, light beam tiles. | ||
$159571 | 10 bytes | Pointers | [Super Mario Bros. 2] 16-bit pointer to five different sets of Layer 3 stars. | ||
$15957B | 121 bytes | Pointers | [Super Mario Bros. 2] Five different sets of Layer 3 stars, each with a varying position and number of Layer 3 stars that are uploaded on screen. | ||
$1595F4 | 12 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$15A5F3 | 13 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$15A6C8 | 6 bytes | Pointers | [Super Mario Bros. 2] Pointer to the Layer 1 Map16 tile data of page 1, indexed by every $40 tiles (page 1 is not complete). | ||
$15CDD0 | 1072 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$15D542 | 3262 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$15E20F | 577 bytes | VRAM Tilemap | [Super Mario Bros. 2] Border of the 'Super Mario Bros. 2' screen. | ||
$15E450 | 463 bytes | VRAM Tilemap | [Super Mario Bros. 2] 'Super Mario Bros. 2' and '©1988-1992 Nintendo'. | ||
$15E861 | 640 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 2] Story text. | ||
$15EA3F | 17 bytes | Pointers | [Super Mario Bros. 2] High byte of 16-bit pointer that points to the 'Story' text. Indexed by line number. | ||
$15EA50 | 17 bytes | Pointers | [Super Mario Bros. 2] Low byte of 16-bit pointer that points to the 'Story' text. Indexed by line number. | ||
$15EE57 | 681 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$15F100 | 21 bytes | Pointers | [Super Mario Bros. 2] 24-bit pointer to the miniature levels' tilemap data. (At the world x-x screen.) | ||
$15F115 | 400 bytes | VRAM Tilemap | [Super Mario Bros. 2] Miniature level for worlds 1, 3 and 5. | ||
$15F2A5 | 400 bytes | VRAM Tilemap | [Super Mario Bros. 2] Miniature level for worlds 2 and 6. | ||
$15F435 | 400 bytes | VRAM Tilemap | [Super Mario Bros. 2] Miniature level for world 4. | ||
$15F5C5 | 400 bytes | VRAM Tilemap | [Super Mario Bros. 2] Miniature level for world 7. | ||
$168000 | 157696 bytes | Graphics | [Super Mario Bros. 2] Super Mario Bros. 2 graphics. | ||
$16814E | 178 bytes | Empty | [Super Mario Bros. 2] Filled with $FF. | ||
$1B8000 | 114688 bytes | Graphics | [Super Mario Bros. 2] Super Mario Bros. 2 graphics. | ||
$1EC000 | 16384 bytes | Graphics | [Super Mario Bros. 1] Super Mario Bros. 1 Toad, sack and Princess graphics. | ||
$2080A8 | 1 byte | Music | [Super Mario Bros. 3] Music of the title screen. |
||
$208270 | 1 byte | World | [Super Mario Bros. 3] In which world the overworld spotlight should be enabled. World 8 by default. | ||
$208276 | 1 byte | Overworld | [Super Mario Bros. 3] In which submap the overworld spotlight should be enabled. Submap #3 by default. | ||
$2082E9 | 1 byte | World | [Super Mario Bros. 3] World number where to display the "WELCOME TO WARP ZONE" text. | ||
$20832D | 13 bytes | World | [Super Mario Bros. 3] Code which checks if you're in World 5's cloud submap so it can play the cloud overworld music. | ||
$2085C0 | 1 byte | Sound Effect | [Super Mario Bros. 3] Enter level sound effect on the overworld. It is also the *second* sound effect which plays after you get pulled into a level by the hand in world 8's 2nd submap. |
||
$2085C5 | 1 byte | Music | [Super Mario Bros. 3] Music to play when entering level. By default it's fadeout ($80). | ||
$20863A | 38 bytes | Overworld | [Super Mario Bros. 3] Code which checks on which tiles "Player Start" should be shown at the start of the level. It won't show on N-Spades, Mushroom House tiles and Pipe tiles. However, it does show on pipe tiles in world 5's cloud map. |
||
$208C22 | 1 byte | Music | [Super Mario Bros. 3] Spade/N-Spade music (0D) | ||
$208D80 | 1 byte | Timer | [Super Mario Bros. 3] P-Switch duration. | ||
$2091E1 | 1 byte | Music | [Super Mario Bros. 3] Game Over music (0A) | ||
$20CACB | 90 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 3] Princess Peach ending text | ||
$20FB1F | 27 bytes | Routine | [Super Mario Bros. 3] 16-bit pointer jump routine. SMB3's equivalent to $0086DF in SMW. Input: 8-bit pointer number in A. | ||
$219813 | 60 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 3] Spade Line up Text | ||
$21984F | 72 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 3] N-Spade "Flip over the cards" text | ||
$219A1C | 18 bytes | Objects | [Super Mario Bros. 3] N-Spade Cards. 00 = Mushroom, 01 = Fire Flower, 02 = Star, 03 = 1-up, 04 = 10 coins, 05 = 20 coins. Anything beyond that is glitched. Layout goes from top-left to bottom-right. These cards are eventually shuffled by the routine at $239FE6. |
||
$21BE1C | 70 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 3] Mushroom House "Pick a Box" Text | ||
$21BE62 | 70 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 3] Mushroom House Warp Whistle "One toot" Text. Used in 1-3. | ||
$21BEA8 | 70 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 3] Blue Mushroom House "Shop of strange and wonderful things" text | ||
$21CA0B | 9 bytes | Music | [Super Mario Bros. 3] Overworld music, from world 1 to world 9. | ||
$21CE46 | 12 bytes | Level Data | [Super Mario Bros. 3] List of music to be used with the levels. In this order: Grassland, Cave, Underwater, Castle, Boss Fight, Doomship, Hammer Bros, Mushroom House (overworld bank), Athletic, Doomship "Help" Castle, Coin Heaven, Overworld Warp Pipe (overworld bank) | ||
$21F185 | 132 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 3] King Restored Text | ||
$21F209 | 132 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 3] King Restored Text (Frog suit version) | ||
$21F28D | 132 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 3] King Restored Text (Tanooki suit version) | ||
$21F311 | 132 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 3] King Restored Text (Hammer suit version) | ||
$21F493 | 75 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 3] Princess letter 1 text | ||
$21F4DE | 84 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 3] Princess letter 2 text | ||
$21F532 | 54 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 3] Princess letter 3 text | ||
$21F568 | 81 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 3] Princess letter 4 text | ||
$21F5B9 | 92 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 3] Princess letter 5 text | ||
$21F615 | 99 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 3] Princess letter 6 text | ||
$21F678 | 99 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 3] Bowser letter text (2nd part of the message without the first 2 lines) | ||
$21F6E7 | 158 bytes | VRAM Tilemap | [Super Mario Bros. 3] VRAM tilemap of Layer 2 Bowser in World 7 beaten's letter. A group of $FF,$FF means "get to the next line" of the tilemap. | ||
$21F785 | 12 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 3] Greetings letter text used in the Princess letters | ||
$21F791 | 84 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 3] Enclosed Jewel letter text used in the Princess letters | ||
$21F7E5 | 12 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 3] Bowser Kidnapped start letter text, used in Bowser's letter in world 7 | ||
$21F7F1 | 68 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 3] Bowser finish letter text ("ha ha ha... king of the koopa"), used by Bowser's letter after world 7 is beaten | ||
$21FAD9 | 132 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 3] King Transformed Text | ||
$21FB5D | 132 bytes | VRAM Tilemap (Text) | [Super Mario Bros. 3] Hurry Hurry! Retrieve the magic wand! text | ||
$228BF2 | 8 bytes | VRAM Tilemap | [Super Mario Bros. 3] Default template for statusbar. Top row's left corner of statusbar's first portion For an explanation of the format of the table, please consult $29E8AB. |
||
$228BFA | 6 bytes | VRAM Tilemap | [Super Mario Bros. 3] Default template for statusbar. Top row of statusbar's first portion For an explanation of the format of the table, please consult $29E8AB. |
||
$228C00 | 28 bytes | VRAM Tilemap | [Super Mario Bros. 3] Default template for statusbar. Top row's right corner of statusbar's first portion, top row of 3 card columns For an explanation of the format of the table, please consult $29E8AB. |
||
$228C1C | 68 bytes | VRAM Tilemap | [Super Mario Bros. 3] Default template for statusbar. Row 2 of statusbar: "WORLD", empty P-meter, coins (initialized to 66 for some reason), 3 card columns. For an explanation of the format of the table, please consult $29E8AB. |
||
$228C60 | 68 bytes | VRAM Tilemap | [Super Mario Bros. 3] Default template for statusbar. Row 3 of statusbar: "x" (from Mx or Lx), score initialized to 0000000, time initialized to 000, 3 card columns. For an explanation of the format of the table, please consult $29E8AB. |
||
$228CA4 | 68 bytes | VRAM Tilemap | [Super Mario Bros. 3] Default template for statusbar. Bottom row's left corner of statusbar's first portion. For an explanation of the format of the table, please consult $29E8AB. |
||
$228CAC | 6 bytes | VRAM Tilemap | [Super Mario Bros. 3] Default template for statusbar. Bottom row of statusbar's first portion. For an explanation of the format of the table, please consult $29E8AB. |
||
$228CB2 | 28 bytes | VRAM Tilemap | [Super Mario Bros. 3] Default template for statusbar. Bottom row's right corner of statusbar's first portion, bottom row of 3 card columns. For an explanation of the format of the table, please consult $29E8AB. |
||
$228CCE | 6 bytes | VRAM Tilemap | [Super Mario Bros. 3] Default template for statusbar. Fills the invisible rows beyond the statusbar with blank tiles. For an explanation of the format of the table, please consult $29E8AB. |
||
$228CD4 | 6 bytes | VRAM Tilemap | [Super Mario Bros. 3] Default template for statusbar. Fills the invisible rows beyond the statusbar with blank tiles. For an explanation of the format of the table, please consult $29E8AB. |
||
$228CDA | 1 byte | VRAM Tilemap | [Super Mario Bros. 3] Default template for statusbar. $FF, which marks the end of the statusbar template table. |
||
$228F07 | 32 bytes | VRAM Tilemap (Text) | [Super mario Bros. 3] Upper half of the "COURSE CLEAR!" text, processed by the routine at $29E8AB | ||
$228F27 | 32 bytes | VRAM Tilemap (Text) | [Super mario Bros. 3] Lower half of the "COURSE CLEAR!" text, processed by the routine at $29E8AB | ||
$22CDD9 | 1 byte | Sprites | [Super Mario Bros. 3] How many times the Chain Chomp must tug on its chain before it breaks free. | ||
$23C407 | 1 byte | Sound Effect | [Super Mario Bros. 3] What sound effect to play when you run in max speed |
||
$23D53B | 1 byte | Music | [Super Mario Bros. 3] P-Switch music | ||
$27A547 | 1 byte | Music | [Super Mario Bros. 3] Death music (09) | ||
$27D365 | 1 byte | Music | [Super Mario Bros. 3] Doomship wand obtained music (0B) | ||
$288000 | 540 bytes | Pointers | [Super Mario Bros. 3] Sprite init routine pointers. These are for all the normal sprites, so there are a total of 180 or 0xB4. | ||
$28821C | 540 bytes | Pointers | [Super Mario Bros. 3] Sprite main routine pointers. These are for all the normal sprites, so there are a total of 180 or 0xB4. | ||
$288D52 | 1 byte | Music | [Super Mario Bros. 3] What music to play when you get the star |
||
$289AD2 | 1 byte | Music | [Super Mario Bros. 3] Player falling from doomship music (0F) | ||
$28CE20 | 1 byte | Music | [Super Mario Bros. 3] Course Clear music (0C) | ||
$28CE2C | 1 byte | Sound Effect | [Super Mario Bros. 3] Course Clear card sound effect (05) | ||
$28CE44 | 1 byte | Music | [Super Mario Bros. 3] Course Clear 1-up music (07) (when the three cards don't match) | ||
$28CE5D | 1 byte | Music | [Super Mario Bros. 3] Course Clear 3 in a row music (0B) | ||
$28CE62 | 1 byte | Sound Effect | [Super Mario Bros. 3] Course Clear 3 in a row sound effect (29) | ||
$28D712 | 1 byte | Music | [Super Mario Bros. 3] Boom Boom beaten music (0B) | ||
$28D919 | 1 byte | Music | [Super Mario Bros. 3] What music to play when you face Boom-Boom |
||
$29A9E6 | 1 byte | Sound Effect | [Super Mario Bros. 3] World 8 hand pulling sound effect (43) | ||
$29C383 | 1 byte | Music | [Super Mario Bros. 3] Princess letter music (18) | ||
$29DE97 | 1 byte | Music | [Super Mario Bros. 3] Warp Whistle jingle (0B) | ||
$29E8AB | 168 bytes | Routine | [Super Mario Bros. 3] Upload multiple VRAM tilemaps tables (which is one huge "Tilemaps Block") to VRAM routine (JSL). Input: $36-38 = 24-bit pointer to Tilemaps Block VRAM tilemap tables have two 2-byte headers, followed by the VRAM tilemap itself Header format: %AAAA AAAA, %AAAA AAAA, %CFSS SSSS, %SSSS SSSS A = VRAM Address/2 (BIG Endian) (so VRAM $0800 is $04,$00 in header). A value of $8000 or higher = end of table. Generally $FF as the first byte is enough. C = Bit 0 for $2115. Upload VRAM tiles per 1 tile or per 32 tile in VRAM F = Fixed DMA. When DMA is fixed, size is increased by 1, because each byte becomes a word, and you can't have a half word. This mode is used to "fill" a tilemap with a single tile. S = DMA Size - 1 (Big Endian). So transferring 4 bytes would be $00,$03 |
||
$2B8000 | 32768 bytes | Graphics | [Game select screen] 8bpp graphics of the game select screen and its components - part 1 |
||
$2C8000 | 32768 bytes | Graphics | [Game select screen] 8bpp graphics of the game select screen and its components - part 2. Final $1800 bytes are probably unused. TODO: Probably or not? |
||
$2D8000 | 65536 bytes | Graphics | [Super Mario Bros. 3] Super Mario Bros. 3 player and certain background graphics. | ||
$2F8000 | 20480 bytes | Graphics | [Super Mario Bros. 2] Super Mario Bros. 2 player graphics. | ||
$2FD000 | 12288 bytes | Graphics | [Super Mario Bros. 1] Super Mario Bros. 1 & The Lost Levels princess rescued portrait graphics. | ||
$308000 | 276480 bytes | Graphics | [Super Mario Bros. 3] Super Mario Bros. 3 graphics. | ||
$38C000 | 81920 bytes | Graphics | [Super Mario Bros. 3] Super Mario Bros. 3 graphics. | ||
$3B8000 | 3625 bytes | SPC-700 | [Other] Part 2 of the entire SMAS SPC-700 engine (ASM) |
||
$3B9DCF | 1154 bytes | SPC-700 | [Hall screen] Music data of the Hall screen music and the game select menu music. |
||
$3C8000 | 2048 bytes | VRAM Tilemap | [Hall screen] Default BG1 tilemap of the 'hall screen' (without animation and all). Data MVN'd to RAM $7F:0000 |
||
$3D8000 | 98304 bytes | Graphics | [Super Mario Bros. 3] Super Mario Bros. 3 graphics. | ||
$3DCC00 | 5120 bytes | Graphics | [Hall screen] Most of the animated graphics of hall screen. | ||
SRAM Address | Length | Type | Description | Details | |
$700000 | 1 byte | Miscellaneous | Used in piracy check. | ||
$700004 | 2 bytes | Miscellaneous | SRAM Offset of last save data accessed (added with number $700010). $0000 = Super Mario Bros. - FILE A $0009 = Super Mario Bros.: The Lost Levels - FILE A $0011 = Super Mario Bros. 2 - FILE A $001A = Super Mario Bros. 3 - FILE A $0120 = Super Mario Bros. - FILE B $0129 = Super Mario Bros.: The Lost Levels - FILE B $0131 = Super Mario Bros. 2 - FILE B $013A = Super Mario Bros. 3 - FILE B $0240 = Super Mario Bros. - FILE C $0249 = Super Mario Bros.: The Lost Levels - FILE C $0251 = Super Mario Bros. 2 - FILE C $025A = Super Mario Bros. 3 - FILE C $0360 = Super Mario Bros. - FILE D $0369 = Super Mario Bros.: The Lost Levels - FILE D $0371 = Super Mario Bros. 2 - FILE D $037A = Super Mario Bros. 3 - FILE D |
||
$700006 | 1 byte | Flag | The currently selected button configuration. 00: X/Y = dash, A/B = jump 01: X/Y/B = dash, A = jump |
||
$700007 | 1 byte | Flag | Set this to enable debug mode in all games. | ||
$700008 | 1 byte | World Progress | Which world you have last loaded, not restricted to any game. | ||
$700009 | 1 byte | Level Progress | Which level you have last loaded, not restricted to any game. | ||
$70000E | 1 byte | Miscellaneous | Which save slot you last played, not restricted to any game. | ||
Regs Address | Length | Type | Description | Details | |
$2100 | 1 byte | SNES Register (PPU) | wb++++ INIDISP - Screen Display x---bbbb x = Force blank on when set. bbbb = Screen brightness, F=max, 0="off". Note that force blank CAN be disabled mid-scanline. However, this can result in glitched graphics on that scanline, as the internal rendering buffers will not have been updated during force blank. Current theory is that BGs will be glitched for a few tiles (depending on how far in advance the PPU operates), and OBJ will be glitched for the entire scanline. Also, writing this register on the first line of V-Blank (225 or 240, depending on overscan) when force blank is currently active causes the OAM Address Reset to occur. | ||
$2101 | 1 byte | SNES Register (PPU) | wb++?- OBSEL - Object Size and Chr Address sssnnbbb sss = Object size: 000 = 8x8 and 16x16 sprites 001 = 8x8 and 32x32 sprites 010 = 8x8 and 64x64 sprites 011 = 16x16 and 32x32 sprites 100 = 16x16 and 64x64 sprites 101 = 32x32 and 64x64 sprites 110 = 16x32 and 32x64 sprites ('undocumented') 111 = 16x32 and 32x32 sprites ('undocumented') nn = Name Select bbb = Name Base Select (Addr>>14) See the section "SPRITES" below for details. | Sprite Information | |
$2102 | 2 bytes | SNES Register (PPU) | wl++?- OAMADDL - OAM Address low byte wh++?- OAMADDH - OAM Address high bit and Obj Priority p------b aaaaaaaa p = Obj Priority activation bit When this bit is set, an Obj other than Sprite 0 may be given priority. See the section "SPRITES" below for details. b aaaaaaaa = OAM address This can be thought of in two ways, depending on your conception of OAM. If you consider OAM as a 544-byte table, baaaaaaaa is the word address into that table. If you consider OAM to be a 512-byte table and a 32-byte table, b is the table selector and aaaaaaaa is the word address in the table. See the section "SPRITES" below for details. The internal OAM address is invalidated when scanlines are being rendered. This invalidation is deterministic, but we do not know how it is determined. Thus, the last value written to these registers is reloaded into the internal OAM address at the beginning of V-Blank if that occurs outside of a force-blank period. This is known as 'OAM reset'. 'OAM reset' also occurs on certain writes to $2100. Writing to either $2102 or $2103 resets the entire internal OAM Address to the values last written to this register. E.g., if you set $104 to this register, write 4 bytes, then write $1 to $2103, the internal OAM address will point to word 4, not word 6. | Sprite Information | |
$2104 | 1 byte | SNES Register (PPU) | wb++-- OAMDATA - Data for OAM write dddddddd Note that OAM writes are done in an odd manner, in particular the low table of OAM is not affected until the high byte of a word is written (however, the high table is affected immediately). Thus, if you set the address, then alternate writes and reads, OAM will never be affected until you reach the high table! Similarly, if you set the address to 0, then write 1, 2, read, then write 3, OAM will end up as "01 02 01 03", rather than "01 02 xx 03" as you might expect. Technically, this register CAN be written during H-blank (and probably mid-scanline as well). However, due to OAM address invalidation, the actual OAM byte written will probably not be what you expect. Note that writing during force-blank will only work as expected if that force-blank was begun during V-Blank, or (probably) if $2102/3 have been reset during that force-blank period. See the section "SPRITES" below for details. | Sprite Information | |
$2105 | 1 byte | SNES Register (PPU) | wb+++- BGMODE - BG Mode and Character Size DCBAemmm A/B/C/D = BG character size for BG1/BG2/BG3/BG4 If the bit is set, then the BG is made of 16x16 tiles. Otherwise, 8x8 tiles are used. However, note that Modes 5 and 6 always use 16-pixel wide tiles, and Mode 7 always uses 8x8 tiles. See the section "BACKGROUNDS" below for details. mmm = BG Mode e = Mode 1 BG3 priority bit Mode BG depth OPT Priorities 1 2 3 4 Front -> Back -=-------=-=-=-=----=---============--- 0 2 2 2 2 n 3AB2ab1CD0cd 1 4 4 2 n 3AB2ab1C 0c * if e set: C3AB2ab1 0c 2 4 4 y 3A 2B 1a 0b 3 8 4 n 3A 2B 1a 0b 4 8 2 y 3A 2B 1a 0b 5 4 2 n 3A 2B 1a 0b 6 4 y 3A 2 1a 0 7 8 n 3 2 1a 0 7+EXTBG 8 7 n 3 2B 1a 0b "OPT" means "Offset-per-tile mode". For the priorities, numbers mean sprites with that priority. Letters correspond to BGs (A=1, B=2, etc), with upper/lower case indicating tile priority 1/0. See the section "BACKGROUNDS" below for details. Mode 7's EXTBG mode allows you to enable BG2, which uses the same tilemap and character data as BG1 but interprets bit 7 of the pixel data as a priority bit. BG2 also has some oddness to do with some of the per-BG registers below. See the Mode 7 section under BACKGROUNDS for details. | ||
$2106 | 1 byte | SNES Register (PPU) | wb+++- MOSAIC - Screen Pixelation xxxxDCBA A/B/C/D = Affect BG1/BG2/BG3/BG4 xxxx = pixel size, 0=1x1, F=16x16 The mosaic filter goes over the BG and covers each x-by-x square with the upper-left pixel of that square, with the top of the first row of squares on the 'starting scanline'. If this register is set during the frame, the 'starting scanline' is the current scanline, otherwise it is the first visible scanline of the frame. I.e. if even scanlines are completely red and odd scanlines are completely blue, setting the xxxx=1 mid-frame will make the rest of the screen either completely red or completely blue depending on whether you set xxxx on an even or an odd scanline. XXX: It seems that writing the same value to this register does not reset the 'starting scanline', but which changes do reset it? Note that mosaic is applied after scrolling, but before any clip windows, color windows, or math. So the XxX block can be partially clipped, and it can be mathed as normal with a non-mosaiced BG. But scrolling can't make it partially one color and partially another. Modes 5-6 should 'double' the expansion factor to expand half-pixels. This actually makes xxxx=0 have a visible effect, since the even half-pixels (usually on the subscreen) hide the odd half-pixels. The same thing happens vertically with interlace mode. Mode 7, of course, is weird. BG1 mosaics about like normal, as long as you remember that the Mode 7 transformations have no effect on the XxX blocks. BG2 uses bit A to control 'vertical mosaic' and bit B to control 'horizontal mosaic', so you could be expanding over 1xX, Xx1, or XxX blocks. This can get really interesting as BG1 still uses bit A as normal, so you could have the BG1 pixels expanded XxX with high-priority BG2 pixels expanded 1xX on top of them. See the section "BACKGROUNDS" below for details. | Background Information | |
$2107 | 4 bytes | SNES Register (PPU) | wb++?- BG1SC - BG1 Tilemap Address and Size wb++?- BG2SC - BG2 Tilemap Address and Size wb++?- BG3SC - BG3 Tilemap Address and Size wb++?- BG4SC - BG4 Tilemap Address and Size aaaaaayx aaaaaa = Tilemap address in VRAM (Addr>>10) x = Tilemap horizontal mirroring y = Tilemap veritcal mirroring All tilemaps are 32x32 tiles. If x and y are both unset, there is one tilemap at Addr. If x is set, a second tilemap follows the first that should be considered "to the right of" the first. If y is set, a second tilemap follows the first that should be considered "below" the first. If both are set, then a second follows "to the right", then a third "below", and a fourth "below and to the right". See the section "BACKGROUNDS" below for more details. | Background Information | |
$210B | 2 bytes | SNES Register (PPU) | wb++?- BG12NBA - BG1 and 2 Chr Address wb++?- BG34NBA - BG3 and 4 Chr Address bbbbaaaa aaaa = Base address for BG1/3 (Addr>>13) bbbb = Base address for BG2/4 (Addr>>13) See the section "BACKGROUNDS" below for details. | Background Information | |
$210D | 4 bytes | SNES Register (PPU) | ww+++- BG1HOFS - BG1 Horizontal Scroll ww+++- M7HOFS - Mode 7 BG Horizontal Scroll ww+++- BG1VOFS - BG1 Vertical Scroll ww+++- M7VOFS - Mode 7 BG Vertical Scroll ------xx xxxxxxxx ---mmmmm mmmmmmmm x = The BG offset, 10 bits. m = The Mode 7 BG offset, 13 bits two's-complement signed. These are actually two registers in one (or would that be "4 registers in 2"?). Anyway, writing $210d will write both BG1HOFS which works exactly like the rest of the BGnxOFS registers below ($210f-$2114), and M7HOFS which works with the M7* registers ($211b-$2120) instead. Modes 0-6 use BG1xOFS and ignore M7xOFS, while Mode 7 uses M7xOFS and ignores BG1HOFS. See the appropriate sections below for details, and note the different formulas for BG1HOFS versus M7HOFS. |
||
$210F | 6 bytes | SNES Register (PPU) | ww+++- BG2HOFS - BG2 Horizontal Scroll ww+++- BG2VOFS - BG2 Vertical Scroll ww+++- BG3HOFS - BG3 Horizontal Scroll ww+++- BG3VOFS - BG3 Vertical Scroll ww+++- BG4HOFS - BG4 Horizontal Scroll ww+++- BG4VOFS - BG4 Vertical Scroll ------xx xxxxxxxx Note that these are "write twice" registers, first the low byte is written then the high. Current theory is that writes to the register work like this: BGnHOFS = (Current<<8) | (Prev&~7) | ((Reg>>8)&7); Prev = Current; or BGnVOFS = (Current<<8) | Prev; Prev = Current; Note that there is only one Prev shared by all the BGnxOFS registers. This is NOT shared with the M7* registers (not even M7xOFS and BG1xOFS). x = The BG offset, at most 10 bits (some modes effectively use as few as 8). Note that all BGs wrap if you try to go past their edges. Thus, the maximum offset value in BG Modes 0-6 is 1023, since you have at most 64 tiles (if x/y of BGnSC is set) of 16 pixels each (if the appropriate bit of BGMODE is set). Horizontal scrolling scrolls in units of full pixels no matter if we're rendering a 256-pixel wide screen or a 512-half-pixel wide screen. However, vertical scrolling will move in half-line increments if interlace mode is active. See the section "BACKGROUNDS" below for details. | Background Information | |
$2115 | 1 byte | SNES Register (PPU) | wb++?- VMAIN - Video Port Control i---mmii i = Address increment mode: 0 => increment after writing $2118/reading $2139 1 => increment after writing $2119/reading $213a Note that a word write stores low first, then high. Thus, if you're storing a word value to $2118/9, you'll probably want to set 1 here. ii = Address increment amount 00 = Normal increment by 1 01 = Increment by 32 10 = Increment by 128 11 = Increment by 128 mm = Address remapping 00 = No remapping 01 = Remap addressing aaaaaaaaBBBccccc => aaaaaaaacccccBBB 10 = Remap addressing aaaaaaaBBBcccccc => aaaaaaaccccccBBB 11 = Remap addressing aaaaaaBBBccccccc => aaaaaacccccccBBB The "remap" modes basically implement address translation. If $2116/7 are set to #$0003, then word address #$0018 will be written instead, and $2116/7 will be incremented to $0004. | ||
$2116 | 2 bytes | SNES Register (PPU) | wl++?- VMADDL - VRAM Address low byte wh++?- VMADDH - VRAM Address high byte aaaaaaaa aaaaaaaa This sets the address for $2118/9 and $2139/a. Note that this is a word address, not a byte address! See the sections "BACKGROUNDS" and "SPRITES" below for details. | Background Information Sprite Information | |
$2118 | 2 bytes | SNES Register (PPU) | wl++-- VMDATAL - VRAM Data Write low byte wh++-- VMDATAH - VRAM Data Write high byte xxxxxxxx xxxxxxxx This writes data to VRAM. The writes take effect immediately(?), even if no increment is performed. The address is incremented when one of the two bytes is written; which one depends on the setting of bit 7 of register $2115. Keep in mind the address translation bits of $2115 as well. The interaction between these registers and $2139/a is unknown. See the sections "BACKGROUNDS" and "SPRITES" below for details. | Background Information Sprite Information | |
$211A | 1 byte | SNES Register (PPU) | wb++?- M7SEL - Mode 7 Settings rc----yx r = Playing field size: When clear, the playing field is 1024x1024 pixels (so the tilemap completely fills it). When set, the playing field is much larger, and the 'empty space' fill is controlled by bit 6. c = Empty space fill, when bit 7 is set: 0 = Transparent. 1 = Fill with character 0. Note that the fill is matrix transformed like all other Mode 7 tiles. x/y = Horizontal/Veritcal mirroring. If the bit is set, flip the 256x256 pixel 'screen' in that direction. See the section "BACKGROUNDS" below for details. | Background Information | |
$211B | 4 bytes | SNES Register (PPU) | ww+++- M7A - Mode 7 Matrix A (also used with $2134/6) ww+++- M7B - Mode 7 Matrix B (also used with $2134/6) ww+++- M7C - Mode 7 Matrix C ww+++- M7D - Mode 7 Matrix D aaaaaaaa aaaaaaaa Note that these are "write twice" registers, first the low byte is written then the high. Current theory is that writes to the register work like this: Reg = (Current<<8) | Prev; Prev = Current; Note that there is only one Prev shared by all these registers. This Prev is NOT shared with the BGnxOFS registers, but it IS shared with the M7xOFS registers. These set the matrix parameters for Mode 7. The values are an 8-bit fixed point, i.e. the value should be divided by 256.0 when used in calculations. See below for more explanation. The product A*(B>>8) may be read from registers $2134/6. There is supposedly no important delay. It may not be operative during Mode 7 rendering. See the section "BACKGROUNDS" below for details. | Background Information | |
$211F | 2 bytes | SNES Register (PPU) | ww+++- M7X - Mode 7 Center X ww+++- M7Y - Mode 7 Center Y ---xxxxx xxxxxxxx Note that these are "write twice" registers, like the other M7* registers. See above for the write semantics. The value is 13 bit two's-complement signed. The matrix transformation formula is: [ X ] [ A B ] [ SX + M7HOFS - CX ] [ CX ] [ ] = [ ] * [ ] + [ ] [ Y ] [ C D ] [ SY + M7VOFS - CY ] [ CY ] Note: SX/SY are screen coordinates. X/Y are coordinates in the playing field from which the pixel is taken. If $211a bit 7 is clear, the result is then restricted to 0<=X<=1023 and 0<=Y<=1023. If $211a bits 6 and 7 are both set and X or Y is less than 0 or greater than 1023, use the low 3 bits of each to choose the pixel from character 0. The bit-accurate formula seems to be something along the lines of: #define CLIP(a) (((a)&0x2000)?((a)|~0x3ff):((a)&0x3ff)) X[0,y] = ((A*CLIP(HOFS-CX))&~63) + ((B*y)&~63) + ((B*CLIP(VOFS-CY))&~63) + (CX<<8) Y[0,y] = ((C*CLIP(HOFS-CX))&~63) + ((D*y)&~63) + ((D*CLIP(VOFS-CY))&~63) + (CY<<8) X[x,y] = X[x-1,y] + A Y[x,y] = Y[x-1,y] + C (In all cases, X[] and Y[] are fixed point with 8 bits of fraction) See the section "BACKGROUNDS" below for details. | Background Information | |
$2121 | 1 byte | SNES Register (PPU) | wb+++- CGADD - CGRAM Address cccccccc This sets the word address (i.e. color) which will be affected by $2122 and $213b. | ||
$2122 | 1 byte | SNES Register (PPU) | ww+++- CGDATA - CGRAM Data write -bbbbbgg gggrrrrr This writes to CGRAM, effectively setting the palette colors. Accesses to CGRAM are handled just like accesses to the low table of OAM, see $2104 for details. Note that the color values are stored in BGR order. | ||
$2123 | 3 bytes | SNES Register (PPU) | wb+++- W12SEL - Window Mask Settings for BG1 and BG2 wb+++- W34SEL - Window Mask Settings for BG3 and BG4 wb+++- WOBJSEL - Window Mask Settings for OBJ and Color Window ABCDabcd c = Enable window 1 for BG1/BG3/OBJ a = Enable window 2 for BG1/BG3/OBJ C/A = Enable window 1/2 for BG2/BG4/Color When the bit is set, the corresponding window will affect the corresponding background (subject to the settings of $212e/f). d = Window 1 Inversion for BG1/BG3/OBJ b = Window 2 Inversion for BG1/BG3/OBJ D/B = Window 1/2 Inversion for BG2/BG4/Color When the bit is set, "W" should be replaced by "~W" (not-W) in the window combination formulae below. See the section "WINDOWS" below for more details. | Windowing Information | |
$2126 | 4 bytes | SNES Register (PPU) | wb+++- WH0 - Window 1 Left Position wb+++- WH1 - Window 1 Right Position wb+++- WH2 - Window 2 Left Position wb+++- WH3 - Window 2 Right Position xxxxxxxx These set the offset of the appropriate edge of the appropriate window. Note that if the left edge is greater than the right edge, the window is considered to have no range at all (and thus "W" always is false). See the section "WINDOWS" below for more details. | Windowing Information | |
$212A | 2 bytes | SNES Register (PPU) | wb+++- WBGLOG - Window mask logic for BGs 44332211 wb+++- WOBJLOG - Window mask logic for OBJs and Color Window ----ccoo 44/33/22/11/oo/cc = Mask logic for BG1/BG2/BG3/BG4/OBJ/Color This specified the window combination method, using standard boolean operators: 00 = OR 01 = AND 10 = XOR 11 = XNOR Consider two variables, W1 and W2, which are true for pixels between the appropriate left and right bounds as set in $2126-$2129 and false otherwise. Then, you have the following possibilities: (replace "W#" with "~W#", depending on the Inversion settings of $2123-$2125) Neither window enabled => nothing masked. One window enabled => Either W1 or W2, as appropriate. Both windows enabled => W1 op W2, where "op" is as above. Where the function is true, the BG will be masked. See the section "WINDOWS" below for more details. | Windowing Information | |
$212C | 2 bytes | SNES Register (PPU) | wb+++- TM - Main Screen Designation wb+++- TS - Subscreen Designation ---o4321 1/2/3/4/o = Enable BG1/BG2/BG3/BG4/OBJ for display on the main (or sub) screen. See the section "BACKGROUNDS" below for details. | Background Information | |
$212E | 2 bytes | SNES Register (PPU) | wb+++- TMW - Window Mask Designation for the Main Screen wb+++- TSW - Window Mask Designation for the Subscreen ---o4321 1/2/3/4/o = Enable window masking for BG1/BG2/BG3/BG4/OBJ on the main (or sub) screen. See the section "BACKGROUNDS" below for details. | Background Information | |
$2130 | 1 byte | SNES Register (PPU) | wb+++- CGWSEL - Color Addition Select ccmm--sd cc = Clip colors to black before math 00 => Never 01 => Outside Color Window only 10 => Inside Color Window only 11 => Always mm = Prevent color math 00 => Never 01 => Outside Color Window only 10 => Inside Color Window only 11 => Always s = Add subscreen (instead of fixed color) d = Direct color mode for 256-color BGs See the sections "BACKGROUNDS", "WINDOWS", and "RENDERING THE SCREEN" below for details. | Background Information Windowing Information Rendering the Screen | |
$2131 | 1 byte | SNES Register (PPU) | wb+++- CGADSUB - Color math designation shbo4321 s = Add/subtract select 0 => Add the colors 1 => Subtract the colors h = Half color math. When set, the result of the color math is divided by 2 (except when $2130 bit 1 is set and the fixed color is used, or when color is cliped). 4/3/2/1/o/b = Enable color math on BG1/BG2/BG3/BG4/OBJ/Backdrop See the sections "BACKGROUNDS", "WINDOWS", and "RENDERING THE SCREEN" below for details. | Background Information Windowing Information Rendering the Screen | |
$2132 | 1 byte | SNES Register (PPU) | wb+++- COLDATA - Fixed Color Data bgrccccc b/g/r = Which color plane(s) to set the intensity for. ccccc = Color intensity. So basically, to set an orange you'd do something along the lines of: LDA #$3f STA $2132 LDA #$4f STA $2132 LDA #$80 STA $2132 See the sections "BACKGROUNDS" and "WINDOWS" below for details. | Background Information Windowing Information | |
$2133 | 1 byte | SNES Register (PPU) | wb+++- SETINI - Screen Mode/Video Select se--poIi s = "External Sync". Used for superimposing "sfx" graphics, whatever that means. Usually 0. Not much is known about this bit. Interestingly, the SPPU chip has a pin named "EXTSYNC" (or not-EXTSYNC, since it has a bar over it) which is tied to Vcc. e = Mode 7 EXTBG ("Extra BG"). When this bit is set, you may enable BG2 on Mode 7. BG2 uses the same tile and character data as BG1, but interprets the high bit of the color data as a priority for the pixel. Various sources report additional effects for this bit, possibly related to bit 7. For example, "Enable the Data Supplied From the External Lsi.", whatever that means. Of course, maybe that's a typo and it's supposed to apply to bit 7 instead. p = Enable pseudo-hires mode. This creates a 512-pixel horizontal resolution by taking pixels from the subscreen for the even-numbered pixels (zero based) and from the main screen for the odd-numbered pixels. Color math behaves just as with Mode 5/6 hires. The interlace bit still has no effect. Mosaic operates as normal (not like Mode 5/6). The 'subscreen' pixel is clipped (by windows) when the main-screen pixel to the LEFT is clipped, not when the one to the RIGHT is clipped as you'd expect. What happens with pixel column 0 is unknown. Enabling this bit in Modes 5 or 6 has no effect. o = Overscan mode. When set, 239 lines will be displayed instead of the normal 224. This also means V-Blank will occur that much later, and be shorter. All that happens is that extra lines get added to the display, and it seems the TV will like to move the display up 8 pixels. See below for more details. I = OBJ Interlace. When set regardless of BG mode, the OBJ will be interlaced (see bit 0 below), and thus will appear half-height. Note that this only controls whether obj are drawn as normal or not; the interlace signal is only output to the TV based on bit 0 below. i = Screen interlace. When set in BG mode 5 (and probably 6), the effective screen height will be 448 (or 478) pixles, rather than 224 (or 239). When set in any other mode, the screen will just get a bit jumpy. However, toggling the tilemap each field would simulate the increased screen height (much like pseudo-hires simulares hires). In hardware, setting this bit makes the SNES output a normal interlace signal rather than always forcing one frame. See the sections "BACKGROUNDS" and "SPRITES" below for details. Overscan: The bit only matters at the very end of the frame, if you change the setting on line 0xE0 before the normal NMI trigger point then it's the same as if you had it on all frame. Note that this affects both the NMI trigger point and when HDMA stops for the frame. If you turn the bit off at the very beginning of scanline X (for 0xE1<=X<=0xF0), NMI will occur on line X and the last HDMA transfer will occur on line X-1. However, on my TV at least, the display will remain in the normal no-overscan position for lines E1-EC, it will move up only one pixel for line ED, and it will lose vertical sync for lines EF-F4! Turning the bit on, only line E1 gives any effect: NMI will occur on line E2, although the last HDMA will still occur on line E0. Anything else acts like you left the bit off the whole time. Note, however, that if you wait too long after the beginning of the scanline then you will get no effect. Even if there is no visible effect, the overscan setting still affects VRAM writes. In particular, executing "LDA #'-' / STA $2118 / LDA r2133 / STA $2133 / LDA #'+' / STA $2118" during the E1-F0 period will write only + or only - to VRAM, depending on whether the overscan bit was set to 0 or 1. | Background Information Sprite Information | |
$2134 | 3 bytes | SNES Register (PPU) | r l+++? MPYL - Multiplication Result low byte r m+++? MPYM - Multiplication Result middle byte r h+++? MPYH - Multiplication Result high byte xxxxxxxx xxxxxxxx xxxxxxxx This is the 2's compliment product of the 16-bit value written to $211b and the 8-bit value most recently written to $211c. There is supposedly no important delay. It may not be operative during Mode 7 rendering. | ||
$2137 | 1 byte | SNES Register (PPU) | b++++ SLHV - Software Latch for H/V Counter -------- When read, the H/V counter (as read from $213c and $213d) will be latched to the current X and Y position if bit 7 of $4201 is set. The data actually read is open bus. | ||
$2138 | 1 byte | SNES Register (PPU) | r w++?- OAMDATAREAD* - Data for OAM read xxxxxxxx OAM reads are straightforward: the current byte as set in $2102/3 and incremented by reads from this register and writes to $2104 will be returned. Note that writes to the lower table are not affected so logically. See register $2104 and the section "SPRITES" below for details. Also, note that OAM address invalidation probably affects the address read by this register as well. | ||
$2139 | 2 bytes | SNES Register (PPU) | r l++?- VMDATALREAD* - VRAM Data Read low byte r h++?- VMDATAHREAD* - VRAM Data Read high byte xxxxxxxx xxxxxxxx Simply, this reads data from VRAM. The address is incremented when either $2139 or $213a is read, depending on the setting of bit 7 of $2115. Actually, the reading is more complex. When either of these registers is read, the appropriate byte from a word-sized buffer is returned. A word from VRAM is loaded into this buffer just *before* the VRAM address is incremented. The actual data read and the amount of the increment depend on the low 4 bits of $2115. The effect of this is that a 'dummy read' is required after setting $2116-7 before you start getting the actual data. The interaction between these registers and $2118/9 is unknown. See the sections "BACKGROUNDS" and "SPRITES" below for details. | Background Information Sprite Information | |
$213B | 1 byte | SNES Register (PPU) | r w++?- CGDATAREAD* - CGRAM Data read -bbbbbgg gggrrrrr This reads from CGRAM. Accesses to CGRAM are handled just like accesses to the low table of OAM, see $2138 for details. Note that the color values are stored in BGR order. The '-' bit is PPU2 Open Bus. | ||
$213C | 2 bytes | SNES Register (PPU) | r w++++ OPHCT - Horizontal Scanline Location r w++++ OPVCT - Vertical Scanline Location -------x xxxxxxxx These values are latched by reading $2137 when bit 7 of $4201 is set, or by clearing-and-setting bit 7 of $4201 either by writing $4201 or by pin 6 of Controller Port 2 (the latch occurs on the 1->0 transition). Note that the value read is only 9 bits: bits 1-7 of the high byte are PPU2 Open Bus. Each register keeps seperate track of whether to return the low or high byte. The high/low selector is reset to 'low' when $213f is read (the selector is NOT reset when the counter is latched). H Counter values range from 0 to 339, with 22-277 being visible on the screen. V Counter values range from 0 to 261 in NTSC mode (262 is possible every other frame when interlace is active) and 0 to 311 in PAL mode (312 in interlace?), with 1-224 (or 1-239(?) if overscan is enabled) visible on the screen. | ||
$213E | 1 byte | SNES Register (PPU) | r b++++ STAT77 - PPU Status Flag and Version trm-vvvv t = Time Over Flag. If more than 34 sprite-tiles (e.g. a 16x16 sprite has 2 sprite-tiles) were encountered on a single line, this flag will be set. The flag is reset at the end of V-Blank. See the section "SPRITES" below for details. r = Range Over Flag. If more than 32 sprites were encountered on a single line, this flag will be set. The flag is reset at the end of V-Blank. See the section "SPRITES" below for details. Note that the above two flags are set whether or not OBJ are actually enabled at the time. m = "Master/slave mode select". Little is known about this bit. Current theory is that it indicates the status of the "MASTER" pin on the S-PPU chip, which in the normal SNES is always Gnd. We always seem to read back 0 here. vvvv = 5c77 chip version number. So far, we've only encountered version 1. The '-' bit is PPU Open Bus. | Sprite Information | |
$213F | 1 byte | SNES Register (PPU) | r b++++ STAT78 - PPU Status Flag and Version fl-pvvvv f = Interlace Field. This will toggle every V-Blank. l = External latch flag. When the PPU counters are latched, this flag gets set. The flag is reset on read, but only when $4201 bit 7 is set. p = NTSC/Pal Mode. If this is a PAL SNES, this bit will be set, otherwise it will be clear. vvvv = 5C78 chip version number. So far, we've encountered at least 2 and 3. Possibly 1 as well. The '-' bit is PPU2 Open Bus. Note: as a side effect of reading this register, the high/low byte selector for $213c/d is reset to 'low'. | ||
$2140 | 4 bytes | SNES Register (APU) | rwb++++ APUIO0 - APU I/O register 0 rwb++++ APUIO1 - APU I/O register 1 rwb++++ APUIO2 - APU I/O register 2 rwb++++ APUIO3 - APU I/O register 3 xxxxxxxx These registers are used in communication with the SPC700. Note that the value written here is not the value read back. Rather, the value written shows up in the SPC700's registers $f4-7, and the values written to those registers by the SPC700 are what you read here. If the SPC700 writes the register during a read, the value read will be the logical OR of the old and new values. The exact cycles during which the 'read' actually occurs is not known, although a good guess would be some portion of the final 3 master cycles of the 6-cycle memory access. Note that these registers are mirrored throughout the range $2140-$217f. | ||
$2180 | 1 byte | SNES Register (Hardware) | rwb++++ WMDATA - WRAM Data read/write xxxxxxxx This register reads to or writes from the WRAM address set in $2181-3. The address is then incremented. The effect of mixed reads and writes is unknown, but it is suspected that they are handled logically. Note that attempting a DMA from WRAM to this register will not work, WRAM will not be written. Attempting a DMA from this register to WRAM will similarly not work, the value written is (initially) the Open Bus value. In either case, the address in $2181-3 is not incremented. | ||
$2181 | 3 bytes | SNES Register (Hardware) | wl++++ WMADDL - WRAM Address low byte wm++++ WMADDM - WRAM Address middle byte wh++++ WMADDH - WRAM Address high bit -------x xxxxxxxx xxxxxxxx This is the address that will be read or written by accesses to $2180. Note that WRAM is also mapped in the SNES memory space from $7E:0000 to $7F:FFFF, and from $0000 to $1FFF in banks $00 through $3F and $80 through $BF. Verious docs indicate that these registers may be read as well as written. However, they are wrong. These registers are open bus. DMA from WRAM to these registers has no effect. Otherwise, however, DMA writes them as normal. This means you could use DMA mode 4 to $2180 and a table in ROM to write any sequence of RAM addresses. The value does not wrap at page boundaries on increment. | ||
$4016 | 2 bytes | SNES Register (Controller) | rwb++++ JOYSER0 - NES-style Joypad Access Port 1 Rd: ------ca Wr: -------l r?b++++ JOYSER1 - NES-style Joypad Access Port 2 ---111db These registers basically have a direct connection to the controller ports on the front of the SNES. l = Writing this bit controlls the Latch line of both controller ports. When 1 is set, the Latch goes high (or is it low? At any rate, whichever one makes the pads latch their state). When cleared, the Latch goes the other way. a/b = These bits return the state of the Data1 line. c/d = These bits return the state of the Data2 line. Reading $4016 drives the Clock line of Controller Port 1 low. The SNES then reads the Data1 and Data2 lines, and Clock is set back to high. $4017 does the same for Port 2. Note the 1-bits in $4017: the CPU chip has pins for these bits, but these pins are tied to Gnd and thus always 1. Data for normal joypads is returned in the order: B, Y, Select, Start, Up, Down, Left, Right, A, X, L, R, 0, 0, 0, 0, then ones until latched again. Note that Auto-Joypad Read (see register $4200) will effectively write 1 then 0 to bit 'l', then read 16 times from both $4016 and $4017. The 'a' bits will end up in $4218/9, with the first bit read (e.g. the B button) in bit 15 of the word. Similarly, the 'b' bits end up in $421a/b, the 'c' bits in $42c/d, and the 'd' bits in $421e/f. Any further bits the device may return may be read from $4016/$4017 as normal. The effect of reading these during auto-joypad read is unknown. See the section "CONTROLLERS" below for details. | Controller Information | |
$4200 | 1 byte | SNES Register (Hardware) | wb+++? NMITIMEN - Interrupt Enable Flags n-yx---a n = Enable NMI. If clear, NMI will not occur. If set, NMI will fire just after the start of V-Blank. NMI fires shortly after the V Counter reaches $E1 (or presumably $F0 if overscan is enabled, see register $2133). x/y = IRQ enable. 0/0 = No IRQ will occur 0/1 = An IRQ will occur sometime just after the V Counter reaches the value set in $4209/$420A. 1/0 = An IRQ will occur sometime just after the H Counter reaches the value set in $4207/$4208. 1/1 = An IRQ will occur sometime just after the H Counter reaches the value set in $4207/$4208 when V Counter equals the value set in $4209/$420A. a = Auto-Joypad Read Enable. When set, the registers $4218-$421F will be updated at about V Counter = $E3 (or presumably $F2). Some games try to read this register. However, they work only because open bus behavior gives them values they expect. This register is initialized to $00 on power on or reset. | ||
$4201 | 1 byte | SNES Register (Hardware) | wb++++ WRIO - Programmable I/O port (out-port) abxxxxxx This is basically just an 8-bit I/O Port. 'b' is connected to pin 6 of Controller Port 1. 'a' is connected to pin 6 of Controller Port 2, and to the PPU Latch line. Thus, writing a 0 then a 1 to bit 'a' will latch the H and V Counters much like reading $2137 (the latch happens on the transition to 0). When bit 'a' is 0, no latching can occur. Any other effects of this register are unknown. See $4213 for the I half of the I/O Port. Note that the IO Port is initialized as if this register were written with all 1-bits at power up, unchanged on reset(?). | ||
$4202 | 2 bytes | SNES Register (Hardware) | wb++++ WRMPYA - Multiplicand A wb++++ WRMPYB - Multiplicand B mmmmmmmm Write $4202, then $4203. 8 "machine cycles" (probably 48 master cycles) after $4203 is set, the product may be read from $4216/7. $4202 will not be altered by this process, thus a new value may be written to $4203 to perform another multiplication without resetting $4202. The multiplication is unsigned. $4202 holds the value $ff on power on and is unchanged on reset. | ||
$4204 | 3 bytes | SNES Register (Hardware) | wl++++ WRDIVL - Dividend C low byte wh++++ WRDIVH - Dividend C high byte dddddddd dddddddd wb++++ WRDIVB - Divisor B bbbbbbbb Write $4204/5, then $4206. 16 "machine cycles" (probably 96 master cycles) after $4206 is set, the quotient may be read from $4214/5, and the remainder from $4216/7. Presumably, $4204/5 are not altered by this process, much like $4202. The division is unsigned. Division by 0 gives a quotient of $FFFF and a remainder of C. WRDIV holds the value $ffff on power on and is unchanged on reset. | ||
$4207 | 2 bytes | SNES Register (Hardware) | wl++++ HTIMEL - H Timer low byte wh++++ HTIMEH - H Timer high byte -------h hhhhhhhh If bit 4 of $4200 is set and bit 5 is clear, an IRQ will fire every scanline when the H Counter reaches the value set here. If bits 4 and 5 are both set, the IRQ will fire only when the V Counter equals the value set in $4209/a. Note that the H Counter ranges from 0 to 339, thus greater values will result in no IRQ firing. HTIME is initialized to $1ff on power on, unchanged on reset. | ||
$4209 | 2 bytes | SNES Register (Hardware) | wl++++ VTIMEL - V Timer low byte wh++++ VTIMEH - V Timer high byte -------v vvvvvvvv If bit 5 of $4200 is set and bit 4 is clear, an IRQ will fire just after the V Counter reaches the value set here. If bits 4 and 5 are both set, the IRQ will fire instead when the V Counter equals the value set here and the H Counter reaches the value set in $4207/8. Note that the V Counter ranges from 0 to 261 in NTSC mode (262 is possible every other frame whan interlace is active) and 0 to 311 in PAL mode (312 in interlace?), thus greater values will result in no IRQ firing. VTIME is initialized to $1ff on power on, unchanged on reset. | ||
$420B | 1 byte | SNES Register (DMA) | wb++++ MDMAEN - DMA Enable 76543210 7/6/5/4/3/2/1/0 = Enable the selected DMA channels. The CPU will be paused until all DMAs complete. DMAs will be executed in order from 0 to 7 (?). See registers $43x0-$43xA for more details. If HDMA (init or transfer) occurs while a DMA is in progress, the DMA will be paused for the duration. If the HDMA happens to involve the current DMA channel, the DMA will be immediately terminated and the HDMA will progress using the then-current values of the registers. Other DMA channels will be unaffected. This register is initialized to $00 on power on or reset. See the section "DMA AND HDMA" below for more information. | DMA and HDMA Information | |
$420C | 1 byte | SNES Register (DMA) | wb++++ HDMAEN - HDMA Enable 76543210 7/6/5/4/3/2/1/0 = Enable the selected HDMA channels. HDMAs will be executed in order from 0 to 7 (?). See registers $43x0-$43xA for more details. If HDMA (init or transfer) occurs while a DMA is in progress, the DMA will be paused for the duration. If the HDMA happens to involve the current DMA channel, the DMA will be immediately terminated and the HDMA will progress using the then-current values of the registers. Other DMA channels will be unaffected. Note that enabling a channel mid-frame will begin HDMA at the next HDMA point. However, the HDMA register initialization only occurs before the HDMA point on scanline 0, so those registers will have to be initialized by hand before enabling HDMA. A channel that has already terminated for the frame cannot be restarted in this manner. Writing 0 to a bit will pause an ongoing HDMA; the transfer may be continued by writing 1 to the bit. This register is initialized to $00 on power on or reset. See the section "DMA AND HDMA" below for more information. | DMA and HDMA Information | |
$420D | 1 byte | SNES Register (Hardware) | wb++++ MEMSEL - ROM Access Speed -------f f = FastROM select. The SNES uses a master clock running at about 21.477 MHz (current theory is 1.89e9/88 Hz). By default, the SNES takes 8 master cycles for each ROM access. If this bit is set and ROM is accessed via banks $80-$FF, only 6 master cycles will be used. This register is initialized to $00 on power on (or reset?). See my memory map and timing doc (memmap.txt) for more details. | Memory Map and Timings | |
$4210 | 1 byte | SNES Register (Hardware) | r b++++ RDNMI - NMI Flag and 5A22 Version n---vvvv n = NMI Flag. This bit is set at the start of V-Blank (at the moment, we suspect when H-Counter is somewhere between $28 and $4E), and cleared on read or at the end of V-Blank. Supposedly, it is required that this register be read during NMI. Note that this bit is not affected by bit 7 of $4200. vvvv = 5A22 chip version number. So far, we've encountered at least 2, maybe 1 as well. NMI is cleared on power on or reset. The '-' bits are open bus. | ||
$4211 | 1 byte | SNES Register (Hardware) | r b++++ TIMEUP - IRQ Flag i------- i = IRQ Flag. This bit is set just after an IRQ fires (at the moment, it seems to have the same delay as the NMI Flag of $4210 has following NMI), and is cleared on read or write. Supposedly, it is required that this register be read during the IRQ handler. If this really is the case, then I suspect that that read is what actually clears the CPU's IRQ line. This register is marked read/write in another doc, with no explanation. IRQ is cleared on power on or reset. The '-' bits are open bus. | ||
$4212 | 1 byte | SNES Register (Hardware) | r b++++ HVBJOY - PPU Status vh-----a v = V-Blank Flag. If we're currently in V-Blank, this flag is set, otherwise it is clear. The setting seems to occur at H Counter about $16-$17 when V Counter is $E1, and the clearing at about $1E with V Counter 0. h = H-Blank Flag. If we're currently in H-Blank, this flag is set, otherwise it is clear. The setting seems to occur at H Counter about $121-$122, and the clearing at about $12-$18. a = Auto-Joypad Status. This is set while Auto-Joypad Read is in progress, and cleared when complete. It typically turns on at the start of V-Blank, and completes 3 scanlines later. This register is marked read/write in another doc, with no explanation. | ||
$4213 | 1 byte | SNES Register (Hardware) | r b++++ RDIO - Programmable I/O port (in-port) abxxxxxx Reading this register reads data from the I/O Port. The way the I/O Port works, any bit set to 0 in $4201 will be 0 here. Any bit set to 1 in $4201 may be 1 or 0 here, depending on whether any other device connected to the I/O Port has set a 0 to that bit. Bit 'b' is connected to pin 6 of Controller Port 1. Bit 'a' is connected to pin 6 of Controller Port 2, and to the PPU Latch line. See register $4201 for the O side of the I/O Port. | ||
$4214 | 2 bytes | SNES Register (Hardware) | r l++++ RDDIVL - Quotient of Divide Result low byte r h++++ RDDIVH - Quotient of Divide Result high byte qqqqqqqq qqqqqqqq Write $4204/5, then $4206. 16 "machine cycles" (probably 96 master cycles) after $4206 is set, the quotient may be read from these registers, and the remainder from $4216/7. The division is unsigned. | ||
$4216 | 2 bytes | SNES Register (Hardware) | r l++++ RDMPYL - Multiplication Product or Divide Remainder low byte r h++++ RDMPYH - Multiplication Product or Divide Remainder high byte xxxxxxxx xxxxxxxx Write $4202, then $4203. 8 "machine cycles" (probably 48 master cycles) after $4203 is set, the product may be read from these registers. Write $4204/5, then $4206. 16 "machine cycles" (probably 96 master cycles) after $4206 is set, the quotient may be read from $4214/5, and the remainder from these registers. The multiplication and division are both unsigned. | ||
$4218 | 8 bytes | SNES Register (Controller) | r l++++ JOY1L - Controller Port 1 Data1 Register low byte r h++++ JOY1H - Controller Port 1 Data1 Register high byte r l++++ JOY2L - Controller Port 2 Data1 Register low byte r h++++ JOY2H - Controller Port 2 Data1 Register high byte r l++++ JOY3L - Controller Port 1 Data2 Register low byte r h++++ JOY3H - Controller Port 1 Data2 Register high byte r l++++ JOY4L - Controller Port 2 Data2 Register low byte r h++++ JOY4H - Controller Port 2 Data2 Register high byte byetUDLR axlr0000 The bitmap above only applies for joypads, obviously. More generically, Auto Joypad Read effectively sets 1 then 0 to $4016, then reads $4016/7 16 times to get the bits for these registers. a/b/x/y/l/r/e/t = A/B/X/Y/L/R/Select/Start button status. U/D/L/R = Up/Down/Left/Right control pad status. Note that only one of L/R and only one of U/D may be set, due to the pad hardware. These registers are only updated when the Auto-Joypad Read bit (bit 0) of $4200 is set. They are being updated while the Auto-Joypad Status bit (bit 0) of $4212 is set. Reading during this time will return incorrect values. See the section "CONTROLLERS" below for details. | Controller Information | |
$4300 | 1 byte | SNES Register (DMA) | rwb++++ DMAP0 - DMA Control for Channel 0 da-ifttt d = Transfer Direction. When clear, data will be read from the CPU memory and written to the PPU register. When set, vice versa. Contrary to previous belief, this bit DOES affect HDMA! Indirect mode is more useful, it will read the table as normal and write from Bus B to the Bus A address specified. Direct mode will work as expected though, it will read counts from the table and try to write the data values into the table. a = HDMA Addressing Mode. When clear, the HDMA table contains the data to transfer. When set, the HDMA table contains pointers to the data. This bit does not affect DMA. i = DMA Address Increment. When clear, the DMA address will be incremented for each byte. When set, the DMA address will be decremented. This bit does not affect HDMA. f = DMA Fixed Transfer. When set, the DMA address will not be adjusted. When clear, the address will be adjusted as specified by bit 4. This bit does not affect HDMA. ttt = Transfer Mode. 000 => 1 register write once (1 byte: p ) 001 => 2 registers write once (2 bytes: p, p+1 ) 010 => 1 register write twice (2 bytes: p, p ) 011 => 2 registers write twice each (4 bytes: p, p, p+1, p+1) 100 => 4 registers write once (4 bytes: p, p+1, p+2, p+3) 101 => 2 registers write twice alternate (4 bytes: p, p+1, p, p+1) 110 => 1 register write twice (2 bytes: p, p ) 111 => 2 registers write twice each (4 bytes: p, p, p+1, p+1) The effect of writing this register during HDMA to the associated channel is unknown. Most likely, the change takes effect for the next HDMA transfer. This register is set to $FF on power on, and is unchanged on reset. | ||
$4301 | 1 byte | SNES Register (DMA) | rwb++++ BBAD0 - DMA Destination Register for Channel 0 pppppppp This specifies the Bus B address to access. Considering the standard CPU memory space, this specifies which address $00:2100-$00:21FF to access, with two- and four-register modes wrapping $21FF->$2100, not $2200. The effect of writing this register during HDMA to the associated channel is unknown. Most likely, the change takes effect for the next transfer. This register is set to $FF on power on, and is unchanged on reset. | ||
$4302 | 3 bytes | SNES Register (DMA) | rwl++++ A1T0L - DMA Source Address for Channel 0 low byte rwh++++ A1T0H - DMA Source Address for Channel 0 high byte rwb++++ A1B0 - DMA Source Address for Channel 0 bank byte bbbbbbbb hhhhhhhh llllllll This specifies the starting Address Bus A address for the DMA transfer, or the beginning of the HDMA table for HDMA transfers. Note that Bus A does not access the Bus B registers, so pointing this address at say $00:2100 results in open bus. The effect of writing this register during HDMA to the associated channel is unknown. However, current theory is that only $4304 will affect the transfer. The changes will take effect at the next HDMA init. During DMA, $4302/3 will be incremented or decremented as specified by $4300. However $4304 will NOT be adjusted. These registers will not be affected by HDMA. This register is set to $FF on power on, and is unchanged on reset. | ||
$4305 | 3 bytes | SNES Register (DMA) | rwl++++ DAS0L - DMA Size/HDMA Indirect Address low byte rwh++++ DAS0H - DMA Size/HDMA Indirect Address high byte rwb++++ DASB0 - HDMA Indirect Address bank byte bbbbbbbb hhhhhhhh llllllll For DMA, $4305/6 indicate the number of bytes to transfer. Note that this is a strict limit: if this is set to 1 then only 1 byte will be written, even if the transfer mode specifies 2 or 4 registers (and if this is 5, all 4 registers would be written once, then the first only would be written a second time). Note, however, that writing $0000 to this register actually results in a transfer of $10000 bytes, not 0. $4305/6 are decremented during DMA, and thus typically end up set to 0 when DMA is complete. For HDMA, $4307 specifies the bank for indirect addressing mode. The indirect address is copied into $4305/6 and incremented appropriately. For direct HDMA, these registers are not used or altered. Writes to $4307 during indirect HDMA will take effect for the next transfer. Writes to $4305/6 during indirect HDMA will also take effect for the next HDMA transfer, however this is only noticable during repeat mode (for normal mode, a new indirect address will be read from the table before the transfer). For a direct transfer, presumably nothing will happen. This register is set to $FF on power on, and is unchanged on reset. | ||
$4308 | 2 bytes | SNES Register (DMA) | rwl++++ A2A0L - HDMA Table Address low byte rwh++++ A2A0H - HDMA Table Address high byte aaaaaaaa aaaaaaaa At the beginning of the frame $4302/3 are copied into this register for all active HDMA channels, and then this register is updated as the table is read. Thus, if a game wishes to start HDMA mid-frame (or change tables mid-frame), this register must be written. Writing this register mid-frame changes the table address for the next scanline. This register is not used for DMA. This register is set to $FF on power on, and is unchanged on reset. | ||
$430A |