Banner
The Overworld Design Contest ends in
4 DAYS, 7 HOURS, 54 MINUTES AND 50 SECONDS
Views: 905,949,219
Time:
9 users online: BlueToad, boomcrashbang, fsvgm777, Lane, Nirv, SiameseTwins, Soul Storm, TheBiob, Thiva - Guests: 124 - Bots: 79 Users: 50,778 (2,073 active)
Latest: Splatter
Tip: A power-up is most useful to a player shortly after the midway point.
Not logged in.
SMW Memory Map - Waiting Addresses
Displaying 28 out of 28 waiting addresses. Show Moderated Addresses
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.
 
Per Page: 25 50 75 100 150 500 All
RAM Address Length Type Description Details Submitter
$7E1411 2 bytes Camera Vertical and horizontal scroll settings from header:
$1411: Horizontal scroll settings from header flag. #$00 = Disable; #$01 = Enable.
$1412: Vertical scroll settings from header. #$00 = Disable; #$01 = Enable; #$02 = Enable if flying/climbing/etc.

Note: Setting these to zero will merely disable the screen from scrolling with the player (and also the scroll limits to prevent it from escaping the level boundaries). It is disabled by auto-scroll generators to prevent the code at $00F713 and $00F7F4 from interfering with the generator from moving the screen.
HammerBrother
$7E142A 6 bytes Camera “Static camera region”. This RAM address contains the horizontal position, relative to the screen border (left edge is $0000) of the area the screen should not move if the player is in that area.

This is part of how horizontal scrolling works.

