Language…
18 users online: Adsila,  Anorakun, conicthecat, drake-68,  Erik,  Fernap, Foxy_9000_, Green, Hot Sauce, KaidenThelens, Knight of Time, Koopenstein, Koopster, Lady_Amethyst, LOLRyan2006 the Goombud, PermaBan, Sokobansolver, Squiffygrape - Guests: 193 - Bots: 98
Users: 68,885 (2,338 active)
Latest user: alerzi520

SMW Memory Map

Displaying 3144 out of 3144 addresses.

View: moderated | waiting (19)

Filter

Link
  • Pages:
  • 1
ROM Address Length Type Description Details
$008000 39 bytes ASM This is the starting address of SMW. This takes care of basic initialization such as disabling IRQ, HDMA, DMA, clearing the SPC ports, enabling F-blank, disabling emulation mode, disabling decimal mode, initializing the direct page, and setting up the stack.
$008027 43 bytes ASM This is code is responsible for uploading the OAM clear routine to $7F8000. The uploaded routine is essentially an unrolled loop which stores #$F0 to all of the OAM mirror($0200) Y positions.
$008052 25 bytes ASM This is the main part of the SMW initialization routine. SPC engine upload, sample upload, OAM setup, windowing setup, and RAM clearing all happens here.
$00806B 14 bytes ASM This is the main game loop of SMW. It is used to wait for V-blank to complete before executing the code of the next frame. One of the frame counters ($13) is also incremented here.
$00810E 15 bytes Subroutine (JSR) OW Music uploader.
$008134 37 bytes Subroutine (JSR) Uploads level music bank.
$008159 17 bytes Subroutine (JSR) Credit music uploader.
$00816A 522 bytes Misc. SMW's NMI routine. For more information, see here.
$008179 49 bytes ASM Handles transfers to and from the SPC700 (I/O). Changing all values to [EA] (NOP) or jumping over the code effectively mutes all sound.
$008293 1 byte Misc. How many scanlines the status bar uses during a regular level.
$00835D 1 byte Layer 3 How many scanlines the status bar uses during the battles with Bowser, Ludwig, and Reznor.
$008370 1 byte Layer 3 How many scanlines the status bar and ceiling use during the battles with Morton and Roy.
$008374 162 bytes Misc. SMW's IRQ routine.
$008449 44 bytes Misc. Code that transfer Sprite OAM mirror (sprite OAM table at $7E0200-$7E041F, a total of 544 bytes) to register $2104 to draw sprites.
$008494 52 bytes Sprite tilemap related Copies OAM's extra bits (size and 9th bit X position: %000000SX) data stored in $7E0420, and reformats, or “compacts” each 4 bytes of that into each byte to $7E0400 (%SXSXSXSX). $0420 and $0400 format
$0084C8 8 bytes Subroutine (JSL) JSL wrapper for the stripe image uploader (pointer lies in $12), which can be found at $0085D2. Because it upload tiles, it must run in either f- or v-blank (e.g. in NMI).
$0084D0 258 bytes Stripe Image Stripe image pointer table. Each 24-bit pointer here corresponds to a value of $12, but only multiples of 3 are used (the first pointer is for value $00, the second is for value $03, the third for $06, etc.).
$0085D2 40 bytes Subroutine (JSR) Subroutine which uploads the stripe image pointed by $12 to VRAM. The pointer is loaded from the table at $0084D0, and then the routine at $00871E is called. Afterwards, if $12 is #$00, the stripe image length at $7F837B is set to 0 and the terminator $FF is written to the beginning of $7F837D. In any case, $12 is reset to 0 before returning.
To call this routine from outside bank 0 you can JSL to the wrapper at $0084C8. This should only be done during a blank period (usually NMI).
$0085FA 86 bytes Subroutine (JSR) Fills the entire layer 3 tilemap with tile 0x0FC (transparent tile) i.e. the code "empties" it. Also wipes the OAM before returning.
$008650 119 bytes Subroutine (JSR) This is the routine that polls the controller and updates $15, $16, $17, $18.
$0086A0 (x8A0) - Change to [9C A0 0D AD A0 0D A2 00] to cause both player 1 & 2 to be controlled by controller 1.
$0086C7 24 bytes Subroutine (JSR) Subroutine that initializes the OAM table in Roy, Morton and Ludwig's rooms. It first initializes the first 100 tiles to be 16x16 (by setting $0420,x to #$02), then jumps in the middle of the standard OAM clear routine (JSL $7F812E).
$0086DF 27 bytes Subroutine (JSL) Pointer subroutine: Jump to a 2-byte pointer, the position of the pointer used is "Position after the JSL + 1 + (A*2)". The subroutine should always be accessed by a JSL.
$0086FA 36 bytes Subroutine (JSL) Pointer subroutine: Jump to a 3-byte pointer, the position of the pointer used is "Position after the JSL + 1 + (A*3)". The subroutine should always be accessed by a JSL.
$00871E 143 bytes Stripe Image Stripe Image Uploader. Uses $00-$02 as a 24-bit pointer to tile data. See this thread how the stripe image format works. Must be run during a blank, usually NMI.

To call from a custom routine, do this:
- Store stripe image pointer (24-bit) to $00-$02
- Push 24-bit return address (bank -> mid -> lo)
- PHB : LDA #$00 : PHA : PLB
- PEA $84CD
- JSL $00871E
$0087AD 617 bytes Subroutine (JSL) This routine is the DMA routine in charge of updating layers one and two as needed. This is controlled by the addresses $1BE4 and $1CE6 when they are a non-zero value.
$008A4E 43 bytes Subroutine (JSR) Clear RAM subroutine. This is part of the reset routine.
Specifically, it clears ram $00-$FF (direct page), $0200-$1FFF, $0681 and the stripe image table (by setting $7F837B to #$0000 and the start of $7F837D to #$FF).
$008A79 59 bytes ASM The routine that sets up certain VRAM-related registers in normal levels.
- $008A80: Default value for $2107 [23].
- $008A85: Default value for $2108 [33].
- $008A8A: Default value for $2109 [53].
- $008A8F: Default value for $210B [00].
- $008A94: Default value for $210C [04].
- $008AAB: Default value for $2130 [02], although it's actually stored to the mirror here (i.e. $44).
$210A is never set, since it is only ever used in Mode 0.
$008ACD 138 bytes Subroutine (JSR) Routine that updates the mode 7 matrix parameters mirrors at $2E-$34 using the rotation and scale parameters at $36-$38. SMW calls it every frame in mode 7 bosses (when $0D9B is >= #$80), and the "Easy Mode 7 patch" calls it every frame in mode 7 levels, but you may need to call it manually if you're using mode 7 in special situations (for example, on the Overworld).
On SA-1 roms, this must be called when running on the SNES CPU.
Call routine code
$008C59 40 bytes Layer 3 Tile array for numbers in bonus star counter.
$008C81 126 bytes Layer 3 Default status bar tiles info table. Format for each 8x8 tile:
%TTTTTTTT %YXPCCCTT

*$008C81-$008C88: top line of status bar (4 top tiles of the item box)
*$008C89-$008CC0: Second line of status bar
*$008CC1-$008CF6: Third line of status bar
*$008CF7-$008CFE: bottom line of status bar (4 bottom tiles of item box)
Table of addresses
$008D8B 1 byte Timer Timer speed (USE WITH $008E2E)
$008D90 28 bytes Misc. These four tables indicate the DMA settings and the source address to use for the status bar tiles (the ones that are uploaded at the very beginning of the level). The tables get stored in the order of $43x0-$43x6.
$008DAC 59 bytes Layer 3 The routine that draws the status bar onto the screen. It uses DMA to write the Layer 3 tiles to VRAM.
$008DF5 5 bytes Layer 3 The tiles that make up Luigi's name in the status bar.
$008DFA 4 bytes Sprite tilemap related Tilemap of reserve item. First byte is mushroom, second is flower, third is star, fourth is feather.
$008DFE 4 bytes Sprite tilemap related YXPPCCCT of stars in the item box. It cycles between the four entries every second frame.
$008E02 4 bytes Sprite tilemap related YXPPCCCT data for reserve item. First byte is mushroom, second is flower, third is bypassed ($008DFF), fourth is feather.
$008E06 20 bytes Layer 3 Bonus star counter tilemap - 2 bytes for each number. Every first byte is for the upper tile, every second byte for the bottom tile.
$008E1A 480 bytes Layer 3 The routine that updates the values of all the addresses used for the status bar ($0EF9-$0F2F).
$008E28 - Change this address to AD to disable the timer.
$008E2E - Timer speed (USE WITH $008D8B)
$008E45 - Tile that each timer digit resets to after reaching 0. Can be any value from $00-$80. (e.g. Change to $0F: 100 -> 0FF -> 0FE ... 0F0 -> 0EF ... etc.)
$008E5C - Time is Running Out SFX. Change from FF to 00 to stop the music from speeding up when time reaches 99.
$008E6B - [22 06 F6 00] Change to [EA EA EA EA] to not kill Mario when the timer reaches zero. The timer will count down normally and stop at zero, but Mario will not die
$008EDB - Change this and/or $008F09 from 20 12 90 to EA EA EA to disable writing the score to the status bar when playing as Mario and/or Luigi, respectively. Useful if you want to place another counter in place of the score using Smallhacker's Status Bar Editor. Note: This alone will NOT stop writing blank tiles if the first N tiles/bytes at $0F29-$0F2E contains the value #$00 (the "0" graphic). To prevent that, consider using this patch.
$008EE3 - Change to BRA [80] to write zeroes instead of blank tiles to Mario's score counter. Use with $008F11.
$008F11 - Change to BRA [80] to write zeroes instead of blank tiles to Luigi's score counter. Use with $008EE3.
$008F2C - How many coins you need to get an 1up (USE WITH $008F37)
$008F2F - [EE E4 18] Change to [EA EA EA] to not gain a life after collecting enough for one.
$008F37 - Number of coins to subtract from the counter when you gain enough for a 1up (Default: $64 (100). Change to [01] to create a coin wallet effect - use with $008F2F.
$008F41 - (Use with $008F45) Maximum life limit, minus one. Warning: Changing this to anything higher than 0x7E (127 lives) will remove the life limit entirely! Also, if you have more than
99 lives, the life counter will appear slightly glitched.
$008F45 - (Use with $008F41) Maximum life limit, minus one. Note that if you have more than 99 lives, the life counter will appear slightly glitched.
$008F62 - Number of bonus stars required to enter bonus game
$008F67 - [8D 25 14] Change to EA EA EA to disable entering bonus game when player has 100 bonus stars.
$008F6F - Amount of bonus stars that will be subtracted when 100 bonus stars are collected. Change to [01] to make 99 the maximum amount of bonus stars you can get - to create a bonus star wallet effect, use with $008F67.
$008F7E - Writes coins to status bar. Changing to [EA EA EA EA EA EA] will disable the coins from being written to the status bar.
$008F95 - [09] The X position of the small bonus star counter in the status bar.
$008FC5 - [20 79 90] Change to EA EA EA to disable the item GFX in the status bar
$008FCE - Length of "LUIGI" text (Status bar)
$008FE7 - [FC](blank tile) Tile used on the status bar when there's no Yoshi coin in that spot.
$008FED - [2E](coin tile) Tile used on the status bar when there is a Yoshi coin in that spot. Change to [FC](blank tile) to visually disable collected Yoshi Coins.
$008F1D 30 bytes Misc. Routine that handles actually increasing the player's coin count and giving a life from 100 coins, controlled by RAM address $7E13CC.
$008FDC 1 byte Layer 3 [05] If the player has collected at least this number of Dragon Coins, the status bar will display $008FE0 Dragon Coins instead (none by default).
$008FE0 1 byte Layer 3 [00] Number of Dragon Coins to display in the status bar, if the player has collected at least 5.
$008FF0 2 bytes Layer 3 Location of the first Dragon Coin tile in the status bar. Diagram
$008FFA 24 bytes Misc. Table containing six 32-bit numbers representing hexadecimal powers of 10, used by the 6-digit HexToDec routine at $009012 used to display the player's score. The numbers are not direct 32-bit values, though, and are instead two consecutive 16-bit values that are directly concatenated together. For instance, the number 100000 (0x186A0 is hex) is represented here as [$0001,$86A0]. 16-bit values
$009012 51 bytes Subroutine (JSR) 6-digit HexToDec subroutine, used to write a player's score into status bar (note: although the score is shown in-game as 7 digits, the 7th digit is just a static 0 tile). This function calculates the digits by repeatedly subtracting powers of 10 (in hexadecimal) from the input number until no more can be subtracted.

Input:
- Y: Set to #$00
- X: Status bar position to write to (indexed from $0F15)
- $00-$03: Hexadecimal value to convert. Note that this is not provided as a normal 32-bit value, though, and instead should be provided as two 16-bit values, with $00 being the high word and $02 being the low word.
$009045 12 bytes Subroutine (JSR) Subroutine used to convert a hexadecimal value to 2-digit decimal (also known by HexToDec). A JSL to this routine can be found at $00974C.

Input:
-A: 8-bit value to convert
Output:
-A: 1s digit
-X: 10s digit
$009051 40 bytes Subroutine (JSR) Subroutine used to convert the player's bonus stars from hexadecimal to decimal, and then write them to the status bar. Note that this only writes them as single-tile 8x8 digits, though; the main status bar's code at $008FAF is responsible for later converting these small digits to the 8x16 numbers actually seen in-game.
$009053 3 bytes Layer 3 Change to EAEAEA to get rid of the small bonus stars. Use in conjunction with address $00:9068
$009068 3 bytes Layer 3 Change to EAEAEA to get rid of the small bonus stars. Use in conjunction with address $00:9053
$009079 88 bytes Sprite tilemap related Subroutine that draws the power up item to the item box on the status bar during levels.
$0090AE is the X position of the Item Box item.
$0090B3 is the Y position of the Item Box item.
Note: Those two positions are only graphical. It won't change where the item drops from when select is pressed. To change that, see $028052 and $028060
$0090D1 104 bytes Sprite tilemap related Tile numbers for 'MARIO START' and various similar messages.
$0090EE is for the top half of Time Up.
$009122 is for the bottom half of Time Up.
$009139 98 bytes Sprite tilemap related YXPPCCCT properties for 'MARIO START' and various similar messages.
Change $00913F from 30 to 34 and $009170 from F0 to F4 to fix the S in "Mario/Luigi Start".
$009156 is for the top half of 'TIME UP".
$0091AC 1 byte Misc. Number of coins needed to get an 1up from the green star block.
$0091DB 1 byte ASM Change it to D0 to switch the "Mario/Luigi Start"
$00922F 33 bytes Subroutine (JSR) Routine that uploads the entire palette from $0703 to CGRAM. Note that it first resets $0703 and $0704 to $0000 (i.e. turns color 0 to black).
This routine is called during various loading screens (Nintendo Presents, level load, overworld load, cutscene load, credits load) but not during gameplay.
$009250 51 bytes Subroutine (JSR) Routine that initializes the windowing HDMA parameters. It sets the window to use HDMA channel 7 (or 1, if using SA-1 pack v1.35+) and to use $04A0 as the source. It also initializes that buffer to all $FF00 (i.e. no window is shown).
This is only called on game reset.
$0092AE 2 bytes Misc. The scanline × 2 of the solid lava colour in the Iggy/Larry boss battle.

Change it to $A8,$01 (dw $01A8) to have it begin just where the sprite lava tiles end.
$009329 84 bytes Pointer 16-bit game mode pointers. Indexed by $7E:0100.
$009389 4 bytes Coordinate X position of the "Nintendo Presents" tiles
$00938D 4 bytes Sprite tilemap related "Nintendo Presents" logo tilemap
$0093A5 1 byte Coordinate Y position of "Nintendo Presents" logo
$0093B0 1 byte Sprite tilemap related YXPPCCCT properties for "Nintendo Presents".
$0093C0 5 bytes Sound effect Code responsible for the "Nintendo Presents" logo sound effect.
$0093C1 (1 byte) is the sound effect ID ($01).
$0093C3 (2 bytes) is the port ($1DFC).
$0093C6 1 byte Timer How long "Nintendo Presents" stays on the screen before disappearing.
$0093CB 1 byte Misc. Blinking Nintendo Presents (0F = 0 time, 1F = 1 time, 2F = 2 times, etc)
Also known as Nintendo Presents Brightness (Values use Brightness Register ($0DAE))
$009436 3 bytes Misc. Change from [AD 33 14] to [4C 17 94] to disable the circle fade in from Title screen. Use in conjunction with address $009AAD.
$00943B 1 byte Misc. How fast the circle right before the titlescreen opens. Default value is 04. The higher the value, the faster it opens. Don't go beyond #$19.
$009451 7 bytes Palette Back area colours to use for each castle destruction scene (One byte per movie)
$009459 7 bytes Palette Palette row (in the range 00-07) used by the castle in each castle destruction scene. 1 byte per scene.
$009461 7 bytes Stripe Image Stripe image (index to pointers at $0084D0) to load as the background for each castle destruction scene.
$0094A1 1 byte Music Music Bank that is used for the ending music.
0E = Overworld Music
48 = Level Music
59 = Ending Music
$0094B3 1 byte Music Boss castle destruction sequence music #1
$00950B 1 byte Debug DEBUG: Boss defeated scene select (30 = enable)
$00955F 1 byte Misc. GFX File loaded for Credits font
$009586 4 bytes Level number Which level to use for the Yoshi's House part in the credits. 'A9 28 A0 01'. Do not change A9 and A0. 28 is the low byte of the level (Note: Level number + 24), 01 is the high byte.
$00968E 32 bytes ASM This is the beginning of the code that is executed for game mode 10 (the black period between fadeout from the OW and Mario Start).
$0096A5 is which Layer 1 tile on the overworld will prevent the "Mario Start!" from appearing if the player is on it. (Default is $56, the Yoshi's House tile.)
Change $0096A6 to EA EA to make MARIO START! appear on the Yoshi's house OW tile number, or to 80 03 to make the MARIO START! never appear.
$0096AE 158 bytes ASM This is the code that is executed by game mode 03 (Load title). Game mode 11 (Mario Start) also uses parts of this code. The shared parts starts at $0096D5.

- $0096C4: music bank used for the Title Screen. 0E = Overworld Music, 48 = Level Music, 59 = Ending Music.
- $0096C7: title screen (level C7) music.
- $0096CC: title screen level number + $24.
- $009724: intro screen (level C5) music.
- $009725: changing it to [9C FB 1D] will allow you to change the music for the intro via Lunar Magic.
- $009737: Bowser scene 1 music.
$00974C 4 bytes Subroutine (JSL) JSL wrapper for the HexToDec routine at $009045.
$00980F 2 bytes Coordinate 16-bit X position of Mario when he starts at the Iggy / Larry room. First byte = X lo, second byte = X hi (this byte is not recommended to change).
$009A16 1 byte Coordinate Y lo position of Mario at the start of the Morton/Ludwig/Roy battle.
$009A1F 47 bytes Subroutine (JSR) Writes the Map16 data for Ludwig/Morton/Roy's boss battle room.
$009A40 is what tile the lava tiles in the Morton/Ludwig/Roy battles act like (by default: 05). Only Map16 page 00 is usable.
$009AAD 3 bytes Misc. Change from [A9 33 85] to [4C C0 9A] to disable the circle fade in from Title screen. Use in conjunction with address $009436.
$009AB2 1 byte Misc. Change to [03] to make all layers appear at the same time during titlescreen load.
$009ACB 76 bytes Subroutine (JSR) The cursor routine used in file selection, player selection, and erase file.
$009AD3 - If you change this to EA EA EA, the cursor arrow will never be shown in front of the game-start menus. (It will still act as though it were there, though.)
$009AE4 - SFX that comes up when you select a game at the title screen.
$009AFA - SFX played when you change an option at the title screen and overworld menus.
$009B1D 2 bytes Palette BG Palette for the File Erase screen. Original value is $39C9.
$009BBC 1 byte Sound effect SFX for saving the game.
$009BC9 74 bytes Subroutine (JSL) Save Game function. (Load Game starts around $009CEF. Last byte used in SRAM seems to be $70:0358.) Documentation
$009C1F 69 bytes Controller Mario's movement data on Title Screen.
Format: xx yy xx yy xx yy [...] $FF
The XXs is the value to store to $15, except that the Select flag (#$20) is instead used to tell if the XY flag (#$40) should be masked away from $16 (if it's set, that bit is stored to $16 unchanged; if clear, that bit is masked away. All other bits are stored to $16.)
The YYs is how long to keep that value there. Setting an XX to $FF ends it.
$009C6A 1 byte ASM Change to 80 to open save game menu without pressing a button or Title Screen Playing.
$009C82 3 bytes ASM Change to [EA A9 00] to remove title screen movement. Title screen will not loop.
$009C87 1 byte ASM Change D0 (BNE) to 80 (BRA) to never make the titlescreen loop.
$009C9F 4 bytes ASM Change from 22 00 80 7F to EA EA EA EA to disable sprites from disappearing on the title screen when pressing a button (opening file select menu)
$009CA9 1 byte Misc. Display following layers: ---o4321. o = sprite layer, 4 = layer 4 (unused), 3 = layer 3 (no effect however), 2 = layer 2, 1 = layer 1. Clear the corresponding bits for these layers to not make them display on file select screen load.
$009CAD 3 bytes ASM Change '9C 9F 0D' to 'EA EA EA', and, if you happened to have a HDMA effect in the titlescreen, it will not be disabled when you go to the File Menu.
$009CB1 1 byte Level number Determines the low byte of the intro level number. Subtract 0x24 for the actual low byte (by default, E9-24=C5, meaning level C5, or possibly 1C5 with Lunar Magic's Display Level Message 1 fix). Change to [00] to skip the intro level and warp to the overworld immediately.
$009CCB 3 bytes Misc. SRAM starting addresses for each of the three save files, high byte.
$009CCE 3 bytes Misc. SRAM starting addresses for each of the three save files, low byte.
$009CD4 2 bytes Palette BG Palette for File and Player Select screens. Original value is $7393.
$009CD7 4 bytes Sprite tilemap related Y displacement for tiles in the first shared GFX routine ($019CF3).
$009CDB 24 bytes Sprite tilemap related Properties for tiles in the first shared GFX routine ($019CF3). It's indexed by the value of $05 times 4.
$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.
$00A769 1 byte Misc. How many frames to move Mario when exiting downward from a vertical pipe while with a powerup.
$00A82E 1 byte Misc. GFX File loaded for "MARIO START!", "GAME OVER", etc.
$00A8C3 104 bytes Sprite Misc. 26x4 byte table, Sprite GFX list.
Normal levels can use 00-0F, but the following values have also been observed:
10: [00 00 00 08] Unused?
11: [10 0F 1C 1D] Overworld
12: [00 01 24 22] Morton, Roy, Ludwig
13: [00 01 25 22] Iggy, Larry, Reznor
14: [00 22 13 2D] Castle destruction sequence
15: [00 01 0F 22] Walking home during the credits
16: [00 26 2E 22] Yoshi's House during the credits
17: [21 0B 25 0A] Boss list from the credits
18: [00 0D 24 22] Bowser
19: [2C 30 2D 0E] THE END screen
$00A92B 60 bytes Level data 26x4 byte table, FG/BG GFX list.
Normal levels can use 00-0E, but cutscenes set this to higher values.
$00A96F 28 bytes Level data Submap Foreground Graphics
$00A993 63 bytes Layer 3 Layer 3 GFX28 to 2B upload routine. Pages are uploaded in 64 tile chunks in four passes.
$00A9CD 1 byte Misc. GFX file to use for Nintendo Presents logo
$00AA70 1 byte Misc. GFX file to load special world graphics into
$00AA76 1 byte ASM Change from 10 to 80 to disable the Koopas from using different graphics after the special world is passed
$00AA79 1 byte Sprite tilemap related GFX File loaded for enemies after Special World is passed
$00AB43 1 byte Mode 7 tilemap GFX File loaded for Mode 7 objects
$00AC06 2 bytes Palette Layer 3 Palettes Pointer
$00AC0B 2 bytes Palette Layer 3 Palettes Starting Index
$00AC10 2 bytes Palette Layer 3 Palettes X-Span -1
$00AC15 2 bytes Palette Layer 3 Palettes Y-Span -1
$00AC1D 2 bytes Palette Foreground/Sprite Palettes Pointer
$00AC22 2 bytes Palette Foreground/Sprite Palettes Starting Index
$00AC27 2 bytes Palette Foreground/Sprite Palettes X-Span -1
$00AC2C 2 bytes Palette Foreground/Sprite Palettes Y-Span -1
$00AC3C 2 bytes Palette Back Area Colours Pointer
$00AC42 2 bytes Palette Tileset Specific FG Palettes Pointer
$00AC59 2 bytes Palette Tileset Specific FG Palettes Starting Index
$00AC5E 2 bytes Palette Tileset Specific FG Palettes X-Span -1
$00AC63 2 bytes Palette Tileset Specific FG Palettes Y-Span -1
$00AC6B 2 bytes Palette Tileset Specific Sprite Palettes Pointer
$00AC82 2 bytes Palette Tileset Specific Sprite Palettes Starting Index
$00AC87 2 bytes Palette Tileset Specific Sprite Palettes X-Span -1
$00AC8C 2 bytes Palette Tileset Specific Sprite Palettes Y-Span -1
$00AC94 2 bytes Palette Layer 2 Background Palettes Pointer
$00ACAB 2 bytes Palette Layer 2 Background Palettes Starting Index
$00ACB0 2 bytes Palette Layer 2 Background Palettes X-Span -1
$00ACB5 2 bytes Palette Layer 2 Background Palettes Y-Span -1
$00ACBD 2 bytes Palette Layer 1 Berry Palettes Pointer
$00ACC2 2 bytes Palette Layer 1 Berry Palettes Starting Index
$00ACC7 2 bytes Palette Layer 1 Berry Palettes X-Span -1
$00ACCC 2 bytes Palette Layer 1 Berry Palettes Y-Span -1
$00ACD4 2 bytes Palette Berry Sprite Palettes Pointer
$00ACD9 2 bytes Palette Berry Sprite Palettes Starting Index
$00ACDE 2 bytes Palette Berry Sprite Palettes X-Span -1
$00ACE3 2 bytes Palette Berry Sprite Palettes Y-Span -1
$00AD1E 7 bytes Palette Palette IDs to use for each submap
$00AD28 2 bytes Palette Overworld Map Layer 2 Palettes Pointer
$00AD30 2 bytes Palette Overworld Map Layer 2 Palettes Pointer (Special World Passed)
$00AD4D 2 bytes Palette Overworld Map Layer 2 Palettes Starting Index
$00AD52 2 bytes Palette Overworld Map Layer 2 Palettes X-Span -1
$00AD57 2 bytes Palette Overworld Map Layer 2 Palettes Y-Span -1
$00AD5F 2 bytes Palette Overworld Map Layer 1 Palettes Pointer
$00AD64 2 bytes Palette Overworld Map Layer 1 Palettes Starting Index
$00AD69 2 bytes Palette Overworld Map Layer 1 Palettes X-Span -1
$00AD6E 2 bytes Palette Overworld Map Layer 1 Palettes Y-Span -1
$00AD76 2 bytes Palette Overworld Map Sprite Palettes Pointer
$00AD7B 2 bytes Palette Overworld Map Sprite Palettes Starting Index
$00AD80 2 bytes Palette Overworld Map Sprite Palettes X-Span -1
$00AD85 2 bytes Palette Overworld Map Sprite Palettes Y-Span -1
$00AD8D 2 bytes Palette Overworld Map Layer 3 Palettes Pointer
$00AD92 2 bytes Palette Overworld Map Layer 3 Palettes Starting Index
$00AD97 2 bytes Palette Overworld Map Layer 3 Palettes X-Span -1
$00AD9C 2 bytes Palette Overworld Map Layer 3 Palettes Y-Span -1
$00ADA9 2 bytes Palette Title Screen Layer 3 Palettes (Row 1) Pointer
$00ADAE 2 bytes Palette Title Screen Layer 3 Palettes (Row 1) Starting Index
$00ADB3 2 bytes Palette Title Screen Layer 3 Palettes (Row 1) X-Span -1
$00ADB8 2 bytes Palette Title Screen Layer 3 Palettes (Row 1) Y-Span -1
$00ADC0 2 bytes Palette Title Screen Layer 3 Palettes (Row 2) Pointer
$00ADC5 2 bytes Palette Title Screen Layer 3 Palettes (Row 2) Starting Index
$00ADCA 2 bytes Palette Title Screen Layer 3 Palettes (Row 2) X-Span -1
$00ADCF 2 bytes Palette Title Screen Layer 3 Palettes (Row 2) Y-Span -1
$00AE16 1 byte Misc. [02] Sprite Palette setting for Morton, Ludwig, Roy, Reznor, and Bowser battles
$00AE1B 1 byte Misc. [07] FG Palette setting for Morton, Ludwig, Roy, Reznor, and Bowser battles
$00AF35 4 bytes ASM Change to 4C 91 B0 EA to completely disable the fade-out only when beating a level. (USE WITH $00:B091).
$00AF39 1 byte ASM Change to 80 to completely disable the fade-out when beating a level. Warning: Boss fights including Reznor will glitch out and not send you back to the overworld when doing this.
$00AFBA 3 bytes Misc. Change from B9 F7 AE [LDA $AEF7,y] to A9 00 00 [LDA #$0000] to disable fading completely, even in boss levels. WARNING: When end level scorecard pops up in boss levels, mode 7 stuff will disappear due to the mode being changed to 1 so layer 3 stuff shows up.
$00B091 15 bytes Empty Unused data.
Change to AD C6 13 F0 FA A5 13 29 03 4C 39 AF to completely disable the fade-out only when beating a level. Does not apply to bosses (USE WITH $00:AF35).
$00B0A0 16 bytes Palette Shared background area colour. Back area colour 0 - 7
$00B0B0 24 bytes Palette BG Palette 0
$00B0C8 24 bytes Palette BG Palette 1
$00B0E0 24 bytes Palette BG Palette 2
$00B0F8 24 bytes Palette BG Palette 3
$00B110 24 bytes Palette BG Palette 4
$00B128 24 bytes Palette BG Palette 5
$00B140 24 bytes Palette BG Palette 6
$00B158 24 bytes Palette BG Palette 7
$00B170 16 bytes Palette Palette 0 colours 8-F in levels.
$00B180 16 bytes Palette Palette 1 colours 8-F in levels.
$00B190 12 bytes Palette Palette 2 colours 2-7, FG Palette 0, in levels.
$00B19C 12 bytes Palette Palette 3 colours 2-7, FG Palette 0, in levels.
$00B1A8 12 bytes Palette Palette 2 colours 2-7, FG Palette 1, in levels.
$00B1B4 12 bytes Palette Palette 3 colours 2-7, FG Palette 1, in levels.
$00B1C0 12 bytes Palette Palette 2 colours 2-7, FG Palette 2, in levels.
$00B1CC 12 bytes Palette Palette 3 colours 2-7, FG Palette 2, in levels.
$00B1D8 12 bytes Palette Palette 2 colours 2-7, FG Palette 3, in levels.
$00B1E4 12 bytes Palette Palette 3 colours 2-7, FG Palette 3, in levels.
$00B1F0 12 bytes Palette Palette 2 colours 2-7, FG Palette 4, in levels.
$00B1FC 12 bytes Palette Palette 3 colours 2-7, FG Palette 4, in levels.
$00B208 12 bytes Palette Palette 2 colours 2-7, FG Palette 5, in levels.
$00B214 12 bytes Palette Palette 3 colours 2-7, FG Palette 5, in levels.
$00B220 12 bytes Palette Palette 2 colours 2-7, FG Palette 6, in levels.
$00B22C 12 bytes Palette Palette 3 colours 2-7, FG Palette 6, in levels.
$00B238 12 bytes Palette Palette 2 colours 2-7, FG Palette 7, in levels.
$00B244 12 bytes Palette Palette 3 colours 2-7, FG Palette 7, in levels.
$00B250 12 bytes Palette Palette 4 colours 2-7 in levels.
$00B25C 12 bytes Palette Palette 5 colours 2-7 in levels.
$00B268 12 bytes Palette Palette 6 colours 2-7 in levels. Colour 4 will be overwritten in levels, but not in boss rooms.
$00B274 12 bytes Palette Palette 7 colours 2-7 in levels.
$00B280 12 bytes Palette Palette 8 colours 2-5 in levels, the last four bytes (colours 6-7) are only available during the Nintendo Presents logo; after that, they are overwritten by the first two colours from Mario's palette.
$00B28C 12 bytes Palette Palette 9 colours 2-7 in levels.
$00B298 12 bytes Palette Ludwig palette, and palette A colours 2-7 in levels.
$00B2A4 12 bytes Palette Roy palette, and palette B colours 2-7 in levels.
$00B2B0 12 bytes Palette Palette C colours 2-7 in levels.
$00B2BC 12 bytes Palette Morton palette, and palette D colours 2-7 in levels
$00B2C8 20 bytes Palette Mario Palette
$00B2DC 20 bytes Palette Luigi palette. Colours 6-F of palette 8 while small, big, or caped Luigi.
$00B2F0 20 bytes Palette Fire Mario's palette
$00B304 20 bytes Palette Fire Luigi palette. Colours 6-F of palette 8 while fire Luigi.
$00B318 24 bytes Palette Sprite palette 0, loaded to palettes E and F.
$00B330 24 bytes Palette Sprite palette 1, loaded to palettes E and F.
$00B348 24 bytes Palette Sprite Palette 2, loaded to palettes E and F.
$00B360 24 bytes Palette Sprite palette 3, loaded to palettes E and F.
$00B378 24 bytes Palette Sprite palette 4, loaded to palettes E and F.
$00B390 24 bytes Palette Sprite palette 5, loaded to palettes E and F.
$00B3A8 24 bytes Palette Sprite palette 6, loaded to palettes E and F.
$00B3C0 24 bytes Palette Sprite palette 7, loaded to palettes E and F.
$00B3D8 14 bytes Palette YI Overworld Palette 4, Colours 1-7
$00B3E6 14 bytes Palette YI Overworld Palette 5, Colours 1-7
$00B3F4 14 bytes Palette YI Overworld Palette 6, Colours 1-7
$00B402 14 bytes Palette YI Overworld Palette 7, Colours 1-7
$00B410 14 bytes Palette Main Overworld Palette 4, Colours 1-7
$00B41E 14 bytes Palette Main Overworld Palette 5, Colours 1-7
$00B42C 14 bytes Palette Main Overworld Palette 6, Colours 1-7
$00B43A 14 bytes Palette Main Overworld Palette 7, Colours 1-7
$00B448 14 bytes Palette Star World Overworld Palette 4, Colours 1-7
$00B456 14 bytes Palette Star World Overworld Palette 5, Colours 1-7
$00B464 14 bytes Palette Star World Overworld Palette 6, Colours 1-7
$00B472 14 bytes Palette Star World Overworld Palette 7, Colours 1-7
$00B480 14 bytes Palette Vanilla Dome/Bowser's Valley Overworld Palette 4, Colours 1-7
$00B48E 14 bytes Palette Vanilla Dome/Bowser's Valley Overworld Palette 5, Colours 1-7
$00B49C 14 bytes Palette Vanilla Dome/Bowser's Valley Overworld Palette 6, Colours 1-7
$00B4AA 14 bytes Palette Vanilla Dome/Bowser's Valley Overworld Palette 7, Colours 1-7
$00B4B8 14 bytes Palette Forest of Illusion Overworld Palette 4, Colours 1-7
$00B4C6 14 bytes Palette Forest of Illusion Overworld Palette 5, Colours 1-7
$00B4D4 14 bytes Palette Forest of Illusion Overworld Palette 6, Colours 1-7
$00B4E2 14 bytes Palette Forest of Illusion Overworld Palette 7, Colours 1-7
$00B4F0 14 bytes Palette Special World Overworld Palette 4, Colours 1-7
$00B4FE 14 bytes Palette Special World Overworld Palette 5, Colours 1-7
$00B50C 14 bytes Palette Special World Overworld Palette 6, Colours 1-7
$00B51A 14 bytes Palette Special World Overworld Palette 7, Colours 1-7
$00B552 14 bytes Palette Palette 5 colours 9-F.
$00B560 14 bytes Palette Palette 6 colours 9-F.
$00B56E 14 bytes Palette Palette 7 colours 9-F.
$00B5DE 16 bytes Palette Contains the colors for the flashing lightning in Valley of Bowser.
$00B60C 16 bytes Palette Colours used in animation of Yoshi coin and yellow map spot. ($02DF,$035F,$27FF,$5FFF,$73FF,$5FFF,$27FF,$035F)
$00B61C 16 bytes Palette Colors used in the animation of the red map spot.
($01BF,$001F,$001B,$0018,$0018,$001B,$001F,$01BF)
$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 8 bytes Level number The level numbers that triggers the seven castle destruction sequences and the credits scene. The first byte is for scene 1, the second is for scene 2, and so on, while the last byte is for the level which triggers the credits (specifically, as Front Door; back door can be found 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: Change from [$80] to [$F0] to enable free roam mode. When enabled, hold A and press L to cycle the mode between normal, P-speed, and no-clip. See $7E1E01 for more details.
$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.
$00CDA9 4 bytes Misc. Mario riding on Yoshi animations
$00CDC5 1 byte Misc. Animation frame for Mario crouching on Yoshi
$00CDF6 131 bytes Subroutine (JSR) L & R scrolling routine.
Change $00CDFC from D0 to 80 to disable L & R scrolling. Or change to [EA EA] to allow scrolling even if the player is holding multiple buttons (works best if $00CE12 is set to 01).
$00CE12 is the number of frames L or R must be held before screen scrolling occurs.
$00CE40 is the screen scroll sound effect.
$00CE99 8 bytes Mario tilemap Spin Jump frame table
(00 00 - Mario Standing - Small - Big)
(25 44 - Mario Back to Screen - Small - Big)
(00 00 - Same as first)
(0F 45 - Mario Facing Screen - Small - Big)

They are indexed by the frame counter.
$00CEA1 8 bytes Mario tilemap Spinjump direction table.
$00CEA9 8 bytes Mario tilemap Cape spin cape image table.

These are run while spin jumping with a cape or doing a spin attack. Only these four cape images ($02,$07,$06,$09) seem to work with cape contact, and will only work if RAM $14A6 is above zero.
$00CEB1 387 bytes Subroutine (JSL) The code that updates the player and cape poses, and sets them to $13E0 and $13DF. It also updates certain other related things such as flipping mario's direction when spinjumping.
$00CEBE 1 byte Mario physics Amount of frames to show the cape at highest altitude frame. (After, for example, a spin-jump has been done.)
$00CF42 1 byte Mario physics Power-up that can attack with both cape spin and spin jump
$00CF75 1 byte Mario tilemap [3F] Mario shooting fireball on ground pose.
$00CF7B 1 byte Mario tilemap [16] Mario shooting fireball in air pose.
$00CF7F 1 byte Mario tilemap [0E] Pose for Mario kicking. For a list of valid values, see $13E0.
$00CF90 1 byte Mario tilemap [0F] Mario turning around while holding item pose.
$00CFCA 1 byte Controller Which button to press to look up. (Look at Ram Address $7E:0015 for values).
$00CFCB 1 byte Mario physics Change from [F0] to [80] to disable looking up.
$00CFCE 1 byte Mario tilemap This is the player looking up pose, the default is #$03.
$00D034 8 bytes Mario physics Cape Collision X (Horizontal) Offsets: Two bytes for right and left, on ground and in air.

The first two sets are for when Mario is on the ground while spinning ($0C,$00- right; $F4,$FF left), and the second two are while he is in the air ($08,$00 - right; $F8,$FF - left)

The first byte in each set determines the position per pixel, the second sets whether it is in front or behind him ($FF is behind, $00 is in front) Use $FF-$80 for the behind byte($FF), and $00-$79 for the in front byte ($00)

This does not effect the image offsets.
$00D03C 8 bytes Mario physics Cape Collision Y (Vertical) Offsets: 2 bytes for right and left, on ground and in air.

The first two sets are for when Mario is on the ground while spinning ($10,$00 - right; $10,$00 - left), and the second two are while he is in the air ($02,$00 - right; $02,$00 - left)

The first byte in each set determines the position per pixel, the second sets whether it is above him or below him ($FF is below his feet, $00 is from his feet up) Use $FF-$80 for the below byte ($FF), and $00-$79 for the above byte ($00)

This does not effect the image offsets.
$00D044 30 bytes Mario physics Routine that does the actual calculation for cape-interaction. Uses the two tables at $00:D034 and $00:D03C.
$00D062 31 bytes Subroutine (JSR) Cape Swing routine.
$00:D065 controls which power-up the player needs to have to be able to cape spin.
Change $00:D067 to 00 to make mario cape spin in all forms.
$00:D077 controls how long Cape Spin lasts.
$00:D07C controls the cape spin sound effect to generate.
$00D081 45 bytes Subroutine (JSR) Fireball throwing routine.
$00D082 is the power-up that can throw fireballs.
Change $00D084 to 00 to let Mario throw fireballs in all forms.
Change $00D085 from A5 73 to A9 00 to enable throwing fireballs while ducking.
Change $00D087 from 0D 7A 18 to EA EA EA to enable throwing fireballs while on Yoshi.
Change $00D08A to 80 do disable throwing fireballs.
Change $00D093 from F0 to 80 to disable throwing fireballs while spin jumping.
$00D0B9 1 byte Mario tilemap Mario death pose (uses RAM $13E0)
$00D0D5 3 bytes ASM Set 9C C1 0D to EA EA EA in order to not lose Yoshi on the OW when you fall down a pit when on top of Yoshi.
$00D0D8 3 bytes ASM ASM that handles losing lives. Change to [EA EA EA] to not lose a life after dying. Change to [80 03 EA] to always go to the Game Over screen when dying.
$00D0DE 1 byte Music Game Over music
$00D0F1 1 byte ASM ASM that handles the 'TIME UP!' message. Change 'D0' to '80' to disable it.
$00D0F8 10 bytes Misc. Controls timer for TIME UP/GAME OVER message. Change $00D0F9 from C0 to 00 to remove the animation, and change $00D0FE from FF to whatever you want to shorten the timer (however, 00 is as long as FF; 01 is the shortest).
$00D11A 1 byte ASM Change [85] to [60] and Mario will not flip X-wise when he dies.
$00D11D 12 bytes Mario tilemap Mario Shrinking Animation poses (uses RAM $13E0).
$00D141 1 byte Timer How long flashing invincibility (when you get hit) lasts
$00D156 5 bytes ASM Change to EE E4 18 EA 64 to turn the Mushroom into a 1up, but it'll still play the animation
$00D18D 6 bytes Mario physics Speed at which Mario enters/exits a pipe.
The first two bytes are horizontal speed when entering/exiting a horizontal pipe.
The next two bytes are both horizontal speed in vertical pipes, and vertical speed in horizontal pipes.
The last two are the vertical speed in vertical pipes.
$00D1AE 1 byte Misc. Animation frame for Mario entering horizontal pipe on Yoshi
$00D20A 1 byte Mario tilemap Mario's pose for entering a vertical pipe (Default is 0F - facing screen)
$00D229 1 byte Misc. Animation frame for Mario entering vertical pipe on Yoshi
$00D231 5 bytes Mario tilemap Change (A9 02 8D F9 13) to EA EA EA EA EA to remove Mario's priority when he's going into a pipe.
$00D255 1 byte Sound effect Mario emerge from vertical pipe Sound Effect.
$00D2BD 16 bytes Mario physics Mario's jump height. The earlier ones are when Mario is moving slowly (or standing still); the latter is when he's moving faster. Even entries are normal jump, odd are spin. Formula
$00D2CD 60 bytes Mario physics Player deceleration table for each type of slope, in the order of $13E1. This table contains two 16-bit values for each slope type to accelerate/decelerate the player towards the slope's base speed (see $00D5C9). The first value is used when the X speed is above the slope's base speed (so decrease the player's X speed) while the second is used when below the slope's base speed (so increase it).

The first two entries of this table (for flat ground) are also used when Mario is swimming as well. Additionally, they get used when the player is not on the ground, but is above their maximum X speed and left/right is being held.

When on the ground in a slippery level, the table at $00D309 is used instead.
$00D309 60 bytes Mario physics Player deceleration table in slippery levels for each type of slope. For more details on its format, see its non-slippery variant at $00D2CD.
$00D345 104 bytes Mario physics Accelerations for Mario in a non-slippery level, or in a slippery level while in midair.
The table is split into sets of four 16-bit values each, in the order of $13E1. The values in these sets are ordered as: walking (no X/Y) left, running (X/Y held) left, walking right, running right.
$00D3AD 16 bytes Mario physics Accelerations for Mario when flying.
Consists of 16-bit values in two sets (facing left/right) of two groups (moving left/right) with two values each (no X/Y and X/Y held).
$00D3BD 24 bytes Mario physics Sliding accelerations on slopes in a non-slippery level.
Each value is 16-bit, in the same order as $13E1 (excluding flat ground).
$00D3D5 104 bytes Mario physics Turning decelerations for Mario in a non-slippery level, or in a slippery level while in midair.
The table is split into sets of four 16-bit values each, in the order of $13E1. The values in these sets are ordered as: walking (no X/Y) left, running (X/Y held) left, walking right, running right.
$00D43D 104 bytes Mario physics Accelerations for Mario in a slippery level.
The table is split into sets of four 16-bit values, in the order of $13E1. The values in these sets are ordered as: walking (no X/Y) left, running (X/Y held) left, walking right, running right.
$00D4B5 24 bytes Mario physics Sliding accelerations on slopes in a slippery level.
Each value is 16-bit, in the same order as $13E1 (excluding flat ground).
$00D4CD 104 bytes Mario physics Turning decelerations for Mario in a slippery level.
The table is split into sets of four 16-bit values, in the order of $13E1. The values in these sets are ordered as: walking (no X/Y) left, running (X/Y held) left, walking right, running right.
$00D535 104 bytes Mario physics Mario's maximum X speeds on flat ground and on slopes.
The table consists of sets of 8 bytes, in the order of $13E1. Each of these sets then consists of four groups of two bytes each (for max left and max right), in the order: walking, running, running fast, sprinting.

The "running fast" values get used when running faster than #$23 (defined at $00D723) and either on the ground or shot out of a diagonal pipe.
$00D59D 16 bytes Mario physics Mario's maximum X speeds while flying. The first 8 bytes are facing right, the second 8 are facing left.
Each of these sets are split into four groups of two bytes each (for maximum left and right speeds). Only the first two groups are actually used, for flying without X/Y and flying with X/Y respectively.
Also, in case it's not clear, the maximum speeds in the direction opposite of Mario's are from pressing that direction with B to slow down (e.g. <+B when facing right).
$00D5AD 16 bytes Mario physics Mario's maximum X speeds in water.
The first set of 8 bytes is for when Mario isn't carrying an item, while the second set is with one. Each set consists of four groups of two bytes each (for max left and max right), in the order: on ground, swimming, on ground in a tide, swimming in a tide.
$00D5BD 12 bytes Mario physics Mario's maximum X speeds when sliding down slopes with the down button. In the order of $13E1, without flat ground or flying included.
$00D5C9 26 bytes Mario physics Base X speeds (16-bit) for the player when standing on each type of slope, in the order of $13E1. When the player is standing on a slope without holding left or right, the game will accelerate/decelerate them towards the slope's corresponding value here. See $00D2CD for corresponding acceleration speeds.
$00D5E7 2 bytes Mario physics Value added to the player's X speed as they're floating in water freely in a level where a Layer 3 tide is active. The value is 16-bit, with the high byte corresponding to Mario's regular X speed ($7B), and the low byte corresponding to the accumulating fraction bits ($7A).
$00D5E9 2 bytes Mario physics Value added to the player's X speed as they're in water and on the ground in a level where a Layer 3 tide is active. The value is 16-bit, with the high byte corresponding to Mario's regular X speed ($7B), and the low byte corresponding to the accumulating fraction bits ($7A).
$00D603 1 byte Controller Which button to press to duck. Format: byetUDLR; b = A or B; y = X or Y; e = select; t = Start; U = up; D = down; L = left, R = right.
$00D604 1 byte ASM Change from F0 (BEQ) to 80 (BRA) to disable ducking.
Note that setting $01EB16 to [EA EA A5 73] (NOP #2 : LDA $73) is a good idea if you're using this.
$00D61C 2 bytes ASM Change from 30 12 to EA EA to disable jumping.
$00D63E 1 byte ASM Change from 10 to 80 to disable Spin Jump.
$00D644 1 byte Mario physics [19] Change to [00] to allow Mario to spin jump while carrying an item. Because Mario spins so fast, the animation will not be smooth.
$00D645 1 byte ASM Change this from "1A" to "60" to disable spin jumping. Unlike 0583E (SNES $00:D63E) from "10" to "80", changing this address does not make the "A" button do the regular jump, but it disables spin jumping altogether. This way, you can use the "A" button for something else without it jumping automatically.

Note: Still allows you to spinjump out of the water and dismount Yoshi.
$00D64A 1 byte Misc. Spin Jump Sound, uses bank 1DFC.
$00D65E 10 bytes ASM Mario jumping routine. (Sound effect + store to Mario Y speed.)
$00D65F is the Sound effect for Mario jumping. $00D661 is the bank for the sound effect. By default it uses $1DFA, but you can make it use $1DFC by changing $00D661 to FC or $1DF9 by changing it to F9.
$00D66F 1 byte Mario physics Change to 80 to disable Cape Flight and Jumping High while dashing. Interestingly enough, changing it to A9 will make Mario do a dash jump with every jump, even at a standstill, and will allow him to gain speed in the air. In addition, doing so will have the effect of causing every Jump performed by Cape Mario to become a Cape Flight.
$00D674 1 byte Mario physics [D0] Change to 80 to prevent the player from flying with a cape. The player will still be able to float, cape-spin, and jump higher when running but will never "take off".
$00D677 1 byte Mario physics Mario fly time
$00D707 1 byte Mario tilemap [0D] Mario's turning(skidding) pose
$00D717 1 byte ASM Change [50] to [80] to disable running and cause Mario to never run. The Y (or X) button will not cause Mario to run. This does not affect other uses of the Y button, like shooting fireballs or carrying sprites.
$00D718 1 byte Mario physics Change [1E] to [00] to cause Mario to always run, as if the Y button is always down. This does not affect other uses of the Y button, like shooting fireballs or carrying sprites. Also, Cape Mario will still need the Y button to fly.
$00D72C 1 byte Misc. Number of frames Mario should continue to show his running frames for after jumping.
$00D7A5 3 bytes Mario physics Gravity. The first byte is when not holding B (or A), the second is gravity when holding B/A, and the third is when riding on a winged Yoshi.
$00D7AF 1 byte Mario physics Falling maximum speed (without button held)
$00D7B0 1 byte Mario physics Falling maximum speed with button held
$00D7B9 1 byte Mario physics The speed at which Mario falls with a cape. Set it lower to make him float slower, higher to float faster, and over D0 to enable unlimited jumping in midair with the cape.
$00D7BA 1 byte Mario physics Flight acceleration (added to y speed)
$00D7C8 7 bytes Mario physics Maximum falling speed for cape mario, index by RAM address $1407 (cape phase).
$00D7CF 6 bytes Mario physics cape speed
$00D805 1 byte Mario physics Power-up that can fly
$00D8EA 1 byte Misc. power-up that can float (cape by default)
$00D905 1 byte Mario physics change to 16 = Raccoon Mario (floating if you tap Y instead of holding it)
$00D909 1 byte Mario physics Time until you stop floating after you have pressed B while while in the air with a cape.
$00D972 1 byte Mario physics Change to 00 to disable sprinting after running on the ground for a long period of time. Note that cape flight will also be disabled as a consequence.
$00D998 1 byte ASM Change this from [F0] (BEQ) to [80] (BRA) so that when the player is carrying an item while swimming, his Y speed won't be affected (the player will sink normally). Also, if you change this to [D0] (BNE), the player will float if carrying nothing and sink if carrying an item.
$00D9D0 1 byte Mario physics Maximum sinking speed of player when holding an item while swimming. When adjusting this value, it's recommended that it's equal to x5BD4. Format of RAM $7E007D.
$00D9D4 1 byte Mario physics Maximum sinking speed of player when holding an item while swimming. When adjusting this value, it's recommended that it's equal to x5BD0. Format of RAM $7E007D.
$00D9D8 1 byte Mario physics Maximum rising speed of player when holding an item while swimming. When adjusting this value, it's recommended that it's equal to $00D9DC. Format of RAM $7E007D.
$00D9DC 1 byte Mario physics Maximum rising speed of player when holding an item while swimming. When adjusting this value, it's recommended that it's equal to x5BD8. Format of RAM $7E007D.
$00DA37 1 byte ASM Change to 80 to disable ducking underwater, can be used in conjunction with $00D604 hex edit.
$00DA55 84 bytes Mario physics Mario's horizontal water interaction routine.
$00DA8E 1 byte Mario tilemap Shooting fireball while swimming pose. Default is #$18 (Swimming pose 3)
$00DAAA 1 byte Sound effect Sound effect that plays when you press the button to swim
$00DAB7 1 byte Mario physics Vine climbing speed 1 (right and down)
$00DAB9 1 byte Mario physics Vine climbing speed 2 (left and up)
$00DB9A 1 byte ASM [10] Change to 80 to disable jumping while climbing.
$00DBA6 1 byte Sound effect Sound effect to play when jumping while climbing. The bank it stores to is located at $00DBA8 [$1DFA by default] and can be changed to $1DF9 or $1DFC.
$00DBB3 1 byte Sound effect Sound effect played when Mario hits a net. (1DF9)
$00DC2D 75 bytes Mario physics Routine that updates the player's X and Y position ($94/$13DA and $96/$13DC) using their X and Y speed ($7B and $7D).

The player's speed is actually measured in units of "subpixels" corresponding to 1/16th of a full pixel. So a speed of $10 will increase his position by 1 pixel per frame, while a speed of $08 will increase his position by 1 pixel every 2 frames.
$00DC78 4 bytes Misc. Number of animation frames to use for walking/running Mario, indexed by Mario's status.

Ex: db $01,$02,$02,$02 The first byte it for small Mario, next is Super (Big) Mario, then Cape Mario, and finally Fire Mario. $01 means 2 frames for small Mario and $02 means 3 frames for the others. Longer animations are possible, but that'd require moving stuff around in $13E0, which hasn't been researched yet.
$00DC7C 112 bytes Mario tilemap Animation rates for both Mario's run animation and his cape animation (as it's flapping in the "wind" from running).
Indexed by the absolute value of Mario's X speed divided by 8, plus $13E5 (which holds a multiple of 8).

Index = |MarioXSpeed| / 8 + $13E5
Byte structure
$00DD4E 228 bytes Mario tilemap X positions of Mario's tiles in various poses, two bytes per tile.
$00DDDE 2 bytes Mario tilemap X offset of cape when climbing.
$00DE32 228 bytes Mario tilemap Y positions of Mario's tiles in various poses, two bytes per tile.
$00DEC2 2 bytes Mario tilemap Y offset of cape when climbing.
$00DF16 4 bytes Mario tilemap Tileset to use for Mario, paged by status ($7E0019)
$00DF1A 70 bytes Pointer Tile expansion pointer table (Small Mario)
$00DF60 122 bytes Pointer Tile expansion pointer table (Big Mario)
$00DFDA 50 bytes Mario tilemap Tile expansion table (8x8 tiles in GFX00 used by Mario)
$00E00C 192 bytes Mario tilemap Mario upper tile.
$00E0CC 192 bytes Mario tilemap Mario lower tile.
$00E18C 2 bytes Palette This is a two byte table used to index the player's palette based on the direction the player is facing.
$00E18E 70 bytes Mario tilemap Cape tilemap indices. That table controls the additional tiles used by the cape powerup, indexed by $7E13E0.
$00E1D4 70 bytes Mario tilemap Miscellaneous table to the cape tiles. The values in the table is indexed by $00E18E which in turn is indexed by $7E13E0.

Stored in this order are the hidden tiles flags (see $7E0078 for more information), 3rd player tile / cape image (equivalent to the tile number on page 9 in Lunar Magic), index to the 3rd tile offset, index to the 8x8 tile image (same formula as with 3rd image) and index to 8x8 tile number.

The data has got no clear separation (that is, multiple tilemap data are interleaved) and indices can only be derived from $00E18E.

Note that if the third tile image is loaded, values 0x00 - 0x03 is used together with $7E13DF × 4 as an index to the tables $00E23A and $00E266 instead.
$00E23A 44 bytes Mario tilemap Cape tile map
$00E266 44 bytes Mario tilemap cape offsets
$00E292 16 bytes Misc. Table used to determine when to draw Mario while he is flashing (when being hurt). It's set up so Mario will blink faster as the invulnerability timer gets closer to 0.
Indexed by $1497 divided by 8, it determines how frequently Mario will be drawn on screen (lower values = more frequently), but in some situations he will be drawn nonetheless (specifically, when $9D or $13FB are set).
The values in the table should all be powers of 2.
$00E2D3 1 byte Debug DEBUG: Infinite star (set to 00 to activate)
$00E30D 1 byte Misc. How many palettes to cycle through when Mario/Luigi is invincible, -1
$00E34F 4 bytes Misc. Change to EA EA EA EA (NOP #4) and all forms of Big Mario will not go into the ground a few pixels.
$00E35D 3 bytes ASM Change to $EA,$EA,$EA (NOP #3) to cancel out Mario moving up and down one pixel while walking and running. This is useful if you are using more than three animation frames for walking/running, and thus can be worked into your GFX/tilemap accordingly.
$00E364 1 byte ASM Change to $80 (BRA) to disable Mario from being offset vertically by one pixel while running on the wall (using the purple triangles). This should be combined with $00E34F and $00E35D for the complete effect.
$00E3AA 1 byte Misc. Which animation frame value to start pulling tilemaps from the size-independent table
$00E3FE 1 byte Misc. power-up that shows the cape graphics
$00E4B9 33 bytes Misc. Values stored to $13E1 for each slope tile.

Rather than being indexed by the tile's Map16 tile number, this table is instead indexed based on the actual slope tile used; for instance, gradual slopes have 8 tiles (4 left-facing and 4 right-facing) whereas normal slopes have 4 (2 left-facing and 2 right-facing). The slopes in the table by index are:
00 - Gradual
08 - Normal
0C - Steep
0E - Purple Triangle
10 - Very Steep Ledge-edge (from standard object 13)
12 - Upside-down Steep (unused)
14 - Upside-down Normal (unused)
18 - Conveyors
1C - Very Steep
20 - Flat ground
$00E4DA 33 bytes Mario physics Y speeds to give Mario when standing stationary or walking down on various slope tiles. These values are ordered the same way as $00E4B9.
$00E4FB 33 bytes Mario physics Y speeds to give Mario when moving up various slope tiles (i.e. towards its "peak"). These values are ordered the same way as $00E4B9, though the "flat ground" value is unused.
$00E51C 33 bytes Misc. Sizes of the "top" area on various slope tiles; if Mario is moving downwards while within this distance from the top of the ledge/slope, he will be pushed on top of it. These values are ordered the same way as $00E4B9.
$00E53D 33 bytes Misc. Values stored to $13EE/$15B8 for each slope tile. These values are ordered the same way as $00E4B9, although the upside-down slope values actually do get used (perhaps unintentionally) for fireballs.
$00E55E 106 bytes Misc. Indices to the tables at $00E4B9-$00E53D and $00E632, when in any tileset except 0 and 7 (used for upside-down slopes). This table is indexed by Map16 tile number, for the range 16E-1D7.

An index to this table is stored at $82.
$00E5C8 106 bytes Misc. Indices to the tables at $00E4B9-$00E53D and $00E632, when in tilesets 0 or 7 (used for diagonal pipes). This table is indexed by Map16 tile number, for the range 16E-1D7.

An index to this table is stored at $82.
$00E632 512 bytes Misc. Values stored to $1694 for slopes, to indicate how far the top of the slope is from the top of the actual tile at any given X position; essentially, these values define the actual shape of each slope.

The indices to this table are the same as $00E4B9 (excluding flat ground), except multiplied by #$10 and with the sprite's X position within the tile (from $9A) added to it.
$00E913 12 bytes Mario physics Table of X speeds that conveyors push Mario with. Each 16 bit value refers to one type of conveyor:
- $0001: flat right.
- $FFFF: flat left.
- $0001: up right.
- $0001: down right.
- $FFFF: up left.
- $FFFF: down left.
$00E91F 12 bytes Mario physics Table of Y speeds that conveyors push Mario with. Each 16 bit value refers to one type of conveyor:
- $0000: flat right.
- $0000: flat left.
- $FFFF: up right.
- $0001: down right.
- $FFFF: up left.
- $0001: down left.
$00EA08 3 bytes ASM Change [20 29 F6] to [EA EA EA] (JSR $F629 to NOP NOP NOP) to prevent the player from getting killed when stuck in a block, such as a cement block. Instead, they will get thrown downwards.
$00EA82 1 byte Mario physics [10] Change to 80 to disable spin jumping from water
$00EA8E 1 byte Sound effect Mario spin-jump from water sound effect.
$00EA9C 1 byte Mario tilemap Mario's pose as he comes out of the water.
$00EAA0 1 byte Mario physics How high Mario can jump out of the water.
$00EAC1 26 bytes Objects Table of which slope tiles on Map16 page 1 are in water.
$00EB79 2 bytes ASM Change to A9 00 to make Super/Fire/Cape Mario have a 16x16 interaction field (like Small Mario) or change it to A9 01 to have a 16x32 interaction field (like big Mario) (in conjunction with addresses $01B4C0 and $03B67C)
$00EBDD 68 bytes Mario physics Door interaction routine. Handles boss doors, normal doors and p-switch doors.

$00EBDE: The Map16 tile of a door which can be entered from any position if touched (used for the large castle door).
$00EBE5: The tileset where the castle door is enterable.
$00EBE9: The Map16 tile number for the normal door (independent of power up and p-switch).
$00EBED: The Map16 tile number for the small door (enterable when not big, independent of p-switch).
$00EBF6: The Map16 tile number for the p-switch door (independent of power up, p-switch must be active).
$00EBFA: The Map16 tile number for the small p-switch door (enterable when not big, p-switch must be active).
$00EBFD: Code that checks Mario's powerup state when entering doors. Change to [80 02] (BRA $02) to allow small doors can be entered even if Mario is big, and normal doors to be entered even if riding Yoshi.
$00EC01: Checks whether Mario is centered enough to enter a non-boss door. Replace it with [$80,$03] to disable this behaviour.
$00EC09: Replace it with [$00] to allow doors to be enterable in the air.
$00EC10: Sound effect to play. $00EC11 (8-bit) is the SFX ID and $00EC13 (16-bit) is the SFX port. See $7E1DF9 to $7E1DFC for more details

Note: All the Map16 tiles must be located on page 0.
$00EC0B 1 byte Controller Change from 16 to 15 to allow Mario to enter doors by holding up, instead of just pressing it.
$00EC0D 1 byte Controller What button to press to activate a door. Format of $7E0015. (byetUDLR)
$00EC11 1 byte Sound effect Entering Door Sound Effect.
$00EC64 11 bytes Mario physics Code that makes munchers and spikes not to hurt the player if the player's hitbox on the left or right side of the block is next to them. This essentially reduce the hitbox the block by 1 pixel so that it requires the player to move into them to trigger damage. Code
$00EE69 2 bytes ASM Change to EA EA (NOP #2) if you want Small Mario to be able to break turn blocks with a spin jump. Alternatively, change this address to 80 18 (BRA $18) if you want turn blocks to not be breakable by spin jumps.
$00EE79 1 byte Objects Controls which (page 1) tile activates the brown creating/eating block sprite when stood on. Note that a few tiles are handled before this and can not trigger this effect.
$00EEB2 1 byte Objects Change from 1E to 04 (BNE jumps to $00EEB7 instead of $00EED1) to make it possible to trigger already triggered switch palace switches, as opposed to them randomly becoming solid for no obvious reason.

Note that this only applies to switches inserted using Direct Map16; switches inserted as extended objects will still disappear.
$00EEF6 1 byte Mario physics Change this to [80] to disable sliding on slopes. The slide will instead be changed to ducking like on flat terrain
$00EEF8 3 bytes ASM Change to [EA A9 00] to enable sliding while holding an item.
$00EF01 1 byte Mario tilemap [1C] Mario sliding pose.
$00F05C 36 bytes Misc. Table for several Map16 blocks that handles which bounce block sprite is shown when the block is hit. Please see this thread and this thread for additional information.
Block order is as follows:
00-1C: Tiles 111-12D
1D-20: Tiles 021-024
21: Broken turnblock
22: Green ! block
23: Yellow ! block
$00F080 36 bytes Misc. Table for several Map16 blocks that handles which powerup is spawned out of the block when it's hit (see here for more details). Block order is the same as $00F05C.
$00F0A4 36 bytes Misc. Table for several Map16 blocks that handles from which sides the block is activated, in ----btrl format.
- = unused, b = bottom, t = top, r = right, l = left
Block order is the same as $00F05C.
$00F0C8 36 bytes Objects Table for several Map16 blocks that handles which tiles to generate (the value stored to $9C) when the block is hit. Block order is the same as $00F05C.
$00F120 217 bytes Mario physics Shared Map16 page 1 interaction routine. This handles Munchers, spikes and bounce blocks (including but not limited to Note Blocks and ?-blocks). This routine is called for most of Mario's interaction points as well as carryable sprites and the cape.

The order in which the routine goes as follows:
  • Check for Yoshi
  • Handle hurt blocks
  • Hande bounce blocks

The routine can be jumped at various points:
  • $00F120 includes the Yoshi check and is used if the player is above a block.
  • $00F127 handles hurt blocks regardless whether the player rides Yoshi or not and is used for the other sides of a block.
  • $00F160 handles only bounce sprites and is used for the invisible blocks and sprite interaction.

All these routines take the following inputs:
  • A: Map16 tile which is interacted
  • Y: Block direction (follows a similar fomat as $7E0077).
Additional Data
$00F160 263 bytes Subroutine (JSL) Routine used to trigger SMW blocks, used for example by kicked sprites to make ON/OFF blocks, Note blocks, etc. activate when hitting them.

Inputs:
- $98: 16-bit Y position of the block.
- $9A: 16-bit X position of the block.
- $1933: which layer the block is in.
- Y: must be #$00.
- A: map16 number low byte (high byte is always #$01, since all the blocks that can be triggered by this are in map16 page 1).
Example code
$00F176 131 bytes Objects Green Star Block code.
$00:F1E9 - FG/BG Tileset in which coin question blocks' behavior are changed for the 3-block 1up bonus game.
$00:F1EA - Change from F0 0D to EA EA to disable the 3-block 1up bonus game, allowing you to use coin question blocks in levels with the switch palace tileset (4), and freeing up the 5 bytes at RAM address $13F4 for custom use.
$00F17A 1 byte Objects How many colored Exclamation Blocks are allowed by default within all tilesets to enable spawning items, with the exception of Ghost House, Boss Battles, etc...

$02 (Green, Yellow) by default, Can be set to $00 to disable item spawning, and instead make them solid.
$00F21D 1 byte Sprite Misc. Sprite to generate out of the bonus block (the rows of ?-blocks) if all three of them were guessed right. Default: #$05 (1-Up). Other possible values include, but are not excluded to: #$00 = None; #$01 = Mushroom; #$02 = Fire Flower; #$03 = Star; #$04 = Feather.
$00F237 1 byte Sound effect Incorrect! Sound effect for the bonus 3 block minigame.
$00F253 1 byte Misc. What the remaining blocks become when hitting the incorrect block in a bonus area
$00F2BB 3 bytes ASM Change [99 3C 1F] to [EA EA EA] to make the 1up checkpoint work again when reentering a level
$00F2C0 183 bytes Mario physics Shared Map16 interaction routine to handle interaction with various tiles on page 0. The tile number is passed in Y, and the specific interaction point being processed is identified via a value passed in A, using a format similar to that of $74. The routine specifically handles interaction for the following tiles, in the following order:

  • Liquids (000-005)
  • Midpoints (038)
  • Climbable blocks (006-01C)
  • Moons (tile 06E)
  • Yoshi coins (tiles 02D, 02E)
  • Normal coins (tiles 02A-02C)

The game uses multiple entry points to the routine depending on the interaction point being processed:

  • $00F2C0: MarioBody. This specifically sets A to #$01.
  • $00F2C2: MarioAbove and MarioBelow.
  • $00F2C9: MarioSide and MarioHead. This skips liquid interaction.
  • $00F309: TopCorner and WallFeet. This skips liquid, midpoint, and climbable block interaction.
Additional Data
$00F2CD 33 bytes Objects The code for the midway point tile (Map16 tile 38, not the extended object).

- $00F2CE: what tile gets generated after breaking the midway point tape (see $9C; default is 02 - none).
- $00F2D5: change to [80 01] to disable the glitter that appears after touching a midpoint.
- $00F2E2: change to [80] to disable midway powerups (or [80 01] to make them always make you big, even if you have a better powerup).
- $00F2E5: what powerup midway points give you.
- $00F2E9: what sound effect midway points play.
$00F316 1 byte Misc. Change '0F' to the following, and the 3UP moon will add this to your life or score counter:

00 = Nothing at all
01 - 0C = Scores 10-8000.
0D = 1UP.
0E = 2UP.
0F = 3UP.
10 = 5UP (glitched).
11-FF = Best not to use.
$00F325 3 bytes ASM Replace '99 EE 1F' with 'EA EA EA' to make moons reappear when you re-enter a level after collecting them.
$00F332 69 bytes ASM The code that handles a Yoshi coin being collected.

- $00F333: Map16 tile number of the top half of the coin.
- $00F33C: offset of the score sprite when the top half is collected, relative to the bottom half.
- $00F343: changing [EE 22 14] to [EA EA EA] will disable the Yoshi Coin counter in the status bar. Note that this will also stop them from respawning when you've got five of them.
- $00F34A: number of Yoshi coins that need to be collected to trigger the "collected all" flag.
- $00F354: changing [99 2F 1F] to [EA EA EA] will make the Yoshi coins reappear even after collecting all 5 (or more) of them.
- $00F359: Yoshi coin sound.
- $00F35E: amount of regular coins a Dragon Coin gives you.
- $00F364: value stored to $9C when the coin is collected.
$00F377 59 bytes Subroutine (JSL) The subroutine that handles the score when you get a Yoshi coin.
Changing $00F37A [EE 20 14] to [EA EA EA] will stop the Yoshi Coin counter from increasing and giving you points and giving you a life after you collected enough for one.
$00F38A 40 bytes Subroutine (JSL) Subroutine to spawn a score sprite at Mario's position. Load the score sprite to spawn in A before calling; alternatively, jump a few bytes earlier to $00F388 to specifically spawn a 1up score sprite.
$00F3B2 18 bytes Subroutine (JSR) This subroutine gets an index to the "one bit per level" tables ($1F2F, $1F3C, $1FEE) depending on the overworld level number ($13BF). When it returns, Y holds the byte index to $1F2F and A holds the bit to check/set.
$00F3E3 1 byte Coordinate [0A] Signed offset of the enterable region of the left tile of an exit-enabled vertical pipe from the left edge of the tile, in pixels, minus 1

Change to #$FF to make up pipes enterable as no matter where you hit them. (For use with the hex edit at $00F3F9)
$00F3E4 1 byte Coordinate [FF] Signed offset of the enterable region of the right tile of a vertical exit-enabled pipe from the left edge of the tile, minus 1
$00F3E5 4 bytes Controller Which button you have to be pushing in order to enter the 4 kinds of pipes. In order: End on right, end on left, end on bottom, end on top.
$00F3ED 1 byte Misc. [37] Offset of entering vertical pipes. Setting it to any other number than 36-38 will make the player incapable of entering.
$00F3F9 1 byte Coordinate [05] Width of the enterable region of a vertical exit-enabled pipe tile (either one), in pixels

In vanilla SMW, this is half the width of the enterable region of the entire pipe, but this won't be true if the two exit-enabled pipe tiles are made to have overlapping enterable regions.

Change to #$10 to make up pipes enterable no matter where you hit them. (For use with the hex edit at $00F3E3)
$00F43A 1 byte Sound effect Going Down Pipe Sound
$00F443 10 bytes Subroutine (JSR) Subroutine that checks if Mario is in the center of a door. Not used for boss doors.

$00F44B [08] is the width of the enterable region of the door (up to 0x10). $00F447 [04] is how far to offset the enterable region; this should be set to half of $00F44B.
$00F44D 24 bytes Mario physics Routine that sets up Mario's object collision points for RAM addresses $98-$9B, inclusive.
$00F545 80 bytes Subroutine (JSL) Routine that handles behaviours for various Map16 tiles. For P-Switch dependent tiles, this routine only sets the "act as", not the graphics.

$00F54C: Map16 tile number (low byte) that should act like a ? Coin Block when the blue P-Switch is active. Default is ($00)29, the Invisible POW ? Coin Block.
$00F555: Map16 tile number (low byte) that the Invisible POW ? Coin Block should act like when the blue P-Switch is active. Default is ($01)24, the ? Coin Block.

$00F55B: Map16 tile number (low byte) that should act like a Brown "used" Block when the blue P-Switch is active. Default is ($00)2B, the Coin.
$00F572: Map16 tile number (low byte) that Coins should act like when the blue P-Switch is active. Default is ($01)32, the Brown "used" Block.

$00F561 & $00F563: Range of Map16 tiles (page 0) that set the "current Palace Switch being pressed" value in $1423. $00F561 (#$EC) is subtracted from the Map16 tile number, then compared with $00F563 (#$10). If the result is less than #$10, the value gets incremented by 1 and stored to $1423. This makes it so that only tiles ($00)EC to ($00)FB, the Palace Switch tiles, set $1423.

$00F57B: Map16 tile number (low byte) that should act like a Coin when the blue P-Switch is active. Default is ($01)32, the Brown "used" Block.
$00F585: Map16 tile number (low byte) that should act like a Coin when the silver P-Switch is active. Default is ($01)2F, the Black Piranha Plant.
$00F58E: Map16 tile number (low byte) that the Brown "used" Block should act like when the blue P-Switch is active, and the Black Piranha Plant should act like when the silver P-Switch is active. Default is ($00)2B, the Coin.
$00F598 2 bytes Mario physics Highest Y position that the player is able to be at, 16 bit. Note that this is a negative value.
$00F5AD 2 bytes Misc. Change to 80 03 (BRA $03) to make it so falling into a pit results in death even in Yoshi wings levels, or to 80 00 (BRA $00) to make it so falling into a pit will always activate the normal exit.
$00F5B7 79 bytes Subroutine (JSL) Hurt Subroutine (JSL to it to hurt the player).
$00:F5B9: Change to F0 to make mario invincible. (Will not make him invincible to crushing objects, lava or pitfalls).
$00:F5C1-$00:F5C3: Change from 0D 93 14 to EA EA EA to make Mario die normally when touching an enemy/muncher even after getting the goal tape/sphere.
$00:F5C6: Change from 9C E3 18 to EA EA EA to prevent coin game cloud counter from resetting on hit.
$00:F5D7: Change this to 80 to have Mario die when touched, regardless of powerup status.
$00:F5E3: This SFX plays when you get hit when flying.
$00:F5ED: Invincibility timer when hit while flying.
$00:F5F4: Mario shrinking SFX.
$00:F5F8-$00:F5FB: Set to EA EA EA EA to disable item box auto-falling when you get hurt.
$00:F5FC-$00:F5FF: Change the "A9 01 85 71" to "EA EA EA EA" to disable mario's shrinking animation when hit.
$00F606 35 bytes Subroutine (JSL) Death Subroutine (JSL to it to kill Mario).
$00F607 controls the speed at which the player jumps up ($7E007D format).
$00F60B controls which music is played when Mario dies.
$00F619 can be changed from 0D 14 to 12 14 to make the screen not scroll when the player loses a life.
$00F61C controls the amount of time Mario stays on screen before dying.

*note that if Mario Falls into a hole, the rom will JSL to $00F60A to skip the death animation
$00F69F 4 bytes Misc. Where Mario has to be vertically on-screen for the game to consider the screen "caught up" with him in a particular direction, thereby stopping it from scrolling. The first two bytes are for scrolling upwards, while the second two are scrolling down.
$00F6A7 6 bytes Misc. How fast the camera "catches up" to Mario when scrolling vertically. The first two bytes are when scrolling upwards, while the second two are scrolling down.

The third entry is a bit strange, and for the most part unused. If the level is set to "no vertical scroll unless flying/climbing/etc.", then it gets used as the upwards scroll speed of the screen when it's below the point where the screen "locks" vertical scrolling. Since this is normally at the bottom of a level where the screen can't scroll any further down, it can only really get used in vertical levels.
$00F6AD 6 bytes Misc. Vertical limits for scrolling the screen.

The first two bytes are the highest distance the screen can scroll upwards; essentially, it's the top of the level.
The second two are the highest distance the screen can scroll upwards... when the screen is stationary or moving downwards. Recommended to keep it identical to the first two bytes.
The third entry is where the screen's vertical scrolling locks in a level with the "no vertical scroll unless flying/climbing/etc." option. The screen can actually still scroll vertically if it goes below this point, but it can't scroll up past it unless one of the special conditions is met.
$00F6B3 4 bytes Misc. 16-bit values for the maximum X position the game should move the static camera region towards when the screen is scrolling in the direction Mario is facing. They're used to position the camera slightly in front of where Mario is running. The first is for moving left, the second is for moving right.
$00F6C1 4 bytes Misc. Two 16-bit values for the X speed of the screen when scrolling with L/R. The first value is used when scrolling right with R, while the second is used when scrolling left with L.

These values are also slightly reused for a positive/negative check when the screen is just normally scrolling horizontally as Mario moves around. If you want to change that so that you can freely modify the signage of these two values, you can do so by changing $00F8CB from 0xBF to 0xC5.
$00F6C7 4 bytes Misc. How quickly the screen scrolls horizontally when "catching up" to Mario while he's walking around normally. The first two bytes are right, while the second are left.
$00F6CD 4 bytes Misc. 16-bit values for the maximum X positions the game should move the static camera region towards when scrolling the screen with L or R. The first is for scrolling right with R, the second is for scrolling left with L.
$00F6DB 516 bytes Misc. Level camera handling routine. This routine handles camera movement with the player.
  • $00F713 - Horizontal scroll handler in horizontal levels.
  • $00F766 - Horizontal scroll handler in vertical levels.
  • $00F7F4 - Vertical scroll handler, for both horizontal and vertical levels.
  • $00F8AB - Subroutine to handle scrolling the screen in the direction the player is moving, for shifting the screen slightly ahead.
  • $00F79D - Handler for scrolling Layer 2 (mainly background), which determines the scrolling rate in relation with layer 1.
$00F6E5 2 bytes Misc. Distance Mario must be offset to the left of the screen's "hotspot" defined by $7E142A for the screen to scroll leftwards.
$00F6EC 2 bytes Misc. Distance Mario must be offset to the right of the offset at $00F6E5 for the screen to scroll rightwards. Essentially, this defines the width of the area where the screen will never scroll horizontally.
$00F70E 2 bytes Coordinate Lowest Y position the screen is allowed to scroll down to in horizontal levels. Change from C0 00 to CF 00 (do the same on $00F6B1 so the "no vertical scroll unless flying/climbing/etc." work consistently) to allow the bottom row of 16x16 blocks to be shown.
$00F727 1 byte Misc. Change #$00 to #$02 (value to be stored in $7E:0055 and $7E:0056) and you'll get a SMB1-like effect regarding screen-scrolling: it's impossible to go to the left, even with L/R-scrolling.
$00F79D 13 bytes ASM Code that handles the Layer 2 horizontal scroll settings (LM's "Layer 2 (BG) Scrolling Rate").
$00F7AA 24 bytes ASM Code that handles the Layer 2 vertical scroll settings (LM's "Layer 2 (BG) Scrolling Rate").
$00F806 2 bytes Coordinate When vertical scrolling is enabled and not locked at the bottom of the level, this is the onscreen Y position at which the screen should try to keep Mario centered. If Mario is above this line, the game will try to scroll the screen up, and if below, the game will try to scroll down.
$00F878 1 byte Misc. Change from D0 to 80 to activate free vertical scrolling. This will bypass the routine that checks whether Mario is standing on solid ground or not (RAM address $72) and sets the scrolling flag accordingly. The camera follows Mario instead of waiting for him to land on something.
$00F99C 2 bytes Coordinate What 16-bit Y position on screen ($7E:0080) the player should have at the very minimum, before being killed in the Iggy/Larry battle room. Used to simulate lava tiles.
$00F9F5 27 bytes Empty Unused data.
$00FA10 9 bytes Subroutine (JSL) Unreachable, but can be JSL'ed to clear out the sprite status table.
$00FA19 44 bytes Sprite subroutine (JSL) Load slope information. This is a subroutine which gets the slope information for the current tile which means slope type and height of the ground for the current X position. It's used to load the slope info for sprites.

Input:
Map16 tile ID low byte
$0A: X position of the interaction point
$0C: Y position of the interaction point

Output:
Y: Index to the ground height table, calculated with from $08 * 4 + $0A & #$0F.
$00: Y position of the current interaction within the block, calculated from $0C & #$0F.
$05-$07: 24-bit pointer to the ground height table $00E632.
$08: Slope type.
$00FA46 1 byte Misc. Time to shake ground when you hit the big switch in the switch palace. Default is 20.
$00FA4D 1 byte Sprite number Sprite that's spawned when hitting a switch palace. Note that it always uses slot 02.
$00FA80 95 bytes Subroutine (JSL) The routine which triggers the goal tape.

$00FABF - [06] The state which sprites are put into when the goal tape is triggered. Can be set to any of the valid values for RAM address $14C8.
$00FADF 28 bytes Misc. Table of the various sprites Mario receives for carrying different items past the goal tape.

The table itself is divided into four 7-byte sections: P-switches and springboards will use the second section, keys will use the third, baby Yoshi will use the fourth, and anything else will use the first.
Each section is then indexed by Mario's current state, in the order: small, big, cape, fire, with star power, on Yoshi, and unused. The star power index is essentially unused, however, because the counter always gets cleared before the table gets loaded from.

If the value returned is E0-EF, Mario will receive the sprite written at $00FB50 (1-up by default). If it's F0-FF, he'll receive the sprite at $00FB54 (...also a 1-up by default). In both cases, it'll also store the lower four bits to $1594, which for a 1up, will affect the number of lives it gives (0 = 1 life, 1 = 2 lives, 2 = 3 lives, 3 = 5 lives). It's 0 in every obtainable case, though, so the feature is effectively unused.

Additionally, $00FB40 is the sprite to spawn if Mario already has the sprite in his item box (again, 1-up by default).

Lastly, you can re-enable factoring star power into the table by changing $01C0FE to EA EA EA.
$00FB40 1 byte Sprite number Sprite that the Blue/Silver P-switch, Portable Spring Board, Throw Block Sprite and carryable stunned enemies will turn into when they reach the goal point.
$00FB50 1 byte Sprite number Sprite that the Key will turn into when it reaches the goal point.
$00FB53 5 bytes ASM Change to EA EA EA EA EA to prevent the 1UPs being spawned at the goal point. $00:FB54 controls the sprite number that Baby Yoshi (Green, Red, Yellow, Blue) will turn into when it reaches the goal point.
$00FB6F 1 byte Sprite Misc. The Y speed of the sprite when you carry an item over the goal.
$00FB74 1 byte Sprite Misc. The X speed of the sprite when you carry an item over the goal.
$00FB7E 1 byte Sound effect Sound for items given at goal point
$00FBAC 8 bytes Sprite subroutine (JSL) Routine that handles sprites turned into a coin by the goal tape. It's a JSL wrapper to the subroutine at $00FBB4.
$00FBB4 111 bytes Sprite subroutine (JSR) Routine that handles sprites turned into a coin by the goal tape. It first makes the coin appear as a smoke cloud until $1540,x is 0, then it draws the coin, handles its movement and finally it gives Mario a coin, erasing the sprite permanently.
$00FC17 1 byte Misc. [02] Difference between point values of successive sprite coins spawned at the goal tape. The default is 02, so the point sequence will go 100, 400, 1000, 4000, etc.; you can change it to 01 to make the point values go 100, 200, 400, 800, etc. or to 00 to make it always stay at 100 no matter how many sprites get turned into coins.
$00FC23 87 bytes Sprite subroutine (JSL) An unused routine. When called, if there's a Yoshi spawned in the level and Mario is not riding him, it'll teleport him to the left edge of the screen running towards the right, and move him to Mario's Y position. If there's no Yoshi spawned, nothing happens. No matter what, the Yoshi will be turned to green and without wings.

Note that the routine overwrites the Y register.

$00F6CE: [$10] X speed given to Yoshi.
$00FC7A 114 bytes Subroutine (JSL) Used in SMW to initialize Yoshi when entering a level, or sublevel. JSLing to this will cause a Yoshi to spawn and Mario will be riding him, however the Yoshi will not transfer to sublevel or to the overworld. You must set $13C7 if you plan to manually JSL to this routine.
Changing $00FCCE to 0x80 will keep Yoshi from turning blue after grabbing a pair of Yoshi wings.
$00FCF6 1 byte Coordinate X lo position of Iggy and Larry at the start of the boss battle.
$00FCFA 1 byte Coordinate X hi position of Iggy and Larry at the start of the boss battle.
$00FCFF 1 byte Coordinate Y lo position of Iggy and Larry at the start of the boss battle.
$00FD03 1 byte Coordinate Y hi position of Iggy and Larry at the start of the boss battle.
$00FD27 1 byte Sprite number Object that Mario "breathes" while underwater (small bubble)
$00FD5A 67 bytes Subroutine (JSR) SMW's glitter trail subroutine, called when you collect a coin or Yoshi coin.
Change $00FD6B to EA EA EA EA EA (NOP #5) to disable showing a glitter effect when a coin is collected.
$00FD9D 4 bytes Misc. Table of four bytes that are used to determine where the water splash sprite Y position for Mario is.

Changing $00FD9E from $FC to $00 will fix the splash from being one tile above big Mario.
$00FE17 1 byte Sprite number Object that Mario leaves when he jumps into water (small bubble)
$00FE4A 73 bytes Subroutine (JSR) Routine to show little puff of smoke when the player turns around.
$00FE94 1 byte Mario physics Initial fireball X speed facing left
$00FE95 1 byte Mario physics Initial fireball X speed facing right
$00FE96 1 byte Coordinate X-position of Mario's fireball (left)
$00FE97 1 byte Coordinate X-position of Mario's fireball (right)
$00FE98 1 byte Coordinate X-position of Mario's fireball when on Yoshi (left). Only relevant if you enable the debug code at $00D087.
$00FE99 1 byte Coordinate X-position of Mario's fireball when on Yoshi (right). Only relevant if you enable the debug code at $00D087.
$00FE9A 1 byte Coordinate X-position of Mario's fireball when on Yoshi and ducking (left). Only relevant if you enable the debug code at $00D087.
$00FE9B 1 byte Coordinate X-position of Mario's fireball when on Yoshi and ducking (right). Only relevant if you enable the debug code at $00D087.
$00FE9C 1 byte Coordinate X-position of Mario's fireball (left), high byte.
$00FE9D 1 byte Coordinate X-position of Mario's fireball (right), high byte.
$00FE9E 1 byte Coordinate X-position of Mario's fireball when on Yoshi (left), high byte. Only relevant if you enable the debug code at $00D087.
$00FE9F 1 byte Coordinate X-position of Mario's fireball when on Yoshi (right), high byte. Only relevant if you enable the debug code at $00D087.
$00FEA0 1 byte Coordinate X-position of Mario's fireball when on Yoshi and ducking (left), high byte. Only relevant if you enable the debug code at $00D087.
$00FEA1 1 byte Coordinate X-position of Mario's fireball when on Yoshi and ducking (right), high byte. Only relevant if you enable the debug code at $00D087.
$00FEA2 1 byte Coordinate Y-Position for Mario's Fireballs (Left)
$00FEA3 1 byte Coordinate Y-Position for Mario's Fireballs (Right)
$00FEA4 1 byte Coordinate Y-position of Mario's fireball when on Yoshi (left). Only relevant if you enable the debug code at $00D087
$00FEA5 1 byte Coordinate Y-position of Mario's fireball when on Yoshi (right). Only relevant if you enable the debug code at $00D087
$00FEA6 1 byte Coordinate Y-position of Mario's fireball when on Yoshi and ducking (left). Only relevant if you enable the debug code at $00D087.
$00FEA7 1 byte Coordinate Y-position of Mario's fireball when on Yoshi and ducking (right). Only relevant if you enable the debug code at $00D087.
$00FEB6 1 byte Sound effect Fireball sound effect
$00FEC0 1 byte Sprite number Object Fire Mario shoots (must change $00FEA9 to 07 for some values to work)
$00FEC5 1 byte Mario physics Initial fireball Y speed
$00FF93 45 bytes Empty Empty (all FF) in a clean ROM.
Used by many patches (like fastrom), and the last byte becomes 42 when you lock the ROM.
$00FFC0 64 bytes Misc. Internal ROM header. Contains a brief summary of the game. See details. Data format
$018008 6 bytes Sprite subroutine (JSR) Subroutine that checks if a sprite is touching a wall. If the accumulator is set, it's touching a wall.
$01800E 6 bytes Sprite subroutine (JSR) Subroutine that is accessed by sprites to check if a sprite is touching the ground. If the accumulator is set, it's touching the ground.
$018014 6 bytes Sprite subroutine (JSR) Routine that checks if a sprite is touching a ceiling. If the accumulator is set, it's touching a ceiling.
$01801A 8 bytes Sprite subroutine (JSL) The subroutine that updates a sprite's Y position without gravity. JSRs into $01ABD8 which is the main handler of adjusting the sprite's position.
$018022 8 bytes Sprite subroutine (JSL) The subroutine that updates a sprite's X position without gravity. JSRs into $01ABCC, which adds the sprite's index number by 12 (which is the number of existing sprite slots), then JSRs again into $01ABD8 so that it will handle moving the X position of the sprite.
$01802A 8 bytes Sprite subroutine (JSL) Subroutine that updates a sprite's X/Y position, including gravity and block interaction. This calls $019032 and also calls $01ABCC to apply the movement.
$018032 8 bytes Sprite subroutine (JSL) JSL wrapper for the sprite subroutine at $01A40D, which when called will process standard interactions between the sprite and other sprites.
$01803A 8 bytes Sprite subroutine (JSL) Sprite to sprite and Mario interaction routine wrapper. That one simply calls the routines SubSprSprInteract and MarioSprInteractRt but can be called from any bank.
$018042 8 bytes Sprite subroutine (JSL) SMW's first shared subroutine for drawing sprites. This one draws four 8x8 tiles in a 16x16 arrangement. Not very useful for custom sprites.
$01804A 4 bytes Subroutine (JSR) Routine that inverts the value in the accumulator.
$01804E 62 bytes Sprite subroutine (JSR) Routine to spawn dust sprite (smoke sprite number $03) at the sprite's position. Used for example by Sliding Koopas and Monty Moles.
$01808C 63 bytes Subroutine (JSL) Routine that runs all the normal and cluster sprites routines.
$0180D2 85 bytes Subroutine (JSR) Routine that gets the current sprite's OAM index and decrements all the sprite timers.
$018137 26 bytes Pointer Sprite status subroutine pointers. These are called based on the value of $14C8,x; valid values are 00-0C.
$018151 6 bytes Sprite Misc. This is sprite status #$00, which is is called when a sprite is either dead or nonexistent. It also sets $161A,x to #$FF to prevent that sprite from being reloaded.
$018157 22 bytes Sprite Misc. Routine that handles sprites in the "powerup from being carried past the goal tape" state ($14C8,x = #$0C). It calls the sprite's main code, then despawns it if it went offscreen and applies movement (decelerating the Y speed).
$01816D 5 bytes Sprite Misc. Routine that handles sprites in the "turned into coin by the goal tape" state ($14C8 = #$06). It just JSLs to $00FBAC.
$018172 11 bytes Subroutine (JSR) This is sprite status #$01, which will call the current sprite's init routine.
$01817D 402 bytes Pointer Pointers to sprite initialization routines. These are called based on the sprite number ($9E,x). Valid values are 00-C8; sprites C9 and above are considered different types of sprites and handled by other routines.
$018223 2 bytes Pointer Change from C2 85 to 35 84 to allow throw blocks to be placed directly in Lunar Magic, with infinite timer until they disappear.
$018327 1 byte Timer [3F] How many frames until a Timed Lift (sprite BA) will fall if it starts at an odd X position. Default value is $3F, or about 1 second.
$01832F 1 byte Timer [FF] How many frames until a Timed Lift (sprite BA) will fall if it starts at an even X position. Default value is $FF, or about 4 seconds.
$018335 4 bytes Palette Colours of Yoshi Eggs (Red, Blue, Yellow, Blue)
$018340 1 byte Misc. How many types of Yoshi Eggs to allow, minus one
$01834C 2 bytes Sprite physics Initial leftward and rightward X speeds of diagonally moving sprites, i.e. stream of boo buddies and reflecting fireball (F0).
$018357 1 byte Misc. Initial Y speed of diagonally moving sprites, i.e. stream of boo buddies and reflecting fireball (F0).
$01836A 1 byte ASM Change to EA to make both wooden spikes move up or down depending on X&1 instead of sprite AC always moving down first.
$018391 1 byte Sound effect SFX played by the Banzai Bill
$0183A0 4 bytes Sprite number Sprites inside exploding turn block (Fish, Goomba, Shelless Green Koopa, Green Koopa)
$0183DB 1 byte Timer Length of time before sprite #19's message box appears (don't set lower than 04)
$018455 1 byte Misc. How many types of P-Switches to allow, minus one
$018466 2 bytes Palette Colours of P-Switches (Blue, Silver)
$0184A5 1 byte Sprite number Sprite spawned by killing Lakitu with cape or fireball (Lakitu Cloud)
$0184C6 4 bytes ASM Change to EA EA EA EA to make lakitu cloud never get spawned
$0184E4 1 byte Sprite Misc. [10] Timer to send Bullet Bills behind objects, set on spawn.
$01851C 3 bytes ASM [20 7C 85] Change to [BC 7C 15] to make the Diggin' Chuck's starting direction depend on its X position instead of it always starting out facing the player.
$01854C 1 byte Misc. How many segments Pokey has when Mario is riding Yoshi. The amount of segments depends on these bits:
---x xxxx. If any of the x bits are set, a segment will be added. If none is set, the sprite won't appear. If any of the - bits is set, the sprite won't appear.
$018553 1 byte Misc. How many segments Pokey has when Mario isn't riding Yoshi. The amount of segments depends on these bits:
---x xxxx. If any of the x bits are set, a segment will be added. If none is set, the sprite won't appear. If any of the - bits is set, the sprite won't appear.
$01857A 8 bytes Sprite subroutine (JSR) Face Mario subroutine, usually used by sprites to initially face Mario's direction.
$0185CC 402 bytes Pointer Pointers to sprite main routines. These are called based on the sprite number ($9E,x). Valid values are 00-C8; sprites C9 and above are considered different types of sprites and handled by other routines.
$018763 38 bytes Sprite subroutine (JSR) Goal point sphere/boss killed code.

- $018778: if you change this to [20 23 CD] and change $01CD23 to [9E C8 14 CE C6 13 60], it will prevent the player from walking after touching a goal sphere in a horizontal level.
- $018784: it controls which music is played when it's collected.
$018890 3 bytes Subroutine (JSR) Initialization routine for sprite 52 (moving ledge hole in ghost house) that simply decrements the low byte of its Y position.
Lunar Magic v2.53+ renders this routine unused by changing the initialization routine to $0185B7 instead. This is done in order to fix the glitch where placing the hole at the top of a subscreen causes its position to wrap around to the bottom of the subscreen.
$018898 84 bytes Sprite subroutine (JSR) Subroutine that makes Yellow Koopas jump over shells.
$0188E5 is the Y speed they get when jumping ($C0).
$0188EC 4 bytes Sprite Misc. Standard X speeds for sprites 00-13. The first two bytes are used when the "move faster" bit at $0188F0 is clear for the sprite, while the second two are used when it's set.
$0188F0 20 bytes Sprite Misc. Various properties for sprites 00-13. Format: ak--jfls.
a = animate twice as fast in air
k = use 32x16 tilemap (also draws wings on sprites 08+)
-- = unknown/unused
j = jump over thrown shells
f = follow Mario
l = stay on ledges
s = move faster (use $0188EE for X speeds instead of $0188EC)
$0189ED 1 byte Sprite tilemap related Tilemap of blue shell less koopa sliding out of shell
$018AED 1 byte Sprite Misc. Change from D0 to 80 to make bob-ombs not stun themselves then explode on their own, like SMB3 and other games.
$018AF5 1 byte Timer How quickly Bob-omb explodes
$018BCD 1 byte Misc. What animation frame most regular sprites use when turning around
$018C0D 1 byte Sprite number Sprite number to start adding wings to 2-tile high sprites
$018C31 1 byte Sprite number Sprite that Spiny Egg turns into after touching the ground
$018CA4 1 byte Sprite physics [D0] Y speed for the green Para-Koopa that hops low.
$018CAB 1 byte Sprite physics [B0] Y speed for the green Para-Koopa that hops high.
$018CD7 1 byte Misc. Time it takes for a Red Vertical Parakoopa to turn around after reaching it's maximum/mimimum Y speed. (08)
$018DA2 1 byte Sprite physics Winged Goomba jump height (between 80-FF).
$018DC7 16 bytes Sprite tilemap related Goomba Wing alignment, X position. First 8 bytes are for the alignment when the goomba's hopping left, the other 8 when he's hopping into the right direction.
$018DDF 2 bytes Sprite tilemap related Palette/GFX page/Priority/Flip of Goomba Wing Tiles
$018DE1 4 bytes Sprite tilemap related Sprite tilemap: Goomba Wings
$018DE5 4 bytes Sprite tilemap related Size of Goomba Wing tiles
$018E6E 4 bytes Misc. Speed of piranha plant (in pipe, going up, staying up, going down).
$018E93 1 byte Sprite Misc. YXPPCCCT properties of the stem of sprite 2A, the upside-down piranha plant. Change to $0A to make it use the first graphics page.
$018ECE 1 byte Misc. Replace D0 with 80 to make the classic and upsidedown piranha plants keep coming out of the pipe even if Mario is near or on top of the sprite.
$018F8D 1 byte Sprite number Object Hopping Flame leaves behind
$018FC7 8 bytes Sprite tilemap related Bullet Bill properties, YXPPCCCT.
- First byte: Right flying bullet bill
- Second byte: Left flying bullet bill
- Third byte: Vertically upwards flying bullet bill
- Fourth byte: Vertically downwards flying bullet bill
- Fifth byte: Diagonally flying bullet bill, lower left
- Sixth byte: Diagonally flying bullet bill, upper left
- Seventh byte: Diagonally flying bullet bill, upper right
- Eighth byte: Diagonally flying bullet bill, lower right
$018FCF 8 bytes Sprite tilemap related Which GFX frame to use (00 = regular bill, 01 = vertical bill, 02 = diagonal bill) for the Bullet Bills. Same order as x91C7.
$018FD7 8 bytes Sprite physics X speed of Bullet Bills. Same order as $018FC7.
$018FDF 8 bytes Sprite physics Y speed of Bullet Bills. Same order as $018FC7.
$019032 87 bytes Subroutine (JSR) Default sprite physics routine. It handles speed in both directions, handles gravity, water movement and block interaction.

$019042 [$E8] is the terminal velocity
$019045 [$E8] is the speed which is stored when a sprite reaches the terminal velocity (ideally identical to the previous address).

If you want to access the routine outside of bank $01, call $01802A.
$0190B2 8 bytes Sprite subroutine (JSL) SMW's third shared subroutine for drawing sprites. This one draws a single 16x16 tile.
It can be used by custom sprites, although you'll have to set the correct tile number in OAM afterwards (see the example code).
Example
$0190BA 122 bytes Sprite physics Positions of each of the 4 object collision points for each sprite hitbox, relative to the sprite's XY position ($E4/$14E0 and $D8/$14D4). Consists of two 61-byte tables for each of the X and Y positions:
  • $0190BA-$0190F6: X positions
  • $0190F7-$019133: Y positions
Each byte indexed by %00ccccpp:
  • cccc: Which hitbox to use; retrieved from the low nybble of $1656.
  • pp: Which of the 4 collision points to use:
    • 00 = Right
    • 01 = Left
    • 10 = Bottom
    • 11 = Top
$019138 8 bytes Sprite subroutine (JSL) JSL for sprites interacting with objects. Actually calls routine at $019140.

During processing GPS blocks:
  • $0A-$0D: Position (in pixels) of the collision point currently being processed for sprite interaction with blocks in the level:

    • $0A-$0B (2 bytes): X position
    • $0C-$0D (2 bytes): Y position

    Note, just like $98-9B, coordinates are respective to the top-left of the layer currently being processed. Hence, if Layer 1 and Layer 2 are offset from each other, this value will differ between the two, even when the sprite is at the same position with respect to the level.

  • $0F (1 byte): Index of one of the 4 collision points currently in use. Also used to eject sprite out of block horizontally:

    • #$00 = SpriteH: Right (touches blocks from left)
    • #$01 = SpriteH: Left (touches blocks from right)
    • #$02 = SpriteV: Down (touches blocks from above)
    • #$03 = SpriteV: Up (touches blocks from below)


    Be careful when using custom blocks, $0F remains used before and after custom block processing at $019533. If $0F is modified and not restored, sprite interaction glitches can occur.

$019211 115 bytes Subroutine (JSR) Sprite buoyancy routine. Called from the object interaction routine and handles collision points.

Change $01927F from $13 to $14 to fix an exploit that freezing (setting $9D or pausing the game) can be used to manipulate wall-embedded sprites (with an Xspeed of $00) to move in a desired direction (left and right), see here at 1:40 for an example.
$0192C5 2 bytes Misc. [$01 $FF] Speed (right, left) given by conveyors (tiles 10C/10D) to sprites standing on them.
$0193EF 22 bytes Sprite subroutine (JSR) The code that makes sprites move if placed on conveyor belts.
$0195A5 1 byte Sprite physics Change this value to $00 to fix a small glitch with carryable sprites where throwing the sprite upwards at a hittable block will occasionally cause it to hit the block without actually activating it (due to registering both the bottom of the block and the side of another block at the same time).
$0195FC 32 bytes Empty Unused data.
$01961C 8 bytes Sprite number Sprites spawned by stomping Koopa Troopas (shelless Koopas)
$01962A 49 bytes ASM Code that handles the Bob-omb flashing and exploding. Change $019630 from 1D to 1C to disable the flashing entirely.
$019632 1 byte Sound effect Bob-omb's explosion SFX
$01963C 1 byte Timer Length of Bob-omb's explosion
$019654 1 byte Sprite Misc. Bob-omb Flashing Cycle

00-Palette 06
02-Palettes 04,06
04-Palettes 02,06
06-Palettes 00,04,06
08-Palettes 06,0E
0A-Palettes 04,06,0C,0E
0C-Palettes 02,06,0A,0E
0E-All Palettes
$019688 1 byte Misc. Which shell colour makes a shelless Koopa become invincible (00=Green; 01=Red; 02=Blue; 03=Yellow)
$0196C6 1 byte ASM Change from 1A to 04 to prevent shelless Koopas from hopping out of stunned shells (Use with $01AA15)
$019768 1 byte Sprite number [07] Which of the four Koopas generates a coin when stomped. Valid values are 04 (green), 05 (red), 06 (blue), and 07 (yellow). All others will make the coin never appear.
Alternatively, you can change the next two bytes ([D0 0A]) to [EA EA] to make all (shelled) Koopas spawn coins.
$01977C 1 byte Sprite number Sprite that's spawned when a Yellow Koopa is stomped (Coin)
$019807 1 byte Misc. Default animation frame to use for the shell
$01980E 1 byte Misc. Animation frame to use for the shell when Mario is turning around while holding it
$01983F 1 byte Timer Timing that enemies in a stunned state begin to shake
$019851 1 byte Sprite tilemap related Change to #$80 to prevent koopas eyes blinking while inside the shell.
$019881 1 byte Sprite tilemap related Koopa eye tiles when in shell (open)
$019889 1 byte Sprite tilemap related Koopa eye tiles when in shell (closed)
$0198A7 2 bytes Sprite physics [$E0 $20] X speed (left, right) to give Disco Shells when bumping into a wall.
$0198C7 1 byte Sprite physics ($20) Maximum right speed of Disco Shells.
$0198D1 1 byte Sprite physics ($E0) Maximum left speed of Disco Shells.
$019913 8 bytes ASM Start of sprite being kicked routine.
$019972 1 byte Sprite physics Y speed of kicked Koopa shells and throw blocks when they hit the ground.
Change from 10 to 0C to make shells always glide over one-tile-wide holes, or 14 to make them always fall in.
$01999E 62 bytes Sprite subroutine (JSR) Block interaction of carryable and kicked sprite for horizontal interaction. This allows sprites to interact with bounce blocks.

Note that for the stunned state ($14C8 = $09), this interaction is skipped for Koopa shells.

  • $01999F [$01]: Which sound effect to play when a sprite touches a solid block.
  • $0199B2 [$14]: The range of the left side to check whether a sprite is on-screen.
  • $0199B4 [$1C]: The range of the right side to check whether a sprite is on-screen (must be added with the left range).
  • $0199CE [$05]: How long to disable interaction with capes and bounce sprites.
  • $0199D5 [$53]: Which sprite breaks at wall contact.
$01999F 1 byte Sound effect Hitting block with shell sound
$019A22 4 bytes Misc. Animation frame assignments for the shell
$019A26 4 bytes Misc. Flip of each animation frame
$019A34 1 byte Misc. How many animation frames the spinning shell has, -1
$019A52 41 bytes Sprite subroutine (JSR) This is the routine that handles sprites in the "killed by a spin jump state" ($14C8,x = #$04). It handles drawing the smoke on screen, then it erases the sprite permanently when $1540,x is #$00.

$019A57: change to $60 to stop the smoke from appearing (doesn't stop the spin jump stars from appearing).
$019A93 1 byte Sprite physics Change to 02 to fix a small glitch where sprites can slide through solid blocks while sinking in lava if they're moving to the left.
$019AA2 66 bytes Sprite subroutine (JSR) Routine for sprites in state 02 (killed and falling offscreen). It's also shared by the routine for sprites killed in lava.
$019AE4 47 bytes Sprite Misc. Routine that handles sprites in the "smushed state" ($14C8,x = #$03). It draws graphics (with special cases for Dino-Torch and Rex) and handles speed and movement. Once $1540,x reaches 0, the sprite is erased permanently.
$019B0B 1 byte Sprite tilemap related Tile used by squished Dino Torch
$019B13 112 bytes Sprite Misc. Routine called during two sprite death states ($14C8,x = #$02 or #$05). If the "Don't disable clipping when killed by star" tweaker bit is set (bit 0 in $167A,x) the sprite's main code is jumped to. Otherwise, it just draws the death frame.
This is what makes some sprites appear glitched when killed in unintended ways (for example, killing a grinder by sliding).
$019B83 6 bytes Sprite tilemap related Standard Sprite Tile Table: Koopa tilemap
$019B89 3 bytes Sprite tilemap related Standard Sprite Tile Table: Koopa shell tilemap
$019B8C 7 bytes Sprite tilemap related Standard Sprite Tile Table: Shelless koopa tilemap (Fourth byte unused?)
$019B93 7 bytes Sprite tilemap related Standard Sprite Tile Table: Blue shelless koopa tilemap (Fourth byte unused?)
$019B9A 14 bytes Sprite tilemap related Standard Sprite Tile Table: Para-goomba tilemap
$019BA8 4 bytes Sprite tilemap related Standard Sprite Tile Table: Goomba tilemap
$019BAC 14 bytes Sprite tilemap related Standard Sprite Tile Table: Para-bomb tilemap
$019BBA 3 bytes Sprite tilemap related Standard Sprite Tile Table: Bob-omb tilemap
$019BBD 12 bytes Sprite tilemap related Standard Sprite Tile Table: Piranha plant tilemap
$019BC9 1 byte Sprite tilemap related Standard Sprite Tile Table: Football tilemap
$019BCA 4 bytes Sprite tilemap related Standard Sprite Tile Table: Bullet Bill tilemap (Horizontal, Vertical, Diagonal, Diagonal)
$019BCE 3 bytes Sprite tilemap related Standard Sprite Tile Table: Spiny tilemap
$019BD1 8 bytes Sprite tilemap related Standard Sprite Tile Table: Spiny egg tilemap
$019BDD 3 bytes Sprite tilemap related Standard Sprite Tile Table: Buzzy Beetle
$019BE3 3 bytes Sprite tilemap related Standard Sprite Tile Table: Buzzy Beetle Shell.
$019BE6 6 bytes Sprite tilemap related Spike Top tilemap
$019BEC 2 bytes Sprite tilemap related Hopping Flame tilemap
$019BEE 6 bytes Sprite tilemap related Lakitu tilemap (3 frames, 2 bytes each)
$019BF6 12 bytes Sprite tilemap related Magikoopa Tilemap
$019C02 1 byte Sprite tilemap related Throw block sprite tilemap and turn block sprite with hidden enemies inside. (Both use the same byte)
$019C03 10 bytes Sprite tilemap related Climbing Koopa Tilemap
$019C0D 4 bytes Sprite tilemap related Fish (Cheep Cheep) Tilemap (2 frames swimming, 2 frames flopping)
$019C13 4 bytes Sprite tilemap related Thwimp Tilemap
$019C17 1 byte Sprite tilemap related Yoshi Egg Tilemap (only manifests if the Yoshi egg is in the stunned status ($14C8 = #$09), i.e. found in a block or laid by Yoshi; otherwise, the tile loaded from this address is overwritten before drawing).

Change alongside $01F760 - $01F763 and $01F794 to completely remap the Yoshi egg tiles.
$019C1D 12 bytes Sprite tilemap related Portable Springboard Tilemap
$019C2D 4 bytes Sprite tilemap related Bony Beetle tilemap
$019C35 16 bytes Sprite tilemap related Vertical Fireball (Podoboo) tilemap.
$019C5A 2 bytes Sprite tilemap related Eerie tilemap
$019C5C 9 bytes Sprite tilemap related Boo Ghost Tilemap
$019C65 4 bytes Sprite tilemap related Rip Van Fish Tilemap
$019C69 2 bytes Sprite tilemap related Vertical Dolphin Tilemap
$019C6B 2 bytes Sprite tilemap related Diggin' Chuck's Rock Tilemap
$019C6D 3 bytes Sprite tilemap related Monty Mole Tilemap
$019C70 1 byte Sprite tilemap related Ledge-dwelling Mole's Dirt Tilemap (data shared with Goal Point Sphere's Tilemap)
$019C71 8 bytes Sprite tilemap related Ground-dwelling Monty Mole's Dirt (2 Air tiles, 2 Dirt Tiles, 2 Air tiles, 2 Dirt Tiles)
$019C79 4 bytes Sprite tilemap related Sumo Bros' Lightning Tilemap
$019C7D 2 bytes Sprite tilemap related Ninji Tilemap
$019C7F 84 bytes Sprite tilemap related Table containing a sprite's location in the Standard Sprite Tile Table.
$019CD3 4 bytes Sprite tilemap related X displacement for tiles in the first shared GFX routine ($019CF3).
$019CF3 108 bytes Sprite subroutine (JSR) The first of the shared graphics subroutines. This one creates 4 8x8 tiles in a 16x16 block.
$019D5F 177 bytes Sprite subroutine (JSL) The second of the shared graphics subroutines. This one creates 2 16x16 tiles in a 16x32 block, with the second one tile below the base position. It can also be called with a JSR to $019D67.
$019DB6 1 byte Sprite tilemap related Palette/GFX page of standard sprites (shared)
$019E1C 4 bytes Sprite tilemap related Sprite tilemap: Paratroopa Wings
$019E20 4 bytes Sprite tilemap related Palette/GFX page/Priority/Flip of Paratroopa Wing tiles
$019E24 4 bytes Sprite tilemap related Size of Paratroopa Wing tiles
$019E95 116 bytes Sprite subroutine (JSR) Subroutine that draws wings for 16x16 sprites.
It uses $1570,x to decide if to draw open or closed wings (increasing it once per frame will result in the normal wings animation speed).
If used in a custom sprite, the data bank needs to be set to $01 (see example code).
Example
$019F0D 78 bytes Sprite subroutine (JSR) The third of the shared graphics subroutines. This one creates a single 16x16 tile.
$019F3C 1 byte Sprite tilemap related Palette/GFX page of standard sprites (shared)
$019F5B 6 bytes Coordinate x-pos table of sprite being carried:
walking, turn from left to right, turn from right to left (two bytes each, indexed by Mario's direction)
$019F6B 4 bytes Sprite physics X-speed of the touched/kicked shell.
Value 1: left-speed, when touched (not kicking)
Value 2: right-speed, when touched
Value 3: left-speed, when kicked
Value 4: right-speed, when kicked.
This will also affect the shell of buzzy beetle! Setting the speed to 00 or FF will make the shells not spinning, giving unlimited score.
Original Values:
D2 2E CC 34
$019F9B 46 bytes Subroutine (JSR) First half of the routine that handles sprites being carried, though it's actually only the part that handles the P-balloon.
Any other sprite will branch to $019FE0
$019FA7 change to EA EA EA EA EA to the P-Balloon last forever.
$019FB0 is the time at which the deflatting animation starts. (default 30)
$019FC2 change 90 to 80 to make Mario keep the balloon effect even after taking hits or power-ups. (causes weird behaviour when dying)
$019FA7 5 bytes ASM Change to [EA EA EA EA EA] to give the P-Balloon an infinite timer
$01A0A7 1 byte Sprite physics Number of frames to disable player contact with any carryable sprite after kicking it.
$01A0AC 1 byte Timer Time to show Mario's "kicking" pose when a Bob-omb is kicked
$01A119 1 byte Coordinate carried sprite Y-pos while picking up
$01A1E1 4 bytes ASM Changing [1A 1A 29 0F] to [EA EA EA EA] will disable the throw block sprites flashing.
$01A1F0 1 byte Sprite tilemap related Tile used by stunned Bob-omb
$01A1FA 1 byte Sprite tilemap related Key tilemap
$01A221 1 byte Sprite tilemap related POW (P-Switch) Tilemap
$01A26A 1 byte Sprite physics [$F0] Baby Yoshi's idle hopping speed. Change to $00 to make him not hop when on the ground.
$01A291 1 byte Sound effect Sound baby Yoshi makes when eating
$01A295 2 bytes Sprite Misc. Change to [$80,$1E] to make Baby Yoshi instantly grow when eating something, regardless if it's a powerup or not.
Change to [$80,$5D] to make Baby Yoshi never grow instantly when eating something, even if it's a powerup. It will count as one sprite eaten instead.
If changing this, you also need to apply the hex edit at $03C03C for it to work properly.
$01A2BC 1 byte Sprite number Sprite that Baby Yoshi turns into
$01A2C6 1 byte Sound effect Yoshi's egg explodes sound
$01A2FB 1 byte Misc. Number of enemies Baby Yoshi must eat to grow
$01A300 2 bytes Sprite Misc. Change to $80,$02 to disable getting a coin when Baby Yoshi eats something.
$01A3DF 44 bytes Sprite subroutine (JSR) Routine called by the shared sprite GFX routines at $019D5F and $0190B2 to hide tiles that would be drawn offscreen vertically. It works for both 1 and 2 tile high sprites by using the first two bits in $186C to determine which tile(s) should be hidden.
$01A40D 956 bytes Sprite subroutine (JSR) The primary routine used to process most standard interactions between a sprite and other sprites; call this routine from within the sprite's MAIN routine to do so. A JSL to this routine can be found at $018032.

When two sprites are interacting, only the sprite in the higher slot actually processes it to prevent the interaction from being handled twice. Interactions can be prevented entirely by setting either sprite's "don't interact with other sprites" tweaker bit ($1686) or $1564. Notably, not using one of these two methods and instead simply not calling the routine in the first place does not guarantee interaction will not be processed, as it can still occur if the handling is coming from a sprite in a higher slot. An example of this in the original game exists with shells and Thwomps, who are immune to thrown shells when they handle the interaction, but are killed when the shell does instead.

Overwrites $00-$03 when called. When processing interaction for sprites in status 8 that have the "change direction when touched" tweaker bit set ($1686), $157C is assumed to be their horizontal direction and $15AC will be set for a timer intended to control a turning-around animation for the sprite.
$01A61E 7 bytes Sound effect Sound effects to use for consecutive bounces on enemies. Begins with [13] (1st bounce) and ends with [19] (7th bounce).
$01A65B 1 byte Sound effect Koopa hit by shell sound
$01A6D7 2 bytes Sprite Misc. X speeds given to sprites when kicked by a blue shelless Koopa. First byte is kicking right, second is left.
$01A716 1 byte ASM Set to 60 to stop Blue Koopas from kicking shells
$01A729 1 byte Sound effect Kicking shell sound
$01A737 1 byte Sprite Misc. [0F] Change to [0D] to fix a bug where shell-less Koopas can hop inside a Bob-omb if its stun timer is 0 (by being carried through a pipe).
$01A78D 1 byte ASM Set to 80 to stop Blue Koopas from stopping shells
$01A7D1 1 byte Sprite number Enemy spawned from stomping horizontal green winged koopas
$01A7D2 1 byte Sprite number Enemy spawned from stomping bouncing green winged koopas
$01A7D3 1 byte Sprite number Enemy spawned from stomping vertical red winged koopas
$01A7D4 1 byte Sprite number Enemy spawned from stomping horizontal red winged koopas
$01A7D5 1 byte Sprite number Enemy spawned from stomping yellow winged koopas
$01A7D9 1 byte Sprite number Enemy spawned from stomping winged goombas
$01A7DA 1 byte Sprite number Sprite spawned from Para-Goomba
$01A7DB 1 byte Sprite number Sprite spawned from Para-Bomb
$01A7DC 93 bytes Sprite subroutine (JSL) Subroutine that handles interaction between Mario and the sprite slot currently in X.
If the "Don't use default interaction with player" tweaker bit in $167A,x is not set, the routine checks for contact between Mario and the sprite and handles the default interaction by jumping to the routine at $01A83B. Otherwise, it just checks for contact and returns with carry set if there's contact, and clear if there's not contact (note that when the sprite uses default interaction, the return carry isn't meaningful).
Note that the routine will return "No contact" and skip interaction every other frame if the "Process interaction with player every frame" tweaker bit in $167A,x is not set, or if the sprite is horizontally offscreen during a frame in which it should be interacted with.
$01A7F0 3 bytes Sprite Misc. Change from [1D A0 15] to [EA EA EA] to fix a glitch where sprites lose their interaction with the player while touching the edge of the screen. An example of this happens when a Banzai Bill's leftmost pixel goes past the left edge of the screen.
$01A83B 779 bytes Sprite subroutine (JSR) Default sprite interaction routine. The sprite interaction routine calls it if $167A,x is positive/ bit 7 is not set.
- $01A852 controls number where the star chain should stop. To be used with $01A856
- $01A856 controls, how many points/ one-ups are added if the max limit of a star chain is reached. To be used with $01A852

$01A8D0 handles the code when you jump on a spiky enemy.
Change $01A8D3 to $AD (LDA $xxxx) to disable spin jumping on spiky enemies. On contrary, change $01A8D3 to $80,$01 (BRA $01) to disable jumping with Yoshi on spiky enemies. To disable both, change $01A8D0 to $80,$04 (BRA $04).

$01A91C handles the code when you jump on a non-spiky enemy.
Change $01A91F to $AD (LDA $xxxx) to make spin jumps count as normal jumps. On contrary, change $01A91F to $80,$01 (BRA $01) to make jumps with Yoshi on enemies count as regular jumps. To make both count as regular jumps, change $01A91C to $80,$04 (BRA $04).

Change $01A930 to $00 to enable the boost gain with spin jump kill.
$01A940 is the sound effect to play when you kill an enemy with a spin jump/ jump with Yoshi.

$01AA42 is the routine for carryable sprites.
Change $01AA61 to $AD (LDA $xxxx) to enable carrying more than one sprite at time even though you already have one.
$01A887 1 byte Sprite physics Number of frames to disable player contact for most sprites after being touched by Mario. Used to prevent issues like Mario getting hurt by a sprite he just bounced off of.
$01A8D3 1 byte Misc. Change from 0D to AD to prevent Mario from being able to jump on spikey enemies with the spin jump
$01A940 1 byte Sound effect Sound effect used when spinjumping an enemy or when Yoshi stomps on it.
$01A976 1 byte Sprite number Sprite that Super Koopa (sprite 73) becomes when stomped
$01A987 1 byte Sprite number Enemy spawned from stomping Dino-Rhino
$01A9D9 1 byte Timer Timer for displaying smashed shelless Koopas
$01AA0E 1 byte Misc. Change to 03 to prevent Bob-omb, Goomba, Mechakoopa's stun timers from being reset when kicked
$01AA15 1 byte ASM Change from 02 to FF to prevent Koopas from spawning shelless Koopas when jumped on. (Use with $0196C6)
$01AA29 1 byte Timer Stun timer for Goombas, Buzzy Beetles, Mechakoopas, Bob-ombs
$01AA2E 1 byte Misc. State of Koopa when stomped
$01AA33 15 bytes Subroutine (JSL) Boost player subroutine. Boosts the player up a bit or a lot depending on whether A/B are being pressed.
$01AA38 1 byte Sprite physics How high Mario bounces when he jumps on an enemy (normal jump & spin jump)
$01AA3E 1 byte Sprite physics How high Mario bounces when he jumps on an enemy with button A pressed (normal jump & spin jump)
$01AA5C 1 byte ASM Change from BEQ [F0] to BRA [80] and Mario will not be able to carry items by holding X or Y.
$01AAA0 1 byte Misc. State of Koopa shell when kicked
$01AAA5 1 byte Timer Number of frames to disable player contact with any carryable sprite after touching it without holding dash (not to be confused with $01A0A7). Default is $10.
$01AB05 2 bytes Music Change to [80 00] to not have star music override P-Switch music. Instead which ever is pressed/collected recently will have priority.
$01AB08 1 byte Music Music played when a POW is pressed
$01AB0D 1 byte Timer Time it takes for POW to disappear after jumping on it. Change to 00 to keep the POW after jumping on it.
$01AB1B 1 byte Timer How long blue and silver P-Switches last (default is $B0), in units of every 4th frame. Therefore PSwitchTimerLength = Seconds * 15
$01AB20 1 byte Timer POW shaking screen timer.
$01AB28 4 bytes Misc. Change to EA EA EA EA to prevent on screen sprites from turning into silver coins when the silver POW is active (USE WITH $02A9A1)
$01AB31 21 bytes Sprite physics Code that pushes the player out of solid carryable sprites, such as keys and springboards. Increments/decrements $94 (player x position).
$01AB55 1 byte Sound effect Change to [80] to give enemies (inc. goomba) the SMAS stomp sound.
$01AB63 1 byte Misc. Value that determines what to give the player for bouncing on 8 or more enemies consecutively. Change to [07] to give the player 8000 points instead of a 1up for the consecutive jumps.
(See ROM Map address $02ACE5 for other values)
$01AB6F 42 bytes Sprite subroutine (JSL) Routine that displays the white star effect at a sprite's position and plays the "kicked" sfx (used, for example, when kicking a Shell or killing an enemy with a Shell).

JSL to $01AB72 to show the star but not play the sound effect.
$01AB99 51 bytes Sprite subroutine (JSL) Routine that displays the contact graphics at Mario's position, usually called by sprites when Mario jumps on them.
$01ABCC 65 bytes Sprite subroutine (JSR) Routine that updates the sprite's X and Y position ($E4/$14E0/$14F8 and $D8/$14D4/$14EC) by its speed ($7E00AA and $7E00B6), this alone is without gravity and block interaction. The rate of movement is “subpixels” (1/16th of a pixel) per frame, similarly to Mario's speed handler at $00DC4F.

Best call these JSL subroutines instead, since this use JSR-RTS:
$01801A: Y speed, no gravity and no object interaction
$018022: X speed, no gravity and no object interaction
$01802A: X and Y speed, with gravity and with object interaction

$01ABCC-$01ABD7: Calls $01ABD8 with the current sprite X index +12 (number of existing sprite slots) to use the X position instead of Y.

$01ABD8: The position updater itself. Input:
  • X_Index = $00-$0B: Update Y position
  • X_Index = $0C-$17: Update X position


This also outputs the amount of pixels moved in $7E1491, which is used for making the player move with the sprites (such as platforms)
$01AC8A 1 byte Sprite Misc. How long until Magikoopa respawns after being killed. Normally $FF.
$01ACF9 55 bytes Subroutine (JSL) Random number generation subroutine. Access using JSL $01ACF9.

output:
16bit result at $148D.
$01AD42 18 bytes Sprite subroutine (JSR) Used by bank 01 sprites to calculate the player's Y position relative to the sprite (aka SubVertPos):
Output:
  • $0E (8-bit): Mario's Y position (using $D3) minus that of the sprite, but only the low byte thereof, so that overflow may occur
  • Y: 0 if the player is below the sprite, 1 otherwise.
$01AE88 8 bytes Sprite Misc. Sprites for the flying ? blocks to spawn, as indexes to the table starting at $0288A3. First four are used if Mario has a powerup, second four if he doesn't.
$01AEC7 1 byte ASM Change from $26 to $31 to prevent Thwomps from dropping while vertically off screen.
$01AEE1 1 byte Misc. What face to use for Thwomp if Mario comes close (00 - Calm, 01 - Grumpy, 02 - Raging)
$01AEEF 1 byte Misc. What face to use for Thwomp Crashing down (00 - Calm, 01 - Grumpy, 02 - Raging)
$01AF13 1 byte Timer Thwomp shaking screen timer.
$01AF18 1 byte Sound effect Thwomp Sound Effect.
$01AF1D 1 byte Timer Thwomp Stalling Timer.
$01AF39 1 byte Sprite physics Thwomp returning Y speed (between 80-90, C0, E0-FF) other values can give odd effects, so do not use any other bytes.
$01AF4A 5 bytes Sprite tilemap related Thwomp Tilemap
$01AF4F 5 bytes Sprite tilemap related YXPPCCCT - Thwomp Properties

Byte 01 - Top left
Byte 02 - Bottom left
Byte 03 - Top right
Byte 04 - Bottom Right
Byte 05 - Angry Thwomp Face
$01AF8D 1 byte Sprite tilemap related Angry Thwomp Face
$01AFEA 1 byte Sprite physics Thwimp jumping height (between 80-FF)
$01AFF3 1 byte Sprite physics Thwimp jumping Right speed.
$01AFF7 1 byte Sprite physics Thwimp jumping Left Speed.
$01AFFD 1 byte Sound effect Thwimp Sound Effect.
$01B002 1 byte Timer Thwimp stalling timer
$01B0A1 1 byte Misc. Value to add for flopping Cheep-Cheep animations
$01B0C4 1 byte Sprite physics How far cheep-cheeps will move (the greater the value, the longer the distance.)
$01B10F 1 byte Misc. Change to 00 to switch the GFX pages used by the swimming and flopping Cheep-Cheeps
$01B119 3 bytes Sprite tilemap related Replace 9D F6 15 with EA EA EA to make the fish (Cheep Cheep) tilemap use a single GFX page
$01B12A 36 bytes Sprite subroutine (JSR) This subroutine is what is used to kill stunned koopas and out of water fish. The following offsets may be of use:
$01B12B - How long to show the player kicked a sprite pose.
$01B130 - The sound effect to play (default #$03)
$01B132 - The sound effect channel (default $1DF9)
$01B13D - Y speed of the dying sprite (default #$E0)
$01B145 - Forces the player to face the killed sprite, change to NOP #2 (EA EA) to disable
$01B14E 44 bytes Sprite subroutine (JSR) Sprite based sparkle routine. Used by Magikoopa's magic and the goal sphere. The goal sphere calls $01:B152.
$01B212 4 bytes Sprite physics Table of X speeds for the floating spike ball (sprite A4). In order: Slow right, slow left, fast right, fast left.
$01B22E 5 bytes Sprite Misc. The code that checks the sprite buoyancy to determine whether sprites 5C and 5E should float on water or be suspended in the air. You can change this to 80 03 xx xx xx (xx can by any byte) to make them always stay in air or to 80 06 xx xx xx to make them always float.
$01B2C3 14 bytes Sprite tilemap related For sprites 55-58 and 5B-5E, partly determines which tilemap to use. 00 -> wooden or checkerboard platform, 01 -> flying rock or grassy platform. The table offset is the sprite number minus 55, and the fifth and sixth bytes and the last four bytes are not used.
$01B32B 1 byte Sprite tilemap related Change to 80 to let sprite 63 use the wooden platform tilemap only.
However, the size will be still different, depending on the x-pos.
$01B32E 1 byte Sprite tilemap related Left Tile of Checkerboard Platform (sprites 55, 57, 5C and 63)
$01B333 1 byte Sprite tilemap related Center Tile of Checkerboard Platform (sprites 55, 57, 5C and 63)
$01B33E 1 byte Sprite tilemap related Right Tile of Checkerboard Platform (sprites 55, 57, 5C and 63)
$01B345 1 byte Sprite tilemap related Tilemap: Left edge of line guided wooden platform (Sprite 62)
$01B34A 1 byte Sprite tilemap related Tilemap: Center of line guided wooden platform (Sprite 62)
$01B355 1 byte Sprite tilemap related Tilemap: Right edge of line guided wooden platform (Sprite 62)
$01B372 1 byte Sprite tilemap related Tilemap: Right edge of line guided wooden platform (Sprite 62)
$01B383 9 bytes Sprite tilemap related Grassy Orange Platform Tilemap (sprites 5D and 5E)
$01B38C 9 bytes Sprite tilemap related Flying Rock Platform Tilemap (Sprites 56 and 58)
$01B42F 1 byte Sprite tilemap related Edge of Flying Rock Platform (mirrored)
$01B434 1 byte Sprite tilemap related Bottom edge of Rock Platform (mirrored)
$01B43B 1 byte Sprite tilemap related Edge of Grassy Orange Platform (mirrored)
$01B440 1 byte Sprite tilemap related Bottom edge of Grassy Orange Platform (mirrored)
$01B44F 231 bytes Sprite subroutine (JSL) Invisible solid block subroutine. JSL to it in a sprite to make it solid (or act as a platform depending on bit 0 of $190F).

Inputs:
- $1528,x: number of pixels Mario has moved horizontally in the current frame, used to move Mario with the sprite when he's standing on top of it. Note: not cleared post-routine.

Outputs:
- Carry: set if Mario is on top of the sprite, clear if not.
- $C2,x: if the sprite is set to be solid from all sides, it's set to #$01 if it was #$00 before. It can be used as a flag for the sprite being hit from below by Mario.
- $1558,x: if the sprite is set to be solid from all sides, it's set to #$10 if $C2,x was #$00 before. It can be used as a timer for a bouncing animation when the sprite is hit from below.
- $1564,x: if the sprite is set to be solid from all sides, it's set to #$0F when hit from below (only for sprites >= $83). This is used to disable interaction with sprites for a short amount of time.
- $1471: set to #$01 if Mario is standing on top of the sprite.

Misc. data:
- $01B477: [$10] Y speed given to Mario when sitting on top of a solid block/platform.
- $01B4C0: Change to [$A0 $00] to make Super/Fire/Cape Mario have a 16x16 interaction field (like Small Mario) or change to [$A0 $01] to have a 16x32 interaction field (like Big Mario) (in conjunction with addresses $00EB79 and $03B67C).
- $01B4D9: [$10] Y speed given to Mario when hitting a solid sprite from below.
- $01B4F3: [$01] SFX that comes up when Mario hits a solid sprite from below.
- $01B4F5: [$1DF9] Bank used for the SFX when Mario hits a solid sprite from below.
$01B555 1 byte Sprite physics Speed of the horizontal platform that goes on forever (sprite 5E).
$01B65A 4 bytes Sprite tilemap related X displacement for each tile of the floating spike ball (sprite A4). In order: Top left, top right, bottom left, bottom right.
$01B65E 4 bytes Sprite tilemap related Y displacement for each tile of the floating spike ball (sprite A4). In order: Top left, top right, bottom left, bottom right.
$01B662 4 bytes Sprite tilemap related Tile properties for each tile of the floating spike ball (sprite A4). In order: Top left, top right, bottom left, bottom right.
$01B666 57 bytes Sprite subroutine (JSR) The GFX routine for the floating spike ball (sprite A4). $01B686 controls the first tile number used, and the second is always one 16x16 tile to the right of that.
$01B69F 2 bytes Misc. Length of Turn Block Bridge (sprites 59 and 5A)
$01B6A1 2 bytes Sprite physics X speed of Turn Block Bridge (sprites 59 and 5A)
$01B6A3 2 bytes Misc. Time of Turn Block Bridge (sprites 59 and 5A)
$01B77E 1 byte Sprite tilemap related Tile used by Turn Block Bridge (sprites 59 and 5A)
$01B790 14 bytes Sprite tilemap related Change to [09 xx 99 07 03 99 0B 03 99 0F 03 99 13 03] to change the palette used by the turn block bridge. ("xx" is the new palette value; 00 is the original.) This also prevents the last tile from being X-flipped.
$01B7B3 8 bytes Sprite subroutine (JSL) Finish OAM write caller subroutine (JSRs to the main one and ends in RTL).

Value in A: Amount of OAM slots to write minus 1 (i.e. to write 4 tiles, A must be #$03)
Value in Y: Size of the OAM tiles. #$00 = 8x8, #$02 = 16x16, any negative value (e.g. #$FF) = is manually set with $0460.

Note: This routine is only used if you finished to write with a regular sprite. Do not use it outside of regular sprites!
$01B7BB 136 bytes Sprite subroutine (JSR) Finish OAM write routine. JSL to $01B7B3 to access it from all banks other then bank $01.
$01B93C 2 bytes Sprite physics Green horizontal net Koopa's speed (right, left). Red horizontal net Koopas move twice this speed.
$01B94D 1 byte Sprite physics Green vertical net Koopa's initial speed. Red vertical net Koopas move twice this speed.
$01BA20 1 byte Sprite physics Lowest Map16 tile that a vertical net Koopa can climb on. Change from 07 to 06 to allow vertical net Koopas to climb on vine tiles.
$01BA24 1 byte Sprite physics Highest Map16 tile that a vertical net Koopa can climb on, plus one.
$01BA2B 1 byte Sprite physics Lowest Map16 tile that a horizontal net Koopa can climb on. Change from 07 to 06 to allow horizontal net Koopas to climb on vine tiles.
$01BA2F 1 byte Sprite physics Highest Map16 tile that a horizontal net Koopa can climb on, plus one.
$01BAB7 21 bytes Sprite tilemap related Gate Sprite Tilemap
$01BBD3 1 byte Sprite tilemap related Gate Sprite palette
$01BC34 4 bytes Sprite tilemap related The OAM Properties of the Magikoopa's magic.
$01BC67 8 bytes Misc. Change to EA EA EA EA EA EA EA EA and every Map16 block will change into sprites when touched by Magikoopa's Magic. (Not just turn blocks)
$01BC7D 1 byte Sprite number What Magikoopa's magic transforms turn block into (1up)
$01BC83 1 byte Sprite number What Magikoopa's magic transforms turn block into (Coin)
$01BC89 1 byte Sprite number What Magikoopa's magic transforms turn block into (Thwimp)
$01BC8F 1 byte Sprite number What Magikoopa's magic transforms turn block into (Yellow Koopa)
$01BCE0 16 bytes Sprite Misc. Magikoopa's Magic Sine Rotation Table.
$01BD83 1 byte Sprite tilemap related Magikoopa's Magic Tilemap (Circle)
$01BD88 1 byte Sprite tilemap related Magikoopa's Magic Tilemap (Square)
$01BD8D 1 byte Sprite tilemap related Magikoopa's Magic Tilemap (Triangle)
$01BF05 1 byte Sprite tilemap related Tile used by Magikoopa's Wand
$01BF29 1 byte Sound effect SFX played by Magikoopa
$01BF33 1 byte Sprite number The sprite that Magikoopa throws
$01BF6A 121 bytes Sprite subroutine (JSR) The aiming routine used by Magikoopas to aim their magic at (the upper tile of) the player. Input is the total speed (X + Y); output is Y speed in $00 and X speed in $01.
$01C0BD 1 byte Misc. [95] Change to A5 to stop the goal point bar from moving.
$01C0F0 1 byte Music Goal tape end level music
$01C10A 1 byte Sound effect Goal tape breaking sound effect.
$01C11B 1 byte Timer How long the bonus star number stays on screen
$01C158 1 byte Sprite tilemap related Goal Bar Tilemap
$01C164 1 byte Sprite tilemap related Palette/priority/flip of Goal tape tiles
$01C17A 4 bytes Misc. Change 22 CA F1 07 to EA EA EA EA to disable the digits made up of star tiles at the goal tape (which resemble the amount of bonus stars gathered)
$01C19E 1 byte Sprite tilemap related Tile for Growing Vine's Piranha head(1)
$01C1A2 1 byte Sprite tilemap related Tile for Growing Vine's Piranha head(2)
$01C1AE 1 byte Misc. Y speed of Growing Vine's growth
$01C1E6 1 byte Misc. Tiles created from growing vine sprite
$01C299 1 byte Sprite Misc. [05] Number of coins awarded when the player collects a Flying Red Coin (Sprite #$7E).
$01C313 4 bytes Sprite number Sprites used by the changing item (Mushroom, Flower, Feather, Star)
$01C33D 1 byte Sprite number Sprite that the Changing Item is made from
$01C345 4 bytes Sprite tilemap related Eaten berry palettes (unused, red, pink, green)
$01C34C 1 byte Misc. Change to 00 and the Fire Flower won't flip back and forth
$01C35F 1 byte Sprite tilemap related Eaten berry tile
$01C381 1 byte Sprite physics [$10] Y speed at which the powerups dropped from the item box fall. Does not include the feather, who's speed is handled at $01C730.
$01C42C 3 bytes ASM Set to EA EA EA to disable moving coin and star movement
$01C47B 1 byte Sprite physics Star bounce height (between 80-FF)
$01C510 20 bytes Misc. Table of items to put in the item box when a powerup is touched. Indexed by Mario's status ($19), plus 4 times the type of powerup touched. Powerups are ordered as follows:
$01C510 to $01C513 - Mushroom
$01C514 to $01C517 - Flower
$01C518 to $01C51B - Star
$01C51C to $01C51F - Cape
$01C520 to $01C523 - 1-up

For a list of possible values, see $0DC2.
Note: A value of 0x00 (empty) means that the item in the item box doesn't change.
$01C524 20 bytes Misc. Action to take when Mario touches a powerup. Indexed by Mario's status ($19), plus 4 times the type of powerup touched. Powerups are ordered as follows:
$01C524 to $01C527 - Mushroom
$01C528 to $01C52B - Flower
$01C52C to $01C52F - Star
$01C530 to $01C533 - Cape
$01C534 to $01C537 - 1up

Possible values are:
00: Give a mushroom
01: Do nothing
02: Give a star
03: Give a cape
04: Give a flower
05: Give a 1up
$01C538 28 bytes Sprite Misc. Handles what happens when the player touches a powerup. This routine will manage the item box as well. $01C549 [0B] is the sound effect to play when touching a powerup.

Set $01C543 to $80 to prevent the items from being put in the item box (though it still can be filled by other means).
$01C554 12 bytes Pointer powerup routines (indexed by values from $01C524 - $01C537)
$01C561 14 bytes Subroutine (JSR) Routine for when Mario touches a Mushroom. It sets the animation value and timer, then jumps to $01C56F.

$01C566: [$2F] replace with [$00] to completely skip the Mushroom powerup animation.
$01C566 1 byte Timer Length of Mario's growing animation. Setting it higher than 2F may cause it to use different Mario tiles.
$01C568 1 byte Mario tilemap Changing this to 99 will make Mario face the camera if he grows from a mushroom.
$01C570 1 byte Misc. How many points you get by getting a powerup.
00 = 200
01 = 400
02 = 800
03 = 1000
04 = 2000
05 = 4000
06 = 8000
07 and above = 1-up
FB = nothing
$01C57B 1 byte Sound effect Mario picking up a Mushroom or Flower Sound Effect.
$01C580 18 bytes Subroutine (JSL) Star Subroutine. JSL to it to give Mario star power. $01C581 controls how long stars last, $01C586 controls the music that is played during star power.
$01C599 1 byte Misc. What powerup feathers give you
$01C59D 1 byte Sound effect Sound Effect will make if you grabbed the feather. Change to 0C to make the sound effect like in SMB3.
$01C5EC 18 bytes Subroutine (JSR) Routine for when Mario touches a Fire Flower. It sets the animation value and timer, then jumps to $01C56F.

$01C5EC: [$A9 $20] Replace with [$80 $09] to completely skip the Fire Flower powerup animation.
$01C5F8 1 byte Misc. What powerup flowers give you
$01C609 5 bytes Sprite tilemap related Tilemap: Power-ups (Mushroom, Flower, Star, Feather, 1Up)
$01C612 1 byte Sprite tilemap related Tile used by the P-Balloon
$01C613 1 byte Sprite tilemap related Tile used by Flying Red Coin
$01C614 1 byte Sprite tilemap related Tile used by Flying Yellow 1Up Mushroom
$01C615 1 byte Sprite tilemap related Tile used by Flying Key?
$01C616 4 bytes Palette The palettes the star sprite flashes through. 00 is palette 8, 02 is palette 9, 04 palette A, etc. YXPPCCCT format.
$01C641 96 bytes Sprite subroutine (JSL) The GFX routine of the moving coin (sprite 21) and various other coin sprites, such as the directional coins.

- $01C641: 4 bytes, JSRs to the main routine and ends in RTL.
- $01C645: Start of the main GFX routine.
- $01C653: Tile used by the first frame. This is the 16x16 one.
- $01C667: Changing this to [80 07] will cause all 4 frames to use 2 tiles, and changing it to [D0 00] or [EA EA] will cause all 4 frames to use only 1 tile.
- $01C66A: Changing this to 00 will cause all 4 frames to be 8x8.
- $01C66D: Tiles used by the second, third, and fourth frames. These are all 8x8.
- $01C699: Changing this to 02 will cause all 4 frames to be 16x16.
$01C6A1 69 bytes Sprite subroutine (JSR) Graphics routine for the powerups (mushroom, fire flower, cape feather, and star).

- $01C6A3: Changing this to [80] will disable the star flashing.
- $01C6C2: Changing this to [30] will fix the powerups being covered by the background in levels with transparent layer 3.
- $01C6C3: Changing this to [80] will make the graphics for powerups always face right (preventing things like the automatic flipping for fireflowers).
$01C7EA 1 byte Sprite tilemap related Tilemap: Swinging Platform's Chain 1 (Sprite 5F)
$01C7EF 1 byte Palette Palette of chain link connected to platform
$01C871 1 byte Sprite tilemap related Tilemap: Swinging Platform's Chain 2 (Sprite 5F)
$01C8C7 1 byte Sprite tilemap related Tilemap: Swinging Platform's Chain 3 (Sprite 5F). Also used by Chains 4 and 5.
$01C8CC 1 byte Palette Palette of other chain links
$01C8FB 1 byte Palette Palette of wooden platform
$01C9BB 4 bytes Sprite tilemap related Tilemap: Brown Swinging Platform (Sprite 5F)
$01CACB 85 bytes ASM Sprite rotation preparation routine. First JSR to this, then to $01CB20 and finally to $01CB53.
$01CB20 51 bytes ASM Routine for preparing the game's global rotation routine. First you can JSR to either $01CACB
for sprite rotation or to $01CCC7 for Mode 7 rotation (this step seems to be optional). Next you JSR to this to prepare the rotation and finally you JSR to $01CB53.
$01CB53 330 bytes ASM The game's global rotation routine. First you can JSR to either $01CACB
for sprite rotation or to $01CCC7 for Mode 7 rotation (this step seems to be optional). Next you JSR to $01CB20 to prepare the rotation and finally you JSR to this.
$01CCC7 35 bytes ASM Mode 7 rotation preparation routine. First JSR to this, then to $01CB20 and finally to $01CB53.
$01CD1E 12 bytes Empty Unused ROM.
$01CD4F 1 byte Coordinate Y lo starting position of Morton/Ludwig/Roy at the boss battle.
$01CD7E 1 byte Coordinate X low position of Ludwig at the start of the boss battle.
$01CD82 1 byte Coordinate X high position of Ludwig at the start of the boss battle.
$01CE3E 2 bytes ASM Change [64 7B] to [EA EA] in order to prevent Mario from slowing down when Ludwig appears.
$01CEAE 2 bytes Sprite physics Ludwig's shell speed
$01CEB4 2 bytes Sprite physics Ludwig's horizontal jump distance
$01CECE 1 byte Timer Counts how long to delay before Ludwig jumps out of his shell.
$01CED8 1 byte Sprite physics Vertical height of Ludwig's jump (lower is shorter).
$01CF57 1 byte Misc. Ludwig jump right type modifier
$01CF58 1 byte Misc. Ludwig jump left type modifier
$01CFCD 1 byte Misc. Ludwig, Morton, and Roy's HP
$01CFD1 1 byte Sound effect Morton/Ludwig/Roy spiralling out sound effect.
$01D04F 1 byte Music Music played after Morton/Ludwig/Roy is defeated
$01D05A 1 byte Sound effect What sound is played by Ludwig's fireball.
$01D06F 1 byte Sprite number Sprite spawned by Ludwig von Koopa
$01D080 1 byte Misc. Height of fireball spawned by Ludwig.
$01D0B8 1 byte Misc. How long fireballs stay in Ludwig's mouth for.
$01D0BE 1 byte Sprite physics X Speed of Ludwig's Fireball (Right)
$01D0BF 1 byte Sprite physics Left speed of ludwig's fireballs (reversed)
$01D122 1 byte Sprite physics Morton and Roy's speed for first hit, left.
$01D124 1 byte Sprite physics Morton and Roy's speed for first hit, right.
$01D126 1 byte Sprite physics Morton and Roy's speed for second hit, left.
$01D128 1 byte Sprite physics Morton and Roy's speed for second hit, right.
$01D12A 1 byte Sprite physics Morton and Roy's speed for third hit, left.
$01D12C 1 byte Sprite physics Morton and Roy's speed for third hit, right.
$01D12F 1 byte Sprite physics Morton and Roy's vertical speed for first hit, up.
$01D131 1 byte Sprite physics Morton and Roy's vertical speed for first hit, down.
$01D133 1 byte Sprite physics Morton and Roy's vertical speed for second hit, up.
$01D135 1 byte Sprite physics Morton and Roy's vertical speed for second hit, down.
$01D137 1 byte Sprite physics Morton and Roy's vertical speed for third hit, up.
$01D139 1 byte Sprite physics Morton and Roy's vertical speed for third hit, down.
$01D239 2 bytes Sprite physics How fast Morton and Roy rotate when they're crawling on a wall or ceiling. By default FC and 04. The closer to 00, the slower it gets. Do not exceed above a difference of 80 (that is, don't make the first value 01-7F, and don't make the second value 81-FF). Using 00 isn't recommended either.
$01D26E 1 byte Sprite physics Falling speed of Morton and Roy
$01D28C 1 byte Timer How much the ground shakes after Morton/Roy hit the floor.
$01D295 1 byte Timer How long Mario is stunned for after Morton/Roy hits ground.
$01D29A 1 byte Sound effect Morton/Roy landing sound effect.
$01D29F 1 byte Timer How long Morton/Roy stays put after landing on floor.
$01D2D0 1 byte Misc. Timer determining how many frames to wait before being able to interact with Morton/Ludwig/Roy, after having interacted with it. (By default: 08)
$01D2FA 1 byte Misc. Y speed of Mario when he bounces off Morton/Roy (normal state) and Ludwig (always).
$01D2FE 1 byte Sound effect Which sound to generate when stomping Ludwig when he's inside his shell, and Morton/Roy/Ludwig when they're vulnerable (a second sound effect is generated too here, see $01D3AC).
By default #$02.
$01D31F 1 byte Sound effect SFX Played when Mario hits Morton/Roy while on the ceiling, while falling, and after they have just landed.
$01D330 1 byte Mario physics Mario's Y-Speed after jumping on Morton/Roy when they have just landed. Closer to 80 - highest.
$01D335 1 byte Sound effect Sound effect played when Mario hits Morton/Roy when going up the wall.
$01D343 1 byte Misc. X speed of Mario when he bounces off Morton/Roy when they're crawling on the left side of the screen.
$01D349 1 byte Misc. X speed of Mario when he bounces off Morton/Roy when they're crawling on the right half of the screen.
$01D34D 1 byte Misc. Y speed of Mario when he bounces off Morton/Roy in their unusual state (as in, crawling on walls, falling from ceiling).
$01D37A 1 byte Misc. Horizontal scaling of Morton/Roy/Ludwig (Mode 7) just after they're hit. The higher the value, the thinner they are. Extreme values, such as 00 (biggest) or FF (smallest), are not recommended as they may or may not partially affect the gameplay. Keep the value near the original, if you change it.
By default: #$18.
$01D383 1 byte Misc. Vertical scaling of Morton/Roy/Ludwig (Mode 7) just after they had been hit. The bigger the value, the shorter the Koopa Kids become.
Do not change the value to #$00 - #$1F or #$80 - #$FF as it will mess up. If changing value, keep it near the original since it might affect the Koopa Kid's height afterwards, if the value was too extreme.
By default: #$28.
$01D3A2 1 byte Timer How long Morton/Roy/Ludwig recovers after Mario has hit him.
$01D3AC 1 byte Sound effect Which sound to generate when stomping Morton/Roy/Ludwig when they're vulnerable (a second sound effect is generated too, see $01D2FE).
By default #$28.
$01D3F4 1 byte Sound effect Sound effect played when Morton, Ludwig and Roy takes damage from a fireball. Stored into $1DF9.
$01D3F8 6 bytes Misc. Counts fireball hits to Morton/Roy/Ludwig. Change to [80 06] to make Morton/Roy/Ludwig immune to fireballs.

Alternately, change to [FE 10 15 BD 10 15] to decouple their fireball HP from their stomp HP, so that they don't die after 2+ fireballs and a single jump.
$01D3FF 1 byte Misc. How many fireballs it takes before Morton/Ludwig/Roy are killed.
Counts up to the stomping HP counter as well. By default: 0C.
$01D446 4 bytes Sprite tilemap related Sprite tilemap: Ludwig Fireball
$01D6D2 6 bytes Sprite Misc. The code that determines whether sprite 63 should be brown or checkered. Change to "A9 xx EA EA EA EA" to make the platform always brown or always checkered (if brown, xx = 00, if checkered, xx = 01).

- $01D6D5: change to 00 to make sprite 63 use the small wooden platform no matter which x-position. (to use with $01D6D7)
- $01D6D7: change to 00 to make sprite 63 use the small wooden platform no matter which x-position. (to use with $01D6D5)
$01D6ED 3 bytes ASM Change to EA EA EA to make all line-guided sprites move at the same speed instead of the chainsaws, Grinder, and Fuzzy going twice as fast.
$01D6F0 23 bytes Sprite Misc. Change to B5 E4 29 10 4A 4A 4A 4A 9D 7C 15 80 14 EA EA EA EA EA EA EA EA EA EA to fix certain line-guided sprites: instead of moving left on odd starting X positions and not showing up at all on even ones (actually, they are just shifted offscreen), they will instead move right on even starting X positions.
x$01D6FA - X position (low byte) of sprites 65, 66, 67 and 68. Change it to 0F to fix its x position when it goes to the right. (USE WITH $01D701)
$01D701 - X position (high byte) of sprites 65, 66, 67 and 68. Change it to 00 to fix its x position when it goes to the right. (USE WITH $01D6FA)
$01D77D 1 byte ASM Change from F0 to D0 to switch the speeds of the line-guided sprites. (Normally, the chainsaws, Grinder, and Fuzzy move fast, while the platforms and rope move slow.) Use with $01D7A1.
$01D7A1 1 byte ASM Change from F0 to D0 to switch the speeds of the line-guided sprites. (Normally, the chainsaws, Grinder, and Fuzzy move fast, while the platforms and rope move slow.) Use with $01D77D.
$01D9F8 1 byte Mario physics Change from 10 to 0A to fix a glitch that if the player is climbing a rope mechanism and gets pushed off by solid objects, allows the player to climb in midair.
$01DB96 4 bytes Sprite tilemap related X displacement for the Grinder tiles (the one that doesn't follow line guides).
$01DB9A 4 bytes Sprite tilemap related [00 00 10 10] Y offset for the Grinder tiles (the one that doesn't follow line guides).
$01DB9E 4 bytes Sprite tilemap related [03 43 83 C3] OAM properties for the Grinder tiles (the one that doesn't follow line guides).
$01DBBF 1 byte Sprite tilemap related Tile used by Grinder (the one that doesn't follow line guides). Note that the sixth bit (#$02) should be cleared or it won't animate; the sixth bit of the frame counter is ORA'd to it.
$01DBF5 1 byte Sprite tilemap related Line-guided Fuzzball tilemap (Sprite 68)
$01DC28 1 byte Sprite tilemap related Line-guided Grinder Tilemap
$01DC47 4 bytes Sprite tilemap related Line-guided Rope's Motor Tilemap
$01DC4C 8 bytes Sprite tilemap related Line-guided Rope's rope tilemap
$01DC54 125 bytes Sprite tilemap related Line-guided rope graphics routine. Note that the visual length of the rope depends on whether the rope is in slot 6 as well as of the current sprite memory settings (sprite memory zero will always draw short ropes). Additional Data
$01DCA6 1 byte Sprite tilemap related Line-guided Rope's Motor YXPPCCCT properties (flip/priority/palette/GFX page)
$01DCAC 1 byte Sprite tilemap related Line-Guided Rope Palette
$01DDBD 1 byte Sprite number Sprite that the Bonus game is made from
$01DEE3 36 bytes Sprite tilemap related Sprite tilemap: Bonus Roulette
$01DF07 9 bytes Sprite tilemap related Palette info for the items in the bonus game sprite (0x82). The first three bytes are the palette for the Star. The next three are for the Mushroom, and the last three are for the Fire Flower. They're all expressed as even numbers where 00 = Lunar Magic palette 8, 02 = LM palette 9, and so on.
$01E092 1 byte Sprite physics Max Y-speed of the fireballs that fall from the sky during the Bowser battle. Default is $20.
$01E0DD 2 bytes Sprite Misc. Change to [A9 XX 9D 40 15 80 04 EA EA EA EA] to make the Podoboo's timer consistent, with XX being the amount of time for it to reappear.
$01E111 4 bytes Sprite tilemap related Change to EA EA EA EA to prevent Podoboo from having lava trail.
$01E14B 1 byte Timer Amount of time Bowser's sky fireballs remain on the ground before vanishing. Should not be set below #$02. Default is $80.
$01E190 4 bytes Sprite tilemap related Sprite tilemap: Bowser Flame
$01E1D1 1 byte Sprite number Sprite that can unlock keyholes in its stunned status (Default is 80: Key)
$01E1D5 1 byte Sprite number [$80] Sprite number that triggers the Keyhole exit when carried into a Keyhole.
If changing this, make sure to also edit $01F161.
$01E1F9 1 byte ASM [40] Change to [DE] to fix the problem where if there is more than one key on the screen, some of them won't activate the keyhole. Use with $01E20A and $01E20F. Mod note: Applying this hex edit makes the game crash if you eat a key with Yoshi.
$01E20A 1 byte ASM [2F] Change to [CD] to fix the problem where if there is more than one key on the screen, some of them won't activate the keyhole. Use with $01E1F8 and $01E20F. Mod note: Applying this hex edit makes the game crash if you eat a key with Yoshi.
$01E20F 1 byte ASM [2A] Change to [C8] to fix the problem where if there is more than one key on the screen, some of them won't activate the keyhole. Use with $01E1F8 and $01E20A. Mod note: Applying this hex edit makes the game crash if you eat a key with Yoshi.
$01E211 1 byte Timer Keyhole shrinking timer.
$01E216 1 byte Music Keyhole music
$01E251 1 byte Sprite tilemap related Top tile of keyhole
$01E256 1 byte Sprite tilemap related Bottom tile of keyhole
$01E25B 1 byte Sprite tilemap related Keyhole palette/GFX page
$01E292 1 byte Coordinate Y low position of 1UP from bonus game, to start out with.
$01E297 1 byte Coordinate Y high position of 1UP sprite from bonus game, to start out with.
$01E29C 1 byte Coordinate X low position of 1UP sprite from bonus game, to start out with.
$01E2A1 1 byte Coordinate X high position of 1UP sprite from bonus game, to start out with.
$01E2A6 1 byte Sprite physics Initial X speed of 1UP sprite from the bonus game.
$01E2AB 1 byte Sprite physics Initial Y speed of 1UP sprite from the bonus game.
$01E2B0 24 bytes Empty Unused data.
$01E2FB 1 byte Timer [68] How long time Monty Mole waits in the ground until jumping out (for the YI submap)
$01E2FD 1 byte Misc. [01] At which submap Monty Mole has more delay until jumping out.
00 is the main OW
01 is Yoshi's Island
02 is Vanilla Dome
03 is Forest of Illusion
04 is Valley of Bowser
05 is Special World
06 is Star World
$01E301 1 byte Timer [20] How long time Monty Mole waits in the ground until jumping out (for other areas than YI)
$01E33C 1 byte Misc. Tile spawned by ledge-dwelling Monty Mole. Uses the values for $7E009C.
$01E36A 1 byte Sprite tilemap related Attributes of Ledge-Dwelling Monty Mole
$01E38F 4 bytes Sprite physics [$10 $F0 $18 $E8] Monty mole X speed.
The first two bytes control the speed for the hopping mole while next two control the maximum speed for the chasing one.
$01E454 1 byte Sprite tilemap related Dry Bones and Bony Beetle crumble animation, frame 1
$01E45E 1 byte Sprite tilemap related Dry Bones and Bony Beetle crumble animation, frame 2
$01E522 11 bytes ASM Part of the code that makes sprite 32, the Dry Bones that stays on ledges, throw bones when the overworld level is 10D.

You can change $01E522 to [80 1E] to make sprite 32 never throw bones, change $01E526 to [80 05] to make it throw bones in all overworld levels, or change $01E52A to a different number to make it check a different overworld level. The default value is 31, and it follows the format of RAM address $13BF. If you change this behavior, you must also change the code at $01E59C.
$01E59C 11 bytes ASM Part of the code that makes sprite 32, the Dry Bones that stays on ledges, set its timer for throwing bones when the overworld level is 10D.

You can change $01E59C to [80 18] to make sprite 32 never throw bones, change $01E5A0 to [80 05] to make it throw bones in all overworld levels, or change $01E5A4 to a different number to make it check a different overworld level. The default value is 31, and it follows the format of RAM address $13BF. If you change this behavior, you must also change the code at $01E522.
$01E5F3 1 byte Sound effect Dry Bones Crumble Sound Effect.
$01E5FF 1 byte Timer Time it takes for Dry-Bones to come back to life.
$01E691 1 byte Sprite physics [10] Change to 80 to disable spin jumping from springboards
$01E69F 1 byte Mario tilemap Mario's pose after jumping high from the portable Springboard. (0A looks the best, 0B by default.)
$01E6A3 1 byte Sprite physics How high Mario jumps when jumping from the P. Springboard. (80 highest, 00-FF lowest.
$01E6AA 1 byte Sound effect Sound effect made by the portable springboard.
$01E723 1 byte Sprite tilemap related Tile used by flattened POW Switch
$01E723 1 byte Sprite tilemap related Tile to use for a smushed P-Switch
$01E729 1 byte Sprite tilemap related Tile used by flattened Shelless Koopa
$01E733 1 byte Sprite tilemap related Tile to use for stomped goomba
$01E7D1 1 byte Sprite Misc. How long until lakitu respawns after being killed. Normally $FF.
$01E922 1 byte Sprite tilemap related Tile used for Lakitu's cloud
$01E95E 1 byte Sprite tilemap related Change to 60 (RTS) to remove the face on Lakitu's cloud
$01E976 1 byte Sprite tilemap related Tile used by the face on Lakitu's Cloud
$01E97B 1 byte Sprite tilemap related Properties (YXPPCCCT) of the face on Lakitu's cloud
$01E985 4 bytes Sprite tilemap related Cloud Tilemap
$01E9DC 1 byte Sprite physics Change to 74 to disable Lakitu vertical movement
$01EA19 8 bytes Sprite subroutine (JSL) Wrapper for the subroutine at $01EA21 (changes the data bank and JSRs to it).
$01EA21 79 bytes Sprite subroutine (JSR) A subroutine for spawning a Spiny egg. This is used by both the normal and pipe-dwelling Lakitus, and it can be called via the wrapper at $01EA19.
$01EA32 is the sprite Lakitu throws.
$01EA36 is the sprite Lakitu throws when a silver P-switch is active.
$01EA69 is the palette of the sprite Lakitu throws when a silver P-Switch is active.
$01EAA8 1 byte Misc. Yoshi's standing animation
$01EAE7 1 byte Misc. Yoshi falling animation frame
$01EAED 1 byte Misc. Yoshi jumping animation frame
$01EAF6 1 byte Misc. Yoshi turning animation frame
$01EB01 1 byte Misc. Yoshi eating animation frame
$01EB09 1 byte Misc. Yoshi eating animation (while holding up)
$01EB16 4 bytes ASM Change this to [EA EA A5 73] to fix an issue with Yoshi if you disable ducking.
$01EB1D 1 byte Misc. Yoshi crouching animation frame
$01EB2D 1 byte Misc. Yoshi waiting animation frame
$01EB79 1 byte Misc. Change to 00 to make Mario walk even when riding Yoshi
$01EBBE 2 bytes Sprite physics Speed Yoshi has when mario get's hit while riding him. (Format = Left, Right)

Left Value must be a value over 80, Right Value must be a value under 7F
$01EBC2 8 bytes Misc. Growing animation sequence
$01EC04 72 bytes Sprite subroutine (JSR) The routine that makes Yoshi hatch.
$01EC2C - Change to "A9 00 EA EA" (LDA #$00 : NOP : NOP) to make Yoshi's "Thank you for saving me" appear on any map.
$01EC2F - Change "3A" (DEC A) to "EA" (NOP) to make Yoshi's "Thank you for saving me" message appear on the main map, as opposed to the Yoshi's Island submap.
$01EC36 - Change from "D0" (BNE) to "80" (BRA) to disable the Yoshi rescue message.
$01EC3C is Yoshi's thank you message. See ram $1426 for possible values.
$01ECFE 1 byte Sprite physics [F0] Yoshi's idle hopping speed. Change to $00 to make him not hop.
$01ED4D 2 bytes Mario physics Change from [64 7B] to [EA EA] (NOP #2) to preserve Mario's horizontal speed when mounting Yoshi.
$01ED4F 2 bytes Mario physics Change from [64 7D] to [EA EA] (NOP #2) to preserve Mario's vertical speed when mounting Yoshi.
$01ED60 1 byte Sound effect Mario jumping on Yoshi sound
$01ED6D 3 bytes ASM Change to [80 01 EA] to fix the glitch where you can hop off Yoshi to increase consecutive enemies stomped.
$01ED9C 1 byte Misc. [10] Change to [80] to disable jumping of Yoshi.
$01ED9E 45 bytes Subroutine (JSR) The routine that makes player leave Yoshi (by pressing A while on him).
$01EDE4 10 bytes Coordinate Y-position of Mario on Yoshi (1 byte for each frame; 10 bytes)
$01EDEE 3 bytes Misc. Riding Yoshi walking animation frames
$01EDF1 2 bytes Coordinate Base X-position of Yoshi (1st byte facing right; 2nd facing left)
$01EDF8 1 byte Misc. Yoshi animation speed while running
$01EDF9 13 bytes Sprite tilemap related Yoshi's head tiles (points to table at 9E47-9E57)
$01EE06 13 bytes Sprite tilemap related Yoshi's body tiles (points to table at 9E47-9E57)
$01EE13 13 bytes Coordinate X-position of Yoshi's head (facing right)
$01EE20 13 bytes Coordinate X-position of Yoshi's head (facing left)
$01EE47 13 bytes Coordinate Base Y-position of Yoshi
$01EE54 13 bytes Coordinate Y-position of Yoshi's head
$01EF04 4 bytes Sprite Misc. [A4 7D 30 02] Controls the rate at which Blue/Winged Yoshi's wings flutter and the rate at which the flying SFX plays, depending on Mario's Y speed direction.

Change $01EF04 to [80 02] (BRA $02) to make the flutter animation/SFX always slow.

Change $01EF06 to [80] (BRA) to make the flutter animation/SFX always fast.

Change $01EF06 to [10] (BPL) to invert the Y speed direction condition (Slow if rising, fast if falling).
$01EF0F 1 byte Sound effect SFX played by Blue/Winged Yoshi while flying (bank $1DFC).
$01F08B 1 byte Sprite tilemap related Tile used in Yoshi's throat as he swallows
$01F097 1 byte Sprite tilemap related Sprite tilemap properties of Yoshi's swallowing tile (YXPPCCCT) [01]. Change to [00] to make that tile use SP1 or SP2.
$01F0BA 3 bytes ASM Change from [AD AE 18] to [EA A5 9D] to fix the glitch where Yoshi will stick his tongue out twice if the screen is frozen (such as during a power up animation) while $7E14A3 is #$10.
$01F0D3 91 bytes Sprite subroutine (JSR) Subroutine that is called while swallowing a sprite or a berry with Yoshi to give the player a coin and handle berry effects.

- $01F0D4: ($06) SFX to play when swallowing something.
- $01F0D6: ($1DF9) Swallow SFX port.
- $01F0D8: change to $80,$02 to disable the coin given by swallowing sprites.
- $01F0EF: ($0A) Number of red berries Yoshi needs to lay an egg.
- $01F0F6: ($74) Sprite number to spawn when eating enough red berries.
- $01F0FE: ($29) SFX to play when swallowing a green berry.
- $01F100: ($1DFC) Green berry SFX port.
- $01F107: ($02) Amount of tens to add to the timer when eating a green berry ($01 = add 10 seconds, $02 = add 20 seconds, etc.); can glitch the timer if set to values higher than $0A.
- $01F11D: ($02) Number of pink berries Yoshi needs to eat to lay an egg.
- $01F124: ($6A) Sprite number to spawn when eating enough pink berries.
$01F0D4 1 byte Sound effect Yoshi swallowing sound
$01F0EF 1 byte Misc. How many berries Yoshi needs to eat before he lays an egg containing a mushroom. (Default: 0A)
$01F0F6 1 byte Sprite number Which sprite is generated when 10 red berries are eaten (by default : 74 - mushroom)
$01F11D 1 byte Misc. How many pink berries should be eaten before a coin game cloud appears. (By default: 02)
$01F124 1 byte Sprite number Which sprite is generated when two pink berries are eaten (By default: 6A)
$01F137 16 bytes Misc. Which powers the different Yoshi color+shell color combinations gives. It's a 4x4 table, where the order is green, red, yellow, blue, the Koopa colors are on the horizontal axis and the Yoshi colors are on the vertical axis. Setting a #$01 bit enables ground pounding, #$02 enables flight, #$03 enables both. The other bits aren't used.
$01F147 4 bytes Sprite Misc. Indices (divided by 4) to the Yoshi-shell ability table at $01F137 for each color of Yoshi (ordered yellow, blue, red, green).
$01F147 6 bytes Misc. What ability each shell colour Yoshi (This table points to the table at xF337)
(In the order of: brown[unused], grey[unused], yellow, blue, red, green)
$01F161 1 byte Sprite number [$80] Sprite number that sets the "Yoshi has a Key in his mouth" flag (at $7E191C) when being in Yoshi's mouth.
If changing this, make sure to also edit $01E1D5.
$01F1A5 1 byte Sprite Misc. Controls how fast Yoshi's swallow timer is decreased. By default it's $03, meaning that every 4th frame the timer is decreased. If changing this, it's preferred to use one of these values: $00, $01, $03, $07, $0F, $1F, $3F, $7F, $FF (higher = slower decrease).
$01F1AB 1 byte Sprite Misc. Change from F0 to 80 to make Yoshi never swallow sprites held in his mouth (shells, keys, P-switches, etc).
$01F26A 9 bytes ASM Code that makes Yoshi spit out flames when he has the red shell in his mouth
$01F270 - Which shell colour can give Yoshi fire breath.
$01F273 9 bytes ASM Code that makes Red Yoshi spit out flames no matter what shell colour is in his mouth
$01F279 - Which coloured Yoshi always gets fire breath
$01F27C 25 bytes Sprite Misc. Code that makes Yoshi spawn Yoshi Fireballs, by calling the subroutine at $01F295 three times.

Change $01F28B to $80,$01 to make Yoshi breathe just the top and bottom fireball.

Change $01F282 to $00 and $01F288 to $80,$04 to make Yoshi breathe just the middle fireball.
$01F290 1 byte Sound effect Yoshi spit fire SFX
$01F295 74 bytes Sprite subroutine (JSR) Subroutine to spawn a Yoshi Fireball, which uses the value in $7E:0000 to determine what speed values to use. After it returns, the value in $7E:0000 will be decremented by 1.

- $01F299 (1 byte): extended sprite number to spawn. By default it's $11 (Yoshi Fireball).
- $01F2D9 (3 bytes): X speed to give the fireball. By default it's $28,$24,$24 (middle, up, down fireball respectively).
- $01F2DC (3 bytes): Y speed to give the fireball. By default it's $00,$F8,$08 (middle, up, down fireball respectively).
$01F301 4 bytes Sprite physics X speeds to give sprites when spit out by Yoshi, depending on Yoshi's direction and if Yoshi is ducking or not. The values are, in order:
- ($30) Speed when spitting to the right while not ducking.
- ($D0) Speed when spitting to the left while not ducking.
- ($10) Speed when spitting to the right while ducking.
- ($F0) Speed when spitting to the left while ducking.
$01F30A 1 byte Misc. Change to 00 to keep Yoshi from sticking out his tongue
$01F30F 1 byte Sound effect Yoshi tongue sound. Uses $1DFC for sound effect.
$01F319 1 byte Sprite physics Speed at which Yoshi's tongue comes out.
$01F31E 1 byte Misc. Length of Yoshi's tongue (about 2.5 blocks)
$01F329 1 byte Timer Amount of time Yoshi's tongue stays at its maximum length
$01F33C 1 byte Sprite physics Speed at which Yoshi's tongue retreats after being at maximum point.
$01F35C 1 byte Sprite Misc. Yoshi swallow timer. By default it's $FF, but note that it decreases every 4th frame (see $01F1A5).
$01F360 3 bytes ASM The routine triggered when Yoshi eats a sprite. Starts by loading the sprite number and comparing it to a Koopa.
$01F448 1 byte Misc. X-shift of Yoshi's tongue segments
$01F465 1 byte Misc. How many tiles comprise Yoshi's tongue (doesn't change collision)
$01F469 1 byte Sprite Misc. OAM index of Yoshi's tongue. This is in the $0200 block, and it uses the next 4 slots after this as well.
$01F488 1 byte Sprite tilemap related Tile used by the middle of Yoshi's Tongue
$01F48C 1 byte Sprite tilemap related Tile used by the end of Yoshi's Tongue
$01F494 1 byte Sprite tilemap related Palette/Flip/Gfx page of Yoshi's Tongue
$01F498 1 byte Sprite tilemap related Value to add to Pal/flip/etc. of Yoshi's tongue when facing right
$01F4E8 1 byte Coordinate Y position of sprite grabbed by Yoshi's tongue
$01F524 106 bytes Sprite subroutine (JSR) Subroutine that checks for contact between Yoshi's tongue and any other sprite or berry.

- $01F55F: ($08) Clipping width of the tip of Yoshi's tongue.
- $01F563: ($04) Clipping height of the tip of Yoshi's tongue.

Change $01F524 from $5A to $60 to prevent Yoshi from eating anything (although he will still be able to eat berries by walking on them).
$01F5A2 1 byte Sound effect SFX played when Yoshi tries to eat an inedible sprite with his tongue
$01F5CD 1 byte Sprite number Sprite that Pokey is made from when swallowed
$01F605 1 byte Timer Amount of time Yoshi's tongue stays out before he swallows an enemy
$01F713 57 bytes Sprite subroutine (JSR) Subroutine that will damage Yoshi (register X should contain Yoshi's sprite slot number), knocking Mario off Yoshi, making Yoshi run, and triggering invincibility frames for Mario. In case you want it to check for star power first, call from $01F70E instead.
$01F71E 1 byte Sound effect Sound Effect when mario get's hit while riding yoshi.
$01F720 2 bytes Sound effect What bank $01:F71E loads its SFX from. (Default is $1DFC)
$01F72A 1 byte Mario physics Y Speed Mario has when he gets hit while riding yoshi.
$01F744 1 byte Timer How long invincibility lasts after yoshi runs away. 80 - longest, 00/FF - Shortest.
$01F74C 16 bytes Sprite subroutine (JSL) Small routine used when Yoshi Egg hatches. Sets $14C8,x to $08, $1540,x to $20, and plays the 'egg hatching' sound effect.
$01F757 1 byte Sound effect Yoshi egg coming out of block sound
$01F75C 4 bytes Sprite tilemap related GFX page of the tiles used in the Yoshi egg hatching animation ($01F760).
$01F760 4 bytes Sprite tilemap related Tile numbers for each frame in the Yoshi egg hatching animation. Read from right to left as (intact, breaking, breaking, puff of smoke).

Change alongside $019C17 and $01F794 to completely remap the Yoshi egg tiles.
$01F782 1 byte Sprite number Sprite that hatches out of colored yoshi egg when Mario does not already have a yoshi.
$01F789 1 byte Sprite number Sprite that hatches from sprite 2C (red/blue/yellow Yoshi egg) when Mario already has a Yoshi. (Default: 78 (1up))
$01F794 1 byte Sprite tilemap related Yoshi Egg Tilemap (only manifests if the Yoshi egg is in the normal status ($14C8 = #$08), i.e. free-standing Yoshi egg).

Change alongside $019C17 and $01F760 - $01F763 to completely remap the Yoshi egg tiles.
$01F88C 2 bytes Sprite physics Horizontal speed of Eeries
$01F88E 2 bytes Misc. Vertical speed of Eerie (sprite 39)
$01F8CF 2 bytes Sprite physics Maximum speed that Boo, Boo Block and Big Boo can accelerate to (first byte is right & down, second left & up).
$01F910 1 byte Misc. Change from D0 to 80 to disable Boo from stopping when Mario looks at it.
$01F929 1 byte Timer Time taken for Boo to turn around.
$01F9A5 10 bytes Misc. [38 ED B6 18 85 D3 A5 D4 48 E9] Change to [18 69 10 EA 85 D3 A5 D4 48 69] to make the Boo/Boo Block track Mario accurately.
$01FA2F 3 bytes Palette Change to 09 xx EA to make all three frames of the Boo Block use the same palette, xx being the palette bits.

Note that changing this to 02 won't make any *noticeable* difference if you use the default palettes...the correct setting for palette F, used for the non-block frame, makes it use the EXACT same colors that are used in palette 9, for some reason.
$01FA37 3 bytes Sprite tilemap related Boo Block Tilemap
$01FA3A 3 bytes Palette Boo Block Palettes
$01FA4E 4 bytes Sprite tilemap related Iggy/Larry ball tilemap
$01FB2E 1 byte Music Music played after Iggy/Larry is defeated
$01FB61 1 byte Sound effect SFX that plays when you hit Iggy/Larry into the lava.
$01FB95 1 byte Timer FD95 - How long it takes for Iggy/Larry to turn around.
$01FBC2 1 byte Misc. Iggy/Larry's speed for walking towards center
$01FBC6 1 byte Misc. Iggy/Larry's speed for walking towards center
$01FBD2 1 byte Misc. Iggy/Larry's speed for walking towards center
$01FBD6 1 byte Misc. Iggy/Larry's speed for walking towards center
$01FC70 1 byte ASM The left bound of Iggy/Larry's movement. If Iggy/Larry crosses this left bound, he falls in the lava.
$01FC74 1 byte ASM The right bound of Iggy/Larry's movement. If Iggy/Larry crosses this right bound, he falls in the lava.
$01FCC6 1 byte ASM How long Iggy/Larry is invincible after getting hit. Increase this value (preferably to 30) if you want to prevent the player from scoring combos.
$01FD00 1 byte Misc. Iggy/Larry's speed when stomped
$01FD46 1 byte Timer Amount of time until Iggy/Larry stops gliding after being hit by a fireball.
$01FDBD 1 byte Sprite number Sprite that Iggy/Larry throws
$01FE83 51 bytes Sprite tilemap related Sprite tilemap: Larry/Iggy
$01FEBA 1 byte Sprite tilemap related Iggy Koopa's Palette/GFX page/Priority/Flip
$01FEBB 1 byte Sprite tilemap related Larry Koopa's Palette/GFX page/Priority/Flip
$01FF53 4 bytes Sprite tilemap related Sprite tilemap: Larry/Iggy shell
$01FFBF 65 bytes Empty Unused data.
$028008 106 bytes Subroutine (JSL) "Drop Item From Box" Subroutine. JSL to it to make the current item fall from the box. Used when SELECT is pressed or if the player takes damage without dying.


Change $028008 from DA (PHX) to 6B (RTL) to disable the item box drop routine.
$028013 is Item dropping from itembox sound effect, written to $7E1DFC. Default value is [0C].
$028042 is Sprite status ($14C8) to drop items from the item box as (default is #$08 - normal routine).
$028052 is the fixed X position of dropped item from item box (default is #$78).
$028060 is the fixed Y position of dropped item from item box (default is #$20).
$028072 10 bytes Misc. Bob-omb explosion x spacing
$02807C 10 bytes Misc. Bob-omb explosion y spacing
$028086 242 bytes Sprite subroutine (JSL) Explode Bomb Subroutine. JSL to it each frame to make your sprite explode, but remember to load $1540,x with the explosion timer and setting the data bank to 02 (or 82) first.
$02808E is Bob-omb explosion area
$028114 is Bob-omb's explosion GFX tile
If you change $02811E from 38 to 18 (i.e. change SEC to CLC), the Bob-omb explosion will use the first graphics page.
$028226 57 bytes Sprite tilemap related Ludwig BG Tiles
$02825F 30 bytes Sprite tilemap related Morton/Roy BG Tiles
$0283FB 5 bytes Sprite physics Change all 4A bytes (LSR) to EA (NOP), to increase the speed of the walls in Morton/Roy's room when they're crashing down. The more EA bytes, the faster (twice as fast per EA) the walls will come down.
$0284BC 84 bytes Sprite subroutine (JSL) Water Splash Subroutine
$028528 103 bytes ASM Lava Splash Subroutine
$028540 is the objects to use for lava splash.
$02858F 80 bytes Subroutine (JSL) Star Sparkle GFX Subroutine (Doesn't make Mario invincible, but shows sparkles.)
$0285BA is where the Sprite/Block Star Sparkle GFX Subroutine starts (which is also used for Mario).
$02862F 52 bytes Sprite subroutine (JSL) Throw block creation subroutine.
$028648 - Change from B5 to A5 to change a bug with the throwblock where it may spawn a water splash upon spawn in a buoyancy-enabled level.
$02864E - Sprite number: Sprite that the Throw Block is made from.
$028656 - Throw Block timer. Change it to 00 and it stays forever.
$028663 92 bytes Subroutine (JSL) Block shatter subroutine. This creates 4 block pieces and plays the shatter sound effect, but it does not actually destroy the block; use $00BEB0 for that. If A is 00 when calling this, the pieces will be brown (e.g. a turnblock), otherwise they will flash palettes (e.g. a throwblock). It uses $98-$9B to set the X/Y position, though note that you may want to make sure this position is centered on the block first (set the low nibble of $98/$9A to 0).

Additionally, although this is a JSL routine, the data bank must be set to 02 prior to calling.
$028680 1 byte Sound effect Breaking Turn Blocks Sound Effect.
$028686 3 bytes Misc. Change to EA EA EA to disable the Turn Block shattering animation (turn blocks disappear when spin jumped). Also affects sprite 4C.
$0286BF 46 bytes Sprite subroutine (JSL) Yellow Yoshi earthquake subroutine.
$0286D7 1 byte Sprite Misc. Change from 0xDD to 0xD5 to fix a glitch with Yoshi's ground pound hitbox where it can warp to the wrong side of the screen if the low byte of Mario's X position is #$F8-#$FF.
$02873A 4 bytes Sprite physics Bounce sprite Y speed table, based on direction (or the value in $06 during the routine at $028752).
$02873E 4 bytes Sprite physics Bounce sprite X speed table, based on direction (or the value in $06 during the routine at $028752).
$028742 4 bytes Sprite Misc. Y offsets of each shatter particle (when spawned through $028663).
$028746 4 bytes Sprite Misc. X offsets of each shatter particle (when spawned through $028663)
$02874A 4 bytes Sprite Misc. Initial Y speeds of each shatter particle (when spawned through $028663)
$02874E 4 bytes Sprite Misc. Initial X speeds of each shatter particle (when spawned through $028663)
$028752 299 bytes Subroutine (JSL) A subroutine for spawning bounce sprites from blocks. It continues into the routine at $02887D.
Input:
$04 - bounce sprite number - 1
$05 - value to use in $02887D
$06 - speed index (see $02873A and $02873E)
$07 - value of $9C that the block will turn into

At 0x10989/$028789:
Block bounce sprite YXPPCCCT table, in the following order:
- Turn Block with item / ! Block
- Note Block
- ?-Block
- Unused Side Bounce Turn Block
- Glass Block
- ON/OFF Block
- Turn Block
$028765 1 byte Misc. [05] Number of points awarded for breaking a turn block, divided by 10.
$02881E 5 bytes Sound effect Code for one of two sound effects played when the ON/OFF switch block is hit (the other being at $02918C). This one plays first, when the block is actually hit. It also prevents the normal "hit block" sound from playing.

To disable this one (thereby restoring the normal block-hit sound effect), change the first two bytes here to [80 03].
$02887D 36 bytes Subroutine (JSL) Seems to be a subroutine for spawning stuff from blocks. What is spawned depends on the value of $05:

00 - nothing
01 - mushroom
02 - flower
03 - star
04 - cape
05 - 1-Up
06 - coin
07 - coin (sets multiple-coin-block timer)
08 - growing vine
09 - nothing?
0A - P-switch (blue/gray depending on block X position)
0B - key/wings/balloon/shell (depending on block X position)
0C - green Yoshi egg
0D - green Koopa shell (with stun timer set)
0E - changing item
0F - directional coins
10 - key (but a random blue shell-less Koopa also pops out)
11-FF - completely glitchy; best not to use

This subroutine can be used properly in a block, but the data bank must be 02 and the lower nybbles of $98 and $9A must be cleared. All values except 06 and 07 JSR to the main "spawn sprite from block" routine at $0288DC; values 06 and 07 JSR to the coin-spawning routine at $028A66.

Note: When used in a custom block under sprite interaction, make sure you preserve $1695 and then restore it after this routine to prevent a random splash sprite from spawning.
$028899 1 byte Timer [$FF] Value of the multiple coin block timer, set when hitting the block for the first time (see $7E186B).
$0288A1 2 bytes Sprite Misc. The sprite which comes out of a Yoshi egg when spawned from a question mark block. The first byte is the sprite ID when no Yoshi exists and the second byte is the sprite ID when Yoshi does exist. By default, these are $35 (Yoshi) and $78 (1-up).
$0288A4 1 byte Sprite number Sprite that, when Yoshi is not present, comes out of blocks 117, 118, 11F, and 120 when small, and 16B regardless of status. (Mushroom)
$0288A5 1 byte Sprite number Sprite that comes out of blocks 117 and 11F when big (Flower)
$0288A6 1 byte Sprite number Sprite that comes out of blocks 119 and 121; also comes out of block 11A (certain X-positions only) and 122 (all X-positions) when invincible (Star)
$0288A7 1 byte Sprite number Sprite that comes out of blocks 118 and 120 when big, and 16A regardless of status (Feather)
$0288A8 1 byte Sprite number Sprite that comes out of block 11A (1up)
$0288A8 1 byte Sprite number Sprite that comes out of block 11A, and block 12D if at least 30 coins have been collected. (1up)
$0288AB 1 byte Sprite number Sprite that comes out of block 11A(?) (Vine)
$0288AD 1 byte Sprite number Sprite that comes out of block 11D (POW)
$0288AE 1 byte Sprite number Sprite that comes out of block 125 (Balloon - if changed, it will produce the same sprite regardless of X position)
$0288AF 1 byte Sprite number Sprite that comes out of block 126 (Yoshi egg)
$0288B0 1 byte Sprite number Sprite that comes out of blocks 127 and 128 (Green shell)
$0288B1 1 byte Sprite number Sprite that comes out of block 12C (Changing Item)
$0288B2 1 byte Sprite number Sprite that comes out of block 114 (Directional coins)
$0288B5 1 byte Sprite number Sprite that, when Yoshi is present, comes out of blocks 117, 118, 11F, and 120 when small, and 16B regardless of status. (Mushroom)
$0288B6 1 byte Sprite number Sprite that comes out of block 117 when big (Flower), when Yoshi is present.
$0288B7 1 byte Sprite number Sprite that comes out of block 119 (Star), when Yoshi is present.
$0288B8 1 byte Sprite number Sprite that comes out of block 118 when big (Feather), when Yoshi is present.
$0288B9 1 byte Sprite number Sprite that comes out of block 11A (1up), when Yoshi is present.
$0288B9 1 byte Sprite number Sprite that comes out of block 11A, and block 12D if at least 30 coins have been collected, when Yoshi is present. (1up)
$0288BC 1 byte Sprite number Sprite that comes out of block 11A(?) (Vine), when Yoshi is present.
$0288BE 1 byte Sprite number Sprite that comes out of block 11D (POW), when Yoshi is present.
$0288BF 1 byte Sprite number Sprite that comes out of block 125 (Balloon - if changed, it will produce the same sprite regardless of X position), if Yoshi is present.
$0288C0 1 byte Sprite number Sprite that comes out of block 126 (Yoshi egg), if Yoshi is present.
$0288C1 1 byte Sprite number Sprite that comes out of blocks 127 and 128 if Yoshi is present (Green shell)
$0288C2 1 byte Sprite number Sprite that comes out of block 12C (Changing Item), if Yoshi is present.
$0288C3 1 byte Sprite number Sprite that comes out of block 114 (Directional coins), if Yoshi is present.
$0288C6 11 bytes Misc. Sprite in block status ($7E14C8 - $7E14D3) table.
$0288D6 3 bytes Sprite number Sprites spawned by key/wings/balloon/shell block, indexed by its X position. Note that this table is only 3 bytes long, not 4 bytes; the shell actually comes from the key's sprite status.
$0288D9 3 bytes Sprite Misc. Sprite status of sprite spawned by the key/wings/balloon/shell block, indexed by its X position. Note that this table is only 3 bytes long, not 4 bytes; the shell is given an invalid sprite status.
$028905 98 bytes Subroutine (JSL) The subroutine that generates a sprite from a block (tile 120 or 125, for example).
$02895F - Change from F0 to 80 to allow Directional Coins to reappear if you activate the block, then leave the area and come back.
$028968 1 byte Music Directional coins music.
$028A03 4 bytes ASM If you change [F6 C2 F6 C2] to [EA EA EA EA], then tile 125 will spawn a flying red coin instead of Yoshi wings on X-coordinate (X&3 = $01).
$028A08 2 bytes ASM [A9 FF] Change to [80 03] or [A9 00] to prevent the stun timer of the shell spawned from blocks 127 and 128 from ever being set. It will just spawn as a plain shell rather than a shell that will "wake up". (Or you can change the second byte to a different value to make the stun timer shorter.)
$028A42 2 bytes Sprite tilemap related Colours of P-Switches (Blue, Silver) when spawned by tile 11D
$028A44 34 bytes Subroutine (JSL) Subroutine for generating smoke when hitting a block.

You can use this in a custom block, but be sure to set up $98 and $9A accordingly.
$028A66 67 bytes Subroutine (JSR) Subroutine for spawning the coin that comes out of a ? block (for example tile 124).

It can be used in a custom block, but the low nybbles of $98 and $9A must be cleared first. This subroutine ends with RTS, but it may be accessed with a JSL to $02889D.
$028AB1 182 bytes Subroutine (JSL) 1up handler routine.

$02:8AC9 is the number of frames to wait before awarding each extra life after the first, when a 2up or higher is obtained. (Note that reducing this may skip some of the 1up sound effects.)
$02:8ACE is the sound effect.
$028B78 12 bytes Sprite Misc. OAM indexes for minor extended sprites.
$028B84 8 bytes Sprite tilemap related Sprite mappings for Broken Bricks, Broken Turn blocks, and Broken Throw Blocks
$028B8C 8 bytes Sprite tilemap related Broken Brick tile properties, YXPPCCCT format.
$028B98 24 bytes Pointer Minor extended sprite pointer table, 2 bytes per sprite.
$028BB0 95 bytes Sprite subroutine (JSL) Subroutine called by Yoshi that was originally supposed to show some smoke particles when the player mounts him, but it was eventually disabled.
Change $028BB4 from $B8 to $B9 to re-enable this effect.
$028BB4 1 byte Misc. Set to B9 to enable unused "Getting on Yoshi" dust animation
$028C6A 4 bytes Sprite tilemap related Table of 4x4 tiles used for the unused "getting on Yoshi" smoke minor extended sprite.
$028CAA 1 byte Sprite tilemap related Properties of the unused "getting on Yoshi" smoke minor extended sprite.
$028CB8 12 bytes Sprite tilemap related Reflecting Stream of Boo Buddies tilemap (Boos that follow the leader)
$028CC4 126 bytes Sprite Misc. The code for the minor extended sprites that make up the Boo stream.
$028D34 is palette and GFX page of the following Boos in the Boo stream. (If you use the default palettes, changing this to 03 won't have any effect, since the proper palette setting for the sprite (palette F) uses the same colors as palette 9.)
$028D42 13 bytes Sprite tilemap related Water Splash Tilemap
$028DD7 4 bytes Sprite tilemap related Tiles used by Rip Van Fish's Z's
$028E44 1 byte Sprite tilemap related Properties of Rip Van Fish's Z's. Set to 02 to make it use the first graphics page.
$028EB2 1 byte Sprite tilemap related Tile of broken Yoshi egg piece
$028EBC 1 byte Sprite tilemap related Palette/GFX page of broken Yoshi egg piece
$028ECC 6 bytes Sprite tilemap related Star Mario's Sparkle Tiles
$028F0B 1 byte Misc. Change to 00 to give Invincible Mario coin sparkles
$028F1A 1 byte Sprite tilemap related Palette of star sparkles
$028F2B 4 bytes Sprite tilemap related Lava splash tiles (1)
$028F76 1 byte Sprite tilemap related Lava splash palette/GFX page (1)
$0290C0 3 bytes ASM Decrements the timers used by spinning turn blocks to determine how long they should spin. Change to [EA EA EA] to make the last four turn blocks Mario has hit spin forever.
$02916D 1 byte Mario physics [A0] Y speed that note blocks give the player when bouncing on them.
$02917E 1 byte Sound effect Sound Effect from bouncing on a Note Block
$02918C 5 bytes Sound effect Code for one of two sound effects played when the ON/OFF switch block is hit (the other being at $02881E). This one plays second, once the bounce sprite for the switch finishes its animation.

To disable this one, change the first two bytes here to [80 03].
$0291B5 1 byte Misc. Value for $9C to change what Map16 tile is created when a multiple-coin-block is hit after its timer has run out.
$0291B9 1 byte Misc. Tile spawned behind bouncing block sprite
$0291ED 4 bytes Sprite Misc. OAM indexes for block bounce sprites (in the $0200 block).
$0291F1 7 bytes Sprite tilemap related Block bounce sprite tiles.

$40 - Turn Block (not turning).
$6B - Note Block.
$2A - ?-Block.
$42 - Unused Side Bounce Turn Block (change to $40 to fix the wrong tile that appears when hitting these blocks).
$EA - Glass Block.
$8A - ON/OFF Block.
$40 - Turn Block (turning). Note that changing this will only affect the tile that appears before the block starts spinning.
$029265 241 bytes Subroutine (JSR) INIT routine for most bounce sprites. Mainly used to allow bounce sprites to collect a coin directly above them, though the feature is unfinished and the coin's replacement tile ends up being a solid block instead of empty. Changing $0290ED to [AD] will disable this.

$029330 identifies which block on page 0 can be collected this way. Keep in mind that this is independent of the acts like setting and therefore support for other tiles has to be implemented manually.
$029356 60 bytes Subroutine (JSR) Code that creates a spinning coin sprite from a bounce sprite spawned by tile 2B. However, this never happens (tile 2B doesn't spawn a bounce sprite), so this subroutine seems to be unused. It is called at $02934A.
$029444 1 byte Misc. If you change this from FF to 00 then you won't see the eyes blinking or the shell shake. However, do keep in mind that it will affect the Bob-ombs too. If you hit them with a cape or a block from underneath it won't explode.
$029456 1 byte Misc. Score added for hitting an enemy from below or smacking an enemy with the cape

00 = Nothing at all
01 - 07 = Scores 200-8000.
08 = 1UP.
09 = 2UP.
0A = 3UP.
0B = 5UP (glitched).
0C-FB = Best not to use.
FC-FF = Scores 10-80
$0294C1 52 bytes Subroutine (JSL) Cape Mario smashes ground subroutine.
$0294F5 22 bytes Subroutine (JSR) Routine that processes capespin interaction with sprites, extended sprites, and blocks.
$029663 51 bytes Sprite subroutine (JSR) Routine that gets sprite clipping value for quake sprites (i.e. bounce sprites and Yoshi's stomp). Takes the place of "sprite clipping B" from the standard routines.
$029696 34 bytes Subroutine (JSR) Get the cape hitbox for clipping B.

$02969B [$02]: Hitbox horizontal displacement (low byte).
$0296A2 [$00]: Hitbox horizontal displacement (high byte).
$0296A5 [$14]: Hitbox width.
$0296B4 [$10]: Hitbox height.

Note that there is no vertical displacement for the cape hitbox.
$0296B8 4 bytes Sprite Misc. OAM indexes for the smoke images (in the $0200 block).
$0296CB 12 bytes Pointer Pointer to the smoke images. ($7E:17F0 - $7E:17FB)
$0297B3 1 byte Sprite Misc. [$F0] OAM index (in $0200) used by the sprite contact graphics (when not in Reznor/Morton/Roy's room). Since this sprite draws 4 tiles, it overlaps with Mario's fireballs (which use slots $F8 and $FC), causing it to be partially cutoff whenever there's some fireballs (it's easy to see if you spinjump on a spiky enemy while being fireflower Mario). To fix it, change this to $E8.
$029922 5 bytes Sprite tilemap related Mario/Luigi's trail of smoke tilemap. It uses palette 8.
$0299E9 4 bytes Sprite Misc. OAM indexes for the spinning coins that come out of ? blocks. The next index after each of these is also used (the GFX routine will store to $0200,y and sometimes to $0204,y as well).
$0299F1 183 bytes Sprite subroutine (JSR) Main handling routine for the spinning coins that come out of ? blocks.
$029A4F is a fourth of the rolling coin tilemap. This tile is 16x16.
$029A54 is the properties of the rolling coin flying from question blocks.
$029A6B controls the frames, changing to [D0 00] or [EA EA] will cause all 4 frames to only use 1 16x16 tile. Have to combine with $029A4F and $029A6E (same tile) for the complete effect.
$029A6E is three fourths of the tilemap of the rolling coin. These tiles are 8x8, but they're duplicated and placed above each other, making it 8x16.
$0299FD 1 byte Sprite physics Downwards Y acceleration for the coin sprites spawned from coin blocks. Decrease this value to make them fly higher.
$029AAD 1 byte Misc. How many points you receive for getting a coin out of a block.
$029AE6 1 byte Misc. Smoke sprite to spawn from coins spawned by coin blocks.
$029B2B 38 bytes Pointer Extended sprite routines (hammer, fireball, etc.)
$029B85 1 byte Sprite tilemap related palette/GFX page of volcano lotus' fireball
$029B94 1 byte Sprite tilemap related first tile of volcano lotus' fireball
$029B98 1 byte Sprite tilemap related second tile of volcano lotus' fireball
$029C8F 1 byte Sprite tilemap related Spin jump star palette
$029C94 1 byte Sprite tilemap related Spin jump star tile
$029D30 1 byte Sprite tilemap related Tile used by Wiggler's Flower once it falls off his head
$029D35 1 byte Sprite tilemap related The YXPPCCCT properties for the tile used by Wiggler's Flower once it falls off his head.
$029D40 1 byte Sprite tilemap related Size of the Wiggler's Flower once it falls off his head ($00 = 8x8; $02 = 16x16)
$029D4B 1 byte Sprite tilemap related The sprite graphics tile used for the Smiley Coin that is dropped by the Coin Cloud Game.
$029D50 1 byte Sprite tilemap related The YXPPCCCT properties for the tile used for the Smiley Coin in the Coin Cloud Game.
$029D55 1 byte Sprite tilemap related Size of smiley face coin tiles (00=8x8; 02=16x16)
$029E66 1 byte Sprite tilemap related Tile used by the arm that lowers Torpedo Ted (hand closed)
$029E6A 1 byte Sprite tilemap related Tile used by the arm that lowers Torpedo Ted (hand open)
$029E82 4 bytes Sprite tilemap related Lava splash tiles (2)
$029ED5 1 byte Sprite tilemap related Lava splash palette/GFX page (2)
$029F5C 1 byte Sprite tilemap related Tile number for the small bubble that Mario spawns when he is underwater.
$029F7A 1 byte Sprite tilemap related Yoshi's Fireball Frame 1 Tilemap
$029F7E 1 byte Sprite tilemap related Yoshi's Fireball Frame 2 Tilemap
$029F8B 1 byte Sprite tilemap related Yoshi fireball palette/GFX page
$029F99 8 bytes Sprite physics Table for Mario fireball bounce speed. Change to all zeros to make straight fireballs not fly off of slopes at an angle. Use in conjunction with the fireball hit timer at $029FE4.
$029FAB 2 bytes Sprite Misc. OAM indexes for the player's fireballs.
$029FD4 1 byte Sprite physics Initial Fireball Y Speed #2
$029FDB 1 byte ASM Change to 80 to make the player's fireballs go through objects.
$029FE4 1 byte Timer Fireball hit timer. This increases each time a fireball hits an object or a sprite. Changing it to #$01 will fix the bug with straight fireballs where the second fireball will go through objects if the first one is hitting an object. Use in conjunction with the bounce speed table at $029F99.
$02A046 1 byte Sound effect Sound effect played when the players fireball touches an object. It is #$01 by default, and the sound effect is in bank $1DF9.
$02A0B9 1 byte Sprite Misc. Change from #$09 to #$0B (or #$15 in a SA-1 ROM) to fix a glitch with both the player's and Yoshi's fireballs where they don't interact with sprite slots above 9.
$02A0FB 1 byte Misc. Change to 0A to make other enemies die like Chargin' Chuck when hit by fireballs
$02A0FC 1 byte Misc. Set to BD for unlimited Chargin Chuck fire hp
$02A103 1 byte Misc. Chargin Chuck fire hp
$02A107 1 byte Sound effect Sound effect to play when Chuck is killed by fireballs
$02A11D 1 byte Misc. Determines the number of points received for defeating a Chuck with fireballs (this also applies to any tweaked or custom sprites that have the "Takes 5 fireballs to kill" flag set). See $02ACE5 for a list of possible values.
$02A124 31 bytes ASM Code that turns a sprite into a coin after getting hit by a fireball.

- $02A125: the sound effect to play when other enemies are killed by fireballs.
- $02A12A: the sprite fireballed enemies spawn.
$02A153 8 bytes Sprite Misc. OAM indexes for extended sprites.
$02A15B 4 bytes Sprite tilemap related Fireball tile table
$02A15F 4 bytes Mario tilemap Mario's fireball tiles' flip/priority/palette/GFX page, YXPPCCCT format (May also affect the small flame left by Hopping Flame).
$02A163 4 bytes Sprite tilemap related Reznor Fireball Tilemap
$02A167 4 bytes Sprite tilemap related Reznor fireball tiles' flip/priority/palette/GFX page (YXPPCCCT format).
$02A17B 2 bytes Sprite tilemap related Change to [EA EA] (org $02A17B : NOP #2) to make Reznor's and Jumpin' Piranha Plant's fireballs always large, or to [80 27] (org $02A17B : BRA $27) to make them always small.
$02A1A4 115 bytes Sprite subroutine (JSR) 8x8 fireball GFX subroutine. Is it also used as a base for various other extended sprites' graphics (they JSR to it and then change the tile numbers and properties) as well as despawning them when they leave the screen.
$02A217 2 bytes Sprite tilemap related Small flame left by Hopping Flame Tilemap
$02A24C 1 byte Misc. Small flame's palette. It is added to the fireball's palette.
$02A2A4 1 byte Sprite tilemap related Tile used by Pitchin' Chuck's baseball once thrown
$02A2B1 1 byte Sprite tilemap related Palette/GFX Page of Baseball once thrown
$02A2CC 1 byte Sprite tilemap related Dry Bones: frame 1 of thrown bone
$02A2D0 1 byte Sprite tilemap related Dry Bones: frame 2 of thrown bone
$02A2DA 1 byte Sprite tilemap related Dry Bones: palette/gfx page of thrown bone
$02A2DF 8 bytes Sprite tilemap related Hammer Tilemap (Also, the flip of Dry Bones' bone)
$02A2E7 8 bytes Sprite tilemap related Palette/GFX Page of Hammer
$02A347 4 bytes Sprite tilemap related Dust Cloud Tilemap
$02A3F6 242 bytes Sprite subroutine (JSR) Extended sprite/player contact check and interaction subroutine.

$02A412 is the extended sprite interaction for the bonus game cloud.

$02A469 is the default extended sprite interaction to hurt Mario.

$02A4B3 is the speed Yoshi runs away when Mario gets hurt by an extended sprite and while he is riding yoshi (index: right, left).
Change $02A4B3 from [10 F0] to [18 E8] to fix an inconsistency where Yoshi runs slower when hurt from an extended sprite than hurt from a regular sprite.
$02A4E9 12 bytes Coordinate X-offsets for extended sprites $02-$0D's clipping. 12 bytes and they're in that order.
$02A4F5 12 bytes Coordinate Y-offsets for extended sprites $02-$0D's clipping. 12 bytes and they're in that order.
$02A501 12 bytes Coordinate Width for extended sprites $02-$0D's clipping. 12 bytes and they're in that order. Value may not exceed $7F. The clipping 'stretches' from the sprite's origin to the right.
$02A50D 12 bytes Coordinate Height for extended sprites $02-$0D's clipping. 12 bytes and they're in that order. Value may not exceed $7F. The clipping 'stretches' from the sprite's origin to below.
$02A519 46 bytes Sprite subroutine (JSR) "Get extended sprite clipping routine", for extended sprites $02-$0D (for Mario and Yoshi's fireballs, see $02A547). It stores the clipping X displacement low byte in $04, X displacement high byte in $0A, Y displacement low byte in $05, Y displacement high byte in $0B, width in $06, height in $07 (so it's equivalent to the "Get sprite clipping A" routine).

Inputs:
- X: extended sprite slot
- Data Bank: $02

Y is modified by the routine, so it should be preserved before calling it if needed.
Example code
$02A547 39 bytes Sprite subroutine (JSR) "Get Fireball clipping" subroutine. Valid for Yoshi's and Mario's fireballs, Stores the clipping X displacement low byte to $00, the clipping X displacement high byte to $08, the clipping width (#$0C) to $02, the clipping Y displacement low byte to $01, the clipping Y displacement high byte to $09, and the clipping height (#$13) to $03 (so it's equivalent to the "Get sprite clipping B" routine).

Input:
- Y: which extended sprite slot to get clipping of ($00-07 for Yoshi's fireballs, and $08-09 for Mario's)
Example Code
$02A56E 483 bytes Sprite subroutine (JSR) Object contact subroutine for the player's fireballs.
$02A773 19 bytes Level data Highest sprite slot number for non-reserved sprites, indexed by the sprite memory setting. The routine checks all slots beginning with the value in this table and loops until reaching the value in the table at $02A7AC.
$02A786 19 bytes Level data Highest sprite slot number for reserved sprite 1.
$02A799 19 bytes Level data Highest sprite slot number for reserved sprite 2.
$02A7AC 19 bytes Level data Lowest sprite slot number for non-reserved sprites, minus 1.
$02A7BF 19 bytes Level data Lowest sprite slot number for reserved sprite 1, minus 1. Reserved sprite 2 always uses FF.
$02A7D2 18 bytes Level data Reserved sprite number 1. Note that sprite memory setting 12 doesn't actually have an entry in this table and uses the first byte of the next table instead.
$02A7E4 18 bytes Level data Reserved sprite number 2. Note that sprite memory setting 12 doesn't actually have an entry in this table and uses the following byte (D0 by default) instead.
$02A7FC 482 bytes Subroutine (JSR) The routine that loads sprites from the level data. Called every frame; $02A802 is also called a few times during level load.
$02A906 1 byte Sprite number Which sprite number only uses a reserved slot if placed on an odd X-coordinate. (Default: $64, the line-guided rope)
$02A988 1 byte ASM Change from 10 to 80 to disable the green and red koopa shells from becoming yellow and blue after the special world is passed
$02A98B 1 byte Sprite number 1st sprite to change after beating Special Zone (Green Koopa)
$02A98F 1 byte Sprite number What sprite Green Koopa becomes after beating Special World (Yellow Koopa)
$02A991 1 byte Sprite number 2nd sprite to change after beating Special Zone (Red Koopa)
$02A995 1 byte Sprite number What Red Koopa becomes after beating Special World (Blue Koopa)
$02A9A1 1 byte Misc. Change to 80 to prevent off screen sprites from turning into silver coins when the silver POW is active (USE WITH $01AB28)
$02A9B1 1 byte Sprite number Sprite that all sprites change into when a silver POW is active. (Only works on offscreen sprites) Take note that the sprite will use the same palette as the silver coin that is normally spawned
$02A9C3 1 byte Palette Palette to use for sprites changed by Silver P-Switch (offscreen sprites only)
$02A9DE 45 bytes Subroutine (JSL) Routine to find an empty sprite slot, starting from the highest usable slot, minus 2. Returns it in Y. Exclusively used for generators, since they don't always need to spawn a sprite. In reality this just sets $0E to 2 and then jumps to $02A9E6.

$02A9E4 39 bytes Subroutine (JSL) Routine to search for free spite slot within the standard sprite slot region (as defined by the sprite memory setting).
Jumping to $02A9E6 will alternatively start searching from the highest available slot minus whatever value is in $0E (e.g. if the standard range is 1-9 and $0E = 0x03, then it will search only slots 1-6). For a value of 0x02, jump to $02A9DE instead.
$02AA0B 20 bytes Coordinate Position of all Boos in the reappearing ghosts generator, frame 1. Format: $xy.
$02AA1F 20 bytes Coordinate Position of all Boos in the reappearing ghosts generator, frame 2. Format: $xy.
$02AB23 1 byte Sprite Misc. [09] How many Boos are in the Boo ring (Minus 1).
$02AB2E 1 byte Sprite number [04] What sprite makes up the Boo Ring.
$02ABF3 1 byte Misc. Change from 3F to 7F to fix a bug where the sprite load (or permanently killed) status index 64 to 127 gets carried over to the next level.
$02AC18 1 byte Misc. Change from 30 to 80 to fix various glitches that occur when carrying a sprite through a pipe, such as the silver P-switch behaving like a blue one, throw blocks never expiring, and stunned enemies never waking up.
Essentially, this skips over a chunk of code that transfers the carried sprite to slot 0 and clears all of its tables, except for $15F6 (the YXPPCCCT data).
$02ACE5 10 bytes Subroutine (JSL) The "give points" routine. It ends in RTL, but it JSLs to the main one. To use this properly, A should contain one of the following values:

00 = 100
01 = 200
02 = 400
03 = 800
04 = 1000
05 = 2000
06 = 4000
07 = 8000
08 = 1up
09 = 2up
0A = 3up
0B = 5up (may glitch)
$02ACEF 69 bytes Subroutine (JSL) The main score sprite subroutine. Load a value into A and JSL to it to give the player points.

00 = ?
01 = 10
02 = 20
03 = 40
04 = 80
05 = 100
06 = 200
07 = 400
08 = 800
09 = 1000
0A = 2000
0B = 4000
0C = 8000
0D = 1up
0E = 2up
0F = 3up
10 = 5up (may glitch)
$02AD4D 21 bytes Sprite tilemap related Tiles used by Floating Point Notations, 1UPs, 2UPs, etc. 1st half.
$02AD63 21 bytes Sprite tilemap related Tiles used by Floating Point Notations, 1UPs, 2UPs, etc. 2nd half
$02AD78 17 bytes Misc. Score added from score sprites, divided by 10 (low byte)
$02AD89 17 bytes Misc. Score added from score sprites, divided by 10 (high byte)
$02AD9A 1 byte Misc. point rise speed
$02AD9E 6 bytes Sprite Misc. OAM indexes for score sprites.
$02ADA4 389 bytes Sprite Misc. The main routine for all score sprites. This handles graphics, giving lives/points/1-ups/coins, position updating, etc.
$02ADD9 is how many lives 1up Mushrooms give you.
$02ADDA is how many lives 2up gives you.
$02ADDB is how many lives 3up Moons give you.
$02ADDC is how many lives 5up gives you.
$02ADDD is how many coins you get from the (unused) x5, x10, x15, x20, and x25 coin sprites.
$02ADE2 is the attributes of 2up & 3up score sprites. The unused 5up sprites and coin sprites read past this table.
You can change $02AE03 to A9 xx EA to make 1up Mushrooms and 3up Moons give you xx lives.
$02AED9 1 byte Sprite Misc. Score sprite and 1-UP text sprite YXPPCCCT. It is recommend you to change only priority and palette.
$02AF2D 6 bytes Sprite Misc. Initial angles of the 3 platforms in the 3 Grey Rotating Platforms sprite.

Format:
- $02AF2D (Low Bytes)
- Platform 1 (Default: $00)
- Platform 2 (Default: $AA)
- Platform 3 (Default: $54)
- $02AF30 (High Bytes)
- Platform 1 (Default: $00)
- Platform 2 (Default: $00)
- Platform 3 (Default: $01)
$02AF42 1 byte Sprite number How many platforms (minus 1) are in the 3 Grey Rotating Platforms sprite.
$02AF52 1 byte Sprite number The sprite that the 3 platforms is made from
$02AFBC 1 byte Sprite number Sprite that the 'group of 5 eerie' is made of
$02B044 1 byte Sound effect SFX played by bowser fireball generator. Change to 00 to disable.
$02B04E 1 byte Sprite number Sprite spawned by bowser fireball generator
$02B07F 1 byte Misc. How often the Bullet Bill generator fires (sprite D5)
$02B089 1 byte Sound effect SFX played by bullet bill generator. Change to 00 to disable.
$02B094 1 byte Sprite number Sprite spawned by bullet bill generator
$02B0CB 1 byte Sprite Misc. Number of bullets to spawn from the surrounded Bullet Bill generator, minus one. (Don't set this higher than 04, or the tables at $02B0FA-$02B114 will underflow.)
$02B0CC 1 byte Sprite Misc. Number of bullets to spawn from the diagonal Bullet Bill generator, minus one. (Setting this to 04-08 will make the diagonal generator also spawn the surrounded generator's bullets. Don't set this higher than 08.)
$02B0D9 1 byte Timer Determines how often the surrounded/diagonal Bullet Bill generators fire. Multiply this by 2 to get the delay in frames.
$02B0E0 1 byte Sound effect SFX played by surrounded/diagonal Bullet Bill generators. Change to 00 to disable.
$02B0E0 1 byte Sound effect SFX played by Diagonal Bullet Bill generator. Change to 00 to disable.
$02B0FA 5 bytes Sprite Misc. Initial X position, within screen, of bullets spawned by surrounded Bullet Bill generator.
$02B0FF 4 bytes Sprite Misc. Initial X position, within screen, of bullets spawned by diagonal Bullet Bill generator.
$02B103 5 bytes Sprite Misc. Initial Y position, within screen, of bullets spawned by surrounded Bullet Bill generator.
$02B108 4 bytes Sprite Misc. Initial Y position, within screen, of bullets spawned by diagonal Bullet Bill generator.
$02B10C 5 bytes Sprite Misc. Direction of bullets spawned by surrounded Bullet Bill generator.

00 = right
01 = left
02 = up
03 = down
04 = up-right
05 = down-right
06 = down-left
07 = up-left
$02B111 4 bytes Sprite Misc. Direction of bullets spawned by diagonal Bullet Bill generator.

00 = right
01 = left
02 = up
03 = down
04 = up-right
05 = down-right
06 = down-left
07 = up-left
$02B11C 1 byte Sprite number Sprite spawned by the surrounded/diagonal Bullet Bill generators.
$02B15E 1 byte Misc. Frequency of fish jumping up with the flying fish generator (set more bits to decrease the frequency, e.g. $5F, $FF)
$02B16E 1 byte Sprite number Sprite spawned by Jumping Fish generator
$02B1CF 1 byte Sprite number Sprite spawned by Super koopa generator
$02B21A 1 byte Sprite number Sprite spawned by bubble generator
$02B28E 1 byte Sprite number Sprite spawned by Dolphin generator
$02B2E9 1 byte Sprite number Sprite spawned by eerie generator
$02B3F1 1 byte Sprite number Sprite spawned by Torpedo Ted generator
$02B42E 1 byte Sprite number Object that appears before Torpedo Ted is spawned
$02B46C 1 byte Timer How often Bullet Bill shooters fire
$02B495 2 bytes ASM Replace with 80 0A to make the Bullet Bill Shooter keep shooting even if Mario is standing next to the generator.
$02B4A8 1 byte Sound effect SFX played by Bullet Bill Shooter
$02B4B2 1 byte Sprite number Sprite Spawned by bullet bill shooter
$02B51A 12 bytes Sprite subroutine (JSR) Updates a bounce sprite's Y position without gravity (actually just changes the sprite index and JSRs to $02B526).
$02B526 46 bytes Sprite subroutine (JSR) Updates a bounce sprite's X position without gravity.
$02B554 12 bytes Sprite subroutine (JSR) The subroutine that updates an extended sprite's X position (without gravity).
$02B560 46 bytes Sprite subroutine (JSR) The subroutine that updates an extended sprite's Y position (without gravity).
$02B58E 46 bytes Sprite subroutine (JSR) The subroutine that updates the Y position of the spinning coin coming from a ? block.
$02B5BC 12 bytes Sprite subroutine (JSR) The X speed subroutine for minor extended sprites. Actually just adds 12 to the sprite index and JSRs to the Y speed subroutine, just like the equivalent subroutine for normal sprites.
$02B5C8 36 bytes Sprite subroutine (JSR) The Y speed subroutine for minor extended sprites.
$02B5EC 68 bytes Empty Unused data.
$02B65F 4 bytes Misc. X coordinates of Pokey animation
$02B663 2 bytes Misc. Pokey's X speed (right, left)
$02B68D 1 byte Sprite tilemap related Pokey's head after being eaten
$02B691 1 byte Sprite tilemap related Pokey's Body after being eaten
$02B78C 1 byte Sprite tilemap related Pokey's Body Tilemap
$02B78D 1 byte ASM Change to 90 and Pokey's head will be his body, and the other way round
$02B790 1 byte Sprite tilemap related Pokey's Head Tilemap
$02B795 1 byte Sprite tilemap related pokey's palette/gfx page
$02B8B8 2 bytes Sprite Misc. Max Speed Torpedo Ted can go. (Format = Right, Left)

The Left value must be over $7F while the Right value must be below $80.
$02B8BA 2 bytes Sprite Misc. How fast Torpedo Ted gains speed/accelerates until he reaches max speed. (Format = Right, Left)

The Left value must be over $7F while the Right value must be below $80.
$02B8BF 1 byte Sprite Misc. How many frames torpedo ted waits until he gains more speed.

(This value is AND'd with the frame counter)
$02B8F7 87 bytes Sprite subroutine (JSR) Torpedo Ted's GFX routine.

$02B92D: [$80] Tile number to use for Torpedo Ted's head.
$02B937: [$82] Tile number to use for Torpedo Ted's body when being lowered by the arm.
$02B93F: [$A0] Tile number to use for Torpedo Ted's body after being launched (first animation frame).
$02B943: [$82] Tile number to use for Torpedo Ted's body after being launched (second animation frame).
$02B94A: [$02] Size for Torpedo Ted's tiles ($00 = 8x8, $02 = 16x16).
$02B94E 2 bytes Sprite Misc. [$F4 $1C] X offsets (low byte) the Torpedo Ted's smoke is spawned at. The first byte is used when the sprite faces the right direction, the second when it faces the left direction.
$02B950 2 bytes Sprite Misc. [$FF $00] X offsets (high byte) the Torpedo Ted's smoke is spawned at. The first byte is used when the sprite faces the right direction, the second when it faces the left direction.
$02B952 82 bytes Sprite subroutine (JSR) Torpedo Ted's smoke spawning subroutine.

$02B990: [$01] Smoke sprite number.
$02B99F: [$0F] Smoke timer.
$02B9A4 25 bytes Sprite subroutine (JSL) This generates a Map16 tile at the position of the sprite currently being processed. It can be accessed with a JSL, and A should be set to the value of $9C you wish to use.
$02B9BD 28 bytes Subroutine (JSL) A subroutine that turns all sprites on screen into silver coins. Called when pressing a silver P switch.
$02B9DA 1 byte Sprite number Sprite to use for those changed by Silver P-Switch (the ones that change while on the screen)
$02B9EF 1 byte Palette Palette to use for sprites changed by Silver P-Switch (on screen sprites only)
$02BAA8 1 byte Misc. Lowest tile # that acts as a berry with sticking out the tongue
$02BAAC 1 byte Misc. Highest tile # that acts as a berry plus one with sticking out the tongue
$02BAC6 1 byte Sprite number Sprite that the berries are made from when swallowed
$02BB03 1 byte Misc. Tile spawned from eating a berry (using tongue). Corresponds to a value in $7E:009C.
$02BB17 4 bytes Sprite tilemap related Sprite tilemap: Yoshi Wings
$02BB1B 4 bytes Sprite tilemap related Palette/Gfx page/Priority/Flip of Yoshi Wing tiles
$02BB1F 4 bytes Sprite tilemap related Size of Yoshi Wing tiles
$02BB23 101 bytes Sprite subroutine (JSL) Subroutine for drawing and animating Yoshi's wings.
$02BC0E 6 bytes Sprite tilemap related Horizontal Dolphin Tilemap
$02BDA7 12 bytes Sprite Misc. Code that handles erasing Spike Tops that go offscreen vertically. Set to [80 0A] (BRA $0A) to disable this behavior, however keep in mind that this means the sprites will be able to walk around the underside of your level.
$02BE5E 4 bytes Sprite tilemap related Change from "C9 02 D0 17" to "C9 01 F0 17" to make Fuzzies/Sparkies to only use the latter's tilemap in the castle (01) sprite tileset, as opposed to using the sparky's tilemap in every sprite tileset apart from the mushroom (02).
$02BE6B 1 byte Sprite tilemap related Ground-guided Fuzzball Tilemap
$02BE7A 1 byte Sprite tilemap related Sparky Tilemap
$02BE95 8 bytes Sprite tilemap related Hothead Tilemap
$02BF0B 1 byte Sprite tilemap related Hothead's eyes frame 1
$02BF12 1 byte Sprite tilemap related Hothead's eyes frame 2
$02BF53 5 bytes Sprite tilemap related Urchin YXPPCCCT properties, eyes and body. Order: Eyes, upper left body part, upper right, lower left, lower right.
$02BF58 4 bytes Sprite tilemap related Urchin's Body Tilemap
$02BFA3 1 byte Sprite tilemap related Urchin's eyes frame 1
$02BFA9 1 byte Sprite tilemap related Urchin's eyes frame 2
$02C0CF 87 bytes Subroutine (JSL) (Unused) Z tile generation (Rip Van Fish Z tiles).
$02C0D9 77 bytes Sprite subroutine (JSL) Rip Van Fish Z tiles generation routine
$02C1A6 1 byte Sprite number Sprite Diggin' Chuck unearths
$02C29F 1 byte Misc. 1st type of block Chargin' Chuck can smash through, -0x100 (Throw Block)
$02C2A3 1 byte Misc. 2nd type of block Chuck can smash through, -0x100 (Turn Block)
$02C2BE 1 byte Misc. What top row of blocks become when Chuck smashes through them
$02C2DB 1 byte Misc. What bottom row of blocks become when Chuck smashes through them
$02C382 1 byte Sound effect Whistling Chuck Sound Effect.
$02C3B3 4 bytes Sprite Misc. Timers for Pitchin' Chuck's throwing. This table is indexed by the initial sprite X position. The timers themselves are formatted thus: t = $3F + $20n, where t is the timer value and n is the number of baseballs thrown in a row. So the sprite will throw 2, 4, 6, or 5 baseballs depending on its X position. However, this applies only when it is on the ground; if it is in the air, then the timing is different.
$02C3B7 4 bytes Sprite Misc. Pitchin' Chuck's animation frames when throwing baseballs while on the ground.
$02C3BB 16 bytes Sprite Misc. Pitchin' Chuck's animation frames when throwing baseballs while jumping.
$02C460 2 bytes Misc. Starting X-coordinate of baseball when thrown by Chuck (facing right, facing left)
$02C464 2 bytes Misc. X speed of baseball when thrown by Chuck (right, left)
$02C47A 1 byte Sprite number Object that Pitchin' Chuck pitches
$02C4F9 1 byte Sound effect SFX played by Clappin' Chuck's clap.
$02C521 1 byte Sprite physics [F0] Speed of Clappin' Chuck's idle bounce. Negative values closer to $80 result in a higher bounce. Change to a positive value ($00-$7F) to disable Clappin' Chuck's idle bouncing.
$02C530 1 byte Sprite physics [C0] Speed of Clappin' Chuck's clapping jump. Negative values closer to $80 result in a higher jump. Change to a positive value ($00-$7F) to disable Clappin' Chuck's clapping jump.
$02C537 1 byte Sound effect SFX played by Bouncin' and Clappin' Chuck's jump.
$02C5AF 1 byte Sound effect SFX played by Splitin' Chuck
$02C5C8 1 byte Sprite number Sprite spawned by Splittin' Chuck
$02C708 1 byte Sound effect Running Chuck sound
$02C7BE 1 byte Misc. Determines the number of points received for defeating a Chuck by stomping or with a star. See $02ACE5 for a list of possible values.

[Note: That list at $02ACE5 needs to have FB = Nothing, FC = 10, FD = 20, FE = 40, and FF = 80 added to it.]
$02C7E2 6 bytes ASM change from [B5 C2 C9 03 F0 27] to [EA EA EA EA EA EA] to remove the stomp immunity chucks get briefly when taking a stomp.
$02C7E8 1 byte Misc. Set to BD for unlimited Chargin Chuck stomping hp
$02C7EF 1 byte Misc. Chargin Chuck stomping hp
$02C7F7 1 byte Sound effect Hitting Chuck sound
$02C830 26 bytes Sprite tilemap related Horizontal disposition of Chuck's head (all variations).
$02C84A 26 bytes Sprite tilemap related Vertical disposition of Chuck's head (all variations).
$02C87E 7 bytes Sprite tilemap related Sprite tilemap: Chuck Head(All)
$02C909 104 bytes Sprite tilemap related Horizontal disposition of Chuck's body (all variations). Individual tables.
$02C971 26 bytes Sprite tilemap related Vertical disposition of Chuck's body (all variations).
$02C98B 51 bytes Sprite tilemap related Sprite tilemap: Chuck Body(All)
$02CA97 2 bytes Sprite tilemap related Clappin' Chuck's hand tiles (raised, clapping)
$02CAFA 2 bytes Palette [47 07] Change to 40 00 to be able to change the palette of Chargin' Chucks arm with Tweaker/etc. (USE WITH $02CB2E)
$02CB17 1 byte Sprite tilemap related Tile used by Chargin' Chuck's arm
$02CB2E 1 byte Palette [64] Change to 08 to be able to change the palette of Chargin' Chucks arm with Tweaker/etc.
(USE WITH $02CAFA)
$02CB7C 1 byte Sprite tilemap related Tile to use for the baseball when it's in Pitchin' Chuck's hand
$02CB81 1 byte Palette Palette/GFX page for baseball when it's in Pitchin' Chuck's hand
$02CB91 1 byte Sprite tilemap related Change from [04] to [0C] to fix a tilemap error in part of the Diggin' Chuck's dig animation that gives him a dislocated shoulder while facing left.
$02CB9B 3 bytes Sprite tilemap related Diggin' Chuck's Shoulder and Shovel Tiles
$02CCB1 4 bytes Misc. Unused cage wings: X offsets
$02CCB5 4 bytes Misc. Unused cage wings: Y offsets
$02CCFC 1 byte Sprite tilemap related Unused cage wings: Extended wing, top tile
$02CD00 1 byte Sprite tilemap related Unused cage wings: Closed wing, top tile
$02CD05 1 byte Sprite tilemap related Unused cage wings: Extended wing, bottom tile
$02CD09 1 byte Sprite tilemap related Unused cage wings: Closed wing, bottom tile
$02CD0E 1 byte Sprite tilemap related Unused cage wings: Attribute byte #1 (X flip, Y flip, priority, palette, MSB of tile num.)
$02CD1A 1 byte Sprite tilemap related Unused cage wings: Attribute byte #2 (size, MSB of X pos.)
$02CD45 8 bytes Sprite tilemap related The tile numbers used by sprite 60, the flat green switch palace switch. Tiles
$02CD4D 8 bytes Sprite tilemap related YXPPCCCT data for sprite 60, the flat switch palace switch. It contains the priority, flip, and tile high byte values. The palettes used by the top of the switch are at $02CD55. Tile properties
$02CD55 4 bytes Sprite tilemap related YXPPCCCT data for sprite 60, the flat switch palace switch. Contains palettes: used only for the top of the switch. The table is indexed by the value in $7E191E. Palettes
$02CD61 1 byte Misc. Tile spawned from stepping on big ! switch
$02CEE4 1 byte Misc. How many pieces make up the pea bouncer
$02CF2C 1 byte Sprite tilemap related Tile of pea bouncer
$02CF33 1 byte Sprite tilemap related Attributes of pea bouncer tile
$02CFFE 5 bytes Sprite physics Bounciness of each part of pea bouncer
$02D1C3 1 byte Misc. Lowest tile # that acts as a berry without sticking out the tongue
$02D1C7 1 byte Misc. Highest tile # that acts as a berry plus one without sticking out the tongue
$02D208 1 byte Misc. Tile spawned from eating a berry (w/o using tongue). Corresponds to a value in $7E:009C.
$02D212 1 byte Sprite physics [10] {+16} Horizontal speed limit when pressing Right from the Control Pad, when Mario uses the P-balloon or rides the Lakitu cloud.

The speed is a signed integer. Positive speeds (00..7F) go right. High speeds might cause glitches, like allowing Mario to fly inside solid blocks.
$02D213 1 byte Sprite physics [F0] {-16} Horizontal speed limit when pressing Left from the Control Pad, when Mario uses the P-balloon or rides the Lakitu cloud.

The speed is a signed integer. Negative values (80..FF) go left.
$02D248 1 byte Sprite physics [00] {0} Vertical speed when releasing Up and Down from the Control Pad, while Mario rides the Lakitu cloud.

This is a signed integer. Positive speeds (01..7F) go down. Negative speeds (80..FF) go up.

After using $02:D248, $02:D256 or $02:D25C, the game adds a slight, varying downward speed to the Lakitu cloud. So if you leave [00] in $02:D248, then the cloud will sink slightly while Mario rides the cloud.
$02D256 1 byte Sprite physics [10] {+16} Vertical speed limit when pressing Down from the Control Pad, while Mario rides the Lakitu cloud.
$02D25C 1 byte Sprite physics [F0] {-16} Vertical speed limit when pressing Up from the Control Pad, while Mario rides the Lakitu cloud.
$02D260 1 byte Sprite physics [F8] {-8} Vertical speed when releasing Up and Down from the Control Pad, while Mario uses the P-balloon. Change to [00] {0}, to prevent that Mario floats up gradually, so that Mario can float in place.
$02D268 1 byte Sprite physics [F0] {-16} Vertical speed limit when pressing Up from the Control Pad, while Mario uses the P-balloon.
$02D26E 1 byte Sprite physics [08] {+8} Vertical speed limit when pressing Down from the Control Pad, while Mario uses the P-balloon.
$02D421 1 byte ASM Change from 60 to 6B to fix the glitch where trying to disable the layer 3 smasher with generator D2 will cause the game to crash.
$02D51E 97 bytes Empty Unused data.
$02D599 1 byte Misc. Horizontal speed of Banzai Bill
$02D5A4 16 bytes Sprite tilemap related X offsets of Banzai Bill's tiles.
$02D5B4 16 bytes Sprite tilemap related Y offsets of Banzai Bill's tiles.
$02D5C4 16 bytes Sprite tilemap related TTTTTTTT of Banzai Bill's tiles.
$02D5D4 16 bytes Sprite tilemap related YXPPCCCT of Banzai Bill's tiles.
$02D7A4 1 byte Sprite tilemap related Tilemap: Ball 'n' Chain's chainlink
$02D7AA 1 byte Sprite tilemap related Tilemap: Chain used by platform (Sprites A3 and E0)
$02D7BF 1 byte Sprite tilemap related Palette of chain (Ball 'n' Chain & rotating grey platform)
$02D800 4 bytes Sprite tilemap related Tilemap: Ball 'n' Chain's Spiked Ball (Changing this will freeze the game!)
It's actually a routine which is used to waste time (6 NOPs + RTS) for the math registers, but Nintendo uses it for the tilemap, too. A typical example of executable tables.
$02D807 4 bytes Sprite tilemap related X Offsets of Ball n' Chain's Ball tiles.

Format:
- Top Left ($F8)
- Top Right ($08)
- Bottom Left ($F8)
- Bottom Right ($08)
$02D80B 4 bytes Sprite tilemap related Y Offsets of Ball n' Chain's Ball tiles.

Format:
- Top Left ($F8)
- Top Right ($F8)
- Bottom Left ($08)
- Bottom Right ($08)
$02D80F 4 bytes Sprite tilemap related Ball n' Chain's Ball YXPPCCCT Properties.

Format:
- Top Left ($33)
- Top Right ($73)
- Bottom Left ($B3)
- Bottom Right ($F3)
$02D82C 2 bytes Pointer Change from 00 D8 to E7 FF in order to move the location of Ball 'n' Chain's tilemap to address $02FFE7.
$02D844 4 bytes Sprite tilemap related Wooden Platform on Chain Tilemap (Sprites A3 and E0)
$02D863 1 byte Sprite tilemap related Palette of rotating grey platform
$02D8A1 8 bytes Sprite tilemap related Bubble Sprites Tile Table (2 animation frames with 2 bytes in them. Order: Goomba, Bob-Omb, Cheep-Cheep, Mushroom)
$02D8A9 16 bytes Sprite tilemap related Palette/GFX Page Table of Sprites in bubbles (Order: Goomba, Bob-Omb, Cheep-Cheep, Mushroom)
$02D919 1 byte Sound effect Bubble pop sound
$02D9A1 4 bytes Sprite number Sprites spawned from Bubbles (Goomba, Bob-omb, Cheep-Cheep, Mushroom)
$02D9A5 15 bytes Sprite tilemap related X Placement of Bubble Tiles, 3 animation frames, each 5 bytes
$02D9B4 15 bytes Sprite tilemap related Y Placement of Bubble Tiles, 3 animation frames, each 5 bytes
$02D9C3 5 bytes Sprite tilemap related Bubble Tile Table
$02D9C8 5 bytes Sprite tilemap related Palette/GFX Page of Bubble Tiles
$02D9CD 5 bytes Sprite tilemap related Bubble Tile Size Table
$02DA2F 1 byte Sprite tilemap related First tile used for the Bubble Sprites' pop animation ($64 by default on page 0).
$02DA33 1 byte Sprite tilemap related Second tile used for the Bubble Sprites' pop animation ($66 by default on page 0).
$02DA60 4 bytes Sprite Misc. [C9 02 D0 0A] (CMP #$02 BNE $0A) Change to [C9 08 B0 0A] (CMP #$08 BCS $0A) to fix the bug where hammer brothers will throw hammers if tossed into lava.
$02DA67 7 bytes Misc. How often Amazing Flyin' Hammer Brother throws hammers on each submap.
$02DA8E 1 byte Sprite Misc. Submap in which the Hammer Bro. throws hammers half as fast. By default: 00 (main map).
$02DA94 3 bytes ASM Set to EA EA EA to make Amazing Flyin' Hammer Brothers stop turning around.
$02DAC4 1 byte Sprite number Extended Sprite thrown by Amazing Flyin' Hammer Brother
$02DAF1 8 bytes Sprite tilemap related Sprite tilemap: Amazing Flyin' Hammer Brother
$02DB1F 1 byte Palette Amazing Flyin' Hammer Brothers palette (37 by default, change the sprite's palette by changing the second digit - "7" - to a number 0-F)
$02DBD7 3 bytes ASM Set to EA EA EA to disable Amazing Flyin' Hammer Brothers platform vertical movement
$02DBDA 3 bytes ASM Set to EA EA EA to disable Amazing Flyin' Hammer Brothers platform horizontal movement
$02DC1F 8 bytes Sprite tilemap related Sprite tilemap: Amazing Flyin' Hammer Brother Platform
$02DC27 8 bytes Sprite tilemap related Palette/GFX Page of Amazing Flyin' Hammer Brother Platform
$02DD65 1 byte Sound effect SFX played by Sumo Brother
$02DD96 1 byte Sprite number Sprite spawned by Sumo Brother
$02DE0E 8 bytes Sprite tilemap related Sumo Bros Tilemap (Head, Body Arms Up, Head, Body Arms Down)
$02DE1A 4 bytes Sprite tilemap related Sumo Bros Tilemap (Head, Head, Body Stomp)
$02DE1E 8 bytes Sprite tilemap related Sumo Bros Tilemap (Head, Head, Body Lift Leg, Head Head, Body Lift Leg)
$02DE85 1 byte Sprite tilemap related Sumo Bros' palette/GFX page
$02DEB6 1 byte Misc. Y speed of Sumo Bros' lightning bolt
$02E008 3 bytes Sprite tilemap related Volcano Lotus: Top Tiles
$02E012 1 byte Sprite tilemap related Volcano Lotus: Bottom
$02E056 1 byte Sprite tilemap related Palette/gfx page of Frame 3 of Volcano Lotus's top
$02E05A 1 byte Sprite tilemap related Palette/gfx page of Frames 1 and 2 of Volcano Lotus's top
$02E091 1 byte Sprite number Extended Sprite used by Volcano Lotus
$02E10E 1 byte Palette Palette of Jumping Piranha Plant leaves
$02E1CE 1 byte Sprite number The 2 objects that the fire-shooting Piranha Plant spits
$02E2D6 1 byte Misc. Tile spawned by Directional Coin sprite
$02E372 16 bytes Sprite tilemap related Large Green Bubble Tilemap
$02E382 16 bytes Sprite tilemap related The YXPPCCCT properties of each tile in the tilemap of a Large Green Bubble ($3B is no flip, $7B is horizontal flip, $BB is vertical flip and $FB is horizontal + vertical flip).
$02E520 4 bytes Misc. Tiles left behind by mushroom scale platforms (in order of left platform sinking; rising, right platform rising; sinking)
$02E599 1 byte Sprite tilemap related Mushroom Scale Platform Tile (mirrored for right side)
$02E5C7 1 byte Sprite physics Rightward speed of the moving Ghost House hole.
$02E5D0 1 byte Sprite physics Leftward speed of the moving Ghost House hole.
$02E66A 4 bytes Sprite tilemap related Ghost House Moving Hole Tilemap
$02E6A8 1 byte Sprite tilemap related Fishin' Lakitu's rod
$02E6AD 1 byte Sprite tilemap related Tile used by Fishin' Lakitu's 1up bait
$02E6B2 1 byte Sprite tilemap related Fishing Pole's palette
$02E6B7 1 byte Sprite tilemap related 1up Bait Palette
$02E707 1 byte Sprite tilemap related Tile used by line on Fishin' Lakitu's rod
$02E70C 1 byte Sprite tilemap related Fishing Line Palette
$02E83D 8 bytes Misc. Tiles left behind by the left (first 4 bytes) and the right (next 4 bytes) side of the Growing/Shrinking Pipe, in the format of $7E009C. The order of the bytes corresponds to the pipe waiting at the bottom, growing, waiting at the top, and shrinking.
$02E91A 1 byte Sprite tilemap related Left tile from the Growing/shrinking pipe end
$02E91F 1 byte Sprite tilemap related Right tile from the Growing/shrinking pipe end
$02E99B 1 byte Sprite physics Rising speed of Pipe Lakitu
$02E9E3 1 byte Sprite physics Sinking speed of Pipe Lakitu
$02E9E6 6 bytes Sprite tilemap related Pipe-Dwelling Lakitu Tilemap
$02EA1B 1 byte Sprite tilemap related YXPPCCCT properties (Palette/GFX page/Properties) of Pipe Lakitu.
$02EAF2 4 bytes ASM Change to EA EA EA EA to stop Super Koopas from spawning feathers. (In conjunction with $02EB19)
$02EAFE 1 byte Sprite number Sprite spawned by Super Koopa when stomped (feather)
$02EB19 4 bytes ASM Change to EA EA EA EA to prevent Super Koopas from spawning feathers (In conjuction with $02EAF2)
$02EC72 36 bytes Sprite tilemap related Sprite tiles for sprites 71, 72, and 73: Super Koopa.
$02EC96 36 bytes Sprite tilemap related Partial data for the YXPPCCCT of Super Koopa. Bit 1 is used to determine whether the tile is part of the Koopa (0) or cape (1). If it is a cape tile, then the CCC bits should not be used; edit $02ED39 and $02ED40 instead.

Edit both $02ECA9 and $02ECAD from 00 to 01 to fix garbage tiles when a stomped left-flying Super Koopa is falling down.
$02ED39 2 bytes Palette Partial data for the YXPPCCCT of the flashing Super Koopa's cape. Specifically, these are the CCC bits (palette).
$02ED40 1 byte Palette Partial data of the YXPPCCCT for the red/yellow Super Koopa's cape. Specificially, these are the CCC bits (palette) of the yellow cape; the red cape comes from this times 2.
$02ED9F 1 byte Sprite number Sprite that the 'group of floating skulls' is made from
$02EE04 1 byte Sprite tilemap related Floating Skull tile (frame 1)
$02EE08 1 byte Sprite tilemap related Floating Skull tile (frame 2)
$02EE62 1 byte Sprite physics [0C] Speed of the floating skulls.
$02EF16 1 byte Sprite physics X-speed of the coin game cloud (When Yoshi eats two pink berries)
$02EF2E 1 byte Sprite tilemap related What tile the coin game cloud uses
$02EF49 1 byte Sprite tilemap related X-position of the face on the coin game cloud
$02EF51 1 byte Sprite tilemap related Y-position of the coin game cloud face
$02EF56 1 byte Sprite tilemap related Tile to use for the face of the cloud game.
$02EF5B 1 byte Sprite tilemap related Cloud's face palette
$02EF81 1 byte Sprite number Sprite that is generated when all of the Coin Game Cloud coins are collected
$02EFBD 1 byte Sprite number Object that the Coin Game Cloud drops
$02F031 4 bytes Sprite physics Wiggler speed. First 2 bytes: normal speed. Next 2: mad speed
$02F04D 1 byte Palette The palette used by Wiggler when he is angry. (Default: 08.) YXPPCCCT.
$02F051 1 byte Misc. Wiggler's Palette cycling sequence
00=Palette 00
02=Palettes 00,02
04=Palettes 00,04
06=Palettes 00,02,04,06
08=Palettes 00,08
0A=Palettes 00,02,08,0A
0C=Palettes 00,04,08,0C
0E=All palettes
$02F058 1 byte Misc. Result of Wiggler's Palette change?
$02F10C 4 bytes Sprite tilemap related Wiggler's Body Tilemap
$02F16E 1 byte Sprite tilemap related Wiggler's Head
$02F19A 1 byte Misc. How many segments Wiggler has
$02F1B1 2 bytes Pointer Pointer to use for X placement of Wiggler's angry eyes tile
$02F1BE 1 byte Sprite tilemap related Wiggler's angry eyes tile
$02F1DF 1 byte Misc. X-coord of Wiggler's flower
$02F1E4 1 byte Sprite tilemap related Tile used by Wiggler's Flower (when on its head)
$02F1EE 1 byte Palette Palette of Wiggler's flower
$02F1F7 1 byte Misc. Size of Wiggler's flower/angry eyes tile
$02F26C 1 byte Sound effect SFX that comes up when Mario stomps a Wiggler
$02F2D3 2 bytes Misc. X placement of flower tile on Wiggler's head (1 byte facing right, 1 byte facing left)
$02F2D5 2 bytes Misc. X placement of Wiggler's angry eyes tile (1 byte facing right, 1 byte facing left)
$02F2E3 1 byte Sprite number Object that falls off of Wiggler when stomped
$02F354 1 byte Sprite physics Y position that Yoshi's House birds (sprite 8A) fall to after hopping. This should be set to 8 pixels above the height of the platform the birds "stand" on.
$02F3DB 5 bytes Sprite tilemap related Yoshi's House Birds Tilemap
$02F3E0 2 bytes Sprite tilemap related Flip of birds' tiles (right, left)
$02F3E2 4 bytes Palette Palettes of hopping birds
$02F427 1 byte Sprite tilemap related [$00] The sprite size of the birds on Yoshi's House.

Format:
- $00 = 8x8
- $02 = 16x16
$02F4AF 1 byte Sprite tilemap related Tile used by Smoke from Yoshi's House fireplace
$02F4E7 4 bytes Sprite tilemap related Tilemap of flame in Yoshi's House fireplace
$02F4F3 1 byte Misc. X-coords of flame tiles
$02F4FB 1 byte Misc. Y-coord of flame top
$02F500 1 byte Misc. Y-coord of flame bottom
$02F529 1 byte Sprite tilemap related Fireplace flame palette
$02F554 1 byte Sprite number Sprite spawned from the fireplace that the Side Exit Enable sprite uses
$02F58C 8 bytes Sprite subroutine (JSL) Wrapper to $02F639 which allows you to draw the No-Yoshi sign from any bank.
$02F594 133 bytes Sprite subroutine (JSL) Ghost House Exit main pointer. The actual routine is located at $02F5D0; this is merely a wrapper for it, so it can JSL'ed.
$02F5BC 10 bytes Sprite tilemap related Ghost House Exit Door tilemap
$02F629 8 bytes Sprite tilemap related No Yoshi Signpost Tilemap
$02F631 8 bytes Sprite tilemap related No-Yoshi Signpost YXPPCCCT properties.
$02F639 53 bytes Sprite tilemap related Code which draws the No-Yoshi sign during the intro. If you want to access it from any bank, jump to $02F58C.
$02F721 32 bytes Sprite tilemap related Ghost House Doors Tilemap
$02F825 18 bytes Pointer 16-bit pointer to cluster sprites.
$02F904 8 bytes Sprite tilemap related Sumo Bros' Flame Tilemap
$02F98F 1 byte Sprite tilemap related Sumo Bros' Flame palette/gfx page
$02FA0E 4 bytes Sprite tilemap related Sprite tilemap: Castle BG Flame
$02FA12 4 bytes Sprite tilemap related YXPPCCCT properties for the Castle BG Flame
$02FA84 20 bytes Coordinate Ten 16bit values, telling where on the circle the Boo Ring ghosts are. #$0200 is 360°.
$02FA98 291 bytes Sprite Misc. The code for cluster sprite 04, the Boo from a Boo ring.
$02FB39 is radius of Boo rings along the X-axis.
$02FB5C is radius of Boo rings along the Y-axis.
$02FBBF 8 bytes Sprite tilemap related Boo Ring Tilemap (used by Sprites E2, E3, and generators E1 and E5)
$02FDB8 4 bytes Sprite tilemap related Swooper Death Bat tilemap (change 4th byte to E8 to correct graphics)
$02FE5E 1 byte Sprite tilemap related Tile to use for bonus game 1-ups.
$02FE63 1 byte Sprite tilemap related Tile properties of bonus game 1-ups.
$02FE71 84 bytes Sprite subroutine (JSR) Cluster sprite/player interaction routine. This routine assumes that the cluster sprite is approximately 16x16.
$02FF50 20 bytes Sprite tilemap related OAM indexes of cluster sprites. Apparently can overwrite the coin sprites from blocks, sparkles, item box, and fireballs.
$02FF64 8 bytes Sprite tilemap related OAM indexes of the 1-Ups from the bonus game.
$02FF98 11 bytes Sprite subroutine (JSR) "Update cluster sprite X position without gravity" subroutine.
$02FFA3 46 bytes Sprite subroutine (JSR) "Update cluster sprite Y position without gravity" subroutine.
$02FFE2 30 bytes Empty Empty on default. Can be used for various purposes.
$038098 1 byte Timer How long the fadeout is on the screen before it disappears. (Big Boo Boss)
$03809D 1 byte Music Music played after Big Boo Boss is defeated.
$0380CE 1 byte Timer How long it takes for Big Boo Boss to appear. (Stalling)
$0380DB 1 byte Timer How long it takes for Big Boo Boss to appear. (appearing stage)
$0380EA 1 byte Sound effect Big Boo Boss appear sound effect.
$0381A2 1 byte Misc. Big Boo Boss HP
$0381DF 1 byte Sound effect Big Boo boss falling sound effect. (Big Boo beaten)
$0381F5 68 bytes Subroutine (JSR) Big Boo's "Hit with sprite" subroutine. JSR every frame to it to have your boss have functionality with thrown items.
$038234 is the sound made by Big Boo Boss when it is hit.
$038280 1 byte Sprite tilemap related X position of big boo's eyes in the normal frame
$038281 1 byte Sprite tilemap related X position of big boo's mouth in the normal frame
$038282 1 byte Sprite tilemap related X position of big boo's front arm in normal frame
$038283 16 bytes Sprite tilemap related X Position of the 16 tiles of big boo's body in the normal frame
$038293 1 byte Sprite tilemap related X position of big boo's back arm in normal frame
$038294 1 byte Sprite tilemap related X position of big boo's eyes in turning frame 1
$038295 1 byte Sprite tilemap related X position of big boo's mouth in turning frame 1
$038296 1 byte Sprite tilemap related X position of big boo's front arm in turning frame 1
$038297 16 bytes Sprite tilemap related X Position of the 16 tiles of big boo's body in turning frame 1
$0382A7 1 byte Sprite tilemap related X position of big boo's back arm in turning frame 1
$0382A8 1 byte Sprite tilemap related X position of big boo's eyes in turning frame 2
$0382A9 1 byte Sprite tilemap related X position of big boo's mouth in turning frame 2
$0382AA 1 byte Sprite tilemap related X position of big boo's front arm in turning frame 2
$0382AB 16 bytes Sprite tilemap related X Position of the 16 tiles of big boo's body in turning frame 2
$0382BB 1 byte Sprite tilemap related X position of big boo's back arm in turning frame 2
$0382BC 2 bytes Sprite tilemap related X position of big boo's arms in the hiding frame
$0382BE 1 byte Sprite tilemap related X position of Big boo's eyes in the hiding frame
$0382BF 1 byte Sprite tilemap related X position of Big boo's mouth in the hiding frame
$0382C0 16 bytes Sprite tilemap related X position of the 16 body tiles of Big boo in the hiding frame
$0382D0 1 byte Sprite tilemap related Y position of Big boo's eyes in normal, turning 1 and turning 2 frames
$0382D1 1 byte Sprite tilemap related Y position of Big boo's mouth in normal, turning 1 and turning 2 frames
$0382D2 1 byte Sprite tilemap related Y position of Big boo's front arm in normal, turning 1 and turning 2 frames
$0382D3 16 bytes Sprite tilemap related Y position of the 16 tiles of Big boo's body in normal, turning 1 and turning 2 frames
$0382E3 1 byte Sprite tilemap related Y position of Big boo's back arm in normal, turning 1 and turning 2 frames
$0382E4 2 bytes Sprite tilemap related Y position of big boo's arms in hiding frame
$0382E6 1 byte Sprite tilemap related Y position of big boo's eyes in hiding frame
$0382E7 1 byte Sprite tilemap related Y position of Big boo's mouth in hiding frame
$0382E8 16 bytes Sprite tilemap related Y position of the 16 tiles of big boo's body in hiding frame
$0382F8 80 bytes Sprite tilemap related Sprite Tilemap: Big Boo
$038348 80 bytes Sprite tilemap related The flip of each tile in the tilemap of Big Boo (00 is no flip, 40 is horizontal flip, 80 is vertical flip, C0 is horizontal + vertical flip)
$03846A 1 byte Sprite physics Max falling Y speed for the grey falling platform.
$03846F 1 byte Sprite physics How much the grey falling platform accelerates each frame.
$03848E 4 bytes Sprite tilemap related Sprite tilemap: Falling Grey Platform
$0384AD 1 byte Sprite tilemap related Falling Grey Platform's Palette
$0384DD 1 byte Sprite tilemap related Tilemap: Blurp Frame 1
$0384E1 1 byte Sprite tilemap related Tilemap: Blurp Frame 2
$03852D 2 bytes Sprite physics Horizontal speed of the Porcu-Puffer fish
$038580 1 byte ASM Change 94 to 60 to make the Porcu-Puffer fish go in a straight line and also float on air.
$038593 8 bytes Sprite tilemap related Sprite tilemap: Porcu-Puffer
$0385F4 2 bytes Sprite physics [08 F8] Y speeds of the Flying grey turnblocks (Sprite C1). First entry is downwards speed, second entry is upwards speed. Setting the upwards speed faster than $D8 ($28 as absolute value) is prone to causing Mario to clip through the turnblocks when jumping.

Keep in mind that if the turnblocks are set to go up first, these speeds are inverted.
$03866F 1 byte ASM Change C8 to 60 to fix a bug where sprite C1 (Flying Grey Turnblocks) corrupts $1602 if sprite slot 0 is occupied and only one sprite C1 is present.
$03868A 10 bytes Sprite tilemap related Sprite tilemap: Forest Secret Area Platform
$038734 3 bytes Sprite tilemap related Sprite tilemap: Sinking Lava Platform
$03876E 1 byte Sprite physics Mega Mole X speed (right)
$03876F 1 byte Sprite physics Mega Mole X speed (left)
$0387E3 1 byte Sprite physics [$D8] Y offset between Mario and a Mega Mole at which the sprite will hurt Mario rather than making him stand on it. Change to higher values to make it less likely for Mario to clip through the sprite and take damage when he's riding a mole and it has an upwards speed. Using $DC seems to fix this for Y speeds up $B0, using $DE seems to fix it for Y speeds up to $90 and using $DF seems to fix it for any upwards speed.
Note that this will also make the sprite's hitbox a bit more forgiving (less likely to hurt Mario).
Also be aware that it's still possible to clip into a Mega Mole if Mario has upwards speed, due to the code at $0387E6 (it's required to allow Mario to jump off of the Mega Mole).
$038826 4 bytes Misc. [22 B7 F5 00] Change to [EA EA EA EA] to make Mega Mole not hurt Mario.
$038837 8 bytes Sprite tilemap related Sprite tilemap: Mega Mole
$038849 3 bytes Sprite tilemap related Animation speed of Mega Mole. Change a 4A to EA to speed it up, and a EA to 4A to slow it down.
$038882 1 byte Sprite tilemap related Palette to use for Mega Mole
$0388A0 3 bytes Sprite tilemap related Swooper Bat Tilemap
$0388FC 1 byte Sprite physics Initial vertical speed of Swooper bat. This affects how far down it goes from its starting position.
$038900 1 byte Sound effect Swooper Sound Effect.
$038932 3 bytes ASM Change to EA EA EA to disable Mega Mole animation
$038977 1 byte Sprite number Sprite that the sliding koopa turns into after touching the ground
$038984 1 byte Sprite tilemap related Tilemap of blue shellless koopa sliding down a hill
$038988 1 byte Sprite tilemap related Tilemap of blue shellless koopa after sliding
$038ADB 1 byte Sound effect SFX played by Bowser Statue
$038AE5 1 byte Sprite number Sprite spawned by Bowser statue
$038B2E 6 bytes Sprite tilemap related Sprite tilemap: Bowser Statue(Both)
$038B37 6 bytes Palette Bowser Statue Properties. This will get or'd with the sprite's palette, which means it has the most effect on the jumping Bowser statue.
$038D0C 6 bytes Sprite tilemap related Relative X position of the diagonal platform tiles (Carrot Top Lift). First half is used for sprite B7, second half is used for sprite B8.
$038D12 6 bytes Sprite tilemap related Relative Y position of the diagonal platform tiles (Carrot Top Lift). First half is used for sprite B7, second half is used for sprite B8.
$038D18 6 bytes Sprite tilemap related Sprite tilemap: Diagonal Platform (Carrot Top Lift). First half is used for sprite B7, second half is used for sprite B8.
$038D1E 6 bytes Sprite tilemap related YXPPCCCT properties for the diagonal platform (Carrot Top Lift). First half is used for sprite B7, second half is used for sprite B8.
$038D7E 1 byte Sound effect SFX that comes up when the Message comes out of the Message Block
$038DB0 1 byte Sprite tilemap related Message Box Tilemap
$038DDB 1 byte Misc. Change to 00 and the timed lift will never fall after it has hit 0.
$038DEA 1 byte Sprite physics Horizontal speed of the Timed Lift
$038E05 2 bytes Sprite tilemap related Sprite tilemap: Timed Platform
$038E08 3 bytes Sprite tilemap related [0B 4B 0B] Properties (Palette, gfx page, etc..) of the Timed Lift.
$038E0E 4 bytes Sprite tilemap related Tiles used by numbers in Timed Platform (1,2,3,4)
$038E71 4 bytes Sprite physics Horizontal speed of the Grey Moving Castle Block.
$038E75 4 bytes Timer Time in position of the Grey Moving Castle Block.
$038EB0 4 bytes Sprite tilemap related Sprite tilemap: Moving Grey Castle Brick
$038ED3 1 byte Sprite tilemap related YXPPCCCT properties for the moving gray castle block.
$038EEA 2 bytes Sprite physics X speeds for the Bowser Statue fireball. Ordered right, left.
$038F0B 8 bytes Sprite tilemap related Sprite tilemap: Bowser Statue Fireball
$038F13 8 bytes Sprite tilemap related The YXPPCCCT properties of the Bowser Statue Fireball.
$038F6D 8 bytes Sprite tilemap related Reflecting Stream of Boo Buddies tilemap (leader only)
$038FFB 1 byte Sprite Misc. Controls the two palettes that the diagonal Podoboo flashes with. Take the first palette you pick, subtract 8, and multiply by 2 to get a valid value for this. The second palette will then be that value times 2.

For instance, the original value here is 4 (palette A), which times two is 8, and converting that back into a palette (divide by 2, add 8) gives you palette C. So the Podoboo flashes between palette A and C.
$039011 1 byte Sprite tilemap related Reflecting Fireball Tilemap
$039160 10 bytes Sprite tilemap related Fishin' Boo Tilemap (cloud, face, rod, cloud, line)
$039174 4 bytes Sprite tilemap related Fishin' Boo's Flame Tilemap
$03921C 1 byte Sprite tilemap related Falling Spike Tilemap
$03925D 1 byte Timer Number of frames before a Falling Spike drops.
$03926F 5 bytes Misc. X speed of the Creating/Eating block
$039274 5 bytes Misc. Y speed of the Creating/Eating block
$039293 1 byte Sprite tilemap related Tile used by the Creating/Eating block
$0392B9 1 byte Sound effect SFX played by the Creating/Eating block
$039320 1 byte Objects Which tile gets created by the brown creating block sprite. Does not affect the tile that the eating block sprite eats, or the tile that activates these two sprites when you stand on it. See this for a list of possible values.
$03932D 1 byte Objects Which tile is created by the brown eating block sprite. Defaults to air; see this for a list of possible values.

Note that there is no RAM address that affects which tile this block will eat - it will go after ANY solid block that is next to it.
$03938B 25 bytes Sprite subroutine (JSR) This generates a Map16 tile at the position of the sprite currently being processed. It is identical to the routine at $02B9A4, except that this one ends with RTS.
$0393A4 75 bytes Misc. Path for creating brown blocks (sprite B1) in overworld submaps.
Format: One byte per command, XY, where X=number of times to go in direction Y. Y = 0,1,2,3 (Right, left, down, up). FF terminates the sprite.
$0393EF 52 bytes Misc. Path for creating brown blocks (sprite B1) on the main overworld. Same format as $03:93A4.
$0394BB 10 bytes Sprite tilemap related Sprite tilemap: Wooden Castle Spike
$0394C5 10 bytes Sprite tilemap related Properties (palette, gfx page etc.) of the wooden spike.
The first 5 bytes for sprite AC the next 5 bytes for sprite AD. YXPPCCCT format.
$039513 2 bytes Sprite physics Normal rex walking speed
$039515 2 bytes Sprite physics Smushed rex walking speed
$039542 1 byte Misc. Change to 00 to make all Rexes start small.
$0395B8 1 byte Misc. Rex's HP
$03963B 1 byte Sound effect SFX that comes up when Mario hits a Rex
$03964C 12 bytes Sprite tilemap related Rex tile horizontal displacement table left (0C entries)
$039658 12 bytes Sprite tilemap related Rex tile horizontal displacement table right (0C entries)
$039664 12 bytes Sprite tilemap related Rex tile vertical displacement table (0C entries)
$039670 10 bytes Sprite tilemap related Sprite tilemap: Rex
$03967C 2 bytes Sprite tilemap related YXPPCCCT properties for sprite AB, Rex. Tiles
$039784 4 bytes Sprite tilemap related Fishbone tail properties, YXPPCCCT. First two bytes are for the tail when the fishbone is heading into the right direction, the other two when heading into the left direction.
$039788 4 bytes Sprite tilemap related Tiles used by Fishbone's Tail
$039799 1 byte Sprite tilemap related Fishbone Tilemap, frame 1
$03979D 1 byte Sprite tilemap related Fishbone Tilemap, frame 2
$039886 4 bytes Coordinate reznor starting position low byte (4 byte table)
$03988A 4 bytes Coordinate reznor starting position high byte (4 byte table)
$03989F 4 bytes ASM [22 0C D7 03] Change to [EA EA EA EA] to stop the bridge in the Reznor battle from breaking.
$0398A4 1 byte Coordinate X position of the Reznor's circle written to $2A and loaded at $0399B3. (Y position is left at whatever $2C is, and it is loaded at $0399D8)
$0398C7 2 bytes ASM Change to [38 E9] to change rotation direction of the Reznor platform.
$0398C9 2 bytes Sprite physics Speed of Reznor rotation
$0398CC 2 bytes Timer Frames until Reznors spin cycle loops.
$0398E7 1 byte Music Music played after the Reznors are defeated
$0398FA 1 byte Sprite Misc. How many Reznors to hit to trigger level completion.
Note: it must be 4 or less.
$039964 1 byte Sprite Misc. X-radius of Reznor's circle
$039987 1 byte Sprite Misc. Y-radius of Reznor's circle
$0399EE 1 byte ASM Change from 22 to AF to make the Reznor platforms non-standable (fall-through) after Mario hits a Reznor from below.
$039A04 7 bytes Sprite Misc. Change to [D0 0A A9 xx 9D] to alter the rate at which Reznor shoots fireballs. (xx is the speed: $00 is the original value, and $DF seems to be the fastest value that will work correctly.)
$039AD2 1 byte Sprite number Sprite that Reznor will turn into after being hit
$039B04 1 byte Sound effect Sound effect made when Reznor spits a fireball.
$039B09 1 byte Sprite number Object that Reznor spits
$039B5D 12 bytes Sprite tilemap related Reznor tilemap (4 bytes regular reznor, 4 bytes shooting fireball, 4 bytes turning)
$039B69 12 bytes Sprite tilemap related Reznor palette map (4 bytes regular reznor, 4 bytes shooting fireball, 4 bytes turning)
$039C1A 1 byte Sprite tilemap related tile for reznor platforms
$039C22 1 byte Sprite tilemap related palette of reznor platforms
$039CA4 2 bytes Sprite physics Dino Rhino X-Speed.
$039CA6 2 bytes Sprite physics Dino Torch X-Speed.
$039D56 1 byte Sound effect Dino Torch Fire Sound Effect.
$039D61 1 byte ASM Change to 80 to make Dino-Torches only breathe fire horizontally
$039D97 1 byte ASM Change to 80 and Dino-Torch's flame will have no effect on Mario.
$039D9E 24 bytes Sprite Misc. Dino Torch's Flame Clipping tables.
- $039D9E: Clipping X offset (low byte).
- $039DA2: Clipping X offset (high byte).
- $039DA6: Clipping Width.
- $039DAA: Clipping Y offset (low byte).
- $039DAE: Clipping Y offset (high byte).
- $039DB2: Clipping Height.

Each table has 4 bytes, and it uses the following format:
- 1st byte: Horizontal Flame Facing Left
- 2nd byte: Vertical Flame Facing Left
- 3rd byte: Horizontal Flame Facing Right
- 4th byte: Vertical Flame Facing Right
$039DFE 5 bytes Sprite tilemap related Dino-Torch flame tile horiz. displacement table (horizontal flame)
$039E03 5 bytes Sprite tilemap related Dino-Torch flame tile horiz. displacement table (vertical flame)
$039E08 5 bytes Sprite tilemap related Dino-Torch flame tile vert. displacement table (horizontal flame)
$039E0D 5 bytes Sprite tilemap related Dino-Torch flame tile vert. displacement table (vertical flame)
$039E12 10 bytes Sprite tilemap related Dino-Torch flame tile table (2 animation frames, each 4 bytes w/an unused byte)
$039E1C 5 bytes Sprite tilemap related Dino-Torch YXPPCCCT bytes.
$039E21 4 bytes Sprite tilemap related Dino-Torch tile table (4 animation frames, each 1 byte)
$039E25 8 bytes Sprite tilemap related Dino-Rhino tile horizontal displacement table
$039E2D 4 bytes Sprite tilemap related Dino-Rhino tiles' palette/gfx page/priority/flip left
$039E31 4 bytes Sprite tilemap related Dino-Rhino tiles' palette/gfx page/priority/flip right
$039E35 4 bytes Sprite tilemap related Dino-Rhino tile vertical displacement table
$039E39 16 bytes Sprite tilemap related Dino-Rhino tile table (4 animation frames, each 4 bytes)
$039EF3 1 byte Misc. Which segment of Dino-Torch's flame is its body
$039F0E 1 byte Misc. Which segment of Dino Torch's flame doesn't flip
$039FFB 1 byte Sound effect Blargg Growl Sound Effect.
$03A034 1 byte Timer Time it takes for Blargg to resurface. (eyes)
$03A075 1 byte Sprite tilemap related Tile used by Blargg's Eyes Peeking out of Lava
$03A091 10 bytes Sprite tilemap related Blargg Tilemap
$03A09B 1 byte Sprite tilemap related Blargg palette/gfx page, right
$03A09C 1 byte Sprite tilemap related Blargg palette/gfx page, left
$03A0F9 1 byte Coordinate Bowser's initial Y Pos
$03A0FD 1 byte Coordinate Bowser's initial Y Pos high byte
$03A102 1 byte Coordinate Bowser's initial X Pos
$03A106 1 byte Coordinate Bowser's initial X Pos high byte
$03A10B 1 byte Misc. Bowser hit count for first phase
$03A3D9 9 bytes Sprite tilemap related Tilemap: Clouds from Bowser's Clown Car
$03A451 1 byte Sprite physics Speed of Bowser's descent before battle.
$03A48B 1 byte Timer Delay before Bowser first throws Mechakoopas at the start of the battle. Default is $78.
$03A492 2 bytes Sprite physics X speed of Bowser's swoop in first part.
$03A496 2 bytes Sprite physics Y speed of Bowser's swoop in first part.
$03A506 1 byte Sprite Misc. Phase where Bowser drops steel balls. 07 = phase 1, 08 = phase 2, 09 = phase 3. Default is $08.

Change to [07 90 11] (org $03A505 : CMP #$07 : BCC $11) to make Bowser drop steel balls in all 3 phases.
$03A510 1 byte Sprite Misc. Number of steel balls Bowser drops, plus one. Use with $03A614. Default is $03.
$03A5B8 1 byte Timer Amount of time between Bowser dropping Mechakoopas
$03A600 1 byte Timer Timing of steel ball dropping
$03A604 1 byte Sound effect Bowser dropping Ball sound
$03A60F 1 byte Timer Amount of time before Bowser drops Mechakoopas (after dropping the 2nd steel ball)
$03A614 1 byte Sprite Misc. Number of steel balls Bowser drops. Use with $03A510. Default is $02.
$03A618 1 byte Timer Amount of time before Bowser drops 2nd steel ball
$03A623 1 byte Sprite number Sprite Bowser Throws (Bowling Ball)
$03A672 1 byte Timer Delay after Bowser's hit with a Mechakoopa, before his next attack. Default is $50.
$03A683 1 byte Misc. Bowser hit count for final 2 phases
$03A6C8 40 bytes Subroutine (JSL) Routine which kills most active sprites and turn them into a smoke. Only the last two sprite slots as well as sprites with a certain ID are not affected.

$03A6E3 is the sprite state to give to the affected sprites.
$03A6E8 is the timer for how long the is smoke is active.
Whitelist
$03A702 1 byte Music Music played when Bowser flies away
$03A71F 2 bytes Sprite physics Bowser's X acceleration as he swoops out before the fireball phase. First is while shrinking, second is while growing. Default is $01,$FF.
$03A725 2 bytes Sprite physics Bowser's Y acceleration as he swoops out before the fireball phase. First is while shrinking, second is while growing. Default is $FF,$01.
$03A729 2 bytes Sprite Misc. Bowser's shrink/grow speed (change in $38 and $39) as he swoops out before the fireball phase. First is while shrinking, second is while growing. Default is $01,$FF.
$03A79A 1 byte Timer Duration of Bowser's fireball phase. Default is $80.
$03A7A8 1 byte Music Music played during Bowser's fireball phase
$03A7B9 1 byte Coordinate X Position Bowser returns to after fire attack.
$03A7C2 1 byte Music Bowser scene 3 music
$03A7CC 1 byte Coordinate Y Position Bowser returns to after fire attack.
$03A7E0 1 byte Timer Timing to start Bowser fireball attack
$03A7E0 1 byte Timer Time when Bowser's fireballs start spawning, counting down from the value at $03A79A. Default is $60.
$03A7F7 1 byte Sound effect Bowser Battle primary flame sound
$03A7FC 1 byte Sprite Misc. Status of sprite spawned by Bowser's fireball attack
$03A801 1 byte Sprite number Sprite spawned by Bowser's fireball attack (fireballs falling from the sky). Default: 0x33.
$03A80E 1 byte Sprite Misc. Horizontal distance between Bowser's consecutive fireballs. Default is $20.
$03A825 2 bytes Sprite Misc. [F6 C2] By default, sets the sprite state for Bowser's Podoboo Rain to 01. Change to EA EA to change the sprite state back to 00 - useful if you want Bowser to spawn different falling sprites in between his regular attack rounds.
$03A841 8 bytes Sound effect Bowser Battle other flame sounds
$03A849 2 bytes Music Music for the other Bowser Battle attack phases
$03A865 1 byte Timer Timing of Bowser stopping clown car in foreground
$03A86F 1 byte Timer Timing of Peach throwing the mushroom
$03A87C 1 byte Timer How soon Bowser starts moving again
$03A880 1 byte Timer Timing of Bowser coming out of clown car
$03A884 1 byte Timer Timing of music for next attack phase
$03A8AF 1 byte Timer Timing of Peach crying for help sound
$03A8B3 1 byte Sound effect Peach crying for help sound
$03A8E4 1 byte Sound effect Peach Throwing Sound
$03A8E9 1 byte Sprite Misc. Status of sprite spawned by Peach
$03A8EE 1 byte Sprite number Sprite Princess Throws
$03A9CE 80 bytes Sprite tilemap related Sprite tilemap: Princess Toadstool(Bowser Battle)
$03AB15 2 bytes Sprite physics Bowser's X acceleration (right/left) during phase 2.
$03AB17 2 bytes Sprite physics Bowser's maximum X speed (right/left) during phase 2.
$03AB19 2 bytes Sprite physics Bowser's Y acceleration (down/up) during phase 2.
$03AB1B 2 bytes Sprite physics Bowser's maximum Y speed (down/up) during phase 2.
$03AB50 1 byte Coordinate Y Position Bowser hovers near in second part.
$03AB62 2 bytes Sprite physics X speed of bounce in Bowser's third part.
$03AB76 1 byte Sprite physics Bowser's Y acceleration when bouncing during phase 3.
$03AB89 1 byte Sprite physics Bowser's Y speed after bouncing off the ground, during phase 3.
$03AB8D 1 byte Sound effect Bowser's Clown Car bouncing sound
$03ABF4 1 byte Sound effect Bowser Defeated Sound
$03AC33 1 byte Sprite physics Rotation speed of Bowser as he flies away after Peach has been released.
$03AC53 1 byte Sound effect Peach appearing after battle sound
$03AC63 48 bytes Sprite subroutine (JSR) Routine that spawns Princess Peach from Bowser's clown car.
$03AC69 is the sprite ID Bowser spawns. Note that it will always use the 8th sprite slot.
$03AC7F is the starting Y-coordinate of this sprite.
$03AC93 2 bytes Coordinate Y-coords of blushing Mario face tiles (Super, small)
$03AC95 2 bytes Mario tilemap Blushing Mario Faces (Super, Small)
$03AD07 1 byte Mario tilemap Palette of Mario's blushing tiles at the end of the game. YXPPCCCT format. Default: $31 (palette 8, second tile page, top priority)
$03B031 1 byte Sprite number Sprite Bowser Throws (Mecha Koopa)
$03B0B9 1 byte Sound effect Mario bumped by Clown Car sound
$03B12A 1 byte Sound effect Bowser hurt sound
$03B161 2 bytes Sprite physics Bowling ball's X speed. (Default: Right: $10, Left: $F0)
$03B181 1 byte Sprite physics Bowling Ball Y acceleration. [Default: $03]
$03B187 1 byte Sprite physics Bowling Ball maximum falling Y speed. [Default: $40]
$03B196 1 byte Coordinate Y position at which Bowser's bowling ball will stop falling. If you change this, you must change $03B19A to the same value.
$03B19A 1 byte Coordinate Y position to set Bowser's bowling ball to once it hits the "ground". If you change this, you must change $03B196 to the same value.
$03B1A4 1 byte Sound effect Bowser's Steel Ball hitting ground sound
$03B1A4 1 byte Sound effect Bowling Ball hard-bounce sound effect. [Default: $25]
$03B1B2 1 byte Sound effect Bowling Ball soft-bounce sound effect. [Default: $01]
$03B1B2 1 byte Sound effect Steel Ball bouncing sound
$03B1ED 12 bytes Sprite tilemap related Sprite tilemap: Bowser's Steel Ball
$03B30F 4 bytes Sprite tilemap related Mechakoopa tile horizontal displacement table left
$03B313 4 bytes Sprite tilemap related Mechakoopa tile horizontal displacement table right
$03B317 24 bytes Sprite tilemap related Mechakoopa tile vertical displacement table (6 animation frames, each 4 bytes)
$03B32F 24 bytes Sprite tilemap related Mechakoopa tile table (6 animation frames, each 4 bytes)
$03B347 4 bytes Sprite tilemap related Mechakoopa tiles' priority/flip left
$03B34B 4 bytes Sprite tilemap related Mechakoopa tiles' priority/flip right
$03B34F 4 bytes Sprite tilemap related Mechakoopa tile sizes (00= 8x8, 02= 16x16)
$03B353 1 byte Sprite tilemap related Mechakoopa Palette/gfx page used when coming to, #1
$03B354 1 byte Sprite tilemap related Mechakoopa Palette/gfx page used when coming to, #2
$03B356 1 byte Sprite tilemap related Mechakoopa Regular palette/gfx page
$03B360 1 byte Sprite tilemap related Mechakoopa Animation frame used when stunned
$03B36A 1 byte Sprite tilemap related Mechakoopa Animation frame used when kicked
$03B3EF 1 byte Sprite tilemap related Mechakoopa Wind-up key horizontal displacement right
$03B3F0 1 byte Sprite tilemap related Mechakoopa Wind-up key horizontal displacement left
$03B3F1 1 byte Sprite tilemap related Mechakoopa Wind-up key palette/gfx page right
$03B3F2 1 byte Sprite tilemap related Mechakoopa Wind-up key palette/gfx page left
$03B3F3 4 bytes Sprite tilemap related Mechakoopa Wind-up key tile table (4 animation frames, each 1 byte)
$03B443 4 bytes Coordinate Bowser Battle Item Box Frame: X position of each corner of the frame (in the order upper-left, upper-right, lower-left, lower-right)
$03B447 4 bytes Coordinate Bowser Battle Item Box Frame: Y position of each corner of the frame (same order as above)
$03B44B 4 bytes Sprite tilemap related Bowser Battle Item Box Frame: Attributes for each corner of the frame (same order as above)
$03B46E 1 byte Sprite tilemap related Bowser Battle Item Box Frame: Tile to use for the frame (each corner uses the same 16x16 tile)
$03B48C 16 bytes Misc. X-coordinates of 1st and 3rd rows of Bowser's castle roof
$03B49C 16 bytes Misc. Y-coordinates of 1st and 3rd rows of castle roof
$03B4B9 1 byte Misc. How many tiles to load for 2nd row group, -1
$03B4C0 1 byte Misc. Y-coordinate of 2nd row of castle roof
$03B4D1 1 byte Misc. Difference in X-coordinate for tiles in 2nd row
$03B4D5 1 byte Sprite tilemap related Tile of 2nd row of Bowser's castle roof
$03B4DA 1 byte Sprite tilemap related Palette of 2nd row of Bowser's castle roof
$03B4F3 1 byte Misc. How many tiles to load for 1st & 3rd row group, -1
$03B50D 1 byte Sprite tilemap related Tile of 3rd row of Bowser's castle roof
$03B50F 1 byte Misc. How many tiles will use the address below
$03B513 1 byte Sprite tilemap related Tile of 1st row of castle roof
$03B518 1 byte Sprite tilemap related Palette of 1st and 3rd rows of Bowser's castle roof
$03B547 1 byte Sprite tilemap related Tile of 3rd row of castle roof (copy. It is called for when Peach comes from Bowser's clown car )
$03B549 1 byte Misc. How many tiles will use the address below
$03B54D 1 byte Sprite tilemap related Tile of 1st row of castle roof (copy)
$03B552 1 byte Sprite tilemap related Palette of 1st and 3rd rows of castle roof (copy)
$03B56C 60 bytes Sprite physics X displacement of sprite clippings.
$03B5A8 60 bytes Sprite physics Width of sprite clippings.
$03B5E4 60 bytes Sprite physics Y displacement of sprite clippings.
$03B620 60 bytes Sprite physics Height of sprite clippings.
$03B664 59 bytes Subroutine (JSL) "Get player clipping B" subroutine. Stores the clipping X position low byte to $00, the clipping X position high byte to $08, the clipping width to $02, the clipping Y position low byte to $01, the clipping Y position high byte to $09, and the clipping height to $03.
$03B673 - The width of Mario hitbox with sprites in pixels.
$03B67C - Change to A9 00 to make Super/Fire/Cape Mario have a 16x16 interaction field (like Small Mario)or change to A9 01 to have a 16x32 interaction field (like Big Mario)(in conjunction with addresses $00EB79 and $01B4C0)

This subroutine is used to detect if two hitboxes, A (often a sprite) and B (the player) are in collision with each other. To do that, have both hitbox A and B stored in scratch RAM $00-$0B, then call JSL $03B72B to check.
Clipping data
$03B69F 70 bytes Sprite subroutine (JSL) "Get sprite clipping A" subroutine. Stores the clipping X position low byte to $04, the clipping X position high byte to $0A, the clipping width to $06, the clipping Y position low byte to $05, the clipping Y position high byte to $0B, and the clipping height to $07.

This subroutine is used to detect if two hitboxes A and B are in collision with each other. To do that, have both hitbox A and B stored in scratch RAM $00-$0B, then call JSL $03B72B to check.
Clipping data
$03B6E5 70 bytes Sprite subroutine (JSL) "Get sprite clipping B" subroutine. Stores the clipping X position low byte to $00, the clipping X position high byte to $08, the clipping width to $02, the clipping Y position low byte to $01, the clipping Y position high byte to $09, and the clipping height to $03.

This subroutine is used to detect if two hitboxes A and B are in collision with each other. To do that, have both hitbox A and B stored in scratch RAM $00-$0B, then call JSL $03B72B to check.
Clipping data
$03B72B 49 bytes Sprite subroutine (JSL) “Check for contact” collision subroutine. Uses the values in scratch RAM set by $03B69F and either $03B6E5 or $03B664 (or occasionally custom values) to determine whether two sprites, or a sprite and the player, are in contact. If the carry flag is set after calling this, they are in contact.

It functions using the axis-aligned bounding box (AABB), it first checks if they are #$80 pixels apart, if they are, then the subroutine ends with carry clear, otherwise it then checks the total distance of their widths or height against their difference of their XY position, and if within range, carry is set.

Note: The XY position is the top left boundary of the box, and as the width and height increases, the box extends rightwards and downwards.
Input values and destroyed values Better, sorted format
$03B902 128 bytes Palette Magikoopa palettes (8 palettes; 8 colours each, including transparent colour)
$03B982 128 bytes Palette Big Boo Boss palettes (in same layout as Magikoopa palettes)
$03BA02 1534 bytes Empty Filled with $FF, but used by Lunar Magic for various purposes:
  • $03BA50: Used to implement the "no entry if level beaten" flag for overworld levels.
  • $03BB00: Used as a routine to fix the screen exits for the bonus game and Yoshi Wings teleportation.
  • $03BB20: Used for LM's level name hijack.
    • $03BB57: 24-bit pointer to the level name data, with 19 bytes per level.
  • $03BB90: Used for LM's message box hijack.
    • $03BC0B: 24-bit pointer to the message data. Not used if LM's overworld level expansion hijack is applied.
    • $03BC7F: Table containing 2 bytes for each of the 8 rows of the message box's text, as the first two bytes of the line's stripe header. Note that this table may be moved slightly earlier to $03BC79 instead if LM's overworld level expansion hijack is applied.
    • $03BE80: Table of 16-bit offsets to each individual message's data, indexed by ($13BF * 2 + ($1426 - 1)) * 2.
      If LM's overworld level expansion hijack is applied, this table is instead moved to read3($03BBD9) and changed to instead use direct 24-bit pointers to each message's data (using the same indexing system, except *3 instead of *2). This space is then instead used for the initial level flags (moved from $05DDA0).
  • $03BCC0: Table of four 24-bit pointers to the locations of ExGFX60-63 (uncompressed) in the ROM. If a file is not inserted, the pointer is 000000.
  • $03BCDC: JSL routine added in LM v3.00+ to compute the screen number that Mario is on, returned in X. Note that this routine does not preserve Y.
  • $03BCE0: Used by LM as a routine to implement the additional secondary entrance bytes.

$03C000 35 bytes Sprite subroutine (JSL) This generates a Map16 tile at the position of the sprite currently being processed plus 8 pixels left and 8 pixels down. It can be accessed with a JSL, and A should be set to the value of $9C you wish to use.
$03C03C 2 bytes Sprite Misc. Change to [$80,$1E] to make Baby Yoshi instantly grow when eating something, regardless if it's a powerup or not.
Change to [$80,$5D] to make Baby Yoshi never grow instantly when eating something, even if it's a powerup. It will count as one sprite eaten instead.
If changing this, you also need to apply the hex edit at $01A295 for it to work properly.
$03C0A2 1 byte Misc. Number of enemies Baby Yoshi must eat to grow if the double-eat glitch occurs ($01A2FB is the address for the regular eating behaviour)
$03C0B2 4 bytes Sprite tilemap related The tile numbers to use for the animated lava sprite tiles in Iggy/Larry's room. Default values are $68, $6A, $6C and $6E.
$03C0B6 16 bytes Sprite tilemap related The animation offsets for the animated lava sprite tiles in Iggy/Larry's room (e.g. if you set all of them to the same value, they would all display the same tile at once).
Strangely, some of them are #$04, despite nothing using that bit.
$03C0CD 69 bytes Subroutine (JSL) The subroutine that displays the animated lava sprite tiles in Iggy/Larry's room (as well as calling his platform tilting routine, not included).

It makes use of 4 bytes at $03C0B2 and 16 bytes at $03C0B6, respectively for determining the tile numbers to use and their animation offset.

If you want to disable it for some reason, you can just put an RTL there.
$03C112 4 bytes Misc. Speed of rotation of Iggy/Larry's platform
$03C11A 4 bytes Misc. How far to Iggy/Larry's rotate platforms
$03C11E 88 bytes Subroutine (JSR) The subroutine that takes care of tilting Iggy/Larry's Mode 7 platform.

It makes use of 4 bytes at $03C112, 4 bytes at $03C11A and 1 byte at $03C164, respectively for determining the tilting speeds, maximum angles and time to elapse between each tilt.
It also uses RAM adresses $1905, $1906 and $1907, respectively for the total number of tilts made, the timer between each tilt and the phase counter (See these for more details).

If you want to disable it for some reason, you can just put an RTS there.
$03C164 1 byte Misc. Time to stall Iggy/Larry's platform in between rotations
$03C25B 4 bytes Sprite tilemap related Chainsaw's Motor Tilemap
$03C2BB 1 byte Sprite tilemap related Middle of Chainsaw
$03C2C0 1 byte Sprite tilemap related Top of Chainsaw
$03C2EC 1 byte Sprite number Sprite spawned by the checkpoint block (1up)
$03C319 1 byte Sprite number Sprite that the invisible mushroom is made from
$03C33F 1 byte Sprite physics Y speed of mushroom after spawning from an invisible mushroom.
$03C343 1 byte Sound effect Sound effect played when Mario discovers an invisible mushroom. The bank is stores to is located at $03:C345, default bank is $1DFC.
$03C348 4 bytes Sprite physics Ninji's vertical speed when jumping
$03C36A 1 byte Misc. Change from 04 to 0C to fix a bug where Ninjis can clip through ceilings.
$03C375 1 byte Misc. Time it takes Ninji to jump
$03C3B3 12 bytes Sprite tilemap related Dry Bones x-displacement table (Bone, Head, Body)
$03C3BF 3 bytes Sprite tilemap related Dry Bones palette/gfx page (Facing right) (Bone, Head, Body)
$03C3C2 3 bytes Sprite tilemap related Dry Bones palette/gfx page (Facing left) (Bone, Head, Body)
$03C3C5 9 bytes Sprite tilemap related Dry Bones y-displacement table (Bone, Head, Body)
$03C3CE 9 bytes Sprite tilemap related Dry Bones tile table
$03C44E 65 bytes Sprite subroutine (JSL) Dry Bones's bone-throwing subroutine. It can be JSL'd to.

$03C462 - [06] Extended sprite number to throw.
$03C46A - [10] Y offset of the bone relative to the Dry Bones's position.
$03C486 - [18] X speed of the bone when the Dry Bones is facing right.
$03C48A - [E8] X speed of the bone when the Dry Bones is facing left.
$03C493 9 bytes Sprite tilemap related Sprite tilemap: Disco Ball
$03C49C 9 bytes Sprite tilemap related Spotlight / Disco Ball properties, YXPPCCCT.
$03C575 1 byte Sprite Misc. Spotlight sprite windowing update frequency. Default value is 03, which means the windowing is updated every 4 frames. Change to 00 to make it update every frame, giving it a smoother movement.
$03C9B9 40 bytes Sprite tilemap related Fireworks Tilemap
$03CBAD 2 bytes Coordinate X-position of sprite spawned by Puntin' Chuck (facing right/left)
$03CBAF 2 bytes Sprite physics X-speed of sprite spawned by Puntin' Chuck, high byte (facing right/left)
$03CBB1 2 bytes Sprite physics X-speed of sprite spawned by Puntin' Chuck, low byte (facing right/left)
$03CBBA 1 byte Sprite number Sprite Puntin' Chuck kicks
$03CBC6 1 byte Sprite Misc. Status of sprite spawned by Puntin' Chuck
$03CBFE 1 byte Sprite physics Y-speed of sprite spawned by Puntin' Chuck
$03CC14 36 bytes Sprite subroutine (JSR) Subroutine for the Lemmy Koopa and Wendy O. Koopa boss fights.

Jumps to a graphics subroutine, then if the sprite is dead or the lock sprites flag is set, returns. Otherwise, loads the current fight phase from table $151C, then executes the pointer subroutine.
$03CC29 14 bytes Pointer Pointers to the various phase routines of the Lemmy Koopa and Wendy O. Koopa boss fights.

[8A CC] Phase 0: In pipe
[21 CD] Phase 1: Rising
[C7 CD] Phase 2: Out of pipe
[EF CD] Phase 3: Descending
[0E CE] Phase 4: Hit
[5A CE] Phase 5: Falling
[89 CE] Phase 6: Sinking in lava
$03CC38 7 bytes Sprite Misc. Possible X positions for Lemmy/Wendy and their decoys.
$03CC40 7 bytes Sprite Misc. Possible Y positions for Lemmy and his decoys.
$03CC48 8 bytes Sprite Misc. Number of frames Wendy and Lemmy take to emerge from their pipes, indexed by the animation they are performing.
$03CC50 1 byte Sprite Misc. Number of frames that Wendy/Lemmy's dummies take to rise out of their pipes.
$03CC5A 48 bytes Sprite Misc. Indexes to $03CC38 / $03CC40 to choose from for each RNG value (00-0F). The first set of 16 bytes is used for Wendy/Lemmy, the second set is the corresponding value for the first dummy, and the third set is the corresponding value for the second dummy.
$03CC8A 86 bytes Sprite subroutine (JSR) Subroutine that runs for Lemmy Koopa and Wendy O. Koopa's "in pipe" phase. This routine handles several of the Lemmy/Wendy fight behaviours:
- Calls the RNG routine to determine at what X positions (pipes) Lemmy/Wendy and their dummies appear out of.
- Sets their Y positions depending on the pipe they appear from. Always #$50 if the boss is Wendy, otherwise, loads Y positions from a table corresponding to the heights of Lemmy's pipes.
- Jumps to the routines that initialize the sprite tables.
- Calls the RNG routine to determine Lemmy/Wendy's emerged animation pointer, and animation frame when coming out of a pipe.
- Sets the phase timer for Lemmy/Wendy's next phase. Timer value depends on their current animation.
- Increments the current phase table.
$03CCB7 1 byte Sprite Misc. Initial Y position of Wendy and her decoys.
$03CD21 22 bytes Sprite subroutine (JSR) Subroutine that runs for Lemmy Koopa and Wendy O. Koopa's "rising" phase.

Updates Lemmy/Wendy's Y speed and position when rising out of pipes. When the phase timer for this phase reaches 0, the routine sets the phase timer for the next phase, and increments the current phase table.
$03CD27 1 byte Timer Amount of time Lemmy/Wendy remain vulnerable before retreating into their pipes. However, their animations will become glitched if this is set higher than its initial value of 0x40.
$03CD37 144 bytes Sprite Misc. Animation frame data for Lemmy Koopa and Wendy O. Koopa when out of a pipe. Indexed by a combination of the emerged animation pointer and the current phase timer.
$03CDC7 19 bytes Subroutine (JSR) Subroutine that runs for Lemmy Koopa and Wendy O. Koopa's "out of pipe" phase.

Jumps to a subroutine that checks if Mario has jumped on Lemmy/Wendy/dummy. If he hasn't, the routine checks if the current phase timer is 0. If it is, the the routine sets the phase timer for the next phase and increments the current phase table. If the phase timer is not 0, the routine jumps to a subroutine that handles Lemmy/Wendy's animations.
$03CDD5 1 byte Misc. Setting for Lemmy/Wendy's decoys. 00 - keep appearing after boss's defeat, 01 - interaction disabled, 02 - paralyzed, 03 - normal
$03CDDA 21 bytes Sprite subroutine (JSR) Subroutine that handles Lemmy Koopa and Wendy O. Koopa's animations when out of a pipe.

The accumulator contains the current phase timer when the routine is called, and is right‐shifted twice then stored to $00. The emerged animation pointer is loaded, left‐shifted four times, ORA'd with $00, and moved to the Y register to serve as an index for which animation frame to use.
$03CDEF 31 bytes Sprite subroutine (JSR) Subroutine that runs for Lemmy Koopa and Wendy O. Koopa's "descending" phase.

Updates Lemmy/Wendy's Y speed and position when the phase timer isn't 0. When the timer reaches 0, this routine clears the dummy sprite slots, sets the phase timer and resets the Lemmy/Wendy phase to 0 (in pipe).
$03CE01 1 byte Timer How long until Lemmy/Wendy and enemies energe from the pipes.
$03CE06 1 byte Misc. Lemmy/Wendy/decoy speed when retreating into a pipe.
$03CE0E 72 bytes Sprite subroutine (JSR) Subroutine for Lemmy Koopa and Wendy O. Koopa's "hit" phase.

If the phase timer is 0, this routine will increment the "hit counter" table, check if it's at 3, and if so, will zero Lemmy/Wendy's Y speed, play the falling SFX and increment the current phase table to "falling". If the "hit counter" table is not at 3, the routine will jump to code that sets the phase timer and sets the current phase to "descending".

If the phase timer is not 0, this routine will check whether the sprite hit was Lemmy/Wendy or a dummy, play the appropriate SFX for hitting them, and set the appropriate animation frames.
$03CE11 1 byte Misc. Change to F0 to make Lemmy/Wendy and enemies immediately go back into the pipe when they have been hit. (will not play the correct! sound effect.)
$03CE1A 1 byte Misc. Lemmy and Wendy's HP
$03CE25 1 byte Sound effect Lemmy/Wendy falling Sound Effect.
$03CE34 1 byte Sound effect Correct! Sound Effect.
$03CE47 1 byte Sound effect Incorrect sound effect for Lemmy/Wendy Battle.
$03CE56 4 bytes Sprite Misc. Animation frames for the Lemmy/Wendy dummies when hit by Mario. Indexed by the phase timer.
$03CE5A 47 bytes Sprite subroutine (JSR) Subroutine for Lemmy Koopa and Wendy O. Koopa's "falling" phase.

Updates Lemmy/Wendy's Y speed and position - Accelerates their falling speed until it reaches approximately #$40. When their Y low position reaches #$85, the routine spawns lava extended sprites, plays the "falling in lava" SFX, sets the phase timer, and sets the current phase to "sinking in lava". The routine then branches to part of the "hit" phase subroutine that sets Lemmy/Wendy's animation frames.
$03CE71 1 byte Misc. Y-position where Lemmy/Wendy lands in the lava after being defeated.
$03CE7F 1 byte Sound effect Lemmy/Wendy falling in lava Sound Effect.
$03CE80 2 bytes Misc. Change to [80 05] to disable the lava splash and sound effect when Lemmy/Wendy fall into lava.
$03CE89 30 bytes Sprite subroutine (JSR) Subroutine that runs when Lemmy Koopa or Wendy O. Koopa are sinking in lava. Ends the level (boss fight) when their phase timer is 0, otherwise, updates their Y speed and position.
$03CE95 1 byte Timer How long the fadeout is on the screen before the Castle Destruction Sequence appears.
$03CE9A 1 byte Music Music played after Lemmy/Wendy is defeated
$03CEA7 75 bytes Subroutine (JSR) Contact routine for the Lemmy Koopa and Wendy O. Koopa boss fights.

Runs the Mario-Sprite interaction routine, and if contact is made with Lemmy, Wendy or one of the dummies, will hurt Mario if his Y speed is negative or less than #$10. For other speeds, the routine calls the subroutines to give Mario points and boost him up, and plays the contact SFX (also the enemy hurt SFX if the sprite hit was Lemmy/Wendy). Also sets the phase timer, and increments the current phase of the fight to "hit". If the hit counter is at 2, this routine is also responsible for killing most sprites on screen (via JSL $03A6C8).
$03CEB0 1 byte Misc. Minimum speed Mario needs to be falling to stomp Lemmy/Wendy/decoys. Set to 01 to prevent Mario from getting unexpectedly damaged when trying to stomp them underwater. 00 causes Lemmy/Wendy/decoys to be always stomped on contact with Mario.
$03CEB8 1 byte Misc. Points you get for hitting Lemmy/Wendy or decoys. Default 02 - 400pts.
$03CEC2 1 byte Sound effect Hitting Lemmy/Wendy/enemies sound effect. (note: when hitting Lemmy/Wendy, 2 sound effects are played together.)
$03CECC 1 byte Sound effect Sfx that plays when Lemmy/Wendy has been hit.
$03CED0 3 bytes ASM [BD 34 15] Change to [80 09] (BRA $09) to make sprites on screen never die when stomping Lemmy Koopa or Wendy O. Koopa, regardless of their hit points.
$03CED4 1 byte Misc. Number of times minus one Lemmy/Wendy must be hit before other sprites in the room vanish.
$03CEE1 1 byte Timer How long Lemmy stalls after being hit.
$03CEF2 138 bytes Sprite tilemap related X offsets for the graphics of Lemmy Koopa and his decoys, indexed by their animation frame ($1602) times 6. Not all six bytes for each frame are actually used, though; the number of tiles per frame is instead determined by the table at $03D456.
$03CF7C 138 bytes Sprite tilemap related X offsets for the graphics of Wendy O. Koopa and her decoys, indexed by their animation frame ($1602) times 6. Not all six bytes for each frame are actually used, though; the number of tiles per frame is instead determined by the table at $03D46D.

Change both $03CFAF and $03CFB5 to [$08] to fix a tilemap issue with Wendy's bow, in conjunction with the changes listed under $03D1A4.
$03D006 138 bytes Sprite tilemap related Y offsets for the graphics of Lemmy Koopa and his decoys, indexed by their animation frame ($1602) times 6. Not all six bytes for each frame are actually used, though; the number of tiles per frame is instead determined by the table at $03D456.
$03D090 138 bytes Sprite tilemap related Y offsets for the graphics of Wendy O. Koopa and her decoys, indexed by their animation frame ($1602) times 6. Not all six bytes for each frame are actually used, though; the number of tiles per frame is instead determined by the table at $03D46D.
$03D11A 138 bytes Sprite tilemap related Tile numbers for the graphics of Lemmy Koopa and his decoys, indexed by their animation frame ($1602) times 6. Not all six bytes for each frame are actually used, though; the number of tiles per frame is instead determined by the table at $03D456.
$03D1A4 138 bytes Sprite tilemap related Tile numbers for the graphics of Wendy O. Koopa and her decoys, indexed by their animation frame ($1602) times 6. Not all six bytes for each frame are actually used, though; the number of tiles per frame is instead determined by the table at $03D46D.

Change both $03D1D7 to [1F 1E] and $03D1DD to [1E 1F] to fix a tilemap issue with Wendy's bow, in conjunction with the changes listed under $03CF7C.
$03D22E 138 bytes Sprite tilemap related YXPPCCCT settings for the graphics of Lemmy Koopa and his decoys, indexed by their animation frame ($1602) times 6. Not all six bytes for each frame are actually used, though; the number of tiles per frame is instead determined by the table at $03D456.
$03D2B8 138 bytes Sprite tilemap related YXPPCCCT settings for the graphics of Wendy O. Koopa and her decoys, indexed by their animation frame ($1602) times 6. Not all six bytes for each frame are actually used, though; the number of tiles per frame is instead determined by the table at $03D46D.
$03D342 138 bytes Sprite tilemap related Tile sizes (00 = 8x8, 02 = 16x16, 04 = unused) for the graphics of Lemmy Koopa and his decoys, indexed by their animation frame ($1602) times 6. Not all six bytes for each frame are actually used, though; the number of tiles per frame is instead determined by the table at $03D456.
$03D3CC 138 bytes Sprite tilemap related Tile sizes (00 = 8x8, 02 = 16x16) for the graphics of Wendy O. Koopa and her decoys, indexed by their animation frame ($1602) times 6. Not all six bytes for each frame are actually used, though; the number of tiles per frame is instead determined by the table at $03D46D.
$03D456 23 bytes Sprite tilemap related Number of tiles (-1) used in each of the animation frames for Lemmy Koopa and his dummies, indexed by $1602.
$03D46D 23 bytes Sprite tilemap related Number of tiles (-1) used in each of the animation frames for Wendy O. Koopa and her dummies, indexed by $1602.
$03D484 160 bytes Sprite subroutine (JSR) Graphics routine for Lemmy Koopa, Wendy O. Koopa, and their dummies (who share the routine of their corresponding boss).
$03D49A-$03D4DB is specifically used by Lemmy, while $03D4DF-$03D522 is used by Wendy.
$03D6AC 84 bytes Empty Unused data.
$03D71B 1 byte Misc. Number of Reznors killed before bridge begins breaking
$03D739 1 byte Timer Change $03D74E to [xx] and $03D739 to [xx-4] to change the speed at which the Reznor bridge breaks.

xx is the speed at which it breaks. $3C is the original, $05 is the fastest that will work, and $FF is the slowest.
$03D74E 1 byte Timer Reznor bridge's shatter timer initialization. Times the shatter SFX and the smoke puff for Reznor bridge tile destruction. Actual removal of the tile set by $03D739. Change this in conjunction to $03D739 to alter the bridge shattering speed. Default is $40.
$03D9DE 480 bytes Mode 7 tilemap Morton, Roy and Ludwig tilemap
$03DBBE 432 bytes Mode 7 tilemap Bowser tilemap
$03DD6E 5 bytes Pointer Low byte for the pointers to the SNES addresses for Morton, Roy, and Ludwig's palettes. The last two bytes are unused.
$03DD73 5 bytes Pointer High byte for the pointers to the SNES addresses for Morton, Roy, and Ludwig's palettes. The last two bytes are unused.
$03DD78 5 bytes Graphics The graphics ID for some Mode 7 bosses, indexed by $7E13FC. A value of $00 means to upload no planar graphics for the boss battle.
$03DD8E 1 byte Misc. Y position of the center of rotation for Reznor's wheel.
$03DD92 1 byte Misc. Size of Reznor's wheel. The closer to 00, the larger.
$03DF0A 1 byte Misc. How many animation frames Clown Car's propeller has, -1
$03E016 5 bytes ASM Lightning sound FX for Bowser battle. Change to EA EA EA EA EA to disable noise.
$03E02D 7 bytes Misc. Code for loading BG flashes during Bowser battle. Change to EA EA EA EA EA EA EA to disable.
$03E043 4 bytes Pointer Pointer to Bowser's first palette
$03E05C 932 bytes Empty Unused data.
$03E400 6624 bytes Music Credit music SPC data.
$03FDE0 544 bytes Empty Unused data.
$048086 51 bytes Subroutine (JSR) Seems to handle drawing the default water tiles on the overworld.
$048211 16 bytes Overworld Offsets for overworld free scrolling when start is pressed. 16 bit. Order: null, right, left, both (unused, same as right), null, bottom, top, both (unused, same as bottom) Direction Speeds
$048221 16 bytes Overworld Max range for overworld scrolling when start is pressed. 16bit. Indexed by controller bits. Order: null, right, left, both (unused, same as right), null, bottom, top, both (unused, same as bottom)

Due to a discrepancy between these values and the values in $049416, free scrolling can scroll the overworld 1 pixel lower than walking down can.
Direction Limits
$04824B 1 byte Debug Change from 80 to F0, and pushing select on the OW will cycle through Yoshi colours.
$04828D 2 bytes ASM Change to 80 06 to disable "Lives Exchanger" function.
$048380 1 byte Misc. Change to 00 to disable looking around the overworld map
$048415 28 bytes Overworld Handles looking around the overworld when in the free look mode (pressing pause). Takes values in A and X that correspond to directions. Indexes $048211 and $048221 using the given values. Free Look Speed and Range
$04857D 39 bytes Pointer Pointers that are indexed by $7E13D9. Each one points to a different process running on the overworld.
$0485AA 2 bytes Overworld border X placement of Mario on the overworld border
$0485B2 2 bytes Overworld border Y placement of Mario on the overworld border
$0485BC 1 byte Overworld border Mario's speed on the overworld (the one in the top-left). Since you don't actually move, it's only a graphical aspect. 0 is the lowest value possible - stand still. 1-3F speed up gradually. Other values aren't recommended and/or give the same effect.
$0485CF 4 bytes Overworld border Change from 22 BD E2 00 to EA EA EA EA to remove Mario from the Overworld border
$0485E8 1 byte Overworld border Change this byte to [60] (RTS) to get rid of the 32x32 box that surrounds the Mario image.
$0485E9 1 byte Overworld border X placement of first row of tiles behind Mario
$0485ED 1 byte Overworld border Y placement of tile group behind Mario
$048603 1 byte Overworld border Tile used for group behind Mario
$048608 1 byte Overworld border Attributes of group behind Mario
$04861B 1 byte Overworld border X placement of second to fourth row of tiles behind Mario
$048769 3 bytes ASM Change to EA EA EA to keep the inactive player from appearing on the map
$0487B4 1 byte Sprite tilemap related Tile to use for both halves of Mario's halo on the overworld.
$0487BC 1 byte Sprite tilemap related Properties of left half of Mario's halo on the overworld, in YXPPCCCT format.
$0487C1 1 byte Sprite tilemap related Properties of right half of Mario's halo on the overworld, in YXPPCCCT format.
$0487CB 384 bytes Sprite tilemap related Overworld sprite tilemap (Mario/Luigi) (2 bytes per 8x8 tile)
$0489DE 384 bytes Sprite tilemap related Overworld sprite tilemap (More M/L, Yoshi)
Change $04:8A36 to [42 22 43 22 52 22 53 22] to fix a bug where Yoshi is partially red sometimes, no matter which color he really has.
$048CDE 8 bytes Sprite tilemap related Table of palette values used by each Yoshi color on the overworld. The table is formatted as follows: each color uses 2 bytes, in the order yellow, blue, red, green, and each 2 byte value is in big endian, meaning that the actual value is stored in the second byte. In practice, this means that the addresses you should edit are the following:
- $048CDF: yellow palette.
- $048CE1: blue palette.
- $048CE3: red palette.
- $048CE5: green palette.
The values follow the YXPPCCCT properties format: to find this, subtract 8 from the palette row, and then multiply it by 2.
$048DDA 1 byte Misc. Change to 80 to fix a rather odd bug caused by playing a level immediately after beating a boss in Sunken Ghost Ship's original level (level 018), in which Yoshi will display extremely strangely and goal tapes/spheres will stop Mario rather than making him walk.
$048E2E 1 byte Music Change to 80 to fix the glitch that occurs when Mario defeats one of the Koopalings and the music on the Overworld "disappears". Also applies for Custom Music.
$048EEB 3 bytes ASM If you change this to EA EA EA, the background water tiles on the overworld will not show up.
$048EFA 1 byte Misc. On which submap Mario should be walking upwards after the intro screen (walking to Yoshi's House).
$048F01 1 byte Coordinate On which X position Mario should be walking upwards after the intro screen (walking to Yoshi's House).

In other words, on this X-position, the intro march will be triggered at the beginning of the game.
$048F08 1 byte Coordinate On which Y position Mario should be walking upwards after the intro screen (walking to Yoshi's House). (To be used with $05B15C.)
$048F7F 8 bytes Misc. The overworld tiles that trigger a save prompt. default is $58 (fortress), $59 (unrevealed fortress, not used in the original game because all tiles are revealed before you play them), $5D (castle), $63 (ghost house), $77,$79 (switch palaces), $7E (yellow dots from special world), $80 (Sunken Ship tile)
$048F93 1 byte ASM [6C] Changing this to [00] will cause all overworld tiles to show the save prompt when the corresponding level is beaten.
$048F94 72 bytes Subroutine (JSR) "Set up saving" routine. This copies a number of RAM addresses to the table at $1F49. You probably want to copy this to your patch (it contains lots of weirdness you don't want, so don't use the JSL to RTS trick).
$049060 4 bytes Overworld How may times the bits are shifted to the right to get the direction the player walks after beating a level for the layer 1 overworld tile the player stands on - 1 except for a zero in which the value isn't shifted. Indexed by $7E0DD5 in the order normal exit, secret exit 1, secret exit 2 and secret exit 3.
$049064 8 bytes Overworld The direction the player moves after beating a level. Indexed from $7ED800 after shifting and stored to $7E0DD3.
$04906C 12 bytes Overworld Table of the no-auto-move levels on the overworld. Each of the values are translevel numbers in 16-bit.
$049078 10 bytes Misc. The list of levels that have hard-coded paths. Each byte represents a level. The value 0xFF means to check for a particular overworld position instead of a level (for the pipe that Chocolate Island 2 leads to). Setting any of these levels to an invalid level (e.g. 0xFE) will disable that hardcoded path.
$049082 4 bytes Coordinate The 16-bit X and Y position in the overworld that will be used for the hardcoded path from the pipe to Chocolate Island 2.
$049086 68 bytes Misc. This is a list of all of the hardcoded paths, in the same order as the levels defined at $049078. The paths are defined as a list of all the Layer 1 tiles that Mario would encounter along the path if the path were not hardcoded. Each path ends in a level tile of some kind, which should match a visible level tile in the world.
$0490CA 68 bytes Misc. Hardcoded path information. For each tile in the list at $049086, there is a corresponding byte in this list. These values determine the direction Mario should face while walking along that path.
$00 = Up, $02 = Down, $04 = Left, $06 = Right
$04910E 18 bytes Misc. Hardcoded path data. A list of offsets into the fields at $04:9086 and $04:90CA. This list corresponds to the list at $04:9078; this offset tells where the tile data for that level's hardcoded path begins.
$049136 1 byte Misc. DEBUG: Change to F0 to make player warp to Star Road if Select is pressed on top of Yoshi's House (tile 0x56).
$049171 1 byte Sound effect Sound effect played when warping over a star road tile.
$0491B8 29 bytes Misc. Loads Mario/Luigi's powerups, coins, Yoshies, and lives
$0491E1 1 byte Music [80] Music to use when entering a level.
$0491E3 1 byte Music [FB] Change to F9 or FC to use sound effect when entering a level.
$04922E 1 byte Misc. Change to 00 to make Mario stay in place after completing a level on the overworld (as opposing to moving to the next level)
$049264 1 byte Misc. On the overworld, Mario always faces you after he moves onto a level tile. Change the 09 to a 00 to disable that. Mario will continue facing the last direction he was moving towards after he moves onto a level tile.
$049291 3 bytes Debug If you replace this with "4C AF 92" (JMP $92AF), it will enable to walk in unrevealed paths on the overworld.
(But it will not work correctly with star road warps)
$049414 2 bytes Mario physics Speed of Mario on the OW (Higher = faster). First byte is normal ground, second is stairs.
$049416 8 bytes Overworld Max range for overworld scrolling when walking. 16-bit. Order: left, top, right, bottom.

Due to a discrepancy between these values and the values in $048221, free scrolling can scroll the overworld 1 pixel lower than walking down can.
Direction Limits
$049426 10 bytes Misc. List of layer 1 overworld tiles that allow mario to walk from one map to another ("exit level tiles" in lunar magic)
$04965C 1 byte Overworld Change to 80 (BRA) to make Mario stand on OW tiles 6A through 6D, instead of swimming through them.
$04968D 24 bytes Sound effect Code that handles what overworld tiles don't play a SFX when stepped on. The tile numbers are used in 16-bit.
$04968D - Change [AD C1] to [80 10] to make overworld star/pipe tiles play the "beep" sound when stepped on.
$0496A0 - Sound effect that plays when Mario steps on a level tile. Change to 00 to disable.
$04969F 6 bytes Sound effect Replace [A9 23 00 8D FC 1D] with [EA EA EA EA EA EA] to disable the "beep" when Mario moves onto a level tile.
$049831 84 bytes Overworld Handles moving the camera when Mario moves on the overworld. Checks against the scroll bounds of the overworld at $049416. Does not move the camera when the Valley of Bowser earthquake ($7E1BA0) is happening, or when the player is on a submap.
$049885 65 bytes Subroutine (JSR) Calculator for the players overworld tile position. Before calling this function $00 must contain the 16 bit X position of the player, $02 must contain the 16 bit Y position of the player, and X must be 0 or 1 (luigi, mario). Additionally, A must be 16 bit.
$0498CA 1 byte Overworld Initial Y speed of the player when walking up to Yoshi's house. Each frame, they moves up one pixel, and then they're moved down this many 256ths of a pixel. Since the default value for this is #$80, this means Mario moves up #$100-#$80=#$80 pixel 256ths, which is half a pixel.
$0498F0 1 byte Coordinate At which Y position Mario should stop the intro march on the overworld (walking to Yoshi's house after start of new game). Default: $78.
$049964 170 bytes Overworld A big bunch of tables for which exits on the overworld lead to where.

$049964 to $0499A9: Five bytes for each entry that describe where each exit is (the tile Mario enters). First two bytes are Y position ($1F19), then comes X position ($1F21), then finally the submap ($13C3).
$0499AA to $0499EF: Five bytes for each entry that describe where each exit leads (the tile Mario ends at). Same format as above.
$0499F0 to $049A0D: Two bytes for each entry, to additionally describe the target. First comes Y high divided by 16 ($1F21), then comes X high divided by 16 ($1F1F).

If an exit is not present at the exact listed position, Mario is not moved, and tries to exit from the same tile again.
$049AC5 460 bytes Layer 3 Level names.
It's almost raw tilemaps ready to be uploaded to VRAM (no YXPCCCTT), but if the highest bit is set, it gets cleared and it's the end of the area.
However, it's cut to small chunks. See $04A0FC (0x222FC) for how they're put together.
$049D22 2 bytes Coordinate Position of OW level names. Increase/decrease by 1 to make it move up to the right/left, increase/decrease by 20 to make it move down/upwards.
Note that #$8B should be considered the low byte for the address, not #$50.
$049EA7 162 bytes Misc. Two bytes per tile, starts at tile $01 and goes to $51.
First byte is X distance mario moves across tile
Second byte is Y distance mario moves across tile
The distance is based on walking right for a horizontal path
and walking down for a vertical path (see entry for $04:9F49)
$049F11 2 bytes Overworld [FC F8] Change to [10 04] to allow overworld path tile 36 to be used as the missing water path tile. Must be combined with $049FB3, $04A020, and $04A04D.
$049F49 162 bytes Misc. Two bytes per tile, starts at tile $01 and goes to $51
If the two bytes are $01,$00 then the tile is a horizontal path
If they are $00,$01 then a vertical path.
No other values were used in game
It seems odd to use two bytes to do this, so it might be worth experimenting with other values
$049FB3 2 bytes Overworld [00 01] Change to [01 00] to allow overworld path tile 36 to be used as the missing water path tile. Must be combined with $049F11, $04A020, and $04A04D.
$049FEB 81 bytes Misc. One byte per tile, starts at tile $01 and goes to $51
Mario pose while walking

0 - Mario Vertical
4 - Mario Horizontal
8 - Mario Swimming Vertical
C - Mario Swimming Horizontal
10 - Entering Level
14 - Climbing
18-FF - Unused

Only multiples of 4 seem to be used, using a value inbetween just seems to result in oddly animated versions of the normal values
$04A020 1 byte Overworld [08] Change to [0C] to allow overworld path tile 36 to be used as the missing water path tile. Must be combined with $049F11, $049FB3, and $04A04D.
$04A04D 1 byte Overworld [36] Change to [87] to allow overworld path tile 36 to be used as the missing water path tile. Must be combined with $049F11, $049FB3, and $04A020.
$04A0FC 186 bytes Layer 3 How to put level names together.
Format: 16 bits/entry.
First byte contains the offsets to the second and third parts (lowest four bits there is third part, upper four bits there is second), while the second byte (except the highest bit, which is unused) contains the offset to the first part.
Note that those offsets aren't direct, they point to $049C91, $049CCF, or $049CED (note: those offsets are 16bit), which contains the real offsets to $049AC5.
$04A1B6 586 bytes Empty Unused data
$04A400 307 bytes Overworld border Layer 3 Border Tile Data: The 95s, 96s, and 97s are the tiles used for the Mushrooms, Stars, and Fire Flowers (respectively). The overworld border's "filler" tiles (tile FE by default) are determined by bytes at: $04A404 (top rows overworld border); $04A40A (first column, left-hand side); $04A410 (second column, left-hand side); $04A416 (top right corner by map shadow); $04A41C (right-hand side column); $04A422 (bottom rows).
$04A530 is the x beside Mario and the Lives in the overword border. Change from 8F to FE to remove it.
$04A533 6904 bytes Misc. Overworld layer 2 data's tilemap data: Tile numbers.

Table is compressed in the LC_RLE2 format
$04C02B 5709 bytes Misc. Overworld layer 2 data's tilemap data: Tile properties (YXPCCCTT).

Table is compressed in the LC_RLE2 format
$04D678 96 bytes Overworld Which directions you go in after beating a level, indexed by level ID ($13BF).
Format: nn112233
nn = regular exit
11 = secret exit #1
22 = secret exit #2 (unused)
33 = secret exit #3 (unused)
00 is up, 01 is down, 10 is left, 11 is right.
$04DA1D 44 bytes Overworld A 22-byte table of Layer 1 overworld tile numbers that change into other tiles, followed by a 22-byte table of the tile numbers that they become. Entries $09 [53->43], $0A [52->44], and $15 [54->23] correspond to tiles that are unused in the original SMW, so they could be changed to other tile numbers if need be.

(This is how things such as revealing level tiles work: tile numbers from the first list are transformed into the corresponding tiles from the second list when activated.)
$04DAAD 6 bytes Overworld Routine that decompresses and uploads the overworld's layer 2 tilemap to the buffer at $7F4000. It's just a wrapper that JSRs to $04DC6A and preserves the processor flags (PHP : JSR : PLP).
You can JSL to this routine to reload the overworld's layer 2. This can be useful if modifying $7F4000 (for example, if you want to load the overworld after the staff roll cutscene has played out).
$04DABA 53 bytes Subroutine (JSR) Subroutine that decompresses LC_RLE2 data.
$04DBC8 7 bytes Music Music tracks used by the different submaps, indexed by submap ID ($1F11).
$04DC6A 68 bytes Overworld Routine that decompresses and uploads the overworld's layer 2 tilemap to $7F4000 (including all the event data). Additionally, it loads all the currently activated events into the tilemap.
If you need this, call the JSL wrapper at $04DAAD.
$04DD57 54 bytes Subroutine (JSR) Subroutine that decompresses LC_RLE1 data.
$04DD8D 1484 bytes Overworld A table used by layer 2 events. It contains 0x173 four byte entries. The first two bytes in each entry are for the source offset ($0C8000) (also decides size), the last two are for the target offset ($7F4000).
$04E359 242 bytes Overworld Table that tells how many layer 2 tiles each event reveals and where in the table ($04DD8D) they start. This table contains 121 16-bit values; one for each event, and one to tell where $04DD8D ends.
$04E453 285 bytes Subroutine (JSR) Routine that loads the overworld layer 2 events on game load and OW load after cutscenes (possibly at every OW load).
$04E577 16 bytes Pointer Pointer to locations in the routine that runs events.
$04E587 32 bytes Overworld VRAM addresses (16-bit) to write each of the destroyed castle/fortress/switch palace tiles to.
Likely not used when LM is done with the ROM.
$04E5A7 5 bytes Overworld Layer 1 tile numbers that have a destruction event associated with them. Essentially, the "before" tiles.
$04E5AC 5 bytes Overworld Top tile to write after each destruction, in the order of $13D0. The table is only used for two-tile destructions (like the castles), so the first three bytes are normally unused.
$04E5B1 5 bytes Overworld Bottom/base tile to write after each overworld tile destruction, in the order of $13D0.
$04E5B6 32 bytes Overworld Layer 1 tilemap locations (16-bit) for each of the castle/fortress/switch palace destruction events.
$04E5D6 16 bytes Overworld Which event numbers will trigger castle/fortress/switch palace tile destruction sequences. Due to a coding error by Nintendo, the table is treated as 0x18 bytes long when it's really only 0x10 bytes.
$04E5E6 8 bytes Overworld The overworld tiles that will allow triggering a save prompt when an event has already been cleared. Tile must also exist in the list at $04:8F7F.
$04E5EE 82 bytes Subroutine (JSR) Subroutine that runs events at level end.
$04E660 1 byte Misc. Level that triggers overworld Earthquake sequence
$04E670 1 byte Sound effect Castle Destroyed (OW) Sound Effect.
$04E764 1 byte Sound effect SFX that makes the path appear (OW).
$04E8E4 44 bytes Overworld Event numbers corresponding to each of the Layer 1 and Layer 2 event tiles that are loaded offscreen in a clean ROM.
$04E910 44 bytes Overworld Table of whether an offscreen event tile is on Layer 1 (00) or Layer 2 (01).
$04E93C 88 bytes Overworld Location indices (16-bit) for each of the offscreen event tiles in their respective tilemaps.
$04E994 88 bytes Overworld Tile numbers for each of the offscreen events. All entries are 16-bit, with the high byte for Layer 1 tiles being unused.
$04EAA8 1 byte Timer Delay between laying down individual OW event tiles. Change from 40 to 00 for minimal delay.
$04EB41 1 byte Misc. Determines which submap reveals its event tiles at a slower rate (Default value is 03: Forest of Illusion)
$04EB42 1 byte Misc. Change from D0 to 80 to make the Forest of Illusion submap reveal its event tiles at the same speed as the other submaps
$04ECAB 1 byte Sound effect SFX that makes when the level tile appears.
$04EF3E 834 bytes Empty Unused data.
$04F294 1 byte Timer How long until Switch Palace is destroyed.
$04F2A1 1 byte Misc. No. of times the ! blocks are spawned on OW after switch palace.
$04F2A5 1 byte Sound effect [1C] Sound played by the switch palace blocks as they fly across the overworld (after pressing a switch).
$04F2AA 1 byte Misc. How many ! blocks are spawned on OW after switch palace.
$04F4B6 10 bytes Stripe Image "MARIO" text in the Lives Exchanger box. Odd bytes are tile numbers. Even bytes are YXPCCCTT properties.
$04F4C4 10 bytes Stripe Image "LUIGI" text in the Lives Exchanger box. Odd bytes are tile numbers. Even bytes are YXPCCCTT properties.
$04F4F6 4 bytes Stripe Image Tiles for Mario's halo in the Life Exchange box. Even bytes are tile numbers and odd bytes are their YXPCCCTT properties.
$04F4FE 4 bytes Stripe Image Tiles for Luigi's halo in the Life Exchange box. Even bytes are tile numbers and odd bytes are their YXPCCCTT properties.
$04F52B 250 bytes Misc. Main Lives Exchanger routine
$04F56F is X location of Mario on lives exchange
$04F570 is Y location of Mario on lives exchange
$04F575 is X location of Luigi on lives exchange
$04F576 is Y location of Luigi on lives exchange
$04F57B is the tile to use for Mario on lives exchange
$04F57C is Pal/flip/etc. of Mario on lives exchange
$04F581 is the tile to use for Luigi on lives exchange
$04F582 is Pal/flip/etc. of Luigi on lives exchange
$04F625 65 bytes Misc. Overworld sprite data - controls 13 of the 16 slots of the overworld sprite tables (the first 3 of the 16 are reserved for clouds). One overworld sprite has 5 bytes:
Byte 1 - sprite number
Byte 2 - X-Pos, low
Byte 3 - X-Pos, high
Byte 4 - Y-Pos, low
Byte 5 - Y-Pos, high

Data is only read once, on titlescreen load. (Which also explains the bug that occurs with the titlescreen showing an unnecessary cloud tile.)
$04F666 6 bytes Coordinate X positions of the overworld ghost sprites, relative to their corresponding main map ghosts. Two bytes each. The small size of this table is why you can't have ghosts in any slot other than the last three.
$04F66C 6 bytes Coordinate Y positions of the overworld ghost sprites, relative to their corresponding main map ghosts. Two bytes each. The small size of this table is why you can't have ghosts in any slot other than the last three.
$04F709 1 byte Overworld Submaps on where to disable the thunder effect (originally used in Valley of Bowser).
#$80 - Main map
#$40 - Yoshi's Island
#$20 - Vanilla Dome
#$10 - Forest of Illusion
#$08 - Valley of Bowser
#$04 - Special World
#$02 - Star World
#$01 - Unused
Note that the bits in this address disables the thunder in this submap, so to disable it everywhere, #$FF is the correct value. This address affects both colors and sound.
$04F737 1 byte Music Sound effect for the thunder in Valley of Bowser.
$04F744 1 byte Timer How long the lightning flash stays on screen (Bowser's Valley)
$04F74B 35 bytes Subroutine (JSR) Subroutine which is used for the flashing effect in Valley of Bowser.
$04F754 - Color which is animated by this routine. Can be changed to 00 to have an all round lightning effect (everything flashes).
$04F829 10 bytes Overworld Table which determines on which submaps an overworld sprite is disabled. Format is binary as [myvfbSs-], where m = main, y = Yoshi's Island, v = Vanilla Dome, b = Valley of Bowser, S = Special World, s = Star World. The last bit is unused.
$04F85F 22 bytes Pointer Overworld sprite pointer table.
$04FA48 1 byte Overworld Determines the three consecutive layer 1 tiles (this value +0, +1, or +2) that cause an overworld Cheep-Cheep to jump when walked across.
$04FA6D 1 byte Misc. Flip to use when approaching overworld Cheep-Cheep from left
$04FA6F 1 byte Sprite tilemap related Base Palette/flip/etc. of overworld Cheep-Cheep
$04FA74 1 byte Misc. Maximum height overworld Cheep-Cheep can jump
$04FA79 1 byte Sound effect Sound overworld Cheep-Cheep makes
$04FA7E 1 byte Sprite Misc. No. of frames used by OW Cheep-Cheep's splash.
$04FAB2 1 byte Sprite tilemap related Tile to use for overworld Cheep-Cheep (1)
$04FAB8 1 byte Sprite tilemap related Tile to use for overworld Cheep-Cheep (2)
$04FAFB 1 byte Sprite tilemap related Tile to use for overworld Piranha Plant (1)
$04FB01 1 byte Sprite tilemap related Tile to use for overworld Piranha Plant (2)
$04FB03 1 byte Sprite tilemap related Palette/flip/etc. of overworld Piranha Plant
$04FB38 1 byte Misc. X speed of overworld clouds
$04FB3D 1 byte Misc. Y speed of overworld clouds
$04FB44 3 bytes Misc. Change from 20 62 FE to EA EA EA to make the overworld clouds not show up (even if you use sprite slots for them).
$04FB65 1 byte Sprite tilemap related Pal/flip/etc. of overworld cloud (left half)
$04FB76 1 byte Sprite tilemap related Pal/flip/etc. of overworld cloud (right half)
$04FB79 1 byte Sprite tilemap related Tile to use for overworld clouds
$04FCC6 1 byte Sprite tilemap related Tile to use for Yoshi's House smoke (1)
$04FCD3 1 byte Sprite tilemap related Tile to use for Yoshi's House smoke (2)
$04FD0A 6 bytes Sprite physics Turn timer table for the OW Boo sprite. The table is formatted as follows: 3 pair of speeds, each one used for the X, Y and Z direction respectively. In each pair, the first value is used when having positive speed and the second when turning around to negative speed. The timer is checked by doing AND between the value in this table and the table at $0E25 (which increases every frame), and updating the direction when the result is not 0.
$04FD10 10 bytes Sprite physics Acceleration table for the overworld Bowser and Boo sprites.
The table is formatted as follows: 5 pairs of values, each pair having a right and left acceleration value, where the first 2 are OW Bowser's X and Y acceleration respectively, and the others are OW Boo's X,Y and Z acceleration respectively.
$04FD1A 10 bytes Sprite physics Maximum speed table for the overworld Bowser and Boo sprites.
The table is formatted as follows: 5 pairs of values, each pair having a right and left speed value, where the first 2 are OW Bowser's X and Y speed respectively, and the others are OW Boo's X,Y and Z speed respectively. The last pair of values ($01,$FF) is also used to initialize the Z speed of the OW Boos, but for some reason they only read the first value.
$04FD2E 1 byte Sprite tilemap related Pal/flip/etc. of overworld Bowser (facing left)
$04FD35 1 byte Sprite tilemap related Pal/flip/etc. of overworld Bowser (facing right)
$04FD38 1 byte Sprite tilemap related Tile to use for overworld Bowser in clown car
$04FD82 1 byte Sprite Misc. Overworld sprite slot to use as Forest of Illusion's ghost (default: slot 0F). This ghost won't appear on submaps unless certain events are beaten.
$04FD89 1 byte Sprite Misc. Which event numbers reveal the Forest of Illusion ghost, in the format of $1F02. The address number to use is two bytes at $04FD86 (x27F86).
Default value: 12, with address $1F07 (events 2B and 2E).
$04FDA6 1 byte Sprite tilemap related Pal/flip/etc. of overworld Boo (facing left)
$04FDAD 1 byte Sprite tilemap related Pal/flip/etc. of overworld Boo (facing right)
$04FDB0 1 byte Sprite tilemap related Tile to use for overworld Boo
$04FE90 71 bytes Sprite subroutine (JSR) Overworld sprite speed routine.
$04FFB1 79 bytes Empty Unused data.
$0580D5 3 bytes ASM Handles pipe colours in horizontal levels. Change to:
EA - Pipes change colour every half-screen.
EAEA - Every 1/4 screen (every 2 pipes).
EAEAEA - Every pipe.
EAEA0A - Every half pipe (every pipe is 2-toned).
EAA9xx - All pipes are same colour (xx=00, 01, 02 or 04).
Must be combined with $05:87A4.

Warning: Does not have any effect on ROMs LM 1.7 has been used on.
$0581BB 64 bytes Misc. Map16 tileset-specific table. Each bit (from high to low) corresponds to one tile. When the game sets up tile pointers, if the bit is set, it writes and then increments (by 2) P1 (which is initialized to the value at $058000 + (Tileset * 2)), otherwise it writes and increments P2 (initialized to $(0D)8000).
$0582C8 114 bytes Subroutine (JSR) This routine is used within the level clear to set $7EC800-$7EFFFF to #$25.
$05833A 114 bytes Subroutine (JSR) This routine is used within the level clear to set $7FC800-$7FFFFF to #$00.
$058417 192 bytes Misc. Level mode attribute tables, corresponding to the list of properties seen in LM below the level mode dropdown. Consists of six 32-byte tables, with each level mode receiving a single byte in each:

  • $058417: Screen Mode. Stored to $5B.
  • $058437: TM&TMW. Stored to $0D9D.
  • $058457: TD&TSW. Stored to $0D9E.
  • $058477: CGADSUB. Stored to $40.
  • $058497: Fight Mode. Stored to $0D9B.
  • $0584B7: Sprite Layer. Stored to $64.

Change at the two bytes at $058455 from [$01 $02] to [$05 $06] to fix an issue in level modes 1E and 1F that causes the Layer 3 status bar to be overlaid by the transparent layer.
$0584D7 4 bytes Timer Hundreds digits for the four time limits that can be specified in the level header. Default is $00, $02, $03, $04 for time limits of 0, 200, 300, and 400. Tens and ones digits are set to 0 at $05858A.
$0584DB 1 byte Music Level Music - Here We Go! [02] (change to any other value to change what music plays by default in grassland levels)
$0584DC 1 byte Music Level Music - Cave Drums [06] (change to any other value to change what music plays by default in cave levels)
$0584DD 1 byte Music Level Music - Piano [01] (change to any other value to change what music plays by default in rope/sky levels)
$0584DE 1 byte Music Level Music - Castle [08] (change to any other value to change what music plays by default in Castles and Fortresses)
$0584DF 1 byte Music Level Music - Ghost House [07] (change to any other value to change what music plays by default in Ghost Houses)
$0584E0 1 byte Music Level Music - Water [03] (change to any other value to change what music plays by default in water levels)
$0584E1 1 byte Music Level Music - Boss Battle [05] (change to any other value to change what music plays by default during boss battles)
$0584E2 1 byte Music Level Music - Switch Palace [12] (change to any other value to change what music plays by default in Switch Palaces)
$0587A4 3 bytes ASM Same as $05:80D5. Both must be changed to the same values.
$058A95 2 bytes Coordinate Until which Y position (default : #$01B0) all Map16 tiles' graphics should be updated.
$058BA1 1 byte Objects Which tileset's layer 2 always uses palettes 4-7 in horizontal levels, never 0-3. Default is 03 (Underground 1). To disable this effect, set it to anything invalid, like FF.
$058C85 1 byte Objects Which tileset's layer 2 always uses palettes 4-7 in vertical levels, never 0-3. Default is 03 (Underground 1). To disable this effect, set it to anything invalid, like FF.
$058E19 487 bytes Empty Filled with FF.
$059000 135 bytes Pointer 24-bit layer 3 pointer. 3 pointer addresses per FG/BG tileset (tilesets 0-E). First pointer for low and high tides, second pointer for low tide only, third pointer for tileset specific layer 3 (although technically, all layer 3 settings here can be tileset specific).
$059087 525 bytes Layer 3 Layer 3 cage tiles placement, stripe image format.
$059294 693 bytes Layer 3 Layer 3 crusher tiles placement, stripe image format.
$059549 149 bytes Layer 3 Layer 3 tide tiles placement, stripe image format.
$0595DE 1081 bytes Layer 3 Layer 3 ghost house fog tiles placement, stripe image format.
$059A17 201 bytes Layer 3 Layer 3 goldfish tiles placement, stripe image format.
$059AE0 1857 bytes Layer 3 Layer 3 castle windows tiles placement, stripe image format.
$05A221 834 bytes Layer 3 Layer 3 underground rocks tiles placement, stripe image format.
$05A563 29 bytes Empty Unused data
$05A580 16 bytes Layer 3 VRAM positions for the different lines of the message boxes. Actually the first half of stripe images; the second half is the same for all of those. It's at $05B1F7.
$05A590 23 bytes Misc. Which levels have message boxes. Different values here corresponds to $13BF. If the highest bit (#$80) is set, it tells that message 2 is used for that level; if clear, message 1 is used.
Most likely not used when LM is done with the ROM.
$05A5D9 2854 bytes Layer 3 All the message box texts.
They're almost raw tilemaps (doesn't contain YXPCCCTT data) to be uploaded to VRAM, but setting the highest bit makes it add a newline too.
$05B106 2 bytes Misc. Time when to show text after expanding/shrinking the Message Box window.

1st byte determines when to show the message.
2nd byte determines how fast to hide the message.

Edited values can't be higher than the default hex values.
$05B108 2 bytes Misc. Expanding/Shrinking size of Message Box window.

Second digit of both bytes can't be other numbers than 0.
$05B10A 2 bytes Misc. Expanding/Shrinking speed of Message Box window.
$05B10C 399 bytes Subroutine (JSL) The subroutine that displays the message from a message box. It handles the windowing HDMA, the stripe image upload, and things such as teleporting to the overworld after the intro screen.

$05B129: [9C 9F 0D] Change to [EA EA EA] to prevent HDMA from getting disabled AFTER a message box has been displayed. Use with $05B296.
$05B15C: [8E] The Y position on which to start the march to Yoshi's House after the intro screen. To be used with $048F08.
$05B15D: [8D 19 1F] ASM code that stores the player's starting Y position to its RAM address, $1F19. Lunar Magic changes this to [EA EA EA] if you move the Mario OW sprite around, thus disabling the intro march (and its effects, such as storing '0' to the amount of levels cleared). If you want to undo this effect, change it back to [8D 19 1F].
$05B160: Side exit subroutine. It can be JSL'd to.
$05B189: [D0 CF] Change to [EA EA] to prevent the message that pops up in the intro screen from exiting the level. (It will act exactly the same as a message in any other level.)
$05B21D: [39] Tile properties of the Layer 3 tiles in message box messages in YXPCCCTT format. (Note: Lunar Magic ASM hacks render this address unused.)
$05B296: [8D] Change to [0C] to prevent HDMA from getting disabled WHILE a message box is being displayed. Use with $05B129.
$05B29B 64 bytes Sprite tilemap related This is the 8x8 tilemap data for the sprites used on the switch palace messages (dotted and '!' block). The first byte in each in the tile, the second byte is the YXPPCCCT data.
$05B329 33 bytes Subroutine (JSL) "Give coins" subroutine. If you JSL to it, it will give the player the number of coins equal to the value in A.
$05B34A 17 bytes Subroutine (JSL) Subroutine that gives the player a single coin. It handles the green star block as well.
$05B34E is the sound this generates.
$05B375 488 bytes Layer 3 Title screen stripe image data (the part that appears right as the title screen loads up).
$05B6FE 203 bytes Layer 3 Tilemap of the erase file select dialog. ("ERASE MARIO A . . . EMPTY", etc.)
$05B7C9 169 bytes Layer 3 Tilemap of the file select dialog. ("MARIO A . . . EMPTY", etc.)
$05B872 85 bytes Misc. 1 / 2 player game stripe image data.
$05B93B 48 bytes Misc. Destination VRAM addresses for animated tiles. There are 6 bytes, 3 16-bit addresses, for each of the 8 possible animation frames (index = (frame & 7) * 6), and their values get stored to $0D7C, $0D7E, and $0D80 during the animation handling routine. (The last 6 bytes are actually unused, since SMW never uses animation frame 7 for anything.)
$05B96B 24 bytes Misc. This table determines how a certain tile should vary its animation. 00 = always the same, 01 = change depending on $14AD, $14AE, or $14AF (P-switch timers and on/off switch), 02 = change depending on $1931 (FG/BG tileset number). It is indexed by the animation frame times 3, or (($14 & #$07) * 3), and each of the 8 possible animation frames uses one group of 3 bytes. Note that the last 6 bytes overlap with the table at $05B97D.
$05B97D 15 bytes Misc. Table that determines, for tile animations that can have one of two states, which address to use to determine the state (i.e. any animation for which its corresponding value in the table at $05B96B is 01). The address used is $14AD plus this value, so 00 = blue P-switch, 01 = gray P-switch, 02 = on/off switch. This table is only 15 bytes long rather than 24 because all of the 2-state animations are updated on animation frame 0, 1, 2, 3, or 4, never 5, 6, or 7. Note also that the last byte overlaps with the table at $05B98B.
$05B98B 14 bytes Misc. Table, indexed by FG/BG tileset. Determines which group of animated tiles to use for a certain tileset, such as conveyor belts, stars, lava, etc.
$05B999 416 bytes Misc. Frame data for animated tiles. Each group of 8 bytes is one set of tile animation, and each pair of bytes is one frame. The numbers are offsets forming the lower two bytes of pointers to the table data at $7E7D00. (For instance, the first two bytes = 00 95 -> data at $7E9500.) There seems to be no discernable pattern to which tiles are uploaded where in VRAM, though.
$05BB39 109 bytes Subroutine (JSL) The routine that handles tile animation. It reads the animation data from the table at $05B999 and, based on that and a few other factors (such as tileset and blue P-switch status), sets the pointers to the tile data in the table at RAM $7E0D76.
$05BBA6 90 bytes Empty Unused data.
$05BC87 30 bytes Pointer Pointers to the scroll sprite main routines for Layer 1 scrolling.
$05BCB8 30 bytes Pointer Pointers to the scroll sprite main routines for Layer 2 scrolling.
$05BCF0 30 bytes Pointer Pointers to the scroll sprite init routines for Layer 1 scrolling.
$05BD17 30 bytes Pointer Pointers to the scroll sprite init routines for Layer 2 scrolling.
$05BEA6 3 bytes ASM [9C 11 14] Change this to EA EA EA to make Layer 2 Sideways Scroll not disable horizontal scroll.
$05C4F2 6 bytes ASM Change from [85 22 A9 01 85 23] to [38 69 02 85 22 EA] in order to make the Layer 3 tides scroll to the right instead of the left. (Nothing is stored to the high byte of Layer 3 X position, however, so if you adjusted the tide to be asymmetrical, this may not give the wanted result.)

Only applies to the graphical part of the Layer 3 tide.
$05C71B 1 byte Misc. Layer 2 on/off switch lower limit. The lower this number, the further down the screen layer 2 will go before stopping.
$05C71D 1 byte Misc. Layer 2 on/off switch upper limit. The higher this number, the further up layer 2 will go before it will start descending again.
$05C7BC 3 bytes Misc. Change to A9 08 EA and the background will start scrolling fast with generator F4 without having to touch platform C1
$05C7CB 2 bytes Misc. Maximum speed of layer 2 scrolling during "Fast BG Scroll" (sprite F4).
$05CA5C 5 bytes Sprite Misc. What direction Layer 2 will start out moving when each variant of the Layer 2 Scroll sprite (sprite EA) is used. In order: Range 12, Range 08, Range 05, Range 06, Range 05 (alternate). 00 -> down, 01 -> up.
$05CBF5 10 bytes Timer Determines the distance for Layer 2 to scroll when using each variant of the Layer 2 Scroll sprite (sprite EA), outside of the acceleration/deceleration period. In order: Range 12, Range 08, Range 05, Range 06, Range 05 (alternate); each type corresponds to a pair of bytes here. The first byte of each pair is for the first movement, and the second is for every time it moves after that. The data is roughly how much time will be spent scrolling at full speed, not the actual distance, so the scroll speed and acceleration affect this.
$05CBFF 8 bytes Subroutine (JSL) Jumps to Level End Scorecard Subroutine
$05CC16 75 bytes Layer 3 Start of course clear message tilemap.
$05CC1A (10 bytes) is 'MARIO' tiles and attributes used in the end-of-level scorecard
$05CC28 (12 bytes) is "COURSE" and attributes at end of level scorecard.
$05CC36 (10 bytes) is "CLEAR" and attributes at end of level scorecard.
$05CC61 5 bytes Misc. 'LUIGI' letters used in the end-of-level scorecard (uses the same attributes as the MARIO letters)
$05CC66 2 bytes Misc. Change to 80 1C to prevent the player from getting a free 1UP at the goal if the tens digit of your bonus star counter and the tens and ones digits of your time are all the same
$05CC85 1 byte Misc. Change to 00 to disable "Course Clear" from appearing.
$05CCC4 1 byte Misc. Number of LUIGI tiles to use in the end-of-level scorecard
$05CD2C 1 byte Timer Time it takes for Bonus! to appear after hitting the goal tape.
$05CD3F 35 bytes Layer 3 Stripe image for the bonus star counter in end of level scorecard.
$05CD3F is the main "BONUS! ★x__" text, with the __ being blank tiles reserved for the bottom of the number of stars.
A second header starting at $05CD5A handles two additional blank tiles, used for the top of the numbers.
$05CD62 20 bytes Layer 3 Table of tiles used to display the amount of bonus stars received in the end level routine.
Starts with top tile of 0, bottom tile of 0, top tile of 1, bottom tile of 1, etc. Notably, there's no header OR end byte.
$05CD79 1 byte ASM Changing this byte to [80] will disable the bonus counter in the 'Course Clear' screen.
$05CDD8 1 byte ASM Changing this byte to [80] will disable the drumroll sound effect, and the Timer and score tallying at the 'Course Clear' screen.
$05CDE4 1 byte Sound effect Drum Roll (tallying points) Sound Effect.
$05CE7A 1 byte Misc. Time Multiplier for every second (use with $05CE92) must be a multiple of 10.
$05CE92 1 byte Misc. Time Multiplier for every second (use with $05CE7A) must be a multiple of 10.
$05CF1B 3 bytes ASM Change to EA EA EA and the player will receive no bonus stars at the end of the level.
$05CF49 1 byte Sound effect Drum Roll Finishing Sound Effect.
$05CFEA 22 bytes Empty Empty.
$05D000 1536 bytes Misc. Tile data for all Layer 1 overworld tiles, #$00-#$BF (but BF doesn't show up in LM no matter what you set it to). 8 bytes per 16x16 tile = 2 bytes per 8x8 tile. (TTTTTTTT YXPCCCTT.)
Order in which the pairs of bytes go inside a 16x16 tile: upper-left, bottom-left, upper-right, bottom-right.
$05D608 96 bytes Overworld Which events are triggered by which level. Indexed by level ID, aka $13BF.
$05D668 160 bytes Empty Unused data.
$05D708 8 bytes Level data Layer 1, 2 (FG,BG) Initial Position. FG values (4 bytes) are first. BG values (4 values) are last.
$05D710 16 bytes Level data Vertical scroll settings for layer 2 background. The values in this table are for RAM $7E:1414. The index to this table is the %ssss from the %ssssyyyy in table ROM $05:F000.
$05D720 16 bytes Level data Horizontal scroll settings for layer 2 background. The values in this table are for RAM $7E:1413. The index to this table is the %ssss from the %ssssyyyy in table ROM $05:F000.

The maximum %ssss in SMW is %0111, thus indexes %1000 through %1111 are unused and are available if you want to invent more scroll settings for layer 2.
$05D730 16 bytes Level data Mario Y-Position (main and midway entrances)
$05D740 16 bytes Level data Mario Y-Subscreen Positions (main and midway entrances)
$05D750 8 bytes Level data Mario X-Positions (main and midway entrances). 8th byte unused?
$05D758 8 bytes Level data Mario X-Subscreen Positions (main and midway entrances). 8th byte unused?
$05D760 6 bytes Misc. The tileset that each no-Yoshi intro intro is used with. Same order as $05D766 (0x2D966). The last one seems to be unused.
$05D766 18 bytes Pointer List of 6 pointers to the "Get off Yoshi" level intros. In order: Ghost House, Castle Entrance 1, No Yoshi Sign 1, No Yoshi Sign 2, No Yoshi Sign 3, Castle Entrance 2.
$05D778 18 bytes Pointer List of pointers to the Layer 2's for the "Get off Yoshi" intro levels. Same order as for 2D966
$05D796 857 bytes Subroutine (JSL) The main level data loading routine.
$05DAE5 is which level has the variable exits that changes depending on coins, timer, and yoshi coins. To disable the variable properties of this level, change $05DAE6 to 80.
$05DA19 is the start of the code for checking whether or not the level should use a No-Yoshi intro. Change to [4C D7 DA] to disable all No-Yoshi intros, including those for ghost houses and castles.
$05DA1D 1 byte Level number Any level with a translevel number greater than or equal to this will use the "No Yoshi Sign 2" intro if the no-Yoshi intro is not disabled, regardless of tileset.
$05DA4B 1 byte Level number One of five translevels that will use a dark-background castle intro if the level is set to tileset 1 and a no-Yoshi intro is enabled. This one is 31 (Front Door) by default.
$05DA4F 1 byte Level number One of five translevels that will use a dark-background castle intro if the level is set to tileset 1 and a no-Yoshi intro is enabled. This one is 32 (Back Door) by default.
$05DA53 1 byte Level number One of five translevels that will use a dark-background castle intro if the level is set to tileset 1 and a no-Yoshi intro is enabled. This one is 34 (#7 Larry's Castle) by default.
$05DA57 1 byte Level number One of five translevels that will use a dark-background castle intro if the level is set to tileset 1 and a no-Yoshi intro is enabled. This one is 35 (Valley Fortress) by default.
$05DA5B 1 byte Level number One of five translevels that will use a dark-background castle intro if the level is set to tileset 1 and a no-Yoshi intro is enabled. This one is 40 (#3 Lemmy's Castle) by default.
$05DAEF 186 bytes Subroutine (JSR) The routine that loads level data for the sublevels of the level with the variable screen exits (i.e. level 24, or Chocolate Island 2, in the original SMW).
$05DB08 18 bytes Pointer Pointers to the layer 1 data that should be loaded for Chocolate Island 2.
$05DB1A 18 bytes Pointer Pointers to the sprite data that should be loaded for Chocolate Island 2.
$05DB2C 18 bytes Pointer Pointers to the layer 2 data that should be loaded for Chocolate Island 2 (all identical).
$05DBA9 1 byte Level number Level number for bonus game after gaining 100 bonus stars from a goal tape.
$05DBAA 1 byte Level number Level number for yoshi wings bonus stage.
$05DBAC 29 bytes Subroutine (JSR) The routine that handles setting the level to warp to when Yoshi gets the wings. (Level xC8.)
$05DBB3 1 byte Misc. Change to 60 (RTS) to make it so Yoshi wings use the normal screen exit instead of forcing a warp to level C8/1C8. This allows you to use pipes/doors in Yoshi wings levels. However, bonus games still remain incompatible. (Make sure to add a screen exit on every screen a player could possibly collect Yoshi wings if you use this.)
$05DBC9 2 bytes Coordinate Position of lives counter on the overworld.
$05DBF2 72 bytes Subroutine (JSL) Routine that draws the life counter on the overworld border. You can JSL to it to update the counter if changing the player's lives while on the overworld.
$05DC3A 12 bytes Subroutine (JSR) Hex -> Dec subroutine, ends with RTS. Only used for displaying the player's lives on the overworld.

Input: A (8-bit) = the value to be converted

Output:
A = ones digit.
X = tens digit.
$05DC46 954 bytes Empty Filled with FF.
$05E000 1536 bytes Pointer Level data pointer table (Layer 1)
$05E600 1536 bytes Pointer Level data pointer table (Layer 2)
$05EC00 1024 bytes Pointer Level data pointer table (Sprites)
$05F000 512 bytes Level data Table for each level in ssssyyyy format. ssss = layer 2 scroll settings, yyyy = Y position (from LM's method 1).
$05F200 512 bytes Level data Table for each level in ttaaaxxx format. tt = tide/tileset specific Layer 3 BG to use, aaa = Mario action to start the level out with, xxx = initial X position (one of which is not selectable by LM, X = 10).
$05F400 512 bytes Level data Table for each level in mmmmffbb format. mmmm = screen for midway entrance, ff = FG initial position, bb = BG initial position.
$05F600 512 bytes Level data Table for each level in iuveeeee format. i = disable No Yoshi Intro flag, u = unknown vertical level positioning flag, v = vertical level positioning flag, eeeee = screen # that the primary entrance is on.
$05F800 512 bytes Level data Part of the Secondary Entrance information; each byte is one of the secondary entrances. The byte is the low byte of the destination level number. The high bit (0x100 vs. 0x000) is stored in another table.

Note that, as of LM v2.50, this table may be dynamically moved to accomodate the size of the new secondary exits. It can be found at read3($0DE191).
$05FA00 512 bytes Level data Part of the Secondary Entrance information; each byte is one of the secondary entrances. The low 4 bits are the Y position for Mario; offsets into a table at SNES addresses $05:D730 and $05:D740. The next two bits are the FG initial position, indexing into the table at SNES address $05:D708. The highest 2 bits are the BG initial position, indexing into the table at SNES address $05:D70C.

Note that, as of LM v2.50, this table may be dynamically moved to accomodate the size of the new secondary exits. It can be found at read3($0DE198).
$05FC00 512 bytes Level data Part of the secondary level information. The low 5 bits are for the destination screen number. The high 3 bits are the X position for Mario; offsets into a table at SNES addresses $05:D750 and $05:D758.

Note that, as of LM v2.50, this table may be dynamically moved to accomodate the size of the new secondary exits. It can be found at read3($0DE19F).
$05FE00 512 bytes Level data Part of the Secondary Entrance data; each byte corresponds to an entrance. The lowest 3 bits are the Mario action. The next bit is the high bit of the secondary entrance's level number. The highest bit is set when the destination level should be slippery.

Note that, as of LM v2.50, this table may be dynamically moved to accomodate the size of the new secondary exits. It can be found at read3($05DC81).
$068000 99 bytes Level data Level 012, 019, 01E, 025-092, 09C-0BC, 10C, 112, 124, 129, 12E, 12F, 131, 133, 137-192, 19C-1BA
$068063 90 bytes Level data Unused level: Ride Among the Clouds
$0680BD 123 bytes Level data Unused level: Mushroom Scales
$068138 282 bytes Level data Unused level: Boss Test
$068252 6 bytes Level data Level 09B, 19B
$068258 6 bytes Level data Level 095, 098-09A, 195, 198-19A
$06825E 6 bytes Level data Level 096, 097, 196, 197
$068264 135 bytes Level data Unused level: Lava Cave (Layer 2)
$0682EB 177 bytes Level data Unused level: Lava Cave
$06839C 15 bytes Level data Unused level: Twin Blocks
$0683AB 342 bytes Level data Unused level: Beta level 01A.
$068501 60 bytes Level data Unused level: Beta level 01A (Layer 2)
$06853D 36 bytes Level data Unused level: Pipe 'n' Ground
$068561 42 bytes Level data Level 093, 194
$06858B 42 bytes Level data Level 094, 193
$0685B5 78 bytes Level data Level 0C7
$068603 24 bytes Level data Level 0C5
$06861B 6 bytes Level data Level 0C4, 0EB, 0F0, 0FB, 1DA, 1E6, 1E7, 1F9 (Layer 2)
$068621 21 bytes Level data Level 0EB, 0F0, 0FB, 1DA, 1E7, 1F9
$068636 6 bytes Level data Level 0CC, 0D5, 0D9, 0DF, 0E2, 0E5, 1DE
$06863C 24 bytes Level data Level 0FF
$068654 33 bytes Level data Level 000, 100
$068675 18 bytes Level data Unused level: Ghost House Exit
$068687 6 bytes Level data Level 1EB, 1F6
$06868D 67 bytes Level data Level 014
$0686D0 91 bytes Level data Level 11B
$06872B 67 bytes Level data Level 121
$06876E 64 bytes Level data Level 008
$0687AE 69 bytes Level data Level 0CA
$0687F3 69 bytes Level data Level 1D8
$068838 69 bytes Level data Level 1D7
$06887D 66 bytes Level data Level 0C9
$0688BF 30 bytes Level data Level 003
$0688DD 283 bytes Level data Level 105
$0689F8 55 bytes Level data Level 1CB
$068A2F 388 bytes Level data Level 106
$068BB3 43 bytes Level data Level 1CA
$068BDE 655 bytes Level data Level 103
$068E6D 64 bytes Level data Level 1FD
$068EAD 230 bytes Level data Level 102
$068F93 30 bytes Level data Level 1FF
$068FB1 76 bytes Level data Level 1BE
$068FFD 370 bytes Level data Level 101
$06916F 118 bytes Level data Level 1FC
$0691E5 503 bytes Level data Level 015-017
$0693DC 151 bytes Level data Level 0FD
$069473 250 bytes Level data Level 0E3
$06956D 192 bytes Level data Level 009 (Layer 2)
$06962D 353 bytes Level data Level 009
$06978E 121 bytes Level data Level 0E9
$069807 116 bytes Level data Level 004
$06987B 34 bytes Level data Level 0FA
$06989D 83 bytes Level data Level 0DE, 0F9
$0698F0 95 bytes Level data Level 0FE
$06994F 18 bytes Level data Level 0C4
$069961 445 bytes Level data Level 005
$069B1E 151 bytes Level data Level 0F4
$069BB5 407 bytes Level data Level 006
$069D4C 55 bytes Level data Level 0D2
$069D83 61 bytes Level data Level 0C3
$069DC0 110 bytes Level data Level 007
$069E2E 145 bytes Level data Level 0E8
$069EBF 165 bytes Level data Level 0E7 (Layer 2)
$069F64 313 bytes Level data Level 0E7
$06A09D 151 bytes Level data Level 0E6
$06A134 316 bytes Level data Level 00A
$06A270 130 bytes Level data Level 0C2
$06A2F2 130 bytes Level data Level 013, 0EC, 0EE
$06A374 172 bytes Level data Level 0ED, 0F2
$06A420 47 bytes Level data Level 0F1
$06A44F 18 bytes Level data Level 0E4
$06A461 268 bytes Level data Level 10B
$06A56D 76 bytes Level data Level 1C6
$06A5B9 71 bytes Empty Unused data
$06A600 745 bytes Level data Level 11A
$06A8E9 85 bytes Level data Level 1EF
$06A93E 33 bytes Level data Level 1EF (Layer 2)
$06A95F 841 bytes Level data Level 118
$06ACA8 97 bytes Level data Level 1C3
$06AD09 271 bytes Level data Level 107, 1FB
$06AE18 101 bytes Level data Level 1EA
$06AE7D 824 bytes Level data Level 10A
$06B1B5 133 bytes Level data Level 1C2
$06B23A 151 bytes Level data Level 1F7
$06B2D1 337 bytes Level data Level 119
$06B422 190 bytes Level data Level 1F5
$06B4E0 320 bytes Level data Level 11C
$06B620 70 bytes Level data Level 1F4
$06B666 229 bytes Level data Level 1F3
$06B74B 162 bytes Level data Level 1F3 (Layer 2)
$06B7ED 42 bytes Level data Level 1F2
$06B817 495 bytes Level data Level 109
$06BA06 45 bytes Level data Level 1F1
$06BA33 54 bytes Level data Level 1F0
$06BA69 352 bytes Level data Level 001
$06BBC9 106 bytes Level data Level 0D8
$06BC33 187 bytes Level data Level 002
$06BCEE 33 bytes Level data Level 0CB
$06BD0F 167 bytes Level data Level 00B
$06BDB6 247 bytes Level data Level 0E0, 0E1
$06BEAD 748 bytes Level data Level 00F
$06C199 43 bytes Level data Level 0BF
$06C1C4 433 bytes Level data Level 010
$06C375 46 bytes Level data Level 0C1
$06C3A3 203 bytes Level data Level 00E
$06C46E 39 bytes Level data Level 00E (Layer 2)
$06C495 127 bytes Level data Level 0DC
$06C514 69 bytes Level data Level 0DC (Layer 2)
$06C559 403 bytes Level data Level 0DB
$06C6EC 151 bytes Level data Level 0DA
$06C783 454 bytes Level data Level 011
$06C949 27 bytes Level data Level 0C6
$06C964 1692 bytes Empty Filled with $FF.
$06D000 220 bytes Level data Level 00C
$06D0DC 24 bytes Level data Level 0F3
$06D0F4 226 bytes Level data Level 00D
$06D1D6 100 bytes Level data Level 0DD
$06D23A 465 bytes Level data Level 11E
$06D40B 744 bytes Level data Level 120
$06D6F3 545 bytes Level data Level 123
$06D914 46 bytes Level data Level 1F8
$06D942 151 bytes Level data Level 1BC
$06D9D9 229 bytes Level data Level 020
$06DABE 207 bytes Level data Level 11D, 1E8, 1E9
$06DB8D 837 bytes Level data Level 11D, 1E8, 1E9 (Layer 2)
$06DED2 116 bytes Level data Level 1FA
$06DF46 21 bytes Level data Level 1E6
$06DF5B 425 bytes Level data Level 11F
$06E104 36 bytes Level data Level 1DF
$06E128 91 bytes Level data Level 1C1
$06E183 135 bytes Level data Level 122
$06E20A 253 bytes Level data Level 01F
$06E307 317 bytes Level data Level 0D6
$06E444 396 bytes Level data Level 022, 0D0, 0D1
$06E5D0 414 bytes Level data Level 0F5, 0F6
$06E76E 52 bytes Level data Level 0BE
$06E7A2 115 bytes Level data Level 021
$06E815 130 bytes Level data Level 0FC
$06E897 238 bytes Level data Level 024
$06E985 118 bytes Level data Level 0CF
$06E9FB 181 bytes Level data Chocolate Island 2 - Level 1
$06EAB0 91 bytes Level data Chocolate Island 2 - Level 2
$06EB0B 103 bytes Level data Level 0CE
$06EB72 76 bytes Level data Chocolate Island 2 - Level 3
$06EBBE 102 bytes Level data Chocolate Island 2 - Level 4
$06EC24 90 bytes Level data Level 0CD
$06EC7E 75 bytes Level data Chocolate Island 2 - Level 5
$06ECC9 286 bytes Level data Level 023
$06EDE7 79 bytes Level data Level 0D7
$06EE36 199 bytes Level data Level 01B
$06EEFD 352 bytes Level data Level 0EF
$06F05D 263 bytes Level data Level 117
$06F164 505 bytes Level data Level 1ED
$06F35D 205 bytes Level data Level 1EC
$06F42A 210 bytes Level data Level 1EC (Layer 2)
$06F4FC 21 bytes Level data Level 1EE
$06F511 40 bytes Level data Level 1C0
$06F539 2759 bytes Empty Filled with $FF.

464 bytes at $06F600 used for LM's Map16 custom behavior routine.
$078000 24 bytes Level data Ghost house entrance
$078018 6 bytes Level data Empty level (header only). Used as layer 2 when no background is needed.
$07801E 15 bytes Level data Castle entrance 1
$07802D 33 bytes Level data Level 104
$07804E 18 bytes Level data No Yoshi sign entrance 1
$078060 33 bytes Level data Unused level: Ghost House Exit
$078081 15 bytes Level data Unused level: Three bushes
$078090 15 bytes Level data Castle entrance 2
$07809F 18 bytes Level data No Yoshi sign entrance 2
$0780B1 18 bytes Level data No Yoshi sign entrance 3
$0780C3 42 bytes Level data Level 108
$0780ED 19 bytes Empty Empty
$078100 1204 bytes Level data Level 01D
$0785B4 303 bytes Level data Level 0EA
$0786E3 488 bytes Level data Level 01C
$0788CB 106 bytes Level data Level 0C0
$078935 151 bytes Level data Level 0BD
$0789CC 337 bytes Level data Level 01A
$078B1D 45 bytes Level data Level 01A (Layer 2)
$078B4A 109 bytes Level data Level 0D4
$078BB7 51 bytes Level data Level 0D4 (Layer 2)
$078BEA 42 bytes Level data Level 0D3
$078C14 178 bytes Level data Level 018
$078CC6 229 bytes Level data Level 0F8
$078DAB 249 bytes Level data Level 0F7
$078EA4 893 bytes Level data Level 116
$079221 18 bytes Level data Level 1E5
$079233 151 bytes Level data Level 1E4
$0792CA 178 bytes Level data Level 115
$07937C 102 bytes Level data Level 115 (Layer 2)
$0793E2 451 bytes Level data Level 1E3
$0795A5 75 bytes Level data Level 1E3 (Layer 2)
$0795F0 366 bytes Level data Level 1E2
$07975E 30 bytes Level data Level 1E2 (Layer 2)
$07977C 135 bytes Level data Level 0C8
$079803 100 bytes Level data Level 114, 1D9
$079867 258 bytes Level data Level 1DD
$079969 109 bytes Level data