SMW Memory Map
Displaying 3144 out of 3144 addresses.
View: moderated | waiting (19)
- 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:
The routine can be jumped at various points:
All these routines take the following inputs:
|
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:
The game uses multiple entry points to the routine depending on the interaction point being processed:
|
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.
|
|
$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:
|
|
$019138 | 8 bytes | Sprite subroutine (JSL) | JSL for sprites interacting with objects. Actually calls routine at $019140. During processing GPS blocks:
|
|
$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 | 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:
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:
|
|
$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:
|
|
$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:
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 |