Language…
5 users online: Isikoro,  Lazy, PinguLinux, Saela, Zavok - Guests: 109 - Bots: 123
Users: 57,117 (2,267 active)
Latest user: NotGob

SMW Memory Map - Waiting Addresses

Displaying 62 out of 62 waiting addresses.

View: moderated | waiting (62)

Filter

Link
  • Pages:
  • 1
RAM Address Length Type Description Details Submitter
$7E0044 1 byte Hardware mirror Color addition select.
Format: ccmm--sd.
cc = clip colors to black before math
mm = color math prevention
s = add subscreen (replaces fixed color)
d = enables direct color mode for 8bpp graphics (modes 3, 4, and 7)

For cc and mm, the values they are set to determine when they apply: 00 = never, 01 = outside color window only, 10 = inside color window only, 11 = always.

Mirror of SNES register $2130.
Von Fahrenheit
$7E0065 3 bytes Pointer 24-bit pointer to layer 1 data - both level and overworld.

Also used during the credits (in the staff roll sequence), in the routine at $0C9EB1:
- $65-$66: keeps track of the first two bytes of the stripe image header for the current line of the credits, for the layer 3 uploads (in little endian: it gets copied to the stripe image table in reverse order).
- $67: keeps track of the current line number to upload (a line is defined as two consecutive 8x8 rows). Used to fetch the correct data to upload from ROM. It can go as high as #$FF when using the full credits space in LM. This can be used in custom codes to perform some action when certain lines are uploaded (note: a line is uploaded when $24 AND #$0007 == #$0001, as per code at $0C9F9F).
Kevin
$7E0072 1 byte Player Player is in the air flag, as well as the actual pose value to store to $13E0 while the player is in midair. This is set to a certain value depending on how the player got in the air in the first place, and in what state they are currently (rising or sinking).
This address is not affected by phases such as climbing. It is, however, also used in swimming animation.

Notable values:
#$0B = Jumping/swimming upwards.
#$0C = Shooting out of a slanted pipe, running at maximum speed.
#$24 = Descending/sinking. NOTE: Hitting bottom-solid sprites like invisible solid block, message block etc. does NOT set $72 to this value as cape mario.

The address in general is used in many instances.
For example, the game checks if this address is #$0C. If not, the player cannot ascend properly with the cape. Furthermore, the Layer 3 smash won't hurt the player if they're not on the ground (any non-zero value) and this address prevents the player from locking in place when still airborne during the Morton/Roy/Ludwig battle.
HammerBrother
$7E1419 1 byte Sprites How sprites enter pipes with the player. This handles carried sprites and riding yoshi, and is always set regardless whether or not the player is carrying a sprite and whether or not is riding yoshi. When this RAM is set to any non-zero and the sprite is being carried and/or yoshi is being ridden on, they're placed behind layer 1 and yoshi's tongue is not shown (when licking).
  • $01 = Horizontal pipes (duck a little on yoshi and carrying sprites facing left or right).
  • $02 = Vertical pipes (face the screen).
  • $FF = Don't change image, only go behind layer (shooting out of slanted pipe). Note that this will probably work with all values #$03-#$FF.


Note: Yoshi always show his pipe animation pose regardless if the player is mounted on Yoshi or not, consider using this patch to fix it.
HammerBrother
$7E146C 4 bytes Empty Empty. Cleared on reset, titlescreen load, overworld load and cutscene load.

