SMW Memory Map - Waiting Addresses
Displaying 34 out of 34 waiting addresses.
View: moderated | waiting (34)
- 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:
|
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 | |
$019FC1 | 1 byte | Sprite Misc. | change 01 to 05 to make Mario keep the balloon effect even after taking hits or power-ups.(no weird behaviour when dying) | Isikoro | |
$01A40D | 956 bytes | Sprite subroutine (JSR) | The primary routine used to process most standard interactions between a sprite and other sprites; call this routine from within the sprite's MAIN routine to do so. A JSL to this routine can be found at $018032. When two sprites are interacting, only the sprite in the higher slot actually processes it to prevent the interaction from being handled twice. Interactions can be prevented entirely by setting either sprite's "don't interact with other sprites" tweaker bit ($1686) or $1564. Notably, not using one of these two methods and instead simply not calling the routine in the first place does not guarantee interaction will not be processed, as it can still occur if the handling is coming from a sprite in a higher slot. An example of this in the original game exists with shells and Thwomps, who are immune to thrown shells when they handle the interaction, but are killed when the shell does instead. Overwrites $00-$03 when called. When processing interaction for sprites in status 8 that have the "change direction when touched" tweaker bit set ($1686), $157C is assumed to be their horizontal direction and $15AC will be set for a timer intended to control a turning-around animation for the sprite. |
Thomas | |
$01AD42 | 18 bytes | Sprite subroutine (JSR) | Calculates the player's Y position relative to the sprite (aka SubVertPos): Output:
|
HammerBrother | |
$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:
|
Additional Data | MarioFanGamer |
$029265 | 241 bytes | Subroutine (JSR) | Subroutine for most bounce sprites' init code. It makes bounce blocks (e.g. a ?-block) 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 | |
$03C0A2 | 1 byte | Misc. | Number of enemies Baby Yoshi must eat to grow if the double-eat glitch occurs ($01A2FB is the address for the regular eating behaviour) | Vellidragon | |
$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 |
$009CB8 | 3 bytes | Jump (JMP/JSR) | Hijacked by the One File, One Player patch, by Kevin. JMP, starts the game immediately on the title screen if the player presses ABXY or Start/Select on the title screen with a new save or open up the continue / new game menu (formally the Player 1 / Player 2 menu) if a save exists. |
MarioFanGamer | |
$009CEF | 6 bytes | Jump (JMP/JSR) | Hijacked by the One File, One Player patch, by Kevin. STZ : JSR, forces one player mode and always use save file 1 when loading a game. |
MarioFanGamer | |
$009D25 | 1 byte | Opcode | Hijacked by the One File, One Player patch, by Kevin. db $00, doesn't draw the Player 1 / Player 2 menu if the player selects the file. |
MarioFanGamer | |
$009D38 | 47 bytes | Opcode | Hijacked by the One File, One Player patch, by Kevin. Replaces the original file select with a custom one which only draws "CONTINUE" (or "CONTINUE GAME" if set by the user) and "NEW GAME". |
MarioFanGamer | |
$009DA8 | 12 bytes | Opcode | Hijacked by the One File, One Player patch, by Kevin. RTS : <code>, loads the exit count for only one save file and also used as freespace for the subroutine to load save one file. |
MarioFanGamer | |
$009DFA | 2 bytes | Opcode | Hijacked by the One File, One Player patch, by Kevin. BRA, prevents the player from going back to the file select in the Player 1 / Player 2 menu (which acts as the continue / new file menu in this patch). |
MarioFanGamer | |
$009E0D | 3 bytes | Jump (JMP/JSR) | Hijacked by the One File, One Player patch, by Kevin. JSR, loads the save file instead of selecting the player for the two options menu of the title screen. |
MarioFanGamer | |
$009E78 | 2 bytes | 16-bit Pointer | Hijacked by the One File, One Player patch, by Kevin. Repositions the cursor position for the continue / new file menu (formally the Player 1 / Player 2 menu). |
MarioFanGamer | |
$00CD74 | 5 bytes | Jump (JML/JSL) | Hijacked by Disable 1-UP Chain when Free Up-Down patch by Isikoro. JML : NOP, clears the consecutive enemies stomped counter when the players is climbing a vine or net. |
MarioFanGamer | |
$00EA5E | 4 bytes | Jump (JML/JSL) | Hijacked by Disable 1-UP Chain when Free Up-Down patch by Isikoro. JML, clears the consecutive enemies stomped counter when the players enters water. |
MarioFanGamer | |
$019FA1 | 4 bytes | Jump (JML/JSL) | Hijacked by Disable 1-UP Chain when Free Up-Down patch by Isikoro. JML, clears the consecutive enemies stomped counter when the players in the P-Balloon state. |
MarioFanGamer | |
$01A83B | 2 bytes | Opcode | Modified by Stomp w/ Star by aroohwahoou. [BRA $41] Branches to $01A87E, which is also hijacked by the patch's modified interaction routine. |
Burning Loaf | |
$01A87E | 6 bytes | Jump (JML/JSL) | Modified by Stomp w/ Star by aroohwahoou. Hijacks part of the default interaction routine to change how invincible mario reacts to sprite contact. |
Burning Loaf | |
$01B498 | 4 bytes | Jump (JML/JSL) | Optionally hijacked by Freeze Sprites with L/R UberASM by JamesD28 for better platform handling. | Fernap | |
$01CA56 | 4 bytes | Jump (JML/JSL) | Optionally hijacked by Freeze Sprites with L/R UberASM by JamesD28 for better platform handling. | Fernap | |
$01EF13 | 4 bytes | Jump (JML/JSL) | Hijacked by Disable 1-UP Chain when Free Up-Down patch by Isikoro. JML, clears the consecutive enemies stomped counter when the players rides Yoshi with wings. |
MarioFanGamer | |
$03958B | 10 bytes | Jump (JML/JSL) | Modified by Stomp w/ Star by aroohwahoou. Slightly alters the original code for Rex to check for the sprite contact flag then JML accordingly to custom star contact code for Rex. |
Burning Loaf | |
$03BB4F | 2 bytes | Hex Edit | Position of OW level names. Increase/decrease by 1 to make it move up to the right/left, increase/decrease by 20 to make it move down/upwards. Note that #$8B should be considered the low byte for the address, not #$50. Originally the routine is at $049D22 but Lunar Magic hijacks level names on the overworld and therefore this is the correct address if you want to change the position of the level names on the overworld. |
Ice Man | |
$05B872 | 57 bytes | 16-bit Pointer | Hijacked by the One File, One Player patch, by Kevin. Replaces the PLAYER 1 / PLAYER 2 menu text with the CONTINUE (or CONTINUE GAME if set so in the patch) / NEW GAME menu text. |
MarioFanGamer | |
$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