-
Notifications
You must be signed in to change notification settings - Fork 20
WRAM Map
Bruno Valadão Cunha edited this page Jul 13, 2024
·
18 revisions
The Super Nintendo Entertainment System has 128kb of system RAM (aka WRAM) that every game can access, spanning from $7E0000~$7FFFFF. This map explains what each address represents in Yoshi's Island standard gameplay gamemode $0F. In Yoshi's Island in particular, since it has the Super FX enhancement chip, much of the game's memory is stored in cartridge RAM instead. This is why there is so much free WRAM in this game. Nonetheless, there are still some pretty important pieces of data stored here.
Address | Length | Type | Description |
---|---|---|---|
$7E0000 | 48 bytes | Misc. | Scratch RAM, used like "registers" for various operations |
$7E0030 | 2 bytes | Timer | Frame counter |
$7E0032 | 3 bytes | Pointer | Pointer to level object data |
$7E0035 | 1 byte | Controller | Controller 1 Data 1, mirror of $7E093C |
$7E0036 | 1 byte | Controller | Controller 1 Data 2, mirror of $7E093D |
$7E0037 | 1 byte | Controller | Controller 1 Data 1 on press/first frame, mirror of $7E093E |
$7E0038 | 1 byte | Controller | Controller 1 Data 2 on press/first frame, mirror of $7E093F |
$7E0039 | 2 bytes | Misc. | Layer 1 Camera X |
$7E003B | 2 bytes | Misc. | Layer 1 Camera Y |
$7E003D | 2 bytes | Misc. | Layer 2 Camera X |
$7E003F | 2 bytes | Misc. | Layer 2 Camera Y |
$7E0041 | 2 bytes | Misc. | Layer 3 Camera X (also for World Map) |
$7E0043 | 2 bytes | Misc. | Layer 3 Camera Y |
$7E0045 | 2 bytes | Misc. | Layer 4 Camera X |
$7E0047 | 2 bytes | Misc. | Layer 4 Camera Y |
$7E0049 | 4 bytes | Empty | Unused RAM, cleared (with $00) during every loading screen |
$7E004D | 2 bytes | Sound Effect | Music track to be played - mirror of hardware register $2140 (APU I/O 0) |
$7E004F | 2 bytes | Sound Effect | Previous value of $7E004D (if previous == current value of hardware register $2140, do not write to register) |
$7E0051 | 2 bytes | Sound Effect | Mirror of hardware register $2141 (APU I/O 1, pseudo-noise loop) |
$7E0053 | 2 bytes | Sound Effect | Sound ID to be played instantly, bypasses the sound queue, directly written to hardware register $2143 |
$7E0055 | 2 bytes | Sound Effect | Previous value of $7E0053 (if previous == current value in hardware register $2143, do not write to register) |
$7E0057 | 2 bytes | Sound Effect | Current size of sound queue ($7E0059), capacity is 7 |
$7E0059 | 16 bytes | Sound Effect | Sound effect queue, NOT all sounds currently playing, but instead all sound IDs (1 byte per) to be submitted for play at the current time; each frame the queue index decrements, meaning at most one sound submitted per frame |
$7E0069 | 2 bytes | Map | World Map: Layer 1 scroll Mirrored by $7E006D |
$7E006B | 2 bytes | Misc. | Yoshi's jump state, mirror of $7000C0 |
$7E006D | 2 bytes | Map | World Map: Layer 2 scroll |
$7E0072 | 2 bytes | Map | World Map: Current stage Yoshi sprite Y coordinate |
$7E0073 | 2 bytes | Misc. | $0000: Camera is moving right $0002: Camera is moving left |
$7E0075 | 2 bytes | Misc. | $0000: Camera moving down $0002: Camera moving up |
$7E0076 | 2 bytes | Map | World Map: Current stage Yoshi sprite X coordinate |
$7E0077 | 2 bytes | Misc. | Flag: A new column has been spawned in |
$7E0079 | 2 bytes | Map | World Map: X Scroll destination |
$7E0079 | 2 bytes | Misc. | Flag: A new row has been spawned in |
$7E007B | 2 bytes | Layer 1 Tilemap | VRAM foreground tilemap address of most recently loaded column |
$7E007D | 2 bytes | Layer 1 Tilemap | VRAM foreground tilemap address of most recently loaded row |
$7E007F | 2 bytes | Layer 1 Tilemap | 7E007B + 1 (right half of column) |
$7E0081 | 2 bytes | Layer 1 Tilemap | 7E007D with $0400 bit flipped (even/odd counterpart of tilemap row) |
$7E0083 | 2 bytes | Misc. | Negative camera X column of newly spawned row shifted to: 0000000000cccc00 |
$7E0085 | 2 bytes | Layer 1 Tilemap | 7E007D + $20 (bottom half of row) |
$7E0087 | 2 bytes | Misc. | Camera X column + 1 of newly spawned row, shifted to: 0000000000cccc00 |
$7E0089 | 2 bytes | Misc. | Game Over screen state: $0000: nothing $0002: fading in $0004: active $0006: option chosen $0008: load title screen |
$7E0089 | 2 bytes | Layer 1 Tilemap | 7E0081 + $20 (second part of even/odd counterpart of tilemap row) |
$7E008B | 2 bytes | Misc. | Most recently spawned row's Y coordinate |
$7E0091 | 8 bytes | Misc. | Game Over screen: Letter rotation values (Y axis), 1 byte per letter, from right to left ('R', 'E', ... 'A', 'G') |
$7E0099 | 8 bytes | Misc. | Game Over screen: Letter rotation values (X axis), 1 byte per letter, letters from right to left ('R', 'E', ... 'A', 'G') |
$7E00A1 | 16 bytes | Misc. | Game Over screen: Letter X coordinates, 1 word per letter, from left to right ('G', 'A', .. 'E', 'R') |
$7E00B1 | 16 bytes | Misc. | Game Over screen: Letter Y coordinates, 1 word per letter, from left to right ('G', 'A', .. 'E', 'R') |
$7E00C1 | 2 bytes | Misc. | Game Over screen: Scale value (size) of letters |
$7E00C3 | 2 bytes | Misc. | Game Over screen: Current option selected ($00 = yes, $02 = no) |
$7E00C5 | 2 bytes | Misc. | Game Over screen: Rotational velocity of letters (both X and Y axes) |
$7E00C8 | 2 bytes | Timer | Game Over screen: Frame timer (counts down) of waiting before letter rotation restarts |
$7E00CA | 2 bytes | Timer | Game Over screen: Frame timer (counts up until $0200) for how long to wait until options appear |
$7E00CC | 53 bytes | Empty | Unused RAM, cleared (with $00) during every loading screen |
$7E0100 | 1 byte | Empty | This area never gets initialized or emptied. |
$7E0101 | 15 bytes | ASM | Interrupt jumps: NMI jumps to $7E0108, IRQ to $7E010C Copy of $008140-$00814E |
$7E0111 | 7 bytes | Empty | This area never gets initialized or emptied. |
$7E0118 | 2 bytes | Misc. | Game Mode |
$7E011B | 1 byte | Misc. | Full Game Mode completion flag $00: Game Mode still running (set by NMI/IRQ) $FF: Game Mode complete (set by end of game loop) |
$7E011C | 1 byte | Misc. | NMI & IRQ Mode $00: Nintendo Logo $02: Normal Level Mode $04: Offset-per-tile Level Modes (1-7/6-4) $06: Island Scenes $08: Story Cutscene / Credits $0A: Mode 7 bosses (Hookbill/Raphael) $0C: World Map $0E: Bonus Challenges & Bandit Mini Battles |
$7E011D | 2 bytes | Misc. | Mirror of hardware register $210D (BG1 Horizontal Scroll); since this register is write-twice, this is the full 16-bit mirror, it will write $7E011D and then $7E011E |
$7E011F | 2 bytes | Coordinate | Mirror of hardware register $210E (BG1 Vertical Scroll); since this register is write-twice, this is the full 16-bit mirror, it will write $7E011F and then $7E0120 |
$7E0121 | 1 byte | Misc. | Flag for level loading with stage intro text ($02 if true) |
$7E0125 | 1 byte | Misc. | IRQ Counter Expected values are 0 to 2 |
$7E0126 | 1 byte | ASM | Main IRQ Mode $00: Default $02: Story Cutscene $04: Credits $06: Bonus Challenges/Bandit Mini Battles |
$7E0127 | 1 byte | Misc. | Which tilemap queue to DMA. Default $00 (RAM queue). Values $00 to $0C |
$7E012D | 1 byte | Super FX | SCBR (register $3038) mirror, used by GSU init |
$7E012E | 1 byte | Super FX | SCMR (register $303A) mirror, used by GSU init |
$7E0131 | 2 bytes | Timer | Island: Frame counter |
$7E0134 | 2 bytes | Level Data | Level header: Background color |
$7E0136 | 2 bytes | Level Data | Level header: BG1 Tileset |
$7E0138 | 2 bytes | Level Data | Level header: BG1 Palette |
$7E013A | 2 bytes | Level Data | Level header: BG2 Tileset |
$7E013C | 2 bytes | Level Data | Level header: BG2 Palette |
$7E013E | 2 bytes | Level Data | Level header: BG3 Tileset |
$7E0140 | 2 bytes | Level Data | Level header: BG3 Palette |
$7E0142 | 2 bytes | Level Data | Level header: Sprite Tileset |
$7E0144 | 2 bytes | Level Data | Level header: Sprite Palette |
$7E0146 | 2 bytes | Level Data | Level header: Level Mode |
$7E0148 | 2 bytes | Level Data | Level header: Animation Tileset |
$7E014A | 2 bytes | Level Data | Level header: Animation Palette |
$7E014C | 2 bytes | Level Data | Level header: Background Scrolling |
$7E014E | 2 bytes | Level Data | Level header: Music |
$7E0150 | 2 bytes | Level Data | Level header: Item Memory |
$7E0152 | 2 bytes | Level Data | Level header: Unused |
$7E015F | 161 bytes | ASM | Reserved area for stack. This area never gets initialized or emptied (even upon reset / power on). |
$7E0200 | 1 byte | Misc. | Screen brightness: s000bbbb s = black if set b = brightness |
$7E0201 | 1 byte | Misc. | Fade in/out mode $01 = fade out $00 = fade in |
$7E0203 | 2 bytes | Misc. | Mirror of music Level header + 1 Used as index for SPC block uploads |
$7E0207 | 4 bytes | Music | SPC block indices that are currently loaded in ARAM |
$7E0212 | 1 byte | Bonus Challenge | Bonus Challenge ID: $00: FLIP CARDS $02: SCRATCH AND MATCH $04: DRAWING LOTS $06: MATCH CARDS $08: ROULETTE $0A: SLOT MACHINE |
$7E0216 | 2 bytes | Cutscene | Flag: Final world unlocked |
$7E0218 | 2 bytes | Misc. | Current world number (0000 = world 1, 0002 = world 2, etc.) NOTE: 000C isn't a world, but it's used in the final cinema sequence |
$7E021A | 2 bytes | Level Number | Current level number, NOTE: not translevel #, just the first level # loaded in from map |
$7E0222 | 80 bytes | Map | Available tiles on map screen, 12 bytes per world, one byte per level tile: $00: unavailable $01: beaten $80: current (grayed out) NOTE: The last 8 bytes are theoretically from World 7, they are read when the player press right on the World 6 tab. |
$7E0272 | 70 bytes | Empty | Unused RAM, cleared (with $00) via DMA during reset as well as before and after Nintendo logo |
$7E02B8 | 72 bytes | Map | Current level high scores to be displayed on world map (one byte per level tile) |
$7E030E | 1 byte | Misc. | Current save file loaded: $00: file 1 $02: file 2 $04: file 3 |
$7E030F | 72 bytes | Map | Map screen tile graphics, 1-byte indices (local to current world loaded) |
$7E0357 | 27 bytes | Pause Screen | Items in pause menu, one byte per ID: $00: free slot $01: +10 star $02: +20 star $03: POW $04: full egg $05: magnifying glass $06: star cloud $07: green melon $08: blue melon $09: red melon |
$7E0372 | 2 bytes | Misc. | Tutorial message bitflags for 1-1 & 1-2: bfm00000 00000000, b=first loss of Baby Mario in 1-1, f=first Flower received in 1-1, m=first Middle Ring in 1-2 |
$7E0379 | 2 bytes | Misc. | Current number of lives, 999 maximum |
$7E037B | 2 bytes | Misc. | Current number of coins |
$7E037D | 2 bytes | Misc. | Number of deaths in the current level (not translevel), 999 maximum |
$7E037F | 2 bytes | Misc. | Number of 1up's collected in the current level (not translevel), 999 maximum |
$7E0383 | 2 bytes | Sprite Palette | Current Yoshi color, set on level select (goal Yoshi reads this as well): $0000: Green $0001: Pink $0002: Yellow $0003: Light Blue $0004: Purple $0005: Brown $0006: Red $0007: Dark Blue |
$7E0385 | 2 bytes | Bonus Challenge | Flag for Bonus Challenge for end of level. $0001 for no bonus. $FFFF for bonus. |
$7E038C | 2 bytes | Misc. | Flag: warp to a different screen rather than start of stage |
$7E038E | 2 bytes | Misc. | Current screen exit (index into screen exit data, $7F7E00) |
$7E0394 | 2 bytes | Timer | Counter between ticks for star increase when stars are under 10 |
$7E0396 | 2 bytes | Misc. | Star count (*10) remaining to be auto-increased by (used by middle ring & items) |
$7E0398 | 1 byte | Pause Screen | Item currently being used; same item indices as $7E0357 |
$7E039A | 2 bytes | Pause Screen | Pause Item in continuous use. Set by items such as star counter and egg fill to act as a pause until item finished use. Cleared on item use. |
$7E039C | 1 byte | Timer | Frame counter during item use (after unpause) |
$7E03A1 | 2 bytes | Misc. | First digit of star counter |
$7E03A3 | 2 bytes | Misc. | Second digit of star counter |
$7E03A7 | 1 byte | Misc. | Current Bandit Mini Battle: $00: Throwing Ballons (4) $02: Throwing Ballons (5) $04: Throwing Ballons (6) $06: Shy Guys shooting coins [UNUSED] $08: Gather Coins $0A: Popping Ballons (fixed platforms) $0C: Popping Ballons $0E: Missile/Bombarding [UNUSED] $10: Train chase [UNUSED] $12: Watermelon Seed Spitting Contest $14: Watermelon Seed Spitting Contest (2P) $16: Throwing Balloons (4, 2P) |
$7E03A9 | 2 bytes | Timer | Frame counter for game modes $0D, $0E (during black cover sliding out), $0F, $10 (inside level, not score screen), and $11. Is paused during pause screen, and is reset upon entering stage and also upon star auto-increase (middle rings & +10 & +20 items). |
$7E03AB | 1 byte | Misc. | Flag: Star counter is below 9 (beeping/alarm sounds begin) |
$7E03AC | 2 bytes | Misc. | Flag: At least one middle ring has been used in current level (value will be number of middle rings used) |
$7E03AE | 2 bytes | Misc. | Flag: Boss has been visited before in current level, used to skip Kamek dialogue |
$7E03B0 | 2 bytes | Misc. | Flag: Baby Bowser boss has been visited before in current level, used to skip Kamek introduction |
$7E03B4 | 2 bytes | Misc. | Current number of red coins collected |
$7E03B6 | 2 bytes | Misc. | Current star count * 10 |
$7E03B8 | 2 bytes | Misc. | Current number of flowers collected |
$7E03BE | 2 bytes | Level Data | Current Item Memory page (0-3) |
$7E03C0 | 128 bytes | Level Data | Item Memory Page 0: Vertical bitplane, each word represents a horizontal line (0 = not collected, 1 = collected) |
$7E0440 | 128 bytes | Level Data | Item Memory Page 1: Vertical bitplane, each word represents a horizontal line (0 = not collected, 1 = collected) |
$7E04C0 | 128 bytes | Level Data | Item Memory Page 2: Vertical bitplane, each word represents a horizontal line (0 = not collected, 1 = collected) |
$7E0540 | 128 bytes | Level Data | Item Memory Page 3: Vertical bitplane, each word represents a horizontal line (0 = not collected, 1 = collected) |
$7E05C0 | 2 bytes | Player Physics | Current index into Yoshi delay buffers |
$7E05C2 | 296 bytes | Player Physics | Yoshi X Coordinate delay buffer (2 bytes each): last 148 frames of where Yoshi's X was, used by egg inventory items to follow Yoshi |
$7E06EA | 296 bytes | Player Physics | Yoshi Y Coordinate delay buffer (2 bytes each): last 148 frames of where Yoshi's Y was, used by egg inventory items to follow Yoshi |
$7E093C | 1 byte | Controller | Controller 1 Data 1 (global): AXLR---- A = A; X = X; L = L; R = R |
$7E093D | 1 byte | Controller | Controller 1 Data 2 (global): byetUDLR b = B; y = Y; e = Select; t = Start; U = up; D = down; L = left, R = right |
$7E093E | 1 byte | Controller | Controller 1 Data 1, on press/first frame (global): AXLR---- A = A; X = X; L = L; R = R |
$7E093F | 1 byte | Controller | Controller 1 Data 2, on press/first frame (global): byetUDLR b = B; y = Y; e = Select; t = Start; U = up; D = down; L = left, R = right |
$7E0940 | 1 byte | Controller | Controller 2 Data 1 (global): AXLR---- A = A; X = X; L = L; R = R |
$7E0941 | 1 byte | Controller | Controller 2 Data 2 (global): byetUDLR b = B; y = Y; e = Select; t = Start; U = up; D = down; L = left, R = right |
$7E0942 | 1 byte | Controller | Controller 2 Data 1, on press/first frame (global): AXLR---- A = A; X = X; L = L; R = R |
$7E0943 | 1 byte | Controller | Controller 2 Data 2, on press/first frame (global): byetUDLR b = B; y = Y; e = Select; t = Start; U = up; D = down; L = left, R = right |
$7E0944 | 1 byte | Controller | Previous frame controller 1 data 1 (what was previously in $7E093C), used for next frame's on press |
$7E0945 | 1 byte | Controller | Previous frame controller 1 data 2 (what was previously in $7E093D), used for next frame's on press |
$7E0946 | 1 byte | Controller | Previous frame controller 2 data 1 (what was previously in $7E0940), used for next frame's on press |
$7E0947 | 1 byte | Controller | Previous frame controller 2 data 2 (what was previously in $7E0941), used for next frame's on press |
$7E0948 | 2 bytes | Misc. | Word that stores each color channel's fixed color data intensity (mirror of $2132 for each channel): 0bbbbbgg gggrrrrr b = blue channel intensity g = green channel intensity r = red channel intensity |
$7E094A | 1 byte | Misc. | Mirror of hardware register $420C |
$7E094B | 1 byte | Misc. | Mirror of hardware register $2101 |
$7E094C | 1 byte | Misc. | Mirror of hardware register $212A |
$7E094D | 1 byte | Misc. | Mirror of hardware register $212B |
$7E094E | 1 byte | Misc. | Mirror of hardware register M7SEL ($211A) |
$7E094F | 2 bytes | Misc. | Mirror of hardware register M7A ($211B) |
$7E0951 | 2 bytes | Misc. | Mirror of hardware register M7B ($211C) |
$7E0953 | 2 bytes | Misc. | Mirror of hardware register M7C ($211D) |
$7E0955 | 2 bytes | Misc. | Mirror of hardware register M7D ($211E) |
$7E0957 | 2 bytes | Misc. | Mirror of hardware register M7X ($211F) |
$7E0959 | 2 bytes | Misc. | Mirror of hardware register M7Y ($2120) |
$7E095B | 1 byte | Misc. | Mirror of hardware register $2106 |
$7E095E | 1 byte | Misc. | Mirror of hardware register $2105 |
$7E095F | 1 byte | Misc. | Mirror of hardware register $2107 |
$7E0960 | 1 byte | Misc. | Mirror of hardware register $2108 |
$7E0961 | 1 byte | Misc. | Mirror of hardware register $2109 |
$7E0962 | 1 byte | Misc. | Mirror of hardware register $210B |
$7E0963 | 1 byte | Misc. | Mirror of hardware register $210C |
$7E0964 | 1 byte | Misc. | Mirror of hardware register $2123 |
$7E0965 | 1 byte | Misc. | Mirror of hardware register $2124 |
$7E0966 | 1 byte | Misc. | Mirror of hardware register $2125 |
$7E0967 | 1 byte | Misc. | Mirror of hardware register $212C |
$7E0968 | 1 byte | Misc. | Mirror of hardware register $212D |
$7E0969 | 1 byte | Misc. | Mirror of hardware register $212E |
$7E096A | 1 byte | Misc. | Mirror of hardware register $212F |
$7E096B | 1 byte | Misc. | Mirror of hardware register $2130 |
$7E096C | 1 byte | Misc. | Mirror of hardware register $2131 |
$7E0980 | 1 byte | Timer | Timer for updating Title Screen animation frames (title wavy effect, island rotating, sprite moving, etc). Each animation frame takes 4 frames to update. |
$7E0B0F | 1 byte | Pause Screen | Pause state: $00: unpaused $01-12: pause transition states $13: in pause menu $14: begin unpausing |
$7E0B10 | 1 byte | Pause Screen | Flag for pause screen active - instantly turns on when pause pressed, instantly turns off when unpause pressed |
$7E0B48 | 2 bytes | Pause Screen | Flag that indicates whether or not menu items are disabled. |
$7E0B4C | 2 bytes | Misc. | Screen X position of black curtain during player death scene; when it reaches $0400, it resets to $0000 and the Retry screen appears |
$7E0B55 | 2 bytes | Timer | Mosaic Timer, and one of the many "game frozen" flags: gets set to $10 when touching a fuzzy and counts down once per frame. Controls the mosaic effect (mirrors $7E095B) |
$7E0B67 | 2 bytes | Timer | Tileset animation frame Different usage per mode |
$7E0B6D | 2 bytes | Timer | Tileset animation timer, updates $7E0B67 |
$7E0B7D | 2 bytes | Timer | Idle frame counter; on >= $60 star counter is displayed |
$7E0B7F | 2 bytes | Misc. | Frame counter for how long to display the star counter (right after counter changes) |
$7E0B81 | 1 byte | Misc. | Star counter position: $00 = left side, $01 = right side |
$7E0B91 | 96 bytes | Sprite Number | 24 2-word entries, one sprite per: Word 1: Sprite ID for sprite to turn into when sprite state is $0006 Word 2: Unused Special Case: Goal Ring uses Word 1 and 2 as a timer |
$7E0C04 | 8 bytes | Sprite Number | Table of all current special sprites' ID's, 4 word-sized entries. $0000 is used as "none"; anything else is assumed to be an ID. Special sprite ID is a relative ID computed by: (sprite ID) - $01B9 |
$7E0C1C | 2 bytes | Misc. | Current autoscroll special sprite ID, 0 means no autoscroll active |
$7E0C1E | 2 bytes | Misc. | Flag: Autoscrolling currently active for camera X |
$7E0C20 | 2 bytes | Misc. | Flag: Autoscrolling currently active for camera Y (1-E and 6-8 flag this off) |
$7E0C22 | 4 bytes | Misc. | Current autoscroll camera X value |
$7E0C26 | 4 bytes | Misc. | Current autoscroll camera Y value |
$7E0C2A | 2 bytes | Misc. | Current autoscroll X velocity |
$7E0C2C | 2 bytes | Misc. | Current autoscroll Y velocity |
$7E0C2E | 2 bytes | Misc. | Current autoscroll checkpoint (index into autoscroller_values table) |
$7E0C30 | 2 bytes | Misc. | Next autoscroll checkpoint X value |
$7E0C32 | 2 bytes | Misc. | Next autoscroll checkpoint Y value |
$7E0C34 | 2 bytes | Misc. | Next autoscroll checkpoint speed value |
$7E0C36 | 2 bytes | Misc. | Autoscroll: next checkpoint X - current camera X (how much is left to go) |
$7E0C38 | 2 bytes | Misc. | Autoscroll: next checkpoint Y - current camera Y (how much is left to go) |
$7E0C3A | 2 bytes | Misc. | Flag: Currently active gusty generation |
$7E0C3C | 2 bytes | Misc. | Flag: Currently active Lakitu (at least 1) |
$7E0C3E | 2 bytes | Misc. | Flag: Currently active fuzzy generation |
$7E0C44 | 2 bytes | Misc. | Previous camera X value used by fuzzy generator |
$7E0C46 | 2 bytes | Misc. | Flag: Currently active Poochy |
$7E0C48 | 2 bytes | Misc. | Flag: Currently active bat generation |
$7E0C4A | 2 bytes | Misc. | Current generated bat count |
$7E0C4C | 2 bytes | Misc. | Flag: Currently active unknown special sprite |
$7E0C68 | 2 bytes | Misc. | Flag: Currently active Fire Lakitu (at least 1) |
$7E0C6A | 2 bytes | Misc. | Flag: Currently active Flutter generation |
$7E0C6E | 2 bytes | Misc. | Flag: Currently active Nipper Spore generation |
$7E0C70 | 2 bytes | Misc. | Flag: Currently active balloon with pokey ball generation |
$7E0C72 | 2 bytes | Misc. | Flag: Currently active balloon with missile generation |
$7E0C74 | 2 bytes | Misc. | Flag: Currently active balloon generation |
$7E0C76 | 2 bytes | Misc. | Flag: Currently active yellow platform generation |
$7E0C78 | 2 bytes | Misc. | Flag: Currently active Slime Drop generation |
$7E0C7C | 2 bytes | Misc. | Flag: Currently active unknown special sprite 3 |
$7E0C7E | 2 bytes | Misc. | Flag: Currently active unknown special sprite 4 |
$7E0C80 | 2 bytes | Player Physics | Tongue X position, relative to Yoshi |
$7E0C82 | 2 bytes | Player Physics | Tongue Y position, relative to Yoshi |
$7E0C98 | 24 bytes | Sprite Number | Sprite table, 24 entries, one byte per: A copy of all sprites' states ($700F00) during camera events. Used as flags to not despawn sprites during camera events (like stairs) |
$7E0CB0 | 2 bytes | Misc. | Camera Y offset from shaking (either large or small) |
$7E0CCC | 2 bytes | Timer | Damage recoil timer, disables left and right if not zero |
$7E0CCE | 2 bytes | Timer | Timer for unkown reason, it's set to #$10 when you bop an enemy |
$7E0CEC | 2 bytes | Timer | ! switch timer, starts off at $0280, counts down |
$7E0CF4 | 1 byte | Pause Screen | Current highlighted item slot in pause menu, can be only 1, 2 or 3 |
$7E0CF5 | 1 byte | Pause Screen | Current "page" of items in pause menu, value between 0 and 24 |
$7E0CF6 | 3 bytes | Pause Screen | Item id for each slot in the current "page" of items in pause menu |
$7E0CFD | 2 bytes | Misc. | Timer for offset-by-tile level modes Controls for example moving platforms in 6-4 |
$7E0CFF | 2 bytes | Misc. | Amplitude of fuzzy offset-per-tile sinewave |
$7E0D01 | 2 bytes | Misc. | Positional offset of fuzzy offset-per-tile sinewave |
$7E0D03 | 2 bytes | Timer | Current time value for fuzzy palette morphing effect |
$7E0D05 | 1 byte | Boss | Raphael Boss fight rotation value, $00 to $FF (whole loop) |
$7E0D09 | 2 bytes | Misc. | Background gradient Y scroll, lower part |
$7E0D0B | 2 bytes | Misc. | Background gradient Y scroll, upper part |
$7E0D0F | 1 byte | Misc. | Message box state: $00: no message box $01: init $03: black box growing (opening) $05: init message $07: message fading in (from black) $09: opened, player reading $0B: message fading out (to black) $0D: black box shrinking (closing) |
$7E0D19 | 2 bytes | Misc. | Message Box: size of transitional black square as it grows |
$7E0D21 | 6 bytes | Misc. | During stage clear transition/wipe, rectangle mask's screen coordinates: Word 1: left X (low byte), right X (high byte); Word 2: top Y Word 3: bottom Y |
$7E0D27 | 2 bytes | Misc. | Enable flag for subscreen designation HDMA?? (1-3 stage) ($7E5040) |
$7E0D2B | 2 bytes | Misc. | Enable flag for BG2 Horizontal Scroll HDMA ($7E5040) |
$7E0D2D | 2 bytes | Misc. | Enable flag for BG2 Vertical Scroll HDMA ($7E51E4) |
$7E0D37 | 2 bytes | Misc. | Background wave effect (fuzzy): amplitude of horizontal wave |
$7E0D39 | 2 bytes | Misc. | Background wave effect (fuzzy): amplitude of vertical wave |
$7E0D3B | 2 bytes | Misc. | Enable flag for BG3 Horizontal Scroll and subscreen designation HDMA (ch 6 & 7)?? (Pond submarine sections) ($7E552C) |
$7E0D3D | 2 bytes | Misc. | Enable flag for BG3 Horizontal Scroll HDMA ($7E51E4) |
$7E0D45 | 2 bytes | Misc. | Enable flag for BG3 Vertical Scroll HDMA ($7E5040) |
$7E0D4D | 1 byte | Misc. | Current screen ID being loaded/filled, during level loading (while setting $700CAA) |
$7E0D4E | 64 bytes | Misc. | Table that is filled by screen IDs in order from #$00 to #$3F, it has some purpose during level loading |
$7E0DAE | 2 bytes | Timer | Frame counter for holding up while on ground, used for Baby Mario's animation frame, increments by 2 when holding but then on release decays by halving each frame |
$7E0DB0 | 2 bytes | Timer | Frame counter for holding down while on ground, used for Baby Mario's animation frame, increments by 2 when holding but then on release decays by halving each frame |
$7E0DB2 | 2 bytes | Coordinate | Baby Mario's target Y position when taking hit, it will rise until reaches this coordinate, then it will randomly fly around |
$7E0E2F | 1 byte | Misc. | 4 Red Toadies: counter of how many have grabbed Baby Mario |
$7E0E31 | 1 byte | Misc. | 4 Red Toadies: counter of how many are currently active/spawned |
$7E0E33 | 1 byte | Misc. | 4 Red Toadies: Currently active (at least one) |
$7E0E37 | 16 bytes | Coordinate | 4 Red Toadies: Each Toadie's X positions (4 total) relative to the 4 Toadies base sprite, one toadie per entry: Byte 1: Subpixel Byte 2: Position Byte 3: Screen # Byte 4: Spillage from carry add for screen |
$7E0E49 | 16 bytes | Coordinate | 4 Red Toadies: Each Toadie's Y positions (4 total) relative to the 4 Toadies base sprite, one toadie per entry: Byte 1: Subpixel Byte 2: Position Byte 3: Screen # Byte 4: Spillage from carry add for screen |
$7E0FBD | 2 bytes | Timer | Mirror of $701974 (frame counter) only when Green spiked platform (sprites $15F) is active. |
$7E0FBF | 2 bytes | Timer | Mirror of $701974 (frame counter) only when Red spiked platform (sprite $160) is active. |
$7E105C | 1 byte | Boss | Raphael the Raven: Y coordinate (relative to moon surface) |
$7E105D | 1 byte | Boss | Raphael the Raven: X coordinate (relative to wrapping around moon) |
$7E105E | 2 bytes | Boss | Bigger Boo: scale Raphael the Raven $7E105E: how far Yoshi is from Raphael (X coordinate around moon) Raphael the Raven $7E105F: current AI state ($00 - $14) |
$7E1060 | 1 byte | Timer | Raphael the Raven: timer value - used to control timings of AI events. Decrements each frame, gets reset to either random values or specific values on state changes. |
$7E1062 | 1 byte | Boss |
Raphael the Raven: Facing - $00 for counterclockwise, $02 for clockwise; Baby Bowser: hit counter, fight ends when the low byte reaches $03 (or any value from $03 to $82). |
$7E1066 | 1 byte | Boss | Bigger Boo: flag for taking damage (growing) |
$7E1068 | 2 bytes | Boss | Big Bowser: Z coordinate (depth) |
$7E106C | 2 bytes | Boss | Big Bowser: horizontal position. Raphael the Raven: Y velocity |
$7E1070 | 2 bytes | Boss | Big Bowser: index for summoning boulders, increments by 2 each boulder, ending in $0008 in the first summon and $000E in the second. |
$7E1074 | 2 bytes | Boss | Big Bowser: flag indicating he is being hit by an egg right now, instantly clears |
$7E1076 | 2 bytes | Boss |
Hookbill: graphics scaling value (X axis) Bowser: damage counter, fight ends at $0007 |
$7E1078 | 2 bytes | Boss | Hookbill: graphics scaling value (Y axis) |
$7E1082 | 2 bytes | Boss | Naval Piranha: health, starts with #$0003, dies on #$0000 |
$7E10DA | 2 bytes | Player Physics | Debug flag for free Yoshi movement |
$7E10DE | 2 bytes | Misc. | Bonus Challenges: Subroutine pointer index (2 bytes) |
$7E10E0 | 2 bytes | Misc. | Bonus Challenges: Timer for some subroutines (2 bytes) Mini Battles: Background changing effect X position (2 bytes) |
$7E10E2 | 2 bytes | Misc. | Bonus Challenges: "BONUS CHALLENGE" lettering palette cycle (2 bytes) Mini Battles: Background changing effect phase (2 bytes) |
$7E10E4 | 2 bytes | Misc. | Bonus Challenges: "BONUS CHALLENGE" purple spiked panel palette cycle (2 bytes) Mini Battles: Timer to end the Mini Battle (2 bytes) |
$7E10E6 | 2 bytes | Misc. | Bonus Challenges: Bonus panel (BG1/BG2) Y subposition delta in last frame (2 bytes) Mini Battles: Flag for YOU LOSE scene? |
$7E10E8 | 2 bytes | Misc. | Bonus Challenges: Bonus panel (BG1/BG2) Y position delta in last frame (2 bytes) Gather Coins: Yoshi's coins (2 bytes) |
$7E10EA | 2 bytes | Misc. | Bonus Challenges: $10EA += $10E6 (2 bytes) Gather Coins: Bandit's coins (2 bytes) |
$7E10EC | 2 bytes | Misc. | Bonus Challenges: Bonus panel (BG1/BG2) bounce speed index (2 bytes) Gather Coins: Time, the game ends it reaches 00 (2 bytes) |
$7E10EE | 2 bytes | Misc. | Gather Coins: Timer to update the time, starts at 3F, decrementing every frame (2 bytes) |
$7E10F0 | 2 bytes | Misc. | Bonus Challenges: Yoshi state pointer index (00 = nothing, 02 = throwing egg, 04 = celebrating, 06 = losing, 08 = thinking, 0A = thinking) (2 bytes) |
$7E10F2 | 1 byte | Misc. | Flip Cards: Last slot selected, where the card will flip Watermelon Seed Spitting Contest: Flag for multiplayer mode |
$7E10F3 | 1 byte | Misc. | Flip Cards: Last card id revealed Match Cards: Last card id revealed |
$7E10F4 | 2 bytes | Misc. | Flip Cards: Card horizontal scale (flipping) (2 bytes) Match Cards: Card horizontal scale (flipping) (2 bytes) Popping Balloons: Flag to freeze Yoshi |
$7E10F5 | 1 byte | Misc. | Popping Balloons: Flag to freeze Bandit |
$7E10F6 | 1 byte | Misc. | Flip Cards: Target X position Scratch and Match: Cursor X position Drawing Lots: Cursor X position Match Cards: Target X position Roulette: Cursor/Target X position (unused) |
$7E10F7 | 1 byte | Misc. | Flip Cards: Target Y position Scratch and Match: Cursor Y position Drawing Lots: Cursor Y position Match Cards: Target Y position Roulette: Cursor/Target Y position (unused) |
$7E10F8 | 2 bytes | Misc. | Flip Cards: Target moving direction (00 = standing still, 01 = left, 02 = right, 03 = up, 04 = down) Match Cards: Target moving direction Watermelon Seed Spitting Contest: Bandit status pointer id? (2 bytes) Gather Coins: Result: 01 = YOU WIN, 02 = YOU LOSE |
$7E10F9 | 7 bytes | Misc. | Flip Cards: Items got (7 bytes) |
$7E10FA | 2 bytes | Misc. | Mini Battles: Flag for item taken (2 bytes) |
$7E10FC | 1 byte | Misc. | Watermelon Seed Spitting Contest: Timer to start winning fanfare Gather Coins: Timer to start winning fanfare |
$7E10FE | 2 bytes | Misc. | Throwing Balloons: Balloon Super FX horizontal stretch (2 bytes) Watermelon Seed Spitting Contest: Amount of available watermelons |
$7E1100 | 2 bytes | Misc. | Flip Cards: How many items got, indexes to writing the next slot at $10F9 Throwing Balloons: Balloon Super FX vertical stretch (2 bytes) Popping Balloons: Related to the solidity of the left moving platform Watermelon Seed Spitting Contest: Yoshi HP (2 bytes) |
$7E1102 | 2 bytes | Misc. | Flip Cards: Lives to be added if you win any Throwing Balloons: Balloon Super FX rotation (unused) (2 bytes) Popping Balloons: Related to the solidity of the right moving platform Watermelon Seed Spitting Contest: Bandit HP (2 bytes) |
$7E1104 | 8 bytes | Misc. | Flip Cards: Item slots (8 bytes) Drawing Lots: Item slots (6 bytes) Popping Balloons: Flag for "taking damage" (2 bytes) Watermelon Seed Spitting Contest: Type of melon Bandit has: 07 = green melon, 09 = red melon |
$7E1106 | 2 bytes | Misc. | World Map: world transition "switch flag". Changes between #$00 and #$01 each time you change the world Popping Balloons: X offset for Yoshi relative to Bandit (2 bytes) Watermelon Seed Spitting Contest: Bandit spits left count (2 bytes) |
$7E1107 | 1 byte | Misc. | World Map: world transition state as seen from the level board. Scrolls start closing when it reaches #$54 |
$7E1108 | 2 bytes | Misc. | Popping Balloons: X offset for aimed balloon relative to Bandit (2 bytes) Watermelon Seed Spitting Contest: Number of seeds/flames remaining to be spat in succession by Bandit (2 bytes) |
$7E1109 | 2 bytes | Misc. | World Map: Cursor current coordinate (2 bytes) |
$7E110A | 2 bytes | Misc. | Popping Balloons: X offset for aimed platform relative to Bandit (2 bytes) Watermelon Seed Spitting Contest: Flag for Bandit spitting (2 bytes) |
$7E110C | 2 bytes | Misc. | World Map: Cursor next coordinate to be reached (2 bytes) Popping Balloons: Y offset for Yoshi relative to Bandit (2 bytes) |
$7E110D | 1 byte | Misc. | Flip Cards: Target current column |
$7E110E | 2 bytes | Misc. | World Map: SuperFX rotation angle for level tile currently selected (2 bytes) Flip Cards: Target current row Popping Balloons: Y offset for aimed balloon relative to Bandit (2 bytes) |
$7E1110 | 2 bytes | Misc. | World Map: SuperFX scale for level tile currently being revealed or selected (2 bytes) Scratch and Match: Cursor local X subposition? while scratching Popping Balloons: Y offset for aimed platform relative to Bandit (2 bytes) |
$7E1111 | 1 byte | Misc. | Scratch and Match: Cursor local X position while scratching |
$7E1112 | 2 bytes | Misc. | World Map: Current level/option slot. Sets the level index ($7E021A) if you select one Scratch and Match: Cursor local Y subposition? while scratching Popping Balloons: X absolute offset for Yoshi relative to Bandit (2 bytes) |
$7E1113 | 1 byte | Misc. | World Map: Timer for each animation frame of the sparkle when the player select a level Scratch and Match: Cursor local Y position while scratching |
$7E1114 | 2 bytes | Misc. | World Map: Current animation frame of the sparkle when the player select a level Scratch and Match: Current slot Drawing Lots: Current slot Popping Balloons: X absolute offset for aimed balloon relative to Bandit (2 bytes) |
$7E1115 | 7 bytes | Misc. | Scratch and Match: Item slots (00 = Toadie, 03 = Baby Mario) (7 bytes) Drawing Lots: Item indexes (6 bytes) |
$7E1116 | 2 bytes | Misc. | Popping Balloons: X absolute offset for aimed platform relative to Bandit (2 bytes) |
$7E1117 | 1 byte | Misc. | World Map: Current world hovered over * 2. Sets the world number ($7E0218) when the player select |
$7E1118 | 2 bytes | Misc. | World Map: State of world map functions, like world transitions, score display, controller config, etc. Used as index to world map action pointers ($17C813) Popping Balloons: Y absolute offset for Yoshi relative to Bandit (2 bytes) |
$7E111A | 2 bytes | Misc. | Popping Balloons: Y absolute offset for aimed balloon relative to Bandit (2 bytes) |
$7E111C | 2 bytes | Misc. | World Map: Frame counter for how long the player is holding left or right. Once hits #$0F the cursor starts changing faster between levels Scratch and Match: Current scratch phase Drawing Lots: Card opening phase (2 bytes) Popping Balloons: Y absolute offset for aimed platform relative to Bandit (2 bytes) |
$7E111D | 1 byte | Misc. | Scratch and Match: Number of boxes scratched |
$7E111E | 7 bytes | Misc. | Scratch and Match: Scratched flag slots (7 bytes) Popping Balloons: Aimed "Yoshi sprite slot"?? Always 00 |
$7E1120 | 1 byte | Misc. | Popping Balloons: Aimed balloon sprite slot *4 |
$7E1122 | 1 byte | Misc. | Popping Balloons: Aimed moving platform sprite slot *4 |
$7E1124 | 2 bytes | Misc. | Popping Balloons: X offset for current Bandit aiming (2 bytes) |
$7E1125 | 2 bytes | Misc. | Current Yoshi formation in world map. Values follow world number ($7E0218) format (2 bytes) Scratch and Match: Score, or amount of Baby Marios gotten |
$7E1126 | 2 bytes | Misc. | Slot Machine: Tumbler #00 item #00 Popping Balloons: Y offset for current Bandit aiming (2 bytes) |
$7E1127 | 1 byte | Misc. | Slot Machine: Tumbler #00 item #01 |
$7E1128 | 2 bytes | Misc. | Slot Machine: Tumbler #00 item #02 Popping Balloons: X absolute offset for current Bandit aiming (2 bytes) |
$7E1129 | 1 byte | Misc. | Slot Machine: Tumbler #00 item #03 |
$7E112A | 2 bytes | Misc. | Slot Machine: Tumbler #01 item #00 Popping Balloons: Y absolute offset for current Bandit aiming (2 bytes) |
$7E112B | 1 byte | Misc. | Slot Machine: Tumbler #01 item #01 |
$7E112C | 1 byte | Misc. | Slot Machine: Tumbler #01 item #02 Popping Balloons: Sprite slot *4 for current Banding aiming |
$7E112D | 1 byte | Misc. | Slot Machine: Tumbler #01 item #03 |
$7E112E | 2 bytes | Misc. | World Map: Current Yoshi selected (which one Baby Mario is mounted), changes when you move between normal levels, not special, bonus, nor options (2 bytes) Slot Machine: Tumbler #02 item #00 Popping Balloons: Bandit sprite slot *4 |
$7E112F | 1 byte | Misc. | Slot Machine: Tumbler #02 item #01 |
$7E1130 | 2 bytes | Misc. | Slot Machine: Tumbler #02 item #02 Popping Balloons: Balloons popped (2 bytes) |
$7E1131 | 1 byte | Misc. | Slot Machine: Tumbler #02 item #03 |
$7E1132 | 1 byte | Misc. | Slot Machine: Tumbler #00 items "rotation" subposition Popping Balloons: Default Super FX rotation for the balloons (always 00) |
$7E1133 | 1 byte | Misc. | Slot Machine: Tumbler #00 items "rotation" position |
$7E1134 | 2 bytes | Misc. | Slot Machine: Tumbler #01 items "rotation" subposition Popping Balloons: Super FX horizontal stretch for the balloons (2 bytes) |
$7E1135 | 1 byte | Misc. | Slot Machine: Tumbler #01 items "rotation" position |
$7E1136 | 2 bytes | Misc. | Slot Machine: Tumbler #02 items "rotation" subposition Throwing Balloons: Balloon enabled/disabled when popping Popping Balloons: Super FX vertical stretch for the balloons (2 bytes) |
$7E1137 | 1 byte | Misc. | Slot Machine: Tumbler #02 items "rotation" position |
$7E1138 | 1 byte | Misc. | Slot Machine: Tumbler #00 "rotation" subspeed |
$7E1139 | 1 byte | Misc. | Slot Machine: Tumbler #00 "rotation" speed |
$7E113A | 2 bytes | Misc. | Slot Machine: Tumbler #01 "rotation" subspeed Popping Balloons: Something related to Super FX animation (2 bytes) |
$7E113B | 1 byte | Misc. | Slot Machine: Tumbler #01 "rotation" speed |
$7E113C | 1 byte | Misc. | Slot Machine: Tumbler #02 "rotation" subspeed |
$7E113D | 1 byte | Misc. | Slot Machine: Tumbler #02 "rotation" speed |
$7E113E | 2 bytes | Misc. | Slot Machine: Tumbler #00 selected slot Popping Balloons: Bandit X position (2 bytes) |
$7E113F | 1 byte | Misc. | Slot Machine: Tumbler #01 selected slot |
$7E1140 | 2 bytes | Misc. | Slot Machine: Tumbler #02 selected slot Popping Balloons: Bandit Y position (2 bytes) |
$7E1141 | 1 byte | Misc. | Slot Machine: Current tumbler |
$7E1142 | 2 bytes | Misc. | World Map: scrolls closing/opening state in transitions, goes up to #$001F (2 bytes) Slot Machine: Tumbler #00 deceleration phase Popping Balloons: Yoshi X position (2 bytes) |
$7E1143 | 1 byte | Misc. | Slot Machine: Tumbler #01 deceleration phase |
$7E1144 | 2 bytes | Misc. | World Map: left scroll position Slot Machine: Tumbler #02 deceleration phase Throwing Balloons: Yoshi animation timer Popping Balloons: Yoshi Y position (2 bytes) |
$7E1145 | 1 byte | Misc. | World Map: right scroll position Slot Machine: ?? Some frame counter after tumbler #00 is selected |
$7E1146 | 1 byte | Misc. | Slot Machine: ?? Some frame counter after tumbler #01 is selected Throwing Balloons: Bandit animation timer |
$7E1147 | 1 byte | Misc. | Slot Machine: ?? Some frame counter after tumbler #02 is selected |
$7E1148 | 2 bytes | Misc. | Flip Cards: Shots done, you get the max prize if you reach 7 without getting Kamek Scratch and Match: Lives to be added if you win any (2 bytes) Match Cards: Amount of correct pairs (2 bytes) Roulette: Lives to be added if you win any Slot Machine: Lives to be added if you win any |
$7E114A | 1 byte | Misc. | Slot Machine: Tumbler #00 selected flag |
$7E114B | 1 byte | Misc. | Slot Machine: Tumbler #01 selected flag |
$7E114C | 1 byte | Misc. | Slot Machine: Tumbler #02 selected flag Throwing Balloons: Loser stars animation timer |
$7E114E | 2 bytes | Misc. | Match Cards: Lives to be added if you win (2 bytes) Slot Machine: Tumbler #00 separators "rotation" subposition |
$7E114F | 1 byte | Misc. | Slot Machine: Tumbler #00 separators "rotation" position |
$7E1150 | 1 byte | Misc. | Slot Machine: Tumbler #01 separators "rotation" subposition |
$7E1151 | 1 byte | Misc. | Slot Machine: Tumbler #01 separators "rotation" position |
$7E1152 | 1 byte | Misc. | Slot Machine: Tumbler #02 separators "rotation" subposition |
$7E1153 | 1 byte | Misc. | Slot Machine: Tumbler #02 separators "rotation" position |
$7E1154 | 1 byte | Misc. | Match Cards: Current slot. Also is used during the card show off, to go through all the cards Throwing Balloons: Yoshi animation frame |
$7E1155 | 1 byte | Misc. | Match Cards: When moving the cursor up or down, it tells if the cursor should go to diagonal left (FF), straight (00), or diagonal right (01) |
$7E1156 | 14 bytes | Misc. | Match Cards: Item slots (14 bytes) Throwing Balloons: Bandit animation frame (2 bytes) |
$7E115C | 1 byte | Misc. | Throwing Balloons: Loser stars animation frame |
$7E1164 | 2 bytes | Misc. | Match Cards: Cards flipped in current attempt Throwing Balloons: Balloon size, increases 1 unit per 4 frames, it pops when reaches #$01FF (2 bytes) |
$7E1165 | 1 byte | Misc. | Roulette: Roulette status (00 = not started, 01 = spinning, 02 = calculating, 03 = giving lives) |
$7E1166 | 1 byte | Misc. | Roulette: Current slot of the left roulette Throwing Balloons: Timer for Bandit finishing its inputs |
$7E1167 | 1 byte | Misc. | Roulette: Current slot of the right roulette |
$7E1168 | 2 bytes | Misc. | Roulette: Counter step of the left roulette (00 = super fast, 01 = super slow, FF = super fast) Throwing Balloons: Frame counter for balloon deformation phase (2 bytes) |
$7E1169 | 1 byte | Misc. | Roulette: Counter step of the right roulette |
$7E116A | 1 byte | Misc. | Roulette: Counter to advance slot for the left roulette Throwing Balloons: Balloon deformation phase |
$7E116B | 1 byte | Misc. | Roulette: Counter to advance slot for the right roulette |
$7E116C | 2 bytes | Misc. | Roulette: Current slot (graphically) of the left roulette? Throwing Balloons: Input timer, starts at #$B4, decrementing every frame (2 bytes) |
$7E116D | 1 byte | Misc. | Roulette: Current slot (graphically) of the right roulette? |
$7E116E | 2 bytes | Misc. | Roulette: Timer for picking the definitive slot for the left roulette Throwing Balloons: Amount of correct inputs, for both Yoshi and Bandit (2 bytes) |
$7E116F | 1 byte | Misc. | Roulette: Timer for picking the definitive slot for the right roulette |
$7E1170 | 2 bytes | Misc. | Throwing Balloons: Amount of inputs -1 for this mode (2 bytes) |
$7E1172 | 2 bytes | Misc. | Throwing Balloons: Timer for Bandit's input #0 (2 bytes) |
$7E1174 | 2 bytes | Misc. | Throwing Balloons: Timer for Bandit's input #1 (2 bytes) |
$7E1176 | 2 bytes | Misc. | Throwing Balloons: Timer for Bandit's input #2 (2 bytes) |
$7E1178 | 2 bytes | Misc. | Roulette: Lives bet, it's the first number of the expression Throwing Balloons: Timer for Bandit's input #3 (2 bytes) |
$7E1179 | 1 byte | Misc. | Roulette: Result ones digit |
$7E117A | 2 bytes | Misc. | Roulette: Result tens digit Throwing Balloons: Timer for Bandit's input #4 (2 bytes) |
$7E117B | 1 byte | Misc. | Roulette: Result hundreds digit |
$7E117C | 2 bytes | Misc. | Roulette: Result (2 bytes) Throwing Balloons: Timer for Bandit's input #5 (2 bytes) |
$7E117E | 2 bytes | Misc. | Throwing Balloons: Input #0 graphics id (00 = right, 12 = left, 24 = down, 36 = up, 48 = B, 5A = Y, 6C = A, 7E = X) (2 bytes) |
$7E117F | 1 byte | Misc. | Roulette: Flag for result fanfare |
$7E1180 | 2 bytes | Misc. | Roulette: Timer before result fanfare Throwing Balloons: Input #1 graphics id (2 bytes) |
$7E1182 | 2 bytes | Misc. | Throwing Balloons: Input #2 graphics id (2 bytes) |
$7E1183 | 1 byte | Misc. | Roulette: Flag for pressed to stop roulette |
$7E1184 | 2 bytes | Misc. | Match Cards: Amount of mistakes, if reaches 02 the bonus ends (2 bytes) Throwing Balloons: Input #3 graphics id (2 bytes) |
$7E1186 | 2 bytes | Misc. | Throwing Balloons: Input #4 graphics id (2 bytes) |
$7E1188 | 2 bytes | Misc. | Throwing Balloons: Input #5 graphics id (2 bytes) |
$7E118A | 2 bytes | Misc. | Slot Machine: Timer to star giving lives (2 bytes) Throwing Balloons: Timer for wrong input (2 bytes) |
$7E118E | 2 bytes | Misc. | Flip Cards: Related to 10up card flipping (2 bytes) Throwing Balloons: Amount of "subframes" for the timer bar to advance 1 unit graphically |
$7E118F | 1 byte | Misc. | Throwing Balloons: Amount of frames for the timer bar to advance 1 unit graphically |
$7E1190 | 2 bytes | Misc. | Flip Cards: Related to 10up card flipping (2 bytes) |
$7E1192 | 2 bytes | Misc. | Match Cards: Card revealed by the first egg, following the IDs from $1156. Also ID of current hiding card during card show off Throwing Balloons: Input timer, graphically (2 bytes) |
$7E1193 | 1 byte | Misc. | Match Cards: ID of next hiding card during card show off |
$7E1194 | 1 byte | Misc. | Match Cards: Card revealed by the first egg, following the IDs from $1156 Throwing Balloons: Offset for current controller, #00 = player 1, #04 = player 2 |
$7E1196 | 1 byte | Misc. | Match Cards: Slot hit by the first egg. Also is used during the card show off, indicating which slot is being hidden |
$7E1198 | 1 byte | Misc. | Match Cards: Slot hit by the second egg |
$7E11B6 | 2 bytes | Timer | Beginning story cutscene: Number of frames left (counts down) to display current text before fading out |
$7E11B8 | 2 bytes | Misc. | Beginning story cutscene state: $01 = load next text (into fade in) $02 = fade in text $03 = display text (normal) $04 = load next text (into scroll) $05 = scroll down to next text part $06 = fade out text |
$7E11BA | 2 bytes | Misc. | Beginning story cutscene: Current text (index by 2's into $0FCD56) |
$7E11BC | 2 bytes | Misc. | Beginning story cutscene: BG4 tilemap VRAM destination (for DMA of text) |
$7E11BE | 576 bytes | Layer 4 Tilemap | Beginning story cutscene: All possible BG4 tilemap data (text), split into 64-byte chunks which are loaded into VRAM as new text comes in |
$7E13FE | 1 byte | Misc. | Beginning story cutscene: Current Y scroll destination (index by 2's into $0FCE90) |
$7E1404 | 1 byte | Misc. | Beginning story cutscene: Frame timing for current scene/text shown (index into cutscene timer table $0FCEDB) |
$7E1405 | 2 bytes | Timer | Frame timer (counts down) for beginning story cutscene and rotating island; upon 0, it will fade into the other one (endlessly switching until you load file select menu) |
$7E1409 | 1488 bytes | Empty | Unused RAM, cleared (with $00) via DMA during reset as well as before and after Nintendo logo NOTE: There's a bug in level loading of Burts Boss room (only room?) where it will do an unintentional read of $7E15A5 (word sized) and use it as a tile. But it's never written to. |
$7E1E00 | 832 bytes | Empty | Unused RAM, cleared (with $00) via DMA during reset as well as before and after Nintendo logo |
$7E2340 | 7360 bytes | Empty | Unused RAM, cleared (with $00) via DMA during reset as well as before and after Nintendo logo |
$7E4000 | 2 bytes | Misc. Tilemap | Bytes until next free entry in tilemap DMA queue |
$7E4002 | 2046 bytes | Misc. Tilemap | Reserved area for VRAM tilemap DMA queue, processed every frame, split into variable-sized entries, let e = one entry: e[0:1]: xvvv vvvv vvvv vvvv x = End of queue marker v = VRAM destination/source address e[2:3]: vidt tttt tttt tttt t = transfer size - 1 (can also act as entry size) v = column transfer (32 byte increase if set, otherwise 1) i = Does a fixed transfer if set (init data) d = Direction, does a read of VRAM if set (otherwise write) if d == 1 (Read Tilemap): Read from VRAM address and write to destination e[4:6]: Long Destination address to write to if d == 0 and i == 0 (Write Tilemap): Write to VRAM address using data from entry e[4:t]: Data to DMA, size same as t if d == 0 and i == 1 (Init Tilemap): Write to VRAM address floodfill using data from entry e[4:5]: Word data to repeat t times (Queue size doesn't go beyond 182 bytes in vanilla game so roughly 1864 bytes of this are "free") |
$7E4800 | 2 bytes | Pointer | Address of last entry in general-purpose DMA queue ($7E4802) |
$7E4802 | 2110 bytes | Misc. | Reserved area for general-purpose DMA queue, split into 12-byte entries, let e = one entry: e[0:1]: VRAM destination address e[2]: video port control e[3]: DMA control e[4]: DMA destination register e[5:7]: long source address e[8:9]: DMA size e[A:B]: address of next entry in queue (Doesn't go beyond $4999 in vanilla gameplay, so roughly 1700 bytes of this are "free") |
$7E5040 | 420 bytes | Misc. | HDMA Table for BG3 Vertical scroll (register $2112), OR when OPT is enabled, writes to BG2 Horizontal scroll (register $210F) instead: 1 word entries from top of actual screen to bottom (minus black bars), representing each scanline |
$7E51E4 | 420 bytes | Misc. | HDMA Table for BG3 Horizontal scroll (register $2111), OR when OPT is enabled, writes to BG2 Vertical scroll (register $2110) instead: 1 word entries from top of actual screen to bottom (minus black bars), representing each scanline |
$7E56D0 | 840 bytes | Misc. | HDMA Table for Window 1 & 2 ($2126-$2129) 4 bytes per entry, from top of actual screen to bottom (minus black bars), representing each scanline: Byte 1: Window 1 Left Position Byte 2: Window 1 Right Position Byte 3: Window 2 Left Position Byte 4: Window 2 Right Position |
$7E5A18 | 128 bytes | Misc. | HDMA Indirect Table 0, native SNES HDMA Indirect format, 3-byte entries: Byte: rccccccc r = repeat, c = scanline count Word: Source pointer |
$7E5A98 | 128 bytes | Misc. | HDMA Indirect Table 1 ($7E5A18 format) |
$7E5B18 | 128 bytes | Misc. | HDMA Indirect Table 2 ($7E5A18 format) |
$7E5B98 | 128 bytes | Misc. | HDMA Indirect Table 3 ($7E5A18 format) Default for Channel 4 (BG3 V-scroll (BG2 for OPT)) |
$7E5C18 | 128 bytes | Misc. | HDMA Indirect Table 4 ($7E5A18 format) Commonly used for Channel 3 (BG3 H-scroll (BG2 for OPT)) |
$7E5C98 | 128 bytes | Misc. | HDMA Indirect Table 5 ($7E5A18 format) Commonly used for Channel 2 (green & red channel of background gradient) |
$7E5D18 | 128 bytes | Misc. | HDMA Indirect Table 6 ($7E5A18 format) Commonly used for Channel 1 (blue channel of background gradient) |
$7E5D98 | 2 bytes | Misc. | Number of bytes Yoshi's in-between level egg inventory items take up (# of items * 2) |
$7E5D9A | 12 bytes | Misc. | Egg inventory items stored in between levels (not current eggs), 6 words, each one is a sprite ID |
$7E5DA6 | 2048 bytes | Misc. |
Cross sections: Full copy of cross section BG3 tile graphics, set only once upon loading cross section levels and then every frame stored to $706800. Chomp Shark: BG3 tilemap animations (in what format?). |
$7E65A6 | 2048 bytes | Layer 1 Tilemap | BG1 left tilemap mirror used for cross section graphical masking effect (free RAM if not using cross section BG3 header $0A) |
$7E6DA6 | 1024 bytes | Layer 1 Tilemap | BG1 right tilemap mirror used for cross section graphical masking effect (free RAM if not using cross section BG3 header $0A) |
$7E71A6 | 1024 bytes | Layer 1 Tilemap | Overlap between $7E6DA6 and $7E75A6, both tilemaps are actually 2048 bytes and this acts as either one depending on when (free RAM if not using cross section BG3 header $0A) |
$7E75A6 | 1024 bytes | Layer 3 Tilemap | BG3 tilemap mirror (VRAM $3400) used for cross sections (free RAM if not using cross section BG3 header $0A) |
$7EB8E2 | 1822 bytes | Empty | Unused RAM, cleared (with $00) via DMA during reset as well as before and after Nintendo logo |
$7EC000 | 16384 bytes | ASM | Copy of $00C000-$00FFFF (Code is never executed with the data bank as $00 for this range; it's always $7E) |
$7F0000 | 22238 bytes | Empty | Unused RAM, cleared (with $00) via DMA during reset as well as before and after Nintendo logo |
$7F56DE | 438 bytes | Object Palette | Blue channel of background gradient ($2132 COLDATA) Covers entire sublevel (NOT just screen) from top to bottom, one byte per entry, representing every eighth X pixel row in sublevel |
$7F5894 | 876 bytes | Object Palette | Green & Red channel of background gradient ($2132 COLDATA) Covers entire sublevel (NOT just screen) from top to bottom, two bytes per entry, representing every eighth X pixel row in sublevel: Byte 1: Green Channel Byte 2: Red channel |
$7F7E00 | 512 bytes | Level Data | All screen exit data for current level, in screen region order ($00-$7F), 4 bytes per exit: LLLLLLLL XXXXXXXX YYYYYYYY EEEEEEEE L = Destination Level (between 00 and DD) X = Destination X-Coordinate Y = Destination Y-Coordinate E = Destination Entrance Type (this follows the same format as $7000AC, Yoshi state) |
$7F8000 | 32768 bytes | Layer 1 Tilemap | Table that holds all foreground MAP16 tile data for the entire sublevel currently loaded. Split up by screen ID's then further into row-major tile #. Data is word-sized MAP16 indices. |