$7E146C-$7E146D is used by Lunar Magic (v3.10+): on level load it holds the Layer 3 Y position/offset (as defined in the advanced bypass settings), and it's updated during the level when the layer 3 scrolls vertically to keep track of how much it scrolled. It's used to make layer 3 scroll with the camera in levels that scroll vertically, when the layer 3 vertical scroll is not "None".
Kevin
$7E19B8 64 bytes Misc. Exit Table. This connects doors and exit-enabled pipes to their correct entrances.
  • $7E19B8-$7E19D7 (32 bytes): Low bits of the 9-bit (bits 0-7) level number (%llllllll) to warp to
    • The index for this exit table is the position of the exit (relative to layer 1) divided by 256. If layer 1 is vertical, then use the Y position of the exit, else use the X position. This is also known as the current screen number. For primary exits, the value in this exit table is the low 8 bits of the level number of the destination room. For secondary exits, the value in this exit table is the index to the secondary entrance ROM tables; and ROM table $05F800/0x2FA00 provides the low 8 bits of the room number.
  • $7E19D8-$7E19F7 (32 bytes): high bit and flags (%HHHHwush) This table is only used when Lunar Magic is done with the ROM. The original game does write the h bit, but never uses it.
    • h = Bit 8 of the level number for normal exits (0 = level 0xx, 1 = level 1xx).
    • HHHHh = Bits 8-12 of the secondary exit number.
    • s = Secondary exit flag.
    • u = LM-modified flag. If not set, the entire byte is ignored and SMW's original exit system is used.
    • w = Water flag (secondary exits) / Midway flag* (non-secondary exits).
    * Only used if the level has "use seperate settings for midway entrance" set.


Note: To compute what screen exit the player is on for new horizontal level modes (LM 3.00+), use JSL $03BCDC
Table correspondance HammerBrother
$7F0B44 2048 bytes Misc. It is used for Dynamic Z V3.75 or more, for severals differents variables.

More Documentation here:

https://sneslab.net/wiki/Dynamic_Z

Start at $418000 in SA-1 rom.
anonimzwx
$7F837D 5118 bytes Misc. VRAM upload table, as a stripe image. Used for things that change in the middle of the screen, such as ? blocks. Uploaded and reset every frame; most frames, it's empty.

Not all of it is used during normal gameplay, so $7F:8600+ shouldn't be dangerous to use.

See here for more info.
Data store in RAM format Example how to use in ASM - Layer 3 Another layer 3 example using RLE HammerBrother
$7FB408 3396 bytes Misc. Potentially used by Dynamic Z V3.75, lot of them usually are untouched but depends on the features that you use, they can be used by Dynamic Z V3.75 or later

Documentation Here:

https://sneslab.net/wiki/Dynamic_Z

Start at $418B80 on SA-1 rom.
anonimzwx
$7FC070 16 bytes Misc. Manual ExAnimation triggers. Each manual trigger slot corresponds to 1 byte in this table. Note that this address is not initialized unless you use the "Trigger Init" button in the ExAnimation dialog.
Used since Lunar Magic 1.70.
Trigger number -> RAM table HammerBrother
$7FC0FC 2 bytes Misc. Custom ExAnimation triggers. Each trigger corresponds to 1 bit, where a bit set means the trigger is enabled. Note that this address isn't initialized unless you use the "Trigger Init" button in the ExAnimation dialog.
Used since Lunar Magic 1.70.
Flag and bit table ASM code to set/clear a specified bit HammerBrother
ROM Address Length Type Description Details Submitter
$00A635 225 bytes ASM Initialises levels and castle destruction cutscenes. That one clears out various flags including but not limited to $7E0070-$7E0093, $7E13D9-$7E1410, the p-switch, star and directional coins timers, stops the starman and p-switch music from playing as well as whether the no-Yoshi intro cutscene should play or whether Yoshi will be removed from the level.
Afterwards, the initialisation depends on whether a no-Yoshi intro has been loaded or not:

  • $00A6B6: Initialisation of the no-Yoshi intro. That one sets the animation as well as which sequence to play.
  • $00A6CC: Initialisation of a sublevel. This includes setting the level entrance animation as well as the position of the keyhole window should one be active at level load (this seems to be an unused feature).
MarioFanGamer
$00C9A7 8 bytes Level number The level numbers that triggers the seven castle destruction sequences and the credits scene. The first byte is for scene 1, the second is for scene 2, and so on, while the last byte is for the level which triggers the credits. MarioFanGamer
$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
$01803A 8 bytes Sprite subroutine (JSL) Sprite to sprite and Mario interaction routine wrapper. That one simply calls the routines SubSprSprInteract and MarioSprInteractRt but can be called from any bank. MarioFanGamer
$019138 8 bytes Sprite subroutine (JSL) JSL for sprites interacting with objects. Actually calls routine at $019140.

