Skip to content

Ram Map

r-bin edited this page Oct 27, 2026 · 11 revisions

WRAM Memory Map Reference

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.


1. Memory Regions Overview

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 $2834 as room-local scratch conflict with its verified persistent-SRAM mapping.


2. Key Architecture Notes

Persistent Progression Bitmasks ($2258+)

  • $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.).

Temporary Scratch Space

Unverified: No general-purpose scratch range or room-change clearing behavior is established by the sources checked for this page. $2834 is persistent SRAM and must not be used as temporary state.


3. Emoji Legend

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

4. Mapped WRAM Addresses

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).

Clone this wiki locally