YI Memory Map
Displaying 150 out of 305 addresses.
View: moderated | waiting (23)
RAM Address | Length | Type | Description | Details |
---|---|---|---|---|
$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 (capacity 7) | |
$7E0059 | 16 bytes | Sound Effect | Sound effect queue, NOT all sounds currently playing, but instead all sound ID's (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. You can find the list of valid values here. | |
$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 & Bandit Games |
|
$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/Bandit Games |
|
$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 | |
$7E012F | 1 byte | Debug | (Used by debug routine at $0080F8) Frame advance flag: #$00 = disable frame advance, #$01 = enable frame advance | |
$7E0130 | 1 byte | Debug | (Used by debug routine at $0080F8) Frame advance timer: When L or R is pressed on Controller 2 and frame advance flag at $012F is set, skips game mode code and decrements once per frame until it reaches 0, then next frame runs game mode code for one frame. Cleared when frame advance flag is set and neither L nor R is pressed on Controller 2. |
|
$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 game 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 | 72 bytes | Map | Available tiles on map screen, one byte per level tile: $00: unavailable $01: beaten $80: current (grayed out) |
|
$7E026A | 78 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) | |
$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 | |
$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) | |