YI Memory Map
Displaying 50 out of 305 addresses.
View: moderated | waiting (27)
RAM Address | Length | Type | Description | Details |
---|---|---|---|---|
$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 | |
$7E1109 | 1 byte | Coordinate | World Map: Cursor X-position | |
$7E110A | 1 byte | Coordinate | World Map: Cursor Y-position | |
$7E110C | 1 byte | Coordinate | World Map: Cursor next X-position to be reached | |
$7E110D | 1 byte | Coordinate | World Map: Cursor next Y-position to be reached | |
$7E1112 | 1 byte | Level Number | World Map: current level/option slot. Sets the level index ($7E021A) if you select one. | |
$7E1117 | 1 byte | Map | World Map: Current World selected * 2. Sets the world number ($7E0218). | |
$7E1125 | 2 bytes | Map | Current Yoshi formation in world map. Values follow world number ($7E0218) format. | |
$7E112E | 2 bytes | Map | World Map: Current Yoshi selected (which one Baby Mario is mounted), changes when you move between normal levels, not special, bonus, nor options. | |
$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 | 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 (format) | |
$7E5B18 | 128 bytes | Misc. | HDMA Indirect Table 2 (format) | |
$7E5B98 | 128 bytes | Misc. | HDMA Indirect Table 3 (format) Default for Channel 4 (BG3 V-scroll (BG2 for OPT)) |
|
$7E5C18 | 128 bytes | Misc. | HDMA Indirect Table 4 (format) Commonly used for Channel 3 (BG3 H-scroll (BG2 for OPT)) |
|
$7E5C98 | 128 bytes | Misc. | HDMA Indirect Table 5 (format) Commonly used for Channel 2 (green & red channel of background gradient) |
|
$7E5D18 | 128 bytes | Misc. | HDMA Indirect Table 6 (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 |
|
$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) | |