Language…
14 users online: Anas, CourtlyHades296, Ez-kaizo, GiraffeKiller, Green-Smith, imamelia, Knetog, Knight of Time, mizounimax, MorrieTheMagpie, Renex, ShadowBoxer_Sandshrew, soybeanthegal, X11Gbyte - Guests: 158 - Bots: 84
Users: 68,919 (2,347 active)
Latest user: Jonigi1006

SMW Memory Map - Waiting Addresses

Displaying 19 out of 19 waiting addresses.

View: moderated | waiting (19)

Filter

Link
  • Pages:
  • 1
RAM Address Length Type Description Details Submitter
$7E1413 1 byte Misc. Horizontal scroll setting for Layer 2. The original game only uses 00 (none), 01 (constant), and 02 (medium), while Lunar Magic expands on the system with additional values up to 1F. Notably, the actual order of these values is different from the order Lunar Magic lists them; see the details table for a full list. Valid Values Thomas
$7E1414 1 byte Misc. Vertical scroll setting for Layer 2. The original game only uses 00 (none), 01 (constant), 02 (medium), and 03 (slow), while Lunar Magic expands on the system with additional values up to 1F. Notably, the actual order of these values is different from the order Lunar Magic lists them; see the details table for a full list. Valid Values Thomas
$7E145E 1 byte Misc. Used by Lunar Magic to hold various settings, mainly related to Layer 3. Format: yyyyyosb
- yyyyy: Initial Layer 3 Y position bits 0-4; bits 5-10 can be found in bits 0-5 of $7FC01C.
- o: Make sprites beyond level boundaries interact with air instead of water.
- s: Enable Layer 3 scroll sync fix.
- b: Enable advanced Layer 3 bypass settings.

Empty in original game. Cleared on reset, titlescreen load, overworld load and cutscene load.
Thomas
$7E145F 1 byte Misc. When the advanced Layer 3 bypass is enabled, Lunar Magic uses this to hold the Layer 3 horizontal 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.

During level load, it also temporarily holds the vertical scroll setting as well, encoded using the format vvvvhhhh:
- vvvv: Vertical scroll setting. The fifth bit can be found in bit 6 of $7FC01C.
- hhhh: Horizontal scroll setting. The fifth bit can be found in bit 7 of $7FC01C.

Empty in original game. Cleared on reset, titlescreen load, overworld load and cutscene load.
Horizontal Scroll Settings Thomas
$7E1460 1 byte Misc. 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.
Vertical Scroll Settings Thomas
$7E1938 128 bytes Sprites Sprite load status within the level, used as a flag to determine whether to respawn a sprite when its spawn position is scrolled onscreen. A sprite will only respawn if its value in the table is 00. Currently-loaded sprites can retrieve their index to the table via $161A. Shooters similarly have a table for this at $17B3.

The table is initialized to zeros on level load, indicating that all sprites should be able to spawn. When a sprite is spawned, it sets its entry to 01, and when it despawns offscreen without dying, it's set back to 00. However, if the sprite is instead erased by being killed, its entry will remain 01 to prevent it from respawning.

The original game has an issue where only the first 64 bytes of actually get reset when entering a new subroom, which meant that if there were enough sprites in a level, sprites in sublevels could be blocked from spawning at all. Lunar Magic fixes this to reset the full 128-byte table.


PIXI expands the table even further to 256 bytes by relocating it to $7FAF00, though as a safeguard whichever one is in use can be accessed via the !1938 define. Prior to v1.41, the relocation could be disabled via the !Disable255SpritesPerLevel define, but this is now no longer supported. Instead, this space is repurposed as a series of miscellaneous tables for various sprite types; see details for a breakdown.
PIXI Usage Thomas
ROM Address Length Type Description Details Submitter
$00E938 84 bytes Mario physics Code that handles player interacting with layer 1 and 2.

