Banner
Views: 802,093,855
Time:
7 users online: dylzim, Gregor, Isikoro, LuckyWings, OEOTeam, RPG Hacker, Samantha - Guests: 21 - Bots: 125 Users: 41,929 (1,741 active)
Latest: LuckyWings
Tip: If you place too many sprites on the same screen, it will slow the game down and cause frustration to the player.Not logged in.
SMW Memory Map
Displaying 50 out of 821 addresses. Show Waiting Addresses (12)
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 313 14 15 16 17 » Per Page: 25 50 75 100 150 500 All
RAM Address Length Type Description Details
$7E19B8 32 bytes Misc. Exit Table. This connects doors and exit-enabled pipes to their correct entrances.
The index for this exit table is the position of the exit (relative to layer 1) divided by 256. If layer 1 is vertical, then use the Y position of the exit, else use the X position. This is also known as the current screen number.
For primary exits, the value in this exit table is the low 8 bits of the level number of the destination room. For secondary exits, the value in this exit table is the index to the secondary entrance ROM tables; and ROM table $05:F800/0x2FA00 provides the low 8 bits of the room number.
$7E19D8 32 bytes Misc. Exit Table, flags + high bit. Format: HHHHwush
h = Bit 8 of the level number for normal exits (0 = level 0xx, 1 = level 1xx).
HHHHh = Bits 8-12 of the secondary exit number.
s = Secondary exit flag.
u = LM-modified flag. If not set, the entire byte is ignored and SMW's original exit system is used.
w = Water flag (secondary exits) / Midway flag* (non-secondary exits).

* Only used if the level has "use seperate settings for midway entrance" set.

This table is only used when Lunar Magic is done with the ROM. The original game does write the h bit, but never uses it.
$7E19F8 384 bytes Misc. Three tables of 128 bytes each for remembering which items have been collected (item memory settings). If the corresponding bits are set (items are collected), those objects will not be reloaded.
The tables are split up like this: every screen number has 4 bytes designated to it. The first byte is for the left half of the top subscreen, the second byte for the right half, and the third and fourth are for the bottom subscreen. Each vertical column within these regions uses one bit.

Item memory setting 3 doesn't actually exist in the original game, but LM still allows you to select it. As of LM 1.8, it is apparently possible to use item memory setting 3 as well, but it only means "make everything respawn" and doesn't remember anything.
$7E1B78 2 bytes Overworld This is used on the overworld to determine if a hard coded path should be processed. This flag is set and read in 16-bit mode, it can have the values #$0000 or #$0001. #$0001 means that a hard coded path/event is processed.
Also used by Lunar Magic in levels for the "Fix Layer 3 scroll sync" option, but only when the option is on.
$7E1B7A 2 bytes Overworld This address serves as index to $04:9086 which is used to get what hard coded tile to use for the current tile the player is walking on. This address plus one is also the index to $04:90CA.
Also used by Lunar Magic in levels for the "Fix Layer 3 scroll sync" option, but only when the option is on.
$7E1B7C 1 byte Overworld Accumulating fraction bits for the Layer 1 X speed on the overworld, used when the camera returns to the player after having been in free scrolling mode. This address handles incrementing the Layer 1 X position when it overflows.
$7E1B7D 1 byte Overworld Accumulating fraction bits for the Layer 1 Y speed on the overworld, used when the camera returns to the player after having been in free scrolling mode. This address handles incrementing the Layer 1 Y position when it overflows.
$7E1B7E 1 byte Overworld This address is a mirror of $7E:13C1 (tile the player is on in the overworld) and it's used to check whether the player is walking on a complementive corner tile (those small corners used with the paths, a list of all tile numbers can be found at $04:A03C) while settling on a level tile.
Appears to be designed to allow for (very) curvy paths leading to level tiles, found in for example Star World and the path to the warp pipe from Chocolate Island 2.
Depending on the complementive corner tile in question, the player image and position are altered when settling on a level tile.
$7E1B7F 1 byte Empty Empty. Cleared on reset, titlescreen load, overworld load and level load.

