| Address | Description | Type | Size |
| $7E007A | Accumulating fraction bits for fixed point player X speed (fractions of 256, see code around $00D792, this handles horizontal movement with the player and when the player is on the slope).
Not to be confused with [url=https://smwc.me/m/smw/ram/7E13DA]$7E13DA[/url], which handles X [i]position[/i]. | Player | 1 |
| $7E0082 | Points to how steep the various slopes are and which parts of the slopes they represent. Points to $00:E5C8 in tilesets 0 and 7, and $00:E55E in others.
The table this one points to has one byte per block, from tile 16E to tile 1D7.
The value in these tables is then multiplied by 16, the lowest nibble of the sprite/player X position is added, and this is then used as an index to $00:E632 to tell how many pixels the sprite/player should move down from the nearest 16x16 tile. | Pointer | 3 |
| $7E008D | Used as scratch RAM in multiple locations:
- During GFX file decompression, $8F is used for holding the current decompression operation and $8D/$8E are used for holding the 16-bit length of that operation.
- After decompressing GFX33, all three of these get used as a 24-bit pointer to its decompressed data for the purpose of converting it from 3BPP to 4BPP.
- During the player-object interaction routine, $8D is used as a backup of [url=https://smwc.me/m/smw/ram/7E13EF]$13EF[/url] (player on ground flag), $8E is used as a backup of [url=https://smwc.me/m/smw/ram/7E005B]$5B[/url] (layer interaction and vertical flags), and $8F is used as a copy of [url=https://smwc.me/m/smw/ram/7E0072]$72[/url] (player in air flag). $8D is used to detect if code for being on top of a tile should be run, $8E is used for handling whether tile interaction should occur and whether the player should move horizontally with the layer, and $8F is used to detect whether the player has just landed (for the purposes of ground stomps, cape smashes, and breaking turnblocks) or has not been on the ground for at least a frame (for entering doors and horizontal pipes).
| Misc. | 3 |
| $7E1445 | Layer 2 scroll command pointer/timer. This timer serves no defined purpose on itself, but is generally used for waiting a specific number of frames before updating scroll properties such as speed.
Also used during the castle destruction cutscenes for various purposes. Lemmy uses it as a timer for the hammer animation, Ludwig and Roy uses it as a counter for the ? marks (0-3 for Roy and 4-7 for Ludwig), and Wendy uses it to decide how the broom should move. | Sprites | 1 |
| $7E144A | Layer 2 X speed used in the scrolling codes.
#$0001-#$7FFF = move left; #$8000-#$FFFF = move right. #$0000 means there is no movement.
$144A specifically is also used in the castle destruction cutscenes to indicate what sprite Mario is holding, if any, 00 indicates the egg, 01 indicates nothing, and anything greater indicates something else (e.g. the hammer or broom). | Sprites | 2 |
| $7E144C | Layer 2 Y speed used in the scrolling codes, particularly in the Layer 2 scroll command (sprite EA).
#$0001-#$7FFF = move upwards; #$8000-#$FFFF = move downwards. #$0000 means there is no movement.
$7E:144D also controls the time until you can press a button to end the castle destruction sequence (after all text has been generated on-screen). | Sprites | 2 |
| $7E1456 | Used internally by scroll sprites for indexing the layer position RAM addresses based on which layer is being moved (00 = Layer 1, 04 = Layer 2). | Sprites | 1 |
| $7E1460 | Direction of movement for the Layer 3 tides. 00 = downwards, 01 = upwards.
When the advanced Layer 3 bypass is enabled, Lunar Magic also uses this for the Layer 3 vertical scroll setting, multiplied by 2. Notably, the actual order of these values is different from the order Lunar Magic lists them; see the details table for a full list. | Misc. | 1 |
| $7E1491 | Amount of pixels on the X/Y axis a sprite has moved in the current frame. It is set after every call to update sprite position based on speed (see $01801A, $018022, and $01802A), and the routine that updates both X/Y position based on speed will leave $7E1491 with the movement on the X axis in this address. Very often used for rideable sprites as this address can be added to the player position to move the player in tandem with the sprite.
Note: If using $01802A (both X and Y movement), this contains the X-movement because it handles the Y movement first, then the X movement with the latter being the last write to $1491. | Sprites | 1 |
| $7E14B8 | Used for multiple purposes.
Both addresses are used by brown chained platforms as a 16-bit X position of the first (outermost) chain tile. This value is responsible for the actual movement of the platform and interaction with the player.
$14B8 specifically seems to form a buffer for the X position of Iggy/Larry during their boss battle, similar to [url=https://smwc.me/m/smw/ram/7E14B4]$14B4[/url].
$14B8 is also used as an attack counter used in the second phase of the Bowser battle to determine if Bowser should throw Mechakoopas or Big Steelies. It increments on every throw, on #$02 Mechakoopas are thrown, and on #$03 it resets to #$00. | Misc. | 2 |
| $7E17E4 | Spinning coin from block table. Indicates whether the spinning coin is generated from a block on Layer 1, or Layer 2/3. Depending on the layer, it updates its position based on the layer's movements. | Sprites | 4 |
| $7EB900 | During level load, if using a background Layer 2 tilemap in a level, this is table is temporarily used to hold the low byte of each tile. Format: Background is split into two 16x27 rectangles, followed by 160 $25 bytes that are never actually read. The high bytes of each tile are at [url=https://smwc.me/m/smw/ram/7EBD00]$7EBD00[/url].
This table also used as an extension of the GFX decompression buffer at [url=https://smwc.me/m/smw/ram/7EAD00]$7EAD00[/url]. As with that address, during a level, it may be used to hold additional data for the level's AN2 GFX file.
In the original game, some of the RAM in this table is also used on the overworld for a number of 40-byte tables relating to the switch palace's block animation:
- [b]$7EB900[/b] - Switch block X position, high byte
- [b]$7EB928[/b] - Switch block Y position, high byte
- [b]$7EB950[/b] - Switch block Z position, high byte
- [b]$7EB978[/b] - Switch block X position, low byte
- [b]$7EB9A0[/b] - Switch block Y position, low byte
- [b]$7EB9C8[/b] - Switch block Z position, low byte
- [b]$7EB9F0[/b] - Switch block X speed
- [b]$7EBA18[/b] - Switch block Y speed
- [b]$7EBA40[/b] - Switch block Z speed
- [b]$7EBA68[/b] - Accumulating fraction bits for fixed point switch block X speed
- [b]$7EBA90[/b] - Accumulating fraction bits for fixed point switch block Y speed
- [b]$7EBAB8[/b] - Accumulating fraction bits for fixed point switch block Z speed
With Lunar Magic, these tables instead get moved over to [url=https://smwc.me/m/smw/ram/7FC500]$7FC500[/url] ([url=https://smwc.me/m/smw/ram/418800]$418800[/url] on SA-1). | Blocks | 1024 |
| $7F0000 | Layer 2 overworld event tilemap. The space after $7F0D00 is unused in the original game, but is used by LM to hold the expanded tilemap area. Note that this only holds the YXPCCCTT properties, with the actual tile numbers being retrieved from $0C8000.
If LM's title screen moves recording hijack is installed, this region is also used to store the title screen movements. Three bytes are written any time a new key is pressed or released, or if the same keys are held for 256 frames. Since the event tilemap isn't restored, however, this will causes glitches with event tiles if the hijack isn't uninstalled.
$7F0B44-$7F1343 is also used as a buffer for dynamic sprite graphics, to be uploaded during V-blank. | Overworld | 16384 |