SMW Memory Map - Waiting Addresses
Displaying 29 out of 29 waiting addresses.
View: moderated | waiting (29)
- Pages:
- 1
RAM Address | Length | Type | Description | Details | Submitter |
---|---|---|---|---|---|
$7E006E | 3 bytes | Pointer | 24-bit pointer to the level Map16 block data ($7EC800/7FC800). Used during level load and also during change-map16 (e.g when a block gets hit and temporally turns into $0152). Note to mods: I tested via breakpoint at $00C0EF and it also handles the low byte when an on/off switch is hit. |
HammerBrother | |
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 | |
$02A906 | 1 byte | Sprite number | Which sprite number only uses a reserved slot if placed on an odd X-coordinate. (Default: 64) | imamelia | |
$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 |
$00A31A | 4 bytes | Jump (JML/JSL) | Modified by the Custom Mario Palettes patch, by Erik, Roy, underway. JML, jumps to a routine that makes the bank used in a DMA transfer to depend on a FreeRAM. |
MarioFanGamer | |
$00B048 | 4 bytes | Jump (JML/JSL) | Modified by the Custom Mario Palettes patch, by Erik, Roy, underway. JSL, sets the bank of the pointer to the palette to write to the CGRAM mirror. |
MarioFanGamer | |
$00C533 | 6 bytes | Jump (JML/JSL) | Hijacked by Super Mario Advance 4 !-Switch, by Burning Loaf JML : NOP #2, adds a check for the !-Switch timer to resume the level music when a P-Switch is pressed. |
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 | |
$00E31B | 4 bytes | Jump (JML/JSL) | Modified by the Custom Mario Palettes patch, by Erik, Roy, underway. JML, gets the player's palette of the current level / submap and store its pointer the player palette pointer as well as to freeRAM which acts as the pointers bank. |
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 | |
$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 | |
$02A763 | 16 bytes | Jump (JML/JSL) | Hijacked by AMK 1.0.9. Handles disabling and enabling Yoshi drums when entering levels. The jump instruction is follwed by 12 NOP insutrctions. |
Donut | |
$02E277 | 6 bytes | Jump (JML/JSL) | Hijacked by Super Mario Advance 4 !-Switch, by Burning Loaf JML : NOP #2, adds a check for the !-Switch timer to resume the level music when a Directional Coin terminates. |
MarioFanGamer | |
$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 | |
$05DBAC | 29 bytes | Jump (JML/JSL) | Modified by the Bonus Game Destination Expander patch, by Sonikku. JML : RTS : NOP #24, modifies the 100-star bonus game and Yoshi wings level destination selection routine to allow for more destinations, as well as a more in-depth means of selecting destinations. |
Maarfy | |
$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