YI Memory Map
Displaying 286 out of 286 addresses.
View: moderated | waiting (27)
- Pages:
- 1
SRAM Address | Length | Type | Description | Details |
---|---|---|---|---|
$700000 | 112 bytes | Super FX | Scratch RAM, used like "registers" for various operations on the Super FX, also used as additional parameters to Super FX routines | |
$700070 | 1 byte | Controller | Controller Data 1 (for gamemode 0F): AXLR---- A = A; X = X; L = L; R = R |
|
$700071 | 1 byte | Controller | Controller Data 2 (for gamemode 0F): byetUDLR b = B; y = Y; e = Select; t = Start; U = up; D = down; L = left, R = right |
|
$700072 | 1 byte | Controller | Controller Data 1, on press/first frame (for gamemode 0F): AXLR---- A = A; X = X; L = L; R = R |
|
$700073 | 1 byte | Controller | Controller Data 2, on press/first frame (for gamemode 0F): byetUDLR b = B; y = Y; e = select; t = Start; U = up; D = down; L = left, R = right |
|
$700076 | 2 bytes | Sound Effect | Mirror of $7E0051 (register $2141) for GSU player control routine, used for transformations | |
$70007A | 2 bytes | Sound Effect | Super FX sound ID, returned by GSU to push into sound queue (play a sound effect) | |
$700082 | 1 byte | Controller | Controller settings ($00 = patient; $02 = hasty) | |
$70008A | 2 bytes | Misc. | Yoshi's X subpixel position (high byte is spillage) | |
$70008C | 2 bytes | Misc. | Yoshi's X position | |
$70008E | 2 bytes | Misc. | Yoshi's Y subpixel position (high byte is spillage) | |
$700090 | 2 bytes | Misc. | Yoshi's Y position | |
$700092 | 2 bytes | Misc. | Pointer to next free slot in OAM buffer | |
$700094 | 2 bytes | Misc. | Layer 1 Camera X | |
$700096 | 2 bytes | Misc. | Layer 2 Camera X | |
$700098 | 2 bytes | Misc. | Layer 3 Camera X | |
$70009A | 2 bytes | Misc. | Layer 4 Camera X | |
$70009C | 2 bytes | Misc. | Layer 1 Camera Y | |
$70009E | 2 bytes | Misc. | Layer 2 Camera Y | |
$7000A0 | 2 bytes | Misc. | Layer 3 Camera Y | |
$7000A2 | 2 bytes | Misc. | Layer 4 Camera Y | |
$7000A4 | 2 bytes | Misc. | X position of the leftmost tiles on the screen | |
$7000A6 | 2 bytes | Misc. | Y position of the uppermost tiles on the screen | |
$7000A8 | 2 bytes | Misc. | Previous frame Yoshi's X velocity | |
$7000AA | 2 bytes | Misc. | Yoshi's Y velocity | |
$7000AC | 2 bytes | Misc. | Yoshi state: $0000: Regular (player control) $0002: Cutscenes; screen transition (pipe going right) $0003: In screen transition (pipe going left) $0004: In screen transition (pipe going down); in prologue cutscene (Baby Mario mounted) $0005: In screen transition (pipe going up) $0006: Entering/exiting pipe; in transition (pipe going right) $0007: In screen transition (pipe going left) $0008: In screen transition $0009: In screen transition $000A: Entering door $000E: Dying from spike $0010: Transforming $0012: Smashed by falling wall (sprite $036) $0014: Activating goal $0016: During level intro $0018: Being thrown toward baby mario at end of transformation $001A: Dying in pit / inside piranha plant / receiving boss key / shrinking during Prince Froggy $001C: During prologue cutscene $001E: Pushed away in Raphael Cutscene $0020: Entering Raphael Boss room (moon) $0022: Entering keyhole during boss key cutscene $0028: Dying from lava $002A: Being ejected vertically (after transition) |
|
$7000AE | 2 bytes | Misc. | Yoshi form: $0000: Yoshi $0002: Car Yoshi $0004: Mole Yoshi $0006: Helicopter Yoshi $0008: Train Yoshi $000A: Mushroom Yoshi (Beta) $000C: Sub Yoshi $000E: Ski Yoshi $0010: Super Baby Mario $0012: Plane Yoshi (Beta) |
|
$7000B0 | 2 bytes | Misc. | Yoshi's X position relative to camera | |
$7000B2 | 2 bytes | Misc. | Yoshi's Y position relative to camera | |
$7000B4 | 2 bytes | Misc. | Yoshi's X velocity | |
$7000B6 | 2 bytes | Misc. | Angle of ground Yoshi is on | |
$7000B8 | 2 bytes | Misc. | Angle of terrain slope that Yoshi's top is colliding with | |
$7000BA | 2 bytes | Misc. | Angle of terrain slope that Yoshi's middle part is colliding with | |
$7000BC | 2 bytes | Misc. | Angle of terrain slope that Yoshi's bottom part is colliding with | |
$7000BE | 2 bytes | Misc. | Yoshi's current animation frame | |
$7000C0 | 2 bytes | Player Physics | Yoshi's jump state: $0006: Jumping $0007: Peak of jump $0008: Falling |
|
$7000C2 | 2 bytes | Player Physics | Yoshi's ducking state: $0000: not ducking $0001-$0004: mid-duck / mid-duck release $0005: fully ducked |
|
$7000C4 | 2 bytes | Misc. | Yoshi facing direction ($0000: right, $0002: left) | |
$7000C6 | 2 bytes | Player Physics | Yoshi swimming state: $0000: not swimming $0001: landing in water, no player control $0002: feet up briefly after landing $0003: swimming |
|
$7000CC | 1 byte | Misc. | Direction player last accelerated from input: $00: not moving $01: right $02: left |
|
$7000CE | 2 bytes | Flag | $004C: Player is holding Up while on ground, $0000 not | |
$7000D2 | 1 byte | Misc. | Yoshi fluttering state: $00: After a flutter, midair $01: Not in a flutter chain: resets to this upon hitting ground or ceiling $02: Begin flutter $04, $06, $08: Mid-flutter states |
|
$7000D3 | 1 byte | Flag | $80: extended fluttering, $00 not | |
$7000D4 | 2 bytes | Misc. | Ground pound state: $0001~$0006: init states $0007: falling $0008~$000B: hitting the ground $000C: fully on ground, other actions enabled |
|
$7000D6 | 2 bytes | Misc. | Frame counter for holding Down button in air to ground pound. When it reaches $0007, ground pound will initiate. Set to $FFFF when pressing down on ground |
|
$7000DA | 2 bytes | Player Physics | Yoshi's stair state/counter, counts down/up in between steps on stairs (only high byte is used): $0800 to $0100 for left-facing stairs $F800 to $FF00 for right-facing stairs |
|
$7000DC | 2 bytes | Misc. | Frame counter for pushing yourself against a wall / a pushable sprite. The pushing animation starts at $10, and it loops at $23. NOTE: For pushable sprites, the entire range is +1 so starts at $01, $11 is animation, stops at $24. | |
$7000DE | 2 bytes | Misc. | Egg throwing state (decrements over time): $0007~$000A: init $0006: cursor out, ready to throw $0001~$0005: has been thrown $0000: not throwing |
|
$7000E0 | 2 bytes | Misc. | Egg cursor distance from Yoshi: Byte 1: Subpixels Byte 2: Pixels |
|
$7000E4 | 2 bytes | Misc. | Egg cursor X position When spitting an enemy this is used together with player speed to set enemy X-speed |
|
$7000E6 | 2 bytes | Misc. | Egg cursor Y position When spitting an enemy this is used subtracted with constant $0200 to set enemy y-speed |
|
$7000E8 | 2 bytes | Misc. | Frame counter for holding the Down button to cancel egg throw (up to $0007 then it cancels) | |
$7000EA | 2 bytes | Flag | $FFFF = Egg cursor locked with L/R, $0000 = not locked | |
$7000EC | 2 bytes | Flag | Egg aiming flag: $FFFF: Have eggs, can aim $0000: No eggs, can't aim $0002: In water, can't aim |
|
$7000EE | 2 bytes | Misc. | Egg cursor angle, ranges from $0000 = lowest, to $2E00 = highest | |
$7000F0 | 2 bytes | Misc. | Angular velocity of egg cursor (fixed point) | |
$7000F2 | 2 bytes | Misc. | How much Yoshi is stumbling during fuzzied state, starts at $00 and increments or decrements by $02 until threshold point, then begins stumbling: $001A: stumble forward threshold $FFE6: stumble backward threshold |
|
$7000F4 | 2 bytes | Misc. | Direction Yoshi is currently leaning during fuzzied state, relative to Yoshi's current facing: $0002: forward $FFFE: backwards |
|
$7000F6 | 2 bytes | Misc. | Yoshi idle animation state: $0000: Stepping in place $0002: Blinking $0004: Scratching nose $0006: Turning around |
|
$7000F8 | 2 bytes | Misc. | Running animation state: alternates between $0000 and $0002 while running pre/post-run: $0000 - $0012, increments by $02 |
|
$7000FA | 2 bytes | Misc. | Current ground type Yoshi is on: $0000: Ground $0001: Water $0002: ???? $0003: Ice $0004: Snow $0005: Mud |
|
$7000FC | 2 bytes | Misc. | Player collision with MAP16 terrain, format: 0000000L lRrTtBMb L = left, head l = left, body R = right, head r = right, body T = top, left half t = top, right half B = bottom, left third M = bottom, middle third b = bottom, right third |
|
$7000FE | 2 bytes | Misc. | Player collision with water, same format as $7000FC | |
$700100 | 2 bytes | Misc. | Player collision with cross section tiles, same format as $7000FC | |
$700102 | 2 bytes | Flag | $0001 when on a Spiky Stake ($0000 means not) | |
$700104 | 2 bytes | Misc. | Current door exit type: $0000: Regular door / boss door $0100: Sewer pipe hole (like in 4-E) $FFFF: Bandit mini-game door |
|
$700106 | 1 byte | Misc. | Pipe entrance/exit transition type: $02 = Going right $04 = Going left $06 = Going down $08 = Going up |
|
$700107 | 1 byte | Misc. | Pipe entrance/exit transition type: $00 = Vertical, going in pipe $40 = Vertical, coming out of pipe $80 = Horizontal, going in pipe $C0 = Horizontal, coming out of pipe |
|
$700108 | 2 bytes | Misc. | Distance Yoshi has travelled so far in vertical/horizontal pipe entrance transition, in pixels & subpixels ($ppss), fade & exit begins at $1F00 for both (NOTE: for horizontal it's basically a constant $0080 increase) | |
$70010A | 2 bytes | Misc. | Yoshi's vertical pipe entrance animation state: $0001-$0006: going down a pipe $0001-$0009: going up a pipe |
|
$70010C | 2 bytes | Misc. | Yoshi's vertical pipe entrance acceleration: $0100 = 1 subpixel, low byte is subsubpixels | |
$70010E | 2 bytes | Misc. | Before entering pipe: Yoshi's horizontal distance from vertical pipe entrance During pipe entrance transition: Current horizontal position of pipe entrance |
|
$700110 | 2 bytes | Misc. | While walking on mud/snow: Mirror of $7000F8, used for generating mud/snow particles While sliding on mud: Distance slid, wraps around at $1FFF, used to generate mud splashes |
|
$700112 | 2 bytes | Misc. | Car transformation wheel extension height, increments by 2, maxes at $0030 | |
$700114 | 2 bytes | Misc. | Address of ROM graphics (bank $52) to DMA into VRAM at $4200-$43FF: -Yoshi's tongue -Yoshi egg during Super Star Mario -Yoshi during bubble transformation |
|
$700118 | 2 bytes | Sprite Tilemap | Pointer to "above" layer's OAM in OAM buffer | |
$70011A | 2 bytes | Sprite Tilemap | Sprite priority # for "above" layer (sprites that show above Yoshi) | |
$70011C | 2 bytes | Misc. | Center of Yoshi X position (Yoshi X + Yoshi width / 2) | |
$70011E | 2 bytes | Misc. | Center of Yoshi Y position (Yoshi Y position + Yoshi height / 2) | |
$700120 | 2 bytes | Misc. | Yoshi's hitbox half width | |
$700122 | 2 bytes | Misc. | Yoshi's hitbox half height | |
$700124 | 2 bytes | Player Tilemap | Yoshi's OAM palette, ----ccc- part of yxppccct (OAM low table byte 4) | |
$700126 | 2 bytes | Player Tilemap | Yoshi's OAM priority, --pp---- part of yxppccct (OAM low table byte 4) | |
$700128 | 32 bytes | Player Tilemap | Yoshi & star counter graphics DMA queue, first 6 entries are Yoshi, last 2 are star counter number graphics, 4 bytes per: Bytes 1-3: Long source address to DMA from; aa aa bb (a = address, b = bank) for top row DMA Byte 4: high byte of address + 2, for bottom row DMA |
|
$70014E | 2 bytes | Misc. | Transformation state: $0000: Not transforming |
|
$700150 | 2 bytes | Misc. | Mouth state: $00: doing nothing $01: tongue horizontally growing or spitting $02: tongue horizontally retracting $03: tongue vertically growing or spitting $04: tongue vertically retracting $07, $0B, $0F, $13, $17, $1B, $1F, $23: States of swallowing non-egg sprites (star, nipper seed, coin, etc.) $2F, $33, $37, $3B, $3F, $43, $47, $4B: States of swallowing egg-forming sprites |
|
$700152 | 2 bytes | Player Physics | Tongue X length in pixels | |
$700154 | 2 bytes | Player Physics | Tongue Y height in pixels | |
$700156 | 2 bytes | Player Physics | Yoshi's X tongue position, relative to camera | |
$700158 | 2 bytes | Player Physics | Yoshi's Y tongue position, relative to camera | |
$70015A | 2 bytes | Misc. | Yoshi's X tongue position | |
$70015C | 2 bytes | Misc. | Yoshi's Y tongue position | |
$70015E | 2 bytes | Misc. | Blocked Tongue States (e.g. tonguing walls) Values $00 to $0F |
|
$700160 | 2 bytes | Misc. | Inedible Tongue state (e.g. tonguing sprites like piranhas / chomp rocks) Starts at $0014 and decrements until $0002. Zeroes out when tongue retracts. |
|
$700162 | 2 bytes | Misc. | When Yoshi catches an enemy or item (e.g. melon, egg) with his tongue, this is set to the sprite slot value. The value stays so until Yoshi either eats or spits out the enemy or has used the item. This SRAM gets cleared immediatley if the enemy or item in question is inedible. | |
$700168 | 2 bytes | Misc. | Current sprite slot index (+1) being tongued/in mouth - sign bit turns on when unable to swallow | |
$70016A | 2 bytes | Misc. | Type of ammunition in mouth: $0001: Fire melon $0002: Bubble $0003: Green watermelon $0004: Ice melon |
|
$70016C | 2 bytes | Misc. | Timer for duration of spitting a projectile, starts at $0000 and increments up to: Watermelon seed: $0008 Fire melon: $002A Ice melon: $0038 Bubble: $0018 |
|
$70016E | 2 bytes | Misc. | Timer for intentional game freeze while tonguing a watermelon | |
$700170 | 2 bytes | Misc. | Ammunition count in mouth: Bubble decrements 10 each spit, watermelon decrements 1 each spit, ice and fire melons decrement 10 each spit |
|
$700172 | 2 bytes | Misc. | For ice and fire melons: X position of where flame/ice was spat For watermelon seeds: # of seeds spat in succession during holding Y (loops from 0 to 6 then back to 0) |
|
$700174 | 2 bytes | Misc. | Ice and fire melons: Y position of where ice/flame was spat |
|
$70017A | 1 byte | Cutscene | The value in it is stored in Controller Data 1 during cutscenes. | |
$70017B | 1 byte | Cutscene | The value in it is stored in Controller Data 2 during cutscenes. | |
$70017C | 1 byte | Cutscene | The value in it is stored in Controller Data 1, one frame during cutscenes. | |
$70017D | 1 byte | Cutscene | The value in it is stored in Controller Data 2, one frame during cutscenes. | |
$70017E | 2 bytes | Player Physics | Car Yoshi: left wheel X position All other transformations: Rotation angle (mario low byte only) |
|
$700180 | 2 bytes | Player Physics | Transformation value: Helicopter: Rotation speed when hit. Starts at $1000, decreases by $20 each frame until $0700 Submarine: Rotation angle when hit. Starts at $0000, increments by $10 each frame until $0800 Train: Size counter when entering track. Starts at $00FF, decrements one per frame until $0070 Car: X-position in pixels Super Baby Mario: $0007 when running on ground allowing for vertical climb Mole: Orientation of vehicle: $0000: 0° $0001: 90° $0002: 180° $0003: 270° Ski Yoshi: Snowball State, starts at $0080 when hit and increases by 2 every frame on the ground until value reaches $0100 |
|
$700182 | 2 bytes | Player Physics | Car Yoshi: right wheel X position Helicopter: Animation frame (0-3) (turning around) |
|
$700184 | 2 bytes | Player Physics | Car Yoshi left wheel Y position | |
$700188 | 2 bytes | Player Physics | Car Yoshi right wheel Y position | |
$700198 | 2 bytes | Player Physics | Transformation value: Car: Y position of player / car Super Baby Mario: Y scale, normalized at $0100 |
|
$7001AE | 2 bytes | Flag | Disables control & animation of Yoshi | |
$7001B0 | 2 bytes | Flag | Disables updating & animation of sprites | |
$7001B2 | 2 bytes | Misc. | Baby Mario state info (set up like bit flags but never more than 1 on simultaneously): $0000: Off of Yoshi, floating & crying $2000: Super Baby Mario / Bonus challenge Mario $4000: Seized by toadies/bandits/frogs $8000: Riding Yoshi |
|
$7001B4 | 2 bytes | Flag | Currently on a platform sprite (Chomp rock, Hint block, rotating platforms, etc.) - also counts the total number currently standing on | |
$7001B6 | 2 bytes | Sprite Number | Slot of platform sprite that Yoshi is on. Does not apply to every platform sprite, for example it does for some moving sprites such as Pinwheels, Chomp Rock, Poochy, Flatbed Ferries, Lakitu clouds etc., but not for Hint Blocks, Donut Lifts etc. | |
$7001B8 | 2 bytes | Flag | Previous frame's value of $7001B4 | |
$7001BC | 2 bytes | Sprite Physics | Where the water line starts for sprite physics Only used for BG3 tilesets $13 (value $07B0) and $1D ($0700) Value is left at $4000 when disabled This doesn't affect regular water objects, only hardcoded water for certain BG3 tilesets. $ssyy ss = vertical screen number yy = Y-position of water line |
|
$7001C6 | 2 bytes | Misc. | Timer/index into camera Y offset table for small camera shaking (used by ground pounds, big egg ground impact, etc.) | |
$7001C8 | 2 bytes | Misc. | Timer/index into camera Y offset table for large camera shaking (used for falling chain chomps, chasing chain chomp hitting wall, etc.) | |
$7001CA | 2 bytes | Layer 1 Tilemap | Special Offset-By-Tile Modes $00: None (normal) $01: Level Mode 2 (1-7, 6-4, 6-3) $03: When Fuzzied $05: Unused |
|
$7001D0 | 2 bytes | Misc. | Timer for Yoshi's turning pose. Starts at #$0004 when you change direction while in movement (ground or air), remains with this value for a brief time if you keep holding this direction until it starts decrementing each frame. |
|
$7001D2 | 2 bytes | Misc. | Timer for each walking (not running) animation frame. | |
$7001D4 | 2 bytes | Misc. | Timer for each animation frame of the landing, start of falling and fluttering. | |
$7001D6 | 2 bytes | Misc. | Invincibility timer (starts at $00A0 on hit and decrements) | |
$7001D8 | 2 bytes | Misc. | Timer for each Yoshi idle animation state. | |
$7001DC | 2 bytes | Misc. | Timer for bopping head in solid blocks animation. It's the exact time with zero y speed during the bop. | |
$7001DE | 2 bytes | Misc. | Timer for ground pounding animation. | |
$7001E0 | 2 bytes | Misc. | Timer for mouth/tongue related animations. | |
$7001E2 | 2 bytes | Misc. | Egg throwing state timer | |
$7001EA | 2 bytes | Timer | Particle generation timer for mud & snowy trees, initially set to $08 and zero means spawn in (if conditions met) | |
$7001EE | 2 bytes | Misc. | Timer for sprite in Yoshi's mouth to be automatically swallowed. Starts off at $04B0 upon sprite entering mouth (even for inedible ones like the shell), counts down to $0000 | |
$7001F4 | 2 bytes | Misc. | Transformation timer, counts down | |
$700200 | 2048 bytes | Misc. | OAM buffer. Split into 256 4-word entries, each one representing a possible entry in OAM: Word 1: Screen-relative X coordinate (low byte copied into byte 1 of OAM low table mirror entry) Word 2: Screen-relative Y coordinate (low byte copied into byte 2 of OAM low table mirror entry) Word 3: Copied into OAM low table mirror entry bytes 3 & 4 (see OAM low table mirror $700A00 for details) Word 4: -p----sx------sx, p = priority (0=forward, 1=reverse), s = size, x = 9th x bit (low byte copied into high table buffer entry) NOTE: First 16 sprites are reserved for high priority items such as text and these are NOT handled by this buffer, thus copying begins at $700A40 for low table mirror and $700C30 for high table buffer. Copying will continue until either the last entry of the OAM low table mirror ($700BFC) or the last entry of this buffer ($7009F8). |
|
$700244 | 2 bytes | Player Physics | Yoshi's X subpixel position on a spinning wooden platform, unaffected by the rotation. | |
$700246 | 2 bytes | Player Physics | Yoshi's X position on a spinning wooden platform, unaffected by the rotation. | |
$700A00 | 512 bytes | Misc. | OAM low table mirror. 4-byte entries with format xxxxxxxx yyyyyyyy tttttttt yxppccct (x = X coordinate, y = Y coordinate, t = tile number, c = palette 0-7, p = priority, x&y = flip) | |
$700C00 | 32 bytes | Misc. | OAM high table mirror. 2 bits per entry, most significant X and size flag. | |
$700C20 | 128 bytes | Misc. | OAM high table buffer. Each entry is one byte which corresponds with one OAM entry. The 2 lowest bits of the byte get copied into the high table mirror ($700C00-$700C1F) and shifted into the correct spot for the entry. | |
$700CA0 | 2 bytes | Map | Island angle. Only low byte is used. | |
$700CAA | 128 bytes | Misc. | Screen ID table: maps raw screen # ($00-$7F) to screen ID ($00-$3F). The sign bit on indicates "empty" screen (has no object at all), or camera is unable to scroll into the screen due extended object $FE, or tiles are erased in that screen by extended object $FF. | |
$700DAA | 64 bytes | Misc. | BG1 - Left half of newest column spawned in, 32 SNES VRAM tilemap words, stored as a column but DMA'd to VRAM with increments of $40 to get to the next row each write and line up properly | |
$700DEA | 64 bytes | Misc. | BG1 - Right half of newest column spawned in, 32 SNES VRAM tilemap words, stored as a column but DMA'd to VRAM with increments of $40 to get to the next row each write and line up properly | |
$700E2A | 68 bytes | Misc. | BG1 - Top half of newest row spawned in, 34 SNES VRAM tilemap words, split into two separate DMA's - one for tilemap 1, one for tilemap 2 | |
$700E6E | 68 bytes | Misc. | BG1 - Bottom half of newest row spawned in, 34 SNES VRAM tilemap words, split into two separate DMA's - one for tilemap 1, one for tilemap 2 | |
$700EB6 | 1 byte | Misc. | Spriteset file # 1 ($F7 index) | |
$700EB7 | 1 byte | Misc. | Spriteset file # 2 ($F8 index) | |
$700EB8 | 1 byte | Misc. | Spriteset file # 3 ($F9 index) | |
$700EB9 | 1 byte | Misc. | Spriteset file # 4 ($FA index) | |
$700EBA | 1 byte | Misc. | Spriteset file # 5 ($FB index) | |
$700EBB | 1 byte | Misc. | Spriteset file # 6 ($FC index) | |
$700EBC | 2 bytes | Misc. | Previous frame X coordinate of sprite currently being processed | |
$700EBE | 2 bytes | Misc. | Previous frame Y coordinate of sprite currently being processed | |
$700EC0 | 64 bytes | Sprite Table | 16 4-byte entries, one ambient sprite per: Word 1: Flag for whether it exists currently or not (usually $000E for active) Word 2: $0000 |
|
$700F00 | 96 bytes | Sprite Table | 24 4-byte entries, one sprite per: Word 1: Sprite state $0000: nonexistent (used for skipping processing) $0002: newly spawned $0004: same as $02? $0006: pop sprite (turn into other sprite based on this table) $0008: in yoshi's tongue and/or mouth $000A: riding Yoshi $000C: colliding $000E: yoshi head bop $0010: active / alive $0012: burning to death from lava/fire melon Word 2: Angle of ground that the sprite is walking on |
|
$700F60 | 64 bytes | Sprite Table | 16 4-byte entries, one ambient sprite per: bitwise flags: Byte 1: ???????? Byte 2: ?? Byte 3: terrain collision flags Byte 4: ?? |
|
$700FA0 | 96 bytes | Sprite Table | 24 4-byte entries, one sprite per: Byte 1: tc?hhhhh t = Can be tongued (into mouth) c = Tongue collision is ignored h = hitbox setting (index into hitbox tables) Byte 2: ?? Byte 3: terrain collision flags Byte 4: ?? |
|
$701000 | 64 bytes | Sprite Table | 16 4-byte entries, one ambient sprite per: Byte 1: ????ddmm d = Index into despawning x,y threshold table (00 means no despawning) m = drawing method index Byte 2: Count/# of bytes taken up in OAM buffer Byte 3: Partial OAM low table mirror yx00ccc0 (c = palette 0-7, x&y = flip) Note: X-flip and Y-flip is conventionally set by facing direction Byte 4: ?? |
|
$701040 | 96 bytes | Sprite Table | 24 4-byte entries, one sprite per: Byte 1: sf?bddmm s = automatic swallow f = can be frozen b = can be burned by flame d = Index into despawning x,y threshold table (00 means no despawning) m = drawing method index Byte 2: Count/# of bytes taken up in OAM buffer Byte 3: Partial OAM low table mirror yx00ccc0 (c = palette 0-7, x&y = flip) Note: X-flip is conventionally set by facing direction Byte 4: ?? |
|
$7010A0 | 64 bytes | Sprite Table | 16 4-byte entries, one ambient sprite per: Ambient Sprite X coordinates, format: Byte 1: 00 Byte 2: X subpixel Byte 3: X pixel Byte 4: X screen |
|
$7010E0 | 96 bytes | Sprite Table | 24 4-byte entries, one sprite per: Sprite X coordinates, format: Byte 1: Sprite priority override flag (puts sprite farthest back if $40) Byte 2: X subpixel Byte 3: X pixel Byte 4: X screen |
|
$701140 | 64 bytes | Sprite Table | 16 4-byte entries, one ambient sprite per: Ambient Sprite Y coordinates, format: Byte 1: 00 Byte 2: Y subpixel Byte 3: Y pixel Byte 4: Y screen |
|
$701180 | 96 bytes | Sprite Table | 24 4-byte entries, one sprite per: Sprite Y coordinates, format: Byte 1: Index into OBJ Tiles (override) Byte 2: Y subpixel Byte 3: Y pixel Byte 4: Y screen |
|
$7011E0 | 64 bytes | Sprite Table | 16 2-word entries, one ambient sprite per: Word 1: X speed Word 2: Y speed |
|
$701220 | 96 bytes | Sprite Table | 24 2-word entries, one sprite per: Word 1: X speed Word 2: Y speed |
|
$701280 | 64 bytes | Sprite Table | 16 2-word entries, one ambient sprite per: Word 1: X delta, or pixels moved since last frame (curr X - prev X) Word 2: Y delta, or pixels moved since last frame (curr Y - prev Y) |
|
$7012C0 | 96 bytes | Sprite Table | 24 2-word entries, one sprite per: Word 1: X delta, or pixels moved since last frame (curr X - prev X) Word 2: Y delta, or pixels moved since last frame (curr Y - prev Y) |
|
$701320 | 64 bytes | Sprite Table | 16 2-word entries, one ambient sprite per: Word 1: Ambient sprite ID (list of valid values with their names) Word 2: Pointer to first entry within OAM buffer |
|
$701360 | 96 bytes | Sprite Table | 24 2-word entries, one sprite per: Word 1: Sprite ID (list of valid values with their names) Word 2: Pointer to first entry within OAM buffer |
|
$7013C0 | 64 bytes | Sprite Table | 16 2-word entries, one ambient sprite per: Word 1: Facing/direction: 00000yx0 y = Y flip x = X flip Word 2: Current animation frame |
|
$701400 | 96 bytes | Sprite Table | 24 2-word entries, one sprite per: Word 1: Facing/direction: 00000yx0 y = Y flip x = X flip Note: Y-flip conventionally set by OAM mirror Word 2: Current animation frame (High byte is used as a special flag for shyguys when spat upwards) |
|
$701460 | 64 bytes | Sprite Table | 16 4-byte entries, one ambient sprite per: Byte 1: Stage-wide ID (is always $FF as ambient sprites do not respawn) Byte 2: Background layer # of ambient sprite (unused?) Byte 3: Ambient Sprite Prioirty (0-7) - higher means further back - $FF used to disable drawing Byte 4: 00 (unused) |
|
$7014A0 | 96 bytes | Sprite Table | 24 4-byte entries, one sprite per: Byte 1: Stage-wide ID ($FF means no respawn) Byte 2: Background layer # of sprite Byte 3: Sprite Prioirty (0-7) - higher means further back - $FF used to disable drawing Byte 4: 00 (unused) |
|
$701500 | 64 bytes | Sprite Table | 16 2-word entries, one ambient sprite per: Word 1: X acceleration (e.g. gravity, friction) Word 2: Y acceleration |
|
$701540 | 96 bytes | Sprite Table | 24 2-word entries, one sprite per: Word 1: X acceleration (e.g. gravity, friction) Word 2: Y acceleration |
|
$7015A0 | 64 bytes | Sprite Table | 16 2-word entries, one ambient sprite per: Word 1: X acceleration ceiling (max speed for acceleration to apply) Word 2: Y acceleration ceiling |
|
$7015E0 | 96 bytes | Sprite Table | 24 2-word entries, one sprite per: Word 1: X acceleration ceiling (max speed for acceleration to apply) Word 2: Y acceleration ceiling |
|
$701640 | 64 bytes | Sprite Table | 16 2-word entries, one ambient sprite per: Word 1: X coordinate relative to camera Word 2: Y coordinate relative to camera |
|
$701680 | 96 bytes | Sprite Table | 24 2-word entries, one sprite per: Word 1: X coordinate relative to camera Word 2: Y coordinate relative to camera |
|
$7016E0 | 64 bytes | Sprite Table | 16 2-word entries, one ambient sprite per: Word 1: vertical terrain collision offset in pixels (signed) Word 2: Index into reserved dynamic tiles table, often used for SuperFX graphics ($FFFF means disabled) (unused for ambient sprites?) |
|
$701720 | 96 bytes | Sprite Table | 24 2-word entries, one sprite per: Word 1: vertical terrain collision offset in pixels (signed) Word 2: Index into reserved dynamic tiles table, often used for SuperFX graphics ($FFFF means disabled) |
|
$701780 | 64 bytes | Sprite Table | 16 2-byte and 1-word entries, one ambient sprite per: Byte 1: 00 Byte 2: Timer, used for whatever that sprite needs. (unused in game?) Word 2: Timer, zero removes ambient sprite (every sprite?). Often used for duration of each animation. |
|
$7017C0 | 96 bytes | Sprite Table | 24 4-byte entries, one sprite per: Yoshi collision information: Byte 1: ?? Byte 2: Timer, used for whatever that sprite needs. Only sprite timer active during pause flags. (unused in game?) Byte 3: $00: Yoshi is to the left of the sprite; $02: Yoshi is to the right of the sprite Byte 4: $00: Yoshi is above the sprite; $02: Yoshi is below the sprite |
|
$701820 | 64 bytes | ASM | 16 4-byte entries, one ambient sprite per: Byte 1: ???????G (on ground flag) Byte 2: ?? Byte 3: init $FF, ? Byte 4: init $1F, ? |
|
$701860 | 96 bytes | Sprite Table | 24 2-word entries, one sprite per: Word 1: Terrain collision flags, ???????? ????LRUD, high byte is unused; L = Left R = Right U = Up D = Down Word 2: Lava and water collision flag ???????? ??LW??? L = Lava W = Water |
|
$7018C0 | 64 bytes | Sprite Table | Wildcard table; 4 bytes per ambient sprite to be used as each one pleases (never initialized or cleared on spawn) | |
$701900 | 96 bytes | Sprite Table | Wildcard table; 4 bytes per sprite to be used as each one pleases. | |
$701970 | 2 bytes | Misc. | Random number generator (RNG) address, adds horizontal & vertical scanlines per sprite per frame | |
$701972 | 2 bytes | Misc. | Sprite slot # of sprite being currently processed | |
$701974 | 2 bytes | Timer | Frame counter, only counts when sprites are being processed - includes gamemodes $07, $0C (only in level fade-in), $0E, $0F, $10 (inside level, not score screen), $15, $39 Controls tileset animation |
|
$701976 | 96 bytes | Sprite Table | Wildcard table; 4 bytes per sprite to be used as each one pleases. Commonly used for AI state, graphical state, or other purposes. | |
$7019D6 | 96 bytes | Sprite Table | Wildcard table; 4 bytes per sprite to be used as each one pleases. Common usages: Byte 1: AI state Byte 2: Index for which Super FX graphic/animation frame Byte 3: "Next" animation frame Byte 4: Custom per sprite |
|
$701A36 | 96 bytes | Sprite Table | 24 2-word entries, one sprite per: Super FX morphing values to be used as each Super FX sprite needs, most common is scale then rotation. |
|
$701A96 | 96 bytes | Sprite Table | 24 2-word entries, one sprite per: Each word is a timer, used for whatever that sprite needs. Common uses are AI and skeletal animations. |
|
$701AF6 | 96 bytes | Sprite Table | 24 2-word entries, one sprite per: Each word is a timer, used for whatever that sprite needs. (Additional general purpose timers if needed) |
|
$701B56 | 96 bytes | Sprite Table | 24 2-word entries, one sprite per: Word 1: X offset for hitbox center Word 2: Y offset for hitbox center |
|
$701BB6 | 96 bytes | Sprite Table | 24 2-word entries, one sprite per: Word 1: Width of hitbox from center (both sides) Word 2: Height of hitbox from center (top & bottom) |
|
$701C16 | 96 bytes | Sprite Table | 24 2-word entries, one sprite per: Word 1: X distance from Yoshi (+ means to the right of Yoshi) Word 2: Y distance from Yoshi (+ means below Yoshi) |
|
$701C76 | 96 bytes | Sprite Table | 24 2-word entries, one sprite per: Word 1: On collision with another sprite, X delta from that sprite (this X - that X) Word 2: On collision with another sprite, Y delta from that sprite (this Y - that Y) |
|
$701CD6 | 96 bytes | Sprite Table | 24 2-word entries, one sprite per: Word 1: Hitbox X center position (X + offset) Word 2: Hitbox Y center position (Y + offset) |
|
$701D36 | 96 bytes | Sprite Table | 24 4-byte entries, one sprite per: Byte 1: Slot # of sprite currently colliding with + 1, $FF for Yoshi Byte 2: ?? (something with most recent collision) Byte 3: Collision state: $00 = May collide with Yoshi's body/tongue/other sprites, $01 = May not collide with Yoshi's body/other sprites but can be tongued, beyond $01 = Cannot collide with Yoshi/sprites, counts down until $01 to enable tongue collision Byte 4: ?? (used only for special purposes) |
|
$701D96 | 96 bytes | Sprite Table | 24 2-word entries, one sprite per: Word 1: Timer of being frozen from ice melon, counts down Word 2: Unused (most likely) |
|
$701DF6 | 2 bytes | Misc. | Size of current egg inventory in bytes (eggs/keys * 2) | |
$701DF8 | 12 bytes | Misc. | Current egg inventory sprite indices, 2 bytes per | |
$701E04 | 2 bytes | Misc. | Super Baby Mario timer: counts down | |
$701E06 | 1 byte | Misc. | "Show hidden items" flag | |
$701E08 | 2 bytes | Layer 1 Tilemap | Dynamic block bitflags: $0008: !-switch blocks on $0010: Baby Mario blocks on |
|
$701E0A | 2 bytes | Flag | Camera Y centers on Yoshi | |
$701E0C | 1 byte | Misc. | Camera X subpixel | |
$701E0D | 1 byte | Misc. | Camera X pixels moved this frame | |
$701E0E | 1 byte | Misc. | Camera Y subpixel | |
$701E0F | 1 byte | Misc. | Camera Y pixels moved this frame | |
$701E10 | 2 bytes | Misc. | Previous frame value for Yoshi's X subpixel | |
$701E12 | 2 bytes | Misc. | Previous frame value for Yoshi's X position | |
$701E14 | 2 bytes | Misc. | Previous frame value for Yoshi's Y subpixel | |
$701E16 | 2 bytes | Misc. | Previous frame value for Yoshi's Y position | |
$701E18 | 2 bytes | Misc. | Minimum left side camera X boundary (screen stoppers and other things can change this) | |
$701E1A | 2 bytes | Misc. | Maximum right side camera X boundary (screen stoppers and other things can change this) | |
$701E1C | 2 bytes | Misc. | Minimum upper camera Y boundary | |
$701E1E | 2 bytes | Misc. | Maximum lower camera Y boundary | |
$701E20 | 2 bytes | Misc. | Camera X window minimum (+ 24 = maximum), set to $30 if Yoshi facing right (left side) and $A8 for facing left (right side) | |
$701E22 | 2 bytes | Misc. | Camera Y window minimum (+ 8 = maximum), set to $10 for top, $A0 for bottom | |
$701E24 | 2 bytes | Misc. | Frame counter for pressing up/down buttons to scroll the screen up or down, increments, starts scrolling at $10 | |
$701E26 | 2 bytes | Misc. | X distance traveled by autoscroller, subpixel (high byte is spillage) | |
$701E28 | 2 bytes | Misc. | Current autoscroll X velocity, in pixels & subpixels | |
$701E2A | 2 bytes | Flag | Indicates that a camera event is active & pausing the game (stairs, flower vine, etc.) | |
$701E38 | 2 bytes | Misc. | Camera Y speed during camera event (stairs, etc.) | |
$701E3E | 2 bytes | Sprite Number | Sprite slot # (+ 1) of spinning 3D plank sprite (sprite ID $039) that Yoshi is currently standing on, $0000 if not standing on these | |
$701E40 | 2 bytes | Misc. | Current "angle" of the pseudo-3D platforms (e.g. falling walls, rolling logs) currently being processed. | |
$701E42 | 2 bytes | Misc. | X position of the pseudo-3D platform (e.g. falling walls, rolling logs) currently being processed + 8. | |
$701E48 | 2 bytes | Misc. | $0000: Baby Mario is on Yoshi's back, $FFFF: not | |
$701E4A | 2 bytes | Sprite Number | Overwrite ambient sprite slot # ($0000~$003C) to use when spawning an ambient and the tables are full, spawn at this slot - 4 (if < 0, wraparound to $003C) | |
$701ECC | 2 bytes | Super FX | Dynamic Super FX graphics tiles ($5C00-$5D00 VRAM) currently used/reserved, each bit corresponds to a 16x16 chunk within the full space, 1 means currently used, 0 means free Each nibble of this word corresponds to a 32x32 piece, and then row-major starting at top left, so the full thing is %1234123412341234 where: 1 = top left 2 = top right 3 = bottom left 4 = bottom right |
|
$701ECE | 32 bytes | Super FX | Sprites' dynamic Super FX graphics reserved chunks, 16 word-sized entries, each one represents which 16x16 chunks of graphics that a particular sprite personally has reserved for it, follows same format as $701ECC, acts as a mask so all 0 bits means this sprite is not using that chunk, the dynamic tile index indexes into this | |
$701EEE | 2 bytes | Misc. | Camera X offset value during Offset-Per-Tile mode | |
$701EF0 | 2 bytes | Misc. | Camera Y offset value during Offset-Per-Tile mode | |
$701EF2 | 64 bytes | Misc. | Offset per tile mode X offsets: 32 word-sized X offsets, one per screen 8-pixel row, starting at top of screen | |
$701F32 | 64 bytes | Misc. | Offset per tile mode Y offsets: 32 word-sized Y offsets, one per screen 8-pixel column, starting at left side of screen | |
$701F72 | 80 bytes | Layer 1 Tilemap | Effects table for wavy BG1 (like in 6-4 log ride lava), 20 4-byte entries, each entry represents a rectangle in the map which triggers the wavy effect: Byte 1: Leftmost X tile (all coordinates and sizes are 16 pixel tile regions of the entire area) of rectangle Byte 2: Topmost Y tile Byte 3: Width of rectangle - 1 Byte 4: Height - 1 NOTE: when triggered, X will be per-column but Y will activate for the entire height of the screen |
|
$701FE8 | 2 bytes | Timer | Timer for fuzzy dizzy effect, starts at $400 | |
$701FEA | 2 bytes | Player Physics | Cross section state, in conjunction with cross section flag: Upon entering: $0001: overlay fade out $0002: does nothing $0003: does nothing $0004: palette fading (unused?) $0005: done $0006: unused $0007: unused Upon leaving: $0001: does nothing $0002: palette fading (unused?) $0003: copy BG1 left tilemap $0004: copy BG1 right tilemap $0005: dump to BG3 $0006: overlay fade in $0007: done |
|
$701FEC | 2 bytes | Flag | Inside cross section: $0000: not inside, $0002: inside | |
$702000 | 512 bytes | Misc. | CGRAM mirror table (palettes) | |
$702200 | 1024 bytes | Misc. | Lookup table for function y = 1/x, mirrors $00E552-$00E951 Used by GSU to divide. It does not have a hardware divide so this lookup table is used instead. |
|
$702600 | 3 bytes | Misc. | Pointer to sprite level data for current level | |
$702604 | 32 bytes | Misc. | Newly spawned column of BG3 cross section tiles, SNES VRAM tilemap format ($01CE = blank tile) | |
$702624 | 32 bytes | Misc. | Mirror of $702604 | |
$702644 | 64 bytes | Misc. | Newly spawned row of BG3 cross section tiles, SNES VRAM tilemap format ($01CE = blank tile) | |
$7027CE | 252 bytes | Misc. | Newly spawned sprites this frame, up to 31 8-byte entries, with 4 bytes extra for a possible "end marker" (first word being negative indicates to go no further in the table): Word 1: Sprite ID (gets put into $701360) Word 2: X coordinate Word 3: Y coordinate Word 4: Stage ID, background layer, sprite priority (gets put into $7014A0) |
|
$7028CA | 256 bytes | Misc. | Stage sprites' spawning flags, 1-byte entries indexed by their stage ID ($00-$FF, same as in $7014A0 table): $00: Not spawned in currently, ready to spawn when column/row is reached $FF: Do not spawn: this either means the sprite is currently spawned in or is destroyed like enemy swallowed |
|
$7029CA | 2 bytes | Misc. | Pointer into next free entry of $7029CC table | |
$7029CC | 928 bytes | Misc. | Sprite interactive terrain buffer - mostly used for sprites that break sand, each sprite has 5 entries representing left, right, center, top, and bottom; room for up to 23 sprites, plus one additional entry; 8-byte entries: Word 1: X coordinate Word 2: Y coordinate Word 3: ??? Word 4: ??? |
|
$703372 | 420 bytes | Misc. | HDMA BG Scroll Buffer, gets copied to $7E5040 | |
$703516 | 420 bytes | Misc. | HDMA BG Scroll Buffer, gets copied to $7E51E4 | |
$703A02 | 840 bytes | Misc. | Window 1 & 2 (registers $2126-$2129) Buffer, gets copied to $7E56D0 | |
$704070 | 2 bytes | Misc. | Current message box data index | |
$70409E | 1024 bytes | Misc. | Table of MAP16 indices that represents the currently loaded two BG1 foreground tiles (two screens side by side, even & odd x-wise), orientation is based on scroll values | |
$70449E | 120 bytes | Misc. | Offset per tile moving object table, 20 6-byte entries, each entry represents a rectangle in the map which triggers an OPT effect that oscillates up & down (like 6-4 moving platforms): Byte 1: Leftmost X tile of rectangle (all coordinates and sizes are 8 pixel tile coords) Byte 2: Topmost Y tile Byte 3: Width of rectangle - 1 Byte 4: Height - 1 Byte 5: Amplitude of oscillation: # of pixels the object travels both up and down from its normal position in stage, this value is signed which indicates initial movement direction Byte 6: Current offset of object NOTE: when triggered, X will be per-column but Y will activate for the entire height of the screen |
|
$705800 | 8192 bytes | Misc. | Buffer used for decompressed file destination/pixel plotting destination; varies in size but up to 8kb | |
$707800 | 1024 bytes | Misc. | Practically free SRAM Only cleared on boot and all scenes with Island graphics |
|
$707C00 | 2 bytes | Misc. | Save file 1: # of lives (from last save) | |
$707C02 | 1 byte | Misc. | Save file 1: Last level beaten | |
$707C03 | 72 bytes | Misc. | Save file 1: Level high scores, 1 byte per map tile, format: csssssss, c = level completed, s = high score | |
$707C4B | 27 bytes | Misc. | Save file 1: Pause menu items, 1 byte per item, same format as $7E0357 | |
$707C66 | 1 byte | Misc. | Save file 1: Controller settings, same format as $700082 | |
$707C67 | 1 byte | Misc. | Save file 1: Tutorial message box bitflags, same format as $7E0372 | |
$707C68 | 2 bytes | Misc. | Save file 2: # of lives (from last save) | |
$707C6A | 1 byte | Misc. | Save file 2: Last level beaten | |
$707C6B | 72 bytes | Misc. | Save file 2: Level high scores, 1 byte per map tile, format: csssssss, c = level completed, s = high score | |
$707CB3 | 27 bytes | Misc. | Save file 2: Pause menu items, 1 byte per item, same format as $7E0357 | |
$707CCE | 1 byte | Misc. | Save file 2: Controller settings, same format as $700082 | |
$707CCF | 1 byte | Misc. | Save file 2: Tutorial message box bitflags, same format as $7E0372 | |
$707CD0 | 2 bytes | Misc. | Save file 3: # of lives (from last save) | |
$707CD2 | 1 byte | Misc. | Save file 3: Last level beaten | |
$707CD3 | 72 bytes | Misc. | Save file 3: Level high scores, 1 byte per map tile, format: csssssss, c = level completed, s = high score | |
$707D1B | 27 bytes | Misc. | Save file 3: Pause menu items, 1 byte per item, same format as $7E0357 | |
$707D36 | 1 byte | Misc. | Save file 3: Controller settings, same format as $700082 | |
$707D37 | 1 byte | Misc. | Save file 3: Tutorial message box bitflags, same format as $7E0372 | |
$707D38 | 104 bytes | Misc. | Backup of save file 1 | |
$707DA0 | 104 bytes | Misc. | Backup of save file 2 | |
$707E08 | 104 bytes | Misc. | Backup of save file 3 | |
$707E70 | 6 bytes | Misc. | Save file checksums: 2-byte ($7777 - checksum) of save files 1, 2, then 3 | |
$707E76 | 6 bytes | Misc. | Backup save file checksums: 2-byte ($7777 - checksum) of backup save files 1, 2, then 3 | |
$707E7C | 2 bytes | Misc. | Current / most recent save file loaded in ($0000, $0001, $0002) | |
$707E7E | 386 bytes | Misc. | Unused battery backed up Save RAM Won't get cleared or changed |
|
- Pages:
- 1