During processing GPS blocks:
  • $0A-$0D: Position (in pixels) of the collision point currently being processed for sprite interaction with blocks in the level:

    • $0A-$0B (2 bytes): X position
    • $0C-$0D (2 bytes): Y position

    Note, just like $98-9B, coordinates are respective to the top-left of the layer currently being processed. Hence, if Layer 1 and Layer 2 are offset from each other, this value will differ between the two, even when the sprite is at the same position with respect to the level.

  • $0F (1 byte): Index of one of the 4 collision points currently in use. Also used to eject sprite out of block horizontally:

    • #$00 = SpriteH: Right (touches blocks from left)
    • #$01 = SpriteH: Left (touches blocks from right)
    • #$02 = SpriteV: Down (touches blocks from above)
    • #$03 = SpriteV: Up (touches blocks from below)


    Be careful when using custom blocks, $0F remains used before and after custom block processing at $019533. If $0F is modified and not restored, sprite interaction glitches can occur.



Message to mods: SpriteV and SpriteH are swapped on the info about $0F. I fixed it.
HammerBrother
$01999E 62 bytes Sprite subroutine (JSR) Block interaction of carryable and kicked sprite for horizontal interaction. This allows sprites to interact with bounce blocks.

Note that for the stunned state ($14C8 = $09), this interaction is skipped for Koopa shells.

$01999F [$01]: Which sound effect to play when a sprite touches a solid block.
$0199B2 [$14]: The range of the left side to check whether a sprite is on-screen.
$0199B4 [$1C]: The range of the right side to check whether a sprite is on-screen (must be added with the left range).
$0199CE [$05]: How long to disable interaction with capes and bounce sprites.
$0199D5 [$53]: Which sprite breaks at wall contact.
MarioFanGamer
$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
$01A40E 172 bytes Sprite Misc. Part of the main Sprite<->Sprite interaction subroutine. Called from $018032

How this works:
  1. The current sprite that call this subroutine is sprite_A, and the other sprite to compare with will be Sprite_B.
  2. If the frame counter $13 is an odd number and sprite_A is also odd, or if both are even, then this subroutine terminates to save performance. Otherwise if one is odd and other is even, the proceed with the subroutine. The reason for this is because it is very performance-heavy. If all 12 sprites uses this, then there are 66 possible pairs to check for collision.
  3. The routine loops through all the sprite slots below (indexes lower than) sprite_A's index. With Sprite_B starting at sprite_A's index, minus 1, then decreasing until $FF, then finishes.
HammerBrother
$01DCA6 1 byte Sprite tilemap related Line-guided Rope's Motor YXPPCCCT properties (flip/priority/palette/GFX page) Vellidragon
$029265 301 bytes Subroutine (JSR) Subroutine run on bounce sprite INIT (for all bounce sprites except turnblocks), which is responsible for the bug where a coin on top of hittable block and hitting said block will cause the coin to turn into an invisible solid block.

