$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 |
Follow Us On