Language…
6 users online: Angel Miranda, CONLUSH666, DasFueller, knight666, MiracleWater, Phyll - Guests: 60 - Bots: 169
Users: 58,122 (2,492 active)
Latest user: Levantium

SMW Memory Map

Displaying 50 out of 3118 addresses.

View: moderated | waiting (99)

Filter

Link
  • Pages:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 62
  • 63
ROM Address Length Type Description Details
$00B65E 14 bytes Palette Iggy/Larry Platform Palette
$00B674 14 bytes Palette Palettes 2 and 9, colours 9-F.
$00B682 14 bytes Palette Palettes 3 and A, colours 9-F.
$00B690 14 bytes Palette Palettes 4 and B, colours 9-F.
$00B69E 112 bytes Palette Bowser palettes (8 palettes, 7 colours each)
$00B70E 36 bytes Palette "The End" palettes (3 palettes, 6 colours each; order is Luigi, Mario, Princess)
$00B992 50 bytes Graphics Pointers to GFX00 through GFX31, low byte
$00B9C4 50 bytes Graphics Pointers to GFX00 through GFX31, high byte
$00B9F6 50 bytes Graphics Pointers to GFX00 through GFX31, bank byte
$00BA4D 19 bytes Empty Unused data.
$00BA60 32 bytes Pointer The low byte of a series of Map16 data pointers in horizontal levels. The high bytes are at $00BA9C, and the bank byte is either $7E or $7F. These are indexed by screen number; each byte in this table and the other corresponds to the start of a particular screen's Map16 data (or chunk of 0x1B0 bytes). These are used in various routines that read or write Map16 data to find where a particular tile is.
$00BA80 28 bytes Pointer The low byte of a series of Map16 data pointers in vertical levels. The high bytes are at $00BABC, and the bank byte is either $7E or $7F. These are indexed by screen number; each byte in this table and the other corresponds to the start of a particular screen's Map16 data (or chunk of 0x200 bytes, which means that all of these will be 00 in a clean ROM anyway). These are used in various routines that read or write Map16 data to find where a particular tile is.
$00BA9C 32 bytes Pointer The high byte of a series of Map16 data pointers in horizontal levels. The low bytes are at $00BA60, and the bank byte is either $7E or $7F. These are indexed by screen number; each byte in this table and the other corresponds to the start of a particular screen's Map16 data (or chunk of 0x1B0 bytes). These are used in various routines that read or write Map16 data to find where a particular tile is.
$00BABC 28 bytes Pointer The high byte of a series of Map16 data pointers in vertical levels. The high bytes are at $00BA80, and the bank byte is either $7E or $7F. These are indexed by screen number; each byte in this table and the other corresponds to the start of a particular screen's Map16 data (or chunk of 0x200 bytes, which means that these are all simply multiples of 2 plus #$C8). These are used in various routines that read or write Map16 data to find where a particular tile is.
$00BEB0 268 bytes Subroutine (JSL) SMW's Map16-tile-generating routine. It uses values of $9C to determine which tile to generate, but these values are hardcoded. (See RAM address $9C.) This is the main part; $00BFBC runs the codes for each tile.
$00BFBC 67 bytes Subroutine (JSR) A subroutine used with $00BEB0; it runs different codes depending on the value of $9C. The pointers for the different values begin at $00BFC9. They go from 01 to 1B, although the actual codes are kind of weird...the pointers vary depending on which Map16 page the tile is on, whether or not item memory should be affected, and if there are special cases (such as the Yoshi coin, which generates two tiles simultaneously).
$00C00D 86 bytes Subroutine (JSR) The subroutine that sets item memory bits. It is called during the subroutine at $00BEB0 for values of $9C that utilize item memory.
$00C06B 9 bytes Misc. Tiles to generate on Map16 page 0, used for values 01-09 of $9C. Note that the first byte is unused.
$00C074 54 bytes Subroutine (JSR) SMW's subroutine for generating tiles on Map16 page 0. $00C077 is an alternate entry point to this routine; if it is used instead, then the tile generation will not affect item memory.
$00C0B2 15 bytes Misc. Tiles to generate on Map16 page 1, used for values 0A-17 of $9C.
$00C0C1 58 bytes ASM A portion of code used in SMW for generating tiles on Map16 page 1. $00C0C4 is an alternate entry point to this routine; if it is used instead, then the tile generation will not affect item memory.
$00C0FB 177 bytes ASM The portion of code in SMW's Map16-tile-generating routine that changes the actual graphics of the tile. Both $00C074 and $00C0C1 use it (the former jumps to it, and it immediately follows the latter).
$00C29E 72 bytes Misc. BG Tiles/Palette for Flipped Gate (1)
$00C2E6 72 bytes Misc. BG Tiles/Palette for Flipped Gate (2)
$00C4AF 1 byte Misc. If you change this byte from [02] to [01], the keyhole will activate the normal exit.
$00C526 1 byte Music Music played when you have completed the Bonus Game.
$00C558 1 byte Sound effect POW Finishing Sound Effect.
$00C570 1 byte Misc. [F0] Change to [80] to make the item not drop when the player presses Select.
$00C576 1 byte Debug DEBUG: Powerup select (F0 = enable)
$00C599 28 bytes Pointer Pointer to Mario's animation routines. ($7E0071)
$00C5CE 3 bytes ASM [9C 9F 0D] This address disables HDMA effects when player animation #$0B (Freeze) is triggered.