At $00E953-$00E975, handles layer 2 interaction. Before and after JSR CODE_00EADB, it first (temporally) offsets the player's XY position ($94 and $96 add by $26 and $28) so that interaction with layer 2 moves with layer 2, then after the layer 2 prcoessing is done, offsets the player's position back (subtract by $26 and $28 not using pull instructions so that blocks that sets the player's XY position wouldn't be canceled).
HammerBrother
$018DBB 12 bytes Sprite subroutine (JSR) Routine to set X speed for Winged Goomba, Moving Coin, Mushroom, 1UP, and Star. 018DBC and 018DC3 are set to F8 and 08 respectively for left and right speed.
Runs Every Frame.
pacmanboss256
$028752 335 bytes Subroutine (JSL) A subroutine for spawning bounce sprites from blocks. It continues into the routine at $02887D.
Input:
$04 - bounce sprite command
$05 - value to use in $02887D
$06 - speed index (see $02873A and $02873E)
$07 - value of $9C the block will turn into

Tables:
$028789 (9 bytes): Block bounce sprite YXPPCCCT table. First 7 values match with the value in $04 ($1699 value - 1), last two are for commands 0x10 and 0x11 (coloured turn blocks / !-block bounce animation).

Codes of interests:
$028758 (49 bytes): Break turn block routine.
$0287B0 (84 bytes): Stops an existing turn block from rotating
$028804 (121 bytes): Actual spawn bounce sprite routine
Bounce commands Hex Edits MarioFanGamer
$02919F 77 bytes Subroutine (JSR) Subroutine which changes a tile at the current bounce sprite's position.

It can be jumped to the following addresses:
  • $02919F: The code which loads the currently assigned block the bounce sprite should turn into ($9C format) but also handles on whether a multiple coins block should turn into a used block. This is called when a bounce sprite terminates and becomes a solid block again.
  • $0291B8: Spawns an invisible solid block. This is called when a bounce sprite has just spawned but also when the bounce sprite collects a coin, leading to the solid air tile glitch.
  • $0291BA: Spawns a tile in the $9C format with A as the parameter at the bounce sprite's position. This is called from spinning turn blocks when they become solid.
Additional Data MarioFanGamer
$029356 60 bytes Subroutine (JSR) Code that generates a spinning coin at the position of a bounce sprite. This is used to be able to collect a coin with a bounce block. However, this routine doesn't handle the removal of the coin which is instead handled by $0291B8. MarioFanGamer
$029F99 9 bytes Sprite physics Table for Mario fireball bounce speed. Change to all zeros to make straight fireballs not fly off of slopes at an angle. Use in conjunction with the fireball hit timer at $029FE4. Format wye
$0381CE 1 byte Timer Timer for big boo boss to begin reappearing after turning invisible. Default is #$C0. mason
$03D524 336 bytes Sprite tilemap related OAM data for the "Mario's adventure is over..." message. Excluding whitespace, each character is defined by four bytes of standard OAM data (X position, Y position, tile, YXPPCCCT), and characters will appear one by one in the order listed. Thomas
$04EC67 11 bytes Subroutine (JSR) Get the relative (screen) position of the path fade sprite. MarioFanGamer
$0CA204 1 byte Coordinate The X position where Mario stops in the Yoshi's House at Ending.
If you change this value, Peach and Green Yoshi's stopping positions will also change to match Mario's. (The spacing will remain the same, but the positions will shift.)
Francium
$0CF7DF 2048 bytes Overworld Layer 1 map16 data of the overworld, uncompressed. The data is directly copied from there to $7EC800. MarioFanGamer
Hijack Address Length Type Description Details Submitter
$02BFA2 4 bytes Jump (JML/JSL) Modified by the 8x8 Urchin Eyes patch, by Fernap.

JML, modifies the Urchin sprite's graphics routine to draw its eyes as two 8x8 tiles.
Maarfy
$02BFC3 5 bytes Jump (JML/JSL) Modified by the 8x8 Urchin Eyes patch, by Fernap.

JSL : RTS, modifies the parameters of the Urchin sprite's FinishOAMWrite call to acknowledge an extra tile + mixed tile sizes.
Maarfy
  • Pages:
  • 1