Banner
Views: 790,123,665
Time:
16 users online:  1UPdudes, bandicoot, Bernardo, Darolac, Golden Yoshi, Green Jerry, imamelia, kellykelster, Knucklesfan, Mario78, MercuryPenny, niko, Romano338,  Sayuri,  Tahixham, weakman54 - Guests: 86 - Bots: 201 Users: 41,246 (1,497 active)
Latest: weakman54
Tip: Switch palace switches normally disappear if you replay the level. However, if you insert them as direct Map16 and use the hex-edit at $00EEB2 in the ROM map, you can replay the level without a problem.Not logged in.
SMW Memory Map
Displaying 75 out of 2956 addresses. Show Waiting Addresses (3)
Filter
Link
Address
Hexadecimal number for a partial address. 6-digit number for a full address. Use - to denote a range. Use , to list more than one address.
Length
Type
Enable JavaScript to use multiple regions.
Region
Hold control to select multiple. Check "All" to select all at once.

Type
Description
Separate each individual keyword with spaces. Surround a phrase with quotes to look for the exact phrase, or with / to use a PCRE regular expression. Prepend with - to exclude a keyword or phrase, with + to require a whole word or phrase, or with -+ to exclude a whole word or phrase. ? matches any character, * matches any amount of characters.
 
Pages: « 1 2 3 4 539 40 » Per Page: 25 50 75 100 150 500 All
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.
$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.
$0084C8 8 bytes Subroutine (JSL) Wrapper for the stripe image uploader (pointer lies in $12). 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.)
$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.
$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.
$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.
$008C59 40 bytes Layer 3 Tile array for numbers in bonus star counter.
$008C81 126 bytes Layer 3 Default status bar tiles. 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)
$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)
$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.
$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. See this diagram for possible values.
$009012 51 bytes Subroutine (JSR) Subroutine to write a player's score into status bar.
Call with Y = #$00, X as the position to write to on the status bar (standard is #$14), and $00-$03 as the score to write (in hexadecimal). Note that this routine does not remove leading 0s; that is handled at $008EDE and $008F0C.
$009045 12 bytes Subroutine (JSR) Hexadecimal to Decimal conversion subroutine.
"A" now has decimal 1s digit of original "A".
"X" now has decimal 10s and possibly 100s digit of original "A".
(Note: It ends with an RTS. You can JSL to $00974C if you want, though.)
$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 Layer 3 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.
$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"
$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".
$0093C1 1 byte Sound effect "Nintendo Presents" logo sound effect
$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 is music Bank Used for the Title Screen. 0E = Overworld Music, 48 = Level Music, 59 = Ending Music.
$0096C7 is the title screen (level C7) music.
$0096CC is the title screen level number+$24.
$009724 is the intro screen (level C5) music.
Changing $009725 to "9C FB 1D" will allow you to change the music for the intro via Lunar Magic.
$009737 is the Bowser scene 1 music.
$00974C 4 bytes Subroutine (JSL) Calls the hex->dec subroutine and ends in an RTL.
$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.
Pages: « 1 2 3 4 539 40 » Per Page: 25 50 75 100 150 500 All

The purpose of this site is not to distribute copyrighted material, but to honor one of our favourite games.

Copyright © 2005 - 2019 - SMW Central
Legal Information - Privacy Policy - Link To Us


Total queries: 7

Menu

Follow Us On

  • YouTube
  • Twitch
  • Twitter

Affiliates

  • SMBX Community
  • ROMhacking.net
  • MFGG