Language…
11 users online:  AmperSam, CroNo, DanMario24YT, EvilAdmiralKivi, fsvgm777, Guido_Keller, JezJitzu, mmmdoggy, timothy726, Tomi P, Zavok - Guests: 262 - Bots: 314
Users: 64,795 (2,377 active)
Latest user: mathew

SMW Memory Map

Displaying 50 out of 840 addresses.

View: moderated | waiting (13)

Filter

Link
RAM Address Length Type Description Details
$7E14EC 12 bytes Sprites Accumulating fraction bits for fixed point sprite Y position (in fractions of 16, only the high nybble being used (%YYYY0000)). Modified via routine at $01ABCC-$01AC0C
$7E14F8 12 bytes Sprites Accumulating fraction bits for fixed point sprite X position (in fractions of 16, only the high nybble being used (%XXXX0000)). Modified via routine at $01ABCC-$01AC0C
$7E1504 12 bytes Sprites Miscellaneous sprite table. In the original game, it's only used in the revolving brown platform and nowhere else. More information can be found here.
$7E1510 12 bytes Sprites Miscellaneous sprite table. In the original game, it's only used in the revolving brown platform and nowhere else. Unlike $1504 (and every other sprite table), it is also not cleared by the sprite table initialization routine. More information can be found here.
$7E151C 12 bytes Sprites Miscellaneous sprite table. In SMW, it's used for vertical directions, and Yoshi uses it to determine which sprite to spawn out of an egg.
$7E:1520-$7E:1523 is a 'Reznor killed flag'. If a byte is set to #$01, the Reznor will disappear. Byte 1 is for Reznor 1, byte 2 for Reznor 2 and so on. More information can be found here.
$7E1528 12 bytes Sprites Miscellaneous sprite table. In SMW, it's used for Chargin' Chuck HP, Thwomp's face expression, etc. More information can be found here.
$7E1534 12 bytes Sprites Miscellaneous sprite table.
Certain powerups use this table as a blink-fall flag.
#$00 = Off; #$01 = On, powerup will blink and fall straight down.
The game stores #$01 here when it drops the reserved item from the item box. The blink-fall flag affects the Super Mushroom and the Fire Flower, but not the Cape Feather. The blink-fall flag also affects some other sprites, at least the Starman, the 1-Up mushroom and the coin sprite, but these sprites might glitch if you set the flag.
One glitch is that the blinking sprite-coin permanently occupies a sprite slot if it falls off the level, so that it might prevent the spawning of other common sprites.
Other than that, this address has many different purposes. More information can be found here.
$7E1540 12 bytes Sprites Miscellaneous sprite table. Table decrements itself once per frame, except for carryable sprites, where it decrements every second frame (the code at $0196D7 “slows” the timer by 1/2 by incrementing it every even frames ($13), which results in a decrement every odd frames).

Various sprites use this table as a stun timer. For example, this timer controls when flipped Goombas and squashed Mecha-Koopas decide to rise and walk. This table is also the sprite spinjump death frame counter - that is, how long to show the "spinjumped" image when the sprite is killed by a jump of such sorts. More information can be found here.
$7E154C 12 bytes Sprites Miscellaneous sprite table. Used as a timer to disable sprite contact with the player. Table decrements itself once per frame. More information can be found here.
$7E1558 12 bytes Sprites Miscellaneous sprite table. Used as a timer for how long a sprite is sinking in lava/mud. Table decrements itself once per frame. More information can be found here.
$7E1564 12 bytes Sprites Miscellaneous sprite table. Used as a timer to disable sprite contact with other sprites. Table decrements itself once per frame. More information can be found here.
$7E1570 12 bytes Sprites Miscellaneous sprite table. In SMW's original sprites, it's most commonly used as a local frame counter (as opposed to the global frame counter at $14). More information can be found here.
$7E157C 12 bytes Sprites Miscellaneous sprite table. It's most often used as a horizontal sprite direction table. #$00 = Right; #$01 = Left. More information can be found here.
$7E1588 12 bytes Sprites Sprite blocked status table. Format: asb?udlr.
a = touching Layer 2 from above.
s = touching Layer 2 from the side.
b = touching Layer 2 from below.
? = unknown, probably unused.
u = up.
d = down.
l = left.
r = right.
$7E1594 12 bytes Sprites Miscellaneous sprite table. In classic Piranha Plants, it is used to check if the sprite should be made visible and have interaction with the player. If it's any non-zero value, that Piranha Plant will become invisible. More information can be found here.
$7E15A0 12 bytes Sprites Sprite off screen flag table, horizontal.
$7E15AC 12 bytes Sprites Miscellaneous sprite table. It's often used as a timer to determine how long it takes to turn around. Table decrements itself once per frame. More information can be found here.
$7E15B8 12 bytes Sprites Determines what kind of slope a sprite is on. Valid Values
$7E15C4 12 bytes Sprites Flag set if a sprite is more than 4 tiles horizontally offscreen. Used by a few large sprites (e.g. turnblock bridges and chained platforms) to determine whether to draw any of the sprite at all.
$7E15D0 12 bytes Sprites Flag for whether the sprite is on Yoshi's tongue. #$00 = No; #$01 = Yes.
$7E15DC 12 bytes Sprites Flag to disable sprite interaction with objects. Ghost house ledge holes store their sprite index (plus one) to this to make sprites fall through the ground, but any non-zero value will work.
$7E15E8 1 byte Empty Empty. Cleared on reset, titlescreen load and overworld load.
$7E15E9 1 byte Sprites Sprite index for the current sprite that is being processed. It can be used in a sprite to reload the current index in X after having used X for something else. Make sure you don't change it in a sprite's code, or unintended effects may happen (game crash, infinite loops, ...).
Most sprite types use this: normal sprites, spinning coin sprites, extended sprites, score sprites, cluster sprites, and shooters. Other sprite types use $1698.
$7E15EA 12 bytes Sprites Sprite index to the OAM table, handled by $0180D2 to quickly obtain an empty OAM slot.
Note: meant to be used as an index to the second half of the OAM table (use it for $0300 and $0460, not $0200 and $0420).
$7E15F6 12 bytes Sprites Sprite YXPPCCCT table. Many sprites use it in their graphics routines.
$7E1602 12 bytes Sprites Miscellaneous sprite table. Often used as graphics pointer. More information can be found here.
$7E160E 12 bytes Sprites Miscellaneous sprite table. In SMW, it is used to keep track of things such as the green bouncing Koopa's Y speed and the sprite number of certain spawned, kicked, etc. sprites. More information can be found here.
$7E161A 12 bytes Sprites Sprite index to the load status table (see $7E1938). $FF means the sprite won't be reloaded.
$7E1626 12 bytes Sprites Miscellaneous sprite table. Consecutive enemies killed by a sprite table. Each byte is how many sprites that particular sprite has killed. In SMW, this applies to sprites that can be thrown, such as Koopa shells. More information can be found here.
$7E1632 12 bytes Sprites "Sprite is behind scenery" flag. Used by, among others, the net Koopas.
$7E163E 12 bytes Sprites Miscellaneous sprite table. Table decrements once per frame. In SMW, it's used as e.g. a timer that, when it's zero, makes Ludwig face the player, while he's spitting fireballs. More information can be found here.
$7E164A 12 bytes Sprites Sprite is in liquid indicator table. #$00 = Sprite not in liquid; #$01 = Sprite in water; #$80 = Sprite in lava.