$029330 is the block on page 0 which is to be collected. Keep in mind that this is independent of the acts like setting and 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 with a bounce block. However, this routine doesn't handle the removal of the coin which is instead handled by $0291B8. MarioFanGamer
$02A547 39 bytes Sprite subroutine (JSR) "Get Fireball clipping" subroutine. Valid for Yoshi's and Mario's fireballs, Stores the clipping X displacement low byte to $00, the clipping X displacement high byte to $08, the clipping width (#0C) to $02, the clipping Y displacement low byte to $01, the clipping Y displacement high byte to $09, and the clipping height (#$13) to $03 (so it's equivalent to the "Get sprite clipping B" routine).

Input:
- Y: which extended sprite slot to get clipping of (should be #$08, #$09 for Fireball #1 and #2)
Example Code Disk Poppy
$02B5BC 48 bytes Sprite subroutine (JSR) Suboutine that updates the extended sprite's X and Y position ($171F/$1733/$175B and $1715/$1729/$1751) by its speed ($1747 and $173D). This alone is without gravity. The rate of movement is “subpixels” (1/16th of a pixels) per frame, similarly to Mario's speed handler at $00DC4F

$02B5BC-$02B5C7: Calls $02B5C8 with the current extended sprite index +10 (number of existing extended sprite slots) to use the X position instead of Y.

$02B5C8-$02B5EB: The subroutine itself. Input:
  • X_Index = $00-$09: Update Y position
  • X_Index = $0A-$13: Update X position
HammerBrother
$02F594 133 bytes Sprite subroutine (JSL) Ghost House Exit main pointer. The actual routine is located at $02F5D0; this is merely a wrapper for it, so it can JSL'ed. Major Flare
$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
$0CFFDF 33 bytes Empty Filled with $FF. MarioFanGamer
Hijack Address Length Type Description Details Submitter
$00F2E8 5 bytes Jump (JML/JSL) Modified by Save at Midway Point patch by  MarioFanGamer.

Makes midway point save the game when crossed.
RussianMan
$00FAD6 4 bytes Jump (JML/JSL) Hijacked by the RAM Controlled Mario's Fireballs Limit v1.1 patch, by Kevin.

JML, modifies the level end routine to not remove any fireballs at level end.
MarioFanGamer
$00FEA8 4 bytes Jump (JML/JSL) Hijacked by the RAM Controlled Mario's Fireballs Limit v1.1 patch, by Kevin.

JML, modifies the shoot fireball to prevent the player from shooting anymore fireballs should there be too many onscreen (with a user-defined limit).
MarioFanGamer
$01939D 4 bytes Jump (JML/JSL) Hijacked by the Optimize 1F0 patch by Fernap.
JML to freecode then returns to $0192C9. This moves the sprite up by the amount into the block it is, and then calls the interaction routine a second time, rather than moving up one pixel at a time as in the original game.
Burning Loaf
$01B97F 5 bytes Jump (JML/JSL) Modified by the Red Net Koopa Turning Fix patch, by Ice Man.

JML : NOP, differentiates the green and red Net Koopas' turnaround timers such that the red Koopas turn around at the net boundary proper.
Maarfy
$01C6B2 5 bytes Jump (JML/JSL) Modified by the Fire Flower Palette Cycle patch, by aroohwahoou.

JSL : NOP, modifies the powerup sprites' graphics routine to make the fire flower sprite cycle through different palettes.
Maarfy
$01FA7D 4 bytes Jump (JML/JSL) Hijacked by the Star/Slide Kill GFX Fix patch, by Kevin.

JML, modifies Iggy's Ball to still run its code during the death animation.
MarioFanGamer
$028095 4 bytes Jump (JML/JSL) Hijacked by the Star/Slide Kill GFX Fix patch, by Kevin.

JML, modifies the exploding Bob-Omb to turn into a smoke when killed.
MarioFanGamer
$028758 27 bytes Code Hijacked by the Tallying Score UberASM by JamesD28.
Breaking a turn block adds 50 points to the score, this changes that so that it updates the tally buffer instead.
Burning Loaf
$02964C 4 bytes Jump (JML/JSL) Hijacked by the RAM Controlled Mario's Fireballs Limit v1.1 patch, by Kevin.

JML, modifies the cape interaction to not destroy any fireball.
MarioFanGamer
$02A03B 4 bytes Jump (JML/JSL) Hijacked by the RAM Controlled Mario's Fireballs Limit v1.1 patch, by Kevin.

JML, modifies the fireball graphics to use all extended sprite OAM slots (this is only applied when Extended NMSTL has not been installed).
MarioFanGamer
$02AE12 35 bytes Code Hijacked by the Tallying Score UberASM by JamesD28.
This replaces the vanilla code for updating the score counter with new code that updates the tally instead.
Burning Loaf
$038A3F 4 bytes Jump (JML/JSL) Hijacked by the Star/Slide Kill GFX Fix patch, by Kevin.

JML, modifies the Bowser Statue to still run its code during the death animation.
MarioFanGamer
$038EEF 4 bytes Jump (JML/JSL) Hijacked by the Star/Slide Kill GFX Fix patch, by Kevin.

JML, modifies the Bowser Statue Fireball to still run its code during the death animation.
MarioFanGamer
$039068 4 bytes Jump (JML/JSL) Hijacked by the Star/Slide Kill GFX Fix patch, by Kevin.

JML, modifies Fishin' Boo to still run its code during the death animation.
MarioFanGamer
$039237 4 bytes Jump (JML/JSL) Hijacked by the Star/Slide Kill GFX Fix patch, by Kevin.

JML, modifies the Falling Spike to still run its code during the death animation.
MarioFanGamer
$039C34 12 bytes Jump (JML/JSL) Modified by Offscreen Invisible Solid Block Fix by  Thomas.

Adds suboffscreen routine for the invisible solid block sprite so it can despawn offscreen.
RussianMan
$03B166 4 bytes Jump (JML/JSL) Hijacked by the Star/Slide Kill GFX Fix patch, by Kevin.

JML, modifies Bowser's Bowling Ball to still run its code during the death animation.
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
$03C4F9 Unknown Miscellaneous Not a hijack but used by Optimized Spotlight patch, by yoshifanatic.

The address of the RTS, used when the sprite lock flag is se.
MarioFanGamer
$03C514 274 bytes Miscellaneous Modified by the Optimized Spotlight patch, by yoshifanatic.

Rewrites the entire spotlight with an optimised code as well as modify it to use interlacing as well as possibly to be dependent on the On/Off Switch should the user desire that.
MarioFanGamer
$03D7B1 4 bytes Jump (JML/JSL) Modified by the Reznor Bridge Fix patch, by MarioFanGamer.

JSL, selects the correct transparent tile data and VRAM location to write based on regular or Mode 7 level.
Maarfy
$03D7CE 3 bytes Code Modified by the Reznor Bridge Fix patch, by MarioFanGamer.

TYA : BRA $00, loads previously set transparent tile data based on regular or Mode 7 level.
Maarfy
$04DBF7 4 bytes Jump (JML/JSL) Hijacked by the Continue Music patch by MarioFanGamer.
JSL to freedata. The continue music is played instead of the submap's if the continue menu flag ($13C9) is on.
Burning Loaf
$07F473 1 byte Hex Edit Modified by the Fire Flower Palette Cycle patch, by aroohwahoou.

db $00, changes the fire flower sprite's default palette to Palette 8. This change has no practical effect.
Maarfy
$07F568 1 byte Data Modified by the Star/Slide Kill GFX Fix patch, by Kevin.

Modifies Bowser's Bowling Ball to still run its main code during the death animation.
MarioFanGamer
$07F56E 1 byte Data Modified by the Star/Slide Kill GFX Fix patch, by Kevin.

Modifies Iggy's Ball to still run its main code during the death animation.
MarioFanGamer
$07F56F 1 byte Data Modified by the Star/Slide Kill GFX Fix patch, by Kevin.

Modifies Blarggs to turn into a smoke when killed.
MarioFanGamer
$07F575 1 byte Data Modified by the Star/Slide Kill GFX Fix patch, by Kevin.

Modifies Fishin' Boo to still run its main code during the death animation.
MarioFanGamer
$07F57A 1 byte Data Modified by the Star/Slide Kill GFX Fix patch, by Kevin.

Modifies the Falling Spike to still run its main code during the death animation.
MarioFanGamer
$07F57B 1 byte Data Modified by the Star/Slide Kill GFX Fix patch, by Kevin.

Modifies the Bowser Statue Fireball to still run its main code during the death animation.
MarioFanGamer
$07F57C 1 byte Data Modified by the Star/Slide Kill GFX Fix patch, by Kevin.

Modifies Grinder to still run its main code during the death animation.
MarioFanGamer
$07F582 1 byte Data Modified by the Star/Slide Kill GFX Fix patch, by Kevin.

Modifies the Bowser Statue to still run its main code during the death animation.
MarioFanGamer
  • Pages:
  • 1