Banner
Views: 852,860,122
Time:
21 users online:  AnasMario130, ASMagician Maks, bsolt, Dan Drigues, DeppySlide, GbreezeSunset, h.carrell, HamOfJustice,  KevinM, mcnakahr, Neexy, Odyssey K., PatchesXLI, PedroHrodrigues, Phyll, ShadowBoxer_Sandshrew, Stunyboy, SubconsciousEye, Super Wario Man, TomatoPhalanges, Valkyria - Guests: 62 - Bots: 52 Users: 47,030 (2,519 active)
Latest: DrHelvetica
Tip: Press F2 on the level editor to see sub-screen boundaries. This will help you avoid glitching Dragon Coins by putting them on the sub-screen boundaries.Not logged in.
SMW Memory Map
Displaying 150 out of 830 addresses. Show Waiting Addresses (4)
Filter
Link
Address
Hexadecimal number for a partial address. 6-digit number for a full address. Use - to denote a range. Use , to list more than one address.
Length
Type
Enable JavaScript to use multiple regions.
Region
Hold control to select multiple. Check "All" to select all at once.

Type
Description
Separate each individual keyword with spaces. Surround a phrase with quotes to look for the exact phrase, or with / to use a PCRE regular expression. Prepend with - to exclude a keyword or phrase, with + to require a whole word or phrase, or with -+ to exclude a whole word or phrase. ? matches any character, * matches any amount of characters.
 