To fix this, change to [EA EA EA] (NOP #3).
$00C5E8 248 bytes Misc. Movement data for all of the castle destruction scenes.

Each data entry consists of two values, the first being the command and the second being the number of frames to keep that command active.
If bit 4 of the command byte is set, question marks will be drawn above Mario (as in Roy/Ludwig's scenes).
If bit 5 is clear, the rest of the byte is read as input data for $15/$16.
If bit 5 is set, then the first four bits are used to run additional commands. x0-x6 will run a variety of small routines, while x7-xF will change Mario's pose.
If #$2D, the P-balloon sound will also be played (for Lemmy's).
Lastly, #$FF marks the end of that scene's data.
$00C6E0 7 bytes Misc. Base indices to the data at $00C5E8 for each of the castle destruction scenes.
$00C848 40 bytes Controller Table that holds controller input data for the No Yoshi cutscenes, used by the routine at $00C870.

The table is divided in two parts: the first (15 bytes) is used when the player doesn't have a Yoshi, the second (25 bytes) is used when there's Yoshi.

The table is formatted as a sequence of two bytes chunks: the first is used as the input data, which first is ANDed with #$DF and then copied to $15 (so the third highest bit is ignored). When the value equals #$20, #$80 is stored to $18, to force an A press and dismount Yoshi. Instead, when the value has the second highest bit set (#$40), the entrance door starts animating.
The second byte is the number of frames that the current input will be used, before passing on to the next.
$88 is used as an index for the current entry being used, while $89 is used for the timer.

Both parts of the table end with a $FF byte which makes the cutscene end when reached.
$00C870 165 bytes Subroutine (JSR) Routine that handles No Yoshi cutscenes, run whenever $71 is #$0A.

The routine first sets up sprite data depending on the current cutscene type (ghost house, rope or castle).
Then, it checks if A or B are pressed: in this case, the cutscene ends immediately. Otherwise, the player's controls are disabled, and the player's movement is handled by using the table at $00C848 (follow the link for more details on this). The entrance door animation is handled once a certain value in the table (#$40) is reached. During the entire process the code at $00CD82 is jumped to to handle some of Mario's physics (jump, cape spinning, throwing fireballs, cape flying) and animations.

Once the value #$FF is read from the table (or the player presses A/B), the cutscene ends and the gamemode is changed to #$0F (fade to level).
$00C92C 2 bytes Misc. [F0 3D] Change to [EA EA] to prevent Mario walking after touching goal spheres or the goal tape.
$00C9A7 7 bytes Level number The level numbers that triggers the seven castle destruction sequences. The first byte is for scene 1, the second is for scene 2, and so on.
$00C9AE 1 byte Level number One of the two level numbers that triggers the credits scene. The other is at $00CA13.
$00C9BD 1 byte Music Goal point fade-out music
$00C9FE 3 bytes ASM [8D D5 0D] The code itself stores either 01 or 02 to $0DD5. Change to [EA EA EA] to make it possible to set the normal/secret exit info through $0DD5 via LevelASM, sprites, etc. (Note: To activate any exit at all, $0DD5 has to be explicitly set to 01, 02, 03 or 04. Leaving it as 00 will cause no exit to be activated at all, and values 05-FF should not be used.)
$00CA0C 1 byte Level number Translevel number of the level where defeating a boss will activate the secret exit.
$00CA12 2 bytes Misc. [C9 31] Changing this to [80 11] will prevent any "boss defeated" scenes from ever being played.
$00CA13 is one of the two level numbers that triggers the credits scene. The other is at $00C9AE.
$00CA2C 1 byte Misc. Set to 00 to disable midway points (they'll still make you big though)
$00CA31 13 bytes Subroutine (JSR) Set the "peace" pose for the player depending on whether they're on Yoshi or not.
$00CB0C 1 byte ASM Change from '8D' to '0C' to not make HDMA gradients act strangely at the end of the level (goal tape). Of course, you should still avoid using HDMA channel 7 if this is all you change.
$00CB12 258 bytes Misc. Opening window data.
$00CBA3 - Change 4B to 49 to fix a misplaced tile on the keyhole "iris in" effect.
$00CC84 1 byte Debug DEBUG: Free-roaming mode (F0 = enable)
$00CC85 1 byte Debug Change this to 00 and you'll activate free roaming mode (just like $00CC84)
$00CD4E 4 bytes ASM [AD 8F 14 0D] Change to [EA EA EA AD] to enable climbing while holding an item
$00CD5F 1 byte Mario physics Change from [15] to [16] so you don't automatically grab whatever you are climbing (vine, net, etc.) again if you happen to still be holding up/down. Instead after you jump it will let go and let you jump until you press up/down again.
  • Pages:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 62
  • 63