Also used in the Morton/Roy battle as an indicator that the walls have to close in, and in Bowser's fight to indicate the music after Bowser is defeated has already started.
$7E1656 12 bytes Sprites Sprite properties, first Tweaker/MWR byte.
Format: sSjJcccc
s=Disappear in cloud of smoke.
S=Hop in/kick shells.
j=Dies when jumped on.
J=Can be jumped on (false = player gets hurt if they jump on the sprite, but can bounce off with a spin jump).
cccc=Object clipping.
$7E1662 12 bytes Sprites Sprite properties, second Tweaker/MWR byte.
Format: dscccccc
d=Falls straight down when killed
s=Use shell as death frame
cccccc=Sprite clipping
$7E166E 12 bytes Sprites Sprite properties, third Tweaker/MWR byte.
Format: lwcfpppg
l=Don't interact with layer 2 (or layer 3 tides)
w=Disable water splash
c=Disable cape killing
f=Disable fireball killing
ppp=Palette
g=Use second graphics page
$7E167A 12 bytes Sprites Sprite properties, fourth Tweaker/MWR byte.
Format: dpmksPiS
d=Don't use default interaction with player
p=Gives power-up when eaten by Yoshi
m=Process interaction with player every frame
k=Can't be kicked like a shell
s=Don't change into a shell when stunned
P=Process while off screen
i=Invincible to star/cape/fire/bouncing bricks
S=Don't disable clipping when killed with star
$7E1686 12 bytes Sprites Sprite properties, fifth Tweaker/MWR byte.
Format: dnctswye
d=Don't interact with objects
n=Spawns a new sprite
c=Don't turn into a coin when goal passed
t=Don't change direction if touched
s=Don't interact with other sprites
w=Weird ground behavior
y=Stay in Yoshi's mouth
e=Inedible
$7E1692 1 byte Sprites Sprite memory setting from header.
$7E1693 1 byte Blocks For the regular tiles in SMW, this holds the low byte of the Map16 number (Y contains the high byte). Within custom block code, this contains the low byte of the "acts like"/"act as" setting, Y has the high byte, and $03-$04 contain the actual Map16 number. This gets its value from a pointer to the Map16 tile table at $7E:C800 (Y gets its value from $7F:C800).
$7E1694 1 byte Blocks How many pixels the sprite should move down from the nearest 16x16 tile. Originally, its data comes from the table at $00:E632.
$7E1695 1 byte Misc. Used most often in tracking the second sprite currently being checked in various interaction routines, for example the second sprite's index in the sprite contact routine (used similarly to $7E15E9). It also serves a use during checking when a sprite is entering/exiting water.
$7E1696 1 byte Empty Empty. Cleared on reset, titlescreen load, overworld load, cutscene load and level load.
$7E1697 1 byte Counter Consecutive enemies stomped.
$7E1698 1 byte Sprites Current index being processed for a variety of sprite types, specifically minor extended sprites, bounce sprites, quake sprites, and smoke sprites.
$7E1699 4 bytes Sprites Bounce sprite type number. Valid Values
$7E169D 4 bytes Sprites Bounce sprite initialization flag table. #$00 = bounce sprite in init routine; #$01 = bounce sprite in main routine. Used for several things, such as generating tile 152 (invisible solid) once only.
$7E16A1 4 bytes Sprites Bounce sprite Y position, low byte.
$7E16A5 4 bytes Sprites Bounce sprite X position, low byte.
$7E16A9 4 bytes Sprites Bounce sprite Y position, high byte.
$7E16AD 4 bytes Sprites Bounce sprite X position, high byte.