Pages: « 1 2 3 4 5 6 » Per Page: 25 50 75 100 150 500 All
RAM Address Length Type Description Details
$7E0DAA 1 byte I/O Controller 1 button disable flags ($4219), one frame. If a bit is set here, that bit will be disabled in $16/$0DA6 (but not $15).
Format: byetUDLR.
b = B, y = Y, e = Select, t = Start, UDLR = Up/Down/Left/Right.
$7E0DAB 1 byte I/O Controller 2 button disable flags ($421B), one frame. If a bit is set here, that bit will be disabled in $16/$0DA7 (but not $15).
Format: byetUDLR.
b = B, y = Y, e = Select, t = Start, UDLR = Up/Down/Left/Right.
$7E0DAC 1 byte I/O Controller 1 button disable flags ($4218), one frame. If a bit is set here, that bit will be disabled in $18/$0DA8 (but not $17).
Format: axlr----.
a = A, x = X, l = L, r = R, 0 = null/unused.
$7E0DAD 1 byte I/O Controller 2 button disable flags ($421A), one frame. If a bit is set here, that bit will be disabled in $18/$0DA9 (but not $17).
Format: axlr----.
a = A, x = X, l = L, r = R, 0 = null/unused.
$7E0DAE 1 byte Hardware mirror Handles brightness and force blank. Format: f---bbbb. f = force blank flag, --- = unused bits, bbbb = brightness setting. Mirror of SNES register $2100.
$7E0DAF 1 byte Misc. Mosaic direction. #$00 = shrinking mosaic; #$01 = growing mosaic.
$7E0DB0 1 byte Hardware mirror Current mosaic pixel size on level load. Mirror of SNES register $2106, though bits 0 and 1 are always set ($2106 = $7E:0DB0 | #$03).
$7E0DB1 1 byte Timer Is used to keep a mode active. If the respective value is positive, the game mode doesn't change. This is primarily used in the fading routines (example: from overworld to level and vice versa).
$7E0DB2 1 byte Flag Two player game flag. #$00 = No; #$01 = Yes.
$7E0DB3 1 byte Player Which character is in play. #$00 = Mario; #$01 = Luigi. If you prefer Luigi to be #$04, use $7E:0DD6.
$7E0DB4 1 byte Player Mario's lives. Note that this is only used in two player games, you'll want $7E:0DBE in 99% of the cases.
$7E0DB5 1 byte Player Luigi's lives. Note that this is only used in two player games, you'll want $7E:0DBE in 99% of the cases.
$7E0DB6 1 byte Player Mario's coins. Note that this is only used in two player games, you'll want $7E:0DBF in 99% of the cases.
$7E0DB7 1 byte Player Luigi's coins. Note that this is only used in two player games, you'll want $7E:0DBF in 99% of the cases.
$7E0DB8 1 byte Player Mario's powerup/status. Note that this is only used in two player games, you'll want $7E:0019 in 99% of the cases.
$7E0DB9 1 byte Player Luigi's powerup/status. Note that this is only used in two player games, you'll want $7E:0019 in 99% of the cases.
$7E0DBA 1 byte Yoshi Mario's Yoshi color. #$04=yellow; #$06=blue; #$08=red; #$0A=green
$7E0DBB 1 byte Yoshi Luigi's Yoshi color. #$04=yellow; #$06=blue; #$08=red; #$0A=green
$7E0DBC 1 byte Player Item in Mario's item box. #$00 = None; #$01 = Mushroom; #$02 = Fire Flower; #$03 = Star; #$04 = Feather. Note that you'll want $7E:0DC2 in most cases.
$7E0DBD 1 byte Player Item in Luigi's item box. #$00 = None; #$01 = Mushroom; #$02 = Fire Flower; #$03 = Star; #$04 = Feather. Note that you'll want $7E:0DC2 in most cases.
$7E0DBE 1 byte Player Current player lives, minus one (#$04 here means that the player has 5 lives).
$7E0DBF 1 byte Player Current player coin count.
$7E0DC0 1 byte Counter Green star block coin counter. Starts at 30 at the beginning of a level, and decrements for each coin that is collected. Adjusts content of green star block when it hits zero. (A 1-Up mushroom comes out, instead of a spinning coin.)
$7E0DC1 1 byte Yoshi Player can carry Yoshi over levels flag. #$00 = can't carry over levels; #$01 = can carry over levels.
$7E0DC2 1 byte Player Item in current player's item box. #$00 = None; #$01 = Mushroom; #$02 = Fire Flower; #$03 = Star; #$04 = Feather.
$7E0DC3 4 bytes Empty Empty. Cleared on reset and titlescreen load. $7E:0DC3 is also cleared when selecting how many players to use, but this can be disabled with no known side effects by setting $00:9E48 to [80 01 EA].
$7E0DC7 2 bytes Player Overworld X position where Mario should be going to. Is used by overworld path tiles to indicate Mario's direction. Updated as soon as Mario starts moving - zero otherwise.
$7E0DC9 2 bytes Player Overworld Y position where Mario should be going to. Is used by overworld path tiles to indicate Mario's direction. Updated as soon as Mario starts moving - zero otherwise.
$7E0DCB 2 bytes Player Overworld X position where Luigi should be going to. Is used by overworld path tiles to indicate Luigi's direction. Updated as soon as Luigi starts moving - zero otherwise.
$7E0DCD 2 bytes Player Overworld Y position where Luigi should be going to. Is used by overworld path tiles to indicate Luigi's direction. Updated as soon as Luigi starts moving - zero otherwise.
$7E0DCF 2 bytes Player Player X speed on the overworld. Added with $7E:13D5, which does happen to be zero all the time.
$7E0DD1 2 bytes Player Player Y speed on the overworld. Added with $7E:13D7, which is zero most of the time.
$7E0DD3 1 byte Overworld Player direction. #$00 = up; #$02 = down; #$04 = left; #$06 = right.
$7E0DD4 1 byte Should be 00 This address is effectively the high byte of $0DD3 on the overworld and should not be touched there, though in levels it is unused. It is also referenced once as the low byte of $0DD5, though its value isn't used there.
Cleared on reset and titlescreen load, and when Mario starts walking on an overworld path.
$7E0DD5 1 byte Misc. Used to indicate how a level has been exited, and hence what events to activate on the overworld. Valid Values
$7E0DD6 1 byte Player Which character is in play. Used on the overworld. The value of this address is actually $7E:0DB3 * 4.
#$00 = Mario; #$04 = Luigi.
$7E0DD7 1 byte Should be 00 An address that is expected to be #$00 throughout the entire game. $7E:0DD6 (current player) is sometimes used in 16bit mode, so using this address for different purposes is a bad idea.
$7E0DD8 1 byte Flag Used to tell if the game is currently switching between Mario and Luigi or not.
#$00 = Not switching between Mario and Luigi.
#$01 = Switching between Mario and Luigi, during the fade-out.
$7E0DD9 1 byte Empty Empty. Cleared on reset and titlescreen load.
$7E0DDA 1 byte Misc. Back-up of the music register. Gets its value from the level music table at $05:84DB.
Bit 7 of this address is set when the player has a star powerup or presses a P-switch; when this is cleared again, the music ends.
This address is also set to #$FF when the level ends, either by beating it or by dying.
Bit 6 is similar but is used to not reupload all music. This is used when changing from the Mario start screen to the level game mode.
$7E0DDB 3 bytes Empty Empty. Cleared on reset and titlescreen load.
$7E0DDE 1 byte Misc. Which files to delete on the erase file screen. Format: xxxxx123. It is also used as an overworld sprite index.
$7E0DDF 1 byte Sprites Starting OAM index for overworld sprites. Appears to be used only by the cloud sprites.
$7E0DE0 5 bytes Sprites Used for the overworld cloud sprites. This table is used in such a way that clouds check each other's 16-bit Y positions. By doing this, they can maintain their speed, making it the same for all clouds on-screen.
$7E0DE5 16 bytes Sprites Overworld sprite number. Valid Values
$7E0DF5 16 bytes Sprites Miscellaneous overworld sprite table.
$7E0E05 16 bytes Sprites Miscellaneous overworld sprite table.
$7E0E15 16 bytes Sprites Miscellaneous overworld sprite table.
$7E0E25 16 bytes Sprites Miscellaneous overworld sprite table.
$7E0E35 16 bytes Sprites Overworld sprite X position, low byte.
$7E0E45 16 bytes Sprites Overworld sprite Y position, low byte.
$7E0E55 16 bytes Sprites Overworld sprite Z position, low byte; distance that the sprite is from the ground.
$7E0E65 16 bytes Sprites Overworld sprite X position, high byte.
$7E0E75 16 bytes Sprites Overworld sprite Y position, high byte.
$7E0E85 16 bytes Sprites Overworld sprite Z position, high byte; distance that the sprite is from the ground. Probably has no real purpose in the original SMW; it may not be anything but #$00.
$7E0E95 16 bytes Sprites Overworld sprite X speed.
$7E0EA5 16 bytes Sprites Overworld sprite Y speed.
$7E0EB5 16 bytes Sprites Overworld sprite Z speed.
$7E0EC5 16 bytes Sprites Accumulating fraction bits for overworld sprite X speed.
$7E0ED5 16 bytes Sprites Accumulating fraction bits for overworld sprite Y speed.
$7E0EE5 16 bytes Sprites Accumulating fraction bits for overworld sprite Z speed.
$7E0EF5 1 byte Overworld This would be used to check whether the Koopa Kid should activate. Most likely it was used to prevent the Koopa Kid from triggering multiple times. Uses bits 5-7 only (#$80, #$40 and #$20).
This address can be used as empty free RAM if you do not use the overworld koopa kids, it is cleared on reset and titlescreen load.
$7E0EF6 1 byte Overworld Indicates which of the koopa kid triggers you are standing on. By default the tiles are: #$49, #$4A and #$4B. These correspond to index #$00, #$01 and #$02 respectively. This address is unused in the original SMW and can be used as empty free RAM, it is cleared on reset and titlescreen load.
$7E0EF7 1 byte Misc. If bit 7 is set (#$80-#$FF) and the player is located on a level tile, he will enter it directly.
$7E0EF8 1 byte Flag Yoshi has been saved for the first time flag - used for Yoshi's thank message.
$7E0EF9 55 bytes Misc. Status bar tilemap. View tiles as a table Diagram
$7E0F30 1 byte Counter Timer frame counter. When this address reaches #$00, one second is subtracted from SMW's timer, after which this address is set to #$28. This means that a SMW second is only 40 frames - in NTSC (60Hz), three SMW seconds = two real seconds
$7E0F31 3 bytes Counter Timer.
$7E:0F31 = Hundreds.
$7E:0F32 = Tens.
$7E:0F33 = Ones.
$7E0F34 6 bytes Counter 24-bit player score:

$7E0F34-$7E0F36: Mario.
$7E0F37-$7E0F39: Luigi.

Note: SMW stores the scores internally as the number displayed on the status bar divided by 10 ("1234560" shown is 123456 ($01E240) stored in memory).

Note: This number is stored in little endian the same way 16-bit values are stored ($01E240 is [$40, $E2, $01]).
$7E0F3A 6 bytes Empty Empty. Cleared on reset and titlescreen load.
$7E0F40 2 bytes Counter Amount of score to add up to the score total, at level end. Decrements as total score increments.
$7E0F42 6 bytes Empty Empty. Cleared on reset and titlescreen load.
$7E0F48 1 byte Counter Mario Bonus stars.
$7E0F49 1 byte Counter Luigi Bonus stars.
$7E0F4A 20 bytes Sprites Cluster sprite table. Is used for the castle background flame's frame to display, as well as Boo ring's speed - #$00 = still; #$01-#$7F = counter-clockwise; #$80-#$FF = clockwise.
Is also used for several other sprites that are generated, such as the ghost ceiling, but not necessarily for the same purpose.
$7E0F5E 20 bytes Empty Empty. Cleared on reset and titlescreen load. This table was probably meant to function as a cluster sprite table, but it was never used as such.
$7E0F72 20 bytes Sprites Cluster sprite table. Could be used for any purpose - in the original SMW, it holds the index of each individual Boo in a Boo ring (#$00-#$09). It is also used in the death bat ceiling to keep track of the bats' Y position.
$7E0F86 20 bytes Sprites Cluster sprite table, used for various purposes including determining which Boo ring is which and determining whether or not a particular "death bat" is visible.
$7E0F9A 20 bytes Sprites Cluster sprite table. Its purpose in SMW are the following: act as a timer for determining when death bats will fly, and as a timer to freeze an active Boo in the ghost ceiling.
$7E0FAE 2 bytes Sprites Low byte of the angle of the Boo rings. $7E:0FAE is for the first Boo ring active; $7E:0FAF is for the second Boo ring active.
Note that this is not reset on level or overworld load.
$7E0FB0 2 bytes Sprites High byte of the angle of the Boo rings. $7E:0FB0 is for the first Boo ring active; $7E:0FB1 is for the second Boo ring active.
Note that this does not reset on level or overworld load.
$7E0FB2 2 bytes Sprites Boo ring center X position, low byte. $7E:0FB2 is for the first active Boo ring; $7E:0FB3 is for the second active Boo ring.
$7E0FB4 2 bytes Sprites Boo ring center X position, high byte. $7E:0FB4 is for the first active Boo ring; $7E:0FB5 is for the second active Boo ring.
$7E0FB6 2 bytes Sprites Boo ring center Y position, low byte. $7E:0FB6 is for the first active Boo ring; $7E:0FB7 is for the second active Boo ring.
$7E0FB8 2 bytes Sprites Boo ring center Y position, high byte. $7E:0FB8 is for the first active Boo ring; $7E:0FB9 is for the second active Boo ring.
$7E0FBA 2 bytes Sprites Offscreen flag for the Boo ring. If a byte is set to 01, the ring is offscreen and doesn't show up. $7E:0FBA is for the first Boo ring active; $7E:0FBB is for the second.
$7E0FBC 2 bytes Sprites Boo ring index to level table (see $7E:1938). They are never erased, though, so they will always be reloaded.
$7E0FBE 1024 bytes Pointer 16-bit pointer table, indexed by Map16 tile number*2. Points to the image to use for a certain Map16 tile. Usually starts with #$8000 or $9100 (levels) or #$D000 (overworld) and the value counts up with eight per two RAM addresses. Bank byte should be #$0D (levels) or #$05 (overworld).
$7E13BE 1 byte Misc. Item memory settings from header.
$7E13BF 1 byte Misc. Translevel number, set during transfer from world map to level. This identifies the first room of the current level. To convert this to a room number (the "level number" in Lunar Magic), if > #$24, then add #$DC.

In the clean ROM, the actual formula is more complex. If translevel number > #$24, then subtract #$24. Then check RAM $7E:1F11 or $7E:1F12. If the player is in a submap (not the big world map), then add #$100. The submaps of SMW use translevel numbers > #$24, and the big map uses numbers <= #$24, so the simplication is that #$100 - #$24 is #$DC; Lunar Magic forces this simplification to remain.
$7E13C0 1 byte Should be 00 While this is never non-zero in the original SMW, $7E:13BF (level number) is sometimes used in 16bit mode, so using this address for different purposes is a bad idea
To make this one become useful free RAM, change $05:D9C9 to [E2 10 AC BF 13 B9 08 D6 8D EA 1D] (header : lorom : org $05D9C9 : SEP #$10 : LDY $13BF : LDA $D608,y : STA $1DEA).
$7E13C1 1 byte Overworld Current Layer 1 overworld tile the player is standing on.
$7E13C2 1 byte Should be 00 Used occasionally on the overworld as the high byte of $13C1, and thus should be kept as #$00 there. It is safe to use in levels, however.
Cleared on reset, title screen load, and when walking onto a new overworld tile.
$7E13C3 1 byte Overworld Current player submap. #$00 = Main map; #$01 = Yoshi's Island; #$02 = Vanilla Dome; #$03 = Forest of Illusion; #$04 = Valley of Bowser; #$05 = Special World; #$06 = Star World.
Note that it is sometimes inaccurate. It is wiser to use $7E:0DB3 and $7E:1F11.
$7E13C4 1 byte Should be 00 An address that is expected to be #$00 throughout the entire game. $7E:13C3 (current player submap) is often used in 16-bit mode, so using this address for different purposes is a bad idea, unless you make sure it's cleared on overworld load. Is also cleared during the switch between Mario and Luigi. Furthermore, cleared on reset and titlescreen load.
$7E13C5 1 byte Counter Increments each time a 3-Up moon is collected, serves no other purpose. (Its value is never loaded.)
$7E13C6 1 byte Misc. Used by SMW's cutscenes. Goes from #$01 to #$08 and these values are in the order of the boss battles, e.g. #$01 = Iggy's castle, #$02 = Morton's castle. #$08 is the value used for the credits.
Set to #$FF (in conjunction with $7E1493) to end the level as a boss fight: Mario won't walk during the fanfare, and it will trigger the boss cutscene set in Lunar Magic for the current level (if any). This also works for triggering the credit sequence.
$7E13C7 1 byte Yoshi Yoshi color. #$04=yellow; #$06=blue; #$08=red; #$0A=green. Refreshes on level change
$7E13C8 1 byte Empty Empty. Cleared on reset and titlescreen load.
$7E13C9 1 byte Flag Show "Continue/End" menu flag.
#$00 = Don't show it; #$01 = freeze player, but don't load the text yet; #$02 = freeze player, load "Continue/End" menu.
$7E13CA 1 byte Flag Show save prompt flag. It actually triggers when you get on a new level tile. #$00 = Don't show save prompt; #$01 = show save prompt.
$7E13CB 1 byte Misc. This has been left out in the current SMW version.

When you hit a goal tape, and spawn a starman (which never happens), this is set to #$01. Now each time you switch an area in a level, this gets multiplied by 2. When this reaches #$80 (changed area seven times), you will start the area with the star power. The instruction which sets this address to #$01 is located at $00:FB5C.
$7E13CC 1 byte Counter The value you store here is the amount of coins that are being added up, once per frame, to the total (done by incrementing the coin count and decrementing $13CC until 0). This is originally to allow the coin incrementing animation instead of instantly showing the total. This is handled by a code at $008F1D-$008F27.

Usually, $7E:13CC is either #$00 or #$01 (Sprite $7E (unused flying red coin)), but it can be set to other values in order to add up multiple coins at once.
$7E13CD 1 byte Flag If set to #$00, the midway point won't trigger if grabbed (it'll still make you big, but it won't set the midway flag). Never has any effect in the original SMW, probably left over from a beta.
$7E13CE 1 byte Flag Midway Point flag. #$00 = Midway Point not crossed; #$01 = Midway Point crossed.

Also used on the overworld as a flag to to indicate the level should activate an event.
$7E13CF 1 byte Flag Used to override the castle/ghost house entrance cutscene after you collect the midway point.

#$00 = Show castle/ghost house entrance cutscene after collecting midway point.
#$40 = Don't show castle/ghost house entrance cutscene after collecting midway point. Note that any non-zero value will work, this is just what SMW uses.

Change $05:D9DE to #$9C to make the cutscene play regardless.
$7E13D0 1 byte Overworld Index to what tile should be stored to VRAM during the castle/switch palace/fortress destruction sequence.
#$00 = Pressed green switch.
#$01 = Pressed yellow/red/blue switch.
#$02 = Destroyed fortress.
#$03 = Destroyed castle with exit.
#$04 = Destroyed castle without exit.
The tile data is then read from $04:EE7A through a 24-bit pointer at $7E:000A (scratch RAM).
$7E13D1 1 byte Overworld Holds the value of the listed castle/fortress/switch tile that must be destroyed, by checking which event it uses (table at $04E5D6). For example, event #$06 (Iggy's Castle destroyed) makes this address hold value #$00 (it's the first slot in the table).
This address is then used as index to the address where the destroyed tile is uploaded to VRAM.
$7E13D2 1 byte Misc. Color of the currently pressed switch palace, or #$00 for None. It's set to #$01 when the player hits a switch palace, and then set to the correct color (#$01 for Yellow, #$02 for Blue, #$03 for Red and #$04 for Green, others are oddly colored and/or flipped) by the message box routine. It creates both the ! blocks in the message boxes and on the overworld.
$7E13D3 1 byte Flag Timer that disables Start from flipping the Pause flag when its value is not #$00 (thus, #$01-#$FF). If it is #$00, being able to press Start to get into the Pause mode is possible.
$7E13D4 1 byte Flag The pause flag for levels, and the "look around the map" flag on the overworld.

In a level: #$00 = off, #$01 = Paused
On the overworld: #$00 = off, #$01 = Look around, #$02 = Return to Mario
$7E13D5 1 byte Misc. A flag that determines whether or not Layer 3 should scroll with the screen. If this is zero, Layer 3 will scroll depending on the tileset and tide setting; if it is any other value, Layer 3 will always be at the same position relative to Layer 1.
Also used on the overworld as accumulating fraction bits for player X speed (see $04:9801).
$7E13D6 1 byte Timer Amount of time to wait until the score-incrementing drumroll begins when you beat a level. Any time you enter a level, this address is set to #$50. Once you beat the level and the number of bonus stars you won and the score is displayed (or just the score if you didn't cut the goal tape), this timer will decrement itself once per frame. Once it reaches a negative value or zero, the drumroll will commence.
Once the drumroll ends, this is set to #$30, and then set to zero upon going to the overworld. It serves the same purpose after you beat a boss as well.
$7E13D7 2 bytes Overworld Y position fraction bits for the intro march (walking to Yoshi's House). Treated as 16-bit, but the high byte is effectively unused outside of being written to.

With Lunar Magic v3.00, this address gains a new purpose in horizontal levels, being used to hold the height of the level data (in units of pixels).
For example, in the original level sizes, this value is set to 0x01B0 (for 0x1B blocks tall). Because the level screen is always 16 blocks wide, this is also the number of blocks per screen column.
$7E13D9 1 byte Pointer A pointer to various processes running on the overworld.
Also used in the level end march.
Valid Values (Overworld) Valid Values (Level end)
$7E13DA 1 byte Player Accumulating fraction bits (fractions of 16; bits 4-7 used while bits 0-3 are always zero; #%XXXX0000) for fixed point player X position (not to be confused with $7E007A). This is used mainly for player's X speed position movement to enable increments for less-than a pixel.

Handled via a routine at $00DC4F.
$7E13DB 1 byte Player Player walking frame pose.

While walking, it gets the values from the table at $00:DC78, indexed by $7E:0019, which eventually becomes the player pose if the player does nothing else. The duration of each frame is read from $00:DC7C, though $7E:13DB plays no role in this. Note that this never is #$02 if the player is small.
$7E:13DB plays a role in determining which walking frame should be raised one pixel - see $00E35D.
$7E13DC 1 byte Player Accumulating fraction bits for fixed point player Y position. Same format as $7E13DA but Y position instead of X.
$7E13DD 1 byte Player Pose used while the player is on the ground and turning around with a non-zero X speed. Uses same format as $13E0.

This address can be used as a flag for when the player is turning, but note that it only gets set if the player is moving horizontally already; if the player turns from a stand-still, it will not be set. $1499 can be used to check this instead if the player is also holding an item.
$7E13DE 1 byte Player Poses used on overworld map and during credits by the player. The animation uses three frames, namely: this value, this value + 1, and this value + 2.
Can also be used as a "Player is looking up" flag. That's cleared every frame, and it's set to #$03 when holding the Up arrow and standing still. The graphics routine is the only code that actually reads it.
$7E13DF 1 byte Player This address controls which image must be shown of the cape. This obviously only has effect when the player has a cape at all.

While walking and sprint-jumping, frames 3 through 6 are cycled through, while 7 through A are used when falling downward. Pose zero is used for both standing still and jumping straight upwards, but is never shown without being preceded by frames 2 and 1.

Note that when the player is swooping/flying with his cape, $7E:13E0 will override the cape image. See also the diagram shown under $7E:13E0, poses #$2A through #$2F. Whatever value $7E:13DF has will be irrelevant during this phase.

Cape images beyond #$0A are not recommended for usage, as they are glitched.
Diagram
$7E13E0 1 byte Player This address controls the "main" poses of Mario and Luigi. Adjusting it will adjust the player's image as such.

Of note are the following poses. Poses #$40 and #$41 are blank - the player is "invisible". These are indicated with a large red cross in the diagram. Poses #$2A through #$2F absolutely require the player to have a cape powerup, otherwise they aren't shown correctly. Pose #$42 (inflated, small) can be shown regardless of powerup. It is obviously not recommended to be used as such. The same can be said about pose #$43 (inflated, big). Poses #$00, #$3D and #$46 are all used in the powerup animation. Poses #$14, #$20, #$21, #$27, #$28 and #$29 are all used during Yoshi riding. Any pose beyond #$46 is not recommended to use, as they can be glitchy.
Diagram
$7E13E1 1 byte Player What kind of slope the player is on (also set when flying with a cape). Valid Values
$7E13E2 1 byte Player Spinjump fireball timer. It increments every frame when the player spinjumps, if he has fire power. If the lowest four bits are clear, the player will throw out a fireball. The fourth bit (#$10) is the direction in which that fireball will move.
$7E13E3 1 byte Player Player is wall-running flag. Valid Values
$7E13E4 1 byte Player Player dash timer/P-meter. Increments with #$02 every frame the player is walking on the ground with the dash button held, otherwise decrements until it is zero. #$70 indicates that the player is at its maximum running speed, and also means that the player is able to fly with a cape.
$7E13E5 1 byte Player This is the index used to index the table at $00DC7C, to determine how many frames to store to the player animation timer, at $7E:1496. It changes depending on the surface the player is standing/walking/running on. Possible values
$7E13E6 2 bytes Empty Empty. Cleared on reset, titlescreen load, overworld load and level load.
$7E13E8 1 byte Flag Cape spin interacts with sprites flag.
#$00 = don't interact; #$01 = do interact.
$7E13E9 2 bytes Player Cape interaction X position within the level. It's adjusted when the cape attack is used.
$7E13EB 2 bytes Player Cape interaction Y position within the level. It's adjusted when the cape attack is used.
$7E13ED 1 byte Player Player pose on a slope when sliding, is set to #$1C.
This value is also negative (bit 7 set) when landing from flying, which allows the player to slide.
$7E13EE 1 byte Player What kind of slope the player is on. Valid Values
$7E13EF 1 byte Player Player is on ground flag. Set to #$01 on Layer 1, #$02 on Layer 2, and #$03 when on both. If he's running fast enough up a slope, that value is doubled.

Is only set when touching an actual floor, and not when running up walls. Does not work correctly in blocks, as the value still has to be calculated at that point. Instead, the value is copied over to $7E008D during that time. If Layer 1 interaction is enabled, that address is also doubled.
$7E13F0 1 byte Player Used to calculate the index to the direction the player faces while using a climbing net door. The formula is $7E:149D << 1 & #$0E | $7E:13F0. This address gets its value from $7E:13F9.
$7E13F1 1 byte Flag Vertical Scroll enable flag. #$00 = disabled; #$01 = enabled. Not to be confused with $7E1412 (for most ASM codes, to enable/disable vertical scrolling, using $1412 is recommended instead).
$7E13F2 1 byte Empty Cleared on reset, titlescreen, overworld, and cutscene load, as well as at $00F8A7. (TODO: What exactly is this routine?)
$7E13F3 1 byte Timer When you get a P-balloon, this is set to #$09. Each frame afterwards, this is decremented until it gets to #$01, at which point the player will begin to show his inflated frame.
$7E13F4 5 bytes Blocks A byte assigned to each row of blocks in the coin bonus game. Updated as blocks are chosen by the player to decide whether a life is given or not. If the value is #$FF, a life will be handed out. $7E:13F4 is for the uppermost row, $7E:13F5 for the one below that, etc.
$7E13F9 1 byte Player Flag that sends Mario behind layers.
01 will send him behind objects, 02 will send him behind objects and sprites, and 03 will only send him behind sprites.

Setting to 01 also treats Mario as if he's behind a net, meaning he'll only interact with sprites also behind nets. 02 and 03 will disable sprite interaction altogether.
$7E13FA 1 byte Player Whether the player is capable of jumping out of the water immediately or not (so just below the surface). #$00 = No; #$01 = Yes.
$7E13FB 1 byte Player Player is frozen flag. This includes controls and animation. Other sprites still move and can interact with the player, but contact with them should be avoided, as it would freeze the game. This may be useful for cutscenes to eliminate the jumping sound.
$7E13FC 1 byte Misc. Currently active boss. Used for determining which graphics to load, as well as checking for various other purposes (like when the player should have priority over certain sprite backgrounds, that can be found in the boss rooms).
#$00 = Morton; #$01 = Roy; #$02 = Ludwig; #$03 = Bowser; #$04 = Reznor
Note that Iggy, Lemmy, Wendy and Larry don't make use of this. Cleared on level->overworld transitions, and possibly at other times too.
$7E13FD 1 byte Flag When the L/R button is pressed, this address gets set to #$01 which briefly freezes the screen while the screen scrolls in whatever direction you pressed. It's cleared again when scrolling is done.
$7E13FE 1 byte Misc. #$02 = scroll right, #$04 = scroll left. Used when L/R is pressed.
$7E13FF 1 byte Player Player direction ($7E:0076) times 2. Used in the L/R screen-scrolling routine to determine when the screen will stop scrolling.
$7E1400 1 byte Camera Controls if the camera should move to be at the proper place compared to the player. If this is set, L and R are ignored.
#$00 = normal case, don't move camera automatically, keep it in place (assuming L/R aren't used).
#$08 = move camera right.
#$0A = move camera left.
$7E1401 1 byte Timer Increments with one each time one of the L/R buttons is pressed, until the timer hits #$10 (at which the L/R screen scroll is activated) or if the buttons are released.
$7E1402 1 byte Blocks A flag that is set when the player is on a note block that is currently going down, i.e. the bounce sprite is moving downwards. If this wouldn't be set, the player would be pushed away from tile 152 (the tile that temporarily comes into place of the note block).
$7E1403 1 byte Misc. Settings for current layer 3 tide.
#$00 - Not a tide image
#$01 - Water level changes
#$02 - Water level doesn't change
Pages: « 1 2 3 4 5 6 » Per Page: 25 50 75 100 150 500 All

The purpose of this site is not to distribute copyrighted material, but to honor one of our favourite games.

Copyright © 2005 - 2020 - SMW Central
Legal Information - Privacy Policy - Link To Us


Menu

Follow Us On

  • YouTube
  • Twitch
  • Twitter

Affiliates

  • Super Mario Bros. X Community
  • ROMhacking.net
  • Mario Fan Games Galaxy