Banner
Views: 852,864,260
Time:
34 users online:  1UPdudes, AnEvilGhost,  Anorakun, ASMagician Maks, AyGaAlPa, Brolencho, Cybermalignus, Dippy, Eduard, elusive, ExONightZ, Freitasth, Green Jerry, hulahoop, imamelia, Infinity, Kabaro,  KevinM,  Lazy, LeaderAngelo, Magikey, mcnakahr,  Meirdent, Miscalc, MrDeePay, Neexy, Ralshi02, Romano338,  Sinc-X, Sixcorby, slakkmichael, The Yak Smoker, TheSorrow, Vhack - Guests: 54 - Bots: 60 Users: 47,030 (2,519 active)
Latest: DrHelvetica
Tip: If it's possible to carry a tileset-specific sprite (such as a Buzzy Beetle or Bob-omb) through a pipe, make sure it has the correct graphics and sprite palette on the other side!Not logged in.
SMW Memory Map
Displaying 25 out of 830 addresses. Show Waiting Addresses (4)
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 5 6 733 34 » 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. There are 0x80 (128) slots for tiles. Generally, the table is indexed from either $0200 or $0300, with $0300 being used for normal sprites (and Mario) and $0200 being used for various other sprite types.
Note that tiles are drawn to the screen from top to bottom of the table; that is, a sprite in slot 0 will always appear visually on top of a sprite in slot 1.

The actual OAM table consists of two sub-tables:
- $7E0200-$7E03FF (512 bytes): Each slot consists of four bytes in the order of: X position, Y position, tile number, YXPPCCCT. Unused tiles are generally marked by giving them a Y position of #$F0 (which is offscreen).
- $7E0400-$7E041F (32 bytes): Each slot gets 2 bits, used to handle a 9th bit of the X position (for handling sprite tiles that go past the left edge of the screen) and a "size bit" which (generally) controls whether the tile is 8x8 (0) or 16x16 (1). Since each tile only requires 2 bits, each byte of this table actually handles four separate tiles; see the details table for more information. It is not recommended that you write to this table directly, though, and you should use the table at $0420 instead.

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 (see here for more info).
$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).
Pages: « 1 2 3 4 5 6 733 34 » 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


Menu

Follow Us On

  • YouTube
  • Twitch
  • Twitter

Affiliates

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