Banner
Views: 814,877,784
Time:
26 users online: 7 up, AnasMario130, Cal-of-Gearva, chickaDEE Magazine, dancampi, Darolac, DJLocks,  E-man38, Fermín Acosta Jr.,  FPzero, Infinity, JeoLeaf,  Major Flare, Mariofan85, Murphmario, PMH, Qwerty13x, Rhizy27, Scrambles_, segredo, SimFan96,  Tahixham,  Telinc1, tjb0607,  Tob, WhiteYoshiEgg - Guests: 63 - Bots: 173 Users: 43,064 (2,174 active)
Latest: hansolo77
Tip: Ask your parent's permission before going online.Not logged in.
SMW Memory Map
Displaying 50 out of 820 addresses. Show Waiting Addresses (11)
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 516 17 » Per Page: 25 50 75 100 150 500 All
RAM Address Length Type Description Details
$7E00D5 3 bytes Pointer Pointer to X and Y positions of Wiggler segments. Table at $7F9A7B.
$7E00D8 12 bytes Sprites Sprite Y position, low byte.
$7E00E4 12 bytes Sprites Sprite X position, low byte.
$7E00F0 16 bytes Empty Used by Lunar Magic for various purposes.
$7E:00FE is the current level number plus 1 (so Yoshi's Island 1 would store #$0106 here). It's used for the custom palette loading code. #$0000 means that the custom palette won't be loaded (this is probably used for castle intros and/or credits).
The rest is unknown.

Originally, this address is empty, and it's cleared at reset, titlescreen and overworld load.
$7E0100 1 byte Misc. Game Mode. Valid Values
$7E0101 4 bytes Misc. Currently loaded sprite GFX files - stored in reverse order.
$7E0105 4 bytes Misc. Currently loaded layer GFX files - stored in reverse order.
$7E0109 1 byte Misc. When set to a non-zero value, the overworld loading routine is overridden by loading a level value stored here, minus #$24 if it's above #$24. For example, the intro level (level C5) is loaded this way by storing #$E9 to this address.
Depending on whether the player is on the main overworld or a submap, the level in question is either in the 0xx or 1xx area.
$7E010A 1 byte Misc. Current save file number.
$7E010B 245 bytes Misc. Stack. The first two bytes is the current level number in most hacks.
$7E0200 544 bytes I/O OAM table - handles all sprite tiles that are on screen. Valid slot number range: #$00-#$7F (128 slots, for $0200 indexing, it is #$0000-#$01FC, use any number divisible by 4 only).

The tables are:
-$7E0200-$7E03FF (512 bytes): Each “tile slot” have four bytes, in the order of: X position, Y position, tile number, and then YXPPCCCT. Tiles which are currently unused are usually marked as such by giving them a Y position of #$F0 (which is offscreen).
-$7E0400-$7E041F (32 bytes): Handles the 9th bit X position (this is a sign bit to handle sprite tiles that goes past the left edge of the screen) and the “size bit” (0 = 8x8, 1 = 16x16). Every 4 tile slots are fitted into each byte, see detail on how each tile slot is formatted. Note that it can't be used, as it will be overwritten each frame using the data at $0420-$049F; you should instead write the data there.

Various tiles are documented here. Note that:
Code
$7E0310-$7E0313 is for the player's upper half
$7E0314-$7E0317 for the player's lower half
$7E0318-$7E031B is for the player's hand.
$0400 formatting
$7E0420 128 bytes Sprites A table that determines the size of a sprite tile - 8x8 (#$00) or 16x16 (#$02). Each byte corresponds to four OAM bytes. Stores to $7E:0400-$7E:041F (where each two bits correspond to four OAM bytes.)
The lowest bit (#$01) is also used for the high bit of the X position.
$7E04A0 448 bytes Misc. HDMA table for windowing effects, such as with the keyhole, level ending and titlescreen.
$7E0660 32 bytes Misc. Gets overwritten by the HDMA table for the level ending circle. If the player gets above or below the borders of the screen, it can even run into $7E:0680 and beyond.
Otherwise cleared on reset and titlescreen load, but usage as empty RAM is definitely not recommended.
$7E0680 1 byte Palettes Index to the palette updating tables, that are uploaded every frame.
#$00 = Use table at $7E:0682.
#$03 = Use table at $7E:0905.
#$06 = Use table at $7E:0703.
$7E0681 1 byte Palettes Index to the table at $7E:0682 during the time when data is stored to this table in the lightning, Magikoopa and Big Boo Boss codes.
$7E0682 19 bytes Palettes Used for uploading palettes dynamically. SMW uses this in the lightning/Magikoopa/Big Boo Boss palette effects. $7E:0682 holds the amount of bytes to transfer, $7E:0683 holds the color number (stored to SNES register $2121), the bytes afterwards hold the actual color values transferred to the CGRAM. Further, this table may be indexed by $7E:0681 to add more color destinations; it's terminated by a #$00. The format is the same as before, just at the new location.
This table doesn't actually have to end at $7E:0694, but SMW never goes beyond this. As such, the area after this address is listed as "empty".
$7E0695 108 bytes Empty 100 bytes used in LM 1.70+ for VRAM modification.

In the clean ROM, it's empty (cleared on reset and titlescreen load).
$7E0701 2 bytes Palettes Background color. Used during gameplay in conjunction with $2132.
$7E0703 512 bytes Palettes The entire palette. It is only uploaded to CGRAM during the level loading routine. Also used during overworld load, but not all of it.
$7E0903 2 bytes Palettes Copy of background color $7E:0701/2.
$7E0905 496 bytes Palettes Copy of palettes 0-F from $0703-$08F2. Only the first half of palette F is included. It is used in overworld path events fading in ($04:EAA0), and level ending fade in/out ($00:AF9D).
$7E0AF5 1 byte Empty Cleared on reset and titlescreen load. Also cleared after a boss had been beaten - this can be disabled by changing [9C 5C 0A] at $00:B08D to [80 01 EA].
$7E0AF6 256 bytes Misc. Used for three different things:
1. Decompressed overworld graphics, animated tiles. For that it also cooperates with $7E:0BF6-$7E:0C55.
2. Iggy's/Larry's platform interaction. (16x16 tiles in a 16x16 square.)
3. Various tables for the Yoshi eggs at the credits, such as how much time must be waited until a new egg breaks, Y speed tables. See this post.

In addition, Lunar Magic 3.00+ uses part of this region to support the expanded horizontal level system. Addresses are as follows:

$0BEE: Used if the Smart Spawn option is set to check if the screen has scrolled horizontally this frame.
$0BEF: Used if the Smart Spawn option is set to check if the screen has scrolled vertically this frame.
$0BF0-$0BF1: Minimum Y offset from the screen that a sprite can be in order to spawn. Set depending on the spawn range index.
$0BF2-$0BF3: Maximum Y offset from the screen that a sprite can be in order to spawn. Set depending on the spawn range index.
$0BF4: Extra flags for sprites, s-----rr. s = Smart Spawn flag, rr = spawn range index, - = unused bits.
$0BF5: Extra flags and horizontal level mode, tbnmmmmm. t = flags the level as using a non-background Layer 2 or 3, b = show the bottom row of the level, n = use the new sprite system, mmmmm = horizontal level mode.
$7E0BF6 384 bytes Misc. Decompressed GFX for tiles #$4A-#$4F, #$5A-#$5F of SP1.

In addition, Lunar Magic 3.00+ uses this region to support the expanded horizontal level system. Addresses are used as follows:

$0BF6-$0C55: Table of up to 32 24-bit pointers to the low byte of the object data in each screen. These point to locations in $7EC800. $0C26-$0C55 is used for Layer 2/3 data in levels with a Layer 2/3 foreground.
$0C56-$0CB5: Table of up to 32 24-bit pointers to the high byte of the object data in each screen. These point to locations in $7FC800. $0C86-$0CB5 is used for Layer 2/3 data in levels with a Layer 2/3 foreground.
$0CB6-$0CD5: Copy of the low bytes of the table at $0BF6. $0CC6-$0CD5 is used for Layer 2/3 data in levels with a Layer 2/3 foreground.
$0CD6-$0CF5: Copy of the low bytes of the table at $0C56. $0CE6-$0CF5 is used for Layer 2/3 data in levels with a Layer 2/3 foreground.
$0CF6-$0D35: Table of up to 32 16-bit pointers to the sprite data in each screen. These are used to change $CE-$CF.
$0D36-$0D75: Table of up to 32 16-bit values, one for each screen. The low byte is used to modify the sprite's Y position, while the high byte indicates the number of the sprite within the level (or the number of sprites that have been processed in the level so far).
$7E0D76 2 bytes Graphics Used during the GFX33 DMA routine. It holds the first of three possible source addresses for the animated graphics.
$7E0D78 2 bytes Graphics Used during the GFX33 DMA routine. It holds the second of three possible source addresses for the animated graphics.
$7E0D7A 2 bytes Graphics Used during the GFX33 DMA routine. It holds the third of three possible source addresses for the animated graphics.
$7E0D7C 2 bytes Graphics Used during the GFX33 DMA routine. It holds the first of three possible VRAM addresses for the animated graphics.
$7E0D7E 2 bytes Graphics Used during the GFX33 DMA routine. It holds the second of three possible VRAM addresses for the animated graphics.
$7E0D80 2 bytes Graphics Used during the GFX33 DMA routine. It holds the third of three possible VRAM addresses for the animated graphics.
$7E0D82 2 bytes Pointer 16-bit pointer to the player palette. #$B2C8 = regular Mario; #$B2DC = regular Luigi; #$B2F0 = fire Mario; #$B304 = fire Luigi. Always uses #$00 for bank byte (the first bank).
$7E0D84 1 byte Misc. Used in Player Graphics DMA routine. This holds the amount of tiles to load. Is #$0A in levels (because of Yoshi) and #$06 on the overworld.
If it's set to zero, the player palette isn't reloaded. The presents screen makes use of that.
$7E0D85 20 bytes Sprites 16-bit pointers in bank $7E for uploading the player's, Yoshi's and Podoboo's on-screen tiles.
They're divided in two sets of 10 bytes, each two bytes being used for two 8x8 tiles.
The first 10 bytes are for the top half of each 16x16 tile (player's head, player's bottom, cape, Yoshi's head/Podoboo, Yoshi's bottom). The latter 10 bytes are for the bottom half of each 16x16 tile (same order).
$7E0D99 2 bytes Graphics Holds the lower two bytes of the 24-bit RAM address (bank byte is $7E) of tile 7F's graphics; used during the player graphics DMA routine.
$7E0D9B 1 byte Misc. Activates different IRQ/NMI behavior for various game modes, depending on the following values:
#$00 = Regular level.
#$01 = Mario Start, Time Up, etc. + Title Screen + Castle destruction scene.
#$02 = Overworld.
#$80 = Iggy's and Larry's battle mode.
#$C0 = Reznor's, Morton's and Roy's battle mode.
#$C1 = Bowser's battle mode.
$7E0D9C 1 byte Empty Empty. Cleared on reset and titlescreen load.
$7E0D9D 1 byte Hardware mirror Main Screen and Window logic mask setting of current level mode (000abcde - a = Object layer; b = Layer 4; c = Layer 3; d = Layer 2; e = Layer 1). Appears as TM in Lunar Magic. Mirror of SNES registers $212C and $212E; transfer only occurs on level load.
$7E0D9E 1 byte Hardware mirror Sub Screen and Window logic mask setting of current level mode (000abcde - a = Object layer; b = Layer 4; c = Layer 3; d = Layer 2; e = Layer 1). Appears as TD in Lunar Magic. Mirror of SNES registers $212D and $212F; transfer only occurs on level load.
$7E0D9F 1 byte Hardware mirror HDMA Channel Enable: abcdefgh a = Channel 7 .. h = Channel 0: 1 = Enable 0 = Disable. Mirror of SNES register $420C.
$7E0DA0 1 byte Misc. Which controllers are plugged in (00 = port 1, 01 = port 2). Used to determine which port to accept data from when only one controller is plugged in.

If the high bit is set, then both controller ports are plugged in and $0DB3 will be used instead to determine the active controller.
$7E0DA1 1 byte Empty Empty. Cleared on reset and titlescreen load.
$7E0DA2 1 byte I/O Copy of controller data 1 ($7E:0015). Format: byetUDLR.
b = B, y = Y, e = Select, t = Start, UDLR = Up/Down/Left/Right.
Used by player 1 (Mario).
$7E0DA3 1 byte I/O Copy of controller data 1 ($7E:0015). Format: byetUDLR.
b = B, y = Y, e = Select, t = Start, UDLR = Up/Down/Left/Right.
Used by player 2 (Luigi).
$7E0DA4 1 byte I/O Copy of controller data 2 ($7E:0017). Format: axlr----.
a = A; x = X; l = L; r = R, 0 = null/unused.
Note that the upper two bits are also used by controller data 1 at $7E:0015, so that A/B and X/Y are combined.
Used by player 1 (Mario).
$7E0DA5 1 byte I/O Copy of controller data 2 ($7E:0017). Format: axlr----.
a = A; x = X; l = L; r = R, 0 = null/unused.
Note that the upper two bits are also used by controller data 1 at $7E:0015, so that A/B and X/Y are combined.
Used by player 2 (Luigi).
$7E0DA6 1 byte I/O Copy of controller data 1, one frame ($7E:0016). Format: byetUDLR.
b = B, y = Y, e = Select, t = Start, UDLR = Up/Down/Left/Right.
Used by player 1 (Mario).
$7E0DA7 1 byte I/O Copy of controller data 1, one frame ($7E:0016). Format: byetUDLR.
b = B, y = Y, e = Select, t = Start, UDLR = Up/Down/Left/Right.
Used by player 2 (Luigi).
$7E0DA8 1 byte I/O Copy of controller data 2, one frame ($7E:0018). Format: axlr----.
a = A; x = X; l = L; r = R, 0 = null/unused.
Note that the sixth bit is also used by controller data 1 at $7E:0016, so that X/Y are combined.
Used by player 1 (Mario).
$7E0DA9 1 byte I/O Copy of controller data 2, one frame ($7E:0018). Format: axlr----.
a = A; x = X; l = L; r = R, 0 = null/unused.
Note that the sixth bit is also used by controller data 1 at $7E:0016, so that X/Y are combined.
Used by player 2 (Luigi).
Pages: « 1 2 3 4 516 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: 22

Menu

Follow Us On

  • YouTube
  • Twitch
  • Twitter

Affiliates

  • Super Mario Bros. X Community
  • ROMhacking.net
  • Mario Fan Games Galaxy