SMW Memory Map
Displaying 50 out of 840 addresses.
View: moderated | waiting (20)
RAM Address | Length | Type | Description | Details |
---|---|---|---|---|
$7E0DAC | 1 byte | I/O | Controller 1 button disable flags ($4218), one frame. If a bit is set here, that bit will be disabled in $18/$0DA8 (but not $17). Format: axlr----. a = A, x = X, l = L, r = R, 0 = null/unused. |
|
$7E0DAD | 1 byte | I/O | Controller 2 button disable flags ($421A), one frame. If a bit is set here, that bit will be disabled in $18/$0DA9 (but not $17). Format: axlr----. a = A, x = X, l = L, r = R, 0 = null/unused. |
|
$7E0DAE | 1 byte | Hardware mirror | Handles brightness and force blank. Format: f---bbbb. f = force blank flag, --- = unused bits, bbbb = brightness setting. Mirror of SNES register $2100. | |
$7E0DAF | 1 byte | Misc. | Mosaic direction. #$00 = shrinking mosaic; #$01 = growing mosaic. | |
$7E0DB0 | 1 byte | Hardware mirror | Current mosaic pixel size on level load. Mirror of SNES register $2106, though bits 0 and 1 are always set ($2106 = $7E:0DB0 | #$03). | |
$7E0DB1 | 1 byte | Timer | Is used to keep a mode active. If the respective value is positive, the game mode doesn't change. This is primarily used in the fading routines (example: from overworld to level and vice versa). | |
$7E0DB2 | 1 byte | Flag | Two player game flag. #$00 = No; #$01 = Yes. | |
$7E0DB3 | 1 byte | Player | Which character is in play. #$00 = Mario; #$01 = Luigi. If you prefer Luigi to be #$04, use $7E:0DD6. | |
$7E0DB4 | 1 byte | Player | Mario's lives. Note that this is only used in two player games, you'll want $7E:0DBE in 99% of the cases. | |
$7E0DB5 | 1 byte | Player | Luigi's lives. Note that this is only used in two player games, you'll want $7E:0DBE in 99% of the cases. | |
$7E0DB6 | 1 byte | Player | Mario's coins. Note that this is only used in two player games, you'll want $7E:0DBF in 99% of the cases. | |
$7E0DB7 | 1 byte | Player | Luigi's coins. Note that this is only used in two player games, you'll want $7E:0DBF in 99% of the cases. | |
$7E0DB8 | 1 byte | Player | Mario's powerup/status. Note that this is only used in two player games, you'll want $7E:0019 in 99% of the cases. | |
$7E0DB9 | 1 byte | Player | Luigi's powerup/status. Note that this is only used in two player games, you'll want $7E:0019 in 99% of the cases. | |
$7E0DBA | 1 byte | Yoshi | Mario's Yoshi color. #$04=yellow; #$06=blue; #$08=red; #$0A=green | |
$7E0DBB | 1 byte | Yoshi | Luigi's Yoshi color. #$04=yellow; #$06=blue; #$08=red; #$0A=green | |
$7E0DBC | 1 byte | Player | Item in Mario's item box. #$00 = None; #$01 = Mushroom; #$02 = Fire Flower; #$03 = Star; #$04 = Feather. Note that you'll want $7E:0DC2 in most cases. | |
$7E0DBD | 1 byte | Player | Item in Luigi's item box. #$00 = None; #$01 = Mushroom; #$02 = Fire Flower; #$03 = Star; #$04 = Feather. Note that you'll want $7E:0DC2 in most cases. | |
$7E0DBE | 1 byte | Player | Current player lives, minus one (#$04 here means that the player has 5 lives). | |
$7E0DBF | 1 byte | Player | Current player coin count. | |
$7E0DC0 | 1 byte | Counter | Green star block coin counter. Starts at 30 (#$1E) at the beginning of a level, and decrements for each coin that is collected. Adjusts content of green star block when it hits zero. (A 1-Up mushroom comes out, instead of a spinning coin.) It is also used in Chocolate Island 2 to count how many coins have been collected since the start of the level, and determine what sublevel data should be loaded. |
|
$7E0DC1 | 1 byte | Yoshi | Player can carry Yoshi over levels flag. #$00 = can't carry over levels; #$01 = can carry over levels. | |
$7E0DC2 | 1 byte | Player | Item in current player's item box. #$00 = None; #$01 = Mushroom; #$02 = Fire Flower; #$03 = Star; #$04 = Feather. | |
$7E0DC3 | 4 bytes | Empty | Empty. Cleared on reset and titlescreen load. $7E:0DC3 is also cleared when selecting how many players to use, but this can be disabled with no known side effects by setting $00:9E48 to [80 01 EA]. | |
$7E0DC7 | 2 bytes | Player | Overworld X position where Mario should be going to. Is used by overworld path tiles to indicate Mario's direction. Updated as soon as Mario starts moving - zero otherwise. | |
$7E0DC9 | 2 bytes | Player | Overworld Y position where Mario should be going to. Is used by overworld path tiles to indicate Mario's direction. Updated as soon as Mario starts moving - zero otherwise. | |
$7E0DCB | 2 bytes | Player | Overworld X position where Luigi should be going to. Is used by overworld path tiles to indicate Luigi's direction. Updated as soon as Luigi starts moving - zero otherwise. | |
$7E0DCD | 2 bytes | Player | Overworld Y position where Luigi should be going to. Is used by overworld path tiles to indicate Luigi's direction. Updated as soon as Luigi starts moving - zero otherwise. | |
$7E0DCF | 2 bytes | Player | Player X speed on the overworld. Added with $7E:13D5, which does happen to be zero all the time. | |
$7E0DD1 | 2 bytes | Player | Player Y speed on the overworld. Added with $7E:13D7, which is zero most of the time. | |
$7E0DD3 | 1 byte | Overworld | Player direction. #$00 = up; #$02 = down; #$04 = left; #$06 = right. | |
$7E0DD4 | 1 byte | Should be 00 | This address is effectively the high byte of $0DD3 on the overworld and should not be touched there, though in levels it is unused. It is also referenced once as the low byte of $0DD5, though its value isn't used there. Cleared on reset and titlescreen load, and when Mario starts walking on an overworld path. |
|
$7E0DD5 | 1 byte | Misc. | Used to indicate how a level has been exited, and hence what events to activate on the overworld. | Valid Values |
$7E0DD6 | 1 byte | Player | Which character is in play. Used on the overworld. The value of this address is actually $7E:0DB3 * 4. #$00 = Mario; #$04 = Luigi. |
|
$7E0DD7 | 1 byte | Should be 00 | An address that is expected to be #$00 throughout the entire game. $7E:0DD6 (current player) is sometimes used in 16bit mode, so using this address for different purposes is a bad idea. | |
$7E0DD8 | 1 byte | Flag | Used to tell if the game is currently switching between Mario and Luigi or not. #$00 = Not switching between Mario and Luigi. #$01 = Switching between Mario and Luigi, during the fade-out. |
|
$7E0DD9 | 1 byte | Empty | Empty. Cleared on reset and titlescreen load. | |
$7E0DDA | 1 byte | Misc. | Back-up of the music register. Gets its value from the level music table at $05:84DB. Bit 7 of this address is set when the player has a star powerup or presses a P-switch; when this is cleared again, the music ends. This address is also set to #$FF when the level ends, either by beating it or by dying. Bit 6 is similar but is used to not reupload all music. This is used when changing from the Mario start screen to the level game mode. |
|
$7E0DDB | 3 bytes | Empty | Empty. Cleared on reset and titlescreen load. | |
$7E0DDE | 1 byte | Misc. | Which files to delete on the erase file screen. Format: xxxxx123. It is also used as an overworld sprite index. | |
$7E0DDF | 1 byte | Sprites | Starting OAM index for overworld sprites. Appears to be used only by the cloud sprites. | |
$7E0DE0 | 5 bytes | Sprites | Used for the overworld cloud sprites. This table is used in such a way that clouds check each other's 16-bit Y positions. By doing this, they can maintain their speed, making it the same for all clouds on-screen. | |
$7E0DE5 | 16 bytes | Sprites | Overworld sprite number. | Valid Values |
$7E0DF5 | 16 bytes | Sprites | Miscellaneous overworld sprite table. | |
$7E0E05 | 16 bytes | Sprites | Miscellaneous overworld sprite table. | |
$7E0E15 | 16 bytes | Sprites | Miscellaneous overworld sprite table. | |
$7E0E25 | 16 bytes | Sprites | Miscellaneous overworld sprite table. | |
$7E0E35 | 16 bytes | Sprites | Overworld sprite X position, low byte. | |
$7E0E45 | 16 bytes | Sprites | Overworld sprite Y position, low byte. | |
$7E0E55 | 16 bytes | Sprites | Overworld sprite Z position, low byte; distance that the sprite is from the ground. | |