This address could be regarded as the "high byte" of $7E:1B7E, however it is never used (AND #$00FF is applied) and only stored to on the overworld. Thus, it is safe to use this address as free RAM outside of the overworld.
$7E1B80 1 byte Overworld Player is on a ladder or vine flag (tiles 3F-41).
#$00 = Player is not on a climbing tile.
#$01 = Player is on a climbing tile.
$7E1B81 1 byte Should be 00 Uses in 16-bit loads to $7E:1B80, and otherwise #$00 is always stored here. Using this outside of the overworld is fine, however. Cleared on reset, titlescreen load and overworld load.
$7E1B82 1 byte Overworld X position on-screen of the current castle/fortress destruction explosion. Also denotes X position on-screen of the appearing event sprite tiles.
$7E1B83 1 byte Overworld Y position on-screen of the current castle/fortress destruction explosion. Also denotes Y position on-screen of the appearing event sprite tiles.
$7E1B84 2 bytes Timer The 16-bit address is used to determine whether the large event tiles (6x6) are uploaded or the small event tiles (2x2). It's #$0900 or higher if it's the latter. It gets its values from the table at $04:DD8D.

Solely $7E:1B84 is a timer used for handling castle/fortress destruction on the overworld, as well as the timer used for a level tile being revealed (the flash sprite).
$7E1B86 1 byte Pointer Pointer to the various routines that handle overworld events being activated. The pointers are located at $04E577.

#$00 = Check if an event needs to run, and check if a "explosion" is needed.
#$01 = Show the castle/P-switch "explosion".
#$02 = Set up the event index counters.
#$03 = Get layer 2 event tile.
#$04 = Animate the fade in for layer 2 tile.
#$05 = Get layer 1 event tile.
#$06 = Animate the fade in for layer 1 tile.
#$07 = End of event, marks event as run.
$7E1B87 1 byte Pointer Overworld continue/save prompt trigger.

#$01 = Init of game over, continue screen. If 2-Player flag is on ($7E:0DB2 is non-zero), go to following value.
#$02 = Preparing $7E:1B8A, go to following value, fading into the 'swap lives between players' screen.
#$03 = Swap lives between players screen.
#$04 = Fading out of the 'swap lives between players' screen.
#$05 = Init of save prompt.
#$06 = Fading into save prompt.
#$07 = Save prompt screen.
#$08 = Fading out of save prompt.
$7E1B88 1 byte Flag Message box expanding (#$00) or shrinking (#$01) flag. Also used in various other instances such as the save prompt on the overworld.
$7E1B89 1 byte Misc. Message box expansion and shrinking timer/size. Note: Setting expanding timer above #$04 will cause the message to be blank. Also used in various other instances such as the save prompt on the overworld.
$7E1B8A 1 byte Flag Which direction to point the arrow on the give lives menu.
#$00 = Point to Luigi's direction, give him lives.
#$01 = Point to Mario's direction, give him lives.
$7E1B8B 1 byte Overworld A timer that increments every frame, used for the blinking arrow on the give lives (between players) screen. If $7E:1B8B & #$18 gives a non-zero value, the arrow is shown. If the result of that is zero instead, a blank is shown.
$7E1B8C 1 byte Flag Used as a flag to determine whether you are at the first or second iteration of the pointer to $04:DB18 ($7E:1DE8 is #$00 or #$06). #$02 is fully cleared, #$00 is fully blacked out. Needed to make the windowing HDMA fade out at first, then fade back in when the submap switching process is done.
$7E1B8D 2 bytes Overworld Used in the calculation of the X positions for the overworld fade in/out windowing HDMA transitions. Removing stores to this address will make it only active in the Y direction. Starts at #$0000 (completely black) and ends at #$7000 (cleared, except for the sides which are hidden under the overworld border).
$7E1B8F 2 bytes Overworld Used in the calculation of the Y positions for the overworld fade in/out windowing HDMA transitions. Removing stores to this address will make it only active in the X direction. Starts at #$0000 (completely black) and ends at #$5400 (cleared).
$7E1B91 1 byte Counter Blinking cursor frame counter (file select, save prompt, etc.)
$7E1B92 1 byte Misc. Position of the cursor on the title screen menus.
$7E1B93 1 byte Misc. Use Secondary Exits flag. This is likely not used when Lunar Magic is done with the ROM.
$7E1B94 1 byte Flag Disable bonus game sprite from being loaded flag. If not zero, the bonus game sprite will terminate itself in the init routine.
$7E1B95 1 byte Flag This flag is set to #$02 as soon as the Yoshi wings animation (#$08 of $7E:0071) brings you above the screen ($7E:0080 = #$FFC0), which means you will be heading for level C8 or 1C8.
A bycoming effect is that Yoshi will have wings in that level, and that you can't die from falling into the depths. Moreover, as you enter the level, Yoshi will always be blue. It's also the only way you can "die" with Yoshi without losing him on the overworld.
$7E1B96 1 byte Flag Side exit enabled flag. #$00 = Disabled; #$01 = enabled.
$7E1B97 2 bytes Empty This address is only stored to once in all of SMW, and that's in code that was originally never used (the fifth scrolling command, sprite #$EC). It was going to have some unknown use when you reached the last screen of the level. Because SMW never executes the code that writes to it (unless that command is used), this is a safe address to use.

Cleared on reset, titlescreen load, overworld load and cutscene load.
$7E1B99 1 byte Flag Used in goal point marching: flag to show peace image flag and handling the fade-out ellipse.
#$00 = Don't show peace image yet, don't handle fade-out ellipse.
#$01 = Show peace image and handle fade-out ellipse.
$7E1B9A 1 byte Graphics Background Scroll Activated flag. The unused orange platform (sprite 5E) sets it to #$01, and the flying turn blocks (sprite C1) set it to #$08.
If set, triggers the fast BG scroll sprite, as well as making the flying turn blocks move.
$7E1B9B 1 byte Flag Used to check if Yoshi should not reappear for the next room (castle intro cutscene and the likes). These cutscenes set the flag to #$01, which makes Yoshi not reappear for the next room, but it does keep Yoshi on the overworld. Automatically set to #$00 when the overworld is loaded again. One could use this RAM address to disable Yoshi for one room, but re-enable him in the next again.
$7E1B9C 1 byte Overworld Player is entering a warp pipe/star flag.
#$00 = No; #$01 = Yes.
$7E1B9D 1 byte Timer Time to wait until the rising/sinking tide starts rising/sinking again (after the "no movement" interval).
$7E1B9E 1 byte Flag Music has to be altered on the overworld during a 2-player game flag.
#$00 = Do not alter music.
#$01 = Do alter music.
It's set when the players are switching, but also when you go from submap to submap, the latter even when it's a 1-player game. But this flag is never read if it's a 1-player game.
$7E1B9F 1 byte Counter Number of broken tile pairs in the Reznor battle.
$7E1BA0 1 byte Overworld The overworld uses this address to shake the ground as the Valley of Bowser entrance rises from the depths, by setting this address to #$FF. It also changes the music and adds some sound effects. It's a timer, but it only decrements as long as $7E:13D9 is #$02.
$7E1BA1 1 byte Misc. One of two screen numbers used in the level loading routine. This one points to where the next tile will be placed and is often changed inside an object loading code. The other screen number is $7E:1928.
Although referenced at $03:DF58 (Bowser's code), its value isn't actually used there.
$7E1BA2 1 byte Sprites Bits 0-6 form the index to the tilemap for the Mode 7 bosses, which read from the table at $03:D9DE, 16 bytes per image. Bit 7 is used to control the X-flip of the tiles. What actually happens then, is that the odd graphic tile is used instead of the even graphic tile, since all Mode 7 graphics are decompressed into a regular and flipped tile. For example, tile #$01 in VRAM is the same as tile #$00 except it's flipped.
$7E1BA3 64 bytes Graphics A buffer that is used for uploading Mode 7 tile data to VRAM in non-platform Mode 7 bosses. The buffer is enough to fill in an entire 8x8 tile, as each 8x8 tile requires 64 bytes in Mode 7 8bpp.

$7E:1BB2 is also used as a buffer in the graphics upload routine. The use seems to be for converting 3bpp to 4bpp format.

$7E:1BBC is used as a flag in the graphics upload routine to alter 3bpp to 4bpp conversion depending on the graphics file that is being uploaded.
$7E1BE3 1 byte Misc. Layer 3 settings.
#$00 = No Layer 3; #$01 = Low and high tide; #$02 = Low tide only; #$03 = Tileset specific image.
$7E1BE4 2 bytes Blocks VRAM address to start uploading data from the table at $7E:1BE6. It's used for layer 1. Big endian.
$7E1BE6 256 bytes Blocks Which tiles should be used for each row of 16x16 tiles, 2 bytes per 8x8 tile, used while scrolling layer 1 (loading new tiles). In horizontal levels, $7E:1BE6-$7E:1C65 form the left column of 8x8 tiles while $7E:1C66-$7E:1CE5 form the right column of 8x8 tiles. On the overworld and in vertical levels, $7E:1BE6-$7E:1C65 form the upper row of 8x8 tiles, while $7E:1C66-$7E:1CE5 form the bottom row of 8x8 tiles.
$7E1CE6 2 bytes Blocks VRAM address to start uploading data from the table at $7E:1CE8. It's used for layer 2. Big endian.
$7E1CE8 256 bytes Blocks Which tiles should be used for each row of 16x16 tiles, 2 bytes per 8x8 tile, used while scrolling interactive layer 2 (loading new tiles). In horizontal levels, $7E:1CE8-$7E:1D77 form the left column of 8x8 tiles while $7E:1D78-$7E:1DE7 form the right column of 8x8 tiles. On the overworld and in vertical levels, $7E:1CE8-$7E:1D77 form the upper row of 8x8 tiles, while $7E:1D78-$7E:1DE7 form the bottom row of 8x8 tiles.
$7E1DE8 1 byte Overworld This is a pointer index used for various tasks during the submap switching scene ($7E:13D9 is #$0A), possible values are:
#$00 = Commence with handling windowing HDMA.
#$01-04 = Update layer 1 on the overworld.
#$05 = Handle palette loading.
#$06 = End with windowing HDMA.
#$07 = Terminate submap switching phase by storing #$04 to $7E:13D9, make eventual submap changes (for example, what music to play).
$7E1DE9 1 byte Overworld If non-zero, indicates an event should be activated on overworld load (otherwise, event handling is skipped). The 'Course Clear!' and Switch Palace message box routines set this just before loading the overworld, and it's set to zero again when the event finishes executing.

Additionally, the enemy credits use this as the current screen number. Counts up to #$0C, which has the last set of enemies (the Koopa Kids and Bowser).
$7E1DEA 1 byte Overworld Overworld event to run at level end. #$FF means that no event will be run.
$7E1DEB 2 bytes Overworld Event tile to load to the overworld. A starting value is set to this at level end, and it increments until it reaches the value of $7E:1DED.
Pages: « 1 2 313 14 15 16 17 » 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 - 2020 - 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