Language…
8 users online: DinoMom, Firstnamebutt, masl, Odinstafel, pnaha, qantuum,  Ringo, tOaO - Guests: 243 - Bots: 368
Users: 64,795 (2,380 active)
Latest user: mathew

SMW Memory Map - Waiting Addresses

Displaying 13 out of 13 waiting addresses.

View: moderated | waiting (13)

Filter

Link
  • Pages:
  • 1
ROM Address Length Type Description Details Submitter
$00D2CD 60 bytes Mario physics Deceleration table. Each value here are 16-bit values to modify $7A-$7B so that the player slows down to either #$00 or some value based on slopes (autoslide).

Note: Due to a bug, if Mario is traveling faster than his maximum speed and hold down the D-pad in the same direction (for example, going rightwards faster than his maximum rightwards speed and the player holds right), would slow him down.

The index on this table is by taking $13E1: Y_index = (Value_In_RAM_13E1 / 2) + SlopeThreshold. Where SlopeThreshold is 0 if the player speed is equal or faster than the minimum speed, otherwise it is 2.
Calculation of index Values in table HammerBrother
$00DC4F 75 bytes Mario physics Routine that updates the player's X and Y position ($94 and $13DA, $96 and $13DC) by X and Y speed ($7B and $7D).

The rate of movement is in “subpixels” per frame-- 1/16th of a pixel for more precise movement, using fixed point arithmetic. Note that stuff using position besides speed related data, such as hitboxes will only take the pixel position and not the subpixel position.

Normally this routine is called after JSR to $00DC2D. It then JSRs into $00DC4F with:
  • X = $00: Update X position
  • X = $02: Update Y position
How it works Math Example HammerBrother
$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
$01851C 3 bytes ASM [20 7C 85] Change to [BC 7C 15] to make the Diggin' Chuck's starting direction depend on its X position instead of it always starting out facing the player. imamelia
$02881E 5 bytes Sound effect Sound effect the on/off switch makes when spawning the bounce sprite. Note that the sound effect is actually played twice, with the other being at $02918C.

Set to EA EA EA EA EA (or org $02881E : nop #5) to fix it from being played twice.
HammerBrother
$02918C 5 bytes Sound effect Sound effect the on/off bounce block sprite makes when triggered, overrides the "hit head" sound. NOTE: the sound effect is actually played twice, with the other being at $02881E (code that spawns the bounce block).

Set to EA EA EA EA EA (or org $02918C : NOP #5) to prevent the SFX from being played twice.
HammerBrother
$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
$029265 241 bytes Subroutine (JSR) Subroutine for most bounce sprites' init code. It makes bounce blocks (e.g. a ?-block) be able to collect a coin right above them.

$029330: The block on page 0 which can be collected. Keep in mind that this is independent of the acts like setting and support thereof has to be implemented manually.
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
$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
$009C9F 4 bytes Jump (JML/JSL) Optionally hijacked by the patch Level Death Flag by MarioFanGamer.
JSL to code that clears the death flag for all levels when a save file is loaded.
Fernap
$0FF200 1024 bytes Table Used by Lunar Magic for the "old" graphics bypass using lists. In that system, an index of $00 is used to mark that no list bypass is used, and indices $01-$FF will point into this table (However, Lunar Magic's UI will instead display $00 as the first list and $FE as the last list). To calculate the direct offset, take ((index-1)*4). Note that both FG/BG list bypass and sprite list bypass share the same range of indices.

For each offset, contains four bytes for the four (Ex)GFX files that are used for this index. This system is only capable of addressing Graphics files numbered $00 through $FF.
Ragey
  • Pages:
  • 1