SMW Memory Map
Displaying 50 out of 3152 addresses.
View: moderated | waiting (14)
ROM Address | Length | Type | Description | Details |
---|---|---|---|---|
$009D30 | 8 bytes | Subroutine (JSR) | Subroutine used for changing the background color on the titlescreen, when entering/exiting the file erase menu. To use, load the color (16-bit) to A and a CGADDSUB value (for half-color math) to Y first. Changing the first three bytes from [8D 01 07] to [EA EA EA] will disable the titlescreen back area color from changing. |
|
$009D6D | 1 byte | Misc. | How many exits you need to get the *96 icon. | |
$009D71 | 1 byte | Misc. | First tile of the *96 icon. | |
$009D73 | 1 byte | Misc. | Second tile of the *96 icon. | |
$009D8B | 1 byte | Palette | Palette for "number of levels beaten" in the Title Screen's Game Selection Menu (stored in YXPCCCTT format, but kind of screwy; value 30 seems to work well, though) | |
$009DB5 | 69 bytes | Subroutine (JSR) | The subroutine that checks if a saved game file is blank or not. When this subroutine returns, if Z = 0, the file is a new one. | |
$009E25 | 1 byte | Misc. | Amount of lives to start with, minus 1. | |
$009E35 | 2 bytes | ASM | Set powerups at game start. ($19 = #$00, small Mario.) | |
$009E6A | 10 bytes | Misc. | Table containing the number of possible options for different menus, in 16 bit format. The entries are as follows: - $0002: unused - $0004: file select menu - $0002: player select menu - $0002: unused - $0004: file erase menu |
|
$009E74 | 10 bytes | Stripe Image | Table containing the stripe image header (see here for more info) for the cursor in various menus. The entries are as follows: - $51CB: unused - $51E8: file select menu - $5208: player select menu - $51C4: unused - $51E5: file erase menu |
|
$009E7E | 4 bytes | Misc. | Table of four bitwise values ($01,$02,$04,$08) indexed by $1B92 and used in the cursor draw routine to determine on which row to actually draw it. | |
$009E82 | 94 bytes | Subroutine (JSR) | Routine that draws the cursor on the screen for different menus (file select, player select, file erase). It uses $1B92 to determine on which row to draw it, and $1B91 to skip drawing it every so often to create the blinking effect. $009EBA ($FC) holds the tile that's drawn in the rows that aren't supposed to show the cursor. $009EBB ($38) holds its YXPCCCTT properties. $009EC1 ($2E) holds the cursor tile number. $009EC2 ($3D) holds its YXPCCCTT properties. |
|
$009EE0 | 16 bytes | Overworld | Initial level flags. This table is made of a pair of bytes where the first byte contains the translevel number and the second byte the overworld level settings. In an LM-modified ROM, this table is unused, with the initial flag data instead being loaded from a table at $05DDA0 that just contains one byte per translevel. | |
$009EF0 | 22 bytes | Overworld | Initial overworld position data for Mario and Luigi, corresponding to addresses $1F11 through $1F26. The values are copied there on creation of a new save file. | |
$009F06 | 35 bytes | Subroutine (JSR) | Routine to initialize RAM for a new save file. This first clears the SRAM buffer at $7E1F49, then loads into it the initial level flags (using the table at $009EE0) and initial overworld positions for both players (using the table at $009EF0). | |
$009F2A | 1 byte | Misc. | Speed of Fade-ins and Fade-outs. | |
$009F2F | 1 byte | Overworld border | Change from 01 to 0F to stop fadeout on entering level, new area, and back to submap. (Use with $00:9F59) | |
$009F37 | 81 bytes | Subroutine (JSR) | Fading/mosaic routine. Change $009F59 from D0 to 90 to eliminate all fadeouts. (use in conjunction with $009F2F). Mod note: I've heard that this one is buggy. Use on your own risk. $009F67 controls which layers are affected by the mosaic effect. Format: xxxx4321. The numbers present the layer numbers to add mosaic on. So 1 = Layer 1, 2 = Layer 2, etc. |
|
$009F88 | 48 bytes | Layer 3 | Layer 3 settings. The table is indexed by 3t + i, where t is the tileset number and i is the Layer 3 image setting (00 = variable tide, 01 = low tide, 02 = tileset-specific image). It is used by the routine at $009FB8. The actual format seems to be: 01 = variable-height tide 02 = fixed-height tide 80 = Layer 3 smashers/cage 81 = slow-auto-scrolling background (except in tilesets 1 and 3, where it will be a background that scrolls at half the rate Layer 1 does) C0 = same as 80, except without the smasher palette |
|
$009FB8 | 141 bytes | Subroutine (JSR) | The main Layer 3 handling routine in levels. - $009FDA: Starting Y position of the rising/lowering tide. - $009FDF: Y position of the fixed-height tide. - $009FF3: One of two tilesets for which the tileset-specific Layer 3 background will not auto-scroll. The other is at $009FF7. - $009FF7: One of two tilesets for which the tileset-specific Layer 3 background will not auto-scroll. The other is at $009FF3. - $00A00A: Pointer to the layer 3 crusher palette. |
|
$00A045 | 38 bytes | Layer 3 | The routine that sets the interaction of the Layer 3 tide tiles. Both $00A04E and $00A04F are the low byte of the Map16 tile that the tides act like; nothing is stored to the high byte, so this is always on page 0. |
|
$00A06B | 14 bytes | Coordinate | 16-bit X-coordinates for each of the seven submaps. The main map has values of 0, and is overridden elsewhere. | |
$00A079 | 14 bytes | Coordinate | 16-bit Y-coordinates for each of the seven submaps. The main map has values of 0, and is overridden elsewhere. | |
$00A09C | 1 byte | Timer | Timer to disable skipping the intro message (level C5). The timer decreases every 4 frame. |
|
$00A0CC | 3 bytes | Misc. | Saves Mario/Luigi's powerups based on which one you are using for the level | |
$00A0F9 | 1 byte | ASM | Part of the routine that runs after dying with zero lives. If # of levels beat is zero, then it will take you back to the intro screen, if levels beat is positive, it will take you back to the last place you saved on the OW and bring up the Continue/End dialog. Change this byte to BRA ($80) to cause it to not send you to the intro screen and bring up the Continue/End dialog if you haven't saved for the first time. (In other words, it will take you back to Yoshi's House on an unedited overworld.) |
|
$00A148 | 1 byte | Overworld | GFX file for animated tiles (waterfalls etc) on the overworld. | |
$00A15A | 4 bytes | Overworld border | Call to the routine to draw the number of lives on the overworld border. Change to [80 02] (BRA $02) to disable the amount of lives from being shown in the overworld border. Use with $04A530. |
|
$00A1E3 | 1 byte | ASM | Change to 0xEA to keep the game running when a message box is on the screen. | |
$00A21E | 1 byte | Controller | Button to press for Pause. (Checks $16) | |
$00A21F | 1 byte | ASM | Change from F0 (BEQ) to 80 (BRA) to disable pausing | |
$00A22D | 1 byte | Timer | Timer (in frames) that runs to prevent the pause flag from being flipped instantly. Change [3C] to another value to change the time it takes for Mario to pause/unpause. | |
$00A23E | 1 byte | Music | Change to 12 and music will continue to play when you pause the game. Changing [11] to another value will alter the sound effect that occurs when pausing the game. | |
$00A248 | 1 byte | Debug | DEBUG: Advance frame / Slow motion (00 = enable) | |
$00A256 | 1 byte | Debug | DEBUG: Slow motion speed | |
$00A25B | 47 bytes | Controller | Code to handle leaving the level with Start+Select. Change $00:A268 to 00 to always allow leaving the level. Change $00:A273 to 00 to beat the level by doing that, not just leave it. Holding A or B will give the secret exit. |
|
$00A300 | 144 bytes | Subroutine (JSR) | The routine that handles the graphics that get DMA'd to the first five 16x16 tiles in SP1. It also write the necessary colors to the player's palette (colors 6-F). $00A30A - Mario/Luigi Palette - Starting Index (Changing this will cause Mario/Luigi to flash when the screen fades out after beating a boss) $00A320 - Mario/Luigi Palette - Amount of colours * 2 $00A307 - [F0] Changing this to [80] will skip the player's palette write code, removing palette 8's hardcoded colors. |
|
$00A390 | 1 byte | ASM | [C2] Change to 60 to disable all animations in levels. This includes colour 64. Note: LM will still show the animations. |
|
$00A3DB | 2 bytes | Overworld border | [00 08] For which VRAM address animation data will be broken up into two lines of two tiles instead of a single line of four tiles. | |
$00A400 | 2 bytes | Overworld border | [00 09] VRAM address of the second line of two animated tiles (value should be $00A3DB + 0x100). | |
$00A41A | 1 byte | Palette | [A9] Changing this to 60 will disable the flashing yellow color in levels, but not on the overworld. | |
$00A41B | 1 byte | Palette | Palette number to use for the flashing palette. Default value is $64 | |
$00A429 | 12 bytes | Palette | Changing [B9 0C B6 8D 22 21 B9 0D B6 8D 22 21] to [80 0A EA EA EA EA EA EA EA EA EA EA] will disable the flash animation of colour #64. Make sure that the "View Animation" function in Lunar Magic is disabled. WARNING: Will disable the animated colours on the OW too! |
|
$00A439 | 1 byte | Misc. | Change [F0] (BEQ) to [80] (BRA) to prevent various tiles in SP1 to be overwritten (which meant using ExGFX for them would have no effect). This does not affect tiles 00-09, 10-19 and 7F of SP1. | |
$00A514 | 1 byte | Palette | The first animated colour on the overworld. (Default: 6D.) | |
$00A51D | 1 byte | Palette | The second animated colour on the overworld. (Default: 7D.) | |
$00A635 | 353 bytes | ASM | Routine responsible for initializing various things during loading of levels and castle destruction cutscenes. This includes: - Resetting P-switch, star, and directional coin timers, as well as resetting their music. - Controlling the flag for whether the coinblock bonus room minigame is still playable. - Clearing RAM addresses $71-$93 and $13DA-$1410. - Preventing Yoshi from spawning if the level has a No-Yoshi entrance. - Preparing Mario's entrance action (as defined by $192A) for both regular levels and No-Yoshi entrances. $00A6B6: Initialization of a No-Yoshi level. $00A6CC: Initialization of a regular level. |
|
$00A757 | 1 byte | Misc. | How far to offset the players position to the right when exiting a vertical pipe. Values above 0F aren't recommended. | |
$00A75F | 1 byte | Misc. | How many frames to move Mario when exiting upward from a vertical pipe. | |
$00A763 | 1 byte | Misc. | How many frames to move Mario when exiting downward from a vertical pipe while small. | |