YI Memory Map
Displaying 50 out of 286 addresses.
View: moderated | waiting (27)
SRAM Address | Length | Type | Description | Details |
---|---|---|---|---|
$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) |
|