Repository navigation
Ram Map
Secret of Evermore utilizes 128 KB of SNES Work RAM (Bank $7E and $7F). This document summarizes mapped addresses; use the repository memory map as the maintained reference and treat unmapped or conflicting fields as unresolved.
| Range | Persistence | Function |
|---|---|---|
$7E:0000–$7E:01FF
|
Transient | SNES Direct Page, input buffers, frame counters. |
$7E:0300–$7E:0FFF
|
Transient | Active entity lists, ring menu buffers, player & dog battle stats. |
$7E:2258–$7E:24FF
|
Save-related data | Address coverage and persistence should be checked field-by-field. |
$7E:2834 |
Persistent SRAM | Do not use as temporary scratch; adjacent address boundaries and meanings require per-field verification. |
$7E:2C00 onward |
Unverified | Script-slot range, layout, and total slot count are not established here. |
Unverified: The persistence and use of addresses adjacent to
$2834, and the boundaries of any surrounding region, are not established for every address. Older references that classify$2834as room-local scratch conflict with its verified persistent-SRAM mapping.
-
$2258: Chapter 1 / Prehistoria initial story flags and intro cutscene status. -
$235F/$2360: Unlocked weapon bitmask:- Bit 0: Bone Club
- Bit 1: Spider's Claw
- Bit 2: Horn Spear
- Bit 3: Bone Crusher (Bone Axe)
- Bit 4: Bronze Axe
- Bit 5: Knight Basher
-
$23D0–$23EF: Unlocked alchemy formula flags and formula levels. -
$2400–$243F: Ingredient inventory counts (Wax, Ash, Oil, Root, Clay, etc.).
Unverified: No general-purpose scratch range or room-change clearing behavior is established by the sources checked for this page.
$2834is persistent SRAM and must not be used as temporary state.
| Emoji | Category | Examples |
|---|---|---|
| 📖 | Story flags | plot progress, quest triggers |
| 🌿 | Ingredients | wax, ash, roots, clay |
| 🧪 | Consumables | petals, nectar, biscuits |
| 💎 | Rare/key items | wheel, diamond eyes, keys |
| ⚔️ | Weapons | sword, spear, bazooka |
| 🛡️ | Armor | armor, helmet |
| 🏺 | Trading goods | rice, spice, beads, perfume |
| 💰 | Currency | talons, jewels, gold coins |
| ⚗️ | Alchemy spells | hard ball, crush, heal, call beads |
| 🫙 | Gourds/chests | gourd, chest |
| 👃 | Sniff spots | scent flags |
| 🧑 | Protagonist/boy | boy |
| 🐶 | Protagonist/dog | dog |
| ⚙️ | System/engine | engine, core system flags |
| 🎥 | System/camera | camera position, scroll |
| 🎵 | System/music | music, sound, sfx |
| 🎁 | Loot | loot item, loot amount, loot object |
Unverified: This table is a partial index, not a complete address-by-address map of all WRAM.
| Address | Name | Type | Notes |
|---|---|---|---|
| 0x0000 | ⚙️ DIRECT_PAGE_BLOCK | Byte×256 | Continuous 256-byte SNES Direct Page scratchpad ($7E:0000..$7E:00FF, CPU D=0x0000) containing math registers, camera coords, metasprite ptrs, VM registers, and loop counters. |
| 0x0002 | ⚙️ DP_SCRATCH_02 | Word | Direct Page 16-bit math scratchpad; actor anchor screen X coordinate in sprite compositor (func_C09040); units digit in decimal conversion (func_C0870C); destination write pointer in LZSS decompression (method_0x03). |
| 0x0003 | ⚙️ DP_DECIMAL_DIGIT_TENS | Byte | Tens digit in decimal ASCII conversion (func_C0870C); high byte of DP_SCRATCH_02. |
| 0x0004 | ⚙️ DP_SCRATCH_04 | Word | Direct Page 16-bit math scratchpad; actor anchor screen Y coordinate in sprite compositor (func_C09040); hundreds digit in decimal conversion (func_C0870C). |
| 0x0005 | ⚙️ DP_DECIMAL_DIGIT_THOUSANDS | Byte | Thousands digit in decimal ASCII conversion (func_C0870C); high byte of DP_SCRATCH_04. |
| 0x0006 | ⚙️ DP_SPRITE_PALETTE_BASE | Word | Sprite attribute base flags / palette base in compositor (func_C09040); Markov grid row buffer start offset in map decompression (method_0x07). |
| 0x0007 | ⚙️ DP_SPRITE_FLAGS | Byte | Sprite attribute modifier flags in compositor (bit 0 checked/cleared; horizontal flip, vertical flip, priority); end sentinel $FF in decimal conversion buffer (func_C0870C). |
| 0x0008 | ⚙️ DP_LZSS_WINDOW_CURSOR | Word | LZSS decompressor 4KB sliding ring buffer write cursor (initialized to $A000 in $7F:A000..$7F:AFFF). |
| 0x000a | ⚙️ DP_LZSS_FLAG_BIT_INDEX | Word | LZSS decompressor current flag bit position / shift counter (0..7); Markov grid column loop index. |
| 0x000c | ⚙️ DP_LZSS_WINDOW_WRAP_LIMIT | Word | LZSS decompressor ring buffer wrap threshold ($A000 + $1000 = $B000); Markov grid row wrap threshold. |
| 0x000e | ⚙️ DP_LZSS_FLAG_MASK | Word | LZSS decompressor active bitmask (tbl_CC9A46,x); Markov grid row width stride. |
| 0x0010 | ⚙️ DP_MARKOV_BIT_MULTIPLIER | Word | Markov grid 2D bit shift multiplier (0x0001 left-shifted). |
| 0x0012 | ⚙️ DP_SPRITE_SLICE_SCREEN_X | Word | Sprite slice computed on-screen X position ($02 + slice_dx) with viewport clipping in func_C09040; high byte of LZSS match offset; DMA transfer byte count latch. |
| 0x0014 | ⚙️ DP_SPRITE_SLICE_SCREEN_Y | Word | Sprite slice computed on-screen Y position ($04 + slice_dy) with viewport clipping in func_C09040; Markov grid accumulator. |
| 0x0016 | ⚙️ DP_SPRITE_OAM_SLICE_X | Word | Final clamped on-screen X position written to Low OAM ($7E:ABDE,x); delta X scratchpad in entity facing routine (func_CF9DBD). |
| 0x0017 | ⚙️ DP_SPRITE_OAM_SLICE_X_HIGH | Byte | High bit (9th bit) of sprite slice X coordinate, latched into High OAM bitmask. |
| 0x0018 | ⚙️ DP_SPRITE_OAM_SLICE_Y | Word | Final clamped on-screen Y position written to Low OAM ($7E:ABDF,x). |
| 0x0026 | ⚙️ DP_SPRITE_DESCRIPTOR_PTR | Far Pointer | 24-bit pointer ($26..$28) to active sprite slice descriptor table; source memory far pointer in VRAM/CGRAM DMA queues. |
| 0x002a | ⚙️ DP_SCRATCH_2A | Word | Direct page general calculation scratch word; used in math routines and coordinate shifts. |
| 0x002e | ⚙️ DP_DMA_DEST_ADDR | Word | Destination hardware word address for queued VRAM ($2116) or CGRAM ($2121) DMA transfers. |
| 0x0034 | ⚙️ DP_DECOMP_PAYLOAD_SIZE | Word | Uncompressed payload size in bytes passed to decompression dispatcher ($8C:988D). |
| 0x0036 | ⚙️ DP_DECOMP_SRC_FAR_PTR | Far Pointer | 24-bit pointer ($36..$38) to compressed source data stream. |
| 0x003a | ⚙️ DP_DECOMP_DST_FAR_PTR | Far Pointer | 24-bit pointer ($3A..$3C) to uncompressed destination memory buffer. |
| 0x0059 | ⚙️ CAMERA_FINAL_X | Word | Final shaken camera horizontal scroll coordinate in pixels (written to PPU BG1HOFS). |
| 0x005b | ⚙️ CAMERA_FINAL_Y | Word | Final shaken camera vertical scroll coordinate in pixels (written to PPU BG1VOFS). |
| 0x0070 | ⚙️ DP_SCRATCH_70 | Word | Direct page scratch pointer; used by decompression and script string decoders. |
| 0x0072 | ⚙️ HDMA_ENABLE_MASK | Byte | Restored into $420C by NMI handler at scanline 225 to enable Mode 7 perspective or HDMA color gradients. |
| 0x007e | ⚙️ SCRIPT_CURRENT_THREAD_PTR | Word | Pointer to currently executing ScriptSlot in active script VM thread queue ($7E:28FC..$7E:2F28). |
| 0x0080 | ⚙️ SCRIPT_CALL_STACK_PTR | Word | Call stack pointer for nested script subroutines (gosub). |
| 0x0082 | ⚙️ SCRIPT_PC_FAR_PTR | Far Pointer | Active 24-bit instruction pointer ($82..$84) consumed by script_vm_opcode_dispatch ($8C:D09C). |
| 0x0086 | ⚙️ SCRIPT_VM_FREEZE_GATE | Byte | Global script thread execution freeze flag (non-zero pauses script VM processing). |
| 0x009f | ⚙️ AUDIO_APU_SYNC_COUNTER | Byte | Audio Engine: Handshake sequence synchronization counter byte verified against APU port $2142 ($8C:81E4). |
| 0x00bf | ⚙️ CAMERA_BASE_X | Word | Base room viewport top-left world X coordinate before screen shake displacement. |
| 0x00c1 | ⚙️ CAMERA_BASE_Y | Word | Base room viewport top-left world Y coordinate before screen shake displacement. |
| 0x00c3 | ⚙️ SCREEN_SHAKING | Word [SRAM] | Game script variable: SCREEN SHAKING |
| 0x00c5 | 🎥 SHAKE_OFFSET_X | Word | Horizontal camera displacement offset applied during active screen shaking. |
| 0x00c7 | 🎥 SHAKE_OFFSET_Y | Word | Vertical camera displacement offset applied during active screen shaking. |
| 0x00c9 | ⚙️ SCREEN_SHAKE_INTENSITY | Word | Intensity scaling factor applied to screen shake random displacement. |
| 0x00cb | ⚗️ DMA_QUEUE_INDEX | Byte | Index offset into frame VRAM upload buffer; reset to 0 by $80:8F8C at start of each frame. |
| 0x00cd | ⚙️ DP_VRAM_TILE_QUEUE_CURSOR | Byte | Cursor offset into deferred VRAM tile pattern DMA upload queue ($7E:163C). |
| 0x00d1 | ⚙️ DP_TILE_GRAPHIC_STAGING_PTR | Word | Cursor offset into dynamic sprite tile graphic staging buffer ($7E:72D1, 128 bytes per tile). |
| 0x00d3 | ⚙️ DP_OAM_LOW_BYTE_CURSOR | Word | Low OAM table write cursor (0, 4, 8, ... up to 512 bytes = 128 sprites * 4 bytes at $7E:ABDE). |
| 0x00d4 | ⚙️ DP_OAM_OVERFLOW_FLAG | Byte | OAM capacity overflow check flag; drawing halts if bit #$FE is non-zero. |
| 0x00d5 | ⚙️ DP_OAM_HIGH_BYTE_CURSOR | Word | High OAM table byte cursor offset (512..543 relative to $7E:ABDE, or 0..31 at $7E:ADDE). |
| 0x00d7 | ⚙️ DP_OAM_HIGH_BIT_MASK | Byte | High OAM 2-bit rotation mask (0x01, 0x04, 0x10, 0x40) tracking current sprite pair in High OAM byte. |
| 0x00d8 | ⚙️ DP_DYNAMIC_VRAM_TILE_BUDGET | Byte | Remaining VRAM dynamic tile allocation budget per frame; decremented per new slice allocated. |
| 0x00d9 | 📖 FRAME_READY_FLAG | Byte | Set non-zero when main loop completes drawing; NMI checks before uploading VRAM and clears after upload. |
| 0x00db | ⚙️ DP_SPRITE_ALLOC_TILE_INDEX | Byte | Allocated VRAM tile index for active sprite slice; written to Low OAM byte 2 ($7E:ABE0,x). |
| 0x00dd | ⚙️ DP_SPRITE_PATTERN_ID | Word | Character/monster pattern ID requested for active slice. |
| 0x00df | ⚙️ DP_SPRITE_SLICE_ATTR_FORMAT | Byte | Current slice format byte (bit 0 = size 8x8 vs 16x16/32x32, bits 1..3 = palette/priority). |
| 0x00e0 | ⚙️ DP_SPRITE_SLICE_COUNT | Byte | Remaining slice count for current actor during sprite composition loop (func_C09040). |
| 0x00e1 | ⚙️ DP_SPRITE_DESCRIPTOR_OFFSET | Byte | Current byte offset inside active sprite slice descriptor table (ldy.b #$01; sta.b $E1; adc.b #$04). |
| 0x0100 | ⚙️ PPU_FRAME_COUNTER_LOW | Word | Low 16 bits of 32-bit hardware frame counter; incremented every VBlank interrupt by nmi_v_blank_handler ($80:8460). |
| 0x0102 | ⚙️ PPU_FRAME_COUNTER_HIGH | Word | High 16 bits of 32-bit hardware frame counter; incremented when low word overflows. |
| 0x0104 | ⚙️ INPUT_P1_TRIGGERED_BUTTONS | Word | Player 1 controller buttons newly pressed this frame (edge-triggered / debounced); computed via ($4218 & ~$0104). |
| 0x0105 | ⚙️ JOYPAD1_BUTTONS_HI | Byte | High byte of controller 1 input register (A, X, L, R buttons). |
| 0x0106 | ⚙️ PPU_SHADOW_INIDISP | Word | PPU Screen Display Register shadow; low byte copied to hardware register $2100 (INIDISP: bits 0-3 brightness 0..15, bit 7 forced screen blank). |
| 0x0108 | ⚙️ PPU_SHADOW_HTIMEL | Word | Hardware H-timer IRQ horizontal dot position shadow; copied to $4207 in VBlank. |
| 0x010a | ⚙️ PPU_SHADOW_VTIMEL | Word | Hardware V-timer IRQ scanline position shadow; copied to $4209 in VBlank. |
| 0x010e | ⚙️ PPU_SHADOW_BG1HOFS | Word | BG1 horizontal scroll offset shadow; low byte written to $210D, high byte written to $210D. |
| 0x0110 | ⚙️ PPU_SHADOW_BG1VOFS | Word | BG1 vertical scroll offset shadow; low byte written to $210E, high byte written to $210E. |
| 0x0112 | ⚙️ PPU_SHADOW_BG2HOFS | Word | BG2 horizontal scroll offset shadow; low byte written to $210F, high byte written to $210F. |
| 0x0114 | ⚙️ PPU_SHADOW_BG2VOFS | Word | BG2 vertical scroll offset shadow; low byte written to $2110, high byte written to $2110. |
| 0x0116 | ⚙️ PPU_SHADOW_BG3HOFS | Word | BG3 horizontal scroll offset shadow; written to $2111 (twice). |
| 0x0118 | ⚙️ PPU_SHADOW_BG3VOFS | Word | BG3 vertical scroll offset shadow; written to $2112 (twice). |
| 0x011a | ⚙️ PPU_SHADOW_BG4HOFS | Word | BG4 horizontal scroll offset shadow; written to $2113 (twice). |
| 0x011c | ⚙️ PPU_SHADOW_BG4VOFS | Word | BG4 vertical scroll offset shadow; written to $2114 (twice). |
| 0x0122 | ⚙️ PPU_SHADOW_W12SEL | Byte | Window 1 and 2 mask settings shadow for BG1 and BG2; copied to hardware register $2123. |
| 0x0123 | ⚙️ PPU_SHADOW_W34SEL | Byte | Window 1 and 2 mask settings shadow for BG3 and BG4; copied to hardware register $2124. |
| 0x0124 | ⚙️ PPU_SHADOW_WOBJSEL | Byte | Window 1 and 2 mask settings shadow for OBJ and Color math; copied to hardware register $2125. |
| 0x0125 | ⚙️ VBLANK_CALLBACK_PTR | Far Pointer | 24-bit indirect execution vector ($7E:0125..$7E:0127) called during NMI via jml [$0125]. |
| 0x0128 | ⚙️ VBLANK_QUEUED_CALLBACK_PTR | Far Pointer | Next 24-bit callback vector queued to replace $7E:0125 at end of current frame. |
| 0x0133 | ⚙️ RNG_SEED_0 | Word | Cross-word carry pseudo-random number generator 16-bit seed word 0 (updated by func_C0859B). |
| 0x0135 | ⚙️ RNG_SEED_1 | Word | Cross-word carry pseudo-random number generator 16-bit seed word 1. |
| 0x0137 | ⚙️ RNG_SEED_2 | Word | Cross-word carry pseudo-random number generator 16-bit seed word 2. |
| 0x0139 | ⚙️ RNG_SEED_3 | Word | Cross-word carry pseudo-random number generator 16-bit seed word 3 (combined $0133..$013A = 64-bit RNG state). |
| 0x013b | ⚙️ VRAM_DMA_QUEUE_TAIL | Word | Read cursor index of deferred VRAM DMA queue (processed during VBlank). |
| 0x013d | ⚙️ VRAM_DMA_QUEUE_CURSOR | Word | Cursor index into 16-slot deferred VRAM DMA transfer queue. |
| 0x013f | ⚙️ VRAM_DMA_QUEUE | Byte×128 | 16-slot deferred VRAM DMA queue (8 bytes per descriptor: src bank/addr, dest VRAM addr, length). |
| 0x015f | ⚙️ PALETTE_BG_1 | Word×16 | Background Palette 1 shadow buffer (16 colors, 32 bytes in 15-bit BGR555 format). |
| 0x017f | ⚙️ PALETTE_BG_2 | Word×16 | Background Palette 2 shadow buffer (16 colors, 32 bytes in 15-bit BGR555 format). |
| 0x019f | ⚙️ PALETTE_BG_3 | Word×16 | Background Palette 3 shadow buffer (16 colors, 32 bytes in 15-bit BGR555 format). |
| 0x01bf | ⚙️ PALETTE_BG_4 | Word×16 | Background Palette 4 shadow buffer (16 colors, 32 bytes in 15-bit BGR555 format). |
| 0x01df | ⚙️ PALETTE_BG_5 | Word×16 | Background Palette 5 shadow buffer (16 colors, 32 bytes in 15-bit BGR555 format). |
| 0x01ff | ⚙️ PALETTE_BG_6 | Word×16 | Background Palette 6 shadow buffer (16 colors, 32 bytes in 15-bit BGR555 format). |
| 0x021f | ⚙️ PALETTE_BG_7 | Word×16 | Background Palette 7 shadow buffer (16 colors, 32 bytes in 15-bit BGR555 format). |
| 0x023f | ⚙️ PALETTE_SPR_0 | Word×16 | Sprite/OBJ Palette 0 shadow buffer (16 colors, 32 bytes in 15-bit BGR555 format). |
| 0x025f | ⚙️ PALETTE_SPR_1 | Word×16 | Sprite/OBJ Palette 1 shadow buffer (16 colors, 32 bytes in 15-bit BGR555 format). |
| 0x027f | ⚙️ PALETTE_SPR_2 | Word×16 | Sprite/OBJ Palette 2 shadow buffer (16 colors, 32 bytes in 15-bit BGR555 format). |
| 0x029f | ⚙️ PALETTE_SPR_3 | Word×16 | Sprite/OBJ Palette 3 shadow buffer (16 colors, 32 bytes in 15-bit BGR555 format). |
| 0x02bf | ⚙️ PALETTE_SPR_4 | Word×16 | Sprite/OBJ Palette 4 shadow buffer (16 colors, 32 bytes in 15-bit BGR555 format). |
| 0x02df | ⚙️ PALETTE_SPR_5 | Word×16 | Sprite/OBJ Palette 5 shadow buffer (16 colors, 32 bytes in 15-bit BGR555 format). |
| 0x02ff | ⚙️ PALETTE_SPR_6 | Word×16 | Sprite/OBJ Palette 6 shadow buffer (16 colors, 32 bytes in 15-bit BGR555 format). |
| 0x031f | ⚙️ PALETTE_SPR_7 | Word×16 | Sprite/OBJ Palette 7 shadow buffer (16 colors, 32 bytes in 15-bit BGR555 format). |
| 0x0341 | ⚙️ LAST_ENTITY | Word | Entity slot index of most recently allocated or spawned actor. |
| 0x0343 | ⚙️ JOYPAD_REPEAT_TIMER | Word | Countdown timer before typematic joypad directional repeat begins. |
| 0x0345 | ⚙️ JOYPAD_REPEAT_MASK | Word | Bitmask of joypad buttons eligible for typematic auto-repeat. |
| 0x0347 | ⚙️ JOYPAD_REPEAT_DELAY | Word | Initial typematic repeat delay duration threshold (frames). |
| 0x0349 | ⚙️ JOYPAD_REPEAT_RATE | Word | Sustained typematic auto-repeat interval rate (frames). |
| 0x034d | ⚙️ WINDOW_0_STRING_OFFSET | Word | Current read cursor offset inside active string stream for primary dialogue window 0. |
| 0x034f | ⚙️ WINDOW_0_FORMAT_FLAGS | Word | Formatting and layout flags for dialogue window 0. |
| 0x0351 | ⚙️ WINDOW_0_BORDER_STYLE | Word | Border frame graphics style and palette index for dialogue window 0. |
| 0x0353 | ⚙️ WINDOW_0_TEXT_DELAY | Word | Text display speed / delay setting (frames between characters) for dialogue window 0. |
| 0x0355 | ⚙️ WINDOW_0_WAIT_FLAG | Word | Text advance pause flag (0 = printing, 1 = awaiting button press) for dialogue window 0. |
| 0x0357 | ⚙️ WINDOW_0_SCROLL_MODE | Word | Vertical text scrolling speed and mode for dialogue window 0. |
| 0x0359 | ⚙️ WINDOW_0_LINE_INDEX | Word | Current active line number within dialogue window 0. |
| 0x035b | ⚙️ WINDOW_0_SCREEN_X | Word | Screen X position (pixels) of dialogue window 0 upper-left corner. |
| 0x035d | ⚙️ WINDOW_0_SCREEN_Y | Word | Screen Y position (pixels) of dialogue window 0 upper-left corner. |
| 0x035f | ⚙️ WINDOW_0_VRAM_ADDR | Word | Destination VRAM tilemap word address for dialogue window 0. |
| 0x0361 | ⚙️ WINDOW_0_TILE_WIDTH | Word | Width of dialogue window 0 in 8x8 character tiles. |
| 0x0363 | ⚙️ WINDOW_0_TILE_HEIGHT | Word | Height of dialogue window 0 in 8x8 character tiles. |
| 0x0365 | ⚙️ WINDOW_0_ANIM_TARGET_WIDTH | Word | Target tile width during window opening animation for window 0. |
| 0x0367 | ⚙️ WINDOW_0_ANIM_TARGET_HEIGHT | Word | Target tile height during window opening animation for window 0. |
| 0x0369 | ⚙️ WINDOW_0_MAX_WIDTH | Word | Maximum allowed tile width for dialogue window 0. |
| 0x036b | ⚙️ WINDOW_0_DISPLAY_MODE | Word | Window display mode flags (0x02, 0x03, 0x06, 0x07). |
| 0x036d | ⚙️ WINDOW_0_ANIM_TIMER | Word | Frame countdown timer for window opening / closing animation step. |
| 0x0371 | ⚙️ WINDOW_0_CHOICE_COUNT | Word | Number of interactive options in choice box for window 0. |
| 0x0373 | ⚙️ WINDOW_0_SELECTION_CURSOR | Word | Screen position / tile offset of selection arrow cursor for window 0. |
| 0x0375 | ⚙️ WINDOW_0_SELECTED_CHOICE | Word | Currently selected choice option index (0..N-1) for window 0. |
| 0x0377 | ⚙️ WINDOW_0_STATE | Word | Dialogue window 0 lifecycle state enum (0 = Closed / Inactive, 1 = Opening anim, 2 = Open / Active, 3 = Closing anim); polled by event script opcode $2E. |
| 0x0379 | ⚙️ WINDOW_1_STRING_OFFSET | Word | Secondary dialogue window 1 / Choice box text read cursor offset. |
| 0x037b | ⚙️ WINDOW_1_FORMAT_FLAGS | Word | Formatting and layout flags for secondary window 1. |
| 0x0380 | ⚙️ CHOICE_BOX_DESCRIPTOR | Byte×64 | Dialogue multiple-choice selector bounding box coordinates, cursor state, and item count. |
| 0x0387 | ⚙️ WINDOW_1_SCREEN_X | Word | Screen X position (pixels) of secondary window 1. |
| 0x0389 | ⚙️ WINDOW_1_SCREEN_Y | Word | Screen Y position (pixels) of secondary window 1. |
| 0x038b | ⚙️ WINDOW_1_VRAM_ADDR | Word | Destination VRAM tilemap address for secondary window 1. |
| 0x038d | ⚙️ WINDOW_1_TILE_WIDTH | Word | Width of secondary window 1 in 8x8 character tiles. |
| 0x038f | ⚙️ WINDOW_1_TILE_HEIGHT | Word | Height of secondary window 1 in 8x8 character tiles. |
| 0x039f | ⚙️ WINDOW_1_SELECTION_CURSOR | Word | Selection arrow position in secondary choice window 1. |
| 0x03a1 | ⚙️ WINDOW_1_SELECTED_CHOICE | Word | Selected choice index in secondary choice window 1. |
| 0x03a3 | ⚙️ WINDOW_1_STATE | Word | Secondary window 1 lifecycle state enum (0 = Closed, 1 = Opening, 2 = Open, 3 = Closing). |
| 0x03e1 | ⚙️ SUBWINDOW_WIDTH | Word | UI Subsystem: Sub-menu window horizontal columns width (e.g. 4 columns, $8E:9EF0). |
| 0x03e3 | ⚙️ SUBWINDOW_HEIGHT | Word | UI Subsystem: Sub-menu window vertical rows height (e.g. 1 row, $8E:9EF0). |
| 0x03f1 | ⚙️ SUBWINDOW_VRAM_TILE_OFFSET | Word | UI Subsystem: Sub-menu window base VRAM tile offset ($0014, $8E:9EF0). |
| 0x03f9 | ⚙️ SUBWINDOW_CURSOR_STRIDE | Word | UI Subsystem: Sub-menu cursor navigation step stride ($0008, $8E:9EF0). |
| 0x03fb | ⚙️ SUBWINDOW_OPTIONS_COUNT | Word | UI Subsystem: Sub-menu selectable options item count ($8E:9EF0). |
| 0x0403 | ⚙️ SUBWINDOW_STR_TABLE_PTR | Word | UI Subsystem: Sub-menu localized menu string key table pointer ($1924, $8E:9EF0). |
| 0x0407 | ⚙️ WINDOW_4_BORDER_TILE | Word | Window 4 custom border corner tile index and attribute word ($8C:AB82). |
| 0x0421 | ⚙️ WINDOW_4_SCROLL_OFFSET_X | Word | Window 4 horizontal text blitter pixel scroll offset ($8D:801B). |
| 0x0423 | ⚙️ WINDOW_4_SCROLL_OFFSET_Y | Word | Window 4 vertical text blitter pixel scroll offset ($8D:804B). |
| 0x0433 | ⚙️ WINDOW_5_BORDER_TILE | Word | Window 5 custom border corner tile index and attribute word ($8C:AB85). |
| 0x0435 | ⚙️ WINDOW_5_POS_X | Word | Window 5 screen tile column X origin coordinate ($8C:9E34). |
| 0x0437 | ⚙️ WINDOW_5_POS_Y | Word | Window 5 screen tile row Y origin coordinate ($8C:A354). |
| 0x0439 | ⚙️ WINDOW_5_WIDTH | Word | Window 5 width in 8x8 character tiles ($8C:9EB5). |
| 0x043b | ⚙️ WINDOW_5_HEIGHT | Word | Window 5 height in 8x8 character tiles ($8C:9EB8). |
| 0x043d | ⚙️ WINDOW_5_TEXT_PTR_LO | Word | Window 5 active text string token read pointer low word ($8C:A35B). |
| 0x043f | ⚙️ WINDOW_5_TEXT_PTR_HI | Word | Window 5 active text string token read pointer high bank word ($8C:9E0E). |
| 0x0441 | ⚙️ WINDOW_5_CURSOR_LINE | Word | Window 5 current typewriter text raster line index ($8C:A361). |
| 0x0443 | ⚙️ WINDOW_5_CURSOR_COL | Word | Window 5 current typewriter text column character position ($8C:9E42). |
| 0x0445 | ⚙️ WINDOW_5_FLAGS | Word | Window 5 display flags bitfield (active, bordered, scrolling, paging). |
| 0x0447 | ⚙️ WINDOW_5_FONT_VRAM_BASE | Word | Window 5 font pattern base tile word offset in VRAM ($8C:9E46). |
| 0x0449 | ⚙️ WINDOW_5_BG_TILE_ATTR | Word | Window 5 background fill tile pattern and palette attribute word ($8C:A370). |
| 0x044f | ⚙️ WINDOW_5_LINE_PITCH | Word | Window 5 character buffer line pitch / stride in bytes. |
| 0x0451 | ⚙️ WINDOW_5_VRAM_TILEMAP_DEST | Word | Window 5 hardware VRAM tilemap destination base address ($8C:9E06). |
| 0x0453 | ⚙️ WINDOW_5_DISMISS_TIMER | Word | Window 5 auto-close delay countdown timer ticks. |
| 0x0459 | ⚙️ WINDOW_6_POS_X | Word | Window 6 screen tile column X origin coordinate ($8C:A380). |
| 0x045b | ⚙️ WINDOW_6_POS_Y | Word | Window 6 screen tile row Y origin coordinate ($8C:A384). |
| 0x045d | ⚙️ WINDOW_6_WIDTH | Word | Window 6 width in 8x8 character tiles. |
| 0x045f | ⚙️ WINDOW_6_HEIGHT | Word | Window 6 height in 8x8 character tiles. |
| 0x0485 | ⚙️ WINDOW_7_POS_X | Word | Window 7 screen tile column X origin coordinate. |
| 0x0487 | ⚙️ WINDOW_7_POS_Y | Word | Window 7 screen tile row Y origin coordinate. |
| 0x0497 | ⚙️ WINDOW_7_FLAGS | Word | Window 7 display flags bitfield. |
| 0x04b1 | ⚙️ WINDOW_8_POS_X | Word | Window 8 screen tile column X origin coordinate. |
| 0x04b3 | ⚙️ WINDOW_8_POS_Y | Word | Window 8 screen tile row Y origin coordinate. |
| 0x04c3 | ⚙️ WINDOW_8_FLAGS | Word | Window 8 display flags bitfield. |
| 0x051d | ⚙️ HUD_BOY_STATUS_WIDGET | Byte×68 | HUD graphics descriptor for Boy status bar, HP meter gauge, and numeric digit tilemaps ($7E:051D..$7E:0560). |
| 0x051f | ⚙️ COMBAT_DAMAGE_COLOR_CYCLE | Word | HUD damage counter flash color cycle timer ticks ($8F:8755). |
| 0x0561 | ⚙️ HUD_DOG_STATUS_WIDGET | Byte×68 | HUD graphics descriptor for Dog status bar, HP meter gauge, and numeric digit tilemaps ($7E:0561..$7E:05A4). |
| 0x05a7 | ⚙️ RING_MENU_CALLER_ACTOR | Word | Pointer to actor entity that opened active ring menu (Boy $7E:4E89 or Dog $7E:4F37). |
| 0x05a9 | ⚙️ RING_MENU_STATUS_FLAGS | Word | Ring menu state and visibility bitflags (bit 15 $8000 set = ring menu active/open). |
| 0x05ab | ⚙️ RING_MENU_CATEGORY_INDEX | Word | Active ring menu category index (Items, Alchemy Formulas, Weapons, Settings). |
| 0x05b1 | ⚙️ DIALOGUE_LINE_DECODE_BUF | Byte×46 | Formatted 46-byte ASCII / tilemap string line buffer generated by func_CC9E03 for banners and text boxes. |
| 0x05b3 | 💬 DIALOGUE_CHAR_TILE_01 | Word | UI Subsystem: Rasterized tile word for dialogue character 1. |
| 0x05b5 | 💬 DIALOGUE_CHAR_TILE_02 | Word | UI Subsystem: Rasterized tile word for dialogue character 2. |
| 0x05b7 | 💬 DIALOGUE_CHAR_TILE_03 | Word | UI Subsystem: Rasterized tile word for dialogue character 3. |
| 0x05b9 | 💬 DIALOGUE_CHAR_TILE_04 | Word | UI Subsystem: Rasterized tile word for dialogue character 4. |
| 0x05bb | 💬 DIALOGUE_CHAR_TILE_05 | Word | UI Subsystem: Rasterized tile word for dialogue character 5. |
| 0x05bd | 💬 DIALOGUE_CHAR_TILE_06 | Word | UI Subsystem: Rasterized tile word for dialogue character 6. |
| 0x05bf | 💬 DIALOGUE_CHAR_TILE_07 | Word | UI Subsystem: Rasterized tile word for dialogue character 7. |
| 0x05c1 | 💬 DIALOGUE_CHAR_TILE_08 | Word | UI Subsystem: Rasterized tile word for dialogue character 8. |
| 0x05c3 | 💬 DIALOGUE_CHAR_TILE_09 | Word | UI Subsystem: Rasterized tile word for dialogue character 9. |
| 0x05c5 | 💬 DIALOGUE_CHAR_TILE_10 | Word | UI Subsystem: Rasterized tile word for dialogue character 10. |
| 0x05c7 | 💬 DIALOGUE_CHAR_TILE_11 | Word | UI Subsystem: Rasterized tile word for dialogue character 11. |
| 0x05c9 | 💬 DIALOGUE_CHAR_TILE_12 | Word | UI Subsystem: Rasterized tile word for dialogue character 12. |
| 0x05cb | 💬 DIALOGUE_CHAR_TILE_13 | Word | UI Subsystem: Rasterized tile word for dialogue character 13. |
| 0x05cd | 💬 DIALOGUE_CHAR_TILE_14 | Word | UI Subsystem: Rasterized tile word for dialogue character 14. |
| 0x05cf | 💬 DIALOGUE_CHAR_TILE_15 | Word | UI Subsystem: Rasterized tile word for dialogue character 15. |
| 0x0615 | ⚙️ RING_MENU_ORIGIN_X | Word | Screen X center anchor around which revolving ring menu icons orbit. |
| 0x0617 | ⚙️ RING_MENU_ORIGIN_Y | Word | Screen Y center anchor around which revolving ring menu icons orbit. |
| 0x0619 | ⚙️ RING_MENU_RADIUS_DISTANCE | Word | Expansion radius distance (pixels) between ring icons and center anchor during open/close animations (func_CEB0CF). |
| 0x061b | ⚙️ RING_MENU_ROTATION_ANGLE | Word | Active rotational orbit angle (0..255) of ring menu icons. |
| 0x061d | ⚙️ RING_MENU_ANGLE_2 | Word | Secondary angular rotational position for circular ring menu animation. |
| 0x061f | ⚗️ DIALOGUE_CURSOR_POS | Word | Current character blit cursor offset within dialogue window buffer. |
| 0x0621 | ⚙️ DIALOGUE_CTRL_STATE | Word | Dialogue control opcode decoder parser state machine register. |
| 0x062b | 📖 DIALOGUE_ACTIVE_FLAG | Byte | Set non-zero when a dialogue or text box is currently open on screen. |
| 0x06a3 | ⚔️ RING_ICON_SLOTS | Byte×256 | Ring menu items inventory icon array (weapons, alchemy spells, items). |
| 0x07a4 | ⚙️ RING_MENU_WEAPON | Word | [pointer] |
| 0x07c8 | ⚙️ RING_MENU_CONSUMABLES | Word | [pointer] |
| 0x0810 | ⚙️ RING_MENU_ACTIVE_ITEM_COUNT | Word | Number of selectable items/spells in currently active primary ring menu. |
| 0x0812 | ⚙️ RING_MENU_ACTIVE_SELECTION | Word | Currently highlighted item index cursor in primary ring menu. |
| 0x0814 | ⚙️ RING_MENU_ACTIVE_ITEMS_BUF | Word×12 | Array of item / spell / formula IDs displayed in primary ring menu. |
| 0x0834 | ⚙️ RING_MENU_SECONDARY_ITEM_COUNT | Word | Number of selectable items in secondary ring menu. |
| 0x0836 | ⚙️ RING_MENU_SECONDARY_SELECTION | Word | Currently highlighted item index cursor in secondary ring menu. |
| 0x0838 | ⚙️ RING_MENU_SECONDARY_ITEMS_BUF | Word×12 | Array of item IDs displayed in secondary ring menu. |
| 0x0858 | ⚙️ AUX_ANIM_CHAN_0_ADDR | Word | 16-bit bytecode address of auxiliary / spell animation channel 0. |
| 0x085a | ⚙️ AUX_ANIM_CHAN_0_BANK | Byte | Bank byte of auxiliary animation channel 0 bytecode. |
| 0x085b | ⚙️ AUX_ANIM_CHAN_0_BASE | Word | Base bytecode address for looping auxiliary animation channel 0. |
| 0x085d | ⚙️ AUX_ANIM_CHAN_0_DELAY | Byte | Frame delay countdown timer for auxiliary animation channel 0. |
| 0x0866 | ⚙️ AUX_ANIM_CHAN_0_STEP | Word | Elapsed animation step counter for auxiliary animation channel 0. |
| 0x0868 | ⚙️ AUX_ANIM_CHAN_1_ADDR | Word | 16-bit bytecode address of auxiliary / spell animation channel 1. |
| 0x086a | ⚙️ AUX_ANIM_CHAN_1_BANK | Byte | Bank byte of auxiliary animation channel 1 bytecode. |
| 0x086b | ⚙️ AUX_ANIM_CHAN_1_BASE | Word | Base bytecode address for looping auxiliary animation channel 1. |
| 0x086d | ⚙️ AUX_ANIM_CHAN_1_DELAY | Byte | Frame delay countdown timer for auxiliary animation channel 1. |
| 0x0876 | ⚙️ AUX_ANIM_CHAN_1_STEP | Word | Elapsed animation step counter for auxiliary animation channel 1. |
| 0x08ee | ⚙️ MENU_SFX_INDEX | Word | Sound effect cue ID triggered when cursor moves or option is selected in menu/choice box. |
| 0x08f6 | ⚙️ CAMERA_MAX_ROOM_X | Word | Maximum allowed horizontal camera scroll limit based on active room metatile dimensions. |
| 0x08f8 | ⚙️ CAMERA_MAX_ROOM_Y | Word | Maximum allowed vertical camera scroll limit based on active room metatile dimensions. |
| 0x08fa | ⚙️ VIEWPORT_COLLISION_ROW_0 | Word×16 | Viewport metatile collision row 0 (16 words: solidity, ledge, stairs, elevation). |
| 0x091a | ⚙️ VIEWPORT_COLLISION_ROW_1 | Word×16 | Viewport metatile collision row 1 (16 words: local terrain physics geometry). |
| 0x093a | ⚙️ VIEWPORT_COLLISION_ROW_2 | Word×16 | Viewport metatile collision row 2 (16 words: local terrain physics geometry). |
| 0x095a | ⚙️ VIEWPORT_COLLISION_ROW_3 | Word×16 | Viewport metatile collision row 3 (16 words: local terrain physics geometry). |
| 0x097a | ⚙️ VIEWPORT_COLLISION_ROW_4 | Word×16 | Viewport metatile collision row 4 (16 words: local terrain physics geometry). |
| 0x099a | ⚙️ VIEWPORT_COLLISION_ROW_5 | Word×16 | Viewport metatile collision row 5 (16 words: local terrain physics geometry). |
| 0x09ba | ⚙️ VIEWPORT_COLLISION_ROW_6 | Word×16 | Viewport metatile collision row 6 (16 words: local terrain physics geometry). |
| 0x09da | ⚙️ VIEWPORT_COLLISION_ROW_7 | Word×16 | Viewport metatile collision row 7 (16 words: local terrain physics geometry). |
| 0x09fa | ⚙️ VIEWPORT_COLLISION_ROW_8 | Word×16 | Viewport metatile collision row 8 (16 words: local terrain physics geometry). |
| 0x0a1a | ⚙️ VIEWPORT_COLLISION_ROW_9 | Word×6 | Viewport metatile collision row 9 end boundary descriptor ($7E:0A1A..$7E:0A25). |
| 0x0a26 | ⚙️ BOY_STATS_BLOCK | Byte×74 | Persistent base stats, experience, equipment, and weapon levels structure for Boy character ($7E:0A26..$7E:0A6F). |
| 0x0a29 | ⚙️ BOY_LEVEL | Word | Boy character current level (1..99). |
| 0x0a2b | ⚙️ BOY_EXP_LOW | Word | Low 16 bits of Boy character accumulated experience points. |
| 0x0a2d | ⚙️ BOY_EXP_HIGH | Word | High 16 bits of Boy character accumulated experience points. |
| 0x0a2f | ⚙️ BOY_NEXT_LEVEL_EXP_LOW | Word | Low 16 bits of experience points required for Boy next level up. |
| 0x0a31 | ⚙️ BOY_NEXT_LEVEL_EXP_HIGH | Word | High 16 bits of experience points required for Boy next level up. |
| 0x0a33 | ⚙️ BOY_BASE_ATTACK | Word | Boy base physical attack power stat. |
| 0x0a35 | ⚙️ BOY_MAX_HP | Word | Boy maximum hit points stat (read by full heal cheat and level-up recalculation). |
| 0x0a37 | ⚙️ BOY_BASE_DEFENSE | Word | Boy base physical defense power stat. |
| 0x0a39 | ⚙️ BOY_BASE_MAGIC_ATTACK | Word | Boy base magic attack power stat. |
| 0x0a3b | ⚙️ BOY_BASE_HIT_RATE | Word | Boy base physical accuracy / hit rate percentage. |
| 0x0a3d | ⚙️ BOY_BASE_EVADE | Word | Boy base physical evasion / dodge rate percentage. |
| 0x0a3f | ⚙️ BOY_BASE_MAGIC_DEFENSE | Word | Boy base magic defense stat. |
| 0x0a41 | ⚙️ BOY_EQUIPPED_WEAPON | Word | ID of currently equipped primary weapon (Bone Crusher, Gladiator Sword, etc.). |
| 0x0a43 | ⚙️ BOY_EQUIPPED_BODY_ARMOR | Word | ID of currently equipped body armor (Grass Vest, Mammoth Skin, etc.). |
| 0x0a45 | ⚙️ BOY_EQUIPPED_HELMET | Word | ID of currently equipped helmet (Grass Hat, Shell Helmet, etc.). |
| 0x0a47 | ⚙️ BOY_EQUIPPED_ARMBAND | Word | ID of currently equipped armband / bracer (Vine Band, Mammoth Guard, etc.). |
| 0x0a49 | 🧑 BOY_XP | Word | Boy player accumulated experience points low word. |
| 0x0a4b | 🧑 BOY_XP_2 | Word | High word |
| 0x0a50 | 🧑 BOY_LEVEL | Word | Boy player character level (1..99). |
| 0x0a58 | ⚙️ WEAPON_EXP_SWORD | Word | Accumulated weapon experience and skill level for Sword weapon class. |
| 0x0a5a | ⚙️ WEAPON_EXP_AXE | Word | Accumulated weapon experience and skill level for Axe weapon class. |
| 0x0a5c | ⚙️ WEAPON_EXP_SPEAR | Word | Accumulated weapon experience and skill level for Spear weapon class. |
| 0x0a5e | ⚙️ WEAPON_EXP_BAZOOKA | Word | Accumulated weapon experience and skill level for Bazooka weapon class. |
| 0x0a70 | ⚙️ DOG_STATS_BLOCK | Byte×74 | Persistent base stats, experience, and equipment structure for Dog companion character ($7E:0A70..$7E:0AB9). |
| 0x0a73 | ⚙️ DOG_LEVEL | Word | Dog companion current level (1..99). |
| 0x0a75 | ⚙️ DOG_EXP_LOW | Word | Low 16 bits of Dog companion accumulated experience points. |
| 0x0a77 | ⚙️ DOG_EXP_HIGH | Word | High 16 bits of Dog companion accumulated experience points. |
| 0x0a79 | ⚙️ DOG_NEXT_LEVEL_EXP_LOW | Word | Low 16 bits of experience required for Dog next level up. |
| 0x0a7b | ⚙️ DOG_NEXT_LEVEL_EXP_HIGH | Word | High 16 bits of experience required for Dog next level up. |
| 0x0a7d | ⚙️ DOG_BASE_ATTACK | Word | Dog base physical attack power stat. |
| 0x0a7f | ⚙️ DOG_MAX_HP | Word | Dog maximum hit points stat (read by full heal cheat and level-up recalculation). |
| 0x0a81 | ⚙️ DOG_BASE_DEFENSE | Word | Dog base physical defense power stat. |
| 0x0a83 | ⚙️ DOG_BASE_MAGIC_ATTACK | Word | Dog base magic attack power stat. |
| 0x0a85 | ⚙️ DOG_BASE_HIT_RATE | Word | Dog base physical accuracy / hit rate percentage. |
| 0x0a87 | ⚙️ DOG_BASE_EVADE | Word | Dog base physical evasion / dodge rate percentage. |
| 0x0a89 | ⚙️ DOG_BASE_MAGIC_DEFENSE | Word | Dog base magic defense stat. |
| 0x0a8b | ⚙️ DOG_EQUIPPED_COLLAR | Word | ID of currently equipped Dog collar / form item (Leather Collar, Spiky Collar, etc.). |
| 0x0a9a | 🐶 DOG_LEVEL | Word | Dog companion character level (1..99). |
| 0x0aa0 | ⚔️ DOG_BOOST_ATTACK | Word | Companion Stats: Dog temporary attack power boost amount from Atlas alchemy formula. |
| 0x0aa2 | 🛡️ DOG_FORM_BASE_DEFENSE | Word | Companion Stats: Active Dog form base physical defense rating ($8F:9471). |
| 0x0aa4 | ⚔️ DOG_FORM_BASE_MAGIC_ATK | Word | Companion Stats: Active Dog form base magic attack power ($8F:9471). |
| 0x0aa6 | ⚔️ DOG_FORM_BASE_HIT_RATE | Word | Companion Stats: Active Dog form base accuracy / hit rate ($8F:9471). |
| 0x0aa8 | 🛡️ DOG_FORM_BASE_EVADE_RATE | Word | Companion Stats: Active Dog form base evasion / dodge rate ($8F:9471). |
| 0x0aaa | 🛡️ DOG_FORM_BASE_MAGIC_DEF | Word | Companion Stats: Active Dog form base magic defense rating ($8F:9471). |
| 0x0aac | ⚙️ DOG_FORM_SPEED_FACTOR | Word | Companion Stats: Active Dog form walking/running movement speed scale factor ($8F:9471). |
| 0x0aae | ⚗️ DOG_FORM_SCENT_RADIUS | Word | Companion Stats: Active Dog form hidden alchemy ingredient sniffing detection radius ($8F:9471). |
| 0x0ab0 | ⚔️ DOG_FORM_CHARGE_MULT | Word | Companion Stats: Active Dog form charge attack damage multiplier ($8F:9471). |
| 0x0ab8 | ⚔️ DOG_FORM_ATTACK_RANGE | Word | Companion Stats: Active Dog form physical bite/dash attack hitbox range ($8F:9471). |
| 0x0aba | ⚔️ CURRENT_WEAPON | Byte | Equipped weapon index (bone, axe, spear, bazooka, etc.). |
| 0x0abe | 🛡️ CURRENT_ARMOR_COLLAR | Word | |
| 0x0ac0 | 🛡️ CURRENT_ARMOR_CHEST | Word | |
| 0x0ac2 | 🛡️ CURRENT_ARMOR_HELM | Word | |
| 0x0ac4 | 🛡️ CURRENT_ARMOR_GLOVE | Word | |
| 0x0ac6 | 💰 TALONS | Word | Prehistoria realm currency balance (Talons). |
| 0x0ac9 | 💰 JEWELS | Word | Antiqua realm currency balance (Jewels). |
| 0x0acc | 💰 GOLD | Word | Gothica realm currency balance (Gold Coins). |
| 0x0acf | 💰 CREDITS | Word | Omnitopia realm currency balance (Credits). |
| 0x0ad2…0x0ada | ⚗️ SELECTED_ALCHEMY_0…8 | Byte×9 | |
| 0x0ad3 | ⚗️ RING_EQUIPPED_ALCH_1 | Byte | Alchemy Subsystem: Equipped formula ID in active Ring Menu quick-cast slot 1. |
| 0x0ad4 | ⚗️ RING_EQUIPPED_ALCH_2 | Byte | Alchemy Subsystem: Equipped formula ID in active Ring Menu quick-cast slot 2. |
| 0x0ad5 | ⚗️ RING_EQUIPPED_ALCH_3 | Byte | Alchemy Subsystem: Equipped formula ID in active Ring Menu quick-cast slot 3. |
| 0x0ad6 | ⚗️ RING_EQUIPPED_ALCH_4 | Byte | Alchemy Subsystem: Equipped formula ID in active Ring Menu quick-cast slot 4. |
| 0x0ad7 | ⚗️ RING_EQUIPPED_ALCH_5 | Byte | Alchemy Subsystem: Equipped formula ID in active Ring Menu quick-cast slot 5. |
| 0x0ad8 | ⚗️ RING_EQUIPPED_ALCH_6 | Byte | Alchemy Subsystem: Equipped formula ID in active Ring Menu quick-cast slot 6. |
| 0x0ad9 | ⚗️ RING_EQUIPPED_ALCH_7 | Byte | Alchemy Subsystem: Equipped formula ID in active Ring Menu quick-cast slot 7. |
| 0x0ada | ⚗️ RING_EQUIPPED_ALCH_8 | Byte | Alchemy Subsystem: Equipped formula ID in active Ring Menu quick-cast slot 8. |
| 0x0adb | ⚙️ CURRENT_ROOM_ID | Word | Active room / map ID index into master pointer table $9F:FDE7; passed to enter_room ($8E:E4E2). |
| 0x0add | ⚔️ LEVEL_FIST | Word | Unused |
| 0x0adf | ⚔️ LEVEL_1_SWORD | Word | |
| 0x0ae1 | ⚔️ LEVEL_2_SWORD | Word | |
| 0x0ae3 | ⚔️ LEVEL_3_SWORD | Word | |
| 0x0ae5 | ⚔️ LEVEL_4_SWORD | Word | |
| 0x0ae7 | ⚔️ LEVEL_1_AXE | Word | |
| 0x0ae9 | ⚔️ LEVEL_2_AXE | Word | |
| 0x0aeb | ⚔️ LEVEL_3_AXE | Word | |
| 0x0aed | ⚔️ LEVEL_4_AXE | Word | |
| 0x0aef | ⚔️ LEVEL_1_SPEAR | Word | |
| 0x0af1 | ⚔️ LEVEL_2_SPEAR | Word | |
| 0x0af3 | ⚔️ LEVEL_3_SPEAR | Word | |
| 0x0af5 | ⚔️ LEVEL_4_SPEAR | Word | |
| 0x0af7 | ⚔️ LEVEL_BAZOOKA | Word | |
| 0x0b07 | ⚔️ LEVEL_DOG | Word | |
| 0x0b09 | ⚙️ BOY_AI_AGGRESSION_SETTING | Word | Boy companion AI attack setting (0 = never attack, 1..5 = attack radius 50..130 pixels). |
| 0x0b0b | ⚙️ ROOM_STEP_TRIGGER | Word | Pointer to step-on coordinate trigger descriptor table for current room. |
| 0x0b0d | ⚙️ DOG_AI_AGGRESSION_SETTING | Word | Dog companion AI attack setting (0 = never attack, 1..5 = widest search radius). |
| 0x0b0f | ⚔️ DOG_STAMINA_RECOVERY_RATE | Word | Combat Mechanics: Dog stamina recovery rate per frame tick (defaults to 2 in $8F:81BE). |
| 0x0b15 | ⚙️ GAME_BOOT_SIGNATURE | Word | Warm boot RAM persistence validation signature word ($00A4 initialized in $80:8D30). |
| 0x0b17 | ⚙️ NEW_GAME_INIT_FLAG | Word | Assertion flag set during cold start / reset sequence to trigger state clearing ($80:8D33). |
| 0x0b19 | ⚙️ TIMER_1 | Word | Wave phase counter incremented per frame for HDMA underwater distortion. |
| 0x0b1a | ⚙️ CONTROLLER_RAW_INPUT_HI | Byte | Upper 8 bits of raw controller button state (Start, Select, D-Pad). |
| 0x0b1b | ⚙️ TIMER_2 | Word | |
| 0x0b1f | ⚙️ RING_MENU_SAVED_STACK_PTR | Word | Saved CPU stack pointer (S register) snapshot restored on ring menu closure. |
| 0x0b21 | ⚙️ MENU_AUDIO_PAN_DIVISOR | Word | Stereo audio panning coordinate factor for ring menu items. |
| 0x0b23 | ⚙️ MENU_AUDIO_SFX_PITCH | Word | Pitch divisor passed to SPC700 sound driver when ring menu rotates. |
| 0x0b25 | ⚙️ MENU_AUDIO_SFX_VOLUME | Word | Volume scale factor applied to UI menu sound effects. |
| 0x0b29 | ⚙️ HUD_DIRTY_UPDATE_FLAGS | Word | HUD refresh latch flags (bit 0 = tilemap redraw required, bit 2 = HUD hidden). |
| 0x0b2a | ⚙️ BATTLE_STUN_TIMER | Byte | Hit stun / stagger duration countdown ticks applied to player during attack recovery. |
| 0x0b2b | ⚙️ DIALOGUE_TIMER | Word | Delay timer tracking pause duration between dialogue lines. |
| 0x0b2c | ⚙️ COMBAT_KNOCKBACK_ANGLE | Byte | Directional knockback angle index (0..255) applied on incoming heavy hits. |
| 0x0b2f | ⚙️ ACTIVE_PLAYER_CHAR_INDEX | Word | Index of currently player-controlled character (0 = Boy, 3 = Dog). |
| 0x0b31 | ⚗️ DIALOGUE_LINE_IDX | Word | Active text line index inside dialogue window buffer. |
| 0x0b3b | ⚙️ ACTIVE_SAVE_SLOT | Word | SRAM save slot index (0..3); read from battery RAM $30:6001. |
| 0x0b3d | ⚙️ FONT_GLYPH_HEIGHT | Word | Height of dialogue text font glyphs in scanlines (default 8). |
| 0x0b3f | ⚗️ FONT_LINE_STRIDE | Word | Byte pitch stride between raster text lines in dialogue buffer. |
| 0x0b41 | ⚗️ FONT_BUFFER_BASE | Word | Base address in High WRAM ($7F:A000) for 2bpp font glyph staging. |
| 0x0b43 | ⚙️ DIALOGUE_AUDIO_BEEP_TICK | Byte | Cooldown timer ticks between successive speech typewriter sound effect triggers. |
| 0x0b47 | ⚙️ WEAPON_CHARGE_PERCENTAGE | Word | Current physical attack charge meter level (0..100%). |
| 0x0b49 | ⚙️ WEAPON_CHARGE_LEVEL_STAGE | Word | Attack charge stage tier (0 = Normal, 1 = Stage 1, 2 = Stage 2, 3 = Stage 3). |
| 0x0b4d | ⚙️ WEAPON_STAMINA_RECOVERY_TIMER | Word | Cooldown timer controlling stamina gauge recharge rate after an attack. |
| 0x0b4f | ⚙️ SCREEN_FLASH_COLOR | Word | 15-bit BGR color value for active screen flash overlay. |
| 0x0b51 | ⚙️ ALCHEMY_CAST_EFFECT_ID | Word | Formula animation effect script identifier loaded into combat VM on cast. |
| 0x0b57 | ⚙️ HUD_EXP_BAR_FLASH_TIMER | Word | Flash color cycle timer ticks when weapon or alchemy skill increases level. |
| 0x0b6f | ⚙️ DIALOGUE_SCROLL_TIMER | Word | Typewriter text scroll delay counter decremented in per-frame tick ($8C:A229). |
| 0x0b70 | ⚙️ DIALOGUE_SCROLL_FLAGS | Byte | Scroll flags controlling instantaneous text paging vs smooth vertical line scrolling. |
| 0x0b77 | ⚙️ JOYPAD_BUTTON_HOLD_TIMER | Word | Duration in ticks current button has been held down continuously. |
| 0x0b78 | ⚙️ JOYPAD_TURBO_REPEAT_PHASE | Byte | Autofire repeat pulse phase counter for held button inputs. |
| 0x0b79 | ⚙️ JOYPAD_EDGE_TRIGGER_MASK | Word | Debounced button press event mask: buttons newly asserted on this frame ($8C:C5EA). |
| 0x0b7f | 🎵 AUDIO_FADE_COUNTER | Word | Step counter tracking audio volume fade in/out transitions. |
| 0x0b80 | ⚙️ WINDOW_FADE_ALPHA_LEVEL | Byte | Transparency alpha blend coefficient for UI overlay window borders ($8E:E5BA). |
| 0x0b83 | ⚙️ ? | Word | Written 0x8000 by opcode 0x27 (Fade-out screen); used in room [0x38] |
| 0x0ba1 | ⚙️ RING_MENU_SHOP | Word | [pointer] |
| 0x0bf9 | ⚙️ RING_MENU_CURSOR_SECTOR | Word | Latched cursor sector index during ring menu item selection ($FFFF = unlatched). |
| 0x0bfb | ⚙️ MODE7_CAMERA_TARGET_OFFSET_X | Word | Mode 7 Engine: Camera target anchor X coordinate offset for flight viewport ($8E:B33D). |
| 0x0bfd | ⚙️ MODE7_CAMERA_TARGET_OFFSET_Y | Word | Mode 7 Engine: Camera target anchor Y coordinate offset for flight viewport ($8E:B33D). |
| 0x0bfe | ⚙️ RING_MENU_BOY_ARMOR_CHEST | Word | [pointer] |
| 0x0c23 | ⚙️ RING_MENU_BOY_ARMOR_HELM | Word | [pointer] |
| 0x0c47 | ⚙️ RING_MENU_BOY_ARMOR_ARMLET | Word | [pointer] |
| 0x0c6b | ⚙️ RING_MENU_DOG_ARMOR | Word | [pointer] |
| 0x0c8f | ⚙️ RING_MENU_WEAPON_BAZOOKA | Word | [pointer] |
| 0x0cb5 | ⚙️ RING_MENU_CONSUMABLES_CALLBEADS_INNER | Word | [pointer] |
| 0x0cd9 | ⚙️ RING_MENU_CONSUMABLES_CALLBEADS | Word | [pointer] |
| 0x0dfb | ⚗️ DIALOGUE_QUEUE | Byte×24 | FIFO message queue buffering pending dialogue box display requests. |
| 0x0e47 | 🎵 APU_TRANSFER_BLOCK_COUNT | Word | Number of bytes/blocks in active SPC700 transfer package (C:805B) |
| 0x0e48 | ⚙️ AUDIO_TRANSFER_HIGH_FLAG | Byte | Audio Engine: High byte transfer flag for SPC700 block stream ($00 / $FF). |
| 0x0e49 | 🎵 APU_TRANSFER_PTR | Word | Memory pointer tracking current audio transfer block in SNES ROM (C:805B) |
| 0x0e4b | 🎵 ACTIVE_SONG | Byte | Currently playing song index (0x00–0x46); checked by SFX dispatcher at C:8236 to detect soundbank mismatches ("The Sound Glitch") |
| 0x0e4d | 🎵 REQUESTED_SONG | Byte | Pending song index queued by script opcode 0x33 (C:828F) |
| 0x0e4f | 🎵 AUDIO_FADE_PARAM | Word | Volume fade parameter passed during music transitions |
| 0x0e51 | 🎵 APU_COMMAND_LOCK | Word | Audio subsystem busy lock & spinlock handshake counter (C:81FD) |
| 0x0e52 | ⚙️ AUDIO_APU_SPINLOCK_HIGH | Byte | Audio Engine: High byte of APU spinlock word register ($7E:0E51..$7E:0E52). |
| 0x0e65 | 🎵 APU_INTERRUPT_FLAG | Word | Audio interrupt communication flag; cleared during APU transfers |
| 0x0e6b | ⚙️ NMITIMEN_MIRROR | Byte | Shadow copy of $4200 ($81 = NMI enabled, Auto-Joypad enabled). |
| 0x0e6c | ⚗️ SHOP_MODE_CONFIG_MASK | Word | Shop Subsystem: Shop mode configuration bitmask (bit 2: standard weapons/armor, bit 3: alchemy ingredients satchel). |
| 0x0e80 | ⚔️ WEAPON_CHARGE_METER | Word | Current physical attack charge meter level (0..100%). |
| 0x0ea0 | ⚙️ DAMAGE_RESULT_REG | Word | Calculated damage output value produced by combat math routines. |
| 0x0ea2 | ? | Word | Paired with $0eac; written by opcode 0x3f (NPC script setup); "set in lots of places" |
| 0x0eac | ? | Word | Paired with $0ea2; holds NPC script addresses; written by opcode 0x3f |
| 0x0eae | ⚙️ PENDING_MAP_EVENT_0 | Word | Queued map event script ID pending trigger execution ($FFFF = none). |
| 0x0eb0 | ⚙️ PENDING_MAP_EVENT_1 | Word | Secondary queued map event script ID ($FFFF = none). |
| 0x0eb2 | 🐶 DOG_CURRENT_HP | Word [SRAM] | Dog companion current health points. |
| 0x0eb4 | ⚙️ PENDING_SWITCH_SCRIPT_SECONDARY | Word | Secondary pending character Select switch event script ID ($FFFF = none). |
| 0x0ebe | ⚙️ RING_16_CURSOR_0EBE | Word | Cursor of a 16-byte-record ring at $5DC3-$6183. Moves on by 16 bytes per record; what the records are is not known. |
| 0x0ec0 | ⚗️ DEFERRED_SPAWN_BUF | Byte×32 | Buffer storing entity spawn parameters queued during map transitions. |
| 0x0ec2 | ⚙️ POINTER_NEXT_PROJECTILE_SLOT | Word | |
| 0x0ec6 | ⚙️ INPUT_P1_HELD_BUTTONS | Word | Player 1 controller buttons currently held down (raw auto-joypad read from hardware register $4218). |
| 0x0f36 | ⚙️ STEP_DITHER_COUNTER | Word | Sub-pixel walk step dither accumulator for smooth actor movement. |
| 0x0f38 | 🎥 CAMERA_SUBPIXEL_ACC | Word | Camera sub-pixel tracking fractional accumulator. |
| 0x0f3a | ⚙️ VRAM_DMA_LOCK | Byte | In-flight active transfer counter / lock flag for deferred VRAM DMA queue. |
| 0x0f3c | ⚙️ CGRAM_DMA_LOCK | Byte | In-flight active transfer counter / lock flag for deferred CGRAM DMA queue. |
| 0x0f3e | ⚙️ HUD_DRAW_SUPPRESSION_LOCK | Byte | In-flight lock counter suppressing HUD tilemap rendering when non-zero. |
| 0x0f40 | ⚙️ ENTITY_PTR_DOG | Word | Entity Subsystem: Address pointer to Companion (Dog) entity slot in WRAM (defaults to $4F37; initialized in $8F:8144). |
| 0x0f42 | ⚙️ CAMERA_TARGET_ACTOR_PTR | Word | Pointer to primary actor entity record tracked by camera (points to Boy at $7E:4E89). |
| 0x0f44 | 🎥 VIEWPORT_SCROLL_Y | Word | Vertical world coordinate of top-left camera viewport boundary. |
| 0x0f5a | ⚙️ RING_MENU_DEBUG | Word | [pointer] |
| 0x0f84 | 📖 MAP_HEADER_FLAGS | Word | Bitmask flags loaded from map header (layering, Mode 7, weather). |
| 0x0f86 | 📖 MAP_LOADED_FLAG | Byte | Set to 1 after room tilemaps, collision, and palettes are fully decompressed. |
| 0x0f8a | ⚙️ LOADED_PALETTE_TAG | Word | Identifier of currently loaded map palette family. |
| 0x0fac | ⚙️ ROOM_PALETTE_GROUP_ID | Word | Active room palette group index (initialized to $11 by reset_per_room_state). |
| 0x0fb0 | ⚙️ TERRAIN_MUT_ACTIVE | Byte | Set non-zero when animated terrain tile mutations are active. |
| 0x0fb2 | ⚙️ STATUS_COUNT | Byte | Number of active status effects on party |
| 0x0fb4 | 📖 CELL_COLLISION_FLAGS | Byte×12 | Current 16x16 metatile cell collision properties and impassable edges. |
| 0x0fb9 | 🎵 ENV_SFX_TRIGGER | Word | Sound effect ID trigger for environmental audio (wind, waterfall, lava). |
| 0x0fbd | 🎥 ENV_SHAKE_TRIGGER | Word | Magnitude trigger for environmental ground tremor effects. |
| 0x0fbf | 🎵 ENV_AUDIO_PARAM | Word | Secondary audio parameter (pitch/pan) for environmental audio. |
| 0x0fd0 | ⚙️ GRASS_BATCH_CURSOR | Word | Cursor index into pending cuttable grass tile swap queue. |
| 0x0fd2 | ⚙️ GRASS_SWAP_QUEUE | Byte×48 | Coordinate swap queue holding tiles converted from standing to cut grass. |
| 0x1002 | ⚙️ GRASS_GRID_OFFSETS | Byte×48 | Tilemap offset lookup table corresponding to pending grass swaps. |
| 0x1032 | ⚙️ GRASS_PACKED_COORDS | Byte×48 | Packed world coordinates (X, Y) for cut grass tile locations. |
| 0x106c | ⚙️ ACTIVE_ANIM_CHANNELS | Word | Count of actively cycling animated tile channels on current map. |
| 0x106e | ⚙️ ANIM_TILE_VRAM_BASE | Word | Destination base address in VRAM where animated tiles are DMA-streamed. |
| 0x1076 | ⚙️ ROOM_FADE_FRAME_COUNT | Word | Duration in frames of room transition screen brightness fade (default 6 frames). |
| 0x107e | ⚙️ TERRAIN_FRAME_INDICES | Byte×80 | Current animation frame indices for 80 terrain mutation channel slots. |
| 0x10ce | ⚙️ TERRAIN_THRESHOLDS | Byte×80 | Frame threshold limits for 80 terrain mutation channel slots. |
| 0x111e | ⚙️ TERRAIN_COUNTDOWNS | Byte×80 | Cycle countdown delay timers for 80 terrain mutation channel slots. |
| 0x116e | ⚙️ VRAM_SINGLE_TILE_RATE_LIMIT | Word | Maximum number of individual 16-bit tile updates dispatched to VRAM per VBlank. |
| 0x1170 | ⚙️ VRAM_SINGLE_TILE_QUEUE_TAIL | Word | Read cursor index of individual tile VRAM update ring buffer. |
| 0x1172 | ⚙️ VRAM_SINGLE_TILE_QUEUE_HEAD | Word | Write cursor index of individual tile VRAM update ring buffer. |
| 0x1174 | ⚙️ VRAM_SINGLE_TILE_DATA_QUEUE | Word×64 | Buffered 16-bit tile word values to be written to $2118 in VBlank. |
| 0x11f4 | ⚙️ VRAM_SINGLE_TILE_ADDR_QUEUE | Word×64 | Destination VRAM word addresses written to $2116 corresponding to tile data queue. |
| 0x1274 | 🎵 CURRENT_MUSIC_TRACK | Word | Active background music track index; initialized to $FFFF at reset. |
| 0x1276 | ⚙️ SPRITE_FREE_LIST_HEAD | Word | Head pointer to available free nodes in dynamic sprite allocation pool ($7E:50A7..$7E:512F). |
| 0x1278 | 🎵 SOUND_COMMAND_MAILBOX | Word | Sound effect request mailbox evaluated by APU interface routines. |
| 0x1288 | ⚙️ SPRITE_VRAM_CACHE | Byte×6 | Dynamic VRAM allocation slot pointers for active actor sprite graphics. |
| 0x128e | ⚙️ CGRAM_DMA_QUEUE_HEAD | Word | Head index cursor of deferred CGRAM DMA queue ($7E:1292, stride 7, wraps at 32 entries = $00E0). |
| 0x1290 | ⚙️ ANIMATION_START | Word | Master frame tick counter synchronizing tile palette cycling and water animation. |
| 0x1292 | ⚙️ CGRAM_DMA_QUEUE_ENTRIES | Byte×224 | Deferred CGRAM DMA queue buffer (32 slots * 7 bytes: source pointer $26..$28, dest word offset $2E, size $12). |
| 0x1299 | ⚙️ CGRAM_QUEUE_SLOT_1 | Byte×7 | Partial CGRAM DMA slot 1 descriptor (7 bytes: src offset, bank, CGRAM dest, count). |
| 0x12a0 | ⚙️ CGRAM_QUEUE_SLOT_2 | Byte×7 | Partial CGRAM DMA slot 2 descriptor (7 bytes: src offset, bank, CGRAM dest, count). |
| 0x12a7 | ⚙️ CGRAM_QUEUE_SLOT_3 | Byte×7 | Partial CGRAM DMA slot 3 descriptor (7 bytes: src offset, bank, CGRAM dest, count). |
| 0x12ae | ⚙️ CGRAM_QUEUE_SLOT_4 | Byte×7 | Partial CGRAM DMA slot 4 descriptor (7 bytes: src offset, bank, CGRAM dest, count). |
| 0x12b5 | ⚙️ CGRAM_QUEUE_SLOT_5 | Byte×7 | Partial CGRAM DMA slot 5 descriptor (7 bytes: src offset, bank, CGRAM dest, count). |
| 0x12bc | ⚙️ CGRAM_QUEUE_SLOT_6 | Byte×7 | Partial CGRAM DMA slot 6 descriptor (7 bytes: src offset, bank, CGRAM dest, count). |
| 0x12c3 | ⚙️ CGRAM_QUEUE_SLOT_7 | Byte×7 | Partial CGRAM DMA slot 7 descriptor (7 bytes: src offset, bank, CGRAM dest, count). |
| 0x12ca | ⚙️ CGRAM_QUEUE_SLOT_8 | Byte×7 | Partial CGRAM DMA slot 8 descriptor (7 bytes: src offset, bank, CGRAM dest, count). |
| 0x12d1 | ⚙️ CGRAM_QUEUE_SLOT_9 | Byte×7 | Partial CGRAM DMA slot 9 descriptor (7 bytes: src offset, bank, CGRAM dest, count). |
| 0x12d8 | ⚙️ CGRAM_QUEUE_SLOT_10 | Byte×7 | Partial CGRAM DMA slot 10 descriptor (7 bytes: src offset, bank, CGRAM dest, count). |
| 0x12df | ⚙️ CGRAM_QUEUE_SLOT_11 | Byte×7 | Partial CGRAM DMA slot 11 descriptor (7 bytes: src offset, bank, CGRAM dest, count). |
| 0x12e6 | ⚙️ CGRAM_QUEUE_SLOT_12 | Byte×7 | Partial CGRAM DMA slot 12 descriptor (7 bytes: src offset, bank, CGRAM dest, count). |
| 0x12ed | ⚙️ CGRAM_QUEUE_SLOT_13 | Byte×7 | Partial CGRAM DMA slot 13 descriptor (7 bytes: src offset, bank, CGRAM dest, count). |
| 0x12f4 | ⚙️ CGRAM_QUEUE_SLOT_14 | Byte×7 | Partial CGRAM DMA slot 14 descriptor (7 bytes: src offset, bank, CGRAM dest, count). |
| 0x12fb | ⚙️ CGRAM_QUEUE_SLOT_15 | Byte×7 | Partial CGRAM DMA slot 15 descriptor (7 bytes: src offset, bank, CGRAM dest, count). |
| 0x1302 | ⚙️ CGRAM_QUEUE_SLOT_16 | Byte×7 | Partial CGRAM DMA slot 16 descriptor (7 bytes: src offset, bank, CGRAM dest, count). |
| 0x1309 | ⚙️ CGRAM_QUEUE_SLOT_17 | Byte×7 | Partial CGRAM DMA slot 17 descriptor (7 bytes: src offset, bank, CGRAM dest, count). |
| 0x1310 | ⚙️ CGRAM_QUEUE_SLOT_18 | Byte×7 | Partial CGRAM DMA slot 18 descriptor (7 bytes: src offset, bank, CGRAM dest, count). |
| 0x1317 | ⚙️ CGRAM_QUEUE_SLOT_19 | Byte×7 | Partial CGRAM DMA slot 19 descriptor (7 bytes: src offset, bank, CGRAM dest, count). |
| 0x131e | ⚙️ CGRAM_QUEUE_SLOT_20 | Byte×7 | Partial CGRAM DMA slot 20 descriptor (7 bytes: src offset, bank, CGRAM dest, count). |
| 0x1325 | ⚙️ CGRAM_QUEUE_SLOT_21 | Byte×7 | Partial CGRAM DMA slot 21 descriptor (7 bytes: src offset, bank, CGRAM dest, count). |
| 0x132c | ⚙️ CGRAM_QUEUE_SLOT_22 | Byte×7 | Partial CGRAM DMA slot 22 descriptor (7 bytes: src offset, bank, CGRAM dest, count). |
| 0x1333 | ⚙️ CGRAM_QUEUE_SLOT_23 | Byte×7 | Partial CGRAM DMA slot 23 descriptor (7 bytes: src offset, bank, CGRAM dest, count). |
| 0x133a | ⚙️ CGRAM_QUEUE_SLOT_24 | Byte×7 | Partial CGRAM DMA slot 24 descriptor (7 bytes: src offset, bank, CGRAM dest, count). |
| 0x1341 | ⚙️ CGRAM_QUEUE_SLOT_25 | Byte×7 | Partial CGRAM DMA slot 25 descriptor (7 bytes: src offset, bank, CGRAM dest, count). |
| 0x1348 | ⚙️ CGRAM_QUEUE_SLOT_26 | Byte×7 | Partial CGRAM DMA slot 26 descriptor (7 bytes: src offset, bank, CGRAM dest, count). |
| 0x134f | ⚙️ CGRAM_QUEUE_SLOT_27 | Byte×7 | Partial CGRAM DMA slot 27 descriptor (7 bytes: src offset, bank, CGRAM dest, count). |
| 0x1356 | ⚙️ CGRAM_QUEUE_SLOT_28 | Byte×7 | Partial CGRAM DMA slot 28 descriptor (7 bytes: src offset, bank, CGRAM dest, count). |
| 0x135d | ⚙️ CGRAM_QUEUE_SLOT_29 | Byte×7 | Partial CGRAM DMA slot 29 descriptor (7 bytes: src offset, bank, CGRAM dest, count). |
| 0x1364 | ⚙️ CGRAM_QUEUE_SLOT_30 | Byte×7 | Partial CGRAM DMA slot 30 descriptor (7 bytes: src offset, bank, CGRAM dest, count). |
| 0x136b | ⚙️ CGRAM_QUEUE_SLOT_31 | Byte×7 | Partial CGRAM DMA slot 31 descriptor (7 bytes: src offset, bank, CGRAM dest, count). |
| 0x1378 | ⚙️ ANIM_TILE_CHAN_0_BASE | Word | Animated background tile channel 0 base pattern VRAM destination word ($90:D5CF). |
| 0x137a | ⚙️ ANIM_TILE_CHAN_1_BASE | Word | Animated background tile channel 1 base pattern VRAM destination word. |
| 0x137c | ⚙️ ANIM_TILE_CHAN_2_BASE | Word | Animated background tile channel 2 base pattern VRAM destination word. |
| 0x1398 | ⚙️ ANIM_TILE_CHAN_0_FRAME | Byte | Animated background tile channel 0 current sequence frame index ($90:D59E). |
| 0x1399 | ⚙️ ANIM_TILE_CHAN_1_FRAME | Byte | Animated background tile channel 1 current sequence frame index. |
| 0x139a | ⚙️ ANIM_TILE_CHAN_2_FRAME | Byte | Animated background tile channel 2 current sequence frame index. |
| 0x139b | ⚙️ ANIM_TILE_CHAN_3_FRAME | Byte | Animated background tile channel 3 current sequence frame index. |
| 0x13b8 | ⚙️ ANIM_TILE_CHAN_0_TOTAL | Byte | Animated background tile channel 0 total frames in animation cycle ($90:D5AC). |
| 0x13b9 | ⚙️ ANIM_TILE_CHAN_1_TOTAL | Byte | Animated background tile channel 1 total frames in animation cycle. |
| 0x13ba | ⚙️ ANIM_TILE_CHAN_2_TOTAL | Byte | Animated background tile channel 2 total frames in animation cycle. |
| 0x13bb | ⚙️ ANIM_TILE_CHAN_3_TOTAL | Byte | Animated background tile channel 3 total frames in animation cycle. |
| 0x13d2 | ⚗️ TILE_ANIM_BUFFERS | Byte×30 | Intermediate staging buffers for animated tile family graphics. |
| 0x13d8 | ⚙️ ANIM_TILE_CHAN_0_SPEED | Byte | Animated background tile channel 0 frame delay interval ticks ($90:D596). |
| 0x13d9 | ⚙️ ANIM_TILE_CHAN_1_SPEED | Byte | Animated background tile channel 1 frame delay interval ticks. |
| 0x13da | ⚙️ ANIM_TILE_CHAN_2_SPEED | Byte | Animated background tile channel 2 frame delay interval ticks. |
| 0x13db | ⚙️ ANIM_TILE_CHAN_3_SPEED | Byte | Animated background tile channel 3 frame delay interval ticks. |
| 0x13f8 | ⚙️ ANIM_TILE_CHAN_0_TIMER | Byte | Animated background tile channel 0 countdown timer ticks until next frame transition ($90:D58C). |
| 0x13f9 | ⚙️ ANIM_TILE_CHAN_1_TIMER | Byte | Animated background tile channel 1 countdown timer ticks until next frame transition. |
| 0x13fa | ⚙️ ANIM_TILE_CHAN_2_TIMER | Byte | Animated background tile channel 2 countdown timer ticks until next frame transition. |
| 0x13fb | ⚙️ ANIM_TILE_CHAN_3_TIMER | Byte | Animated background tile channel 3 countdown timer ticks until next frame transition. |
| 0x1432 | ⚙️ ANIM_FRAME_HOLD_TIMER | Word | Remaining frame duration before advancing to next animated tile phase. |
| 0x1434 | ⚙️ PENDING_TALK_TARGET_PTR | Word | Pointer to NPC actor entity currently being spoken to or interacted with ($FFFF = none). |
| 0x143a | ⚙️ CAMERA_SECONDARY_ACTOR_PTR | Word | Pointer to secondary actor entity considered for camera framing (Dog at $7E:4F37). |
| 0x143e | ⚙️ DOG_SPRITE_ANIM_RECORD | Byte | Companion Mechanics: Low byte of current Dog sprite animation record offset ($8F:9471). |
| 0x143f | ⚙️ DOG_SPRITE_ANIM_BANK | Byte | Companion Mechanics: High byte / ROM bank of current Dog sprite animation record. |
| 0x1443 | ⚙️ DOG_PORTRAIT_TILE_OFFSET | Word | UI Mechanics: Dog HUD portrait sprite VRAM tile offset ($8F:9471). |
| 0x1445 | ⚙️ DOG_PORTRAIT_VRAM_TARGET | Word | UI Mechanics: Dog HUD portrait VRAM destination word address ($8F:9471). |
| 0x1447 | ⚙️ DOG_FORM_BASE_MAGIC_DEF | Word | Active dog breed base magic defense stat ($8F:94F0). |
| 0x1449 | ⚙️ DOG_FORM_BASE_EVADE | Word | Active dog breed base evasion percentage stat ($8F:94F7). |
| 0x144b | ⚙️ DOG_FORM_BASE_HIT_RATE | Word | Active dog breed base accuracy / hit rate stat ($8F:94FE). |
| 0x144d | ⚙️ DOG_FORM_SCENT_RADIUS | Word | Active dog breed ingredient sniffing radius / detection range in pixels ($8F:9505). |
| 0x1459 | ⚙️ DOG_AI_TARGET_DISTANCE | Word | Euclidean distance word between Dog companion and active combat target ($8F:DCD0). |
| 0x1460 | ⚙️ DOG_SNIFF_TARGET_X | Word | World X coordinate of hidden ingredient / sniff spot currently alerted by Dog ($8F:822A). |
| 0x1462 | ⚙️ DOG_SNIFF_TARGET_Y | Word | World Y coordinate of hidden ingredient / sniff spot currently alerted by Dog ($8F:8231). |
| 0x1518 | ⚗️ HDMA_ACTIVE_BANK_PTR | Word | Pointer to active double-buffer table feeding HDMA channel tables. |
| 0x151a | ⚗️ HDMA_BUFFER_A | Byte×36 | HDMA scanline table double-buffer Bank A (color gradients / perspective lines). |
| 0x153e | ⚗️ HDMA_BUFFER_B | Byte×36 | HDMA scanline table double-buffer Bank B (color gradients / perspective lines). |
| 0x15cc | ⚙️ DYNAMIC_COLLISION_OVERRIDE_COUNT | Word | Number of active dynamic collision grid metatile overrides in current room. |
| 0x15d2 | 🎵 AUDIO_MUTING_FLAG | Byte | Set non-zero to silence background music during dramatic cutscenes. |
| 0x15d6 | 🎥 APU_COMM_STATUS | Byte | Handshake status register for SPC700 data transfer synchronization. |
| 0x15d8 | ⚙️ BG_TILEMAP_DMA_DEST_1 | Word | PPU Subsystem: VRAM destination word address 1 for BG tilemap row/col DMA transfer ($80:829C). |
| 0x15da | ⚙️ BG_TILEMAP_DMA_DEST_2 | Word | PPU Subsystem: VRAM destination word address 2 for BG tilemap row/col DMA transfer. |
| 0x15dc | ⚙️ BG_TILEMAP_DMA_DEST_3 | Word | PPU Subsystem: VRAM destination word address 3 for BG tilemap row/col DMA transfer. |
| 0x15de | ⚙️ BG_TILEMAP_DMA_DEST_4 | Word | PPU Subsystem: VRAM destination word address 4 for BG tilemap row/col DMA transfer. |
| 0x15e0 | ⚙️ BG_TILEMAP_DMA_DEST_5 | Word | PPU Subsystem: VRAM destination word address 5 for BG tilemap row/col DMA transfer. |
| 0x15e2 | ⚙️ BG_TILEMAP_DMA_DEST_6 | Word | PPU Subsystem: VRAM destination word address 6 for BG tilemap row/col DMA transfer. |
| 0x15e4 | ⚙️ BG_TILEMAP_DMA_DEST_7 | Word | PPU Subsystem: VRAM destination word address 7 for BG tilemap row/col DMA transfer. |
| 0x15e6 | ⚙️ BG_TILEMAP_DMA_DEST_8 | Word | PPU Subsystem: VRAM destination word address 8 for BG tilemap row/col DMA transfer. |
| 0x15e8 | ⚙️ BG_TILEMAP_DMA_DEST_9 | Word | PPU Subsystem: VRAM destination word address 9 for BG tilemap row/col DMA transfer. |
| 0x15ea | ⚙️ BG_TILEMAP_DMA_DEST_10 | Word | PPU Subsystem: VRAM destination word address 10 for BG tilemap row/col DMA transfer. |
| 0x15ec | ⚙️ BG_TILEMAP_DMA_DEST_11 | Word | PPU Subsystem: VRAM destination word address 11 for BG tilemap row/col DMA transfer. |
| 0x15ee | ⚙️ BG_TILEMAP_DMA_DEST_12 | Word | PPU Subsystem: VRAM destination word address 12 for BG tilemap row/col DMA transfer. |
| 0x15f0 | ⚙️ BG_TILEMAP_DMA_DEST_13 | Word | PPU Subsystem: VRAM destination word address 13 for BG tilemap row/col DMA transfer. |
| 0x15f2 | ⚙️ BG_TILEMAP_DMA_DEST_14 | Word | PPU Subsystem: VRAM destination word address 14 for BG tilemap row/col DMA transfer. |
| 0x15f4 | ⚙️ BG_TILEMAP_DMA_DEST_15 | Word | PPU Subsystem: VRAM destination word address 15 for BG tilemap row/col DMA transfer. |
| 0x15f6 | ⚙️ BG_TILEMAP_DMA_DEST_16 | Word | PPU Subsystem: VRAM destination word address 16 for BG tilemap row/col DMA transfer. |
| 0x15f8 | ⚙️ BG_TILEMAP_DMA_DEST_17 | Word | PPU Subsystem: VRAM destination word address 17 for BG tilemap row/col DMA transfer. |
| 0x163c | ⚙️ VRAM_TILE_DMA_QUEUE | Byte×64 | Deferred VRAM tile pattern DMA upload request queue; processed during VBlank. |
| 0x163e | ⚙️ BG_SEAM_DMA_DEST_1 | Word | PPU Subsystem: VRAM destination word address 1 for BG metatile seam DMA transfer ($80:82E4). |
| 0x1640 | ⚙️ BG_SEAM_DMA_DEST_2 | Word | PPU Subsystem: VRAM destination word address 2 for BG metatile seam DMA transfer. |
| 0x1642 | ⚙️ BG_SEAM_DMA_DEST_3 | Word | PPU Subsystem: VRAM destination word address 3 for BG metatile seam DMA transfer. |
| 0x1644 | ⚙️ SPRITE_VRAM_DEST_SLOT_2 | Word | Dynamic sprite VRAM slot 2 destination word address ($80:82D6). |
| 0x1646 | ⚙️ SPRITE_VRAM_DEST_SLOT_3 | Word | Dynamic sprite VRAM slot 3 destination word address ($80:82D6). |
| 0x1648 | ⚙️ SPRITE_VRAM_DEST_SLOT_4 | Word | Dynamic sprite VRAM slot 4 destination word address ($80:9734). |
| 0x164a | ⚙️ SPRITE_VRAM_DEST_SLOT_5 | Word | Dynamic sprite VRAM slot 5 destination word address ($80:9734). |
| 0x164c | ⚙️ SPRITE_VRAM_DEST_SLOT_6 | Word | Dynamic sprite VRAM slot 6 destination word address ($80:82D6). |
| 0x164e | ⚙️ SPRITE_VRAM_DEST_SLOT_7 | Word | Dynamic sprite VRAM slot 7 destination word address ($80:9734). |
| 0x1650 | ⚙️ SPRITE_VRAM_DEST_SLOT_8 | Word | Dynamic sprite VRAM slot 8 destination word address ($80:9734). |
| 0x1652 | ⚙️ SPRITE_VRAM_DEST_SLOT_9 | Word | Dynamic sprite VRAM slot 9 destination word address ($80:9734). |
| 0x1654 | ⚙️ SPRITE_VRAM_DEST_SLOT_10 | Word | Dynamic sprite VRAM slot 10 destination word address ($80:9734). |
| 0x1656 | ⚙️ SPRITE_VRAM_DEST_SLOT_11 | Word | Dynamic sprite VRAM slot 11 destination word address ($80:9734). |
| 0x1658 | ⚙️ SPRITE_VRAM_DEST_SLOT_12 | Word | Dynamic sprite VRAM slot 12 destination word address ($80:901B). |
| 0x2000 | ⚙️ AUDIO_CHAN_VOL_ATTEN_0 | Byte | Audio channel 0 master volume attenuation factor ($0F..$FF initialized by $8C:9DEE). |
| 0x2001 | ⚙️ AUDIO_CHAN_VOL_ATTEN_1 | Byte | Audio channel 1 master volume attenuation factor ($1F..$FF). |
| 0x2002 | ⚙️ AUDIO_CHAN_VOL_ATTEN_2 | Byte | Audio channel 2 master volume attenuation factor ($2F..$FF). |
| 0x2003 | ⚙️ AUDIO_CHAN_VOL_ATTEN_3 | Byte | Audio channel 3 master volume attenuation factor ($3F..$FF). |
| 0x2004 | ⚙️ AUDIO_CHAN_VOL_ATTEN_4 | Byte | Audio channel 4 master volume attenuation factor ($4F..$FF). |
| 0x2005 | ⚙️ AUDIO_CHAN_VOL_ATTEN_5 | Byte | Audio channel 5 master volume attenuation factor ($5F..$FF). |
| 0x2006 | ⚙️ AUDIO_CHAN_VOL_ATTEN_6 | Byte | Audio channel 6 master volume attenuation factor ($6F..$FF). |
| 0x2007 | ⚙️ AUDIO_CHAN_VOL_ATTEN_7 | Byte | Audio channel 7 master volume attenuation factor ($7F..$FF). |
| 0x2008 | ⚙️ AUDIO_CHAN_VOL_ATTEN_8 | Byte | Audio channel 8 master volume attenuation factor ($8F..$FF). |
| 0x2009 | ⚙️ AUDIO_CHAN_VOL_ATTEN_9 | Byte | Audio channel 9 master volume attenuation factor ($9F..$FF). |
| 0x200a | ⚙️ AUDIO_CHAN_VOL_ATTEN_A | Byte | Audio channel 10 master volume attenuation factor ($AF..$FF). |
| 0x200b | ⚙️ AUDIO_CHAN_VOL_ATTEN_B | Byte | Audio channel 11 master volume attenuation factor ($BF..$FF). |
| 0x200c | ⚙️ AUDIO_CHAN_VOL_ATTEN_C | Byte | Audio channel 12 master volume attenuation factor ($CF..$FF). |
| 0x200d | ⚙️ AUDIO_CHAN_VOL_ATTEN_D | Byte | Audio channel 13 master volume attenuation factor ($DF..$FF). |
| 0x200e | ⚙️ AUDIO_CHAN_VOL_ATTEN_E | Byte | Audio channel 14 master volume attenuation factor ($EF..$FF). |
| 0x200f | ⚙️ AUDIO_CHAN_VOL_ATTEN_F | Byte | Audio channel 15 master volume attenuation factor ($FF). |
| 0x2200 | ⚙️ SRAM_START_MARKER | Word [SRAM] | Boundary marking start of battery-backed persistent save RAM ($7E:2200..$7E:27FF). |
| 0x2210 | 🧑 BOY_NAME_BUFFER | Byte×36 [SRAM] | Custom player character name string buffer (ASCII/tile indices). |
| 0x2234 | 🐶 DOG_NAME_BUFFER | Byte×36 [SRAM] | Custom dog companion name string buffer (ASCII/tile indices). |
| 0x2258 | ⚗️ ACID_RAIN (0x01) ⚗️ ATLAS (0x02) ⚗️ BARRIER (0x04) ⚗️ CALL_UP (0x08) ⚗️ CORROSION (0x10) ⚗️ CRUSH (0x20) ⚗️ CURE (0x40) ⚗️ DEFEND (0x80) |
Byte [SRAM] | ATLAS taught in [0x0c] Inn (Atlas merchant step-on); BARRIER taught in [0x4d] palace (Horace, Path C first meeting) |
| 0x2259 | ⚗️ DOUBLE_DRAIN (0x01) ⚗️ DRAIN (0x02) ⚗️ ENERGIZE (0x04) ⚗️ ESCAPE (0x08) ⚗️ EXPLOSION (0x10) ⚗️ FIREBALL (0x20) ⚗️ FIRE_POWER (0x40) ⚗️ FLASH (0x80) |
Byte [SRAM] | |
| 0x225a | ⚗️ FORCE_FIELD (0x01) ⚗️ HARD_BALL (0x02) ⚗️ HEAL (0x04) ⚗️ LANCE (0x08) ⚗️ LASER (0x10) ⚗️ LEVITATE (0x20) ⚗️ LIGHTNING_STORM (0x40) ⚗️ MIRACLE_CURE (0x80) |
Byte [SRAM] | |
| 0x225b | ⚗️ NITRO (0x01) ⚗️ ONE_UP (0x02) ⚗️ REFLECT (0x04) ⚗️ REGROWTH (0x08) ⚗️ REVEALER (0x10) ⚗️ REVIVE (0x20) ⚗️ SLOW_BURN (0x40) ⚗️ SPEED (0x80) |
Byte [SRAM] | |
| 0x225c | ⚗️ STING (0x01) ⚗️ STOP (0x02) ⚗️ SUPER_HEAL (0x04) ? (0x08/0x10/0x20) FE call beads? (0x40) 📖 Horace call beads [0x09] (0x80) |
Byte [SRAM] | 0x80 set and checked in Aegis kill script [0x09]; awarded by Horace after Aegis defeated |
| 0x225d | ? (0x01/0x02/0x04) 📖 MARKET_TIMER_EXPIRED (0x08) ? (0x10/0x20/0x40) 📖 NPC 0x3e #1 position-shifted [0x3b] (0x80) |
Byte [SRAM] | Story flag range; seen in Prehistoria scripts |
| 0x225e | 📖 NPC 0x3e #2 position-shifted [0x3b] (0x01) 📖 NPC 0x3e #3 position-shifted [0x3b] (0x02) 📖 NPC 0x3c #1 position-shifted [0x3b] (0x04) 📖 NPC 0x3c #2 position-shifted [0x3b] (0x08) 📖 NPC 0x3c #3 position-shifted [0x3b] (0x10) ? (0x20) 📖 Viper Commander spawn pending [0x3b] (0x40) 📖 Talked to Blimp in hut? [0x51] (0x80) |
Byte [SRAM] | Story flag range; seen in Prehistoria scripts |
| 0x225f | 📖 BLIMP_BRIDGE (0x01) 📖 Levitate hint shown? [0x51] (0x02) ? (0x04) 📖 Pipe Maze switch pressed [0x3d/0x3e] (0x08) 📖 Pipe Maze Raptor shown [0x3e] (0x10) 📖 Vigor defeated [0x09] (0x20) 📖 RAPTORS (0x40) 📖 Village post-Thraxx msg shown [0x51/0x6a] (0x80) |
Byte [SRAM] | Story progress flags; 0x20 set in Aegis kill script [0x09] |
| 0x2260 | ? (0x01/0x02/0x04/0x08) 📖 THRAXX (0x10) 📖 Magmar fight started [0x3f] (0x20) 📖 MAGMAR (0x40) ⚙️ Crustacia indoors — Monk shop proximity [0x30] (0x80) |
Byte [SRAM] | Story progress flags; 0x80 set after first Monk amulet shop interaction in [0x30] |
| 0x2261 | ⚙️ GAMEPLAY_SETTINGS_FLAGS | Word | Gameplay settings bitmask (bit 0 = Dog HUD toggle, bit 1 = Boy HUD toggle, bit 2 = stereo sound). |
| 0x2262 | 💎 JADE_DISK (0x01) 💎 JAGUAR_RING (0x02) 💎 MAGIC_GOURD (0x04) 💎 MOXA_STICK (0x08) 💎 ORACLE_BONE (0x10) 💎 RUBY_HEART (0x20) 💎 SILVER_SHEATH (0x40) 💎 STAFF_OF_LIFE (0x80) |
Byte [SRAM] | Bitmask flags for active positive status buffs (Speed, Atlas, Defend). |
| 0x2263 | 💎 SUN_STONE (0x01) 💎 THUGS_CLOAK (0x02) 💎 WIZARDS_COIN (0x04) ? (0x08/0x10) 📖 Silver Sheath traded [0x0a] (0x20) ? (0x40) 📖 Moxa Stick trade available [0x0a] (0x80) |
Byte [SRAM] | Bitmask flags for active negative status debuffs (Poison, Confusion, Confounded). |
| 0x2264 | 💎 DIAMOND_EYE (0x01) 💎 DIAMOND_EYES (0x02) 💎 GAUGE (0x04) 💎 WHEEL (0x08) 💎 QUEENS_KEY (0x10) 💎 ENERGY_CORE (0x20) 🫙 roots gourd obj0 [0x51] (0x40) 🫙 water gourd obj1 [0x51] (0x80) |
Byte [SRAM] | |
| 0x2265 | 🫙 water gourd obj2 [0x51] (0x01) 🫙 water gourd obj3 [0x51] (0x02) 🫙 money gourd obj4 [0x51] (0x04) 🫙 nectar gourd obj5 [0x51] (0x08) 🫙 water gourd obj6 [0x51] (0x10) 🫙 water gourd obj7 [0x51] (0x20) 🫙 clay gourd obj8 [0x51] (0x40) 🫙 money gourd obj9 [0x51] (0x80) |
Byte [SRAM] | Object persistence flags: Act1 Huts [0x51] |
| 0x2266 | 🫙 clay gourd obj10 [0x51] (0x01) 🫙 water gourd obj11 [0x51] (0x02) 🫙 roots gourd obj13 [0x51] (0x04) 🫙 roots gourd obj12 [0x51] (0x08) ? (0x10) 🫙 roots gourd obj14 [0x51] (0x20) 🫙 water gourd obj15 [0x51] (0x40) 🫙 call beads/biscuit obj17 [0x51] (0x80) |
Byte [SRAM] | Object persistence flags: Act1 Huts [0x51] |
| 0x2267 | 🫙 water gourd obj16 [0x51] (0x01) 🫙 petal gourd obj18 [0x51] (0x02) 🫙 clay gourd obj19 [0x51] (0x04) 🫙 water gourd obj20 [0x51] (0x08) 🫙 water gourd obj21 [0x51] (0x10) 🫙 water gourd obj22 [0x51] (0x20) 🫙 water gourd obj23 [0x51] (0x40) ? (0x80) |
Byte [SRAM] | Object persistence flags: Act1 Huts [0x51] |
| 0x2268 | 🫙 water gourd obj24 [0x51] (0x01) 🫙 gourd obj0 [0x26] (0x02) 🫙 clay gourd obj1 [0x26] (0x04) 🫙 ash gourd obj2 [0x26] (0x08) 🫙 Nectar gourd obj1 [0x41] (0x10) // MISMATCH: dumper labels as “Gourd in south Jungle” 🫙 Clay gourd obj0 [0x41] (0x20) // MISMATCH: dumper labels as “Gourd in south Jungle” 🫙 petal gourd obj0 [0x38] (0x40) 🫙 oil gourd obj1 [0x38] (0x80) |
Byte [SRAM] | Object persistence flags: [0x38] South Jungle / Start [0x26] West area with Defend [0x41] North Jungle [0x51] Act1 Huts |
| 0x2269 | 🫙 petal gourd obj2 [0x38] (0x01) 🫙 shell hat gourd obj3 [0x38] (0x02) 🫙 nectar gourd obj4 [0x38] (0x04) 🫙 money gourd obj5 [0x38] (0x08) 🫙 Wax gourd obj0 [0x25] (0x10) ? (0x20/0x40/0x80) |
Byte [SRAM] | Object persistence flags: South Jungle / Start [0x38] Fire Eyes' Village [0x25] |
| 0x226a | ? (0x01) 🫙 Gourd MAP REF 0x07 looted (Wax) [0x3e] (0x02) 🫙 Gourd MAP REF 0x00 looted (Wax alt / Oil; gates OBJ 0 in sub-rooms 1/7) [0x3e] (0x04) 🫙 Gourd MAP REF 0x01 looted (Oil; gates OBJ 1 in sub-room 7) [0x3e] (0x08) 🫙 Gourd MAP REF 0x02 looted (Clay alt; gates OBJ 2 in sub-room 4) [0x3e] (0x10) 🫙 Gourd MAP REF 0x03 looted (Ash; gates OBJ 3 in sub-room 8) [0x3e] (0x20) 🫙 Gourd MAP REF 0x02 looted (Clay; $24c3==10; gates OBJ 2 in sub-room 10) [0x3e] (0x40) 🫙 Gourd MAP REF 0x00 looted (Oil; $24c3==7; gates OBJ 0 in sub-room 7) [0x3e] (0x80) |
Byte [SRAM] | Object persistence + puzzle state flags [0x3e] |
| 0x226b | 🫙 Gourd MAP REF 0x0f looted (Call Beads) [0x4f] (0x01) 🫙 Gourd MAP REF 0x10 looted (200 Gold Coins) [0x4f] (0x02) 🫙 Gourd MAP REF 0x03 looted (Water) [0x30] (0x04) 🫙 Gourd MAP REF 0x01 looted (Clay) [0x30] (0x08) 🫙 Gourd MAP REF 0x06 looted (Wax) [0x30] (0x10) 🫙 Gourd MAP REF 0x05 looted (Water) [0x30] (0x20) 🫙 Gourd MAP REF 0x04 looted (Nectar) [0x30] (0x40) 🫙 Gourd MAP REF 0x02 looted (Nectar) [0x30] (0x80) |
Byte [SRAM] | Object persistence flags — East of Crustacia [0x4f] gourds (low 2 bits); Crustacia Pirate Ship [0x30] gourds (high 6 bits); enter script unloads OBJ 1–6 based on these bits |
| 0x226c | 🫙 Petal gourd obj0 [0x59] (0x01) 🫙 Wax gourd obj1 [0x59] (0x02) 🫙 Crystal gourd obj2 [0x59] (0x04) 🫙 Clay gourd obj0x27 [0x59] (0x08) 🫙 Biscuit gourd obj0x28 [0x59] (0x10) 🫙 Clay gourd obj0x29 [0x59] (0x20) 🫙 Water gourd obj0x2a [0x59] (0x40) ? (0x80) // TODO: 8th gourd unidentified |
Byte [SRAM] | Object persistence flags — Quick Sand Desert [0x59] |
| 0x226d | ? (0x01/0x02/0x04/0x08/0x10/0x20/0x40) 🫙 Gourd MAP REF 0x03 looted (Mud Pepper, DOG ONLY) [0x3b] (0x80) |
Byte [SRAM] | Object persistence flags |
| 0x226e | 🫙 Gourd MAP REF 0x04 looted (Mud Pepper) [0x3b] (0x01) 🫙 Gourd MAP REF 0x05 looted (Petal) [0x3b] (0x02) 🫙 Gourd MAP REF 0x06 looted (Clay) [0x3b] (0x04) 🫙 Gourd MAP REF 0x07 looted (Roots) [0x3b] (0x08) 🫙 Gourd MAP REF 0x08 looted (Roots) [0x3b] (0x10) 🫙 Gourd MAP REF 0x0a looted (Water) [0x3b] (0x20) 🫙 Gourd MAP REF 0x0b looted (Money 100, DOG ONLY) [0x3b] (0x40) ? (0x80) |
Byte [SRAM] | Object persistence flags — Volcano Room 2 [0x3b] |
| 0x226f | ? (0x01/0x02/0x04/0x08/0x10/0x20/0x40) 🫙 Petal gourd obj6 [0x67] (0x80) |
Byte [SRAM] | Object persistence flags: Bugmuck Exterior [0x67] |
| 0x2270 | 🫙 Biscuit gourd obj7 [0x67] (0x01) 🫙 Clay gourd obj8 [0x67] (0x02) 🫙 Water gourd obj9 [0x67] (0x04) 🫙 Crystal gourd obj10 [0x67] (0x08) 🫙 Petal gourd obj11 [0x67] (0x10) 🫙 Mammoth Guard gourd obj12 [0x67] (0x20) 🫙 Crystal gourd obj13 [0x67] (0x40) ? (0x80) |
Byte [SRAM] | Object persistence flags — Bugmuck Exterior [0x67] |
| 0x2271 | ⚙️ Chest 1 (chestplate) opened [0x1e] (0x01) 🫙 Gourd MAP REF 0x02 looted (Petal) [0x1e] (0x02) 🫙 Gourd MAP REF 0x03 looted (Wax) [0x1e] (0x04) 🫙 Gourd MAP REF 0x04 looted (Call Beads) [0x1e] (0x08) ⚙️ Chest 2 (gauntlet) opened [0x1e] (0x10) 🫙 Gourd MAP REF 0x06 looted (Wax) [0x1e] (0x20) 🫙 Gourd MAP REF 0x07 looted (Call Beads) [0x1e] (0x40) ⚙️ Chest 3 (helmet) opened [0x1e] (0x80) |
Byte [SRAM] | Object persistence flags — Arena Holding Room [0x1e] |
| 0x2272 | ⚙️ Special trigger OBJ 0 loaded [0x05] (0x01) ⚙️ Special trigger OBJ 1 loaded [0x05] (0x02) 🫙 Gourd MAP REF 0x06 looted (Water) [0x05] (0x04) 🫙 Gourd MAP REF 0x05 looted (Water) [0x05] (0x08) 🫙 Gourd MAP REF 0x07 looted (Limestone) [0x05] (0x10) 🫙 Gourd MAP REF 0x08 looted (Wax) [0x05] (0x20) 📖 OBJ 0 interaction trigger fired [0x13] (0x40) ? (0x80) |
Byte [SRAM] | Object persistence flags — Between 'Mids and Halls [0x05]; bits 0x01/0x02 are set by conditional B-triggers (alchemy level check, $235f≥12 AND $2360==2) rather than gourd loots; 0x40 set by B-trigger in [0x13] crossroads (same conditional pattern) |
| 0x2273 | 🫙 oil gourd obj0 [0x34] (0x01) 🫙 wax gourd obj1 [0x34] (0x02) 🫙 wax gourd obj2 [0x34] (0x04) 🫙 Gourd MAP REF 0x00 looted (Wax) [0x2e] (0x08) 🫙 Gourd MAP REF 0x01 looted (Ash) [0x2e] (0x10) ? (0x20/0x40/0x80) |
Byte [SRAM] | Object persistence flags: Strong Heart's Hut [0x34] Blimp's Cave [0x2e] |
| 0x2274 | ? (0x01/0x02) 🫙 Gourd OBJ 13: Wax×3 [0x2d] (0x04) 🫙 Gourd OBJ 12: Ash×5 [0x2d] (0x08) 🫙 Gourd OBJ 10: Brimstone×3 [0x2d] (0x10) 🫙 Gourd OBJ 11: Wax×4 [0x2d] (0x20) 🫙 Nectar gourd obj0x37 [0x65] (0x40) 🫙 Wax gourd obj0x35 [0x65] (0x80) |
Byte [SRAM] | Object persistence flags — Halls NE [0x2d] (MAP REFs 0x0a–0x0d) and Swamp Main Area [0x65] |
| 0x2275 | 🫙 Biscuit gourd obj0x36 [0x65] (0x01) 🫙 Oil gourd obj0x3b [0x65] (0x02) 🫙 Call Beads gourd obj0x3a [0x65] (0x04) 🫙 Roots gourd obj0x39 [0x65] (0x08) — also sets $2461=0x0001 🫙 Clay gourd obj0x38 [0x65] (0x10) — also sets $2461=0x0002 ? (0x20) 🫙 Gourd MAP REF 0x01 looted (Acorns×1) [0x7d room 1 west] (0x40) ? (0x80) |
Byte [SRAM] | Object persistence flags — Swamp Main Area [0x65] (bits 0x01–0x10); 0x40 = west-castle Room 1 B-trigger gourd at [61,2b] in [0x7d] |
| 0x2276 | 🫙 Gourd MAP REF 0x01 looted (west R2) [0x7d room 2 west] (0x01) ? (0x02/0x04/0x08/0x10) 🫙 Gourd MAP REF 0x20 looted (west lobby OBJ 0) [0x7d room 5 west] (0x20) 🫙 Gourd MAP REF 0x40 looted (Water×5) [0x7d room 6 west] (0x40) 🫙 Gourd MAP REF 0x80 looted (Vinegar×3) [0x7d room 6 west] (0x80) |
Byte [SRAM] | Object persistence flags — Ebon Keep/Ivor Tower Interior [0x7d] west-castle gourd byte 0; 0x20=lobby OBJ 0 unload flag; 0x40=[70,12] room 6 west; 0x80=[73,12] room 6 west |
| 0x2277 | 🫙 Gourd MAP REF 0x01 looted (Petal×1) [0x7d room 6 west] (0x01) 🫙 Gourd MAP REF 0x02 looted (Gold-Plated Vest) [0x7d room 7 west] (0x02) 🫙 Gourd MAP REF 0x04 looted (Amulet of Annihilation) [0x7d room 7 west] (0x04) 🫙 Gourd MAP REF 0x08 looted (Nectar×3) [0x7d room 7 west] (0x08) 🫙 Gourd MAP REF 0x10 looted (Ash×5) [0x7d room 4 west] (0x10) 🫙 Gourd MAP REF 0x20 looted (Biscuit) [0x7d room 4 west] (0x20) 🫙 Gourd MAP REF 0x40 looted (Amulet of Annihilation) [0x7d room 6 west] (0x40) 🫙 Gourd MAP REF 0x80 looted (Ethanol×2) [0x7d room 8 west] (0x80) |
Byte [SRAM] | Object persistence flags — [0x7d] west-castle gourd byte 1; all 8 bits used |
| 0x2278 | 🫙 Gourd MAP REF 0x01 looted (Ash×5) [0x7d room 8 west] (0x01) 🫙 Gourd MAP REF 0x02 looted (Limestone) [0x7d room 7 west] (0x02) 🫙 Gourd MAP REF 0x04 looted (Amulet of Annihilation) [0x7d room 1 west] (0x04) 🫙 Gourd MAP REF 0x08 looted (Gold×100) [0x7d room 1 west] (0x08) 🫙 Gourd MAP REF 0x10 looted (Acorns) [0x7d room 1 west] (0x10) ? (0x20) 🫙 Gourd MAP REF 0x40 looted (Honey×1) [0x7d room 1 east] (0x40) ? (0x80) |
Byte [SRAM] | Object persistence flags — [0x7d] mixed west/east gourd byte 2; 0x01–0x10 = room 1 west / room 7–8 west; 0x40 = room 1 east B-trigger gourd at [61,2b] |
| 0x2279 | 🫙 Gourd MAP REF 0x01 looted (Wax×3) [0x7d room 2 east] (0x01) ? (0x02) ? (0x04) ? (0x08) ? (0x10) 🫙 Gourd MAP REF 0x20 looted (Call Beads) [0x7d room 1 east] (0x20) 🫙 Gourd MAP REF 0x40 looted (Wax×2) [0x7d room 6 east] (0x40) 🫙 Gourd MAP REF 0x80 looted (Ash×7) [0x7d room 6 east] (0x80) |
Byte [SRAM] | Object persistence flags — [0x7d] east-castle gourd byte 3; 0x01=room 2 east [61,2b]; 0x20=room 1 east [15,12]; 0x40=room 6 east [70,12]; 0x80=room 6 east [73,12]; bits 0x02–0x10 used by enter script OBJ management (rooms 3–4, exact items uncertain) |
| 0x227a | 🫙 Gourd MAP REF 0x01 looted (Iron×4) [0x7d room 6 east] (0x01) 🫙 Gourd MAP REF 0x02 looted (Brimstone×1) [0x7d room 7 east] (0x02) 🫙 Gourd MAP REF 0x04 looted (Nectar) [0x7d room 7 east] (0x04) 🫙 Gourd MAP REF 0x08 looted (Ethanol×2) [0x7d room 7 east] (0x08) 🫙 Gourd MAP REF 0x10 looted (Ethanol×2) [0x7d room 4 east] (0x10) 🫙 Gourd MAP REF 0x20 looted (Vinegar×2) [0x7d room 4 east] (0x20) 🫙 Gourd MAP REF 0x40 looted (Limestone×1) [0x7d room 6 east] (0x40) 🫙 Gourd MAP REF 0x80 looted (Vinegar×5) [0x7d room 8 east] (0x80) |
Byte [SRAM] | Object persistence flags — [0x7d] east-castle gourd byte 4; all 8 bits accounted for |
| 0x227b | 🫙 Gourd MAP REF 0x01 looted (Water×5) [0x7d room 8 east] (0x01) 🫙 Gourd MAP REF 0x02 looted (Crystal×1) [0x7d room 7 east] (0x02) 🫙 Gourd MAP REF 0x04 looted (Gold×50) [0x7d room 1 east] (0x04) 🫙 Gourd MAP REF 0x08 looted (Feather×1) [0x7d room 1 east] (0x08) 🫙 Gourd MAP REF 0x10 looted (Limestone×2) [0x7d room 1 east] (0x10) 📖 OBJ 31 collected [0x7d room 5 east] (0x20) ? (0x40) ⚗️ Horace's Aura collected [0x76] (0x80) |
Byte [SRAM] | Object persistence flags — [0x7d] east-castle gourd byte 5 + [0x76] item flag; 0x01–0x10 = room 8/7/1 east gourds; 0x20 = room 5 east OBJ 31 unload flag; 0x80 = Horace's Aura spell tile in [0x76] |
| 0x227c | 🏺 Amulet of Annihilation found [0x76] (0x01) 🫙 Ash gourd looted [0x76 at 0a,39] (0x02) 🫙 Atlas Medallion gourd looted [0x76 at 15,46] (0x04) ? (0x08/0x10) 🫙 Gourd OBJ 20: Wings [0x55] (0x20) 🫙 Gourd OBJ 21: Call Beads [0x55] (0x40) 🫙 Gourd OBJ 22: Nectar [0x55] (0x80) |
Byte [SRAM] | Object persistence flags — bits 0x01–0x04 = [0x76] South of Ivor Tower (Gate) items ($2517+=1 on 0x01); bits 0x20/0x40/0x80 = 'mids bottom [0x55] gourd byte 1: OBJs 20–22; enter script unloads those OBJs if set |
| 0x227d | 🫙 Gourd OBJ 0x21: Pixie Dust [0x55] (0x01) 🫙 Gourd OBJ 0x2b: Bone×2 [0x55] (0x02) 🫙 Gourd OBJ 0x22: Wax+1 [0x55] (0x04) 🫙 Gourd OBJ 0x2e: Biscuit [0x55] (0x08) 🫙 Gourd OBJ 23: Petal [0x55] (0x10) 🫙 Gourd OBJ 24: Biscuit [0x55] (0x20) 🫙 Gourd OBJ 25: Vinegar×2 [0x55] (0x40) 🫙 Gourd OBJ 26: Limestone+1 [0x55] (0x80) |
Byte [SRAM] | Object persistence flags — 'mids bottom [0x55] gourd byte 2; full byte used by [0x55]; enter script unloads OBJs if bits set |
| 0x227e | 🫙 Gourd OBJ 27: Honey [0x55] (0x01) 🫙 Gourd OBJ 28: Ash×2 [0x55] (0x02) 🫙 Gourd OBJ 29: Roots [0x55] (0x04) 🫙 Gourd OBJ 30: Herbal Essence [0x55] (0x08) 🫙 Gourd OBJ 31: Call Beads [0x55] (0x10) 🫙 Gourd OBJ 0x20: Horace's Regenerate [0x55] (0x20) 🫙 Gourd OBJ 0x23: Dry Ice×2 [0x55] (0x40) 🫙 Gourd OBJ 2: Petal [0x56] (0x80) |
Byte [SRAM] | Object persistence flags — 'mids bottom [0x55] gourd byte 3 / 'mids top [0x56] gourd byte 0; bits 0x01–0x40 = [0x55] OBJs 27–31/0x20/0x23; 0x80 = [0x56] OBJ 2; enter scripts unload OBJs if set |
| 0x227f | 🫙 Gourd OBJ 3: Water×3 [0x56] (0x01) 🫙 Gourd OBJ 4: Herbal Essence [0x56] (0x02) 🫙 Gourd OBJ 5: Limestone×2 [0x56] (0x04) 🫙 Gourd OBJ 6: Nectar [0x56] (0x08) 🫙 Gourd OBJ 7: Dry Ice×2 [0x56] (0x10) 🫙 Gourd OBJ 8: Ethanol×3 [0x56] (0x20) 🫙 Gourd OBJ 9: Wings [0x56] (0x40) 🫙 Gourd OBJ 10: Grease [0x56] (0x80) |
Byte [SRAM] | Object persistence flags — 'mids top [0x56] gourd byte 1; full byte = OBJs 3–10; enter script unloads OBJs 3–10 if bits set (MAP REFs 0x03–0x0a) |
| 0x2280 | 🫙 Gourd OBJ 11: Gunpowder×2 [0x56] (0x01) 🫙 Gourd OBJ 12: Clay×3 [0x56] (0x02) 🫙 Gourd OBJ 13: Meteorite×2 [0x56] (0x04) 🫙 Gourd OBJ 14: Acorns [0x56] (0x08) 🫙 Gourd OBJ 15: Herbal Essence [0x56] (0x10) 🫙 Gourd OBJ 16: Biscuit [0x56] (0x20) 🫙 Gourd OBJ 17: Feather×4 [0x56] (0x40) 🫙 Gourd OBJ 18: Nectar [0x56] (0x80) |
Byte [SRAM] | Object persistence flags — 'mids top [0x56] gourd byte 2; full byte = OBJs 11–18; enter script unloads OBJs 11–18 if bits set (MAP REFs 0x0b–0x12) |
| 0x2281 | 🫙 Gourd OBJ 19: Honey [0x56] (0x01) 🫙 Gourd OBJ 20: Iron×2 [0x56] (0x02) 🫙 Gourd OBJ 21: Petal [0x56] (0x04) 🫙 Gourd OBJ 22: Call Beads×2 [0x56] (0x08) 🫙 Gourd OBJ 23: Mushroom [0x56] (0x10) 🫙 Gourd OBJ 24: Limestone×3 [0x56] (0x20) 🫙 Gourd OBJ 7: Honey [0x57] (0x40) 🫙 Gourd OBJ 8: Herbal Essence [0x57] (0x80) |
Byte [SRAM] | Object persistence flags — 'mids top [0x56] gourd byte 3 / 'mids basement [0x57] gourd byte 0; bits 0x01–0x20 = OBJs 19–24 [0x56] (MAP REFs 0x13–0x18); 0x40/0x80 = OBJs 7–8 [0x57] (MAP REFs 0x07–0x08) |
| 0x2282 | 🫙 Gourd OBJ 9: Pixie Dust [0x57] (0x01) 🫙 Gourd OBJ 10: Ethanol×3 [0x57] (0x02) 🫙 Gourd OBJ 11: Wings [0x57] (0x04) 🫙 Gourd OBJ 12: Call Beads [0x57] (0x08) 🫙 Gourd OBJ 13: Biscuit [0x57] (0x10) ? (0x20/0x40/0x80) |
Byte [SRAM] | Object persistence flags — 'mids basement [0x57] gourd byte 1; bits 0x01–0x10 = OBJs 9–13 (MAP REFs 0x09–0x0d); enter script unloads if bits set |
| 0x2283 | 🫙 Gourd OBJ 1: Nectar×1 [0x29] (0x08) 🫙 Gourd OBJ 2: Vinegar×1 [0x29] (0x10) 🫙 Gourd OBJ 6: Wings×1 [0x23] (0x20) 🫙 Gourd OBJ 7: Nectar×1 [0x23] (0x40) 🫙 Gourd OBJ 8: Brimstone×2 [0x23] (0x80) ? (0x01/0x02/0x04) |
Byte [SRAM] | Object persistence flags — Halls main room [0x29] gourds (MAP REFs 0x01–0x02); Halls SW [0x23] gourds (MAP REFs 0x06–0x08) |
| 0x2284 | 🧪 Honey×2 gourd (OBJ 0x20) [0x28] (0x01) ⚔️ Cryo-Blast Projectiles crate looted [0x44] (0x02) 🌿 Dry Ice crate looted [0x47] (0x04) 🌿 Acorns crate looted [0x47] (0x08) 🫙 Honey gourd crate looted [0x47] (0x10) ⚔️ Thunderball Ammo crate looted [0x47] (0x20) 🛡️ Protector Ring crate looted [0x47] (0x40) 🫙 Particle Bombs / Nectar gourd looted [0x47] (0x80) |
Byte [SRAM] | Object persistence flags — cross-room: 0x01 = Halls Collapsing Bridge [0x28] Honey×2 gourd (MAP REF 0x20); 0x02–0x80 = Omnitopia Storage Room [0x47] crates OBJ 0–5 + Particle Bombs; enter scripts unload each OBJ if corresponding bit set |
| 0x2285 | 🌿 Meteorite crate looted [0x47] (0x01) 🫙 Gourd OBJ 14: Pixie Dust×1 [0x24] (0x02) 🫙 Gourd OBJ 15: Call Beads×1 [0x24] (0x04) 🫙 Gourd OBJ 16: Brimstone×2 [0x24] (0x08) 🫙 Gourd OBJ 17: Ash×1 [0x24] (0x10) 🫙 Gourd MAP REF 0x01 looted (Honey×1) [0x79] (0x20) 🫙 Gourd MAP REF 0x02 looted (Mushroom×2) [0x79] (0x40) 🫙 Gourd MAP REF 0x03 looted (Water×5) [0x79] (0x80) |
Byte [SRAM] | Object persistence flags — 0x01 = Omnitopia Storage Room [0x47] Meteorite crate (OBJ 6); 0x02–0x10 = Halls NW [0x24] gourds (MAP REFs 0x0e–0x11); 0x20/0x40/0x80 = Ivor Tower Sewers [0x79] gourds 1–3 |
| 0x2286 | 🫙 Gourd MAP REF 0x04 looted (Acorns×2) [0x79] (0x01) 🫙 Gourd MAP REF 0x05 looted (Iron×3) [0x79] (0x02) 🫙 Gourd MAP REF 0x06 looted (Oil×2) [0x79] (0x04) 🫙 Gourd MAP REF 0x07 looted (Biscuit×1) [0x79] (0x08) 🫙 Gourd MAP REF 0x08 looted (Call Beads×1) [0x79] (0x10) 🫙 Gourd MAP REF 0x09 looted (Acorns×1) [0x12] (0x20) 🫙 Gourd MAP REF 0x0a looted (Water×3) [0x12] (0x40) 🫙 Gourd MAP REF 0x0b looted (Ethanol×3) [0x12] (0x80) |
Byte [SRAM] | Object persistence flags — 0x01–0x10 = Ivor Tower Sewers [0x79] gourds 4–8; 0x20/0x40/0x80 = Ebon Keep Sewers [0x12] gourds (OBJs 9–11) |
| 0x2287 | 🫙 Gourd MAP REF 0x0c looted (Ash×4) [0x12] (0x01) 🫙 Gourd MAP REF 0x0d looted (Pixie Dust×1) [0x12] (0x02) 🫙 Gourd MAP REF 0x00 looted (Feather×2) [0x60] (0x04) 🫙 Gourd MAP REF 0x01 looted (Brimstone×3) [0x60] (0x08) 🫙 Gourd MAP REF 0x02 looted (Acorns×1) [0x60] (0x10) ⚔️ Laser Lance (SPEAR_4) hidden item looted [0x46] (0x20) 🫙 Gourd MAP REF 0x00 looted (Call Beads×2) [0x4b] (0x40) ? (0x80) |
Byte [SRAM] | Object persistence flags — 0x01/0x02 = Ebon Keep Sewers [0x12] gourds (OBJs 12–13); 0x04/0x08/0x10 = Ebon Keep Storage Room [0x60] gourds (MAP REFs 0x00–0x02); 0x20 = Laser Lance hidden item in Professor's Lab Ship Area [0x46] (OBJ 1, B-trigger `$2287 |
| 0x2288 | ? (0x01/0x02) 📖 Received gift from Fire Eyes' Village huts [0x51] (0x04) 📖 talked to Defend guy [0x26] (0x08) ? (0x10/0x20/0x40/0x80) |
Byte [SRAM] | Object persistence flags: West area with Defend [0x26]; 0x04 cleared in [0x6a] (Act 1→2 transition) |
| 0x2289 | ? (0x01/0x02/0x04/0x08/0x10/0x20/0x40/0x80) | Byte [SRAM] | Object persistence flags |
| 0x228a | 📖 Gate/door opened — OBJs 3+10 revealed [0x29] (0x10) 📖 OBJ 0 one-time reveal [0x24] / OBJ 8 removed in [0x29] (0x20) 📖 Ruins SE switch activated [0x2c] / OBJ 7 removed in [0x29] (0x40) 📖 OBJ 13 secret door opened [0x28] (0x80) ? (0x01/0x02/0x04/0x08) |
Byte [SRAM] | Object persistence flags — cross-room: 0x10 set by gate-trigger step-on [10,05:12,07] in [0x29] (one-time); 0x20 set by step-on [20,07:22,09] in [0x24], also read in [0x29] to unload OBJ 8; 0x40 tagged as "Ruins SE switch activated" in [0x2c] disasm, also read in [0x29] to unload OBJ 7; 0x80 = one-time step-on [30,52:32,54] in [0x28] (OBJ 13 secret door) |
| 0x228b | 📖 FE visited pre-thraxx? [0x51] (0x01) ? (0x02/0x04/0x08/0x10/0x20/0x40/0x80) |
Byte [SRAM] | Object persistence flags: 0x01 tested in [0x51] east exit and FE First Encounter |
| 0x228c | 👃 Sniffed Water (#2) [0x65] (0x01) 👃 Sniffed Water (#3) [0x65] (0x02) 👃 Sniffed Water (#5) [0x65] (0x04) 👃 Sniffed Water (#6) [0x65] (0x08) 👃 Sniffed Water (#7) [0x65] (0x10) 👃 Sniffed Water (#9) [0x65] (0x20) 👃 Sniffed Water (#10) [0x65] (0x40) 👃 Sniffed Water (#15) [0x65] (0x80) |
Byte [SRAM] | Sniff spot flags — Swamp Main Area [0x65] |
| 0x228d | 👃 Sniffed Water (#16) [0x65] (0x01) 👃 Sniffed Water (#19) [0x65] (0x02) 👃 Sniffed Water (#20) [0x65] (0x04) 👃 Sniffed Water (#21) [0x65] (0x08) 👃 Sniffed Roots (#0) [0x65] (0x10) 👃 Sniffed Roots (#1) [0x65] (0x20) 👃 Sniffed Roots (#4) [0x65] (0x40) 👃 Sniffed Roots (#8) [0x65] (0x80) |
Byte [SRAM] | Sniff spot flags — Swamp Main Area [0x65] |
| 0x228e | 👃 Sniffed Roots (#12) [0x65] (0x01) 👃 Sniffed Roots (#13) [0x65] (0x02) 👃 Sniffed Roots (#14) [0x65] (0x04) 👃 Sniffed Roots (#17) [0x65] (0x08) 👃 Sniffed Roots (#18) [0x65] (0x10) 👃 Sniffed Oil (#61) [0x65] (0x20) 👃 Sniffed Oil (#11) [0x65] (0x40) 👃 Sniffed Oil (#60) [0x65] (0x80) |
Byte [SRAM] | Sniff spot flags — Swamp Main Area [0x65] |
| 0x228f | ? (0x01) 👃 Sniffed Oil (#22) [0x65] (0x02) 👃 Sniffed Water (#0) [0x66] (0x04) 👃 clay sniff obj14 [0x38] (0x08) 👃 clay sniff obj28 [0x38] (0x10) 👃 roots sniff obj9 [0x38] (0x20) 👃 roots sniff obj30 [0x38] (0x40) 👃 roots sniff obj10 [0x38] (0x80) |
Byte [SRAM] | Object persistence flags: Swamp Main Area [0x65] West of Swamp [0x66] South Jungle / Start [0x38] |
| 0x2290 | 👃 roots sniff obj12 [0x38] (0x01) 👃 roots sniff obj13 [0x38] (0x02) 👃 roots sniff obj16 [0x38] (0x04) 👃 roots sniff obj19 [0x38] (0x08) 👃 roots sniff obj26 [0x38] (0x10) ? obj6 [0x38] (0x20) // TODO: type unknown, no B-trigger found 👃 ash sniff obj7 [0x38] (0x40) 👃 ash sniff obj23 [0x38] (0x80) |
Byte [SRAM] | Object persistence flags: South Jungle / Start [0x38] |
| 0x2291 | 👃 ash sniff obj24 [0x38] (0x01) 👃 ash sniff obj27 [0x38] (0x02) 👃 water sniff obj8 [0x38] (0x04) 👃 water sniff obj11 [0x38] (0x08) 👃 water sniff obj29 [0x38] (0x10) 👃 water sniff obj15 [0x38] (0x20) 👃 water sniff obj17 [0x38] (0x40) 👃 water sniff obj18 [0x38] (0x80) |
Byte [SRAM] | Object persistence flags: South Jungle / Start [0x38] |
| 0x2292 | 👃 water sniff obj20 [0x38] (0x01) 👃 water sniff obj21 [0x38] (0x02) 👃 water sniff obj22 [0x38] (0x04) 👃 water sniff obj25 [0x38] (0x08) 👃 Sniffed Ash (#18/#19/#20) [0x25] (0x10) — 3 respawnable spots share this bit 👃 Sniffed Ash (#14) [0x25] (0x20) 👃 Sniffed Ash (#15) [0x25] (0x40) 👃 Sniffed Ash (#16) [0x25] (0x80) |
Byte [SRAM] | Object persistence flags: South Jungle / Start [0x38] Fire Eyes' Village [0x25] |
| 0x2293 | 👃 Sniffed Water (#4) [0x25] (0x01) 👃 Sniffed Water (#6) [0x25] (0x02) 👃 Sniffed Water (#11) [0x25] (0x04) 👃 Sniffed Water (#12) [0x25] (0x08) 👃 Sniffed Water (#13) [0x25] (0x10) 👃 Sniffed Oil (#2) [0x25] (0x20) 👃 Sniffed Oil (#5) [0x25] (0x40) 👃 Sniffed Oil (#7) [0x25] (0x80) |
Byte [SRAM] | Sniff spot flags — Fire Eyes' Village [0x25] |
| 0x2294 | 👃 Sniffed Oil (#8) [0x25] (0x01) 👃 Sniffed Roots (#1) [0x25] (0x02) 👃 Sniffed Roots (#3) [0x25] (0x04) 👃 Sniffed Roots (#9) [0x25] (0x08) 👃 Sniffed Roots (#10) [0x25] (0x10) 👃 Sniffed Roots (#1) [0x5b] (0x20) 👃 Sniffed Roots (#2) [0x5b] (0x40) 👃 Sniffed Roots (#5) [0x5b] (0x80) |
Byte [SRAM] | Object persistence flags: Fire Eyes' Village [0x25] East Jungle [0x5b] |
| 0x2295 | 👃 roots sniff obj6 [0x5b] (0x01) 👃 roots sniff obj7 [0x5b] (0x02) 👃 water sniff obj0 [0x5b] (0x04) 👃 water sniff obj11 [0x5b] (0x08) 👃 water sniff obj12 [0x5b] (0x10) 👃 water sniff obj3 [0x5b] (0x20) 👃 water sniff obj4 [0x5b] (0x40) 👃 clay sniff obj13 [0x5b] (0x80) |
Byte [SRAM] | Object persistence flags: East jungle [0x5b] |
| 0x2296 | 👃 Sniffed Clay (#8) [0x5b] (0x01) 👃 Sniffed Clay (#9) [0x5b] (0x02) 👃 Sniffed Clay (#10) [0x5b] (0x04) 👃 Ash sniff obj23 [0x59] (0x08) 👃 Ash sniff obj24 [0x59] (0x10) 👃 Ash sniff obj25 [0x59] (0x20) 👃 Ash sniff obj26 [0x59] (0x40) 👃 Ash sniff obj27 [0x59] (0x80) |
Byte [SRAM] | Object persistence flags: East Jungle [0x5b] Quick sand desert [0x59] |
| 0x2297 | 👃 Ash sniff obj28 [0x59] (0x01) 👃 Ash sniff obj29 [0x59] (0x02) 👃 Wax sniff obj22 [0x59] (0x04) 👃 Wax sniff obj45 [0x59] (0x08) 👃 Wax sniff obj46 [0x59] (0x10) 👃 Wax sniff obj44 [0x59] (0x20) 👃 Roots sniff obj30 [0x59] (0x40) 👃 Roots sniff obj31 [0x59] (0x80) |
Byte [SRAM] | Object persistence flags: Quick sand desert [0x59] |
| 0x2298 | 👃 Roots sniff obj32 [0x59] (0x01) 👃 Roots sniff obj33 [0x59] (0x02) 👃 Roots sniff obj34 [0x59] (0x04) 👃 Clay sniff obj35 [0x59] (0x08) 👃 Clay sniff obj36 [0x59] (0x10) 👃 Clay sniff obj37 [0x59] (0x20) 👃 Clay sniff obj38 [0x59] (0x80) |
Byte [SRAM] | Object persistence flags: Quick sand desert [0x59] |
| 0x2299 | 👃 Sniffed Oil (#14) [0x67] (0x01) 👃 Sniffed Oil (#15) [0x67] (0x02) 👃 Sniffed Oil (#16) [0x67] (0x04) 👃 Sniffed Oil (#17) [0x67] (0x08) 👃 Sniffed Oil (#18) [0x67] (0x10) 👃 Sniffed Oil (#19) [0x67] (0x20) 👃 Sniffed Oil (#20) [0x67] (0x40) 👃 Sniffed Oil (#21) [0x67] (0x80) |
Byte [SRAM] | Sniff spot flags — Bugmuck Exterior [0x67] |
| 0x229a | 👃 Sniffed Roots (#22) [0x67] (0x01) 👃 Sniffed Roots (#23) [0x67] (0x02) 👃 Sniffed Roots (#24) [0x67] (0x04) 👃 Sniffed Roots (#25) [0x67] (0x08) 👃 Sniffed Roots (#26) [0x67] (0x10) 👃 Sniffed Roots (#27) [0x67] (0x20) 👃 Sniffed Roots (#28) [0x67] (0x40) 👃 Sniffed Ash (#29) [0x67] (0x80) |
Byte [SRAM] | Sniff spot flags — Bugmuck Exterior [0x67] |
| 0x229b | 👃 Sniffed Ash (#30) [0x67] (0x01) 👃 Sniffed Ash (#31) [0x67] (0x02) 👃 Sniffed Ash (#32) [0x67] (0x04) 👃 Sniffed Ash (#33) [0x67] (0x08) 👃 Sniffed Crystal (#34) [0x67] (0x10) 👃 Sniffed Crystal (#36) [0x67] (0x20) 👃 Sniffed Crystal (#37) [0x67] (0x40) 👃 Sniffed Clay (#38) [0x67] (0x80) |
Byte [SRAM] | Sniff spot flags — Bugmuck Exterior [0x67] |
| 0x229c | 👃 Sniffed Clay (#39) [0x67] (0x01) 👃 Sniffed Clay (#40) [0x67] (0x02) 👃 Sniffed Clay (#41) [0x67] (0x04) 👃 Sniffed Wax (#35) [0x67] (0x08) 👃 Sniffed Wax (#42) [0x67] (0x10) 👃 Sniffed Wax (#43) [0x67] (0x20) 👃 Sniffed Wax (#44) [0x67] (0x40) 👃 Sniffed Wax (#45) [0x67] (0x80) |
Byte [SRAM] | Sniff spot flags — Bugmuck Exterior [0x67] |
| 0x229d | 👃 Sniffed Wax (#46) [0x67] (0x01) 👃 Sniffed Wax (#47) [0x67] (0x02) 👃 Sniffed Water (#16) [0x16] (0x04) 👃 Sniffed Water (#17) [0x16] (0x08) 👃 Sniffed Clay (#18) [0x16] (0x10) 👃 Sniffed Clay (#19) [0x16] (0x20) 👃 Sniffed Clay (#20) [0x16] (0x40) 👃 Sniffed Clay (#21) [0x16] (0x80) |
Byte [SRAM] | Sniff spot flags — Bugmuck Exterior [0x67] BBM [0x16] |
| 0x229e | 👃 Sniffed Clay (#22) [0x16] (0x01) 👃 Sniffed Clay (#23) [0x16] (0x02) 👃 Sniffed Roots (#24) [0x16] (0x04) 👃 Sniffed Roots (#25) [0x16] (0x08) 👃 Sniffed Roots (#26) [0x16] (0x10) 👃 Sniffed Roots (#27) [0x16] (0x20) 👃 Sniffed Oil (#28) [0x16] (0x40) 👃 Sniffed Oil (#29) [0x16] (0x80) |
Byte [SRAM] | Sniff spot flags — BBM [0x16] |
| 0x229f | 👃 Sniffed Oil (#30) [0x16] (0x01) 👃 Sniffed Oil (#31) [0x16] (0x02) 👃 Sniffed Oil (#32) [0x16] (0x04) 👃 Sniffed Oil (#33) [0x16] (0x08) 👃 Sniffed Oil (#34) [0x16] (0x10) 👃 Sniffed Oil (#35) [0x16] (0x20) 👃 Sniffed Ash (#36) [0x16] (0x40) 👃 Sniffed Ash (#37) [0x16] (0x80) |
Byte [SRAM] | Sniff spot flags — BBM [0x16] |
| 0x22a0 | 👃 Sniffed Ash (#38) [0x16] (0x01) 👃 Sniffed Ash (#39) [0x16] (0x02) 👃 Sniffed Water (#0) [0x17] (0x04) 👃 Sniffed Water (#1) [0x17] (0x08) 👃 Sniffed Water (#2) [0x17] (0x10) 👃 Sniffed Clay (#3) [0x17] (0x20) 👃 Sniffed Clay (#4) [0x17] (0x40) 👃 Sniffed Clay (#5) [0x17] (0x80) |
Byte [SRAM] | Sniff spot flags — BBM [0x16] Bug Room 2 [0x17] |
| 0x22a1 | 👃 Sniffed Roots (#6) [0x17] (0x01) 👃 Sniffed Roots (#7) [0x17] (0x02) 👃 Sniffed Roots (#8) [0x17] (0x04) 👃 Sniffed Oil (#9) [0x17] (0x08) 👃 Sniffed Oil (#10) [0x17] (0x10) 👃 Sniffed Oil (#11) [0x17] (0x20) 👃 Sniffed Water (#2) [0x41] (0x40) 👃 Sniffed Water (#3) [0x41] (0x80) |
Byte [SRAM] | Sniff spot flags — Bug Room 2 [0x17] North Jungle [0x41] |
| 0x22a2 | 👃 Sniffed Water (#4) [0x41] (0x01) 👃 Sniffed Water (#5) [0x41] (0x02) 👃 Sniffed Water (#6) [0x41] (0x04) 👃 Sniffed Water (#7) [0x41] (0x08) 👃 Sniffed Oil (#8) [0x41] (0x10) 👃 Sniffed Oil (#9) [0x41] (0x20) 👃 Sniffed Roots (#10) [0x41] (0x40) 👃 Sniffed Roots (#11) [0x41] (0x80) |
Byte [SRAM] | Sniff spot flags — North Jungle [0x41] |
| 0x22a3 | 👃 Sniffed Roots (#12) [0x41] (0x01) 👃 Sniffed Roots (#13) [0x41] (0x02) 👃 Sniffed Roots (#14) [0x41] (0x04) 👃 Sniffed Clay (#15) [0x41] (0x08) 👃 Sniffed Clay (#16) [0x41] (0x10) 👃 Sniffed Clay (#17) [0x41] (0x20) 👃 Sniffed Ash (#18) [0x41] (0x40) 👃 Sniffed Ash (#19) [0x41] (0x80) |
Byte [SRAM] | Sniff spot flags — North Jungle [0x41] |
| 0x22a4 | 👃 Sniffed Ash (#20) [0x41] (0x01) 👃 Sniffed Wax (#21) [0x41] (0x02) 👃 Sniffed Wax (#22) [0x41] (0x04) 👃 Sniffed Water (#3) [0x27] (0x08) 👃 Sniffed Water (#1) [0x27] (0x10) 👃 Sniffed Water (#19) [0x27] (0x20) 👃 Sniffed Water (#30) [0x27] (0x40) 👃 Sniffed Clay (#9) [0x27] (0x80) |
Byte [SRAM] | Sniff spot flags — North Jungle [0x41] Mammoth Graveyard [0x27] |
| 0x22a5 | 👃 Sniffed Clay (#4) [0x27] (0x01) 👃 Sniffed Clay (#5) [0x27] (0x02) 👃 Sniffed Clay (#10) [0x27] (0x04) 👃 Sniffed Clay (#20) [0x27] (0x08) 👃 Sniffed Clay (#23) [0x27] (0x10) 👃 Sniffed Roots (#11) [0x27] (0x20) 👃 Sniffed Roots (#21) [0x27] (0x40) 👃 Sniffed Roots (#29) [0x27] (0x80) |
Byte [SRAM] | Sniff spot flags — Mammoth Graveyard [0x27] |
| 0x22a6 | 👃 Sniffed Roots (#16) [0x27] (0x01) 👃 Sniffed Roots (#26) [0x27] (0x02) 👃 Sniffed Roots (#18) [0x27] (0x04) 👃 Sniffed Oil (#13) [0x27] (0x08) 👃 Sniffed Oil (#25) [0x27] (0x10) 👃 Sniffed Oil (#8) [0x27] (0x20) 👃 Sniffed Oil (#2) [0x27] (0x40) 👃 Sniffed Ash (#17) [0x27] (0x80) |
Byte [SRAM] | Sniff spot flags — Mammoth Graveyard [0x27] |
| 0x22a7 | 👃 Sniffed Ash (#15) [0x27] (0x01) 👃 Sniffed Ash (#14) [0x27] (0x02) 👃 Sniffed Ash (#7) [0x27] (0x04) 👃 Sniffed Ash (#6) [0x27] (0x08) 👃 Sniffed Ash (#12) [0x27] (0x10) 👃 Sniffed Ash (#22) [0x27] (0x20) 👃 Sniffed Ash (#24) [0x27] (0x40) 👃 Sniffed Wax (#28) [0x27] (0x80) |
Byte [SRAM] | Sniff spot flags — Mammoth Graveyard [0x27] |
| 0x22a8 | 👃 Sniffed Wax (#27) [0x27] (0x01) ? (0x02/0x04/0x08/0x10/0x20/0x40/0x80) |
Byte [SRAM] | Sniff spot flags — Mammoth Graveyard [0x27] |
| 0x22a9 | ? (0x01/0x02/0x04/0x08/0x10/0x20/0x40/0x80) | Byte [SRAM] | Object persistence flags |
| 0x22aa | ? (0x01/0x02/0x04/0x08/0x10/0x20/0x40/0x80) | Byte [SRAM] | Object persistence flags |
| 0x22ab | ? (0x01/0x02/0x04/0x08/0x10/0x20) 📖 FLOWERS_CUTSCENE_WATCHED (0x40) 👃 Sniffed Water (#12) [0x3b] (0x80) |
Byte [SRAM] | |
| 0x22ac | 👃 Sniffed Water (#13) [0x3b] (0x01) 👃 Sniffed Water (#14) [0x3b] (0x02) 👃 Sniffed Water (#15) [0x3b] (0x04) 👃 Sniffed Water (#16) [0x3b] (0x08) 👃 Sniffed Clay (#17) [0x3b] (0x10) 👃 Sniffed Clay (#18) [0x3b] (0x20) 👃 Sniffed Clay (#19) [0x3b] (0x40) 👃 Sniffed Clay (#20) [0x3b] (0x80) |
Byte [SRAM] | Sniff spot flags — Volcano Room 2 [0x3b] |
| 0x22ad | 👃 Sniffed Clay (#21) [0x3b] (0x01) 👃 Sniffed Clay (#22) [0x3b] (0x02) 👃 Sniffed Clay (#23) [0x3b] (0x04) 👃 Sniffed Roots (#24) [0x3b] (0x08) 👃 Sniffed Oil (#25) [0x3b] (0x10) 👃 Sniffed Oil (#26) [0x3b] (0x20) 👃 Sniffed Ash (#27) [0x3b] (0x40) 👃 Sniffed Ash (#28) [0x3b] (0x80) |
Byte [SRAM] | Sniff spot flags — Volcano Room 2 [0x3b] |
| 0x22ae | 👃 Sniffed Ash (#29) [0x3b] (0x01) 👃 Sniffed Ash (#30) [0x3b] (0x02) 👃 Sniffed Ash (#31) [0x3b] (0x04) 👃 Sniffed Ash (#32) [0x3b] (0x08) 👃 Sniffed Ash (#33) [0x3b] (0x10) 👃 Sniffed Wax (#34) [0x3b] (0x20) 👃 Sniffed Wax (#35) [0x3b] (0x40) 👃 Sniffed Wax (#36) [0x3b] (0x80) |
Byte [SRAM] | Sniff spot flags — Volcano Room 2 [0x3b] |
| 0x22af | (gap) | Byte×1 [SRAM] | Unmapped |
| 0x22b0 | ? (0x01/0x02/0x04/0x08/0x10/0x20) 👃 Sniffed Water (#8) [0x3e] (0x40) 👃 Sniffed Water (#9) [0x3e] (0x80) |
Byte [SRAM] | Sniff spot flags — Pipe Side Rooms [0x3e] |
| 0x22b1 | 👃 Sniffed Water (#10) [0x3e] (0x01) 👃 Sniffed Clay (#11) [0x3e] (0x02) 👃 Sniffed Roots (#12) [0x3e] (0x04) 👃 Sniffed Oil (#13) [0x3e] (0x08) 👃 Sniffed Ash (#15) [0x3e] (0x10) 👃 Sniffed Ash (#14) [0x3e] (0x20) 👃 Sniffed Wax (#16) [0x3e] (0x40) ? (0x80) |
Byte [SRAM] | Sniff spot flags — Pipe Side Rooms [0x3e] |
| 0x22b2 | ? (0x01/0x02/0x04/0x08/0x10/0x20/0x40) 👃 Sniffed Water (#9) [0x66] (0x80) |
Byte [SRAM] | Sniff spot flags — West of Swamp [0x66] |
| 0x22b3 | 👃 Sniffed Water (#13) [0x66] (0x01) 👃 Sniffed Water (#1) [0x66] (0x02) 👃 Sniffed Roots (#2) [0x66] (0x04) 👃 Sniffed Roots (#3) [0x66] (0x08) 👃 Sniffed Roots (#8) [0x66] (0x10) 👃 Sniffed Oil (#10) [0x66] (0x20) 👃 Sniffed Oil (#11) [0x66] (0x40) 👃 Sniffed Wax (#12) [0x66] (0x80) |
Byte [SRAM] | Sniff spot flags — West of Swamp [0x66] |
| 0x22b4 | 👃 Sniffed Wax (#4) [0x66] (0x01) 👃 Sniffed Water (#6) [0x5c] (0x02) 👃 Sniffed Oil (#8) [0x5c] (0x04) 👃 Sniffed Crystal (#7) [0x5c] (0x08) 👃 Sniffed Crystal (#9) [0x5c] (0x10) 👃 Sniffed Ethanol (#1) [0x4f] (0x20) 👃 Sniffed Ethanol (#2) [0x4f] (0x40) 👃 Sniffed Ethanol (#3) [0x4f] (0x80) |
Byte [SRAM] | Object persistence flags: Raptors [0x5c] West of Swamp [0x66] East of Crustacia [0x4f] (high bits) |
| 0x22b5 | 👃 Sniffed Ethanol (#4) [0x4f] (0x01) 👃 Sniffed Roots (#5) [0x4f] (0x02) 👃 Sniffed Limestone (#6) [0x4f] (0x04) 👃 Sniffed Limestone (#7) [0x4f] (0x08) 👃 Sniffed Wax (#8) [0x4f] (0x10) 👃 Sniffed Wax (#9) [0x4f] (0x20) 👃 Sniffed Wax (#10) [0x4f] (0x40) 👃 Sniffed Vinegar (#11) [0x4f] (0x80) |
Byte [SRAM] | Sniff persistence flags — East of Crustacia [0x4f] sniffs #4–#11; full byte used by [0x4f] |
| 0x22b6 | 👃 Sniffed Bone (#12) [0x4f] (0x01) 👃 Sniffed Brimstone (#13) [0x4f] (0x02) 👃 Sniffed Brimstone (#14) [0x4f] (0x04) 👃 Sniffed Water (#1) [0x1c] (0x08) 👃 Sniffed Water (#2) [0x1c] (0x10) 👃 Sniffed Water (#3) [0x1c] (0x20) 👃 Sniffed Oil (#4) [0x1c] (0x40) 👃 Sniffed Oil (#5) [0x1c] (0x80) |
Byte [SRAM] | Sniff persistence flags — East of Crustacia [0x4f] (low bits) + North of Market [0x1c] (high bits) |
| 0x22b7 | 👃 Sniffed Crystal (#6) [0x1c] (0x01) 👃 Sniffed Crystal (#7) [0x1c] (0x02) 👃 Sniffed Clay (#8) [0x1c] (0x04) 👃 Sniffed Clay (#9) [0x1c] (0x08) 👃 Sniffed Clay (#10) [0x1c] (0x10) 👃 Sniffed Vinegar (#11) [0x1c] (0x20) 👃 Sniffed Vinegar (#12) [0x1c] (0x40) 👃 Sniffed Vinegar (#13) [0x1c] (0x80) |
Byte [SRAM] | Sniff spot flags — North of Market [0x1c] |
| 0x22b8 | 👃 Sniffed Atlas Medallion (#14) [0x1c] (0x01) 👃 Sniffed Brimstone×2 (#0) [0x2b] (0x02) 👃 Sniffed Brimstone (#1) [0x2b] (0x04) 👃 Sniffed Brimstone×3 (#2) [0x2b] (0x08) 👃 Sniffed Brimstone×2 (#3) [0x2b] (0x10) 👃 Sniffed Limestone (#4) [0x2b] (0x20) 👃 Sniffed Limestone×2 (#5) [0x2b] (0x40) 👃 Sniffed Limestone×3 (#6) [0x2b] (0x80) |
Byte [SRAM] | 0x01 = key-item sniff [0x1c]; 0x02–0x80 = sniff persistence flags [0x2b] spots #0–6 (Brimstone×2/1/3/2, Limestone×1/2/3); gates OBJ unload 0–6 on [0x2b] entry |
| 0x22b9 | 👃 Sniffed Bone×2 (#7) [0x2b] (0x01) 👃 Sniffed Bone×2 (#8) [0x2b] (0x02) 👃 Sniffed Bone×2 (#9) [0x2b] (0x04) 👃 Sniffed Ethanol×2 (#10) [0x2b] (0x08) 👃 Sniffed Ethanol (#11) [0x2b] (0x10) 👃 Sniffed Ethanol×4 (#12) [0x2b] (0x20) 👃 Sniffed Ash (#13) [0x2b] (0x40) 👃 Sniffed Ash×3 (#14) [0x2b] (0x80) |
Byte [SRAM] | Sniff persistence flags — Outside of Halls [0x2b] sniffs #7–14 (Bone×2×3, Ethanol×2/1/4, Ash×1/3); gates OBJ unload 7–14 on [0x2b] entry |
| 0x22ba | 👃 Sniffed Ethanol (#2) [0x2f] (0x20) 👃 Sniffed Crystal (#16) [0x2f] (0x10) 👃 Sniffed Clay (#17) [0x2f] (0x08) 👃 Sniffed Roots (#18) [0x2f] (0x80) 👃 Sniffed Roots (#19) [0x2f] (0x40) 👃 Sniffed Clay (#20) [0x2f] (0x04) 👃 Sniffed Oil (#21) [0x2f] (0x02) 👃 Sniffed Ash (#15) [0x2b] (0x01) |
Byte [SRAM] | 0x02–0x80 = sniff flags [0x2f] Horace's Camp sniffs #2/#4–#21 (non-sequential bit assignment); 0x01 = sniff #15 [0x2b] (Outside of Halls); all bits gate OBJ unload on respective room entry |
| 0x22bb | 👃 Sniffed Roots (#3) [0x2f] (0x01) 👃 Sniffed Limestone (#5) [0x2f] (0x02) 👃 Sniffed Limestone (#6) [0x2f] (0x04) 👃 Sniffed Wax (#4) [0x2f] (0x08) 👃 Sniffed Water (#15) [0x2f] (0x10) 👃 Sniffed Water (#7) [0x2f] (0x20) 👃 Sniffed Vinegar (#8) [0x2f] (0x40) 👃 Sniffed Ash (#9) [0x2f] (0x80) |
Byte [SRAM] | Sniff persistence flags — Horace's Camp [0x2f] sniffs #3–#9 + #15; also gates OBJ unload on room entry |
| 0x22bc | 👃 Sniffed Bone (#10) [0x2f] (0x01) 👃 Sniffed Bone (#11) [0x2f] (0x02) 👃 Sniffed Bone (#12) [0x2f] (0x04) 👃 Sniffed Brimstone (#13) [0x2f] (0x08) 👃 Sniffed Brimstone (#14) [0x2f] (0x10) 👃 Sniffed Oil (#1) [0x4b] (0x20) 👃 Sniffed Oil (#2) [0x4b] (0x40) 👃 Sniffed Oil (#3) [0x4b] (0x80) |
Byte [SRAM] | Sniff persistence flags — [0x2f] Horace's Camp sniffs #10–#14 (bits 0x01–0x10); [0x4b] Oglin Cave Oil sniffs #1–#3 (bits 0x20–0x80) |
| 0x22bd | 👃 Sniffed Clay (#4) [0x4b] (0x01) 👃 Sniffed Clay (#5) [0x4b] (0x02) 👃 Sniffed Clay (#6) [0x4b] (0x04) 👃 Sniffed Clay (#7) [0x4b] (0x08) 👃 Sniffed Crystal (#8) [0x4b] (0x10) 👃 Sniffed Crystal (#9) [0x4b] (0x20) 👃 Sniffed Ethanol (#10) [0x4b] (0x40) 👃 Sniffed Ethanol (#11) [0x4b] (0x80) |
Byte [SRAM] | Sniff persistence flags — Oglin Cave [0x4b] sniffs #4–#11 |
| 0x22be | 👃 Sniffed Ethanol (#12) [0x4b] (0x01) 👃 Sniffed Roots (#13) [0x4b] (0x02) 👃 Sniffed Limestone (#14) [0x4b] (0x04) 👃 Sniffed Limestone (#15) [0x4b] (0x08) 👃 Sniffed Limestone (#16) [0x4b] (0x10) 👃 Sniffed Limestone (#17) [0x4b] (0x20) 👃 Sniffed Wax (#18) [0x4b] (0x40) 👃 Sniffed Wax (#19) [0x4b] (0x80) |
Byte [SRAM] | Sniff persistence flags — Oglin Cave [0x4b] sniffs #12–#19 |
| 0x22bf | 👃 Sniffed Water (#20) [0x4b] (0x01) 👃 Sniffed Water (#21) [0x4b] (0x02) 👃 Sniffed Water (#22) [0x4b] (0x04) 👃 Sniffed Water (#23) [0x4b] (0x08) 👃 Sniffed Vinegar (#24) [0x4b] (0x10) 👃 Sniffed Vinegar (#25) [0x4b] (0x20) 👃 Sniffed Ash (#26) [0x4b] (0x40) 👃 Sniffed Bone (#27) [0x4b] (0x80) |
Byte [SRAM] | Sniff persistence flags — Oglin Cave [0x4b] sniffs #20–#27 |
| 0x22c0 | 👃 Sniffed Bone (#28) [0x4b] (0x01) 👃 Sniffed Bone (#29) [0x4b] (0x02) 👃 Sniffed Brimstone (#30) [0x4b] (0x04) 👃 Sniffed Brimstone (#31) [0x4b] (0x08) 👃 Sniffed Ethanol (#1) [0x07] (0x10) 👃 Sniffed Ethanol (#2) [0x07] (0x20) 👃 Sniffed Vinegar (#3) [0x07] (0x40) 👃 Sniffed Limestone (#4) [0x07] (0x80) |
Byte [SRAM] | Sniff persistence flags — [0x4b] Oglin Cave Bone/Brimstone sniffs #28–#31 (bits 0x01–0x08); [0x07] West of Crustacia sniffs #1–#4 (bits 0x10–0x80) |
| 0x22c1 | 👃 Sniffed Limestone (#5) [0x07] (0x01) 👃 Sniffed Brimstone (#6) [0x07] (0x02) 👃 Sniffed Brimstone (#7) [0x07] (0x04) 👃 Sniffed Wax (#8) [0x07] (0x08) 👃 Sniffed Ash (#9) [0x07] (0x10) 👃 Sniffed Roots (#10) [0x07] (0x20) 👃 Sniffed Water (#11) [0x07] (0x40) 👃 Sniffed Water (#12) [0x07] (0x80) |
Byte [SRAM] | Sniff persistence flags — West of Crustacia [0x07] sniffs #5–#12; full byte used by [0x07]; enter script unloads objs 5–12 if bits set |
| 0x22c2 | 👃 Sniffed Gunpowder (#10) [0x7e] (0x01) 👃 Sniffed Gunpowder (#11) [0x7e] (0x02) 👃 Sniffed Grease (#12) [0x7e] (0x04) 👃 Sniffed Grease (#13) [0x7e] (0x08) 👃 Sniffed Meteorite (#14) [0x7e] (0x10) 👃 Sniffed Dry Ice (#15) [0x7e] (0x20) 👃 Sniffed Iron (#16) [0x7e] (0x40) 👃 Sniffed Iron (#17) [0x7e] (0x80) |
Byte [SRAM] | Sniff persistence flags — Omnitopia Jail [0x7e] sniff spots #10–#17; enter script unloads OBJ indices 0x0a–0x11 if corresponding bits set |
| 0x22c3 | 👃 Sniffed Crystal (#18) [0x7e] (0x01) 👃 Sniffed Wax (#19) [0x7e] (0x02) 👃 Sniffed Brimstone (#20) [0x7e] (0x04) 👃 Sniffed Brimstone (#21) [0x7e] (0x08) 👃 Sniffed Wax (#16) [0x06] (0x10) 👃 Sniffed Wax (#17) [0x06] (0x20) 👃 Sniffed Wax (#18) [0x06] (0x40) 👃 Sniffed Wax (#19) [0x06] (0x80) |
Byte [SRAM] | Sniff persistence flags — Omnitopia Jail [0x7e] sniffs #18–#21 (bits 0x01–0x08); Outside of 'mids [0x06] sniffs #16–#19 (bits 0x10–0x80) |
| 0x22c4 | 👃 Sniffed Ash (#20) [0x06] (0x01) 👃 Sniffed Ash (#21) [0x06] (0x02) 👃 Sniffed Bone (#22) [0x06] (0x04) 👃 Sniffed Bone (#23) [0x06] (0x08) 👃 Sniffed Bone (#24) [0x06] (0x10) 👃 Sniffed Brimstone (#25) [0x06] (0x20) 👃 Sniffed Brimstone (#26) [0x06] (0x40) 👃 Sniffed Brimstone (#27) [0x06] (0x80) |
Byte [SRAM] | Sniff persistence flags — Outside of 'mids [0x06] sniffs #20–#27; enter script unloads OBJs 20–27 if bits set |
| 0x22c5 | 👃 Sniffed Brimstone (#28) [0x06] (0x01) 👃 Sniffed Water (#29) [0x06] (0x02) 👃 Sniffed Limestone (#30) [0x06] (0x04) 👃 Sniffed Limestone (#31) [0x06] (0x08) 👃 Sniffed Roots (#32) [0x06] (0x10) 👃 Sniffed Roots (#33) [0x06] (0x20) 👃 Sniffed Roots (#34) [0x06] (0x40) 👃 Sniffed Vinegar (#35) [0x06] (0x80) |
Byte [SRAM] | Sniff persistence flags — Outside of 'mids [0x06] sniffs #28–#35; enter script unloads OBJs 28–35 if bits set |
| 0x22c6 | 📖 Free Call Bead given [0x4c] (0x01) 👃 Sniffed Iron (#4) [0x76] (0x02) 👃 Sniffed Iron (#5) [0x76] (0x04) 👃 Sniffed Acorns (#6) [0x76] (0x08) 👃 Sniffed Acorns (#7) [0x76] (0x10) 👃 Sniffed Mushroom (#8) [0x76] (0x20) 👃 Sniffed Mushroom (#9) [0x76] (0x40) 👃 Sniffed Mushroom (#10) [0x76] (0x80) |
Byte [SRAM] | Set when fountain plaza easter egg awards a Call Bead; prevents re-award. Bits 0x02–0x80 = sniff persistence flags [0x76] South of Ivor Tower (Gate) sniffs #4–#10 |
| 0x22c7 | 👃 Sniffed Feather (#11) [0x76] (0x01) 👃 Sniffed Feather (#12) [0x76] (0x02) 👃 Sniffed Brimstone (#13) [0x76] (0x04) 👃 Sniffed Water (#14) [0x76] (0x08) 👃 Sniffed Roots (#15) [0x76] (0x10) 👃 Sniffed Roots (#16) [0x76] (0x20) 👃 Sniffed Ethanol (#17) [0x76] (0x40) 👃 Sniffed Ash (#18) [0x76] (0x80) |
Byte [SRAM] | Sniff persistence flags [0x76] South of Ivor Tower (Gate) sniffs #11–#18; enter script unloads OBJs 11–18 if bits set |
| 0x22c8 | 👃 Sniffed Ash (#19) [0x76] (0x01) ? (0x02/0x04/0x08/0x10/0x20/0x40/0x80) |
Byte [SRAM] | Bit 0x01 = sniff #19 persistence flag [0x76]; enter script unloads OBJ 19 if set; remaining bits unmapped |
| 0x22c9…0x22ce | (gap) | Byte×6 [SRAM] | Unmapped |
| 0x22cf | ? (0x01/0x02/0x04/0x08) 💰 2500 Gold Coins chest looted [0x0b] (0x10) 👃 Sniffed Vinegar (#3) [0x0b] (0x20) 👃 Sniffed Vinegar (#4) [0x0b] (0x40) 👃 Sniffed Water (#1) [0x0b] (0x80) |
Byte [SRAM] | Object persistence flags — Palace Grounds [0x0b] |
| 0x22d0 | 👃 Sniffed Water (#2) [0x0b] (0x01) 👃 Sniffed Water (#5) [0x0b] (0x02) 👃 Sniffed Roots (#6) [0x0b] (0x04) 👃 Sniffed Roots (#7) [0x0b] (0x08) 👃 Sniffed Bone (#8) [0x0b] (0x10) 👃 Sniffed Bone (#9) [0x0b] (0x20) 👃 Sniffed Limestone (#10) [0x0b] (0x40) 👃 Sniffed Vinegar (#7) [0x4c] (0x80) |
Byte [SRAM] | Sniff spot flags — Palace Grounds [0x0b] + Fountain Plaza [0x4c] |
| 0x22d1 | 👃 Sniffed Water (#3) [0x4c] (0x01) 👃 Sniffed Water (#4) [0x4c] (0x02) 👃 Sniffed Limestone (#5) [0x4c] (0x04) 👃 Sniffed Limestone (#6) [0x4c] (0x08) 👃 Sniffed Ethanol (#9) [0x05] (0x10) 👃 Sniffed Ethanol (#10) [0x05] (0x20) 👃 Sniffed Roots (#11) [0x05] (0x40) 👃 Sniffed Roots (#12) [0x05] (0x80) |
Byte [SRAM] | Sniff spot flags — Fountain Plaza [0x4c] (low bits) + Between 'Mids and Halls [0x05] (high bits) |
| 0x22d2 | 👃 Sniffed Roots (#13) [0x05] (0x01) 👃 Sniffed Roots (#14) [0x05] (0x02) 👃 Sniffed Limestone (#15) [0x05] (0x04) 👃 Sniffed Limestone (#16) [0x05] (0x08) 👃 Sniffed Wax (#17) [0x05] (0x10) 👃 Sniffed Wax (#18) [0x05] (0x20) 👃 Sniffed Water (#19) [0x05] (0x40) 👃 Sniffed Vinegar (#20) [0x05] (0x80) |
Byte [SRAM] | Sniff spot flags — Between 'Mids and Halls [0x05] |
| 0x22d3 | 👃 Sniffed Vinegar (#21) [0x05] (0x01) 👃 Sniffed Bone (#22) [0x05] (0x02) 👃 Sniffed Ash (#5) [0x36] (0x04) 👃 Sniffed Clay (#6) [0x36] (0x08) 👃 Sniffed Oil (#3) [0x36] (0x10) 👃 Sniffed Oil (#4) [0x36] (0x20) ? (0x40/0x80) |
Byte [SRAM] | Sniff spot flags — Between 'Mids and Halls [0x05] (low bits) + Fire Pit area [0x36] (mid bits) |
| 0x22d4…0x22d7 | (gap) | Byte×4 [SRAM] | Unmapped |
| 0x22d8 | ⚙️ OBJ 0 triggered [0x07] (0x20) 📖 Diamond Eye #1 obtained / Rimsala beaten [0x58] (0x40) 📖 Diamond Eye #2 obtained — Megatuar defeated (Halls) [0x2a] (0x80) 🛡️ Hidden item: Iron Bracer GLOVE_3_1 (0x041f) looted [0x74] (0x04) ? (0x01/0x02/0x08/0x10) |
Byte [SRAM] | 0x20 set by B-trigger in [0x07] when alchemy conditions met ($235f≥12 AND $2360==2); controls whether to unload OBJ 0 on room entry; 0x40 gates Rimsala fight setup in [0x58] enter (if set: skip NPC load, play music only); 0x80 set in Megatuar kill script 0x1998 (labeled "Diamond Eye Halls"), together 0x40+0x80 checked in [0x05] Diamond Eyes theft trigger; 0x04 set by west-castle B-trigger at [2a,1b:2b,1c] in [0x74] via "Loot nature?" (0x39) when $22ea&0x01
|
| 0x22d9 | 📖 Horace met/Madronius spawned [0x2f] (0x01) ? (0x02/0x04) 📖 Aegis dead [0x09] (0x08) ? (0x10) 📖 Diamond Eyes stolen (Madronius theft) [0x05] (0x20) 📖 First Sting Man greeting shown [0x1b] (0x40) ? (0x80) |
Byte [SRAM] | 0x01 SET in [0x2f] Horace first-meet step-on; read in [0x09] Aegis kill for dialogue variant and in [0x2f] enter to conditionally load Madronius; 0x08 set in Aegis kill [0x09], gates crater/statue objects in [0x08] and dialogue in [0x08]/[0x0a]; 0x20 set in [0x05] at start of Diamond Eyes theft cutscene, prevents replay; 0x40 set first time talking to Sting Man shuttle NPC in [0x1b], prevents re-intro dialog |
| 0x22da | ? (0x01) ⚔️ SWORD_1 (0x02) ⚔️ SWORD_2 (0x04) ⚔️ SWORD_3 (0x08) ⚔️ SWORD_4 (0x10) ⚔️ AXE_1 (0x20) ⚔️ AXE_2 (0x40) ⚔️ AXE_3 (0x80) |
Byte [SRAM] | Bone Crusher (SWORD_1) Gladiator Sword (SWORD_2) Crusader Sword (SWORD_3) Neutron Blade (SWORD_4) Spider's Claw (AXE_1) Bronze Axe (AXE_2) Knight Basher (AXE_3) |
| 0x22db | ⚔️ AXE_4 (0x01) ⚔️ SPEAR_1 (0x02) ⚔️ SPEAR_2 (0x04) ⚔️ SPEAR_3 (0x08) ⚔️ SPEAR_4 (0x10) ⚔️ BAZOOKA (0x20) ⚗️ Horace's Aura alchemy known [0x76] (0x40) ⚗️ Horace's Regenerate owned [0x55] (0x80) |
Byte [SRAM] | Atom Smasher (AXE_4) Horn Spear (SPEAR_1) Bronze Spear (SPEAR_2) Lance (SPEAR_3) Laser Lance (SPEAR_4) Bazooka (BAZOOKA); 0x40 set in [0x76] B-trigger when Horace's Aura spell tile collected ($22db |
| 0x22dc | ? (0x01/0x02/0x04) 📖 WINDWALKER_UNLOCKED (0x08) ? (0x10/0x20/0x40/0x80) |
Byte [SRAM] | Set in [0x4d] on first direct (non-animation) entry to palace interior |
| 0x22dd | 📖 Verminator dead [0x5e] (0x01) 📖 Sterling dead [0x37] (0x02) 📖 Timberdrake dead [0x20] (0x04) 📖 East castle (Ebon Keep) active [0x13→0x12, 0x7b, 0x7c, 0x7d] (0x40) ? (0x08/0x10/0x20/0x80) |
Byte [SRAM] | 0x01 set in Verminator kill script [0x5e]; gates east-castle staircase in [0x74] to 0x0d and music switch in [0x5f]; 0x02 set in Sterling kill script [0x37]; gates Sterling NPC spawn in [0x37] and Mungola boss path in [0x77]; 0x04 set in Timberdrake kill script [0x20]; gates Timberdrake spawn and music in [0x20]; 0x40 set by step-on [15,12:17,13] in [0x13] before CHANGE MAP to 0x12 (Ebon Keep Sewers); also used throughout [0x7b]/[0x7c]/[0x7d] to control music dispatch, NPC loading, gourd contents, and top-gate destination (east=0x5d Ebon Keep Courtyard, west=0x6e Ivor Tower Hall) |
| 0x22de | ? (0x01/0x08/0x10/0x20/0x40) 📖 North gate trigger stepped [0x7c] (0x02) 📖 Queen Below Chessboard cutscene watched [0x78] (0x04) 📖 Talked to Cecil [0x7d room 5 east] (0x80) |
Byte [SRAM] | 0x02 set by in-room gate step-on [34,0b:3a,0c] in [0x7c] when east castle flag set; 0x04 set in [0x78] during "Queen Below Chessboard" cutscene path (one-shot guard; prevents replay on re-entry); 0x80 set by Cecil NPC interact in [0x7d] sub-area 5 east hall |
| 0x22df | ⚙️ NPC position flag [0x07] (0x04) 📖 Rock scene pending [0x4f] (0x10) 📖 Rock landed (Crustacia rock) [0x4f] (0x20) ⚙️ Crustacia elevator top position [0x68] (0x02) ? (0x01/0x08/0x40/0x80) |
Byte [SRAM] | 0x02: set when elevator is in upper position ([0x68] step-on), cleared when returned to bottom; 0x04: NPC 0x20 at west [0x11,0x0f] vs east [0x31,0x0f] in [0x07]; toggled by step-ons, persists between entries; 0x10: set externally to trigger rock-landing cutscene on next [0x4f] entry; 0x20: set during rock cutscene (`$22df |
| 0x22e0 | ⚙️ Gear puzzle active [0x06] (0x02) ⚙️ Left gear turned [0x06] (0x04) ⚙️ Right gear turned [0x06] (0x08) ⚙️ 'mids bottom gear A [0x55] (0x10) ⚙️ 'mids bottom gear B [0x55] (0x20) ⚙️ 'mids bottom gear C [0x55] (0x40) ⚙️ 'mids bottom gear D [0x55] (0x80) ? (0x01) |
Byte [SRAM] | Gear/pulley puzzle state: [0x06] 0x02/0x04/0x08 for outside gear puzzle; [0x55] 0x10/0x20/0x40/0x80 for four internal gear puzzles; each bit activates OBJ pair (A=OBJ4/0; B=OBJ5/2; C=OBJ6/1; D=OBJ7/3) |
| 0x22e1 | ⚙️ Mechanism A-1 activated [0x55] (0x01) ⚙️ Mechanism A-2 activated [0x55] (0x02) ⚙️ Mechanism B activated [0x55] (0x04) ⚙️ Mechanism C entry dir [0x55] (0x08) ⚙️ Mechanism D entry dir [0x55] (0x10) ⚙️ Exit N-left done [0x55] (0x20) ⚙️ Exit N-right done [0x55] (0x40) ⚙️ Neutron Blade step 2 — OBJ 12 [0x55] (0x80) |
Byte [SRAM] | 'mids bottom mechanism and puzzle state flags; OBJ state restored on entry from these bits (sub 0x95900a) |
| 0x22e2 | ⚙️ Neutron Blade step 3 — OBJ 13 [0x55] (0x01) ⚙️ Neutron Blade step 1 — OBJ 14 [0x55] (0x02) ⚙️ Neutron Blade step 5 — OBJ 15 + dog freed [0x55] (0x04) ⚙️ Neutron Blade step 4 — OBJ 16 [0x55] (0x08) ⚙️ Gear puzzle A activated [0x56] (0x10) ⚙️ Gear puzzle B activated [0x56] (0x20) 📖 Sons of Shyness defeated [0x55] (0x40) ⚙️ WindWalker obstacles removed [0x57] (0x80) |
Byte [SRAM] | 'mids Neutron Blade + gear puzzle state; 0x01–0x08 = Neutron Blade steps [0x55]; 0x04 also sets `$22e3\ |
| 0x22e3 | 📖 WindWalker gate opened [0x57] (0x01) 📖 Rock wall 1 (OBJ 4) destroyed [0x57] (0x02) 📖 Rock wall 2 (OBJ 5) destroyed [0x57] (0x04) 📖 Rock wall 3 (OBJ 6) destroyed [0x57] (0x08) 📖 Rock wall 4 (OBJ 14) destroyed [0x57] (0x10) 📖 Tiny defeated [0x57] (0x20) 📖 Dog freed from 'mids [0x06] (0x40) 📖 "Dog can't go up this way" message shown [0x06] (0x80) |
Byte [SRAM] | 0x01 = WindWalker gate opened in [0x57] (gates NPC position + OBJ 3 restore); 0x02/0x04/0x08/0x10 = rock walls destroyed by WindWalker/weapon B-triggers [0x57]; 0x20 = Tiny defeated (SET in [0x57], READ in [0x4d]: Horace post-Tiny eulogy branch); 0x40 gates dog-freed enter cutscene and reunite sequence in [0x06], also read in [0x55] enter; 0x80 set by step-on [34,4b:38,4c] in [0x06] when dog tries the steep north path |
| 0x22e4 | 📖 Sons encounter triggered [0x55] (0x01) 📖 Reunite cutscene played [0x06] (0x02) ⚙️ Boy blocked at north exit (dog inside 'mids) [0x06] (0x04) ⚙️ Dog assigned to bottom gear entry [0x06] (0x08) ⚙️ Boy assigned to bottom gear entry [0x06] (0x10) ⚙️ Dog on L gear [0x06] (0x20) ⚙️ Dog on R gear [0x06] (0x40) ⚙️ Boy on L gear [0x06] (0x80) |
Byte [SRAM] | 0x01 set by Sons encounter step-on in [0x55], prevents replay; 0x02 prevents reunite cutscene replay [0x06]; 0x04 set when dog is inside 'mids and boy tries to go north; 0x08/0x10 track gear trigger assignments; 0x20/0x40/0x80 track active gear assignments |
| 0x22e5 | ⚙️ Boy on R gear [0x06] (0x01) ⚙️ 'mids split state flag A [0x06] (0x02) ⚙️ 'mids split state flag B [0x06] (0x04) ⚙️ WW Landing flag [0x36] (0x08) ? (0x10) 📖 Defeated raptors? [0x51] (0x20) 📖 West castle collapsed [0x75] (0x40) ? (0x80) |
Byte [SRAM] | 0x01/0x02/0x04 used by 'mids gear puzzle and split logic in [0x06]; cleared in dog-freed enter sequence; 0x08 set before loading fire pit for WindWalker landing sequence [0x36]; 0x20 set in FE Cutscene 1 [0x51]; 0x40 read in [0x75] to force-unload OBJ 0–4 (stairwell in ruins when west castle has collapsed) |
| 0x22e6 | ? (0x01/0x02) 📖 Reactor ON [0x42] (0x04) 📖 Codes generated [0x43/0x54] (0x08) 📖 Alarm disabled [0x00/0x43] (0x10) 📖 Storage lights on [0x47] (0x20) 📖 Greenhouse lights on [0x44] (0x40) 📖 // MISMATCH: Particle Bombs sold [0x47] vs Secret boss defeated [0x45] (0x80) |
Byte [SRAM] | Omnitopia persistent state flags; 0x04 = reactor switched on [0x42]; 0x08 = access codes generated on first visit to [0x43] or [0x54]; 0x10 = alarm disabled when correct code entered [0x43], suppresses alarm zones in [0x00]; 0x20 = storage room lights on [0x47], prerequisite for B-trigger loot; 0x40 = greenhouse lights on [0x44]; 0x80 // MISMATCH — [0x47] stores doc says "Particle Bombs already sold", [0x45] boss room doc says "Boss defeated" — both claim this same SRAM bit |
| 0x22e7 | 📖 Jail warden (GUARD_BOT) defeated [0x7e] (0x01) ? (0x02) 📖 Switch puzzle throw-animation activated [0x29] (0x04) ⚙️ OBJ 3 bridge-reveal camera pan done [0x24] (0x08) ? (0x10/0x20/0x40/0x80) |
Byte [SRAM] | 0x01 set by warden kill script in [0x7e], enables prisoner cell lever interactions and assigns code values to $2839/$283b/$283d; 0x04 set (one-time) when boy steps on switch tile [1c,12:1e,13] in [0x29] — prevents re-throw animation; success flag is $2834&0x04; 0x08 set after first B-trigger camera pan in [0x24] at [25,22:26,24] — prevents repeat pan |
| 0x22e8 | ? (0x01/0x02/0x04) ⚙️ Tornado/dust devil first-heal done [0x1b] (0x08) 📖 Pig-race gate passed [0x7c] (0x10) ? (0x20/0x40/0x80) |
Byte [SRAM] | 0x08 set on first full-heal by the dust devil (tornado step-on [2c,18:2d,19]) in Desert of Doom [0x1b]; gates repeat healing so boy is only healed once per playthrough by the tornado. 0x10 set after pig-race winner guard cutscene in [0x7c] ($234b=0x89); keeps gate (OBJ 0) permanently open on subsequent entries |
| 0x22e9 | 🛡️ Titanium Vest looted [0x00] (0x01) 🛡️ Old Reliable armor looted [0x42] (0x02) ? (0x04/0x08/0x10) 📖 Potty-mouth curse [0x1b] (0x20) 📖 Minitaur defeated [0x2c] (0x40) ? (0x80) |
Byte [SRAM] | 0x01 = Titanium Vest chest in Alarm Room [0x00] (OBJ 10) looted; enter script unloads OBJ 10 if set; 0x02 = Old Reliable armor chest in Reactor Room [0x42] (OBJ 31) looted; enter script unloads OBJ 31 if set; 0x20 tested in Desert of Doom shuttle dialog: if set, Sting Man demands 3× Amulet of Annihilation and delivers unique "Potty mouth…" lecture; flag presumably set elsewhere in the game (Crustacia dialog); 0x40 read in [0x2c] enter — if set, skip Minitaur spawn, unload OBJ 0, play normal music 0x1e instead of boss music 0x5a |
| 0x22ea | ⚙️ LOOT_SUCCESSFUL (0x01) ⚙️ ? (0x02) ⚙️ EMPTY_SRAM (0x04) ⚙️ ? (0x08/0x10/0x20/0x40) ⚙️ SHOW_HUD (0x80) |
Byte [SRAM] | Engine system flags; bit 2 (0x0004) marks cold boot SRAM initialization completed. |
| 0x22eb | ⚙️ ? (0x01) ⚙️ START_PRESSED (0x02) ⚙️ INTRO_DEMO_MODE (0x04) ⚙️ DEBUG (0x08) ⚙️ ? (0x10) ⚙️ IN_ANIMATION (0x20) 📖 Door-open animation pending [0x0a/0x08/0x7b/0x7c/0x7d] (0x40) 📖 Prophet prediction gate [0x0a] (0x80) |
Byte [SRAM] | [BOOLEAN]; 0x40 set in [0x0a/0x08] for inn entry animation; also set in [0x7b]/[0x7c]/[0x7d] interior exit scripts so enter script plays door-open SFX+animation on next exterior entry; general "play entry animation next time" flag |
| 0x22ec | ? (0x01/0x02/0x04/0x08) 📖 East hall sub-state [0x7d] (0x10) 📖 Walk-in monologue from spy cutscene [0x1c] (0x20) 📖 Inn entry variant [0x0a/0x08] (0x40) ? (0x80) |
Byte [SRAM] | 0x10 controls NPC set loaded in [0x7d] sub-areas 6/7/8: when set = east hall NPC configuration; 0x20 set in FE Cutscene 3 [0x51]; also set in [0x4d] spy-cutscene exit, cleared after walk-in speech in [0x1c] |
| 0x22ed | ? (0x01) ? (0x02) ? (0x04) 📖 Crustacia intro to be shown [0x6d kill→0x6c] (0x08) ? (0x10) 📖 Warehouse merchant greeting seen [0x0c] (0x20) ? (0x40) ⚙️ Falling into a pit [0x05/0x06] (0x80) |
Byte [SRAM] | 0x08 set by Aquagoth kill script [0x6d] before CHANGE MAP to 0x6c; consumed in [0x6c] SE Well enter script to trigger well intro cutscene (dog emerges as Poodle); // TODO: MISMATCH — prior note said "consumed in [0x68] (Crustacia)" but script evidence shows consumption in [0x6c]; 0x04 tested in [0x5c] raptor fight (set by BOY_RAPTORS_SCREEN, core.evs line 189); also gates FE Cutscene 1 in [0x51]; 0x02 in shop_buy (core.evs line 7461); 0x80 set in [0x05] and [0x06] pit-fall step-ons before loading Horace's camp, tells destination the player arrived via pit-fall (noted as "Falling into a pit" in sewers script, core.evs line 11976) |
| 0x22ee | 📖 Arena/Halls arrival routing flag [0x1e/0x29] (0x01) ⚙️ Ingredient shop open [0x54] (0x02) 📖 Side rooms corridor dialog shown [0x3e] (0x04) ? (0x08/0x10/0x20) 📖 Crush dialog in-progress [0x4f] (0x40) 📖 Mungola defeated / castle collapse triggered [0x77→0x78] (0x80) |
Byte [SRAM] | 0x01 read in [0x1e] enter — if set, skip Pompolonius intro and teleport to exit positions; also read in [0x30] section 1 entry — if set, teleport boy/dog to [0x24,0x19/0x1d] then clear; set by Sacred Dog ceremony in [0x08] before CHANGE MAP to [0x1e]; cleared in [0x34] enter script; also set as FE→hut transition flag in [0x51]; also read in [0x29] enter — if set, teleport both to north entrance [0x3f,0x0d] and clear; // TODO: MISMATCH — [0x7d] room 5 east uses $22ee&0x01 as "entry from professor's lab" reposition flag (teleports boy to [69,11] and clears); may share semantic with "special entry routing" but target room differs; 0x02 = ingredient shop currently open flag in [0x54] (written True/False in shop_buy, core.evs line 7468); 0x40 set at start of Crush cutscene in [0x4f], cleared at end; 0x80 set in [0x77] on Mungola kill before CHANGE MAP to 0x78; consumed in [0x78] enter to trigger castle-collapse escape cutscene |
| 0x22ef | ? (0x01) 📖 Market reminder dialog shown [0x0a/0x08] (0x02) ? (0x04/0x08/0x10/0x20/0x40/0x80) |
Byte [SRAM] | 0x02 gates "This place is empty!" message in [0x0a]; cleared by Sacred Dog cutscene in [0x08] and again at start of Aegis kill script [0x09] |
| 0x22f1 | ? (0x01/0x02/0x04/0x08/0x10) FE visited or post-WW? [0x51] (0x20) 📖 OUTRO [0x08/0x6a/0x3a/0x46] (0x40) 📖 Outro phase 2 — friends-arrive cutscene [0x46] (0x80) |
Byte [SRAM] | 0x40 triggers Square outro cutscene in [0x08]; also set before loading [0x3a] fire pit for WindWalker launch cinematic; also used as outro active flag in [0x46] Professor's Lab; 0x80 set in [0x46] second outro phase when Horace + Fire Eyes drop in |
| 0x22f2 | 📖 in credits [0x08] (0x01) ? (0x02) ⚙️ Elevator initialized [0x68] (0x04) ⚙️ Dog 'stay here' instruction shown [0x68] (0x08) 📖 "Tiny and his shame must have left" message shown [0x57] (0x10) 📖 "Tiny must be around" hint shown [0x57] (0x20) 📖 Horace met post-WindWalker [0x4d] (0x40) 📖 Palace gate guard easter egg seen [0x4c] (0x80) |
Byte [SRAM] | 0x01: [0x5b] enter branches to credits; 0x04 set on first elevator use in [0x68]; 0x08 set on first dog staircase 'stay here' prompt in [0x68]; 0x40 set in [0x4d] when Horace gives Oglin warning; 0x80 set in [0x4c] left guard B-trigger on 2nd denied visit |
| 0x22f3 | 📖 Crush dialog to be shown [0x4d→0x4f] (0x01) ? (0x02/0x04) 📖 Coming from north end of Desert [0x1b → 0x0a] (0x08) 📖 Shuttle accepted / ride paid [0x1b] (0x10) 📖 SALABOG (0x20) ⚙️ Spike panel state changed in [0x23] (0x40) 📖 Wings drop cutscene trigger [0x29] (0x80) |
Byte [SRAM] | 0x01 set in [0x4d] Path A2 when dog enters the palace (Sacred Dog ceremony scene); consumed in [0x4f] enter script to trigger Crush introduction cutscene (awards Crush formula + ingredient shop 0x000b), then cleared; 0x08 set in [0x1b] north-exit tile before loading 0x0a, tells the Market the player arrived from the desert north end; 0x10 set when player pays Sting Man for shuttle ride, cleared after ride animation completes; 0x40 set during [0x23] spike toggle step-ons when any panel changes state — gates SFX 0x76 ×3 within the same script execution (not consumed/cleared by enter script); 0x80 set before CHANGE MAP to [0x29] when falling through spike floor — consumed in [0x29] enter to trigger Wings-fall cutscene (spike ceiling animation + rotating landing dialogue), then cleared |
| 0x22f4 | 📖 First-entry intro cutscene flag [0x4b] (0x01) 📖 Boy in special entry state [0x70/0x72] (0x02) ? (0x04) 📖 Prison door 1 open [0x74] (0x08) 📖 Prison door 2 open [0x74] (0x10) 📖 Prison door 3 open [0x74] (0x20) 📖 Prison door 4 open [0x74] (0x40) 📖 Prison door 5 open [0x74] (0x80) |
Byte [SRAM] | 0x01: when set on entry to Oglin Cave [0x4b], triggers boy look-around animation (WEST→NORTH→SOUTH); not cleared by this room — persists as a "cave entered" marker; set externally before first entry; 0x02 read in [0x70] and [0x72]: if set, teleports boy out-of-map and disables SELECT (boy unavailable during special entry sequence); 0x08–0x80 = Ebon Keep / Ivor Tower Dungeon [0x74] prison doors 1–5 (set by step-ons; cleared/set by enter script based on escape state; bulk-set `$22f4 |
| 0x22f5 | 📖 Prison door 6 open [0x74] (0x01) 📖 Prison door 7 open [0x74] (0x02) 📖 Post-door-event flag [0x11→0x0d] (0x04) 📖 Sterling escort cutscene flag [0x7a] (0x08) 📖 Puppet show dialog seen [0x77] (0x10) 📖 Pig race pending — barker NPC not loaded [0x62] (0x20) ⚙️ Naris age flag toggle [0x0f] (0x40) ⚙️ Naris older-sprite loaded [0x0f] (0x80) |
Byte [SRAM] | 0x01/0x02: Dungeon [0x74] prison doors 6–7 (bulk-set `$22f5 |
| 0x22f6 | ? (0x01) 📖 GATE_BOT #1 killed [0x48] (0x02) 📖 GATE_BOT #2 killed [0x48] (0x04) 📖 GATE_BOT #3 killed [0x48] (0x08) 📖 GATE_BOT #4 killed [0x48] (0x10) 📖 GATE_BOT #5 killed [0x48] (0x20) 📖 GATE_BOT #6 killed [0x48] (0x40) 📖 GATE_BOT #7 killed [0x48] (0x80) |
Byte [SRAM] | Metroplex Tunnels [0x48] GATE_BOT kill persistence flags — robots #1–7; enter script unloads each robot OBJ if bit set |
| 0x22f7 | 📖 GATE_BOT #8 killed [0x48] (0x01) 📖 GATE_BOT #9 killed [0x48] (0x02) 📖 GATE_BOT #10 killed [0x48] (0x04) 📖 GATE_BOT #11 killed [0x48] (0x08) 📖 GATE_BOT #12 killed [0x48] (0x10) 📖 GATE_BOT #13 killed [0x48] (0x20) 📖 GATE_BOT #14 killed [0x48] (0x40) 📖 GATE_BOT #15 killed [0x48] (0x80) |
Byte [SRAM] | Metroplex Tunnels [0x48] GATE_BOT kill persistence flags — robots #8–15; full byte used |
| 0x22f8 | ⚙️ Enemy group initialized [0x48] (0x01) 📖 First Omnitopia entry — ship landing [0x49] (0x02) ⚙️ Hatch-entry flag [all Omnitopia rooms] (0x04) ⚙️ Returned from alarm / first-visit init [0x43/0x44/0x47] (0x08) ⚙️ Dog entered alarm room [0x43] (0x10) 📖 FAN_BOT #1 killed [0x43] (0x20) ⚙️ FAN_BOT #1 cleanup shown [0x43] (0x40) 📖 FAN_BOT #2 killed [0x43] (0x80) |
Byte [SRAM] | Omnitopia cross-room session/persistent flags; 0x02 set before ship-landing cutscene in [0x49] (first entry), cleared by cutscene; 0x04 set before every cross-room CHANGE MAP from any Omnitopia room, cleared on fade-in; 0x08 = multi-use: "returned from alarm" reposition trigger in [0x43] OR "first-visit init" gate in [0x44]/[0x47]; 0x10 set when dog enters alarm room [0x43]; 0x20/0x80 = FAN_BOT kill flags set by kill scripts in [0x43] |
| 0x22f9 | ⚙️ FAN_BOT #2 cleanup shown [0x43] (0x01) 📖 Knock hole visible (OBJ 2 state=9) [0x43] (0x02) 📖 Secret door open [0x43/0x45] (0x04) ⚙️ Arrived from jail hatch [0x49] (0x08) 📖 Lab cutscene phase 2 queued [0x46] (0x10) ⚙️ Energy core teleporter used [0x49] (0x20) ⚙️ Returned to jail from junkyard [0x7e/0x49] (0x40) ? (0x80) |
Byte [SRAM] | Omnitopia cross-room flags; 0x04 = set when exiting [0x45] secret boss room, enables duct slide-down in [0x43]; 0x08 = triggers hatch fade-in spawn in [0x49]; 0x10 = set in [0x46] before CHANGE MAP → 0x19 for phase 2 lab cutscene; 0x20 = set when energy core teleporter first used in [0x49]; 0x40 = set on [26,15] step-on in [0x49] before CHANGE MAP to jail, triggers special 0x9b9692 path in [0x7e] |
| 0x22fa | ⚙️ CAMERA_ZOOM_SCALE_X | Byte | Mode 7 horizontal scale factor for rooms utilizing perspective rendering (written to $211C). |
| 0x22fb | ⚙️ CAMERA_ZOOM_SCALE_Y | Byte | Mode 7 vertical scale factor for rooms utilizing perspective rendering (written to $211C). |
| 0x22fc | ⚙️ Desert Wrap Y counter [0x1b] (full byte) | Byte [SRAM] | Range 0–17 (0x11). Incremented when player walks off the north wrap edge (y≈0x22–0x23 tiles), teleporting +2 screens south. Decremented when walking off the south wrap edge (y≈0x68–0x69), teleporting −2 screens north. Clamped at max 17 on north overflow (no exit). When decremented below 0 from value 0, exits to 0x4f (East of Crustacia). The north-exit tile [3b,0c:3c,10] exits to 0x0a (Nobilia Market) independently of this counter. |
| 0x22fd | ⚙️ Desert Wrap X counter [0x1b] (full byte) | Byte [SRAM] | Range 0–7. Decremented on left/east-edge wrap (x≈0x22–0x23), teleporting +2 screens east. Incremented on right/west-edge wrap (x≈0x6b–0x6c), teleporting −2 screens west. Clamps to 0–7; no exit condition on overflow. |
| 0x22fe | ⚙️ WW landing attempt counter [0x36] | Byte [SRAM] | 0 = first entry; incremented on first outro pass; gates WindWalker NPC load |
| 0x22ff | 🌿 WAX | Byte [SRAM] | Primary story progression event flag byte. |
| 0x2300 | 🌿 WATER | Byte [SRAM] | |
| 0x2301 | 🌿 VINEGAR | Byte [SRAM] | |
| 0x2302 | 🌿 ROOT | Byte [SRAM] | |
| 0x2303 | 🌿 OIL | Byte [SRAM] | |
| 0x2304 | 🌿 MUSHROOM | Byte [SRAM] | |
| 0x2305 | 🌿 MUD_PEPPER | Byte [SRAM] | |
| 0x2306 | 🌿 METEORITE | Byte [SRAM] | |
| 0x2307 | 🌿 LIMESTONE | Byte [SRAM] | |
| 0x2308 | 🌿 IRON | Byte [SRAM] | |
| 0x2309 | 🌿 GUNPOWDER | Byte [SRAM] | |
| 0x230a | 🌿 GREASE | Byte [SRAM] | |
| 0x230b | 🌿 FEATHER | Byte [SRAM] | |
| 0x230c | 🌿 ETHANOL | Byte [SRAM] | |
| 0x230d | 🌿 DRY_ICE | Byte [SRAM] | |
| 0x230e | 🌿 CRYSTAL | Byte [SRAM] | |
| 0x230f | 🌿 CLAY | Byte [SRAM] | |
| 0x2310 | 🌿 BRIMSTONE | Byte [SRAM] | |
| 0x2311 | 🌿 BONE | Byte [SRAM] | |
| 0x2312 | 🌿 ATLAS_MEDALLION | Byte [SRAM] | |
| 0x2313 | 🌿 ASH | Byte [SRAM] | |
| 0x2314 | 🌿 ACORN | Byte [SRAM] | |
| 0x2315 | 🧪 PETAL | Byte [SRAM] | |
| 0x2316 | 🧪 NECTAR | Byte [SRAM] | |
| 0x2317 | 🧪 HONEY | Byte [SRAM] | |
| 0x2318 | 🧪 DOG_BISCUIT | Byte [SRAM] | |
| 0x2319 | 🧪 WINGS | Byte [SRAM] | |
| 0x231a | 🧪 HERBAL_ESSENCE | Byte [SRAM] | |
| 0x231b | 🧪 PIXIE_DUST | Byte [SRAM] | |
| 0x231c | 🧪 CALL_BEADS | Byte [SRAM] | |
| 0x231d | 🛡️ CHEST_1_1 | Byte [SRAM] | |
| 0x231e | 🛡️ CHEST_1_2 | Byte [SRAM] | |
| 0x231f | 🛡️ CHEST_1_3 | Byte [SRAM] | |
| 0x2320 | 🛡️ CHEST_2_1 | Byte [SRAM] | |
| 0x2321 | 🛡️ CHEST_2_2 | Byte [SRAM] | |
| 0x2322 | 🛡️ CHEST_2_3 | Byte [SRAM] | |
| 0x2323 | 🛡️ CHEST_3_1 | Byte [SRAM] | |
| 0x2324 | 🛡️ CHEST_3_2 | Byte [SRAM] | |
| 0x2325 | 🛡️ CHEST_3_3 | Byte [SRAM] | |
| 0x2326 | 🛡️ CHEST_4_1 | Byte [SRAM] | |
| 0x2327 | 🛡️ CHEST_4_2 | Byte [SRAM] | |
| 0x2328 | 🛡️ CHEST_4_3 | Byte [SRAM] | |
| 0x2329 | 🛡️ HELM_1_1 | Byte [SRAM] | |
| 0x232a | 🛡️ HELM_1_2 | Byte [SRAM] | |
| 0x232b | 🛡️ HELM_1_3 | Byte [SRAM] | |
| 0x232c | 🛡️ HELM_2_1 | Byte [SRAM] | |
| 0x232d | 🛡️ HELM_2_2 | Byte [SRAM] | |
| 0x232e | 🛡️ HELM_2_3 | Byte [SRAM] | |
| 0x232f | 🛡️ HELM_3_1 | Byte [SRAM] | |
| 0x2330 | 🛡️ HELM_3_2 | Byte [SRAM] | |
| 0x2331 | 🛡️ HELM_3_3 | Byte [SRAM] | |
| 0x2332 | 🛡️ HELM_4_1 | Byte [SRAM] | |
| 0x2333 | 🛡️ HELM_4_2 | Byte [SRAM] | |
| 0x2334 | 🛡️ HELM_4_3 | Byte [SRAM] | |
| 0x2335 | 🛡️ GLOVE_1_1 | Byte [SRAM] | |
| 0x2336 | 🛡️ GLOVE_1_2 | Byte [SRAM] | |
| 0x2337 | 🛡️ GLOVE_1_3 | Byte [SRAM] | |
| 0x2338 | 🛡️ GLOVE_2_1 | Byte [SRAM] | |
| 0x2339 | 🛡️ GLOVE_2_2 | Byte [SRAM] | |
| 0x233a | 🛡️ GLOVE_2_3 | Byte [SRAM] | |
| 0x233b | 🛡️ GLOVE_3_1 | Byte [SRAM] | |
| 0x233c | 🛡️ GLOVE_3_2 | Byte [SRAM] | |
| 0x233d | 🛡️ GLOVE_3_3 | Byte [SRAM] | |
| 0x233e | 🛡️ GLOVE_4_1 | Byte [SRAM] | |
| 0x233f | 🛡️ GLOVE_4_2 | Byte [SRAM] | |
| 0x2340 | 🛡️ GLOVE_4_3 | Byte [SRAM] | |
| 0x2341 | 🛡️ COLLAR_1 | Byte [SRAM] | |
| 0x2342 | 🛡️ COLLAR_2 | Byte [SRAM] | |
| 0x2343 | 🛡️ COLLAR_3 | Byte [SRAM] | |
| 0x2344 | 🛡️ COLLAR_4 | Byte [SRAM] | |
| 0x2345 | ⚔️ AMMO_1 | Byte [SRAM] | Bazooka ammo counts and the selected ammo. \ |
| 0x2346 | ⚔️ AMMO_2 | Byte [SRAM] | |
| 0x2347 | ⚔️ AMMO_3 | Byte [SRAM] | |
| 0x2348 | 💰 CURRENCY_CURRENT | Byte [SRAM] | |
| 0x2349 | ⚔️ EQUIPMENT_PROFILE_INDEX | Word | Combat Subsystem: Active equipment/weapon profile index (indexes weapon stats table at $C4:3874, $8F:81C9). |
| 0x234a | ? | Byte [SRAM] | Written 0x63 (=99) in room [0x38] enter script after intro; opcode 0x14; purpose unknown |
| 0x234b | FAKE_HOUSE_ID | Word [SRAM] | // MISMATCH: $234c (high byte of this Word) is used independently as pirate ship section ID (1–5) set by [0x68] step-ons and read by [0x30] enter; may conflict with FAKE_HOUSE_ID high byte or high byte is repurposed |
| 0x234d…0x234e | (gap) | Byte×2 [SRAM] | Unmapped |
| 0x234f | ⚙️ East castle prison exit door number [0x74] | Byte [SRAM] | 0 = not yet escaped; nonzero = door number used to exit (1–7); set by 0x98ab37 post-escape routing script; read by [0x74] enter alongside $2351 (west) to determine escape state |
| 0x2350 | ⚙️ Dog staircase state [0x68] | Byte [SRAM] | 0 = normal; 1 = dog left at L-stair top; 2 = dog left at R-stair top; 3 = dog at south-L; 4 = dog at south-R; checked on exit step-ons in [0x30] (clears if 1 or 2); checked in [0x30] enter to suppress/hide dog if != 0 |
| 0x2351 | ⚙️ West castle prison exit door number [0x74] | Byte [SRAM] | 0 = not yet escaped; nonzero = door number used to exit (1–7); set by 0x98ab37 post-escape routing script; read by [0x74] enter to skip re-imprisonment and set all door flags open |
| 0x2352 | ⚙️ Companion warning dialog active [0x78] | Byte [SRAM] | Low byte; read by Queen's Key step-on in [0x78] as a prerequisite; session-local routing state |
| 0x2353 | 📖 Queen's Key on boy [0x78] | Byte [SRAM] | 0 = not yet given; 0x0001 = key picked up; set by Queen's Key step-on [1c,47:23,48] in [0x78]; read as prerequisite for `$2264 |
| 0x2354 | 📖 Queen's mission given [0x78] | Word [SRAM] | 0 = not given; 0x0001 = mission briefing delivered; set at end of default Queen audience in [0x78]; read on re-entry to determine NPC load variant |
| 0x2355 | ⚙️ WINDWALKER_TYPE / WW landing phase | Word [SRAM] | Low byte: 1 = first fire pit (OBJ 0 state 1), 2 = second fire pit (OBJ 0 state 2) [0x36] |
| 0x2357 | ⚙️ Boy's 'mids destination [0x06] | Byte [SRAM] | 0 = outside; 1 = bottom (0x55); 2 = top (0x56); set by 'mids entry step-ons in [0x06], read in [0x06]/[0x55] enter scripts to handle boy/dog split |
| 0x2358 | ⚙️ Dog's 'mids destination [0x06] | Byte [SRAM] | 0 = outside; 1 = bottom (0x55); 2 = top (0x56); set by 'mids entry step-ons in [0x06], read in [0x06]/[0x55] enter scripts to handle boy/dog split |
| 0x2359…0x235e | (gap) | Byte×6 [SRAM] | Unmapped |
| 0x235b | ⚙️ DOG_AI_BEHAVIOR_COMMAND | Byte | Dog companion AI behavioral state command (0=follow, 1=heel, 2=sniff/search, 3=attack). |
| 0x235c | ⚙️ DOG_AI_ALERT_TIMER | Byte | Timer countdown ticks for dog barking / alert animation when scent is detected. |
| 0x235d | ⚙️ DOG_AI_LEASH_DISTANCE | Byte | Maximum leash tether distance before Dog AI breaks combat to return to player. |
| 0x235e | ⚙️ DOG_AI_COLLISION_MODE | Byte | Dog navigation collision mode (wall sliding vs direct waypoint pathing). |
| 0x235f | ⚙️ DOG_COMPANION_ATTACK_MODE | Word | Companion attack behavior bitmask (passive, defend player, aggressive attack). |
| 0x2360 | ⚙️ DOG_COMBAT_TARGET_PRIORITY | Word | Target priority selector for Dog AI (nearest enemy vs player's current target). |
| 0x2363 | DOG_READ | Word [SRAM] | Active visual form and breed of dog companion (0=Wolf, 1=Greyhound, 2=Poodle, 3=Toaster). |
| 0x236b | ⚙️ Market state / variant | Word [SRAM] | 0–3; randomized via RAND&3 in showcase mode; selects prophet behavior and OBJ 0x27 state [0x0a] |
| 0x236d | ⚙️ ACCESS_CODE_D1 | Word [SRAM] | Access code digit 1 (range 1–3); generated once on first visit to [0x43] or [0x54]; displayed as OBJ 3 state in control room |
| 0x236f | ⚙️ ACCESS_CODE_D2 | Word [SRAM] | Access code digit 2 (range 1–3) |
| 0x2371 | ⚙️ ACCESS_CODE_D3 | Word [SRAM] | Access code digit 3 (range 1–3) |
| 0x2373 | ⚙️ SECRET_CODE_D1 | Word [SRAM] | Secret door code digit 1 (range 1–3); used to unlock [0x45] secret boss room |
| 0x2375 | ⚙️ SECRET_CODE_D2 | Word [SRAM] | Secret door code digit 2 (range 1–3) |
| 0x2377 | ⚙️ SECRET_CODE_D3 | Word [SRAM] | Secret door code digit 3 (range 1–3) |
| 0x237b | WINDWALKER_LOCATION / previous WW destination | Word [SRAM] | Set to previous $237d value during WW landing [0x36] |
| 0x237d | WINDWALKER_LOCATION_HELPER / WW destination state | Word [SRAM] | 0/1 = fire pit landing; 2 = second landing; 4 = Omnitopia selected [0x36] |
| 0x238d | ⚙️ CHANGE_MUSIC | Word [SRAM] | [BOOLEAN] |
| 0x238f | TRANSITION_ENTER_DIRECTION | Word [SRAM] | |
| 0x2391 | 🎁 LOOT_ITEM | Word [SRAM] | Loot mailbox — what the next pickup gives. \ |
| 0x2393 | 🎁 LOOT_AMOUNT_CURRENCY | Word [SRAM] | Game script variable: AMOUNT |
| 0x2395 | 🎁 LOOT_OBJECT | Word [SRAM] | Game script variable: MAP REF? |
| 0x239b | PRIZE_RATE_1 | Word [SRAM] | Game script variable: PRIZE 1 RATE |
| 0x239d | PRIZE_RATE_2 | Word [SRAM] | Game script variable: PRIZE 2 RATE |
| 0x239f | PRIZE_RATE_3 | Word [SRAM] | Game script variable: PRIZE 3 RATE |
| 0x23a1 | PRIZE_DROP_1 | Word [SRAM] | Game script variable: PRIZE 1 DROP |
| 0x23a3 | PRIZE_DROP_2 | Word [SRAM] | Game script variable: PRIZE 2 DROP |
| 0x23a5 | PRIZE_DROP_3 | Word [SRAM] | Game script variable: PRIZE 3 DROP |
| 0x23a7 | PRIZE_QUANTITY_1 | Word [SRAM] | Game script variable: PRIZE 1 QTY |
| 0x23a9 | PRIZE_QUANTITY_2 | Word [SRAM] | Game script variable: PRIZE 2 QTY |
| 0x23ab | PRIZE_QUANTITY_3 | Word [SRAM] | Game script variable: PRIZE 3 QTY |
| 0x23ad | ⚙️ FADE_X | Word [SRAM] | Usually 0x80 (center) |
| 0x23af | ⚙️ FADE_Y | Word [SRAM] | Usually 0x70 (center) |
| 0x23b1 | ⚙️ FADE_START | Word [SRAM] | |
| 0x23b3 | ⚙️ FADE_STEP | Word [SRAM] | |
| 0x23b5 | ⚙️ FADE_TRIGGER | Word [SRAM] | |
| 0x23bf | PACIFIED | Word [SRAM] | [BOOLEAN]; written 0x0001 on enter in [0x08] Nobilia Square |
| 0x23c1 | UNKNOWN_1 | Word [SRAM] | Used in: sandpits, bugmuck, bbm_2, swamp, pipemaze_rooms, waterfall, swamp_bridge, greenhouse (1=?) |
| 0x23c3 | ⚙️ COMPANION_TIGHT_TETHER | Word | Non-zero: the companion keeps close (tether limits 4/3/3/1). What sets it is not traced. |
| 0x23c5 | ⚙️ ENEMY_SPAWNER_UNKNOWN_1 | Word [SRAM] | Usually 0x0280 or 0x0500 |
| 0x23d1 | NEXT_PROJECTILE_DAMAGE | Word [SRAM] | |
| 0x23d3 | ? | Word [SRAM] | Written 0x0001 before item-received text, 0x0000 after; seen in room [0x5c] |
| 0x23d5 | NEXT_DAMAGE_NO_KNOCKBACK | Word [SRAM] | |
| 0x23d7 | UNKNOWN_2 | Word [SRAM] | Used in: sterling grab, reactor room (1=?) |
| 0x23d9 | UNKNOWN_ETERNAL_DUST_DROP_PROPERTY | Word [SRAM] | Boss rush |
| 0x23db | ⚙️ QUEUED_ROOM_EXIT_TRIGGER_0 | Word | ID of door or boundary exit trigger tripped by player ($FFFF = none). |
| 0x23dd | ⚙️ QUEUED_ROOM_EXIT_TRIGGER_1 | Word | Secondary queued room transition exit trigger ID ($FFFF = none). |
| 0x23e5 | ⚙️ STATS_PTR_BOY | Word | Entity Subsystem: Pointer to Boy persistent base stats block ($0A26; initialized in $8F:8090). |
| 0x23e7 | ⚙️ STATS_PTR_DOG | Word | Entity Subsystem: Pointer to Dog persistent base stats block ($0A70; initialized in $8F:8130). |
| 0x23e9 | ⚙️ CAMERA_ROOM_BOUND_LEFT | Word | Left boundary clamp limit (pixels) for active room camera. |
| 0x23eb | ⚙️ CAMERA_ROOM_BOUND_TOP | Word | Top boundary clamp limit (pixels) for active room camera. |
| 0x23ed | ⚙️ CAMERA_ROOM_BOUND_RIGHT | Word | Right boundary clamp limit (pixels) for active room camera. |
| 0x23ef | ⚙️ CAMERA_ROOM_BOUND_BOTTOM | Word | Bottom boundary clamp limit (pixels) for active room camera. |
| 0x2401 | ⚙️ VIEWPORT_LEFT_X | Word | Active camera on-screen viewport left edge in world pixels ($BF). |
| 0x2403 | ⚙️ VIEWPORT_RIGHT_X | Word | Active camera on-screen viewport right edge in world pixels ($BF + 256). |
| 0x2405 | ⚙️ VIEWPORT_TOP_Y | Word | Active camera on-screen viewport top edge in world pixels ($C1). |
| 0x2407 | ⚙️ VIEWPORT_BOTTOM_Y | Word | Active camera on-screen viewport bottom edge in world pixels ($C1 + 224). |
| 0x2409 | ⚙️ CAMERA_SPEED_FACTOR | Word | Camera panning smoothing and interpolation factor. |
| 0x240b | 🎥 SHAKE_MAGNITUDE_Y | Word | Maximum vertical displacement magnitude for active screen shaking. |
| 0x240d | VENDOR_RECOMMEND_CURRENCY_CHANGE | Word [SRAM] | |
| 0x240f | ⚙️ CAMERA_DEADZONE_LEFT | Word | Left horizontal deadzone threshold before camera scrolls to follow player. |
| 0x2411 | ⚙️ CAMERA_DEADZONE_RIGHT | Word | Right horizontal deadzone threshold before camera scrolls to follow player. |
| 0x2413 | ⚙️ CAMERA_DEADZONE_TOP | Word | Top vertical deadzone threshold before camera scrolls to follow player. |
| 0x2415 | ⚙️ CAMERA_DEADZONE_BOTTOM | Word | Bottom vertical deadzone threshold before camera scrolls to follow player. |
| 0x2417 | ⚙️ CAMERA_WORLD_ORIGIN_X | Word | Room camera world horizontal origin anchor (metatiles) used in Mode 7 matrix math. |
| 0x2419 | ⚙️ CAMERA_WORLD_ORIGIN_Y | Word | Room camera world vertical origin anchor (metatiles) used in Mode 7 matrix math. |
| 0x241b | ⚙️ CAMERA_SCREEN_CENTER_X | Word | Screen center horizontal pixel coordinate offset for camera centering. |
| 0x241d | ⚙️ CAMERA_SCREEN_CENTER_Y | Word | Screen center vertical pixel coordinate offset for camera centering. |
| 0x241f | ⚙️ CAMERA_SCROLL_MODE | Word | Camera tracking mode enum (0 = Follow target player, 2 = Fixed / scripted focus). |
| 0x2429 | ⚙️ TRIGGER_SCRIPT_LOCK | Word | Execution lock held while a step-on coordinate trigger script is running. |
| 0x242b | ⚙️ CAMERA_SCRIPTED_TARGET_X | Word | Forced scripted camera focus target X coordinate (-1 = follow player). |
| 0x242d | ⚙️ CAMERA_SCRIPTED_TARGET_Y | Word | Forced scripted camera focus target Y coordinate (-1 = follow player). |
| 0x242f | ⚙️ CAMERA_PAN_VELOCITY | Word | Transition panning speed between scripted camera targets. |
| 0x2433 | ⚙️ ENEMY_SPAWNER_QUANTITY | Word [SRAM] | |
| 0x2435 | ⚙️ ROOM_AMBIENT_LIGHT_LEVEL | Word | Ambient light/shade color tint parameter applied to room palette (default $15). |
| 0x2437 | ⚙️ MAP_PALETTE | Word [SRAM] | thraxx (0=orange, 7=white); waterfall (7=normal, 0=?); ivor/ebon (7=ebon/ivor, 4=?); greenhouse (6=dark?); storage (7=dark?) |
| 0x243d | ⚗️ BUFF_REQUEST_1 | Word | Queued alchemy formula stat buff application register 1. |
| 0x243f | ⚗️ BUFF_REQUEST_2 | Word | Queued alchemy formula stat buff application register 2. |
| 0x2441 | ⚙️ ROOM_TILESET_GRAPHIC_BANK | Word | ROM graphic bank containing compressed 16x16 metatile graphics for current room. |
| 0x2443 | ⚙️ ROOM_METATILE_DESCRIPTOR_PTR | Word | Pointer to room metatile layout descriptor table in ROM. |
| 0x2445 | ALCHEMY_REWARD_PRESELECTION | Word [SRAM] | Game script variable: PRESELECT ALCHEMY |
| 0x2449 | ⚙️ SAVE_SPOT_ID | Word [SRAM] | 0x0016 = Omnitopia Shops healing station [0x54]; 0x001b = Junkyard energy core [0x49]; written before save sub call |
| 0x244f | 📖 Prophet prediction index [0x0a] | Word [SRAM] | Current fortune state: 0=idle; 3–9=escalating predictions; reset after timer expires |
| 0x2451 | 📖 Prophet visit counter [0x0a] | Word [SRAM] | Incremented each B-trigger visit; affects branching |
| 0x2455 | VENDOR_ENTITY | Word [SRAM] | |
| 0x2457 | VENDOR_SHOP_ITEMS_SELL | Word [SRAM] | |
| 0x2459 | VENDOR_SHOP_ITEMS_BUY / SHOP_RING_MENU_AND_POSITION_ID | Word [SRAM] | Shared address |
| 0x245b | — | Word [SRAM] | Blimp entity ref; written in [0x51] zone 9 enter |
| 0x2461 | ⚙️ LOOT_AMOUNT | Word | Loot bonus — amount minus one for the next pickup. The loot script adds 1 + $2461. Pickups that give more than one write amount − 1 here before calling the |
| 0x2480 | ⚙️ WEATHER_PARTICLES | Byte×64 | Position, velocity, and lifetime particle physics state array (rain, snow, embers). |
| 0x2493 | ? | Word [SESSION] | Cutscene entity X position; written and incremented to steer entity during Raptors intro cutscene [0x5c] |
| 0x2495 | ? | Word [SESSION] | Cutscene entity Y position; written and incremented to steer entity during Raptors intro cutscene [0x5c] |
| 0x249d | ? | Word [SESSION] | entity X pos for ABS call |
| 0x24fd | ⚙️ ENTRY_ORIGIN_CODE | Word [SRAM] | Entry-origin code; written before every CHANGE MAP from [0x48] Metroplex Tunnels; read by routing function 0x9ad5c8 to determine spawn position |
| 0x24ff | ⚙️ SAVED_BOY_X | Word [SRAM] | Boy X position saved before entering alarm room from [0x43]; restored on return |
| 0x2501 | ⚙️ SAVED_BOY_Y | Word [SRAM] | Boy Y position saved before entering alarm room from [0x43] |
| 0x2503 | ⚙️ SAVED_DOG_X | Word [SRAM] | Dog X position saved before entering alarm room from [0x43] |
| 0x2505 | ⚙️ SAVED_DOG_Y | Word [SRAM] | Dog Y position saved before entering alarm room from [0x43] |
| 0x2513 | ⚙️ Market entry timer base [0x0a] | Word [SRAM] | Snapshot of GameTimer on first market entry; market expires after 0xc4e0 ticks (~5.7 min) |
| 0x2515 | ⚙️ Market minutes remaining [0x0a/0x08] | Word [SRAM] | Countdown display value; decremented each minute; shown in trader "closing soon" dialogs |
| 0x2517 | ⚙️ SRAM_CHEST_FLAGS_0 | Word | Persistent treasure chest / gourd collection bitmask words 0..1 (gourds 0..31 in Cartridge SRAM payload). |
| 0x2519 | ⚙️ SRAM_CHEST_FLAGS_1 | Word | Persistent treasure chest / gourd collection bitmask words 2..3 (gourds 32..63). |
| 0x251b | ⚙️ SRAM_CHEST_FLAGS_2 | Word | Persistent treasure chest / gourd collection bitmask words 4..5 (gourds 64..95). |
| 0x251d | ⚙️ SRAM_CHEST_FLAGS_3 | Word | Persistent treasure chest / gourd collection bitmask words 6..7 (gourds 96..127). |
| 0x251f | ⚙️ SRAM_CHEST_FLAGS_4 | Word | Persistent treasure chest / gourd collection bitmask words 8..9 (gourds 128..159). |
| 0x2521 | ⚙️ SRAM_CHEST_FLAGS_5 | Word | Persistent treasure chest / gourd collection bitmask words 10..11 (gourds 160..191). |
| 0x2523 | ⚙️ SRAM_CHEST_FLAGS_6 | Word | Persistent treasure chest / gourd collection bitmask words 12..13 (gourds 192..223). |
| 0x2525 | ⚙️ SRAM_CHEST_FLAGS_7 | Word | Persistent treasure chest / gourd collection bitmask words 14..15 (gourds 224..255). |
| 0x2527 | 🏺 RICE | Word [SRAM] | |
| 0x2529 | 🏺 SPICE | Word [SRAM] | |
| 0x252b | 🏺 SPOON | Word [SRAM] | |
| 0x252d | 🏺 TAPESTRY | Word [SRAM] | |
| 0x252f | 🏺 TICKET_FOR_EXHIBITION | Word [SRAM] | |
| 0x2533 | ⚙️ SRAM_BOSS_DEFEATED_FLAGS | Word | Persistent campaign boss defeat bitmask (Thraxx, Salabog, Magmar, Vigor, Megataur, Rimsala, Carltron). |
| 0x2537 | STRING_PARAMETER_1 | Word [SRAM] | |
| 0x2539 | STRING_PARAMETER_2 | Word [SRAM] | |
| 0x253b | STRING_PARAMETER_3 | Word [SRAM] | |
| 0x253c…0x2544 | (gap) | Byte×9 [SRAM] | Unmapped |
| 0x2545 | — | Word [SESSION] | Dialog response preselect (save menu yes/no) [0x51] |
| 0x2547…0x254c | (gap) | Byte×6 [SRAM] | Unmapped |
| 0x254d | 📖 Prophet timer base [0x0a] | Word [SRAM] | Snapshot of GameTimer; resets prediction index if elapsed > 0x0e10 ticks |
| 0x254f…0x2f51 | (gap: ~2563 bytes) | Byte×2563 [SRAM] | Unmapped |
| 0x2834 | ⚙️ SCRIPT_TEMP_REG_0 | Word | Script VM temporary evaluation register 0 / script variable base ($8C:D7E1, opcode $10..$18 indexed offset). |
| 0x2835 | ⚙️ Bridge trap instability bits OBJ 22-29 (0x01/0x02/0x04/0x08/0x10/0x20/0x40/0x80) [0x28]; NPC slot pointer [0x2c][0x29] | Byte [RAM] | Session-local in [0x28] — bits 0x01–0x80 correspond to OBJs 22–29 first-crossing state; all cleared in fall reset sub; reused as NPC slot register ($2835) in other Halls rooms |
| 0x2836 | ⚙️ SCRIPT_TEMP_REG_1 | Word | Script VM temporary evaluation register 1 / loop counter operand ($8C:D860). |
| 0x2837 | ⚙️ Bridge trap 2nd-hit flag OBJ 23 [0x28] (0x01) ⚙️ Bridge trap 2nd-hit flag OBJ 24 [0x28] (0x02) ⚙️ Bridge trap 2nd-hit flag OBJ 25 [0x28] (0x04) ? OBJ 26-31 2nd-hit bits (0x08/0x10/0x20/0x40/0x80) |
Byte [RAM] | Session-local; same pattern as $2836; 0x08–0x80 extrapolated for OBJs 26–30 (unconfirmed) |
| 0x2838 | ⚙️ SCRIPT_RETURN_ADDR | Word | Script VM subroutine call return instruction pointer ($8C:D863). |
| 0x2839…×0x28fb | General-purpose RAM | Byte×195 | Examples: entity slots, attack slots, dark forest layout; $2856 = crater guard dialogue toggle [0x08] (session-local) |
| 0x283a | ⚙️ SCRIPT_COND_FLAG | Word | Script VM conditional comparison test flag register (stores boolean result of comparisons for conditional branch opcodes). |
| 0x283d | ⚙️ SCRIPT_INDIRECT_BANK | Word | Script VM indirect memory bank pointer register ($8C:D872). |
| 0x283f | ⚙️ SCRIPT_SLEEP_ACCUM | Word | Script VM timer tick accumulator for thread sleep and delay opcodes ($8C:D875). |
| 0x2841 | ⚙️ SCRIPT_EVENT_TRIGGER_PARAM | Word | Script VM event trigger identifier parameter word ($8C:ED6C). |
| 0x2843 | ⚙️ SCRIPT_THREAD_PRIORITY | Word | Script VM thread scheduling priority override register ($8C:EE2C). |
| 0x2859 | ⚙️ SCRIPT_EVAL_STACK | Word×6 | Script VM intermediate expression evaluation stack ($7E:2859..$7E:2865) for mathematical and logical opcodes. |
| 0x28fc | ⚙️ SCRIPT_SLOT_00 | Byte×79 | Script VM execution thread slot 0 (primary room enter / cutscene script thread, stride 79 bytes). |
| 0x294b | ⚙️ SCRIPT_SLOT_01 | Byte×79 | Script VM execution thread slot 1 (stride 79 bytes). |
| 0x299a | ⚙️ SCRIPT_SLOT_02 | Byte×79 | Script VM execution thread slot 2 (stride 79 bytes). |
| 0x29e9 | ⚙️ SCRIPT_SLOT_03 | Byte×79 | Script VM execution thread slot 3 (stride 79 bytes). |
| 0x2a38 | ⚙️ SCRIPT_SLOT_04 | Byte×79 | Script VM execution thread slot 4 (stride 79 bytes). |
| 0x2a87 | ⚙️ SCRIPT_SLOT_05 | Byte×79 | Script VM execution thread slot 5 (stride 79 bytes). |
| 0x2ad6 | ⚙️ SCRIPT_SLOT_06 | Byte×79 | Script VM execution thread slot 6 (stride 79 bytes). |
| 0x2b25 | ⚙️ SCRIPT_SLOT_07 | Byte×79 | Script VM execution thread slot 7 (stride 79 bytes). |
| 0x2b74 | ⚙️ SCRIPT_SLOT_08 | Byte×79 | Script VM execution thread slot 8 (stride 79 bytes). |
| 0x2bc3 | ⚙️ SCRIPT_SLOT_09 | Byte×79 | Script VM execution thread slot 9 (stride 79 bytes). |
| 0x2c12 | ⚙️ SCRIPT_SLOT_10 | Byte×79 | Script VM execution thread slot 10 (stride 79 bytes). |
| 0x2c61 | ⚙️ SCRIPT_SLOT_11 | Byte×79 | Script VM execution thread slot 11 (stride 79 bytes). |
| 0x2cb0 | ⚙️ SCRIPT_SLOT_12 | Byte×79 | Script VM execution thread slot 12 (stride 79 bytes). |
| 0x2cff | ⚙️ SCRIPT_SLOT_13 | Byte×79 | Script VM execution thread slot 13 (stride 79 bytes). |
| 0x2d4e | ⚙️ SCRIPT_SLOT_14 | Byte×79 | Script VM execution thread slot 14 (stride 79 bytes). |
| 0x2d9d | ⚙️ SCRIPT_SLOT_15 | Byte×79 | Script VM execution thread slot 15 (stride 79 bytes). |
| 0x2dec | ⚙️ SCRIPT_SLOT_16 | Byte×79 | Script VM execution thread slot 16 (stride 79 bytes). |
| 0x2e3b | ⚙️ SCRIPT_SLOT_17 | Byte×79 | Script VM execution thread slot 17 (stride 79 bytes). |
| 0x2e8a | ⚙️ SCRIPT_SLOT_18 | Byte×79 | Script VM execution thread slot 18 (stride 79 bytes). |
| 0x2ed6 | ⚗️ FORMULA_LVL_ACID_RAIN | Word | Alchemy Progression: Current level (0..9) for formula Acid Rain ($91:D850). |
| 0x2ed8 | ⚗️ FORMULA_LVL_ATLAS | Word | Alchemy Progression: Current level (0..9) for formula Atlas ($91:D850). |
| 0x2ed9 | ⚙️ SCRIPT_SLOT_19 | Byte×79 | Script VM execution thread slot 19 (stride 79 bytes). |
| 0x2eda | ⚗️ FORMULA_LVL_BARRIER | Word | Alchemy Progression: Current level (0..9) for formula Barrier ($91:D850). |
| 0x2edc | ⚗️ FORMULA_LVL_CALL_UP | Word | Alchemy Progression: Current level (0..9) for formula Call Up ($91:D850). |
| 0x2ede | ⚗️ FORMULA_LVL_CORROSION | Word | Alchemy Progression: Current level (0..9) for formula Corrosion ($91:D850). |
| 0x2ee0 | ⚗️ FORMULA_LVL_CRUSH | Word | Alchemy Progression: Current level (0..9) for formula Crush ($91:D850). |
| 0x2ee2 | ⚗️ FORMULA_LVL_CURE | Word | Alchemy Progression: Current level (0..9) for formula Cure ($91:D850). |
| 0x2ee4 | ⚗️ FORMULA_LVL_DEFEND | Word | Alchemy Progression: Current level (0..9) for formula Defend ($91:D850). |
| 0x2ee6 | ⚗️ FORMULA_LVL_DOUBLE_DRAIN | Word | Alchemy Progression: Current level (0..9) for formula Double Drain ($91:D850). |
| 0x2ee8 | ⚗️ FORMULA_LVL_DRAIN | Word | Alchemy Progression: Current level (0..9) for formula Drain ($91:D850). |
| 0x2eea | ⚗️ FORMULA_LVL_ENERGIZE | Word | Alchemy Progression: Current level (0..9) for formula Energize ($91:D850). |
| 0x2eec | ⚗️ FORMULA_LVL_ESCAPE | Word | Alchemy Progression: Current level (0..9) for formula Escape ($91:D850). |
| 0x2eee | ⚗️ FORMULA_LVL_EXPLOSION | Word | Alchemy Progression: Current level (0..9) for formula Explosion ($91:D850). |
| 0x2ef0 | ⚗️ FORMULA_LVL_FIREBALL | Word | Alchemy Progression: Current level (0..9) for formula Fireball ($91:D850). |
| 0x2ef2 | ⚗️ FORMULA_LVL_FIRE_POWER | Word | Alchemy Progression: Current level (0..9) for formula Fire Power ($91:D850). |
| 0x2ef4 | ⚗️ FORMULA_LVL_FLASH | Word | Alchemy Progression: Current level (0..9) for formula Flash ($91:D850). |
| 0x2ef6 | ⚗️ FORMULA_LVL_FORCE_FIELD | Word | Alchemy Progression: Current level (0..9) for formula Force Field ($91:D850). |
| 0x2ef8 | ⚗️ FORMULA_LVL_HARD_BALL | Word | Alchemy Progression: Current level (0..9) for formula Hard Ball ($91:D850). |
| 0x2efa | ⚗️ FORMULA_LVL_HEAL | Word | Alchemy Progression: Current level (0..9) for formula Heal ($91:D850). |
| 0x2efc | ⚗️ FORMULA_LVL_LANCE | Word | Alchemy Progression: Current level (0..9) for formula Lance ($91:D850). |
| 0x2efe | ⚗️ FORMULA_LVL_LASER | Word | Alchemy Progression: Current level (0..9) for formula Laser ($91:D850). |
| 0x2f00 | ⚗️ FORMULA_LVL_LEVITATE | Word | Alchemy Progression: Current level (0..9) for formula Levitate ($91:D850). |
| 0x2f02 | ⚗️ FORMULA_LVL_LIGHTNING_STORM | Word | Alchemy Progression: Current level (0..9) for formula Lightning Storm ($91:D850). |
| 0x2f04 | ⚗️ FORMULA_LVL_MIRACLE_CURE | Word | Alchemy Progression: Current level (0..9) for formula Miracle Cure ($91:D850). |
| 0x2f06 | ⚗️ FORMULA_LVL_NITRO | Word | Alchemy Progression: Current level (0..9) for formula Nitro ($91:D850). |
| 0x2f08 | ⚗️ FORMULA_LVL_ONE_UP | Word | Alchemy Progression: Current level (0..9) for formula One Up ($91:D850). |
| 0x2f0a | ⚗️ FORMULA_LVL_REFLECT | Word | Alchemy Progression: Current level (0..9) for formula Reflect ($91:D850). |
| 0x2f0c | ⚗️ FORMULA_LVL_REGROWTH | Word | Alchemy Progression: Current level (0..9) for formula Regrowth ($91:D850). |
| 0x2f0e | ⚗️ FORMULA_LVL_REVEALER | Word | Alchemy Progression: Current level (0..9) for formula Revealer ($91:D850). |
| 0x2f10 | ⚗️ FORMULA_LVL_REVIVE | Word | Alchemy Progression: Current level (0..9) for formula Revive ($91:D850). |
| 0x2f12 | ⚗️ FORMULA_LVL_SLOW_BURN | Word | Alchemy Progression: Current level (0..9) for formula Slow Burn ($91:D850). |
| 0x2f14 | ⚗️ FORMULA_LVL_SPEED | Word | Alchemy Progression: Current level (0..9) for formula Speed ($91:D850). |
| 0x2f16 | ⚗️ FORMULA_LVL_STING | Word | Alchemy Progression: Current level (0..9) for formula Sting ($91:D850). |
| 0x2f18 | ⚗️ FORMULA_LVL_STOP | Word | Alchemy Progression: Current level (0..9) for formula Stop ($91:D850). |
| 0x2f1a | ⚗️ FORMULA_LVL_SUPER_HEAL | Word | Alchemy Progression: Current level (0..9) for formula Super Heal ($91:D850). |
| 0x2f28 | ⚙️ SCRIPT_SLOT_QUEUE_TAIL | Word | End sentinel and boundary limit pointer of Script VM thread pool ($7E:28FC..$7E:2F28). |
| 0x2f52 | ⚗️ LEVEL_LOW_ACID_RAIN | Word [SRAM] | |
| 0x2f54 | ⚗️ LEVEL_LOW_ATLAS | Word [SRAM] | |
| 0x2f56 | ⚗️ LEVEL_LOW_BARRIER | Word [SRAM] | |
| 0x2f58 | ⚗️ LEVEL_LOW_CALL_UP | Word [SRAM] | |
| 0x2f5a | ⚗️ LEVEL_LOW_CORROSION | Word [SRAM] | |
| 0x2f5c | ⚗️ LEVEL_LOW_CRUSH | Word [SRAM] | |
| 0x2f5e | ⚗️ LEVEL_LOW_CURE | Word [SRAM] | |
| 0x2f60 | ⚗️ LEVEL_LOW_DEFEND | Word [SRAM] | |
| 0x2f62 | ⚗️ LEVEL_LOW_DOUBLE_DRAIN | Word [SRAM] | |
| 0x2f64 | ⚗️ LEVEL_LOW_DRAIN | Word [SRAM] | |
| 0x2f66 | ⚗️ LEVEL_LOW_ENERGIZE | Word [SRAM] | |
| 0x2f68 | ⚗️ LEVEL_LOW_ESCAPE | Word [SRAM] | |
| 0x2f6a | ⚗️ LEVEL_LOW_EXPLOSION | Word [SRAM] | |
| 0x2f6c | ⚗️ LEVEL_LOW_FIREBALL | Word [SRAM] | |
| 0x2f6e | ⚗️ LEVEL_LOW_FIRE_POWER | Word [SRAM] | |
| 0x2f70 | ⚗️ LEVEL_LOW_FLASH | Word [SRAM] | |
| 0x2f72 | ⚗️ LEVEL_LOW_FORCE_FIELD | Word [SRAM] | |
| 0x2f74 | ⚗️ LEVEL_LOW_HARD_BALL | Word [SRAM] | |
| 0x2f76 | ⚗️ LEVEL_LOW_HEAL | Word [SRAM] | |
| 0x2f78 | ⚗️ LEVEL_LOW_LANCE | Word [SRAM] | |
| 0x2f7a | ⚗️ LEVEL_LOW_LASER | Word [SRAM] | |
| 0x2f7c | ⚗️ LEVEL_LOW_LEVITATE | Word [SRAM] | |
| 0x2f7e | ⚗️ LEVEL_LOW_LIGHTNING_STORM | Word [SRAM] | |
| 0x2f80 | ⚗️ LEVEL_LOW_MIRACLE_CURE | Word [SRAM] | |
| 0x2f82 | ⚗️ LEVEL_LOW_NITRO | Word [SRAM] | |
| 0x2f84 | ⚗️ LEVEL_LOW_ONE_UP | Word [SRAM] | |
| 0x2f86 | ⚗️ LEVEL_LOW_REFLECT | Word [SRAM] | |
| 0x2f88 | ⚗️ LEVEL_LOW_REGROWTH | Word [SRAM] | |
| 0x2f8a | ⚗️ LEVEL_LOW_REVEALER | Word [SRAM] | |
| 0x2f8c | ⚗️ LEVEL_LOW_REVIVE | Word [SRAM] | |
| 0x2f8e | ⚗️ LEVEL_LOW_SLOW_BURN | Word [SRAM] | |
| 0x2f90 | ⚗️ LEVEL_LOW_SPEED | Word [SRAM] | |
| 0x2f92 | ⚗️ LEVEL_LOW_STING | Word [SRAM] | |
| 0x2f94 | ⚗️ LEVEL_LOW_STOP | Word [SRAM] | |
| 0x2f96 | ⚗️ LEVEL_LOW_SUPER_HEAL | Word [SRAM] | |
| 0x2f98 | ⚗️ LEVEL_HIGH_ACID_RAIN | Word [SRAM] | |
| 0x2f9a | ⚗️ LEVEL_HIGH_ATLAS | Word [SRAM] | |
| 0x2f9c | ⚗️ LEVEL_HIGH_BARRIER | Word [SRAM] | |
| 0x2f9e | ⚗️ LEVEL_HIGH_CALL_UP | Word [SRAM] | |
| 0x2fa0 | ⚗️ LEVEL_HIGH_CORROSION | Word [SRAM] | |
| 0x2fa2 | ⚗️ LEVEL_HIGH_CRUSH | Word [SRAM] | |
| 0x2fa4 | ⚗️ LEVEL_HIGH_CURE | Word [SRAM] | |
| 0x2fa6 | ⚗️ LEVEL_HIGH_DEFEND | Word [SRAM] | |
| 0x2fa8 | ⚗️ LEVEL_HIGH_DOUBLE_DRAIN | Word [SRAM] | |
| 0x2faa | ⚗️ LEVEL_HIGH_DRAIN | Word [SRAM] | |
| 0x2fac | ⚗️ LEVEL_HIGH_ENERGIZE | Word [SRAM] | |
| 0x2fae | ⚗️ LEVEL_HIGH_ESCAPE | Word [SRAM] | |
| 0x2fb0 | ⚗️ LEVEL_HIGH_EXPLOSION | Word [SRAM] | |
| 0x2fb2 | ⚗️ LEVEL_HIGH_FIREBALL | Word [SRAM] | |
| 0x2fb4 | ⚗️ LEVEL_HIGH_FIRE_POWER | Word [SRAM] | |
| 0x2fb6 | ⚗️ LEVEL_HIGH_FLASH | Word [SRAM] | |
| 0x2fb8 | ⚗️ LEVEL_HIGH_FORCE_FIELD | Word [SRAM] | |
| 0x2fba | ⚗️ LEVEL_HIGH_HARD_BALL | Word [SRAM] | |
| 0x2fbc | ⚗️ LEVEL_HIGH_HEAL | Word [SRAM] | |
| 0x2fbe | ⚗️ LEVEL_HIGH_LANCE | Word [SRAM] | |
| 0x2fc0 | ⚗️ LEVEL_HIGH_LASER | Word [SRAM] | |
| 0x2fc2 | ⚗️ LEVEL_HIGH_LEVITATE | Word [SRAM] | |
| 0x2fc4 | ⚗️ LEVEL_HIGH_LIGHTNING_STORM | Word [SRAM] | |
| 0x2fc6 | ⚗️ LEVEL_HIGH_MIRACLE_CURE | Word [SRAM] | |
| 0x2fc8 | ⚗️ LEVEL_HIGH_NITRO | Word [SRAM] | |
| 0x2fca | ⚗️ LEVEL_HIGH_ONE_UP | Word [SRAM] | |
| 0x2fcc | ⚗️ LEVEL_HIGH_REFLECT | Word [SRAM] | |
| 0x2fce | ⚗️ LEVEL_HIGH_REGROWTH | Word [SRAM] | |
| 0x2fd0 | ⚗️ LEVEL_HIGH_REVEALER | Word [SRAM] | |
| 0x2fd2 | ⚗️ LEVEL_HIGH_REVIVE | Word [SRAM] | |
| 0x2fd4 | ⚗️ LEVEL_HIGH_SLOW_BURN | Word [SRAM] | |
| 0x2fd6 | ⚗️ LEVEL_HIGH_SPEED | Word [SRAM] | |
| 0x2fd8 | ⚗️ LEVEL_HIGH_STING | Word [SRAM] | |
| 0x2fda | ⚗️ LEVEL_HIGH_STOP | Word [SRAM] | |
| 0x2fdc | ⚗️ LEVEL_HIGH_SUPER_HEAL | Word [SRAM] | |
| 0x2fde…0x2ff5 | 🧪 INGREDIENT_USAGE_STATS | Byte×24 [SRAM] | Lifetime usage count per ingredient (Wax=0x2fde, Water=0x2fdf, ..., Acorn=0x2ff5) |
| 0x2fe0 | ⚗️ FORMULA_USAGE_ATLAS | Word | Alchemy Statistics: Total lifetime casts counter for formula Atlas ($91:D800). |
| 0x2fe2 | ⚗️ FORMULA_USAGE_BARRIER | Word | Alchemy Statistics: Total lifetime casts counter for formula Barrier ($91:D800). |
| 0x2fe4 | ⚗️ FORMULA_USAGE_CALL_UP | Word | Alchemy Statistics: Total lifetime casts counter for formula Call Up ($91:D800). |
| 0x2fe6 | ⚗️ FORMULA_USAGE_CORROSION | Word | Alchemy Statistics: Total lifetime casts counter for formula Corrosion ($91:D800). |
| 0x2fe8 | ⚗️ FORMULA_USAGE_CRUSH | Word | Alchemy Statistics: Total lifetime casts counter for formula Crush ($91:D800). |
| 0x2fea | ⚗️ FORMULA_USAGE_CURE | Word | Alchemy Statistics: Total lifetime casts counter for formula Cure ($91:D800). |
| 0x2fec | ⚗️ FORMULA_USAGE_DEFEND | Word | Alchemy Statistics: Total lifetime casts counter for formula Defend ($91:D800). |
| 0x2fee | ⚗️ FORMULA_USAGE_DOUBLE_DRAIN | Word | Alchemy Statistics: Total lifetime casts counter for formula Double Drain ($91:D800). |
| 0x2ff0 | ⚗️ FORMULA_USAGE_DRAIN | Word | Alchemy Statistics: Total lifetime casts counter for formula Drain ($91:D800). |
| 0x2ff2 | ⚗️ FORMULA_USAGE_ENERGIZE | Word | Alchemy Statistics: Total lifetime casts counter for formula Energize ($91:D800). |
| 0x2ff4 | ⚗️ CURRENCY_FORMATTED_STRING_BUF | Byte×16 | UI Subsystem: Formatted decimal string output buffer for currency window ($80:B21F / $8C:E628). |
| 0x2ff6…0x2833 | (gap) | Byte | Unmapped |
| 0x2ff8 | ⚗️ FORMULA_USAGE_FIREBALL | Word | Alchemy Statistics: Total lifetime casts counter for formula Fireball ($91:D800). |
| 0x2ffa | ⚗️ FORMULA_USAGE_FIRE_POWER | Word | Alchemy Statistics: Total lifetime casts counter for formula Fire Power ($91:D800). |
| 0x2ffc | ⚗️ FORMULA_USAGE_FLASH | Word | Alchemy Statistics: Total lifetime casts counter for formula Flash ($91:D800). |
| 0x2ffe | ⚗️ FORMULA_USAGE_FORCE_FIELD | Word | Alchemy Statistics: Total lifetime casts counter for formula Force Field ($91:D800). |
| 0x3000 | ⚗️ FORMULA_USAGE_HARD_BALL | Word | Alchemy Statistics: Total lifetime casts counter for formula Hard Ball ($91:D800). |
| 0x3002 | ⚗️ FORMULA_USAGE_HEAL | Word | Alchemy Statistics: Total lifetime casts counter for formula Heal ($91:D800). |
| 0x3004 | ⚗️ FORMULA_USAGE_LANCE | Word | Alchemy Statistics: Total lifetime casts counter for formula Lance ($91:D800). |
| 0x3006 | ⚗️ FORMULA_USAGE_LASER | Word | Alchemy Statistics: Total lifetime casts counter for formula Laser ($91:D800). |
| 0x3008 | ⚗️ FORMULA_USAGE_LEVITATE | Word | Alchemy Statistics: Total lifetime casts counter for formula Levitate ($91:D800). |
| 0x300a | ⚗️ FORMULA_USAGE_LIGHTNING_STORM | Word | Alchemy Statistics: Total lifetime casts counter for formula Lightning Storm ($91:D800). |
| 0x300c | ⚗️ FORMULA_USAGE_MIRACLE_CURE | Word | Alchemy Statistics: Total lifetime casts counter for formula Miracle Cure ($91:D800). |
| 0x300e | ⚗️ FORMULA_USAGE_NITRO | Word | Alchemy Statistics: Total lifetime casts counter for formula Nitro ($91:D800). |
| 0x3010 | ⚗️ FORMULA_USAGE_ONE_UP | Word | Alchemy Statistics: Total lifetime casts counter for formula One Up ($91:D800). |
| 0x3012 | ⚗️ FORMULA_USAGE_REFLECT | Word | Alchemy Statistics: Total lifetime casts counter for formula Reflect ($91:D800). |
| 0x3014 | ⚗️ FORMULA_USAGE_REGROWTH | Word | Alchemy Statistics: Total lifetime casts counter for formula Regrowth ($91:D800). |
| 0x3016 | ⚗️ FORMULA_USAGE_REVEALER | Word | Alchemy Statistics: Total lifetime casts counter for formula Revealer ($91:D800). |
| 0x3018 | ⚗️ FORMULA_USAGE_REVIVE | Word | Alchemy Statistics: Total lifetime casts counter for formula Revive ($91:D800). |
| 0x301a | ⚗️ FORMULA_USAGE_SLOW_BURN | Word | Alchemy Statistics: Total lifetime casts counter for formula Slow Burn ($91:D800). |
| 0x301c | ⚗️ FORMULA_USAGE_SPEED | Word | Alchemy Statistics: Total lifetime casts counter for formula Speed ($91:D800). |
| 0x301e | ⚗️ FORMULA_USAGE_STING | Word | Alchemy Statistics: Total lifetime casts counter for formula Sting ($91:D800). |
| 0x3020 | ⚗️ FORMULA_USAGE_STOP | Word | Alchemy Statistics: Total lifetime casts counter for formula Stop ($91:D800). |
| 0x3022 | ⚗️ FORMULA_USAGE_SUPER_HEAL | Word | Alchemy Statistics: Total lifetime casts counter for formula Super Heal ($91:D800). |
| 0x3364…0x3563 | ⚗️ ALCHEMY_ANIMATION_SLOTS | Byte×512 | 8 parallel animation slots (0x40 B each: +$00 PC, +$02 Bank, +$05 Timer, +$06 Frame, +$08 Attr, +$09 SpriteBank, +$0A SpriteTable, +$0E Lifetime, +$12 AnimID, +$26 Active, +$28 Source, +$2A Power, +$2E Target1, +$30 Target2) |
| 0x3564 | ⚗️ PROJ_ALCHEMY_SLOTS_BASE | Byte×944 | Combat Engine: 8-slot Projectile Alchemy active array (stride $76=118 bytes; +$12 spell ID, +$26 active flag, +$28 src, +$2A power, +$2E target). |
| 0x3578 | ⚙️ PARTICLE_SLOT_0_ACTIVE | Word | Particle / projectile animation slot 0 active execution flag (+0x14 in $7E:3564, reset in $91:97AF). |
| 0x35ee | ⚙️ PARTICLE_SLOT_1_ACTIVE | Word | Particle / projectile animation slot 1 active execution flag (+0x14 in $7E:35DA, reset in $91:97AF). |
| 0x3664 | ⚙️ PARTICLE_SLOT_2_ACTIVE | Word | Particle / projectile animation slot 2 active execution flag (+0x14 in $7E:3650, reset in $91:97AF). |
| 0x36da | ⚙️ PARTICLE_SLOT_3_ACTIVE | Word | Particle / projectile animation slot 3 active execution flag (+0x14 in $7E:36C6, reset in $91:97AF). |
| 0x3750 | ⚙️ PARTICLE_SLOT_4_ACTIVE | Word | Particle / projectile animation slot 4 active execution flag (+0x14 in $7E:373C, reset in $91:97AF). |
| 0x37c6 | ⚙️ PARTICLE_SLOT_5_ACTIVE | Word | Particle / projectile animation slot 5 active execution flag (+0x14 in $7E:37B2, reset in $91:97AF). |
| 0x383c | ⚙️ PARTICLE_SLOT_6_ACTIVE | Word | Particle / projectile animation slot 6 active execution flag (+0x14 in $7E:3828, reset in $91:97AF). |
| 0x38b2 | ⚙️ PARTICLE_SLOT_7_ACTIVE | Word | Particle / projectile animation slot 7 active execution flag (+0x14 in $7E:389E, reset in $91:97AF). |
| 0x3a3e | ⚙️ DAMAGE_POPUP_BOY_NODE | Byte×64 | Player 1 (Boy) floating combat damage numbers & status popup node (stride 64 bytes: screen X, Y, value, lifetime ticks). |
| 0x3a7e | ⚙️ DAMAGE_POPUP_DOG_NODE | Byte×64 | Player 2 (Dog) floating combat damage numbers & status popup node (stride 64 bytes: screen X, Y, value, lifetime ticks). |
| 0x3abe | 📖 JOYPAD_CHORD_HISTORY | Byte | The joypad matcher's ring of recent button chords. 128 words, newest at $3ABE + $3BBE, older chords above it (the index counts down and wraps in 8 bits). A re |
| 0x3bbe | 📖 JOYPAD_CHORD_INDEX | Byte | Offset of the newest chord in the joypad chord history. A byte offset into $3ABE, always even, moved down by 2 per new chord. $3BBF right after it is the te |
| 0x3bbf | ⚗️ DIALOGUE_RING_CURSOR | Word | Cyclic message buffer index for active dialogue text box rendering. |
| 0x3bc3 | ⚙️ CHILD_TASK_CURSOR | Word | Child actor allocation index in multi-tasking scheduler pool. |
| 0x3bc5 | ⚙️ SCRIPT_TASK_SELECTOR | Word | Active thread index in script virtual machine scheduler. |
| 0x3bc7 | ⚙️ ENTITY_FREE_LIST_HEAD | Word | Head pointer to linked list of available actor entity slots in pool. |
| 0x3bc9 | ⚙️ COMPANION_WAYPOINTS_BUF | Byte×48 | Breadcrumb pathfinding waypoint ring buffer for companion Dog (16 nodes * 3 bytes: +0 X tile, +1 Y tile, +2 movement flags). |
| 0x3bff | ⚙️ BREADCRUMB_QUEUE_TAIL | Word | Tail offset pointer for companion navigation breadcrumb coordinate queue. |
| 0x3c01 | 🐶 COMPANION_ANCHOR | Word | Target waypoint coordinate anchor guiding dog companion movement. |
| 0x3c10 | ⚙️ COMPANION_STEP_COUNT | Word | Step counter regulating companion pathfinding recalculation frequency. |
| 0x3c12 | 📖 COMPANION_NAV_FLAGS | Word | Behavioral flags for companion pathfinding (leash, obstacle avoidance, sniffing). |
| 0x3c14 | ⚙️ ACTOR_PARENT_LINKS | Byte×64 | Hierarchy table linking child entity slots to their originating parent actors. |
| 0x3c22 | ⚙️ COMPANION_OBSTACLE_TARGET_X | Word | Target X coordinate during active obstacle evasion pathfinding. |
| 0x3c58 | ⚙️ COMPANION_WAYPOINT_READ_PTR | Word | Byte offset of intermediate target waypoint node in companion breadcrumb queue. |
| 0x3c5a | ⚙️ COMPANION_WAYPOINT_WRITE_PTR | Word | Byte offset of latest recorded waypoint node in companion breadcrumb queue. |
| 0x3c65 | ⚙️ COMPANION_EVASION_COUNTER | Byte | Retry attempt counter when companion encounters wall or obstacle. |
| 0x3c67 | ⚙️ COMPANION_EVASION_DIRECTION | Word | Evasion route direction enum (0, 2, 4, 6, 8, 10, 12, 14). |
| 0x3c69 | ⚙️ COMPANION_TARGET_FACING | Word | Target facing direction calculated for companion toward current goal. |
| 0x3c6b | ⚙️ COMPANION_TARGET_Y_LATCH | Word | Latched goal Y position during companion pathfinding route execution. |
| 0x3c6d | ⚙️ COMPANION_TARGET_ACTOR_PTR | Word | Pointer to entity record companion is actively following (points to Boy at $7E:4E89). |
| 0x3c6f | ⚙️ COMPANION_AI_STATE | Word | Companion Dog AI behavior state enum (0 = Idle, 1 = Follow Boy, 2 = Sniffing alchemy, 3 = Obstacle evasion, 4 = Combat attack, 5 = Returning, 6 = Stuck retry). |
| 0x3c71 | ⚙️ BOSS_SEGMENT_TARGET_X | Word | Target world X coordinate for tracking boss limb / satellite entity ($8C:D253). |
| 0x3c73 | ⚙️ BOSS_SEGMENT_TARGET_Y | Word | Target world Y coordinate for tracking boss limb / satellite entity ($8C:D25D). |
| 0x3c75 | ⚙️ BOSS_SEGMENT_OFFSET_X | Word | Horizontal joint attachment offset X from parent boss body ($8F:9C41). |
| 0x3c77 | ⚙️ BOSS_SEGMENT_OFFSET_Y | Word | Vertical joint attachment offset Y from parent boss body ($8F:9C46). |
| 0x3c7b | ⚙️ BOSS_SEGMENT_SLOT_2 | Byte×89 | Boss child segment slot 2 descriptor (89 bytes: joint offset, angle, limb anim state). |
| 0x3cab | ⚙️ BOSS_SEGMENT_LIMB_ANGLE | Word | Rotational articulation angle index for connected boss limb ($8F:A732). |
| 0x3cac | ⚙️ BOSS_SEGMENT_ANIM_FRAME | Byte | Current sprite animation sequence frame index for boss child segment ($8F:A73A). |
| 0x3cad | ⚙️ BOSS_SEGMENT_FLASH_TIMER | Byte | Hit flash color inversion timer ticks for multipart boss limb ($8F:A7C8). |
| 0x3cae | ⚙️ BOSS_SEGMENT_COLLISION_BOX | Word | Hitbox / hurtbox boundary dimension flags for child segment ($8F:9958). |
| 0x3cd4 | ⚙️ BOSS_SEGMENT_SLOT_3 | Byte×89 | Boss child segment slot 3 descriptor (89 bytes: free link, joint offsets, parent ptr). |
| 0x3d1d | ⚙️ BOSS_SEGMENT_3_STATUS | Word | Boss segment 3 active status flags / limb damage accumulator. |
| 0x3d1f | ⚙️ BOSS_SEGMENT_3_PARENT_PTR | Word | Boss segment 3 pointer referencing primary parent boss entity slot. |
| 0x3d2d | ⚙️ BOSS_SEGMENT_SLOT_4 | Byte×89 | Boss child segment slot 4 descriptor (89 bytes: free link, joint offsets, parent ptr). |
| 0x3d86 | ⚙️ BOSS_SEGMENT_SLOT_5 | Byte×89 | Boss child segment slot 5 descriptor (89 bytes: free link, joint offsets, parent ptr). |
| 0x3ddf | ⚙️ ACTIVE_ENTITY_HEAD | Word | Head pointer of linked list chaining all active entities in current room. |
| 0x3de5 | ⚙️ ENTITY_SLOTS_POOL | Byte×4260 | Actor entity pool (30 slots × 142 bytes); stores positions, animations, stats, and state. |
| 0x3e73 | 👾 ENTITY_SLOT_01_BASE | struct EntitySlot | Entity Pool: Actor entity slot 1 base (142 bytes). |
| 0x3f01 | 👾 ENTITY_SLOT_02_BASE | struct EntitySlot | Entity Pool: Actor entity slot 2 base (142 bytes). |
| 0x3f8f | 👾 ENTITY_SLOT_03_BASE | struct EntitySlot | Entity Pool: Actor entity slot 3 base (142 bytes). |
| 0x401d | 👾 ENTITY_SLOT_04_BASE | struct EntitySlot | Entity Pool: Actor entity slot 4 base (142 bytes). |
| 0x40ab | 👾 ENTITY_SLOT_05_BASE | struct EntitySlot | Entity Pool: Actor entity slot 5 base (142 bytes). |
| 0x4139 | 👾 ENTITY_SLOT_06_BASE | struct EntitySlot | Entity Pool: Actor entity slot 6 base (142 bytes). |
| 0x41c7 | 👾 ENTITY_SLOT_07_BASE | struct EntitySlot | Entity Pool: Actor entity slot 7 base (142 bytes). |
| 0x4255 | 👾 ENTITY_SLOT_08_BASE | struct EntitySlot | Entity Pool: Actor entity slot 8 base (142 bytes). |
| 0x42e3 | 👾 ENTITY_SLOT_09_BASE | struct EntitySlot | Entity Pool: Actor entity slot 9 base (142 bytes). |
| 0x4371 | 👾 ENTITY_SLOT_10_BASE | struct EntitySlot | Entity Pool: Actor entity slot 10 base (142 bytes). |
| 0x43ff | 👾 ENTITY_SLOT_11_BASE | struct EntitySlot | Entity Pool: Actor entity slot 11 base (142 bytes). |
| 0x448d | 👾 ENTITY_SLOT_12_BASE | struct EntitySlot | Entity Pool: Actor entity slot 12 base (142 bytes). |
| 0x451b | 👾 ENTITY_SLOT_13_BASE | struct EntitySlot | Entity Pool: Actor entity slot 13 base (142 bytes). |
| 0x45a9 | 👾 ENTITY_SLOT_14_BASE | struct EntitySlot | Entity Pool: Actor entity slot 14 base (142 bytes). |
| 0x4637 | 👾 ENTITY_SLOT_15_BASE | struct EntitySlot | Entity Pool: Actor entity slot 15 base (142 bytes). |
| 0x46c5 | 👾 ENTITY_SLOT_16_BASE | struct EntitySlot | Entity Pool: Actor entity slot 16 base (142 bytes). |
| 0x4753 | 👾 ENTITY_SLOT_17_BASE | struct EntitySlot | Entity Pool: Actor entity slot 17 base (142 bytes). |
| 0x47e1 | 👾 ENTITY_SLOT_18_BASE | struct EntitySlot | Entity Pool: Actor entity slot 18 base (142 bytes). |
| 0x486f | 👾 ENTITY_SLOT_19_BASE | struct EntitySlot | Entity Pool: Actor entity slot 19 base (142 bytes). |
| 0x48fd | 👾 ENTITY_SLOT_20_BASE | struct EntitySlot | Entity Pool: Actor entity slot 20 base (142 bytes). |
| 0x498b | 👾 ENTITY_SLOT_21_BASE | struct EntitySlot | Entity Pool: Actor entity slot 21 base (142 bytes). |
| 0x4a19 | 👾 ENTITY_SLOT_22_BASE | struct EntitySlot | Entity Pool: Actor entity slot 22 base (142 bytes). |
| 0x4aa7 | 👾 ENTITY_SLOT_23_BASE | struct EntitySlot | Entity Pool: Actor entity slot 23 base (142 bytes). |
| 0x4b35 | 👾 ENTITY_SLOT_24_BASE | struct EntitySlot | Entity Pool: Actor entity slot 24 base (142 bytes). |
| 0x4bc3 | 👾 ENTITY_SLOT_25_BASE | struct EntitySlot | Entity Pool: Actor entity slot 25 base (142 bytes). |
| 0x4c51 | 👾 ENTITY_SLOT_26_BASE | struct EntitySlot | Entity Pool: Actor entity slot 26 base (142 bytes). |
| 0x4cdf | 👾 ENTITY_SLOT_27_BASE | struct EntitySlot | Entity Pool: Actor entity slot 27 base (142 bytes). |
| 0x4d6d | 👾 ENTITY_SLOT_28_BASE | struct EntitySlot | Entity Pool: Actor entity slot 28 base (142 bytes). |
| 0x4dfb | 👾 ENTITY_SLOT_29_BASE | struct EntitySlot | Entity Pool: Actor entity slot 29 base (142 bytes). |
| 0x4e89 | 🧑 BOY_ENTITY_RECORD | Byte×174 | Primary actor entity structure for boy player character. |
| 0x4e99 | ⚙️ BOY_STATUS_FLAGS | Word | Primary action and collision status flags for Boy player entity (+$10 in entity struct). |
| 0x4e9b | ⚙️ BOY_ANIM_PHASE_TIMER | Word | Sub-frame animation phase timer for Boy walk/run/attack cycles (+$12 in entity struct). |
| 0x4ea1 | ⚙️ BOY_ACTION_STATE_FLAGS | Word | Movement and action state flags for Boy player entity (+$18 in entity struct). |
| 0x4ea3 | ⚙️ BOY_WORLD_X | Word | Boy player entity current horizontal world coordinate in pixels (+$1A in entity struct). |
| 0x4ea5 | ⚙️ BOY_WORLD_Y | Word | Boy player entity current vertical world coordinate in pixels (+$1C in entity struct). |
| 0x4eab | ⚙️ BOY_FACING_DIRECTION | Word | Boy facing direction enum (0=N, 2=NE, 4=E, 6=SE, 8=S, 10=SW, 12=W, 14=NW; +$22 in entity struct). |
| 0x4ead | ⚔️ PRIMARY_ATTACKER_PTR | Word | Pointer to entity record of actor initiating current physical or magic attack. |
| 0x4eb3 | ⚙️ BOY_COLLISION_RADIUS | Word | Horizontal collision bounding box half-width for Boy entity (+$2A in entity struct). |
| 0x4ec3 | ⚙️ BOY_ELEVATION_Z | Word | Boy entity current vertical elevation / Z-height off ground plane (+$3A in entity struct). |
| 0x4ec5 | ⚙️ BOY_MOVEMENT_VELOCITY | Word | Movement velocity factor applied during Boy walking and running (+$3C in entity struct). |
| 0x4ecf…0x4ee0 | 🧑 BOY_STATUS_SLOTS | Byte×18 | Status effect slots (Slot 1: $4ecf ID, $4ed1 duration timer, $4ed3 buff value; Slot 2: $4ed5..; Slot 3: $4edb..) |
| 0x4f29 | 🧑 BOY_BOOST_ATTACK | Word | Temporary boost attack power (e.g. from Atlas) |
| 0x4f2b | 🧑 BOY_BOOST_DEFENSE | Word | Temporary boost defense power (e.g. from Defend) |
| 0x4f2d | 🧑 BOY_BOOST_MAGIC_ATTACK | Word | Temporary boost magic attack |
| 0x4f2f | 🧑 BOY_BOOST_HIT | Word | Temporary boost hit rate / speed flags |
| 0x4f31 | 🧑 BOY_BOOST_MAGIC_DEFENSE | Word | Temporary boost magic defense |
| 0x4f37 | 🐶 DOG_ENTITY_RECORD | Byte×174 | Primary actor entity structure for dog companion character. |
| 0x4f47 | ⚙️ DOG_STATUS_FLAGS | Word | Primary action and collision status flags for Dog companion entity (+$10 in entity struct). |
| 0x4f49 | ⚙️ DOG_ANIM_PHASE_TIMER | Word | Sub-frame animation phase timer for Dog companion entity (+$12 in entity struct). |
| 0x4f4f | ⚙️ DOG_ACTION_STATE_FLAGS | Word | Movement and action state flags for Dog companion entity (+$18 in entity struct). |
| 0x4f51 | ⚙️ DOG_WORLD_X | Word | Dog companion entity current horizontal world coordinate in pixels (+$1A in entity struct). |
| 0x4f53 | ⚙️ DOG_WORLD_Y | Word | Dog companion entity current vertical world coordinate in pixels (+$1C in entity struct). |
| 0x4f59 | ⚙️ DOG_FACING_DIRECTION | Word | Dog facing direction enum (0=N, 2=NE, 4=E, 6=SE, 8=S, 10=SW, 12=W, 14=NW; +$22 in entity struct). |
| 0x4f5b | ⚔️ SECONDARY_ATTACKER_PTR | Word | Pointer to entity record of target entity receiving combat damage. |
| 0x4f61 | ⚙️ DOG_COLLISION_RADIUS | Word | Horizontal collision bounding box half-width for Dog entity (+$2A in entity struct). |
| 0x4f71 | ⚙️ DOG_ELEVATION_Z | Word | Dog entity current vertical elevation / Z-height off ground plane (+$3A in entity struct). |
| 0x4f73 | ⚙️ DOG_MOVEMENT_VELOCITY | Word | Movement velocity factor applied during Dog walking, running, and sniffing (+$3C in entity struct). |
| 0x4fa5 | ⚙️ DOG_FORM_SCRIPT_PTR_LOW | Word | Companion Mechanics: Low 16-bit pointer to active Dog form animation walker script ($8F:9471). |
| 0x4fa6 | ⚙️ DOG_FORM_SCRIPT_PTR_BANK | Byte | Companion Mechanics: Bank byte of active Dog form animation walker script. |
| 0x4fe6 | ⚙️ MAP_ANIM_FRAMES | Byte×50 | Current animation frame indices for active map animated tile channels. |
| 0x5018 | ⚙️ MAP_ANIM_TIMERS | Byte×50 | Countdown hold delay timers for active map animated tile channels. |
| 0x504a | ⚙️ MAP_ANIM_CYCLES | Byte×50 | Loop cycle iteration counters for active map animated tile channels. |
| 0x507d | ⚙️ MAP_ANIM_DESCRIPTORS | Byte×34 | ROM pointers to animated tile sequence descriptor definitions. |
| 0x50a7 | ⚙️ SPRITE_ALLOC_POOL | Byte×136 | Dynamic sprite allocation node pool (17 nodes * 8 bytes: +$00 prev, +$02 next, +$04 state $FFFF=free, +$06 parent). |
| 0x50ad | ⚔️ SPRITE_VRAM_ALLOC_TABLE | Byte | Sprite VRAM block allocation table. Used by the dynamic sprite engine in bank $80 to allocate VRAM tile slots for dynamic actors, weapon animations, and particl |
| 0x50af | ⚙️ SPRITE_SORT_BUCKET_1 | Byte×8 | Y-sorted sprite display list bucket 1 (Screen Y 64..127): +0 prev, +2 next, +4 key, +6 tail. |
| 0x50b7 | ⚙️ SPRITE_SORT_BUCKET_2 | Byte×8 | Y-sorted sprite display list bucket 2 (Screen Y 128..191): +0 prev, +2 next, +4 key, +6 tail. |
| 0x50bf | ⚙️ SPRITE_SORT_BUCKET_3 | Byte×8 | Y-sorted sprite display list bucket 3 (Screen Y 192..255): +0 prev, +2 next, +4 key, +6 tail. |
| 0x50c7 | ⚙️ SPRITE_SORT_BUCKET_4 | Byte×8 | Y-sorted sprite display list bucket 4 (Screen Y 256..319): +0 prev, +2 next, +4 key, +6 tail. |
| 0x50cf | ⚙️ SPRITE_SORT_BUCKET_5 | Byte×8 | Y-sorted sprite display list bucket 5 (Screen Y 320..383): +0 prev, +2 next, +4 key, +6 tail. |
| 0x50d7 | ⚙️ SPRITE_SORT_BUCKET_6 | Byte×8 | Y-sorted sprite display list bucket 6 (Screen Y 384..447): +0 prev, +2 next, +4 key, +6 tail. |
| 0x50df | ⚙️ SPRITE_SORT_BUCKET_7 | Byte×8 | Y-sorted sprite display list bucket 7 (Screen Y 448..511): +0 prev, +2 next, +4 key, +6 tail. |
| 0x50e7 | ⚙️ SPRITE_SORT_BUCKET_8 | Byte×8 | Y-sorted sprite display list bucket 8 (Screen Y 512..575): +0 prev, +2 next, +4 key, +6 tail. |
| 0x50ef | ⚙️ SPRITE_SORT_BUCKET_9 | Byte×8 | Y-sorted sprite display list bucket 9 (Screen Y 576..639): +0 prev, +2 next, +4 key, +6 tail. |
| 0x50f7 | ⚙️ SPRITE_SORT_BUCKET_10 | Byte×8 | Y-sorted sprite display list bucket 10 (Screen Y 640..703): +0 prev, +2 next, +4 key, +6 tail. |
| 0x50ff | ⚙️ SPRITE_SORT_BUCKET_11 | Byte×8 | Y-sorted sprite display list bucket 11 (Screen Y 704..767): +0 prev, +2 next, +4 key, +6 tail. |
| 0x5107 | ⚙️ SPRITE_SORT_BUCKET_12 | Byte×8 | Y-sorted sprite display list bucket 12 (Screen Y 768..831): +0 prev, +2 next, +4 key, +6 tail. |
| 0x510f | ⚙️ SPRITE_SORT_BUCKET_13 | Byte×8 | Y-sorted sprite display list bucket 13 (Screen Y 832..895): +0 prev, +2 next, +4 key, +6 tail. |
| 0x5117 | ⚙️ SPRITE_SORT_BUCKET_14 | Byte×8 | Y-sorted sprite display list bucket 14 (Screen Y 896..959): +0 prev, +2 next, +4 key, +6 tail. |
| 0x511f | ⚙️ SPRITE_SORT_BUCKET_15 | Byte×8 | Y-sorted sprite display list bucket 15 (Screen Y 960..1023): +0 prev, +2 next, +4 key, +6 tail. |
| 0x5127 | ⚙️ SPRITE_DRAW_QUEUE_HEAD | Word | Head pointer to sorted sprite render queue ($7E:512F..$7E:516F); traversed by func_C096BB. |
| 0x512f | ⚙️ SPRITE_DRAW_QUEUE_NODES | Byte×64 | Dynamic sprite draw queue nodes (stride 16 bytes: +$00 next link, +$04 state, +$06 X, +$08 Y, +$0A attr flags, +$0C..$0E 24-bit slice table ptr). |
| 0x6187 | ⚗️ SPRITE_CGRAM_SHADOW | Byte×32 | Sprite palette shadow buffer DMA-copied to SNES CGRAM during VBLANK. |
| 0x61a7 | ⚗️ MAP_TILE_PALETTES | Byte×224 | Tile family CGRAM palette shadow buffers (7 families × 32 bytes). |
| 0x6289 | ⚙️ OAM_SLICE_DESCRIPTORS | Byte×28 | Hardware sprite OAM tile slice position and attribute descriptor array. |
| 0x62a5 | ⚙️ TILE_ANIM_VRAM_OFFSETS | Byte×224 | Source VRAM tile offset table for animated tile family cycling. |
| 0x6387 | ⚔️ PROJECTILE_SLOTS_BASE | Byte×352 | Combat Engine: 8-slot active physics projectile array (stride 44 bytes; +$06 sprite, +$10 active, +$14 X, +$16 Y, +$18 Z, +$1E life, +$26 behaviour, +$28 power). |
| 0x6c91 | ⚙️ DYNAMIC_VRAM_TILES_8X8 | Byte×1599 | Staging buffer for dynamic 8x8 4bpp SNES sprite tiles ($7E:6C91..$7E:72D0, 32 bytes per tile) queued for VRAM DMA by obj_tile_allocate ($C0:A4B5). |
| 0x72d1 | ⚙️ SPRITE_TILE_STAGING_BUF | Byte×1024 | Staging buffer for 4bpp sprite tile graphics unpacked dynamically before VRAM DMA upload (128 bytes per 16x16 tile). |
| 0x7321 | ⚗️ LAVA_PALETTE_ROTATION | Byte×16 | Animated palette rotation buffer for bubbling molten lava surface glow. |
| 0x7331 | ⚗️ CRYSTAL_PALETTE_CYCLE | Byte×16 | Animated palette cycling buffer for glowing crystalline minerals. |
| 0x7d51 | ⚙️ TIER1_TILE_SLOT_LOOKUP | Byte×6228 | Tier 1 dynamic sprite tile frame direct lookup table ($7E:7D51..$7E:95A4), mapping frame/tile ID to allocated cache slot index. |
| 0x95a5 | ⚙️ TIER1_CACHE_SLOT_TILES | Word×128 | Tier 1 dynamic sprite tile slot table ($7E:95A5..$7E:96A4, 128 words), tracking which tile ID occupies each VRAM slot. |
| 0x96a5 | ⚙️ OBJ_TILE_LRU_PREV | Byte | OBJ 8x8 tile cache, prev links (130 bytes). prev[i] of the OBJ tile cache lists; see $7E9727. $7E9725 = prev[$80] (next slot to evict), $7E9726 = `pre |
| 0x9725 | ⚙️ TIER1_LRU_HEAD_NODE | Byte | Most recently used (MRU) slot index in Tier 1 dynamic sprite tile cache. |
| 0x9726 | ⚙️ TIER1_LRU_TAIL_NODE | Byte | Least recently used (LRU) slot index in Tier 1 dynamic sprite tile cache (selected for next eviction). |
| 0x9727 | ⚙️ OBJ_TILE_LRU_NEXT | Byte | OBJ 8x8 tile cache, next links (130 bytes). Doubly linked list over the 128 dynamic OBJ tile slots; a slot number is the OBJ tile number (VRAM word `$6000 + slo |
| 0x97a9 | ⚙️ VRAM_TILE_PATTERN_LOOKUP | Byte×256 | Lookup table mapping ROM sprite pattern ID to allocated dynamic VRAM slot. |
| 0xa000 | ⚗️ FONT_GLYPH_STAGING | Byte×14366 | High WRAM 2bpp font glyph rendering and decompression staging buffer. |
| 0xaa58 | ⚙️ VRAM_SLOT_PATTERN_MAP | Word×128 | Table mapping dynamic VRAM tile slots back to their active pattern ID. |
| 0xab18 | ⚙️ VRAM_TILE_LRU_PREV | Byte×96 | Backward links for least-recently-used (LRU) dynamic VRAM sprite tile allocator. |
| 0xab78 | ⚙️ VRAM_TILE_LRU_HEAD | Byte | Head index of LRU dynamic VRAM tile allocator list. |
| 0xab79 | ⚙️ VRAM_TILE_LRU_MOST_RECENT | Byte | Most recently allocated tile index in dynamic VRAM tile allocator. |
| 0xab7a | ⚙️ VRAM_TILE_LRU_NEXT | Byte×96 | Forward links for least-recently-used (LRU) dynamic VRAM sprite tile allocator. |
| 0xabde | ⚙️ LOW_OAM_TABLE_BUF | Byte×512 | Low OAM staging buffer (128 hardware sprites * 4 bytes: X low, Y, tile number, attributes); uploaded to SNES OAM via DMA in VBlank. |
| 0xadde | ⚙️ HIGH_OAM_TABLE_BUF | Byte×32 | High OAM staging buffer (32 bytes = 128 sprites * 2 bits: bit 0 = 9th bit of X, bit 1 = sprite size 8x8 vs 16x16/32x32); uploaded via DMA in VBlank. |
| 0xc300 | ⚙️ ROOM_PALETTE_TABLE | Byte×1280 | Room tile palette index association table. |
| 0xc800 | ⚗️ SHADOW_TILEMAP_BUF | Byte×512 | Staging buffer for HUD and text box background layer tilemap updates. |
| 0xd81e | ⚗️ DIALOGUE_ASCII_BUFFER | Byte×10210 | Dialogue box decoded ASCII text string rasterization buffer. |
| 0x7f0000 | ⚙️ ROOM_METATILE_GRID | Byte×40960 | Primary decompressed 16-bit room metatile grid & collision geometry layer ($7F:0000..$7F:9FFF, up to 64×64 metatiles). |
| 0x7fa000 | ⚙️ VIEWPORT_TILEMAP_COMPOSITE | Byte×674 | Active viewport screen tilemap composite staging buffer in Bank $7F ($7F:A000..$7F:A2A1). |
| 0x7fc300 | ⚙️ ROOM_PALETTE_TABLE | Byte×1280 | Room tile palette index association table in Bank $7F ($7F:C300..$7F:C4A0). |
| 0x7fc800 | ⚙️ SHADOW_TILEMAP_BUF | Byte×4096 | Staging buffer in Bank $7F ($7F:C800..$7F:D7FF) for HUD and dialogue text box tilemap transfers. |
| 0x7fc844 | ⚙️ HUD_TEXTBOX_TILEMAP_STAGING | Byte×1593 | Staging buffer in Bank $7F ($7F:C844..$7F:CE7C) for HUD and dialogue text box tilemap transfers. |
| 0x7fd81e | ⚙️ DIALOGUE_ASCII_BUFFER | Byte×10210 | Dialogue box decoded ASCII text string rasterization buffer in Bank $7F ($7F:D81E..$7F:FFFE, unpacked by $8C:CCF5). |