The value contains:
  • $142A (2 bytes): The origin position of the region.
  • $142C (2 bytes): The left edge of the static camera region (-#$000C from $142A, written at $00F6E0).
  • $142E (2 bytes): The right edge of the static camera region (+#$000C from $142A (the code does $142C + #$0018), written at $00F6EA)
HammerBrother
$7E146C 4 bytes Empty Empty. Cleared on reset, titlescreen load, overworld load and cutscene load.

$7E146C-$7E146D is used by Lunar Magic (v3.10+): on level load it holds the Layer 3 Y position/offset (as defined in the advanced bypass settings), and it's updated during the level when the layer 3 scrolls vertically to keep track of how much it scrolled. It's used to make layer 3 scroll with the camera in levels that scroll vertically, when the layer 3 vertical scroll is not "None".
KevinM
$7E18E4 2 bytes Misc. Lives incrementer (increments lives over multiple frames instead of instantly), mainly handled by $028AB4-$028ACC.

$18E4: How many lives left to increase the current player's life count.
$18E5: How many frames left before each life is given to the player (this ignores $9D).
HammerBrother
$7E1936 2 bytes Misc. Used by Lunar Magic v3.00+ (hijack at $00F70D) to hold the vertical scrolling range minus one tile (when “Allow viewing full bottom row of tiles” is unchecked). Effectively equivalent to $13D7 - #$10. HammerBrother
$7F0B44 2048 bytes Misc. It is used for Dynamic Z V3.75 or more, for severals differents variables.

More Documentation here:

https://sneslab.net/wiki/Dynamic_Z

Start at $418000 in SA-1 rom.
anonimzwx
$7FB408 3396 bytes Misc. Potentially used by Dynamic Z V3.75, lot of them usually are untouched but depends on the features that you use, they can be used by Dynamic Z V3.75 or later

Documentation Here:

https://sneslab.net/wiki/Dynamic_Z

Start at $418B80 on SA-1 rom.
anonimzwx
$7FBC00 1024 bytes Misc. Used by Lunar Magic's VRAM patch. KevinM
$7FC000 32 bytes Misc. Used by Lunar Magic for various purposes. See details for an incomplete list. RAM Map KevinM
$7FC0C0 56 bytes Graphics Lunar Magic's ExAnimation output table.

The data is stored by the routine at read3($00A2A5+1). The format is follows:

$7FC0C0: output table 1
$7FC0C7: output table 2
$7FC0CE: output table 3
$7FC0D5: output table 4
$7FC0DC: output table 5
$7FC0E3: output table 6
$7FC0EA: output table 7
$7FC0F1: output table 8

Each table is formatted like this:

Bytes 00-01: Header. If the highest bit is 0, this is a GFX package and the remaining 15 bits are used as transfer size. If the highest bit is 1, this is a color package. The lo byte is then doubled and used as transfer size (meaning that lo byte = number of colors).

Bytes 02-03: Destination. For GFX packages, this is a VRAM address. If the highest bit is set on a GFX package, this is a square-type upload. In that case, the upload is repeated without updating the source address (meaning the next 2 tiles will be read), with VRAM address incremented to the next row. For color packages, the lo byte holds the CGRAM address and the hi byte is unused.

Bytes 04-06: Source address (lo, hi, bank). For GFX packages, this points to RAM for most ExAnimations, but can point to ROM if ExGFX60-63 are used (these files are uncompressed and can be read directly). More complicated for color packages. For type "Palette + Working", this points to the corresponding color in the table at $0903, which is written at the time that the ExAnimation is output. For type "Palette" with only 1 color (header = 0x8001), bytes 04 and 05 hold the raw SNES RGB color and byte 06 is unused. For any other case, bytes 04-06 hold the 24-bit address to the color data.

These addresses can be written to to upload GFX/colors during gameplay, but only if ExAnimation is enabled. Note, however, that ExAnimation might overwrite these if they are written from level ASM. There are only 8 entries, so only 8 uploads can be performed on any given frame.
Von Fahrenheit
ROM Address Length Type Description Details Submitter
$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: flag left.
- $0001: up right.
- $0001: down right.
- $FFFF: up left.
- $FFFF: down left.
KevinM
$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.
KevinM
$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 HammerBrother
$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.
KevinM
$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).
KevinM
$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.
KevinM
$04FD0A 6 bytes Sprite physics Turn tamer 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. KevinM
$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.
KevinM
$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.
KevinM
$0C93DD 111 bytes Misc. Routine that uploads all the credit backgrounds into the $7F4000, then uploads the first one into VRAM.
It works by looping through all 7 backgrounds (pointed by the table at $0C93C1). For each one, the BG data is first copied to $7EB900 and $7EBD00, then this address is then copied to $7F4000+<BG number>*$800.
After this loop, the first BG from $7F4000 is uploaded to VRAM and the staff roll song is played.

$0C9447: [$09] song number used during the credits staff roll.
KevinM
$0C944C 116 bytes Misc. Routine called during the credits initialization, specifically by the routine at $0C93DD. It uploads the background image data pointed by $68 to the address pointed by $0D. In practice, this is called to upload one of the staff roll backgrounds to $7EB900. KevinM
$0C94C0 153 bytes Misc. Routine called during credits initialization, specifically by the routine at $0C93DD. It copies the background data at $7EB900 and $7EBD00 (transforming it from map16 data to raw tilemap data) into one portion of the $7F4000 buffer. KevinM
$0C9559 14 bytes Misc. DMA settings to use during the routine at $0C9567. It contains two lists of values with the following format:
- DMA control and destination bytes to be copied to $4310-$4311. Both lists use $01,$18 (upload to VRAM, two registers write once).
- DMA source, to be copied to $4312-$4314. The first list uses $7F4000, the second uses $7F4400 (the two halves of the buffer). This value is actually summed with <current background number>*$800, since the buffer contains all the backgrounds in sequence.
- Data size, to be copied to $4315-$4316. Both lists use $400 (1 KiB).
KevinM
Hijack Address Length Type Description Details Submitter
$00A5BF 4 bytes Jump (JML/JSL) Modified by Lunar Magic.

Loads the custom palette of a level depending on the value of $FE. If a custom palette should be loaded, $FE = level number + 1. Otherwise $FE = 0, and no custom palette is loaded. To load the palette, $0EF600 is indexed by ($FE-1)*3 to get a 24-bit pointer. If the lo and hi bytes of the pointer are both 0, no custom palette will be loaded. If a pointer exists, however, the first 2 bytes from it are stored to $0701 and the following 512 bytes are written directly to $0703.

$FE is cleared after it is read, possibly to avoid a custom palette from being uploaded twice.

(NOTE: added more information about this hijack, please remove this line during moderation)
Von Fahrenheit
$00AA50 5 bytes Jump (JML/JSL) Modified by Lunar Magic.
It's a JSL to $0FF780, then RTS to skip the following original code.
KevinM
$0EF600 1536 bytes 24-bit Pointer A list of 24-bit pointers to each level's palette data, inserted by Lunar Magic. Indexed by level number * 3. If an entry's lo + hi bytes are both 00, the default palette is loaded instead (bank byte is not checked in this case). Von Fahrenheit
$0FF780 40 bytes Code Modified by Lunar Magic.
Routine called during level load to store some level-specific data in the $7FC000 area.
KevinM
$0FFD80 332 bytes Code Modified by Lunar Magic.
Routine called from $0FF780 during level load to store some level-specific variables in the $7FC000 area and to upload some graphics data to VRAM.
KevinM
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 - 2021 - 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
  • sm64romhacks