SMW Memory Map
Displaying 50 out of 840 addresses.
View: moderated | waiting (13)
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. | |