From 5f6e6471146746ca31e5d7b90be90621757fd23a Mon Sep 17 00:00:00 2001 From: gamer147 Date: Mon, 3 Aug 2026 12:07:13 -0400 Subject: [PATCH] Normalize tracked text for Linux CI --- .gitattributes | 13 +- docs/PROJECT-STRUCTURE.md | 2 +- docs/engine-ctx-reference.md | 260 +- docs/global-reference.md | 8646 ++++++++--------- docs/opcode-reference.md | 6010 ++++++------ docs/platform-portability.md | 2 +- docs/remake-architecture-and-roadmap.md | 15 +- engine/Age.Cli/Age.Cli.csproj | 28 +- .../Age.Engine.Tests/Age.Engine.Tests.csproj | 48 +- engine/Age.Engine/Age.Engine.csproj | 26 +- engine/AgeEngine.sln | 58 +- tools/age_opcodes_himegari.py | 178 +- 12 files changed, 7647 insertions(+), 7639 deletions(-) diff --git a/.gitattributes b/.gitattributes index 0b75b0f..545d8da 100644 --- a/.gitattributes +++ b/.gitattributes @@ -64,10 +64,9 @@ *.woff2 binary *.zip binary -# These generated files currently have CRLF committed by generator contract. -# Preserve their bytes while retaining textual diffs until the generators and -# their committed output are deliberately migrated together. -docs/opcode-reference.md -text -eol diff whitespace=trailing-space,space-before-tab,cr-at-eol -docs/global-reference.md -text -eol diff whitespace=trailing-space,space-before-tab,cr-at-eol -docs/engine-ctx-reference.md -text -eol diff whitespace=trailing-space,space-before-tab,cr-at-eol -tools/age_opcodes_himegari.py -text -eol diff whitespace=trailing-space,space-before-tab,cr-at-eol +# Generated references are ordinary canonical-LF text. Their whitespace +# exceptions preserve generator-owned formatting without disabling EOL policy. +docs/opcode-reference.md whitespace=trailing-space,space-before-tab,cr-at-eol +docs/global-reference.md whitespace=trailing-space,space-before-tab,cr-at-eol +docs/engine-ctx-reference.md whitespace=trailing-space,space-before-tab,cr-at-eol +tools/age_opcodes_himegari.py whitespace=trailing-space,space-before-tab,cr-at-eol diff --git a/docs/PROJECT-STRUCTURE.md b/docs/PROJECT-STRUCTURE.md index 60c2cf0..0b5c539 100644 --- a/docs/PROJECT-STRUCTURE.md +++ b/docs/PROJECT-STRUCTURE.md @@ -31,7 +31,7 @@ S:\Game Hacking\Eushully\Himegari\ ← workspace root (three siblings) ├── README.md navigation-only repository front door; canonical facts stay in docs/ ├── global.json pins the validated .NET 8 SDK feature band ├── .editorconfig / .gitattributes UTF-8, indentation, text/EOL, and binary-file policy; - │ generator-owned CRLF references retain their committed bytes + │ tracked source and generated references use canonical LF ├── run-godot.ps1 / run-godot.cmd tracked development launcher + Windows wrapper; │ resolves Godot/game-root from parameters, environment, │ PATH, and the conventional sibling install diff --git a/docs/engine-ctx-reference.md b/docs/engine-ctx-reference.md index bfe36d7..ee0dedc 100644 --- a/docs/engine-ctx-reference.md +++ b/docs/engine-ctx-reference.md @@ -1,130 +1,130 @@ -# EngineCtx field reference - -> Generated from `vm-map/engine-ctx.toml` by `tools/engine_ctx_build.py --build`. Do not edit. - -Struct `EngineCtx`, size `0xa1000`. Applied to the Ghidra `/v2` image (dispatch-handler `this` = `EngineCtx *`). - -| offset | name | type | note | -|---|---|---|---| -| `0x4` | `host_ui_interface` | `void*` | host-facing UI interface used by the ctx+4 virtual-dispatch thunks; default slot +4 logs and presents AGE message boxes | -| `0x814` | `input_action_count` | `int` | logical action count (0..31); op 0xfe sets it, op 0x100 scans actions below it and uses callback slot count itself when the polled mask is empty | -| `0x898` | `joystick_physical_button_count` | `int` | WinMM JOYCAPS physical button count returned by op 0x106 | -| `0x89c` | `joystick_button_map` | `int` | base of 32-entry logical button-slot to physical joystick-button table; op 0x107 writes it, slot N emits action N+4 | -| `0x135c` | `mouse_button_action_map` | `int` | base of physical mouse-button to logical button-slot table; op 0x10b writes it and polling adds 4 to obtain the action index | -| `0x13dc` | `message_skip_enabled` | `int` | persistent all-message Skip flag; op 0x88 writes it and adv_interpreter_tick injects input bit 0x40 while nonzero | -| `0x1428` | `keyboard_vk_action_map` | `int` | base of 256-entry Win32 virtual-key to logical action table consumed by keyboard polling | -| `0x1828` | `dik_to_vk_table` | `int` | base of 256-entry DirectInput DIK scan-code to Win32 virtual-key translation used by op 0x10c | -| `0x1c34` | `mouse_wheel_delta` | `int` | signed WM_MOUSEWHEEL delta accumulated by age_main_window_proc; op 0x10d returns and clears it | -| `0x4d7c` | `shared_profile_state` | `void*` | embedded shared SAVE.DAT state object; owns profile integer/settings tables and container timing metadata | -| `0x5190` | `shared_profile_int_table` | `int` | open-addressing 12-byte string-key to 32-bit value table; op 0x1a2 stores, 0x1a3 loads, shared SAVE.DAT serializes it | -| `0x144e0` | `sfx_channel_resource_ids` | `int` | base of ten packed resource ids retained by the sound-effect facade; op 0xb4 loads a channel, op 0xb6 clears it, and numbered-save layouts restore then reopen every positive id | -| `0x14d54` | `adv_text_layout_ptr_table` | `void*` | text_manager at ctx+0x14940 plus layout pointer table +0x414; ops 0x212/0x213 configure each layout's wait-indicator handle and retained glyph-object range at layout+0x64/+0x68/+0x6c | -| `0x14e08` | `gfx_default_object_slot` | `int` | op 0x80 selected slot; op 0x1d9 substitutes it when its explicit object-slot operand is zero | -| `0x14e0c` | `text_primary_font_height` | `int` | primary LOGFONTA.lfHeight at text-manager+0x4cc; stored as a negative pixel height and updated by op 0x75 | -| `0x14e10` | `text_primary_font_width` | `int` | primary LOGFONTA.lfWidth at text-manager+0x4d0; op 0x75 stores negative half the requested font size | -| `0x14e1c` | `text_primary_font_weight` | `int` | primary LOGFONTA.lfWeight at text-manager+0x4dc; op 0x2bd writes 700 for enabled or zero for disabled | -| `0x14e84` | `text_antialias_enabled` | `int` | text-manager+0x544; message:UseAntiFont selects GGO_GRAY4_BITMAP when nonzero and GGO_BITMAP when zero | -| `0x14e88` | `text_antialias_version` | `int` | text-manager+0x548 loaded from set:AntiFontVersion; Himegari SYS4INI supplies version 3 | -| `0x14e8c` | `text_primary_color_bgr` | `uint` | text-manager+0x54c internal GDI BGR/COLORREF primary glyph color; op 0x76 converts script RGB into it | -| `0x14e90` | `text_effect_color_bgr` | `uint` | text-manager+0x550 internal GDI BGR/COLORREF effect glyph color; op 0x77 converts script RGB into it | -| `0x14e98` | `text_render_mode` | `int` | text-manager+0x558; op 0x78 selects primary-only, displaced shadow, reduced-coverage repeat, or sampled ellipse outline | -| `0x14ea0` | `text_line_spacing` | `int` | extra pixel leading between text lines; defaults to 6, op 0x8b writes it | -| `0x14ea4` | `text_effect_offset_x` | `int` | text-manager+0x564; op 0x1a4 horizontal displacement for mode 1 or ellipse radius for mode 3 | -| `0x14ea8` | `text_effect_offset_y` | `int` | text-manager+0x568; op 0x1a4 vertical displacement for mode 1 or ellipse radius for mode 3 | -| `0x14f45` | `script_frame_index` | `int` | call-script frame index (0x1e-dword frames) | -| `0x46188` | `renderer_device_state` | `int` | embedded D3D9 device/render state; op 0x20e passes this base to the target/depth clear worker | -| `0x46598` | `d3d9_device` | `void*` | IDirect3DDevice9 pointer at renderer_device_state+0x410; op 0x20e invokes vtable Clear +0xac | -| `0x46614` | `retained_gfx_manager` | `int` | embedded retained graphics manager passed by gfx opcode handlers; worker offsets are relative to this base | -| `0x46a1c` | `gfx_obj_registry` | `int` | retained_gfx_manager+0x408 std::map handle->object; 0x1f6 clears, geometry/draw get-or-create, 0x215 queries, 0x1f7 erases | -| `0x46d14` | `query_table_46d14` | `void*` | stride-0x14 table read by op 0x216 | -| `0x50ba4` | `gfx_render_target_table` | `void*` | retained_gfx_manager+0xa590 array of per-slot D3D texture wrappers selected by op 0x20d | -| `0x51b44` | `gfx_current_render_target` | `int` | retained_gfx_manager+0xb530 selected surface slot; -1 denotes device backbuffer | -| `0x51b64` | `frame_timer_current` | `int` | current shared millisecond presentation timestamp at retained_gfx_manager+0xb550; active outer-engine ticks and op 0x23c sample timeGetTime, and every retained animation channel samples it | -| `0x51b68` | `frame_timer_previous` | `int` | previous shared presentation timestamp at retained_gfx_manager+0xb554; shifted from current before each new sample, and op 0x231 compares current/previous source cells to raise redraw dirty only at cell changes | -| `0x51b6c` | `gfx_dirty_a` | `int` | retained_gfx_manager+0xb558 redraw-dirty flag; retained mutations and continuous channels set it, while op 0x231 sets it only when the sampled source cell differs across the shared current/previous frame timestamps; op 0x1f6 clears it | -| `0x51b70` | `gfx_force_complete` | `int` | retained_gfx_manager+0xb55c requests forced completion of one-shot channels; op 0x1f6 clears it | -| `0x51b74` | `gfx_dirty_b` | `int` | retained_gfx_manager+0xb560 blocking-presentation dirty flag; active finite object channels set it unless obj+0x2d0 bit 0 detaches them | -| `0x51b78` | `anim_clock_start` | `int` | start timestamp for the separate finite-animation service window at retained_gfx_manager+0xb564; seeded from frame_timer_current by gfx_animation_service_poll, while op 0x238, op 0x243, and object reset 0x1f6 zero it | -| `0x51b7c` | `anim_clock_duration` | `int` | global anim clock duration at retained_gfx_manager+0xb568; op 0x238 sets and object reset 0x1f6 zeroes it | -| `0x51b80` | `gfx_animation_service_flags` | `uint` | retained_gfx_manager+0xb56c service flags; bit 1 suppresses op 0x243 force-complete/clock-reset request | -| `0x52bd4` | `surfaces` | `void*` | surface array base [~1000 slots]; create/set-texture (0x1f8/0x1f9) allocate | -| `0x53d14` | `cur_ctx_index` | `uint` | current script-context index (curCtx); indexes 0x78-byte coroutine/frame records | -| `0x53d24` | `save_load_stack_restore_active` | `int` | set while a deserialized numbered-save script stack is being reconstructed; op 0xae restores saved frame PCs/contexts and clears it at the terminal saved context | -| `0x53d28` | `frame_codebase` | `void*` | current frame codebase (PC = codebase + off*4) | -| `0x53d2c` | `frame_pc` | `int` | current frame PC column (op = *(0x53d2c + curCtx*0x78)) | -| `0x53d60` | `ctx_record_base` | `void*` | 0x78-byte context-record array base (coroutine/script contexts) | -| `0x53d64` | `frame_script_resource_id` | `uint` | raw packed SYS4/AAI resource id for this 0x78-byte script frame; persisted ReadTextDB script key | -| `0x53d88` | `frame_instruction_word_count` | `int` | current decoded instruction length in dwords for each 0x78-byte script frame; interpreter advances PC by this value * 4 | -| `0x54fe8` | `owner_window_handle` | `void*` | native owner HWND forwarded to host UI/message-box calls, including op 0x1b4 diagnostic presentation | -| `0x54ff0` | `initial_root_run` | `int` | initialized to 1 at AGE context construction; queried by op 0x130 and cleared by op 0x9 before root script id 0 is reloaded | -| `0x550fc` | `message_skip_display_enabled` | `int` | persistent all-message Skip state returned by op 0x19a for the ADV control-strip active overlay | -| `0x55100` | `adv_skip_service_enabled` | `int` | ADV presentation lifecycle gate: op 0x19b clears it while preserving the persistent Skip toggle; op 0x19c sets it before recomputing active message/read skip | -| `0x55104` | `auto_message_enabled` | `int` | ADV Auto mode flag; op 0x1b6 reads, op 0x1b7 writes, adv_input_service_poll consumes | -| `0x55110` | `text_history_recording_suppressed` | `uint` | high bit suppresses ADV retained-history index/text/metadata/voice recording; op 0x1bb writes 0x80000000 or zero, and HISTORY.BIN brackets itself with disable/enable | -| `0x5511c` | `system_menu_show_delay_ms` | `uint` | op 0x149 replaces the TIMER_SHOWMENU top-edge dwell threshold; reset defaults to 0 and SYSTEM4 sets 1000; op 0x148 reads it | -| `0x55120` | `anti_tamper_a` | `int` | anti-tamper checksum operand | -| `0x55124` | `anti_tamper_b` | `int` | anti-tamper checksum operand | -| `0x5512c` | `anti_tamper_fp` | `int` | anti-tamper (import fn ptr / result) | -| `0x55130` | `int_queue_slots` | `void*` | base of ten scene-context-owned integer FIFO pointers used by ops 0x132-0x134; their <=10 validation bug makes id 10 alias int_stack_slots[0] | -| `0x55158` | `int_stack_slots` | `void*` | base of ten scene-context-owned integer LIFO pointers used by ops 0x137-0x139; their <=10 validation bug makes id 10 alias numeric_glyph_styles[0] | -| `0x55180` | `numeric_glyph_styles` | `int` | base of ten 20-byte decimal-glyph atlas records used by ops 0x13a/0x23b; opcode validation also admits one out-of-range record | -| `0x55248` | `ret_stack_a` | `void*` | per-frame return stack (op 0x8f call pushes) | -| `0x552e8` | `ret_stack_b` | `void*` | per-frame return stack (companion) | -| `0x5f304` | `sleep_timer` | `int` | sleep timer object (op 0xc8; +8 active, +0x14 start-ms, +0x18 duration) | -| `0x5f3ac` | `timed_callback_timer` | `int` | elapsed timer object armed by op 0xd5 and sampled by the timed callback scheduler | -| `0x5f64c` | `adv_wait_indicator_timer` | `int` | elapsed timer started by op 0x1ce and ADV wait setup to select the animated input-wait indicator frame | -| `0x5f690` | `timed_callback_abort_pc` | `int` | optional local fallback PC supplied to op 0xd5; -1 disables abort redirection | -| `0x5f694` | `timed_callback_entries_vector` | `int` | MSVC vector object base for 16-byte schedule entries; begin/end/capacity pointers follow | -| `0x5f698` | `timed_callback_entries_begin` | `void*` | begin pointer for 16-byte entries {deadline_ms, field_100, primary_pc, catchup_pc} | -| `0x5f69c` | `timed_callback_entries_end` | `void*` | end pointer for the timed callback entry vector | -| `0x5f6a0` | `timed_callback_entries_capacity` | `void*` | capacity-end pointer for the timed callback entry vector | -| `0x5f6a4` | `timed_callback_last_index` | `int` | last appended schedule index; op 0xd3 resets to -1 and op 0xd4 increments per entry | -| `0x5f6a8` | `timed_callback_cursor` | `int` | next schedule entry consumed by timed_callback_sequence_tick; op 0xd3 resets to zero | -| `0x5f6b4` | `timed_callback_script_resource_id` | `uint` | active frame script resource retained by op 0xd5 for local callback dispatch safety | -| `0x5f6b8` | `timed_callback_script_resource_guard` | `uint` | companion current-script identity checked before redirecting to a scheduled callback | -| `0x5f6c0` | `value_switch_table` | `int` | temporary formatted-value branch table reset by 0xa1, populated by 0xa2, queried by 0xa3; distinct from shared_profile_int_table | -| `0x5f72c` | `adv_wait_indicator_frame` | `int` | current animated input-wait indicator frame, reset to zero when the service is armed | -| `0x5f730` | `adv_wait_indicator_terminal_frame` | `int` | terminal frame returned by the indicator layout during ADV wait setup | -| `0x5f734` | `adv_wait_indicator_enabled_value` | `int` | raw enable operand last written by op 0x1ce; nonzero arms the ADV wait-indicator service | -| `0x6da6c` | `input_callback_scan_index` | `int` | op 0xff resets this to zero; op 0x100 advances it while scanning set action bits below input_action_count | -| `0x6da70` | `input_action_count_snapshot` | `int` | op 0xff copies input_action_count here when beginning a callback poll/dispatch pass | -| `0x6da78` | `message_skip_activation_guard` | `int` | set when op 0x88 enables Skip; suppresses the enabling click from immediately becoming a hotspot activation | -| `0x6da80` | `message_skip_cancel_click_phase` | `int` | press/release phase used only when set:CancelMesSkipOnClick is nonzero | -| `0x6da84` | `adv_wait_indicator_layout_slot` | `int` | ADV text layout whose wait indicator is armed or erased by input-wait setup and op 0x1ce | -| `0x6da88` | `coroutine_yield_a` | `void*` | op 0x7b yield-state save (op1 -> +ctxidx*4) | -| `0x6db28` | `coroutine_yield_b` | `void*` | op 0x7b yield-state save (op2 -> +ctxidx*4) | -| `0x6dbc8` | `coroutine_runstate` | `int` | op 0x7c resume gate (run-state bit 0x2000000) | -| `0x6dbcc` | `coroutine_resume_off` | `int` | op 0x7c resume PC offset | -| `0x6dbd4` | `adv_read_skip_state` | `int` | current ADV read/click-skip service state; queried by op 0x1cc, maintained from ReadTextSkip + per-PC read history | -| `0x6dbe4` | `adv_auto_voice_pending` | `int` | set by play-voice ops when voice service exists; Auto waits for voice completion then arms AutoMessageTime0; op 0x1bc resets | -| `0x6dbe8` | `voice_bgm_duck_saved_volume` | `int` | BGM volume saved by the voice-start duck helper before applying MusicFadeOnVoicePlayingVol | -| `0x6dbf0` | `voice_bgm_duck_control_flags` | `uint` | transient mask replaced by op 0x1cf; bit 0 suppresses automatic voice-triggered BGM attenuation | -| `0x6dbf4` | `message_skip_queued_voice_id` | `int` | latest voice resource deferred by op 0xc4 while run_state_flags message-skip bit is active | -| `0x6dbf8` | `message_skip_queued_voice_arg` | `int` | second argument retained with message_skip_queued_voice_id; Himegari op 0xc4 stores zero | -| `0x6ddac` | `opcode_debug_metadata_table` | `void*` | base of 512 optional per-opcode debug-metadata pointers; Himegari's release image zero-initializes the table and has no writer, so diagnostic COMMAND names render as '-' | -| `0x6f798` | `script_source_line_table` | `void*` | base of 41 optional per-frame source-line-map pointers; Himegari's release image zero-initializes the table and has no writer, so diagnostic LINE values render as -1 | -| `0x6f880` | `diagnostic_text_buffer` | `int` | base of an embedded 28-byte MSVC string accumulator; op 0x1b2 appends formatted operand text, op 0x1b3 appends CRLF, and op 0x1b4 presents then clears it | -| `0x6f89c` | `script_launch_queue` | `int` | embedded integer FIFO used for engine-level auxiliary/root script launches; data pointer and queue indices follow | -| `0x6f8a0` | `script_launch_queue_data` | `void*` | dword storage for packed script ids or negative frame-resume ids | -| `0x6f8a4` | `script_launch_queue_read_cursor` | `int` | next queued launch consumed by script_launch_queue_dispatch_next | -| `0x6f8a8` | `script_launch_queue_write_cursor` | `int` | one-past-last queued launch; op 0x143 appends mounted selector record-zero ids here | -| `0x6f8ac` | `script_launch_queue_capacity` | `int` | allocated dword capacity; initialized to 0x100 | -| `0x6f8b0` | `script_launch_queue_growth` | `int` | capacity growth quantum; initialized to 0x100 | -| `0x6f8b4` | `script_launch_queue_high_water` | `int` | highest consumed cursor retained across FIFO compaction | -| `0x6f8b8` | `script_launch_dispatch_active` | `int` | suppresses immediate dispatch while op 0x143 batches mounted append record-zero ids and while a queued script is active | -| `0x9928c` | `save_frame_boundary_index` | `int` | highest script-frame index included by numbered-save layouts 2/3; -1 falls back to cur_ctx_index; op 0x1ad marks current frame and op 0x2 clears after unwinding below it | -| `0x99290` | `gfx_draw_mode` | `int` | loaded from set:DrawMode during runtime initialization; Himegari uses mode 1, selecting the cached GetGlyphOutline text path | -| `0x9b24c` | `dispatch_table` | `void*` | opcode->handler table base [0x400]; handler(op) = *(0x9b24c + op*4) | -| `0x9c658` | `sys4ini_count` | `int` | SYS4INI record count at embedded FileDB+0x40c | -| `0x9c65c` | `archive_name_table` | `void*` | archive-name table base at embedded FileDB+0x410; arc_id*0x100 indexes it | -| `0x9c660` | `sys4ini_records` | `void*` | SYS4INI 80-byte record base at embedded FileDB+0x414; record = base + id*0x50 | -| `0x9f274` | `mounted_aai_catalogs` | `void*` | base of 256-entry selector-keyed AAI catalog-pointer table inside the embedded FileDB; op 0x143 scans slots 1..255 from +0x9f278 | -| `0x9f278` | `mounted_aai_catalog_selector_1` | `void*` | selector-one cell and op 0x143 scan start; subsequent dwords are selector 2..255 | -| `0xa0b84` | `current_bgm_track_id` | `int` | direct-name BGM track id retained by the music facade; op 0xbf starts/replaces it, ops 0xc0/0xc3 get/set it, and numbered-save layouts restore it | -| `0xa0b8c` | `current_bgm_start_mode` | `int` | logical playback mode retained by the music facade and forwarded to its backend: zero stops at decoder EOF, nonzero rewinds; ordinary op 0xbf and forced op 0xb7 use one, forced op 0xb9 uses zero | -| `0xa0cc0` | `screen_w` | `int` | logical screen width; constructor/default registry uses 640, then the SYS4INI SCREENX setting overrides it (Himegari 800) | -| `0xa0cc4` | `screen_h` | `int` | logical screen height; constructor/default registry uses 480, then the SYS4INI SCREENY setting overrides it (Himegari 600) | -| `0xa0cc8` | `screen_bpp` | `int` | screen bpp (8) | -| `0xa0ce4` | `run_state_flags` | `uint` | interpreter run-state flags (bit1 sleeping; 0x8000000 skip/fast-forward) | -| `0xa0ce8` | `timed_callback_abort_signal` | `int` | scheduler-polled abort/input signal cleared when op 0xd5 starts; redirects to abort PC when configured | -| `0xa0d10` | `system_menu_actions_enabled` | `int` | op 0x142 replaces this AGERC/IAGEService reentrancy guard; scene reset defaults it to 1, while CONFIG brackets its scripted settings UI with 0 then 1 | +# EngineCtx field reference + +> Generated from `vm-map/engine-ctx.toml` by `tools/engine_ctx_build.py --build`. Do not edit. + +Struct `EngineCtx`, size `0xa1000`. Applied to the Ghidra `/v2` image (dispatch-handler `this` = `EngineCtx *`). + +| offset | name | type | note | +|---|---|---|---| +| `0x4` | `host_ui_interface` | `void*` | host-facing UI interface used by the ctx+4 virtual-dispatch thunks; default slot +4 logs and presents AGE message boxes | +| `0x814` | `input_action_count` | `int` | logical action count (0..31); op 0xfe sets it, op 0x100 scans actions below it and uses callback slot count itself when the polled mask is empty | +| `0x898` | `joystick_physical_button_count` | `int` | WinMM JOYCAPS physical button count returned by op 0x106 | +| `0x89c` | `joystick_button_map` | `int` | base of 32-entry logical button-slot to physical joystick-button table; op 0x107 writes it, slot N emits action N+4 | +| `0x135c` | `mouse_button_action_map` | `int` | base of physical mouse-button to logical button-slot table; op 0x10b writes it and polling adds 4 to obtain the action index | +| `0x13dc` | `message_skip_enabled` | `int` | persistent all-message Skip flag; op 0x88 writes it and adv_interpreter_tick injects input bit 0x40 while nonzero | +| `0x1428` | `keyboard_vk_action_map` | `int` | base of 256-entry Win32 virtual-key to logical action table consumed by keyboard polling | +| `0x1828` | `dik_to_vk_table` | `int` | base of 256-entry DirectInput DIK scan-code to Win32 virtual-key translation used by op 0x10c | +| `0x1c34` | `mouse_wheel_delta` | `int` | signed WM_MOUSEWHEEL delta accumulated by age_main_window_proc; op 0x10d returns and clears it | +| `0x4d7c` | `shared_profile_state` | `void*` | embedded shared SAVE.DAT state object; owns profile integer/settings tables and container timing metadata | +| `0x5190` | `shared_profile_int_table` | `int` | open-addressing 12-byte string-key to 32-bit value table; op 0x1a2 stores, 0x1a3 loads, shared SAVE.DAT serializes it | +| `0x144e0` | `sfx_channel_resource_ids` | `int` | base of ten packed resource ids retained by the sound-effect facade; op 0xb4 loads a channel, op 0xb6 clears it, and numbered-save layouts restore then reopen every positive id | +| `0x14d54` | `adv_text_layout_ptr_table` | `void*` | text_manager at ctx+0x14940 plus layout pointer table +0x414; ops 0x212/0x213 configure each layout's wait-indicator handle and retained glyph-object range at layout+0x64/+0x68/+0x6c | +| `0x14e08` | `gfx_default_object_slot` | `int` | op 0x80 selected slot; op 0x1d9 substitutes it when its explicit object-slot operand is zero | +| `0x14e0c` | `text_primary_font_height` | `int` | primary LOGFONTA.lfHeight at text-manager+0x4cc; stored as a negative pixel height and updated by op 0x75 | +| `0x14e10` | `text_primary_font_width` | `int` | primary LOGFONTA.lfWidth at text-manager+0x4d0; op 0x75 stores negative half the requested font size | +| `0x14e1c` | `text_primary_font_weight` | `int` | primary LOGFONTA.lfWeight at text-manager+0x4dc; op 0x2bd writes 700 for enabled or zero for disabled | +| `0x14e84` | `text_antialias_enabled` | `int` | text-manager+0x544; message:UseAntiFont selects GGO_GRAY4_BITMAP when nonzero and GGO_BITMAP when zero | +| `0x14e88` | `text_antialias_version` | `int` | text-manager+0x548 loaded from set:AntiFontVersion; Himegari SYS4INI supplies version 3 | +| `0x14e8c` | `text_primary_color_bgr` | `uint` | text-manager+0x54c internal GDI BGR/COLORREF primary glyph color; op 0x76 converts script RGB into it | +| `0x14e90` | `text_effect_color_bgr` | `uint` | text-manager+0x550 internal GDI BGR/COLORREF effect glyph color; op 0x77 converts script RGB into it | +| `0x14e98` | `text_render_mode` | `int` | text-manager+0x558; op 0x78 selects primary-only, displaced shadow, reduced-coverage repeat, or sampled ellipse outline | +| `0x14ea0` | `text_line_spacing` | `int` | extra pixel leading between text lines; defaults to 6, op 0x8b writes it | +| `0x14ea4` | `text_effect_offset_x` | `int` | text-manager+0x564; op 0x1a4 horizontal displacement for mode 1 or ellipse radius for mode 3 | +| `0x14ea8` | `text_effect_offset_y` | `int` | text-manager+0x568; op 0x1a4 vertical displacement for mode 1 or ellipse radius for mode 3 | +| `0x14f45` | `script_frame_index` | `int` | call-script frame index (0x1e-dword frames) | +| `0x46188` | `renderer_device_state` | `int` | embedded D3D9 device/render state; op 0x20e passes this base to the target/depth clear worker | +| `0x46598` | `d3d9_device` | `void*` | IDirect3DDevice9 pointer at renderer_device_state+0x410; op 0x20e invokes vtable Clear +0xac | +| `0x46614` | `retained_gfx_manager` | `int` | embedded retained graphics manager passed by gfx opcode handlers; worker offsets are relative to this base | +| `0x46a1c` | `gfx_obj_registry` | `int` | retained_gfx_manager+0x408 std::map handle->object; 0x1f6 clears, geometry/draw get-or-create, 0x215 queries, 0x1f7 erases | +| `0x46d14` | `query_table_46d14` | `void*` | stride-0x14 table read by op 0x216 | +| `0x50ba4` | `gfx_render_target_table` | `void*` | retained_gfx_manager+0xa590 array of per-slot D3D texture wrappers selected by op 0x20d | +| `0x51b44` | `gfx_current_render_target` | `int` | retained_gfx_manager+0xb530 selected surface slot; -1 denotes device backbuffer | +| `0x51b64` | `frame_timer_current` | `int` | current shared millisecond presentation timestamp at retained_gfx_manager+0xb550; active outer-engine ticks and op 0x23c sample timeGetTime, and every retained animation channel samples it | +| `0x51b68` | `frame_timer_previous` | `int` | previous shared presentation timestamp at retained_gfx_manager+0xb554; shifted from current before each new sample, and op 0x231 compares current/previous source cells to raise redraw dirty only at cell changes | +| `0x51b6c` | `gfx_dirty_a` | `int` | retained_gfx_manager+0xb558 redraw-dirty flag; retained mutations and continuous channels set it, while op 0x231 sets it only when the sampled source cell differs across the shared current/previous frame timestamps; op 0x1f6 clears it | +| `0x51b70` | `gfx_force_complete` | `int` | retained_gfx_manager+0xb55c requests forced completion of one-shot channels; op 0x1f6 clears it | +| `0x51b74` | `gfx_dirty_b` | `int` | retained_gfx_manager+0xb560 blocking-presentation dirty flag; active finite object channels set it unless obj+0x2d0 bit 0 detaches them | +| `0x51b78` | `anim_clock_start` | `int` | start timestamp for the separate finite-animation service window at retained_gfx_manager+0xb564; seeded from frame_timer_current by gfx_animation_service_poll, while op 0x238, op 0x243, and object reset 0x1f6 zero it | +| `0x51b7c` | `anim_clock_duration` | `int` | global anim clock duration at retained_gfx_manager+0xb568; op 0x238 sets and object reset 0x1f6 zeroes it | +| `0x51b80` | `gfx_animation_service_flags` | `uint` | retained_gfx_manager+0xb56c service flags; bit 1 suppresses op 0x243 force-complete/clock-reset request | +| `0x52bd4` | `surfaces` | `void*` | surface array base [~1000 slots]; create/set-texture (0x1f8/0x1f9) allocate | +| `0x53d14` | `cur_ctx_index` | `uint` | current script-context index (curCtx); indexes 0x78-byte coroutine/frame records | +| `0x53d24` | `save_load_stack_restore_active` | `int` | set while a deserialized numbered-save script stack is being reconstructed; op 0xae restores saved frame PCs/contexts and clears it at the terminal saved context | +| `0x53d28` | `frame_codebase` | `void*` | current frame codebase (PC = codebase + off*4) | +| `0x53d2c` | `frame_pc` | `int` | current frame PC column (op = *(0x53d2c + curCtx*0x78)) | +| `0x53d60` | `ctx_record_base` | `void*` | 0x78-byte context-record array base (coroutine/script contexts) | +| `0x53d64` | `frame_script_resource_id` | `uint` | raw packed SYS4/AAI resource id for this 0x78-byte script frame; persisted ReadTextDB script key | +| `0x53d88` | `frame_instruction_word_count` | `int` | current decoded instruction length in dwords for each 0x78-byte script frame; interpreter advances PC by this value * 4 | +| `0x54fe8` | `owner_window_handle` | `void*` | native owner HWND forwarded to host UI/message-box calls, including op 0x1b4 diagnostic presentation | +| `0x54ff0` | `initial_root_run` | `int` | initialized to 1 at AGE context construction; queried by op 0x130 and cleared by op 0x9 before root script id 0 is reloaded | +| `0x550fc` | `message_skip_display_enabled` | `int` | persistent all-message Skip state returned by op 0x19a for the ADV control-strip active overlay | +| `0x55100` | `adv_skip_service_enabled` | `int` | ADV presentation lifecycle gate: op 0x19b clears it while preserving the persistent Skip toggle; op 0x19c sets it before recomputing active message/read skip | +| `0x55104` | `auto_message_enabled` | `int` | ADV Auto mode flag; op 0x1b6 reads, op 0x1b7 writes, adv_input_service_poll consumes | +| `0x55110` | `text_history_recording_suppressed` | `uint` | high bit suppresses ADV retained-history index/text/metadata/voice recording; op 0x1bb writes 0x80000000 or zero, and HISTORY.BIN brackets itself with disable/enable | +| `0x5511c` | `system_menu_show_delay_ms` | `uint` | op 0x149 replaces the TIMER_SHOWMENU top-edge dwell threshold; reset defaults to 0 and SYSTEM4 sets 1000; op 0x148 reads it | +| `0x55120` | `anti_tamper_a` | `int` | anti-tamper checksum operand | +| `0x55124` | `anti_tamper_b` | `int` | anti-tamper checksum operand | +| `0x5512c` | `anti_tamper_fp` | `int` | anti-tamper (import fn ptr / result) | +| `0x55130` | `int_queue_slots` | `void*` | base of ten scene-context-owned integer FIFO pointers used by ops 0x132-0x134; their <=10 validation bug makes id 10 alias int_stack_slots[0] | +| `0x55158` | `int_stack_slots` | `void*` | base of ten scene-context-owned integer LIFO pointers used by ops 0x137-0x139; their <=10 validation bug makes id 10 alias numeric_glyph_styles[0] | +| `0x55180` | `numeric_glyph_styles` | `int` | base of ten 20-byte decimal-glyph atlas records used by ops 0x13a/0x23b; opcode validation also admits one out-of-range record | +| `0x55248` | `ret_stack_a` | `void*` | per-frame return stack (op 0x8f call pushes) | +| `0x552e8` | `ret_stack_b` | `void*` | per-frame return stack (companion) | +| `0x5f304` | `sleep_timer` | `int` | sleep timer object (op 0xc8; +8 active, +0x14 start-ms, +0x18 duration) | +| `0x5f3ac` | `timed_callback_timer` | `int` | elapsed timer object armed by op 0xd5 and sampled by the timed callback scheduler | +| `0x5f64c` | `adv_wait_indicator_timer` | `int` | elapsed timer started by op 0x1ce and ADV wait setup to select the animated input-wait indicator frame | +| `0x5f690` | `timed_callback_abort_pc` | `int` | optional local fallback PC supplied to op 0xd5; -1 disables abort redirection | +| `0x5f694` | `timed_callback_entries_vector` | `int` | MSVC vector object base for 16-byte schedule entries; begin/end/capacity pointers follow | +| `0x5f698` | `timed_callback_entries_begin` | `void*` | begin pointer for 16-byte entries {deadline_ms, field_100, primary_pc, catchup_pc} | +| `0x5f69c` | `timed_callback_entries_end` | `void*` | end pointer for the timed callback entry vector | +| `0x5f6a0` | `timed_callback_entries_capacity` | `void*` | capacity-end pointer for the timed callback entry vector | +| `0x5f6a4` | `timed_callback_last_index` | `int` | last appended schedule index; op 0xd3 resets to -1 and op 0xd4 increments per entry | +| `0x5f6a8` | `timed_callback_cursor` | `int` | next schedule entry consumed by timed_callback_sequence_tick; op 0xd3 resets to zero | +| `0x5f6b4` | `timed_callback_script_resource_id` | `uint` | active frame script resource retained by op 0xd5 for local callback dispatch safety | +| `0x5f6b8` | `timed_callback_script_resource_guard` | `uint` | companion current-script identity checked before redirecting to a scheduled callback | +| `0x5f6c0` | `value_switch_table` | `int` | temporary formatted-value branch table reset by 0xa1, populated by 0xa2, queried by 0xa3; distinct from shared_profile_int_table | +| `0x5f72c` | `adv_wait_indicator_frame` | `int` | current animated input-wait indicator frame, reset to zero when the service is armed | +| `0x5f730` | `adv_wait_indicator_terminal_frame` | `int` | terminal frame returned by the indicator layout during ADV wait setup | +| `0x5f734` | `adv_wait_indicator_enabled_value` | `int` | raw enable operand last written by op 0x1ce; nonzero arms the ADV wait-indicator service | +| `0x6da6c` | `input_callback_scan_index` | `int` | op 0xff resets this to zero; op 0x100 advances it while scanning set action bits below input_action_count | +| `0x6da70` | `input_action_count_snapshot` | `int` | op 0xff copies input_action_count here when beginning a callback poll/dispatch pass | +| `0x6da78` | `message_skip_activation_guard` | `int` | set when op 0x88 enables Skip; suppresses the enabling click from immediately becoming a hotspot activation | +| `0x6da80` | `message_skip_cancel_click_phase` | `int` | press/release phase used only when set:CancelMesSkipOnClick is nonzero | +| `0x6da84` | `adv_wait_indicator_layout_slot` | `int` | ADV text layout whose wait indicator is armed or erased by input-wait setup and op 0x1ce | +| `0x6da88` | `coroutine_yield_a` | `void*` | op 0x7b yield-state save (op1 -> +ctxidx*4) | +| `0x6db28` | `coroutine_yield_b` | `void*` | op 0x7b yield-state save (op2 -> +ctxidx*4) | +| `0x6dbc8` | `coroutine_runstate` | `int` | op 0x7c resume gate (run-state bit 0x2000000) | +| `0x6dbcc` | `coroutine_resume_off` | `int` | op 0x7c resume PC offset | +| `0x6dbd4` | `adv_read_skip_state` | `int` | current ADV read/click-skip service state; queried by op 0x1cc, maintained from ReadTextSkip + per-PC read history | +| `0x6dbe4` | `adv_auto_voice_pending` | `int` | set by play-voice ops when voice service exists; Auto waits for voice completion then arms AutoMessageTime0; op 0x1bc resets | +| `0x6dbe8` | `voice_bgm_duck_saved_volume` | `int` | BGM volume saved by the voice-start duck helper before applying MusicFadeOnVoicePlayingVol | +| `0x6dbf0` | `voice_bgm_duck_control_flags` | `uint` | transient mask replaced by op 0x1cf; bit 0 suppresses automatic voice-triggered BGM attenuation | +| `0x6dbf4` | `message_skip_queued_voice_id` | `int` | latest voice resource deferred by op 0xc4 while run_state_flags message-skip bit is active | +| `0x6dbf8` | `message_skip_queued_voice_arg` | `int` | second argument retained with message_skip_queued_voice_id; Himegari op 0xc4 stores zero | +| `0x6ddac` | `opcode_debug_metadata_table` | `void*` | base of 512 optional per-opcode debug-metadata pointers; Himegari's release image zero-initializes the table and has no writer, so diagnostic COMMAND names render as '-' | +| `0x6f798` | `script_source_line_table` | `void*` | base of 41 optional per-frame source-line-map pointers; Himegari's release image zero-initializes the table and has no writer, so diagnostic LINE values render as -1 | +| `0x6f880` | `diagnostic_text_buffer` | `int` | base of an embedded 28-byte MSVC string accumulator; op 0x1b2 appends formatted operand text, op 0x1b3 appends CRLF, and op 0x1b4 presents then clears it | +| `0x6f89c` | `script_launch_queue` | `int` | embedded integer FIFO used for engine-level auxiliary/root script launches; data pointer and queue indices follow | +| `0x6f8a0` | `script_launch_queue_data` | `void*` | dword storage for packed script ids or negative frame-resume ids | +| `0x6f8a4` | `script_launch_queue_read_cursor` | `int` | next queued launch consumed by script_launch_queue_dispatch_next | +| `0x6f8a8` | `script_launch_queue_write_cursor` | `int` | one-past-last queued launch; op 0x143 appends mounted selector record-zero ids here | +| `0x6f8ac` | `script_launch_queue_capacity` | `int` | allocated dword capacity; initialized to 0x100 | +| `0x6f8b0` | `script_launch_queue_growth` | `int` | capacity growth quantum; initialized to 0x100 | +| `0x6f8b4` | `script_launch_queue_high_water` | `int` | highest consumed cursor retained across FIFO compaction | +| `0x6f8b8` | `script_launch_dispatch_active` | `int` | suppresses immediate dispatch while op 0x143 batches mounted append record-zero ids and while a queued script is active | +| `0x9928c` | `save_frame_boundary_index` | `int` | highest script-frame index included by numbered-save layouts 2/3; -1 falls back to cur_ctx_index; op 0x1ad marks current frame and op 0x2 clears after unwinding below it | +| `0x99290` | `gfx_draw_mode` | `int` | loaded from set:DrawMode during runtime initialization; Himegari uses mode 1, selecting the cached GetGlyphOutline text path | +| `0x9b24c` | `dispatch_table` | `void*` | opcode->handler table base [0x400]; handler(op) = *(0x9b24c + op*4) | +| `0x9c658` | `sys4ini_count` | `int` | SYS4INI record count at embedded FileDB+0x40c | +| `0x9c65c` | `archive_name_table` | `void*` | archive-name table base at embedded FileDB+0x410; arc_id*0x100 indexes it | +| `0x9c660` | `sys4ini_records` | `void*` | SYS4INI 80-byte record base at embedded FileDB+0x414; record = base + id*0x50 | +| `0x9f274` | `mounted_aai_catalogs` | `void*` | base of 256-entry selector-keyed AAI catalog-pointer table inside the embedded FileDB; op 0x143 scans slots 1..255 from +0x9f278 | +| `0x9f278` | `mounted_aai_catalog_selector_1` | `void*` | selector-one cell and op 0x143 scan start; subsequent dwords are selector 2..255 | +| `0xa0b84` | `current_bgm_track_id` | `int` | direct-name BGM track id retained by the music facade; op 0xbf starts/replaces it, ops 0xc0/0xc3 get/set it, and numbered-save layouts restore it | +| `0xa0b8c` | `current_bgm_start_mode` | `int` | logical playback mode retained by the music facade and forwarded to its backend: zero stops at decoder EOF, nonzero rewinds; ordinary op 0xbf and forced op 0xb7 use one, forced op 0xb9 uses zero | +| `0xa0cc0` | `screen_w` | `int` | logical screen width; constructor/default registry uses 640, then the SYS4INI SCREENX setting overrides it (Himegari 800) | +| `0xa0cc4` | `screen_h` | `int` | logical screen height; constructor/default registry uses 480, then the SYS4INI SCREENY setting overrides it (Himegari 600) | +| `0xa0cc8` | `screen_bpp` | `int` | screen bpp (8) | +| `0xa0ce4` | `run_state_flags` | `uint` | interpreter run-state flags (bit1 sleeping; 0x8000000 skip/fast-forward) | +| `0xa0ce8` | `timed_callback_abort_signal` | `int` | scheduler-polled abort/input signal cleared when op 0xd5 starts; redirects to abort PC when configured | +| `0xa0d10` | `system_menu_actions_enabled` | `int` | op 0x142 replaces this AGERC/IAGEService reentrancy guard; scene reset defaults it to 1, while CONFIG brackets its scripted settings UI with 0 then 1 | diff --git a/docs/global-reference.md b/docs/global-reference.md index b22cd0f..eea3075 100644 --- a/docs/global-reference.md +++ b/docs/global-reference.md @@ -1,4323 +1,4323 @@ - -# Global Variable Reference (generated) - -4278 globals (447 curated, 3831 auto shape-inferred). Source of truth: `vm-map/globals.toml`. - -## choice-output - -| address | name | conf | source | usage | -|---|---|---|---|---| -| `0x0` | system_flow_request | high | investigation | Return-mode request shared by TITLE/GAMESTART and SYSTEM4. The natural New Game path writes 1 immediately after GAMESTART's TUNE call; TITLE returns and SYSTEM4 routes value 1 into its ADV scene loop. Values 2/3/5 route to FORT/FIELD/CAMP; other writers use the same system-level request channel. | -| `0x699` | next_script_resource_id | high | investigation | SYSTEM4's computed child-script resource id. On the normal ADV path SYSTEM4 copies G[0x87a57][scjump_decision_out] here, substitutes raw id 0x22 (SC0000.BIN) when zero, executes call-script through this cell at offset 0x477, then clears it after the child returns. | -| `0xa68` | — | med | auto-shape | TODO: confirm. Branch-read in 11 scenes / 12 scripts; compared against [0, 1]; writers=['SC0740.BIN', 'SC1580.BIN', 'SC1590.BIN']. | -| `0x62ccc` | scjump_decision_out2 | low | inference | Adjacent to scjump_decision_out (0x62ccf) in the 0x62ccc-0x62ccf progression decision-output cluster; same 136-scene reach, written by CAMP/CLOSE/DEBUGADV. INFERENCE from adjacency — confirm meaning before relying on it. | -| `0x62ccf` | scjump_decision_out | high | investigation | SCJUMP's selected progression decision id. Its chapter/flag decision tree writes one of 847 distinct values across 1,755 sites; SYSTEM4, FIELD, SALLY, and TRAIN use it to index scjump_scene_script_resource_ids and dispatch the corresponding SCxxxx scene script. | -| `0xcc9f1` | movement_search_mode | high | investigation | Transient MVSEEK mode. Zero replaces the caller-supplied origin with the current entity tile and uses movement+1 as the search allowance; nonzero modes retain the caller coordinate and use a broad allowance of 9999. Mode 2 additionally masks the doubled-coordinate terrain cells occupied by active entities of another faction before the flood fill. MVSEEK resets the mode to zero on exit. | -| `0xeff77` | routine_execution_state | high | investigation | Shared movement/battle routine result state. MVRTN and BTRTN clear it before scanning steps; a nonzero provider result stops the scan. Movement providers use state 1 for ordinary field movement/progress, state 2 for an immediate offensive battle action, and state 3 for an immediate healing/support action; MVRTN supplies state 1 when no provider produced another result. | - -## counter - -| address | name | conf | source | usage | -|---|---|---|---|---| -| `0x671b` | shared_spendable_points | high | investigation | Shared spendable point balance used by the alchemy, study, evolution, and summoning systems. ALCHEMY requires and deducts each recipe's alchemy_recipe_point_costs value; STAGECLEAR awards points to this balance and caps it at 999. The exact player-facing Japanese resource label remains unresolved. | -| `0x671c` | item_tuning_facility_level | high | investigation | Current equipment-tuning facility level. IMPROVE indexes facility_level_progress_thresholds row 0 with this value and raises it, up to 6, as item_tuning_facility_progress accumulates. | -| `0x671d` | alchemy_level | high | investigation | Current alchemy level. ALCHEMY hides recipes whose alchemy_recipe_minimum_levels value exceeds this level and raises it, up to 6, when alchemy_level_progress reaches the current threshold. | -| `0x671e` | magic_facility_level | high | investigation | Current magic/research facility level. MAGIC and USEMAGIC index facility_level_progress_thresholds row 2 with this level; USEMAGIC raises it up to 6 when magic_facility_progress reaches the current threshold. | -| `0x671f` | item_tuning_facility_progress | high | investigation | Progress toward the next equipment-tuning facility level. IMPROVE adds the selected item's tuning-level increases, applies row 0 of facility_level_progress_thresholds, and carries or clamps progress when the level rises. | -| `0x6720` | alchemy_level_progress | high | investigation | Progress toward the next alchemy level. Each successful ALCHEMY synthesis increments it; reaching the current threshold raises alchemy_level and resets this counter. | -| `0x6721` | magic_facility_progress | high | investigation | Progress toward the next magic/research facility level. USEMAGIC adds the selected action's progress award and applies row 2 of facility_level_progress_thresholds; MAGIC renders the same current/threshold pair. | -| `0x6722` | familiar_alignment | high | investigation | The familiar's alignment/personality axis. TRAIN decodes TRINIT minimum and maximum gates by subtracting 100 from the stored threshold, matching the locked hints' kind-versus-evil wording, and applies training_action_alignment_delta_hundredths through the paired fractional accumulator. DRAWCHP renders the signed value and EVOLVE/scene scripts use the same axis. | -| `0x6723` | familiar_alignment_fraction | high | investigation | Fractional accumulator paired with familiar_alignment. TRAIN adds the selected action's hundredths delta, applies the integral quotient and probabilistic remainder, and preserves the remaining fraction. | -| `0x6724` | familiar_training_progress | high | investigation | Cumulative familiar training/sexual-magic progress. TRAIN tests it against TRINIT's minimum/maximum progress gates, then applies training_action_training_progress_delta_hundredths through the paired fractional accumulator and clamps the result to 99. DRAWCHP and EVOLVE display or compare the same value. | -| `0x6725` | familiar_training_progress_fraction | high | investigation | Fractional accumulator paired with familiar_training_progress. TRAIN adds the action's hundredths delta, advances the integer value by the quotient and probabilistic remainder, and preserves the remaining fraction. | -| `0x6726` | training_action_total_execution_count | high | investigation | TRAIN increments this once after every successful action, independently of the selected action's own execution count. DRAWCHP displays it with the familiar's other training statistics and SAVE persists it. | -| `0x6727` | training_action_execution_counts | high | investigation | Per-action completed execution counts. TRAIN uses the prior count as the column in training_action_event_story_flag_ids, increments the selected cell, and treats a zero next event as the cap; GAMESTART restores each count and replays its completed event flags. | -| `0x204f4` | current_stage_turn | high | investigation | FIELD initializes this to 1, increments it after end-of-turn processing, compares it with STINIT's stage turn limit and timed object schedules, and displays it through DRAWCHP. Card generation divides it by each CDINIT growth interval to increase that card's weighted-selection share. | -| `0x204f8` | party_reference_level | high | investigation | FIELD's enemy auto-level reference. It averages all eligible party units when at most five exist, otherwise the five highest-level units. SETEN raises scalable enemies above unit_starting_level by the positive gap divided by the selected auto-level divisor before applying stage level clamps. Difficulty separately adds -5/0/+5 stat-growth iterations and does not change this stored runtime level. | -| `0x20530` | current_spirit | high | investigation | Current 精気 (spirit/essence) resource. TRAIN rejects a selected action when adding its negative TRINIT spirit delta would fall below zero, deducts the cost on execution, and passes the updated value to DRAWCHP. Field and scene reward paths update the same resource and clamp it to maximum_spirit. | -| `0x20534` | maximum_spirit | high | investigation | Maximum 精気 capacity paired with current_spirit. TRAIN clamps the post-cost current value against it, DRAWCHP renders the current/maximum gauge, and field/scene reward paths raise or restore the same capacity. | -| `0x4dfbb` | stage_card_spendable_point_bonus | high | investigation | FIELD clears this on stage entry and adds CDINIT2 type-3 card bonuses. STAGECLEAR adds the accumulated amount to its computed stage award before increasing shared_spendable_points. | -| `0x4dfbc` | scjump_progress_a | med | inference | Dominant SCJUMP switch input (1609 comparison reads) — a per-chapter story-progress counter/position the progression machine branches on. INFERENCE from SCJUMP usage; confirm exact meaning via a listing/playthrough. | -| `0x665d6` | modal_message_line_count | high | investigation | Number of populated strings in modal_message_lines. Dozens of menu/gameplay producers append at lines[count] and increment this value; MES renders the resulting non-selecting modal and clears the count, while SBUNKI consumes the same buffer as selectable options. | -| `0x665e2` | modal_annotation_count | high | investigation | Number of populated modal_annotation_texts entries. MES and SBUNKI iterate this many annotations and clear it on dismissal; no direct shipped producer was found. | -| `0xaac77` | current_condition_delta_levels | high | investigation | Shared signed level delta passed to ADDILL/ADDILLSUB for current_condition_id. Positive values apply or strengthen a condition; negative values weaken/remove it subject to the equipment/passive baseline floor. | -| `0xcc9f2` | usable_action_min_range | high | investigation | CALCSCOPE initializes this from the equipped/default attack's minimum range and widens it for usable offensive and healing skills. It is the lower bound shared by the offensive and healing action-scope tables. | -| `0xcc9f3` | usable_action_max_range | high | investigation | CALCSCOPE initializes this from the equipped/default attack's maximum range and widens it for usable offensive and healing skills. ATSEEK bounds its action-range flood fill with this value; RTN_M051/052 and RTN_M061 use it as their upper scan bound. | -| `0xe6c5d` | scjump_progress_d | med | inference | SCJUMP switch input (168 comparison reads) — progression counter/position. INFERENCE from SCJUMP usage. | -| `0x152619` | battle_exchange_step | high | investigation | BTL's six-step alternating exchange counter. Dividing it by two selects the first, second, or third ordinary-attack/skill voice variant and related animation slots. | - -## data-table - -| address | name | conf | source | usage | -|---|---|---|---|---| -| `0x5` | save_slot_portrait_entity_indices | high | investigation | SAVE and SELSTAGE snapshot current_entity_index through op 0x1a2. SAVE.BIN restores the slot cell with op 0x1a3 and uses its form range when choosing the portrait atlas region. | -| `0xd7` | save_slot_protagonist_levels | high | investigation | SAVE and SELSTAGE copy unit_current_levels[current_entity_index] into this shared SAVE.DAT-selected bank. SAVE.BIN restores and renders it as the row's LV value. | -| `0x1a9` | save_slot_training_action_counts | high | investigation | SAVE and SELSTAGE snapshot training_action_total_execution_count into this shared SAVE.DAT-selected per-slot bank; copy/move/delete operations keep it aligned with the rest of the preview record. | -| `0x27b` | save_slot_growth_values | high | investigation | SAVE and SELSTAGE snapshot familiar_training_progress through op 0x1a2. SAVE.BIN restores and renders it as the row's growth value. | -| `0x34d` | save_slot_personality_values | high | investigation | SAVE and SELSTAGE snapshot familiar_alignment through op 0x1a2. SAVE.BIN restores and renders the signed value in the row's personality field. | -| `0x41f` | save_slot_difficulty_indices | high | investigation | SAVE snapshots difficulty_index through op 0x1a2. SAVE.BIN restores the per-slot value and selects the corresponding 34x17 row badge from SO010. | -| `0x4f1` | save_slot_cleared_ending_masks | high | investigation | SAVE snapshots the current cleared-ending inheritance mask through op 0x1a2. SAVE.BIN restores it from shared SAVE.DAT, scans bits 0..14, and draws one 17x17 badge for every achieved ending on that slot and subsequent inherited-loop saves. | -| `0x5c3` | save_slot_append_install_masks | high | investigation | SAVE snapshots the current installed-append mask through op 0x1a2. SAVE.BIN compares each saved bit against the current mask and marks previews whose required append data is missing. | -| `0x6d3` | story_event_flags | high | investigation | Shared one-based story/event flag bank. Progression, recruitment, item, and stage logic read or write individual cells; STINIT object prerequisite ids are decremented by one before SETOBJ tests this array. | -| `0x2e49` | character_voice_suppressed | high | investigation | Base of the per-character voice enable/suppress settings. INITCONFIG zero-fills all 13 cells and registers each with the shared profile service; LOADCONFIG restores them. CONFIG indexes the table to preview a character voice and write 0/1. ROOM reads cell 0 before assigning its selected greeter's greeting/farewell voice ids, so the port's former scalar interpretation of zero-int-range (writing 13 into the base cell) suppressed those voices on every natural boot. This names the script-visible setting array without choosing a persistence backend for op 0x1a2/0x1a3. | -| `0x3239` | adv_layer_surface_slots | high | investigation | Shared ADV graphics-layer surface-slot registry. Scene setup initializes the three banks. The CG loader uses the primary slot for a fresh retained object, alternates between columns zero and one when replacing an already-bound layer, and uses column two for the transition/crossfade surface and cleanup. The corpus has 2,657 table-base accesses across 309 scripts. Columns: 0=primary_surface_slot, 1=alternate_surface_slot, 2=transition_surface_slot. | -| `0x329e` | adv_layer_movie_stop_time_ms | high | investigation | Per-ADV-layer movie stop positions. The common movie-layer loader writes opcode 0x23f's stop time immediately after opcode 0x236 opens the graph. CALLBACK_LOAD passes stop_time_ms-1 to opcode 0x241 so a numbered load reconstructs the movie layer at its terminal frame; this is not a separately sampled live playback cursor. | -| `0x453b` | training_action_text | high | investigation | TRINIT's six-string row for each of 21 training/sexual-magic actions. TRAIN renders columns 0..2 for the action description and cost/reward summary, or columns 3..5 for the unmet-condition hint. Columns: 0=description_line_1, 1=description_line_2, 2=description_line_3, 3=locked_hint_line_1, 4=locked_hint_line_2, 5=locked_hint_line_3. | -| `0x65ce` | skill_acquired_flags | high | investigation | Persistent acquired-skill flags. ADDSKILL sets the selected skill after resolving the unit's equipped-skill slots; FORT checks the flag before granting a skill; CHMENU combines it with skill_change_catalog_eligible to build the available skill-change catalog. | -| `0x673c` | party_slot_flags | high | investigation | Per-party-slot state flags for slots 0..99. UNITECH creates the initial unit by setting slot 2 to 0x13; CALCARR counts slots whose flags intersect 0x6, and CHMENU includes slots with bit 1 set. Exact meanings of the remaining bits are not yet classified. | -| `0x67a0` | party_slot_character_id | high | investigation | Character/unit definition id stored for each party slot. UNITECH writes character id 2 into initial slot 2 on a natural New Game; CHMENU reads this table for every active party_slot_flags entry when constructing its roster. | -| `0x6930` | unit_current_levels | high | investigation | Persistent current level by playable-unit id. CCINIT compares current_unit_id's row with each promotion threshold; ADDEXP increments and reports the same value. | -| `0x6994` | unit_experience_progress | high | investigation | Persistent experience progress by playable-unit id. ADDEXP adds the current award, animates the increase to 100, raises unit_current_levels, resets this cell to zero, and repeats while award remains and the unit is below unit_level_cap. | -| `0x69f8` | unit_current_stats | high | investigation | Persistent fourteen-stat row for each playable unit, using the same column order as unit_base_stats. CALCCC adds class_change_stat_bonuses to the current unit's row and clamps each result to the shared stat caps. Columns: 0=accuracy, 1=evasion, 2=physical_attack, 3=physical_defense, 4=magic_attack, 5=magic_defense, 6=speed, 7=luck, 8=critical_chance, 9=capture_power, 10=movement, 11=max_hp, 12=max_sp, 13=max_fs. | -| `0x6f70` | unit_stat_growth_fractions | high | investigation | Persistent fractional-growth row paired with each playable unit's unit_current_stats. ADDEXP adds unit_stat_growth_rates, TRAIN adds training_action_stat_growth_hundredths, and UNITECH applies level catch-up growth; each path awards the quotient divided by 100 to the current stat and retains the remainder modulo 100. GAMESTART serializes the rows, while GAMECLEAR and EVOLVE copy them with the rest of the persistent unit record. Columns: 0=accuracy, 1=evasion, 2=physical_attack, 3=physical_defense, 4=magic_attack, 5=magic_defense, 6=speed, 7=luck, 8=critical_chance, 9=capture_power, 10=movement, 11=max_hp, 12=max_sp, 13=max_fs. | -| `0x74e8` | unit_skill_ids | high | investigation | Persistent four-skill row for each playable unit. CALCCC copies positive class_change_skill_awards into the first three slots after a promotion; ADDEXP compares the before/after row to report learned or replaced skills. Columns: 0=skill_slot_1, 1=skill_slot_2, 2=skill_slot_3, 3=skill_slot_4. | -| `0x7684` | stage_clear_state | high | investigation | Persistent per-stage completion state indexed by stage id. STAGECLEAR sets the current stage cell to 1, while FORT, SELSTAGE, and FIELD use zero versus one to distinguish an uncleared mission from a cleared replay. | -| `0x141a4` | stage_object_runtime_state | high | investigation | Per-stage, per-object-slot runtime state. FIELD initializes mode-1 objects from STINIT's first tagged payload on a fresh stage and updates capturable-object ownership; DRAWOBJ uses it as the vertical sprite-row index. RTN_M015 treats the state of Magic Pillar types 2..4 as their controlling faction and targets pillars whose value differs from the acting entity's faction. | -| `0x20543` | tile_faction_traversal_masks | high | investigation | Row-major tile traversal permissions. Movement checks the acting entity's faction bit before enqueuing a tile in movement-limited MVSEEK searches. RTN_M013 builds either one selected faction bit or all bits except the actor's, requires the current tile not to match that set, and approaches the nearest reachable tile whose mask does. | -| `0x341ab` | current_stage_terrain_grid | high | investigation | Current stage's mutable terrain grid. FIELD clears all 2,000 rows and copies the selected stage_terrain_atlas rectangle; rendering, minimap, occupancy, battle, and movement scripts read it, while SETLAND/DELLAND alter cells and RESETLAND restores atlas values. | -| `0x4dfbd` | entity_unit_definition_ids | high | investigation | Definition id backing each runtime map entity. SETEN writes current_unit_id when materializing an enemy; BTL uses the opposing entity's value to read unit_experience_reward and drop tables, while ADDEXP uses the faction-1 participant's value to select persistent playable-unit state. | -| `0x4e021` | entity_runtime_flags | high | investigation | Per-runtime-entity state flags. RTN_M007 requires bit 0 when selecting an injured ally, and MVSEEK mode 2 requires it before masking a foreign entity's occupied terrain cell. | -| `0x4e053` | entity_levels | high | investigation | Displayed/runtime level for each map entity. SETEN begins enemies at unit_starting_level, applies party-reference auto-scaling and stage minimum/maximum clamps, and BTL subtracts the surviving faction-1 participant's level from the opponent's level to choose the experience multiplier bracket. | -| `0x4e085` | entity_current_resources | high | investigation | Per-runtime-entity current resources. DRAWCHP/DRAWENP render columns 0..2 against max-stat columns 11..13, skill/item resource deltas modify the same three columns, and movement search compares path cost with current_fs. Columns: 0=current_hp, 1=current_sp, 2=current_fs. | -| `0x4e11b` | entity_effective_stats | high | investigation | Per-runtime-entity effective fourteen-stat row after CALCREVISE applies base data, equipment, skills, and conditions. Combat/UI consumers use columns 0..10 directly; columns 11..13 are the maxima paired with entity_current_resources HP/SP/FS. Columns: 0=accuracy, 1=evasion, 2=physical_attack, 3=physical_defense, 4=magic_attack, 5=magic_defense, 6=speed, 7=luck, 8=critical_chance, 9=capture_power, 10=movement, 11=max_hp, 12=max_sp, 13=max_fs. | -| `0x4e693` | entity_skill_flags | high | investigation | Per-runtime-entity skill-state row. CALCREVISE and CALCSCOPE mark equipped skills, combat/field consumers test specific skill ids, and RTN_M009 requires skill 22 (Unlock) before treating an unopened type-7 chest as a treasure target. | -| `0x5212b` | entity_equipped_active_skill_ids | high | investigation | Four equipped active-skill slots per runtime entity. CALCSCOPE maps each usable offensive or healing skill into the corresponding action bit and range band; RTN_M051/052 select offensive skills and RTN_M061 selects a healing skill from these slots. | -| `0x52289` | entity_selected_action_ids | high | investigation | Per-entity selected action. RTN_M051/052 write either zero for the normal attack or an offensive equipped skill and return routine execution state 2; RTN_M061 writes a healing skill and returns state 3. BTRTN may replace the value through a battle-provider decision. | -| `0x522ed` | entity_faction_ids | high | investigation | Per-runtime-entity faction id. RTN_M007 restricts its injured-unit target to the acting entity's faction; MVSEEK mode 2 compares this value while masking active foreign-entity cells, and ordinary movement checks the acting faction's bit in tile passability masks. | -| `0x5231f` | entity_tile_x | high | investigation | Per-runtime-entity map X coordinate. FIELD movement and occupancy logic maintain it; movement providers pair it with entity_tile_y and compare or route from the current tile. | -| `0x52351` | entity_tile_y | high | investigation | Per-runtime-entity map Y coordinate paired with entity_tile_x. Values use the same stage map-space cell keys as STINIT object and enemy coordinates. | -| `0x52383` | entity_condition_levels | high | investigation | Per-runtime-entity current condition levels. ADDILLSUB applies signed level deltas, clamps the minimum to entity_condition_baseline_levels and the maximum to 5, and assigns condition duration. CALCREVISE, FIELD, combat, and UI consumers index the same ILINIT-defined 30-column condition id space. Columns: 1=instant_death, 2=hp_drain, 3=sp_drain, 4=fs_drain, 5=curse, 6=charm, 7=confusion, 8=paralysis, 9=poison, 10=water_flow, 11=fear, 12=reserved, 13=regeneration, 14=exaltation. | -| `0x5295f` | entity_condition_remaining_turns | high | investigation | Per-runtime-entity duration counters paired with entity_condition_levels. FIELD decrements positive counters and removes the condition when a counter reaches zero; DRAWENP displays negative values as infinity. RECOVER writes -1 when a recoverable condition retains an equipment/passive baseline and zero when it clears completely. Columns: 1=instant_death, 2=hp_drain, 3=sp_drain, 4=fs_drain, 5=curse, 6=charm, 7=confusion, 8=paralysis, 9=poison, 10=water_flow, 11=fear, 12=reserved, 13=regeneration, 14=exaltation. | -| `0x52f3b` | entity_condition_baseline_levels | high | investigation | Per-runtime-entity minimum condition levels supplied by equipment and passive effects. SETCH/SETEN populate the row from item_equipped_status_levels, ADDILLSUB cannot reduce current levels below it, CALCREVISE separates transient current levels from this baseline, and RECOVER restores eligible conditions to it. Columns: 1=instant_death, 2=hp_drain, 3=sp_drain, 4=fs_drain, 5=curse, 6=charm, 7=confusion, 8=paralysis, 9=poison, 10=water_flow, 11=fear, 12=reserved, 13=regeneration, 14=exaltation. | -| `0x53517` | entity_movement_routine_set_ids | high | investigation | Per-runtime-entity movement routine set for easy/normal/hard. SETEN copies a stage-specific override or the EBINIT default into this row; MVRTN selects the current difficulty column and stores it in current_routine_set_id. | -| `0x535ad` | entity_battle_routine_set_ids | high | investigation | Per-runtime-entity battle routine set for easy/normal/hard. SETEN copies a stage-specific override or the EBINIT default into this row; BTRTN selects the current difficulty column and stores it in current_routine_set_id. | -| `0x53643` | entity_movement_routine_progress | high | investigation | Per-runtime-entity movement-routine progress counters. FIELD clears all fifty rows, movement providers increment the current step, and MVRTN compares it with movement_routine_minimum_progress_counts before enabling a step. | -| `0x53e13` | entity_carried_item_ids | high | investigation | Two carried/drop-item slots per runtime entity. SETEN initializes slot 0 from the unit's starting equipment item, FIELD fills an empty or matching slot when treasure is collected, and RTN_M009 requires an empty slot or an item-id match before approaching a chest/treasure object. Columns: 0=slot_0, 1=slot_1. | -| `0x53e77` | entity_carried_item_counts | high | investigation | Quantities for the two per-entity carried/drop-item slots. SETEN seeds a starting item with quantity one; FIELD adds treasure quantities to the matching slot and caps the result at 999. Columns: 0=slot_0, 1=slot_1. | -| `0x53ede` | training_action_unlock_flags | high | investigation | Persistent per-action discovered/unlocked state maintained by TRAIN after evaluating eligibility. TRAIN uses it while choosing the locked-versus-known menu presentation, GAMESTART restores every cell, and SAVE persists the same block. | -| `0x56223` | unit_story_speaker_seen_flags | high | investigation | Scene scripts set and persist a unit's cell when drawing that speaker's name. CONFIG reloads the twelve CVINIT-mapped unit cells and enables each named character-voice control only after its speaker has been encountered. | -| `0x5660b` | skill_info_revealed_flags | high | investigation | Persistent skill-information visibility flags. ADDSKILL sets the selected skill, BTL marks every equipped skill when it is observed in combat, and INFOIT suppresses a skill's icon/handler-driven details until this flag is nonzero. This is broader than skill_acquired_flags. | -| `0x56738` | entity_battle_routine_random_rolls | high | investigation | Per-runtime-entity battle-step random rolls. FIELD and BTL fill every active entity's twenty cells with random-modulo-100; BTRTN executes a step when the matching roll is below battle_routine_activation_percents. | -| `0x56b20` | entity_patrol_waypoint_indices | high | investigation | RTN_M011 compares each step's one-based waypoint_ordinal minus one with the current entity's value. Reaching the selected destination advances this value modulo the largest RTN_M011 waypoint ordinal in the routine set. | -| `0x56b85` | enemy_encyclopedia_revealed_flags | high | investigation | Persistent enemy-information reveal state. BTL marks both participating unit definitions as revealed and synchronizes their cells; INFOEN masks unrevealed unit names and details while still listing EBINIT rows enabled by unit_enemy_info_listed. | -| `0x57357` | unit_deployment_cost_adjustments | high | investigation | Persistent per-unit delta added to unit_deployment_cost_base. CALCCC increments it by class_change_deployment_cost_delta, while SETCH, SETEN, ADDEXP, and deployment scripts include it when constructing or updating runtime command cost. | -| `0x573bb` | unit_class_change_state | high | investigation | Persistent ten-slot class-change state for each playable unit. CALCCC copies the current unit's row to class_change_state_work before invoking the rule scripts and persists the updated row; CCINIT requires the rule's slot to be zero so each promotion is applied once. Columns: 0=promotion_slot_1, 1=promotion_slot_2, 2=promotion_slot_3, 3=promotion_slot_4, 4=promotion_slot_5, 5=promotion_slot_6, 6=promotion_slot_7, 7=promotion_slot_8, 8=promotion_slot_9, 9=promotion_slot_10. | -| `0x5f0ed` | scene_decision_seen_flags | high | investigation | Persistent seen-state for progression decisions. Numbered scene scripts set the current scjump_decision_out cell after playback and synchronize it through the persistence opcode; INFOVO uses VIINIT's one-based prerequisites to unlock glossary topics. | -| `0x62455` | adv_gfx_object_handles | high | investigation | ADV retained-object handles indexed by adv_gfx_layer_index. INIT2 seeds handles 0xcb20, 0xcb2a, and 0xcb8e..0xcbc0 for the first nine cells; scene loaders query, bind, animate, and erase those objects while the eight-row surface-slot registry governs layers zero through seven. | -| `0x624bf` | unit_voice_family_unit_ids | high | investigation | CNINIT's sparse unit-id keyed voice-family normalization map. Story, history, field, and battle voice paths map the current unit variant through this table before selecting the family-level voice-suppression state; 175 of 277 authored rows alias a variant to another representative unit id. | -| `0x628a7` | unit_voice_suppression_flag_ids | high | investigation | CVINIT's unit-to-setting inverse map for the twelve named character voice controls. Story, history, field, and battle paths normalize the current unit through unit_voice_family_unit_ids, index this table by that representative unit id, and suppress voice playback when the selected character_voice_suppressed cell is nonzero. | -| `0x62c8f` | character_voice_setting_unit_ids | high | investigation | CVINIT's CONFIG-row join. CONFIG iterates setting slots 1..12, resolves each unit id through unit_story_display_names for its label, and tests the same unit's unit_story_speaker_seen_flags cell before exposing the row. CVINIT also writes the exact inverse mapping to unit_voice_suppression_flag_ids. Columns: 0=system_or_reserved, 1=lily, 2=sylphine, 3=sasune, 4=vidal, 5=estelle, 6=nelly, 7=tiofania, 8=colette, 9=bridget, 10=octavia, 11=fam, 12=deirdre. | -| `0x62cad` | character_voice_preview_asset_ids | high | investigation | CVINIT's thirteen voice-setting preview clips. CONFIG indexes this array by setting slot and plays the selected clip; slot 0 is the non-unit system voice, while slots 1..12 join to character_voice_setting_unit_ids. Columns: 0=system_voice, 1=lily, 2=sylphine, 3=sasune, 4=vidal, 5=estelle, 6=nelly, 7=tiofania, 8=colette, 9=bridget, 10=octavia, 11=fam, 12=deirdre. | -| `0x62cd1` | gallery_image_assets | high | investigation | CGINIT's sparse gallery asset rows. CGMODE tests and displays column 0 as the full-size gallery image. SAVE and SELSTAGE scan column 0 for the current image and, when column 1 is populated, load that 112x84 preview instead of capturing the current screen. Columns: 0=gallery_image_asset_id, 1=save_stage_preview_asset_id. | -| `0x63c71` | gallery_thumbnail_sheet_ids | high | investigation | CGINIT's gallery thumbnail-atlas selector. CGMODE subtracts one, remaps the configured sheet through gallery_thumbnail_sheet_asset_ids, and groups every populated gallery record under that sheet. | -| `0x64441` | gallery_thumbnail_slot_ids | high | investigation | CGINIT's slot within the selected 6x5 thumbnail atlas. CGMODE subtracts one, draws that one of thirty 126x95 cells, and reports the unlocked/total variant counts associated with the slot. | -| `0x64c11` | gallery_variant_ordinals | high | investigation | CGINIT's ordering key for multiple full-size images behind one thumbnail slot. CGMODE subtracts one and stores the gallery record id at sheet[slot*100 + ordinal], then walks that ordered variant list in the image viewer. | -| `0x66381` | gallery_thumbnail_sheet_asset_ids | high | investigation | CGMODE's configured thumbnail-sheet resources. INIT2 populates the first four cells with SO026A.AGF through SO026D.AGF and leaves the remaining six reserved; CGMODE compacts nonzero cells into its visible sheet list before applying gallery_thumbnail_sheet_ids. | -| `0x6638b` | h_scene_gallery_script_ids | high | investigation | SPINIT's H-scene gallery registry. HMODE compacts the eight configured thumbnail pages, scans each page's fifteen script slots, filters populated resources through opcode 0x19d, and call-scripts the selected available entry. Columns: 0=slot_0, 1=slot_1, 2=slot_2, 3=slot_3, 4=slot_4, 5=slot_5, 6=slot_6, 7=slot_7, 8=slot_8, 9=slot_9, 10=slot_10, 11=slot_11, 12=slot_12, 13=slot_13, 14=slot_14. | -| `0x66421` | h_scene_gallery_thumbnail_sheet_assets | high | investigation | INIT2's eight HMODE thumbnail-page assets. HMODE compacts nonzero configured pages and pairs each page index with the corresponding row of h_scene_gallery_script_ids. | -| `0x665e3` | modal_annotation_horizontal_cells | high | investigation | Per-annotation horizontal anchor input shared by MES and SBUNKI. Each renderer multiplies the cell by 21 pixels and offsets it by half the annotation's rendered width. | -| `0x66647` | modal_annotation_row_offsets | high | investigation | Per-annotation vertical row offset shared by MES and SBUNKI. Renderers multiply it by 30 pixels; a negative value additionally shifts the annotation left by one 21-pixel cell. | -| `0x66716` | unit_voice_asset_ids | high | investigation | EBINIT per-unit voice bank for 116 voiced characters and variants. FIELD directly selects column 0 before WARPD, column 1 when an acting unit takes chest/treasure contents, and column 3 after occupying, losing, or sealing a stage objective. BTL selects the acting unit's columns 7..9 for ordinary attacks, 10 for an ordinary critical, odd columns 11/13/15 for skill uses, and even columns 12/14/16 for critical skills; the three variants follow its six-step exchange selector. If the target survives positive damage, BTL selects target columns 19/20/21 with 60/30/10 percent weights; column 22 belongs to a target reduced to zero HP, while actor column 23 is selected for a finishing blow. SHOWGROW selects column 24 after level gain. Populated columns 4..6 and 17..18 have no reachable selector in the shipped script corpus and are retained as explicit unused authoring slots; columns 17 and 18 duplicate columns 15 and 16 in all 116 populated rows. Columns: 0=warp, 1=treasure_capture, 3=objective_interaction, 4=unused_slot_4, 5=unused_slot_5, 6=unused_slot_6, 7=normal_attack_1, 8=normal_attack_2, 9=normal_attack_3, 10=critical_normal_attack, 11=skill_use_1, 12=critical_skill_1, 13=skill_use_2, 14=critical_skill_2, 15=skill_use_3, 16=critical_skill_3, 17=unused_slot_17, 18=unused_slot_18, 19=damage_reaction_1, 20=damage_reaction_2, 21=damage_reaction_3, 22=defeated, 23=finishing_blow, 24=level_up. | -| `0x6dc46` | unit_status_art_asset_ids | high | investigation | Three-variant status/menu illustration table for 25 principal characters. The ids resolve to 456x420 CS character art; DRAWCHP selects column 0 above 50% HP, column 1 at 26..50%, and column 2 at 25% or below, then loads the art into the status-panel texture slot. Columns: 0=healthy, 1=wounded, 2=critical. | -| `0x6e7fe` | unit_map_sprite_asset_ids | high | investigation | Five-context unit sprite-sheet table for 251 units. Even columns 0/2/4 are compact CP*AA-style presentations for normal, alternate-condition, and special-condition states; columns 1/3 are the matching normal/alternate full directional CP*AB sheets used by FIELD. INFOCH/INFOEN and DRAWENP reuse the compact representation. Columns: 0=normal_compact, 1=normal_directional, 2=alternate_compact, 3=alternate_directional, 4=special_compact. | -| `0x6fb86` | unit_battle_sprite_asset_id | high | investigation | Battle figure for 248 units. Values resolve to transparent full-body CB character/monster art; BTL loads the selected combatant's figure and INFOEN uses the same asset for the enemy detail view. | -| `0x6ff6e` | unit_battle_portrait_asset_ids | high | investigation | Paired battle portrait assets: column 0 is the larger CA*A bust where available, and column 1 is the compact CA*D face portrait. BTL, DRAWENP, and EVOLVE select these assets for combat and unit-growth presentation. Columns: 0=large_bust, 1=compact_face. | -| `0x7073e` | unit_battle_cutin_asset_ids | high | investigation | Paired 800-pixel-wide battle cut-ins for 64 named characters. The values resolve to CIC cropped/action and CIN full-frame illustrations; BTL is the sole consumer. Columns: 0=cropped_action, 1=full_frame. | -| `0x70f0e` | unit_sort_key | high | investigation | EBINIT ordering key populated for 248 units. CHMENU, EXILE, SALLY, INFOEN, and SUMMON pass this array to op 0x12f's stable index sort or combine it with a unit id to build menu ordering keys, mirroring item_sort_key and skill_sort_key. | -| `0x712f6` | unit_enemy_info_listed | high | investigation | EBINIT eligibility flag for 183 enemy-information entries. INFOEN stable-sorts all unit ids, retains only rows whose value is nonzero, and then gates each retained entry's revealed state through the encounter/profile table. | -| `0x716de` | unit_icon_id | high | investigation | EBINIT icon selector populated for all 277 units. READICON returns it for unit ids; CHMENU, DRAWCHP, EXILE, SALLY, and SUMMON convert the value into icon-atlas page and cell coordinates. | -| `0x71ac6` | unit_species_category | med | investigation | Broad EBINIT species/allegiance category for 198 units: value 1 covers humans and allied heroines, 2 covers demons including Emilio and Lily as well as many demonic monsters, and 3 covers other monsters, dragons, and elementals. CHMENU uses it for equipment restrictions, CALCDMG for category-sensitive effects, and INFOCH/INFOEN for display. | -| `0x71eae` | unit_sex_category | high | investigation | EBINIT sex category for 251 units. Named character records establish the three values; CHMENU tests it against item_sex_restriction_mask, while INFOCH and INFOEN use the same category in unit presentation. | -| `0x72296` | unit_boss_class | med | investigation | Nonzero for 112 bosses, special encounters, summoned adds, and map hazards. CALCDMG grants every nonzero class the boss adjustment, CALCILL grants condition immunity, and FIELD/MAGIC/USEMAGIC exclude nonzero classes from ordinary-unit rules. FIELD draws the normal faction-colored unit banner for classes 0 and ±1..±3, then adds the separate yellow boss marker below it when this value is nonzero; class ±4 suppresses both standard markers for its special presentation. On stages whose clear rule is defeat-boss targets, FIELD blocks victory only while a positive-class enemy remains; negative peers keep boss treatment but are ignored, as with Octavia beside Bridget, Deirdre's shadows, EX-8 adds beside Tiamat, and the final boss's three organs. Classes 1..3 are otherwise authoring categories with no distinct shipped-script branch. Either sign of class 4 selects the final-boss battle BGM and special tactical-map presentation. | -| `0x7267e` | unit_canonical_id | high | investigation | Maps 106 alternate, boss, brainwashed, EX, and enemy variants back to their canonical character or recruitable archetype. For example all Estelle bosses map to 12, brainwashed Sylphine maps to 5, and ordinary/EX orcs map to recruitable orc 52. Setup, menus, inventory, dismissal, and combat normalize through this id. | -| `0x72a66` | unit_capturable | high | investigation | Capture eligibility for 74 ordinary enemy archetypes. SELACT and FIELD allow the capture skill only when this flag is nonzero and the acting unit's capture power meets the target-level check; successful resolution displays the explicit 'Captured the enemy' message. | -| `0x72e4e` | unit_roster_state_flag_base_index | high | investigation | Persistent roster-state block for seven recruitable heroines. SALLY's first three unit actions mark offsets 1, 2, and 0 respectively; UNITECH marks the offset selected by its recruitment mode; DELCH, REMOVECH, SALLY, and EXILE mark offset 3 when the unit is removed or released. The values are relative indices into the shared flag bank, not absolute global addresses. | -| `0x73236` | unit_sally_action_unlock_requirements | high | investigation | Availability requirements for SALLY's contract, brainwash, reserved, and sex-magic action slots. The SO012 button atlas and selection dispatch prove that UI choices 1, 2, and 3 select columns 0, 1, and 3; column 2 has a switch case but is deliberately skipped by both drawing and input, so it is reserved/unreachable in the shipped UI. While constructing the action mask, SALLY keeps a positive entry only when flag_bank[value - 1] equals 1, keeps -1 as unconditional, and clears an action whose entry is zero. Deploy, sacrifice, and release use separate eligibility logic. Columns: 0=contract, 1=brainwash, 2=reserved_action, 3=sex_magic. | -| `0x741d6` | unit_sally_event_ids | high | investigation | SALLY event ids for contract, brainwash, the unreachable reserved action, Lily's child/girl/adult sex-magic forms, sacrifice, and release. The action switch selects columns 0, 1, 6, and 7 directly; sex magic selects the current Lily unit id plus one, yielding columns 3..5 for Lily unit ids 2..4. A populated reachable slot is copied to scjump_decision_out and translated through the SCJUMP resource table at 0x87a57 into next_script_resource_id. Column 2 is paired with the UI-skipped reserved action and its shipped ids 1300..1306 have no SCJUMP resource mapping. EXILE also tests column 7 when deciding whether a unit can be released. Columns: 0=contract, 1=brainwash, 2=reserved_action, 3=sex_magic_lily_child, 4=sex_magic_lily_girl, 5=sex_magic_lily_adult, 6=sacrifice, 7=release. | -| `0x76116` | unit_roster_variant_ids | high | investigation | Roster-form mapping for 36 recruitable units. Column 0 maps the summonable archetypes and principal heroines to their normal unit id; column 1 maps seven heroines to EBINIT ids 21..27, whose names explicitly identify their brainwashed states. SALLY replaces the selected party unit with the action-selected form, and UNITECH recruitment modes 3/4 select the same two columns. Columns: 0=normal, 1=brainwashed. | -| `0x768e6` | unit_sex_magic_bonus_item_id | high | investigation | Item awarded by SALLY after the three form-dependent intimate-event actions for 22 eligible units. SALLY passes the value directly to USEITEM and then displays the selected character name followed by the literal message 'sex magic bonus' and the resolved item description. Principal heroines yield planetary stones; the remaining rows resolve to recovery items and rare materials. | -| `0x76cce` | unit_essence_yield | high | investigation | Essence returned by SALLY's unit-conversion/release actions for 187 units. The normal path adds this value to current essence and the special path adds five times it, clamps to the essence cap, then applies the corresponding alignment adjustment; it is distinct from unit_deployment_cost_base. | -| `0x770b6` | unit_summon_unlock_flag_index | high | investigation | Summoning-stone/unlock flag index for the 29 recruitable monster archetypes. SUMMON and SALLY subtract one and test the corresponding cell in the shared flag bank at 0x6d3 before listing or advancing the unit; GAMESTART uses presence of this mapping when restoring party slots. | -| `0x7749e` | unit_summon_knowledge_threshold | high | investigation | Per-archetype familiarity threshold for 19 summonable units. SUMMON divides accumulated progress by it for the displayed percentage and treats zero-threshold units as limited to one copy; SALLY awards the corresponding summoning item and 'deepened understanding' message when accumulated progress reaches the threshold. | -| `0x77886` | unit_summon_point_cost | high | investigation | Point cost for the 29 summonable unit archetypes. SUMMON compares it with the current point pool, emits 'Insufficient points' on failure, subtracts it on success, and displays the same number in each catalog row. | -| `0x77c6e` | unit_defense_element | high | investigation | EBINIT defensive affinity for 250 units. DRAWENP renders it through the same twelve-value defense-attribute vocabulary as item_defense_element; CALCBTPARAM, BTRTN, and route scripts consume it during battle resolution. | -| `0x78056` | unit_default_attack_item_id | high | investigation | EBINIT default attack for 250 units. Every populated value cross-resolves to ITINIT's innate-attack records; SELACT, BTL, CALCBTPARAM, CALCDMG, and CHMENU use it when no equipped weapon overrides the unit's natural attack. | -| `0x7843e` | unit_power_tier | med | inference | Authoring-only EBINIT power/progression tier populated for 243 units. It is independent of species, sex, defense element, and boss class, but rises strongly with deployment cost, essence yield, level cap, and base stats. Lily's child/girl/adult forms are tiers 2/4/6, and recurring heroine boss definitions generally rise as their story appearances become stronger. No shipped script reads the array, and the /v2 native image contains no literal reference to its global index, so the descriptive name is correlation-based rather than a runtime behavior claim. | -| `0x78826` | unit_weapon_item_category | high | investigation | EBINIT weapon/equipment-family restriction for 179 units. CHMENU compares an item's item_category directly with this value when deciding whether the selected unit can equip it; Lily's forms store -1 for unrestricted handling. | -| `0x78c0e` | unit_starting_equipment_item_id | high | investigation | Fixed equipment for 22 named/boss unit records. Values cross-resolve to weapons, shields, armor, and accessories in ITINIT. SETEN equips the item instead of unit_default_attack_item_id, UNITECH grants it on first recruitment, and INFOEN derives the displayed defense element from it when applicable. | -| `0x78ff6` | unit_starting_skill_ids | high | investigation | EBINIT four-slot starting skill record. The shipped table populates the first three columns. SETEN, UNITECH, and SALLY copy the row into each runtime unit's skill list; GAMESTART, FORT, FIELD, and DRAWENP inspect the same ids, all of which cross-resolve to SKINIT. Columns: 0=skill_slot_1, 1=skill_slot_2, 2=skill_slot_3, 3=skill_slot_4. | -| `0x79f96` | unit_deployment_cost_base | high | investigation | Base deployment/command cost for 204 units. SETCH, SETEN, and ADDEXP copy it plus the per-unit adjustment at 0x57357 into runtime cost 0x5f0bb; SALLY checks the prospective total against party capacity, while FIELD/READY add it to and REMOVECH subtracts it from the deployed-cost aggregate. | -| `0x7a37e` | unit_starting_level | high | investigation | EBINIT initial level for 242 units. Lily's three forms store levels 1, 20, and 40. SETEN and SALLY copy or compare it while constructing a runtime unit, and UNITECH uses it when synchronizing form and character state. | -| `0x7a766` | unit_level_cap | high | investigation | EBINIT maximum level for 243 units. ADDEXP permits level growth only while the runtime level is below this field, and SETEN uses it as the default upper bound when no scenario-specific enemy cap is supplied. | -| `0x7ab4e` | unit_auto_level_scale_divisor | high | investigation | Default level-scaling divisor for 192 enemy definitions. SETEN uses a scenario override when supplied, otherwise divides the difference between scenario level and unit_starting_level by this value, adds the result to the runtime level, and clamps it to unit_level_cap. | -| `0x7af36` | unit_base_stats | high | investigation | EBINIT fourteen-column base-stat record copied wholesale into each runtime unit by SETEN, UNITECH, and SALLY. Its layout matches item_stat_modifiers: columns 2 physical attack, 3 physical defense, 4 magic attack, 5 magic defense, 6 speed, 7 luck, 10 movement, 11 max HP, 12 max SP, and 13 max FS; accuracy/evasion and other unpopulated columns begin at zero. Columns: 0=accuracy, 1=evasion, 2=physical_attack, 3=physical_defense, 4=magic_attack, 5=magic_defense, 6=speed, 7=luck, 8=critical_chance, 9=capture_power, 10=movement, 11=max_hp, 12=max_sp, 13=max_fs. | -| `0x7e5e6` | unit_stat_growth_rates | high | investigation | EBINIT per-level growth record with the same fourteen-column layout as unit_base_stats. ADDEXP adds each rate to a fractional accumulator, divides by 100 to award whole stat points, and retains the remainder; SETEN and UNITECH apply the same rates when materializing units above their starting level. Columns: 0=accuracy, 1=evasion, 2=physical_attack, 3=physical_defense, 4=magic_attack, 5=magic_defense, 6=speed, 7=luck, 8=critical_chance, 9=capture_power, 10=movement, 11=max_hp, 12=max_sp, 13=max_fs. | -| `0x83406` | unit_experience_reward | high | investigation | Per-opponent base experience progress. After each battle exchange, BTL awards a surviving faction-1 participant against the opposing unit definition. If the opponent survives, enemy-minus-player level differences >=3/2/1/<=0 select 40/30/20/10 percent. If the opponent is defeated, differences >=3/2/1/0/-1/-2/<=-3 select 250/200/150/100/75/40/20 percent. Integer division truncates. The result enters ADDEXP, whose normally cleared modifier bits can suppress, double, or multiply it by ten. A cell with no writer in the ordered INIT sequence remains zero; append unit 900 is such a cell and therefore awards zero at every bracket. | -| `0x837ee` | unit_drop_item_ids | high | investigation | Enemy drop table. Values cross-resolve to ITINIT items (for example treasure puttetto drops bronze/silver/gold coins and planet stones); BTL rolls and awards the rows, while INFOEN displays the possible drops. Columns: 0=drop_1_item_id, 1=drop_2_item_id, 2=drop_3_item_id, 3=drop_4_item_id, 4=drop_5_item_id, 5=drop_6_item_id, 6=drop_7_item_id, 7=drop_8_item_id. | -| `0x8572e` | unit_drop_chance_percent | high | investigation | Per-slot drop chance paired with unit_drop_item_ids. BTL draws random-modulo 100 for each populated slot and awards the item when the result is below this value; only columns 0..4 are populated in shipped EBINIT. Columns: 0=drop_1_percent, 1=drop_2_percent, 2=drop_3_percent, 3=drop_4_percent, 4=drop_5_percent, 5=drop_6_percent, 6=drop_7_percent, 7=drop_8_percent. | -| `0x8766e` | unit_large_battle_sprite | high | investigation | Presentation flag for 33 large demons, dragons, gods, and their variants. BTL and INFOEN use it to anchor the CB battle figure at the lower screen edge and omit the ordinary-unit framing treatment required by smaller sprites. | -| `0x87a57` | scjump_scene_script_resource_ids | high | investigation | SCINIT's sparse decision-to-script registry. SYSTEM4, FIELD, SALLY, and TRAIN index it by scjump_decision_out, then either call the returned packed resource id or copy it to next_script_resource_id. SCINIT contains 1,209 final decision rows backed by 2,179 source assignments; all 135 distinct packed ids resolve to numbered SC scene scripts. | -| `0x8a167` | scjump_authored_chapters | high | investigation | SCINIT's parallel authored chapter metadata for each scjump_scene_script_resource_ids entry. Source assignments form contiguous chapter 1..9 runs followed by an unassigned -1 run. Of the 847 decision ids currently emitted by SCJUMP, 844 final tags agree with SCJUMP's independently decoded chapter paths; three retained mismatches are legacy/stale metadata. No shipped script reads this array directly. | -| `0x8c879` | item_sort_key | high | investigation | ITINIT field for all 287 populated item ids. CHMENU, IMPROVE, and INFOIT pass this array as the primary key to op 0x12f's stable index sort, establishing it as the catalog/display ordering key. The runtime lookup base is one cell before ITINIT's first write because item ids are one-based. | -| `0x8cc61` | item_random_tier | high | investigation | ITINIT field for all 287 items. ADDRANDOMITEM and LOSTRANDOMITEM bucket eligible item ids by this value before choosing a random gain/loss; IMPROVE compares it with the current progression rank. This is the random-item availability/rarity tier, distinct from item_category. | -| `0x8d049` | item_category | high | investigation | ITINIT field for all 287 items and ITMES's top-level behavior dispatch. Observed groups: 0 innate attacks, 1 key/story items, 2 consumables, 4 stat stones, 8 synthesis materials, 9 coins, 10..17 weapon families, 19 boots, 20 armor, 21 shields, 22 accessories, and 23 capture ropes. | -| `0x8d431` | item_min_range | high | investigation | Populated for the 12 bows/ranged innate attacks whose descriptions say range 2. CALCSCOPE reads it as the first range bound; the paired maximum is item_max_range. | -| `0x8d819` | item_max_range | high | investigation | Populated for the same 12 ranged items as item_min_range. CALCSCOPE reads it as the second range bound, matching every description's range-2 annotation. | -| `0x8dc01` | item_icon_id | high | investigation | ITINIT field for all 287 items. READICON sorts and indexes this array to select icon atlas entries; ALCHEMY, CHMENU, IMPROVE, and INFOIT use the same value for item-row presentation. | -| `0x8dfe9` | item_attack_element | high | investigation | Populated for 107 weapons/attacks. Values exactly match the AFINIT attack-attribute string table at GStr[0x2690 + value] and the Japanese item descriptions; combat scope/parameter code consumes the same array. | -| `0x8e3d1` | item_defense_element | high | investigation | Populated for the 13 shields. Values match descriptions such as physical, universal, holy, dark, spirit, and divinity defense; DRAWTIP renders them through AFINIT's defense string table at GStr[0x26a4 + value]. | -| `0x8e7b9` | item_character_whitelist | high | investigation | Sparse ITINIT row-major table with stride 5. CHMENU rejects an item when column 0 is populated and the selected party slot's character id is absent from the row. Unique accessories 471/472 allow one character each, while crossover accessories 480..485 allow character ids 2, 3, and 4. Unused trailing columns remain zero. Columns: 0=allowed_character_id_1, 1=allowed_character_id_2, 2=allowed_character_id_3, 3=allowed_character_id_4, 4=allowed_character_id_5. | -| `0x8ff29` | item_sex_restriction_mask | high | investigation | Sparse ITINIT equipment restriction. CHMENU uses unit_sex_category as a bit index and rejects an item when that bit is absent from this mask. Both populated items carry only bit 2; EBINIT value 2 is female, and ITMES explicitly describes item 419 as female-only. | -| `0x906f9` | item_status_delta_levels | high | investigation | Sparse ITINIT row-major table consumed by USEITEM and CALCILL when applying an item's effects. Positive values inflict or drain; -5 removes a condition (for example paralysis-removal item 108 stores -5 in column 8). Confirmed columns are 2 HP drain, 3 SP drain, 4 FS drain, 5 curse, 6 charm, 7 confusion, 8 paralysis, 9 poison, 10 water-flow, and 11 fear. Columns: 2=hp_drain, 3=sp_drain, 4=fs_drain, 5=curse, 6=charm, 7=confusion, 8=paralysis, 9=poison, 10=water_flow, 11=fear. | -| `0x97c29` | item_equipped_status_levels | high | investigation | Sparse ITINIT row-major table added to a unit's 30-column condition state by CALCREVISE. Item descriptions identify populated columns 9 poison, 11 fear, 13 regeneration, and 14 exaltation; these are passive equipped effects, distinct from item_status_delta_levels. Columns: 9=poison, 11=fear, 13=regeneration, 14=exaltation. | -| `0x9f159` | item_granted_skill_id | high | investigation | Populated for 85 equipment items. Values cross-resolve to SKINIT (for example flying bracelet=1 Flying, transfer bracelet=21 Transfer, thief key=22 Lockpick, ropes=156 Capture Attack); CALCREVISE applies the linked skill and UI scripts display it. | -| `0x9f541` | item_stat_modifiers | high | investigation | ITINIT row-major equipment modifiers added directly to the unit's 14-column stat record by CALCREVISE. Descriptions and consumers establish columns 0 accuracy, 1 evasion, 2 physical attack, 3 physical defense, 4 magic attack, 5 magic defense, 6 speed, 7 luck, 8 critical chance, 9 capture power, 10 movement, 11 max HP, 12 max SP, and 13 max FS. CALCBTPARAM adds columns 7 and 8 into the action's critical percentage, and CALCDMG compares the clamped result with a random-modulo-100 roll. Columns: 0=accuracy, 1=evasion, 2=physical_attack, 3=physical_defense, 4=magic_attack, 5=magic_defense, 6=speed, 7=luck, 8=critical_chance, 9=capture_power, 10=movement, 11=max_hp, 12=max_sp, 13=max_fs. | -| `0xa2bf1` | item_tuning_curve_ids | high | investigation | ITINIT row-major table selecting an equipment-growth curve for each of the ten tunable fields. TUNE, IMPROVE, DRAWTIP, and CALCREVISE combine each nonzero curve id with the item's corresponding tuning level and index the shared curve-value table at 0xab6fa. Columns align with item_stat_modifiers columns 0..9. Columns: 0=accuracy, 1=evasion, 2=physical_attack, 3=physical_defense, 4=magic_attack, 5=magic_defense, 6=speed, 7=luck, 8=critical_chance, 9=capture_power. | -| `0xa5301` | item_resource_recovery_amounts | high | investigation | Sparse ITINIT row-major consumable table. USEITEM applies columns 0, 1, and 2 to the matching three-column unit resource record; descriptions prove these are HP, SP, and FS respectively (for example item 101 stores HP 30, and item 107 stores 999/99/99 for full recovery). Columns: 0=hp, 1=sp, 2=fs. | -| `0xa62a1` | item_essence_recovery_amount | high | investigation | Sparse ITINIT consumable field. Item 106, Blood Price Healing Hand, describes essence recovery 50 and stores 50 here; USEITEM follows the dedicated essence-recovery path and scales the value before updating the selected unit. | -| `0xa6689` | item_weapon_class | high | investigation | Populated for 104 weapons/innate attacks. Stable values identify weapon families (1 unarmed, 2 staff, 3 claw, 4 dagger, 5 sword, 6 chain blade, 7 spear, 8 axe, 9 bow, 11 blade boots; later values are monster/natural attack classes). CALCDMG consumes it. | -| `0xa6a71` | item_handler_script_id | high | investigation | ITINIT field for all 287 items. Item menus look up this value and feed it directly to call-script; the packed id 0x319b resolves to ITMES.BIN, the shared per-item behavior/description dispatcher. | -| `0xa6e5a` | skill_sort_key | high | investigation | SKINIT field populated for 129 of 131 skills. ADDEXP, ADDSKILL, CHMENU, INFOIT, and SETCH combine it with skill_category to construct deterministic skill-list ordering keys; higher-level sort operations consume the resulting indices. | -| `0xa6f86` | skill_category | high | investigation | SKINIT category for all 131 skills. The records establish 1 movement/exploration, 2 defense/special attack, 3 utility/passive, 4 combat passive, 5 physical special, 6 offensive magic, and 7 healing magic. Combat and menu scripts dispatch directly on these values. | -| `0xa70b2` | skill_change_catalog_eligible | high | investigation | SKINIT inclusion flag for CHMENU's fourth (skill-change) catalog. CHMENU scans all 300 ids, keeps only nonzero rows, sorts acquired rows ahead of unavailable rows using skill_category and skill_sort_key, and copies the acquired prefix into catalog row 3. Eligible ids are 1, 2, 112, 130..133, 210, 228, 230, and 231. | -| `0xa71de` | skill_min_range_encoded | high | investigation | Populated for the 94 active skills. CALCSCOPE and CALCREVISE subtract one before using it as the lower range bound; SELACT and DRAWTIP use the same encoded bound. | -| `0xa730a` | skill_max_range_encoded | high | investigation | Populated for the same 94 active skills as skill_min_range_encoded. CALCSCOPE subtracts one to obtain the upper bound, exactly matching descriptions such as range 3 -> stored 4 and range 9 -> stored 10. | -| `0xa7436` | skill_attack_element | high | investigation | Populated for 60 elemental attacks and spells. Values match the Japanese descriptions and the same eight-value attack-element enum used by item_attack_element; CALCSCOPE, CALCBTPARAM, and SELACT consume it. | -| `0xa7562` | skill_status_levels | high | investigation | Sparse SKINIT row-major condition table consumed by CALCILL when applying a skill's effects to the target unit. Skill names and descriptions identify columns 1 instant death, 6 charm, 7 confusion, 8 paralysis, 9 poison, 10 water-flow, and 11 fear; the column layout matches item_status_delta_levels. Columns: 1=instant_death, 6=charm, 7=confusion, 8=paralysis, 9=poison, 10=water_flow, 11=fear. | -| `0xa988a` | skill_icon_id | high | investigation | SKINIT icon id for all 131 skills. CHMENU and INFOIT translate it into the shared icon atlas; the six ids group movement, defense, utility, passive, physical-special, and magic icons. | -| `0xa99b6` | skill_combat_stat_deltas | high | investigation | Sparse SKINIT row-major table applied by CALCBTPARAM for the selected action. Descriptions and combat consumers establish columns 0 accuracy, 1 evasion, 2 physical attack, 3 physical defense, 4 magic attack, 5 magic defense, 6 speed, 7 luck, 8 critical chance, and 9 capture power. Column 7 is unpopulated in shipped SKINIT; CALCBTPARAM adds any luck and critical modifiers into the critical percentage that CALCDMG rolls after the hit check. Columns: 0=accuracy, 1=evasion, 2=physical_attack, 3=physical_defense, 4=magic_attack, 5=magic_defense, 6=speed, 7=luck, 8=critical_chance, 9=capture_power. | -| `0xaa56e` | skill_resource_deltas | high | investigation | Sparse SKINIT resource table used throughout skill selection and resolution. Column 0 is HP recovery for the three healing spells; column 1 is the negative SP cost for all 95 active skills, exactly matching each description. Column 2 is unpopulated in the shipped table. Columns: 0=hp_recovery, 1=sp_cost. | -| `0xaa8f2` | skill_proc_chance_percent | high | investigation | Probability for 14 passive skills. CALCDMG compares random-modulo 100 against this value; examples include Re-action 20, Double Action 100, Counter 10, and Resurrection 50. | -| `0xaaa1e` | skill_battle_animation_id | high | investigation | Populated for 101 combat skills. BTL and CALCDMG place this value in the battle-animation selector before calling BTANINIT; most skills reuse their own id, while related skills deliberately share an animation and passive reactions use ids 801..808. | -| `0xaab4a` | skill_handler_script_id | high | investigation | SKINIT field for all 131 skills. CHMENU and INFOIT look it up and pass it directly to call-script; packed id 0x31ca resolves to SKMES.BIN, the shared per-skill text/behavior dispatcher. | -| `0xaac78` | condition_effectiveness_element_ids | high | investigation | ILINIT condition metadata. CALCILL uses the selected condition's value as the element-table column for its application-chance effectiveness calculation. | -| `0xaac96` | condition_can_affect_bosses | high | investigation | ILINIT policy vector. CALCILL rejects a condition against a boss-class target when this cell is zero; nonzero cells bypass that boss immunity gate. | -| `0xaacb4` | condition_cleared_by_recover | high | investigation | ILINIT recovery-policy vector. RECOVER and DISARM use it to identify charm, confusion, paralysis, poison, water-flow, and fear as removable conditions; RECOVER resets each eligible current level to its equipment/passive baseline. | -| `0xaacd2` | condition_icon_ids | high | investigation | ILINIT display metadata. DRAWENP and FIELD use these ids to deduplicate active-condition indicators and select the corresponding status-icon atlas entry. | -| `0xaacf0` | condition_duration_turns_by_level | high | investigation | ILINIT's five-column duration row for each condition. ADDILLSUB indexes it by the resulting condition level minus one and stores the value in entity_condition_remaining_turns. Columns: 0=level_1_turns, 1=level_2_turns, 2=level_3_turns, 3=level_4_turns, 4=level_5_turns. | -| `0xaad86` | condition_stat_deltas | high | investigation | ILINIT's five-level by eleven-stat matrix for each condition. CALCREVISE indexes (condition level - 1) * 11 + stat column and adds the result to entity_effective_stats columns 0..10. Shipped rows populate curse, confusion, paralysis, and exaltation. Columns: 0=level_1_accuracy, 1=level_1_evasion, 2=level_1_physical_attack, 3=level_1_physical_defense, 4=level_1_magic_attack, 5=level_1_magic_defense, 6=level_1_speed, 7=level_1_luck, 8=level_1_critical_chance, 9=level_1_capture_power, 10=level_1_movement, 11=level_2_accuracy, 12=level_2_evasion, 13=level_2_physical_attack, 14=level_2_physical_defense, 15=level_2_magic_attack, 16=level_2_magic_defense, 17=level_2_speed, 18=level_2_luck, 19=level_2_critical_chance, 20=level_2_capture_power, 21=level_2_movement, 22=level_3_accuracy, 23=level_3_evasion, 24=level_3_physical_attack, 25=level_3_physical_defense, 26=level_3_magic_attack, 27=level_3_magic_defense, 28=level_3_speed, 29=level_3_luck, 30=level_3_critical_chance, 31=level_3_capture_power, 32=level_3_movement, 33=level_4_accuracy, 34=level_4_evasion, 35=level_4_physical_attack, 36=level_4_physical_defense, 37=level_4_magic_attack, 38=level_4_magic_defense, 39=level_4_speed, 40=level_4_luck, 41=level_4_critical_chance, 42=level_4_capture_power, 43=level_4_movement, 44=level_5_accuracy, 45=level_5_evasion, 46=level_5_physical_attack, 47=level_5_physical_defense, 48=level_5_magic_attack, 49=level_5_magic_defense, 50=level_5_speed, 51=level_5_luck, 52=level_5_critical_chance, 53=level_5_capture_power, 54=level_5_movement. | -| `0xab3f8` | condition_resource_deltas | high | investigation | ILINIT's five-level by three-resource matrix for each condition. FIELD applies the active row each turn; CALCDMG also consumes the HP/SP/FS drain condition rows during battle. Positive values restore/drain to the acting side as defined by the caller, while negative values are periodic damage or loss. Columns: 0=level_1_hp, 1=level_1_sp, 2=level_1_fs, 3=level_2_hp, 4=level_2_sp, 5=level_2_fs, 6=level_3_hp, 7=level_3_sp, 8=level_3_fs, 9=level_4_hp, 10=level_4_sp, 11=level_4_fs, 12=level_5_hp, 13=level_5_sp, 14=level_5_fs. | -| `0xab5ba` | attack_element_effectiveness_percent | high | investigation | AFINIT-authored element matchup table with thirteen authored defense rows and eighteen authored cells per row inside the reserved 20-by-20 layout. Positive values make an action eligible in SETMVWORK and RTN_M051/052; CALCBTPARAM multiplies battle parameters by the selected percentage and handles negative values as special/immunity cases. INFOAF displays eight attack columns for its selected defense rows. | -| `0xab6fa` | item_tuning_stat_bonus_curves | high | investigation | Eighteen usable equipment-growth curves selected by item_tuning_curve_ids, plus an explicitly zeroed reserved row 19. TUNE and IMPROVE use the nonzero prefix as the available tuning-level range; CALCREVISE and DRAWTIP add the selected zero-based tuning level's bonus to the corresponding stat. Columns: 0=tuning_level_1, 1=tuning_level_2, 2=tuning_level_3, 3=tuning_level_4, 4=tuning_level_5, 5=tuning_level_6, 6=tuning_level_7, 7=tuning_level_8, 8=tuning_level_9, 9=tuning_level_10, 10=reserved. | -| `0xab7d6` | item_tuning_point_cost_curves | high | investigation | Point-cost curves paired by curve id and tuning level with item_tuning_stat_bonus_curves. IMPROVE sums costs for newly selected levels, subtracts refunds for removed levels, checks the resulting total against the tuning-point balance, and deducts it on confirmation. Columns: 0=tuning_level_1, 1=tuning_level_2, 2=tuning_level_3, 3=tuning_level_4, 4=tuning_level_5, 5=tuning_level_6, 6=tuning_level_7, 7=tuning_level_8, 8=tuning_level_9, 9=tuning_level_10, 10=reserved. | -| `0xab8b2` | facility_level_progress_thresholds | high | investigation | AFINIT's three facility-progression rows. IMPROVE uses row 0 for equipment tuning, ALCHEMY uses row 1, and MAGIC/USEMAGIC use row 2; each indexes the row by the current level and caps advancement at level 6. Columns: 0=level_0_to_1, 1=level_1_to_2, 2=level_2_to_3, 3=level_3_to_4, 4=level_4_to_5, 5=level_5_to_6, 6=level_6_cap. | -| `0xab8c7` | class_change_rule_script_ids | high | investigation | CALCCC iterates these 32 cells and call-scripts every positive entry to evaluate class-change providers. CCINIT is the shipped rule program decoded into build/data/CCINIT.json. | -| `0xaba64` | stage_object_runtime_flags | high | investigation | Per-current-stage object flags. RTN_M010 and RTN_M015 require bit 1 before considering Healing Feathers or Magic Pillars as movement targets; FIELD and object rendering maintain the broader type-dependent bitfield. | -| `0xaba96` | pathfinding_remaining_route_steps | high | investigation | MVSEEK's row-major reachability grid. Mode 0 searches from the current entity with movement+1 at the origin; modes 1/2 search from the caller-supplied coordinate with 9999 at the origin. Each traversed edge decrements the value, so a larger positive value is nearer to the origin. RTN_M006/007/015 use origin-minus-target values as route-step radii; RTN_M010 ranks Healing Feathers by the negated value. | -| `0xb240e` | pathfinding_movement_costs | high | investigation | MVSEEK's row-major movement-cost work grid, indexed as [tile_y][tile_x] with stride 27. FIELD and RTN_M providers accept candidate destinations only when this cost is within the acting entity's current FS or a provider-specific override. | -| `0xb8d86` | action_range_distance_grid | high | investigation | ATSEEK's row-major action-range flood-fill grid. It starts from the acting entity, expands through map-valid doubled-coordinate neighbors up to usable_action_max_range, and stores 1 for the first range band, 2 for the next, and so on. RTN_M051/052 select offensive targets from it; RTN_M061 selects in-range healing targets. | -| `0xbf6fe` | pathfinding_filtered_route_scores | high | investigation | SETMVWORK begins by copying pathfinding_remaining_route_steps, then filters occupied entity cells according to faction and the acting entity's usable offensive-action mask/effectiveness. RTN_M providers combine this target-proximity score with a movement-limited MVSEEK grid to select a reachable tile nearest an entity or stage object. | -| `0xc6077` | selected_movement_route_steps | high | investigation | Selected movement-route work grid indexed as [tile_y][tile_x]. MVRTN, FIELD, and SETROUTE clear all 27,000 cells. SETROUTE starts at map_target_tile_x/y, copies pathfinding_remaining_route_steps into the route, and follows the cardinal neighbor whose score is one greater until it reaches the acting entity. FIELD uses the monotone values to draw directional route markers and drive movement; SELACT tests whether an action target follows movement; seventeen RTN_M providers reject candidate endpoints whose route cell is zero. | -| `0xcc9f4` | offensive_action_scope_masks | high | investigation | CALCSCOPE clears ten encoded-range cells, sets bit 0 over the equipped/default attack's range, and sets bits 1..4 over each usable offensive skill's range. SETMVWORK uses the range-0 mask and paired attack elements when filtering target cells; RTN_M003/006/016/017/018 require its normal-attack bit. Columns: 0=range_0, 1=range_1, 2=range_2, 3=range_3, 4=range_4, 5=range_5, 6=range_6, 7=range_7, 8=range_8, 9=range_9. | -| `0xcc9fe` | healing_action_scope_masks | high | investigation | CALCSCOPE clears ten encoded-range cells and sets the equipped-slot bit for each usable category-7 healing skill over its applicable range. RTN_M061 uses the masks to restrict ally targets and to select the range-enabled healing skill. Columns: 0=range_0, 1=range_1, 2=range_2, 3=range_3, 4=range_4, 5=range_5, 6=range_6, 7=range_7, 8=range_8, 9=range_9. | -| `0xcca08` | offensive_action_attack_elements | high | investigation | CALCSCOPE stores the normal attack element in action column 0 and each usable equipped skill's attack element in columns 1..4 for every applicable range band. SETMVWORK and RTN_M051/052 test these elements against attack_element_effectiveness_percent. | -| `0xccbcf` | cardinal_tile_delta_x | high | investigation | INIT2's shared no-move-plus-four-cardinal-neighbor X offsets. SETROUTE uses indices 1..4 while tracing a selected route toward the acting entity; MVSEEK, ATSEEK, FIELD, SALLY, and DRAWMAP use the same neighbor order. | -| `0xccbd4` | cardinal_tile_delta_y | high | investigation | INIT2's Y offsets paired with cardinal_tile_delta_x. Indices 1..4 enumerate positive Y, negative X, negative Y, and positive X neighbors; index zero leaves the coordinate unchanged. | -| `0xccc93` | stage_terrain_atlas | high | investigation | Immutable sparse half-tile terrain atlas loaded by MPINIT. Each footer copy writes fifty cells at row stride 53. FIELD doubles STINIT2's tile bounds and copies the selected rectangle into current_stage_terrain_grid; DRAWMINIMAP reads the atlas outside the active rectangle for border context, and RESETLAND restores changed cells from it. | -| `0xe6aa4` | terrain_texture_slot_indices | high | investigation | LAINIT mapping from terrain id to the index in stage_map_texture_asset_overrides. DRAWMAP uses the selected slot to choose the current stage's tiled terrain surface. | -| `0xe6ac2` | terrain_area_fill_flags | high | investigation | LAINIT terrain topology flag. DRAWMAP and CALCOCC use neighboring values to expand room-like regions across the alternating half-tile grid; DRAWMINIMAP uses the same distinction when joining adjacent revealed cells. | -| `0xe6ae0` | terrain_layout_classes | high | investigation | LAINIT terrain class. Zero cells are rejected by map rendering, occupancy, and pathfinding; ordinary areas, passages, and hidden spaces take distinct DRAWMAP/CALCOCC/MVSEEK paths. Combined with terrain_area_fill_flags, it distinguishes hidden rooms from hidden passages. | -| `0xe6afe` | terrain_combat_stat_deltas | high | investigation | LAINIT terrain-effect matrix. CALCBTPARAM reads the acting unit's doubled-coordinate battle tile and adds columns 0..9 through the same combat-parameter channels used by SKINIT skill deltas. INFOAF displays the first eight columns for its terrain rows, and the five populated terrain_effect_descriptions exactly summarize the shipped nonzero cells. Columns: 0=accuracy, 1=evasion, 2=physical_attack, 3=physical_defense, 4=magic_attack, 5=magic_defense, 6=speed, 7=luck, 8=critical_chance, 9=capture_power. | -| `0xe6c2a` | terrain_required_skill_ids | high | investigation | LAINIT traversal/reveal requirement indexed by terrain id. MVSEEK and FIELD reject ordinary terrain unless the moving unit owns the referenced SKINIT skill; hidden passages/rooms use the exploration skill through the dedicated hidden-terrain path. FIELD and INFOAF resolve populated ids to skill names for display. | -| `0xe6c48` | stage_map_texture_default_asset_ids | high | investigation | Shared fallback map texture for each of twenty stage texture slots. FIELD loads a positive stage_map_texture_asset_overrides value directly, skips zero, and when the stage value is -1 loads this slot's MP000A/B/C/E/H/I/J/K/L/N.AGF default into surface 0x52+slot. | -| `0xe6dee` | object_sprite_state_row_mode | high | investigation | OBINIT metadata indexed by object type. FIELD copies the type-tagged initial payload into stage_object_runtime_state only for mode 1; DRAWOBJ likewise multiplies that runtime state by the object sprite height to select source Y only for mode 1. | -| `0xe7302` | stage_bgm_id | high | investigation | STINIT's per-stage scalar loaded for all 74 records. FIELD passes the value directly to play-bgm when starting the stage. | -| `0xe7303` | stage_target_clear_turns | high | investigation | STINIT's target/par turn count. STAGECLEAR divides elapsed turns by this value to derive a performance multiplier; when replaying an already-cleared ordinary stage, FIELD also uses it as the forced-retreat turn limit. | -| `0xe7304` | stage_clear_performance_bonus | med | investigation | Base stage-clear reward increment. STAGECLEAR multiplies it by the turn-performance percentage derived from stage_target_clear_turns, divides by 100, and adds the result to the capped persistent reward counter at 0x6719. The counter's player-facing resource name remains unresolved. | -| `0xe730b` | stage_replay_rules_disabled | high | investigation | FIELD's already-cleared-stage override gate. For a cleared stage with value 0, FIELD replaces the mission with an all-party retreat objective and a stage_target_clear_turns forced-retreat limit; value 1 suppresses that replay conversion and related revisit handling. | -| `0xe730c` | stage_turn_limit | high | investigation | STINIT's per-stage turn limit. DRAWCHP presents the value in the stage information, while FIELD compares the current turn against it when checking stage completion. | -| `0xe730d` | stage_turn_limit_outcome | high | investigation | STINIT mode paired with stage_turn_limit. Stage 1 stores 0 and describes 50-turn expiry as defeat; stage 2 stores 1 and explicitly describes 15-turn expiry as a forced-retreat clear. | -| `0xe7311` | stage_map_texture_asset_overrides | high | investigation | Twenty current-stage map texture slots. FIELD loads positive resource ids into tiled surface slots 0x52+index, skips zero, and substitutes the shared per-index fallback for -1; DRAWMAP selects and draws those surfaces through the terrain-to-texture-slot map. | -| `0xe7325` | stage_object_tile_x | high | investigation | X coordinate for each current-stage object slot. DRAWOBJ converts it to centered map-space pixels; FIELD and CALCOCC use it with stage_object_tile_y for object interaction and occupancy. | -| `0xe7357` | stage_object_tile_y | high | investigation | Y coordinate for each current-stage object slot. DRAWOBJ converts it to centered map-space pixels; FIELD and CALCOCC use it with stage_object_tile_x for object interaction and occupancy. | -| `0xe7389` | stage_object_type_id | high | investigation | Object-definition id for each current-stage object slot. SETOBJ decides whether the slot exists, while DRAWOBJ and FIELD use the id to select shared object graphics, dimensions, animation, collision, and behavior metadata. | -| `0xe73bb` | stage_object_primary_payload | high | investigation | STINIT's primary per-object payload array. FIELD interprets it by the parallel object type: initial faction for Magic Pillars, teleport destination X, item id, card-generation list id for type 28, non-triggering faction for hazards/barriers, or initial object state for the consumer-proven stateful types. | -| `0xe741f` | stage_object_reinforcement_interval_turns | high | investigation | Per-object reinforcement schedule. FIELD compares the current turn and the object's runtime spawn count against this interval to calculate due weighted enemy spawns; object type 27 uses the same value as its one-shot trigger turn. | -| `0xe7451` | stage_object_reinforcement_spawn_limit | high | investigation | Maximum number of scheduled units materialized through a stage object. FIELD stops the object's reinforcement path once its runtime spawn counter reaches this value; object type 27 stores one for its one-shot special spawn. | -| `0xe7483` | stage_object_difficulty_mask | high | investigation | Per-object difficulty inclusion mask. SETOBJ uses check-bit with difficulty_index and rejects the object slot when the selected difficulty bit is absent. | -| `0xe74b5` | stage_object_required_story_flags | high | investigation | Seven positive prerequisites per stage object. SETOBJ subtracts one from every populated id and suppresses the object unless the corresponding story_event_flags cell equals 1. Columns: 0=required_flag_1, 1=required_flag_2, 2=required_flag_3, 3=required_flag_4, 4=required_flag_5, 5=required_flag_6, 6=required_flag_7. | -| `0xe7613` | stage_object_forbidden_story_flags | high | investigation | Five negative prerequisites per stage object. SETOBJ subtracts one from every populated id and suppresses the object when the corresponding story_event_flags cell equals 1. Columns: 0=forbidden_flag_1, 1=forbidden_flag_2, 2=forbidden_flag_3, 3=forbidden_flag_4, 4=forbidden_flag_5. | -| `0xe773f` | stage_enemy_spawn_tile_x | high | investigation | Direct X coordinate for a current-stage enemy slot. FIELD copies it into the runtime unit position when stage_enemy_spawn_object_slot is zero; object-linked alternatives instead inherit the referenced object's coordinates. | -| `0xe775d` | stage_enemy_spawn_tile_y | high | investigation | Direct Y coordinate paired with stage_enemy_spawn_tile_x. FIELD and ADDEN copy the pair into the runtime unit position; object-linked alternatives instead inherit the referenced object's coordinates. | -| `0xe777b` | stage_enemy_spawn_object_slot | high | investigation | Optional object-placement anchor for an enemy spawn. FIELD resolves nonzero entries through stage_object_type_id and uses the matching stage_object_tile_x/Y location; zero selects stage_enemy_spawn_tile_x/Y directly. | -| `0xe7799` | stage_enemy_faction_id | high | investigation | Per-spawn faction/team selector. FIELD and ADDEN copy it into the runtime unit's faction field, use it to choose the entity-index band, and test the same value against map occupancy masks. | -| `0xe77b7` | stage_enemy_difficulty_mask | high | investigation | Per-spawn difficulty inclusion mask. FIELD uses check-bit with difficulty_index and rejects a slot when the selected difficulty bit is absent. | -| `0xe77d5` | stage_enemy_first_clear_only | high | investigation | Per-spawn replay gate. FIELD rejects a populated enemy slot when this value is 2 and stage_clear_state for the current stage is 1; zero/default slots remain eligible on cleared-stage replays. | -| `0xe77f3` | stage_enemy_random_selection_weight | high | investigation | Weight for stage-enemy alternatives. FIELD groups eligible nonzero-weight slots by their stage_enemy_spawn_object_slot, sums the weights, makes a weighted random choice within each eligible group, and directly materializes zero-weight slots. | -| `0xe7811` | stage_enemy_unit_id | high | investigation | Unit-definition id for each current-stage enemy slot. FIELD rejects zero slots, while FIELD and ADDEN pass populated ids to SETEN to copy the corresponding EBINIT definition into a runtime entity. | -| `0xe782f` | stage_enemy_min_level | high | investigation | Scenario-specific minimum level for each stage enemy. After applying party-level auto-scaling, SETEN raises the runtime level to this floor before applying the maximum-level clamp. | -| `0xe784d` | stage_enemy_max_level | high | investigation | Scenario-specific maximum level for each stage enemy. SETEN uses a positive value as the upper clamp unless the debug/config override is active; otherwise it falls back to the unit definition's unit_level_cap. | -| `0xe786b` | stage_enemy_auto_level_scale_divisor | high | investigation | Scenario override for enemy auto-level scaling. SETEN divides the positive gap between the scenario base level and unit_starting_level by this value before adding it to the runtime level; zero would fall back to unit_auto_level_scale_divisor. | -| `0xe7889` | stage_enemy_movement_routine_set_ids | high | investigation | Three difficulty-specific movement-AI routine-set ids per stage enemy. SETEN copies the row into the runtime unit, and MVRTN selects the difficulty_index column as its movement routine table row. Columns: 0=difficulty_0, 1=difficulty_1, 2=difficulty_2. | -| `0xe78e3` | stage_enemy_battle_routine_set_ids | high | investigation | Optional three-column battle-AI routine override per stage enemy. SETEN copies a populated row into the runtime unit or falls back to the unit definition, and BTRTN selects the difficulty_index column as its battle routine table row. Columns: 0=difficulty_0, 1=difficulty_1, 2=difficulty_2. | -| `0xe793d` | stage_enemy_required_story_flags | high | investigation | Seven positive prerequisites per stage enemy. FIELD subtracts one from every populated id and suppresses the spawn unless the corresponding story_event_flags cell equals 1. Columns: 0=required_flag_1, 1=required_flag_2, 2=required_flag_3, 3=required_flag_4, 4=required_flag_5, 5=required_flag_6, 6=required_flag_7. | -| `0xe7a0f` | stage_enemy_forbidden_story_flags | high | investigation | Five negative prerequisites per stage enemy. FIELD subtracts one from every populated id and suppresses the spawn when the corresponding story_event_flags cell equals 1. Columns: 0=forbidden_flag_1, 1=forbidden_flag_2, 2=forbidden_flag_3, 3=forbidden_flag_4, 4=forbidden_flag_5. | -| `0xe7e8d` | stage_unlock_group_ids | high | investigation | FIELD propagates an unlocked current stage to every other stage whose nonzero group id matches. The shipped groups bind route variants 32..34, 35..36, 71..72, and 82..83. | -| `0xe8275` | stage_main_progression_flags | high | investigation | When returning after a clear, FORT scans uncleared stage ids in descending order and auto-selects the first available row marked one. Side missions and all eight EX dungeons leave the flag zero. | -| `0xe865d` | stage_forbidden_story_flag_ids | high | investigation | FORT and SELSTAGE reject a stage when any populated cell resolves to story flag value one. The scripts subtract one before indexing story_event_flags, establishing the stored one-based id convention. Columns: 0=forbidden_flag_1, 1=forbidden_flag_2, 2=forbidden_flag_3, 3=forbidden_flag_4, 4=forbidden_flag_5, 5=forbidden_flag_6, 6=forbidden_flag_7. | -| `0xea1b5` | stage_required_story_flag_ids | high | investigation | FORT and SELSTAGE require every populated cell to resolve to story flag value one. Every shipped stage carries at least one gate, including common progression flags in columns two and three. Columns: 0=required_flag_1, 1=required_flag_2, 2=required_flag_3, 3=required_flag_4, 4=required_flag_5, 5=required_flag_6, 6=required_flag_7. | -| `0xebd0d` | stage_display_number_major | high | investigation | FORT, SELSTAGE, AIM, STAGECLEAR, and management screens render this as the major half of the stage number. A negative value renders EX, while both number components zero identify an event-only row. | -| `0xec0f5` | stage_display_number_minor | high | investigation | Rendered after stage_display_number_major as the minor stage number. FORT treats a row with both components zero as a direct event and dispatches its entry SCJUMP decision without entering FIELD. | -| `0xec4dd` | stage_map_min_tile_x | high | investigation | STINIT2's inclusive left map bound indexed by stage id. FIELD, DRAWMAP, DRAWMINIMAP, CALCOCC, and movement providers use it with stage_map_max_tile_x; terrain-grid accesses multiply the coordinate by two. | -| `0xec8c5` | stage_map_max_tile_x | high | investigation | STINIT2's inclusive right map bound indexed by stage id. Consumers pair it with stage_map_min_tile_x for iteration, camera/minimap limits, random placement, and the doubled-coordinate terrain-atlas copy. | -| `0xeccad` | stage_map_min_tile_y | high | investigation | STINIT2's inclusive top map bound indexed by stage id. FIELD and all map readers pair it with stage_map_max_tile_y and multiply it by two when addressing the half-tile terrain grid. | -| `0xed095` | stage_map_max_tile_y | high | investigation | STINIT2's inclusive bottom map bound indexed by stage id. The maximum shipped value 800 explains MPINIT's final authored doubled grid row at Y 1600. | -| `0xed47d` | stage_minimap_atlas_origin_y | high | investigation | FIELD and SELSTAGE copy this to the minimap drawing origin. SELSTAGE subtracts it from stage_map_min_tile_y to crop the selected stage's vertically packed minimap strip and labels the following 150 atlas rows. | -| `0xed865` | stage_clear_base_spendable_point_rewards | high | investigation | STAGECLEAR multiplies this base award by the turn/party-performance percentage, divides by 100, adds any card bonus, and credits the capped shared_spendable_points balance. | -| `0xedc4d` | stage_authoring_difficulty_tiers | med | inference | Authoring-only stage challenge/progression tier. No shipped script reads the array and the native engine can only reach VM globals through script operands, so it has no runtime effect. The ordinal correlates strongly with base clear points and encounter progression: late story maps are tier 6, EX maps use tiers 5 and 7, and the final EX map alone is tier 8. The descriptive name is correlation-based. | -| `0xee035` | stage_scjump_decision_ids | high | investigation | FORT dispatches column zero before entering a stage or for an event-only row. FIELD and a few scene return paths dispatch column one after clear and column two after failure or forced-retreat outcomes; all 174 populated references resolve through SCINIT. Columns: 0=entry, 1=clear, 2=failure. | -| `0xeebed` | stage_extra_dungeon_flags | high | investigation | Marks the eight shipped EX dungeons. FORT, SELSTAGE, and management screens combine it with stage_clear_state when deciding whether to show and apply the stage's post-clear coin rewards. | -| `0xeefd5` | stage_clear_coin_quantities | high | investigation | FORT and SELSTAGE render the three clear-reward quantities beside coin icons. Management screens grant the same values as item ids 91..93 after a cleared or EX-marked stage. Columns: 0=bronze_coin_item_91, 1=silver_coin_item_92, 2=gold_coin_item_93. | -| `0xefb8d` | stage_loader_script_ids | high | investigation | FIELD indirectly calls the selected STINIT2 row before initializing the map. Every shipped stage points to the shared STINIT selector program, which then populates stage-specific objects, enemies, rules, textures, and audio. | -| `0xeff78` | movement_routine_provider_selectors | high | investigation | RTINIT movement bank 0. MVRTN indexes it by current_routine_set_id and routine_step_index, resolves the selector through its RTN_M001..018/051..053/061 provider table, and call-scripts the selected movement routine. | -| `0xf4d98` | movement_routine_activation_percents | high | investigation | RTINIT movement bank 1. After all other step gates pass, MVRTN executes the provider only when random-modulo-100 is below this value. | -| `0xf9bb8` | movement_routine_parameter_1 | high | investigation | RTINIT movement bank 2. Its meaning is tagged by movement_routine_provider_selectors: RTN_M004 uses a stage_object_slot_index; RTN_M005/011/012 use destination_tile_x; RTN_M006/007/015 use maximum_target_route_steps; RTN_M010 uses resource_index (0=HP, 1=SP, 2=FS; shipped cells are unwritten/default zero); RTN_M013 uses target_faction_filter; and RTN_M014 uses maximum_threat_route_steps. The one RTN_M001 and one RTN_M008 authored cells are never read by those providers. | -| `0xfe9d8` | movement_routine_parameter_2 | high | investigation | RTINIT movement bank 3. Its meaning is tagged by movement_routine_provider_selectors: RTN_M005/011/012 use destination_tile_y, RTN_M007 uses maximum_target_hp_percent, and RTN_M010 uses maximum_resource_percent. The lone RTN_M001-authored value is never read by that provider. | -| `0x1037f8` | movement_routine_parameter_3 | high | investigation | RTINIT movement bank 4. RTN_M011 uses it as a one-based waypoint_ordinal, executing only the step whose ordinal matches the entity's current zero-based waypoint index. | -| `0x108618` | movement_routine_parameter_4 | high | investigation | RTINIT movement bank 5. RTN_M011 uses a nonzero value as path_cost_limit_override; zero or an unwritten cell falls back to the entity's current FS. | -| `0x112258` | movement_routine_minimum_progress_counts | high | investigation | RTINIT movement bank 7. MVRTN requires the current entity's matching movement-step progress counter to reach this value; movement providers increment those counters as their steps execute. | -| `0x117078` | movement_routine_required_story_flag_ids | high | investigation | RTINIT movement bank 8. MVRTN subtracts one and rejects the step when the referenced story flag is not set. | -| `0x11be98` | movement_routine_forbidden_story_flag_ids | high | investigation | RTINIT movement bank 9. MVRTN subtracts one and rejects the step when the referenced story flag is set. | -| `0x120cb8` | battle_routine_provider_selectors | high | investigation | RTINIT battle bank 10. BTRTN indexes it by current_routine_set_id and routine_step_index, resolves the selector through RTN_B001..004, and call-scripts the selected battle routine. | -| `0x125ad8` | battle_routine_activation_percents | high | investigation | RTINIT battle bank 11. BTRTN executes a candidate step only when the current entity's matching random-modulo-100 battle-step roll is below this value. | -| `0x12a8f8` | battle_routine_parameter_1 | high | investigation | RTINIT battle bank 12. RTN_B004 uses it to choose an entry from the prepared battle-action candidate table. | -| `0x147db8` | battle_routine_required_story_flag_ids | high | investigation | RTINIT battle bank 18. BTRTN subtracts one and rejects the step when the referenced story flag is not set. | -| `0x14cbd8` | battle_routine_forbidden_story_flag_ids | high | investigation | RTINIT battle bank 19. BTRTN subtracts one and rejects the step when the referenced story flag is set. | -| `0x1519f9` | card_definition_type_ids | high | investigation | CDINIT2 behavior class by card id. FIELD applies the common populated effect arrays, uses type 6 for the random valid-tile warp path, and uses type 1 to dispatch the card's event after showing its result. | -| `0x151a5d` | card_definition_required_story_flag_ids | high | investigation | CDINIT2 card eligibility rows. FIELD checks only columns 0 and 1 before admitting a card to weighted selection. CDINIT2 nevertheless authors column 2 for eighteen cards; those third requirements are engine-dead in the shipped FIELD loop and are retained separately by the extractor. Columns: 0=required_flag_1, 1=required_flag_2, 2=engine_dead_required_flag_3. | -| `0x151b89` | card_definition_forbidden_story_flag_ids | high | investigation | CDINIT2 card exclusion rows. FIELD checks columns 0 and 1 and rejects a card when either populated flag is set; the shipped definitions populate only column 0. Columns: 0=forbidden_flag_1, 1=forbidden_flag_2, 2=reserved_forbidden_flag_3. | -| `0x151cb5` | card_definition_awarded_item_ids | high | investigation | Optional item granted by FIELD through ADDITEM after card selection. All 24 populated ids resolve through ITINIT. | -| `0x151d19` | card_definition_event_story_flag_ids | high | investigation | Event dispatched for type-1 cards after FIELD displays the card result. All 40 populated ids resolve through SCINIT. | -| `0x151d7d` | card_definition_stage_clear_point_bonuses | high | investigation | Type-3 card reward accumulated into stage_card_spendable_point_bonus. STAGECLEAR adds it to the normal performance-adjusted award before updating shared_spendable_points; shipped small/medium/large values are 5, 10, and 15. | -| `0x151de1` | card_definition_minimum_resource_recovery | high | investigation | Lower bounds for type-4 HP/SP/FS card recovery. FIELD starts each resource delta at this value and, when the paired upper bound is larger, adds a random value below their difference. Columns: 0=hp, 1=sp, 2=fs. | -| `0x151f0d` | card_definition_maximum_resource_recovery | high | investigation | Upper bounds paired with card_definition_minimum_resource_recovery. Equal bounds produce the fixed minimum; larger bounds produce a uniformly selected value from minimum through upper-bound-minus-one. Columns: 0=hp, 1=sp, 2=fs. | -| `0x152039` | card_definition_minimum_spirit_recovery | high | investigation | Lower bound for type-4 familiar-spirit recovery. FIELD selects the value with the same minimum/exclusive-upper algorithm as HP/SP/FS and clamps current_spirit to maximum_spirit. | -| `0x15209d` | card_definition_maximum_spirit_recovery | high | investigation | Upper bound paired with card_definition_minimum_spirit_recovery. Equal bounds produce the fixed minimum; larger bounds exclude this upper value. | -| `0x152101` | card_definition_minimum_resource_damage | high | investigation | Lower bounds for type-5 trap damage. FIELD subtracts these randomized HP/SP/FS amounts from the active entity through the same resource-delta path used for recovery. Columns: 0=hp, 1=sp, 2=fs. | -| `0x15222d` | card_definition_maximum_resource_damage | high | investigation | Upper bounds paired with card_definition_minimum_resource_damage. Equal bounds produce fixed damage; larger bounds exclude this upper value. Columns: 0=hp, 1=sp, 2=fs. | -| `0x152359` | card_definition_condition_ids | high | investigation | Condition applied by type-5 trap cards through ADDILL. The three populated rows resolve to paralysis, poison, and water_flow. | -| `0x1523bd` | card_definition_condition_levels | high | investigation | Condition level paired with card_definition_condition_ids and passed to ADDILL. All three shipped condition traps use level 1. | -| `0x152421` | card_definition_visual_asset_ids | high | investigation | Card-result visual selected by FIELD before applying and presenting the effect. All 81 authored rows resolve to MVS*.AGF assets, with related card families sharing artwork. | -| `0x152486` | card_generation_weight_schedules | high | investigation | CDINIT's selector-specific candidate weights, parallel to card_generation_card_ids. FIELD computes base_weight + floor(current_stage_turn / growth_interval_turns) * growth_weight, with a zero interval selecting the fixed base path. The shipped lists populate 11..75 one-based slots. Columns: 0=base_weight, 1=growth_interval_turns, 2=growth_weight. | -| `0x1525b2` | card_generation_card_ids | high | investigation | Card ids parallel to card_generation_weight_schedules. FIELD scans slots 0..99, filters each nonzero id through the CDINIT2 story-flag rows, and performs cumulative weighted random selection. CDINIT clears only the first 50 slots even though its largest authored list reaches slot 75. | -| `0x15261f` | battle_triggered_passive_skill_flags | high | investigation | Per-exchange passive-skill activation matrix. CALCDMG clears both 300-cell side rows, considers the four equipped skills on each battle entity, retains category-4 passives allowed for that actor/target role, rolls skill_proc_chance_percent, and applies species, boss, movement-skill, action-category, and mutual-exclusion filters. BTL consumes the surviving flags to draw triggered-passive icons, play each passive's battle animation, and execute Roar, Counter, Reflect, Absorb, Pierce, Shield, Parry, and Revive behavior. | -| `0x152877` | battle_entity_indices | high | investigation | The two runtime entity rows participating in BTL. battle_actor_side_index and battle_target_side_index select these cells before BTL and CALCDMG access HP, unit definitions, skills, animation state, and voice banks. Columns: 0=side_0, 1=side_1. | -| `0x152879` | battle_selected_skill_ids | high | investigation | Selected skill for each battle side. BTL displays a positive entry through the skill-name table and selects skill-use voice columns; CALCDMG uses the same id for skill parameters. A zero entry follows the equipped/default ordinary-attack path. Columns: 0=side_0, 1=side_1. | -| `0x152883` | battle_critical_chance_percent | high | investigation | Final per-side critical chance for the current exchange. CALCBTPARAM starts with the side's effective critical-chance stat plus its effective luck minus the opposing side's effective luck, applies selected-skill and applicable target-tile terrain critical/luck deltas through the same channels, and clamps the result to 0..100. Equipment has already entered through entity_effective_stats: CT affects only its owner's outgoing critical chance, whereas luck both raises outgoing chance and lowers the opponent's. After a successful hit, CALCDMG rolls random-modulo-100 against this value; success sets battle_hit_result to 2 and doubles the signed HP delta. Columns: 0=side_0, 1=side_1. | -| `0x15288e` | battle_animation_effect_ids | high | investigation | BTANINIT2's sparse battle-animation composition table. BTANINIT expands the selected row into six runtime effect work slots. BTL anchors requested effects in slots 0 and 1 to the actor and slots 2 through 5 to the target; shipped data never populates slot 4. Columns: 0=effect_slot_0, 1=effect_slot_1, 2=effect_slot_2, 3=effect_slot_3, 4=reserved_effect_slot_4, 5=effect_slot_5. | -| `0x153ffe` | battle_animation_effect_start_delays_ms | high | investigation | Per-effect start delays paired with battle_animation_effect_ids. BTL passes each populated value to movie/sprite animation setup and adds it to the effect-local sound and hit-pulse offsets. Shipped data authors delays only for slots 2, 3, and 5. Columns: 0=effect_slot_0, 1=effect_slot_1, 2=effect_slot_2, 3=effect_slot_3, 4=reserved_effect_slot_4, 5=effect_slot_5. | -| `0x15576e` | battle_animation_duration_ms | high | investigation | Overall timing boundary for one BTANINIT2 animation row. BTL uses it to schedule delayed battle voice and to begin the 500 ms HP interpolation after the main animation. The passive/defeat auxiliary rows 801..809 intentionally omit it. | -| `0x155b56` | battle_effect_visual_asset_ids | high | investigation | BTANINIT clears and materializes the selected animation's six visual resources. BTL opens mode-0 values as nonblocking MPEG-in-AGF movies and mode-1/2 values as sprite sheets. All 202 effect definitions resolve through SYS4INI. | -| `0x155b5c` | battle_effect_visual_mode_ids | high | investigation | BTANINIT visual playback mode per materialized effect slot. BTL routes zero through play-movie-to-surface, mode 1 through set-texture with green color key 0x00ff00, and mode 2 through set-texture with no color key. | -| `0x155b62` | battle_effect_additive_blend_flags | high | investigation | When nonzero, BTL applies gfx-draw-color mode 1 (SRCALPHA/ONE additive glow) to the materialized battle-effect surface. The flag is populated on all 186 movie effects and the sole green-colorkey sprite-sheet effect. | -| `0x155b68` | battle_effect_widths | high | investigation | Width of the destination surface BTL creates for each materialized battle effect. It also participates in centering the surface before applying battle_effect_offset_x_pixels. | -| `0x155b6e` | battle_effect_heights | high | investigation | Height of the destination surface BTL creates for each materialized battle effect. It also participates in centering the surface before applying battle_effect_offset_y_pixels. | -| `0x155b74` | battle_effect_atlas_column_counts | high | investigation | Sprite-sheet column count passed by BTL to animate-gfx-srcrect-target. The sixteen sprite-sheet definitions pair it with battle_effect_atlas_frame_counts and a finite duration. | -| `0x155b7a` | battle_effect_atlas_row_counts | high | investigation | Authored sprite-sheet row count. It agrees with ceil(frame_count / column_count) for all sixteen sprite effects, but BTL never reads this array and instead passes the already-authored frame count and column count to animate-gfx-srcrect-target. | -| `0x155b80` | battle_effect_atlas_frame_counts | high | investigation | Total sprite-sheet frame count passed by BTL to animate-gfx-srcrect-target. Shipped values equal atlas columns times authored rows. | -| `0x155b86` | battle_effect_durations_ms | high | investigation | Per-effect playback duration. BTANINIT authors it for sixteen sprite-sheet effects; for movie effects BTL overwrites the slot with query-surface-stop-time-ms. BTL uses start delay plus this duration when extending the animation timeline. | -| `0x155b8c` | battle_effect_combatant_anchor_flags | high | investigation | When nonzero, BTL anchors effect slots 0 and 1 to the actor-side combatant and slots 2 through 5 to the target-side combatant. Zero uses the battlefield center. | -| `0x155b92` | battle_effect_offset_x_pixels | high | investigation | Horizontal offset added after BTL centers the effect surface on its selected combatant or the battlefield. | -| `0x155b98` | battle_effect_offset_y_pixels | high | investigation | Vertical offset added after BTL centers the effect surface on its selected combatant or the battlefield. | -| `0x155b9e` | battle_effect_sound_asset_ids | high | investigation | Optional WAV loaded by BTL for a materialized effect slot. BTL schedules playback at the animation row's effect start delay plus battle_effect_sound_delays_ms. All 199 populated ids resolve through SYS4INI. | -| `0x155ba4` | battle_effect_sound_delays_ms | high | investigation | Effect-local sound delay added to battle_animation_effect_start_delays_ms before BTL schedules the loaded WAV channel. | -| `0x155baa` | battle_effect_hit_pulse_offsets_ms | high | investigation | Up to three BTL hit-feedback pulse offsets per materialized effect slot. BTL adds the animation row's effect start delay, fires each pulse within a 100 ms window, and tracks it once per slot/column. Shipped BTANINIT populates only pulse_1, at 100 ms, on 26 effects. Columns: 0=pulse_1, 1=pulse_2, 2=pulse_3. | -| `0x155bbc` | training_action_required_story_flag_ids | high | investigation | Up to three prerequisite story flags per TRINIT action. TRAIN subtracts one before indexing story_event_flags and rejects the action unless every populated flag equals one. Columns: 0=required_story_flag_id_1, 1=required_story_flag_id_2, 2=required_story_flag_id_3. | -| `0x155bfb` | training_action_forbidden_story_flag_ids | high | investigation | Reserved three-slot exclusion table paired with training_action_required_story_flag_ids. TRAIN rejects an action when any populated flag equals one; shipped TRINIT leaves all 63 cells zero. Columns: 0=forbidden_story_flag_id_1, 1=forbidden_story_flag_id_2, 2=forbidden_story_flag_id_3. | -| `0x155c3a` | training_action_minimum_unit_levels | high | investigation | Minimum familiar level for each TRINIT action. TRAIN compares the selected unit's level and rejects values below the populated threshold. | -| `0x155c4f` | training_action_maximum_unit_levels | high | investigation | Maximum familiar level for each TRINIT action. TRAIN rejects levels above a populated threshold; shipped TRINIT leaves this reserved family empty. | -| `0x155c64` | training_action_minimum_alignment_thresholds_encoded | high | investigation | Encoded lower alignment/personality gates. TRAIN subtracts 100 from a populated value and requires familiar_alignment to be at least that signed threshold; the five shipped gates correspond to the locked hints' kind-personality requirements. | -| `0x155c79` | training_action_maximum_alignment_thresholds_encoded | high | investigation | Encoded upper alignment/personality gates. TRAIN subtracts 100 and requires familiar_alignment not to exceed the signed threshold; the five shipped gates correspond to evil-personality requirements. | -| `0x155c8e` | training_action_minimum_progress | high | investigation | Minimum familiar_training_progress required by each TRINIT action. TRAIN rejects the action when the current value is below a populated threshold. | -| `0x155ca3` | training_action_maximum_progress | high | investigation | Upper training-progress gate paired with training_action_minimum_progress. TRAIN enforces populated values; shipped TRINIT leaves all 21 cells zero. | -| `0x155cb8` | training_action_minimum_unit_stats | high | investigation | Ten-column minimum-stat gate using the first ten unit-stat ABI columns. TRAIN compares each populated cell with the selected familiar's current stat; shipped TRINIT leaves the table empty. Columns: 0=accuracy, 1=evasion, 2=physical_attack, 3=physical_defense, 4=magic_attack, 5=magic_defense, 6=speed, 7=luck, 8=critical_chance, 9=capture_power. | -| `0x155d8a` | training_action_maximum_unit_stats | high | investigation | Ten-column maximum-stat gate paired with training_action_minimum_unit_stats. TRAIN enforces populated cells; shipped TRINIT leaves the table empty. Columns: 0=accuracy, 1=evasion, 2=physical_attack, 3=physical_defense, 4=magic_attack, 5=magic_defense, 6=speed, 7=luck, 8=critical_chance, 9=capture_power. | -| `0x155e5c` | training_action_required_item_ids | high | investigation | Optional item prerequisite for each TRINIT action. TRAIN requires a nonzero inventory count and displays the joined item name; the item is a gate, not consumed by this path. | -| `0x155e71` | training_action_required_skill_ids | high | investigation | Optional acquired-skill prerequisite. TRAIN requires the corresponding skill_acquired_flags cell; shipped TRINIT leaves all 21 cells zero. | -| `0x155e86` | training_action_spirit_deltas | high | investigation | Signed current_spirit delta for each TRINIT action. TRAIN rejects an action whose post-delta spirit would be negative, displays the negated value as its cost, and applies the delta before scene dispatch. | -| `0x155e9b` | training_action_unit_stat_deltas | high | investigation | Fourteen-column familiar stat effects for each TRINIT action. TRAIN adds populated values through the unit stat-growth ABI, carries fractional growth, applies caps, and invokes SHOWGROW when any stat changes. Columns: 0=accuracy, 1=evasion, 2=physical_attack, 3=physical_defense, 4=magic_attack, 5=magic_defense, 6=speed, 7=luck, 8=critical_chance, 9=capture_power, 10=movement, 11=max_hp, 12=max_sp, 13=max_fs. | -| `0x155fc1` | training_action_alignment_deltas_hundredths | high | investigation | Alignment/personality change for each TRINIT action in hundredths. TRAIN combines it with familiar_alignment_fraction, applies the integral and stochastic fractional change to familiar_alignment, and clamps the result to -99..99. | -| `0x155fd6` | training_action_progress_deltas_hundredths | high | investigation | Training-progress gain for each TRINIT action in hundredths. TRAIN combines it with familiar_training_progress_fraction, advances familiar_training_progress with fractional probability, and clamps the result to 99. | -| `0x155feb` | training_action_awarded_skill_ids | high | investigation | Optional skill granted by a TRINIT action. TRAIN checks whether it is new, marks the reward path, and passes the id to ADDSKILL; the extractor joins all eight populated ids to SKINIT names. | -| `0x156000` | training_action_awarded_item_ids | high | investigation | Optional item granted by a TRINIT action. TRAIN suppresses already-owned key/story rewards, displays the joined item name, and calls ADDITEM for the three populated shipped actions. | -| `0x156015` | training_action_event_story_flag_ids | high | investigation | Per-action event sequence selected by the prior execution count. TRAIN copies the chosen id to scjump_decision_out and dispatches it through SCINIT; GAMESTART marks every slot below a restored count in story_event_flags. Repeated ids intentionally reuse a scene, and the first zero defines the execution cap. Columns: 0=execution_1, 1=execution_2, 2=execution_3, 3=execution_4, 4=execution_5, 5=execution_6, 6=execution_7, 7=execution_8, 8=execution_9, 9=execution_10. | -| `0x1561f6` | magic_action_information_handler_script_ids | high | investigation | MAINIT handler column indexed by current_magic_action_id. MAGIC and STUDY call the selected packed script id; every shipped action routes to MAMES, whose text dispatcher has authored descriptions for ids 1..9 only. | -| `0x156214` | alchemy_recipe_output_item_ids | high | investigation | Output item id indexed by sparse alchemy recipe id. ALCHEMY scans recipe ids 0..999, treats a nonzero cell as a populated recipe, and adds one copy of this item after a successful synthesis. | -| `0x1565fc` | alchemy_recipe_minimum_levels | high | investigation | Minimum alchemy level indexed by recipe id. ALCHEMY exposes a populated recipe only when this value is less than or equal to alchemy_level. | -| `0x1569e4` | alchemy_recipe_required_story_flags | high | investigation | Two positive story prerequisites per recipe. ALCHEMY subtracts one from every populated id and hides the recipe unless the corresponding story_event_flags cell equals 1; shipped ALINIT data populates only the first column. Columns: 0=required_flag_1, 1=required_flag_2. | -| `0x1571b4` | alchemy_recipe_forbidden_story_flags | high | investigation | Two negative story prerequisites per recipe. ALCHEMY subtracts one from every populated id and hides the recipe when the corresponding story_event_flags cell equals 1; shipped ALINIT data populates only the first column. Columns: 0=forbidden_flag_1, 1=forbidden_flag_2. | -| `0x157d6c` | alchemy_recipe_point_costs | high | investigation | Spendable point cost indexed by recipe id. ALCHEMY checks recipe availability against its point-capacity condition, then requires and deducts this value from shared_spendable_points on synthesis. | -| `0x158154` | alchemy_recipe_ingredient_item_ids | high | investigation | Up to four ingredient item ids per recipe. ALCHEMY checks total inventory for each populated slot and removes the paired alchemy_recipe_ingredient_quantities amount during synthesis. Columns: 0=ingredient_1, 1=ingredient_2, 2=ingredient_3, 3=ingredient_4. | -| `0x1590f4` | alchemy_recipe_ingredient_quantities | high | investigation | Required ingredient quantities paired cell-for-cell with alchemy_recipe_ingredient_item_ids. ALCHEMY requires and consumes this many copies of each populated ingredient. Columns: 0=ingredient_1, 1=ingredient_2, 2=ingredient_3, 3=ingredient_4. | -| `0x15a097` | information_message_handler_script_ids | high | investigation | INFOMES's 32-row, four-column handler registry. INIT2 populates row zero with CIMES (0x334a), EIMES (0x334b), and VIMES (0x334c); INFOMES scans rows in order for the current tab, calls nonzero handlers, and stops after information_message_handled is set. Columns: 0=character_handler, 1=enemy_handler, 2=glossary_handler, 3=reserved_handler. | -| `0x15a118` | character_profile_unit_ids | high | investigation | CIINIT's profile-to-unit join. INFOCH uses the selected unit id for reveal state, map sprite, short unit descriptions, species, and sex while CIMES remains keyed by the enclosing profile id. | -| `0x15a17c` | character_profile_portrait_asset_ids | high | investigation | Optional CIINIT portrait resource indexed by character profile id. INFOCH draws it when nonzero and otherwise falls back to the backing unit's map-sprite asset. | -| `0x15a1e0` | character_profile_portrait_x_offsets | high | investigation | INFOCH adds the selected cell to the centered portrait x coordinate. The 100-cell spacing to the adjacent CIINIT arrays and the direct indexed reader establish the reserved per-profile placement column. | -| `0x15a244` | character_profile_portrait_y_offsets | high | investigation | INFOCH adds the selected cell to the bottom-aligned portrait y coordinate. The 100-cell spacing to the adjacent CIINIT arrays and the direct indexed reader establish the reserved per-profile placement column. | -| `0x15a2a9` | glossary_topic_unlock_seen_decision_ids | high | investigation | VIINIT's three unlock prerequisites per glossary topic. INFOVO subtracts one from each positive value and exposes the topic when any referenced scene_decision_seen_flags cell is set; debug modes expose the same populated topics unconditionally. Columns: 0=unlock_seen_decision_1, 1=unlock_seen_decision_2, 2=unlock_seen_decision_3. | -| `0x2e2` | — | low | auto-shape | array | -| `0x69e` | — | low | auto-shape | array | -| `0x6fe` | — | low | auto-shape | array | -| `0x712` | — | low | auto-shape | array | -| `0x3276` | — | low | auto-shape | array | -| `0x328a` | — | low | auto-shape | array | -| `0x32b2` | — | low | auto-shape | array | -| `0x32c6` | — | low | auto-shape | array | -| `0x32da` | — | low | auto-shape | array | -| `0x3306` | — | low | auto-shape | array | -| `0x36ee` | — | low | auto-shape | array | -| `0x3ad6` | — | low | auto-shape | array | -| `0x6804` | — | low | auto-shape | array | -| `0x6868` | — | low | auto-shape | array | -| `0x7a6c` | — | low | auto-shape | array | -| `0x204fb` | — | low | auto-shape | array | -| `0x2052f` | — | low | auto-shape | array | -| `0x20533` | — | low | auto-shape | array | -| `0x20537` | — | low | auto-shape | array | -| `0x2053b` | — | low | auto-shape | array | -| `0x2053f` | — | low | auto-shape | array | -| `0x4dfef` | — | low | auto-shape | array | -| `0x521f3` | — | low | auto-shape | array | -| `0x52225` | — | low | auto-shape | array | -| `0x52257` | — | low | auto-shape | array | -| `0x522bb` | — | low | auto-shape | array | -| `0x55e3b` | — | low | auto-shape | array | -| `0x56b52` | — | low | auto-shape | array | -| `0x56f6d` | — | low | auto-shape | array | -| `0x577a3` | — | low | auto-shape | array | -| `0x5f0bb` | — | low | auto-shape | array | -| `0x617fe` | — | low | auto-shape | array | -| `0x61be6` | — | low | auto-shape | array | -| `0x61c4a` | — | low | auto-shape | array | -| `0x62032` | — | low | auto-shape | array | -| `0x6243a` | — | low | auto-shape | array | -| `0x6243c` | — | low | auto-shape | array | -| `0x62469` | — | low | auto-shape | array | -| `0x6247d` | — | low | auto-shape | array | -| `0x624a3` | — | low | auto-shape | array | -| `0x653e1` | — | low | auto-shape | array | -| `0x65bb1` | — | low | auto-shape | array | -| `0x6642d` | — | low | auto-shape | array | -| `0x66442` | — | low | auto-shape | array | -| `0x6650a` | — | low | auto-shape | array | -| `0x665d8` | — | low | auto-shape | array | -| `0x8fb41` | — | low | auto-shape | array | -| `0xa5eb9` | — | low | auto-shape | array | -| `0xaba3b` | — | low | auto-shape | array | -| `0xaba43` | — | low | auto-shape | array | -| `0xaba4b` | — | low | auto-shape | array | -| `0xaba53` | — | low | auto-shape | array | -| `0xaba5f` | — | low | auto-shape | array | -| `0xcca3a` | — | low | auto-shape | array | -| `0xccb66` | — | low | auto-shape | array | -| `0xccbd9` | — | low | auto-shape | array | -| `0xccbf8` | — | low | auto-shape | array | -| `0xccc11` | — | low | auto-shape | array | -| `0xccc2f` | — | low | auto-shape | array | -| `0xe7305` | — | low | auto-shape | array | -| `0xe730e` | — | low | auto-shape | array | -| `0xe73ed` | — | low | auto-shape | array | -| `0xe770d` | — | low | auto-shape | array | -| `0x15287b` | — | low | auto-shape | array | -| `0x15287d` | — | low | auto-shape | array | -| `0x15287f` | — | low | auto-shape | array | -| `0x152881` | — | low | auto-shape | array | -| `0x152885` | — | low | auto-shape | array | -| `0x152887` | — | low | auto-shape | array | -| `0x152889` | — | low | auto-shape | array | -| `0x15619c` | — | low | auto-shape | array | -| `0x1561ba` | — | low | auto-shape | array | -| `0x15a501` | — | low | auto-shape | array | -| `0x15a5c9` | — | low | auto-shape | array | -| `0x15a691` | — | low | auto-shape | array | - -## index-pointer - -| address | name | conf | source | usage | -|---|---|---|---|---| -| `0x32f1` | difficulty_index | high | investigation | GAMESTART's three-way difficulty selection. SETEN uses the zero-based index to select difficulty stat adjustments; FIELD indexes three-column stage-enemy arrays with it, and SETOBJ tests it against each object's difficulty mask. | -| `0x6718` | selected_party_slot | high | investigation | Current/selected slot in the 100-entry party-unit arrays. UNITECH chooses a free slot here before populating it; CHMENU replaces it with the selected sorted roster slot, then uses it to index party_slot_flags, party_slot_character_id, and companion per-slot tables. A natural New Game enters SC0000 with slot 2 selected. | -| `0x2052e` | current_faction_id | high | investigation | Active tactical faction/side. FIELD initializes it during stage entry, assigns 1 for the player phase, advances (value + 1) modulo 4 between phases, filters runtime entities and capturable objects by faction equality, and uses it as the bit index into tile_faction_traversal_masks. SCJUMP reads the same live stage context; this is not a story-progress counter. | -| `0x53edd` | selected_training_action_id | high | investigation | TRAIN's selected action row. It indexes all TRINIT eligibility, effect, text, award, and event arrays during detail rendering and execution. | -| `0x62424` | adv_gfx_resource_id | high | investigation | Transient ADV graphics-load input. Scene scripts set this immediately before their common layer loader, which passes it to set-texture together with adv_gfx_surface_slot_work. | -| `0x62450` | adv_gfx_layer_index | high | investigation | Current ADV graphics-layer row. All immediate assignments across the corpus are 0..7; common scene loaders use it to index adv_gfx_object_handles, per-layer geometry arrays, and adv_layer_surface_slots. | -| `0x62452` | adv_gfx_surface_slot_work | high | investigation | Working surface slot for the current ADV layer. Opcode 0x215 writes the retained object's existing source slot or -1; the common loader falls back to adv_layer_surface_slots, then passes the selected slot through set-texture, size queries, draw binding, and release. | -| `0x66713` | acting_entity_index | high | investigation | Entity whose movement or battle turn is being resolved. FIELD sets it before MVRTN; RTN_M providers use it for faction, position, resources, selected action, and routine progress. Together with target_entity_index it forms the attacker/target pair passed into battle. | -| `0x66714` | target_entity_index | high | investigation | Selected target/opponent entity. RTN_M051/052 choose and write an active foreign-faction target; FIELD pairs it with acting_entity_index for movement presentation and battle setup. | -| `0x66715` | current_unit_id | high | investigation | Shared current-unit selector used by character growth and setup scripts. CCINIT keys every class-change rule on this value; CALCCC, ADDEXP, SETEN, SALLY, and related scripts use it to index unit definitions and persistent per-unit state. | -| `0x8c877` | current_item_id | high | investigation | Shared item-id argument/selection slot. Item menus and gameplay scripts write a chosen item id, use it to index ITINIT arrays, and dispatch through item_handler_script_id; ITMES compares it against all 287 item ids to select the matching player-facing title and description. | -| `0xa6e59` | current_skill_id | high | investigation | Shared skill-id argument/selection slot. Skill menus and combat scripts write the chosen skill id and use it to index SKINIT arrays; SKMES compares it against all 131 skill ids to select the matching player-facing title and description. | -| `0xaac76` | current_condition_id | high | investigation | Shared condition selector consumed by CALCILL, ADDILL, ADDILLSUB, DISARM, FIELD, and related condition handlers. It indexes the 30-column runtime condition rows and ILINIT definition arrays. | -| `0xccc0a` | map_target_tile_x | high | investigation | Shared map target/focus X coordinate. Seventeen RTN_M providers unpack candidate coordinates here before testing selected_movement_route_steps, FIELD and SETROUTE use it as the selected destination, and LOOK converts it to the centered world X coordinate when no enemy spawn slot is selected. Fifty-five scripts reference the paired target coordinates. | -| `0xccc0b` | map_target_tile_y | high | investigation | Shared map target/focus Y coordinate paired with map_target_tile_x. Movement providers unpack the low sixteen bits of candidate coordinates here; FIELD and SETROUTE select the route endpoint, while story scripts and LOOK use the same pair to center the battlefield camera on scripted map locations. | -| `0xeff75` | current_routine_set_id | high | investigation | Shared RTINIT row selector. MVRTN loads the current entity's difficulty-selected movement routine set; BTRTN loads its battle routine set. Both then iterate routine_step_index across the selected twenty-slot row. | -| `0xeff76` | routine_step_index | high | investigation | Shared RTINIT step selector. MVRTN and BTRTN iterate it from zero through nineteen and use it as the column index in every routine bank and matching per-entity runtime row. | -| `0x1519f8` | current_card_id | high | investigation | FIELD's selected card-definition row. Card generation copies a surviving CDINIT card id here, uses it to test CDINIT2 story-flag gates, retains it through weighted selection, and indexes the chosen card's effects, graphics, name, and result text. | -| `0x152485` | current_card_generation_list_id | high | investigation | Selector consumed by CDINIT. FIELD loads it from the current STINIT type-28 card object's payload before rebuilding the parallel card-id and weight-schedule buffers; selectors 55 and 94 are authored but have no shipped STINIT object reference. | -| `0x152616` | current_entity_index | med | investigation | Primary current-entity row index (RECOVER-confirmed; purity 0.51, 363 row-index uses). | -| `0x152617` | current_stage_enemy_spawn_slot | high | investigation | Current STINIT enemy-template slot. FIELD selects slots 1..29 while materializing stage units, SETEN records the slot on the runtime entity and reads every parallel enemy buffer through it, and ADDEN uses slot 0 for its special generated unit. | -| `0x15261a` | battle_actor_side_index | high | investigation | Index of the acting side in BTL's two-entry battle arrays. CALCDMG derives battle_target_side_index as 1 minus this value; BTL uses the actor's unit-definition row for attack, skill, critical, and finishing-blow voices. | -| `0x15261b` | battle_target_side_index | high | investigation | Index of the target side in BTL's two-entry battle arrays. CALCDMG sets it to 1 - battle_actor_side_index; BTL applies battle_hp_delta to this side and uses its unit-definition row for damage and defeated voices. | -| `0x15288c` | selected_battle_animation_id | high | investigation | CALCDMG selects a skill_battle_animation_id or an equipped item's item_weapon_class, and BTL also writes passive reaction ids 801..808 and hardcoded defeat id 809. BTANINIT uses this value to select one six-effect timeline. | -| `0x1560e7` | current_magic_action_id | high | investigation | Shared selected magic/research/growth action id. MAGIC and STUDY index MAINIT's parallel columns with it, FIELD and USEMAGIC consume the selected action, and MAMES dispatches ids 1..9 to their untitled help descriptions. | -| `0x15a095` | information_tab_index | high | investigation | Selected INFO screen tab. INFO dispatches the five tab scripts with it; INFOMES uses values 0..2 as the column of information_message_handler_script_ids for INFOCH, INFOEN, and INFOVO. | -| `0x15a117` | current_character_profile_id | high | investigation | INFOCH's selected character-information row. It indexes CIINIT's name, unit, portrait, and placement arrays; CIMES compares the same id against all 24 profiles to dispatch the character biography. | -| `0x15a2a8` | current_glossary_topic_id | high | investigation | INFOVO's selected glossary/help topic. It indexes the VIINIT title and presentation arrays, then VIMES compares it against all 65 shipped topic ids to dispatch the full player-facing explanation. | -| `0x15a759` | current_enemy_encyclopedia_unit_id | high | investigation | INFOEN's selected enemy-encyclopedia unit id. It indexes EBINIT presentation and reveal arrays, seeds a temporary runtime entity for stat display, and EIMES compares it against 192 sparse unit ids to dispatch summary and strategy lines. | - -## story-flag - -| address | name | conf | source | usage | -|---|---|---|---|---| -| `0xa57` | lily_form_a | high | investigation | Lily current-form flag A. Exactly one of form A/B/C is 1; gates form-specific voiced dialogue (seeding 0xa57=1 -> SC0000 186->229 lines). Set externally (menu/save), no static writer. | -| `0xa58` | lily_form_b | high | investigation | Lily current-form flag B. See lily_form_a. | -| `0xa59` | lily_form_c | high | investigation | Lily current-form flag C. See lily_form_a. | -| `0xa99` | game_started | low | inference | New-game/playthrough gate: set to 1 by GAMESTART.BIN, then tested `==1` in story scenes (SC0200/SC0490, e.g. `0xa99==1 AND stat>3`). Marks that the game proper has begun. INFERENCE from the GAMESTART writer — confirm exact semantics before relying on it. | -| `0xd92` | — | med | auto-shape | TODO: confirm. Branch-read in 29 scenes / 29 scripts; compared against [1]; writers=none (external/native?). | -| `0x3231` | game_mode | med | inference | Game-mode/phase selector in the 0x3231-0x3234 progression-state cluster (chapter_mode is 0x3234). Enum 1..9, written by the gameplay scripts (AIM/ALCHEMY/BTL/BUNKI), branch-read in 136 scenes. Distinct from chapter; likely current sub-mode/screen. INFERENCE — confirm with a listing/sweep before relying on the exact meaning. | -| `0x3234` | chapter_mode | high | investigation | Progression chapter/mode selector. SCJUMP's top-level switch keys on it; branch-read by progression scripts (FIELD etc.), not directly by SC/SP scenes. | -| `0x3275` | — | med | auto-shape | TODO: confirm. Branch-read in 136 scenes / 143 scripts; compared against [0]; writers=['CAMP.BIN', 'DEBUGADV.BIN', 'DEBUGADV2.BIN', 'FIELD.BIN']. | -| `0x7679` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 4 scripts; compared against [0, 1, 4, 8, 16, 256, 512, 1024]; writers=['FIELD.BIN']. | -| `0x767a` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 4 scripts; compared against [0]; writers=['DEBUGMAP.BIN', 'DEBUGMAP2.BIN', 'DEBUGMAP3.BIN', 'FIELD.BIN']. | -| `0x767b` | — | med | auto-shape | TODO: confirm. Branch-read in 136 scenes / 150 scripts; compared against [0, 1]; writers=['DEBUGADV2.BIN', 'DEBUGMAP.BIN', 'DEBUGMAP2.BIN', 'DEBUGMAP3.BIN']. | -| `0x767d` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 9 scripts; compared against [0, 1, 2, 3]; writers=['CAMP.BIN', 'DEBUGADV2.BIN', 'DEBUGMAP.BIN', 'DEBUGMAP2.BIN']. | -| `0x204f5` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 3 scripts; compared against [1, 2, 4, 8, 16, 32, 64]; writers=['FIELD.BIN']. | -| `0x204f7` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 3 scripts; compared against [1, 2, 4, 6]; writers=['DEBUGMAP.BIN', 'DEBUGMAP2.BIN', 'DEBUGMAP3.BIN', 'GAMESTART.BIN']. | -| `0x53ef4` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 3 scripts; compared against [0]; writers=['CAMP.BIN']. | -| `0x55e37` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 3 scripts; compared against [0]; writers=['EVOLVE.BIN', 'STUDY.BIN']. | -| `0x55e38` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 9 scripts; compared against [0, 1, 2]; writers=['CHMENU.BIN', 'INFO.BIN', 'INFOAF.BIN', 'INFOCH.BIN']. | -| `0x55e39` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 8 scripts; compared against [0, 1, 4]; writers=['ALCHEMY.BIN', 'EVOLVE.BIN', 'MAGIC2.BIN', 'SELSTAGE.BIN']. | -| `0x55e3a` | — | med | auto-shape | TODO: confirm. Branch-read in 136 scenes / 143 scripts; compared against [0]; writers=['FORT.BIN']. | -| `0x617fd` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 6 scripts; compared against [0, 25, 50]; writers=['GAMESTART.BIN', 'TUNE.BIN']. | -| `0x62428` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 3 scripts; compared against [0]; writers=['CALLBACK_WINDOW.BIN', 'DEBUG.BIN', 'DEBUGADV.BIN', 'DEBUGADV2.BIN']. | -| `0x62439` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 6 scripts; compared against [0]; writers=['CHMENU.BIN', 'INFOAF.BIN', 'INFOCH.BIN', 'INFOEN.BIN']. | -| `0x624be` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 8 scripts; compared against [0]; writers=['MENU.BIN']. | -| `0x6642c` | route_branch | med | inference | Route/branch selector: sole writer is BUNKI.BIN (分岐 = branching), enum 0..7, branch-read in 36 scenes. Selects a story branch/route. INFERENCE from the BUNKI writer + enum — confirm exact routes via a listing/sweep. | -| `0x665d3` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 4 scripts; compared against [1, 2, 4, 8, 32, 64, 128, 65536]; writers=['ALCHEMY.BIN', 'BUNKI.BIN', 'DEBUGADV.BIN', 'EVOLVE.BIN']. | -| `0x665d7` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 5 scripts; compared against [1, 3]; writers=['ADDSKILL.BIN', 'SBUNKI.BIN']. | -| `0xaba5c` | — | med | auto-shape | TODO: confirm. Branch-read in 136 scenes / 149 scripts; compared against [0, 1]; writers=['DEBUGADV.BIN', 'DEBUGADV2.BIN', 'SC0000.BIN', 'SC0010.BIN']. | -| `0xaba5e` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 5 scripts; compared against [2]; writers=['DEBUGMAP.BIN', 'DEBUGMAP2.BIN', 'DEBUGMAP3.BIN']. | -| `0xccc21` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 4 scripts; compared against [0]; writers=['CHMENU.BIN']. | -| `0x15a094` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 6 scripts; compared against [0]; writers=['ALCHEMY.BIN', 'EVOLVE.BIN', 'SELSTAGE.BIN', 'STUDY.BIN']. | - -## string-table - -| address | name | conf | source | usage | -|---|---|---|---|---| -| `0xd2` | save_slot_location_names | high | investigation | SAVE and SELSTAGE snapshot the current location label into this shared SAVE.DAT-selected string bank. SAVE.BIN restores it with op 0x1aa for the row's location field. | -| `0x1a4` | save_slot_protagonist_names | high | investigation | SAVE and SELSTAGE snapshot the active familiar's display name into this shared SAVE.DAT-selected string bank. SAVE.BIN restores it with op 0x1aa beside the portrait. | -| `0x27e` | unit_class_titles | high | investigation | Persistent per-unit class/title string table. CALCCC writes the selected class_change_title_output into the current unit's cell; character and status presentation scripts read the resulting title. | -| `0x315` | unit_story_display_names | high | investigation | CNINIT's sparse unit-id keyed story-name table. Scene scripts and HISTORY draw the selected speaker's value, DEBUGADV uses it for its scripted speaker previews, and INPUTNAME rejects a player-entered familiar name that collides with any populated row. The table intentionally leaves Lily's form ids 2..4 empty. | -| `0x7db` | modal_message_lines | high | investigation | Shared ten-string modal buffer. Producers append messages or menu options at modal_message_line_count; MES measures and draws each string, and SBUNKI reuses the same entries for an interactive selection list. | -| `0x7e5` | modal_annotation_texts | high | investigation | Optional small-font annotations rendered by MES and SBUNKI after the primary modal lines. No direct shipped producer was found; the paired count and placement arrays expose a reserved/extensible annotation ABI. | -| `0x25fa` | condition_level_names | high | investigation | ILINIT's row-major five-name matrix. Runtime condition UI selects the row by condition id and the column by current level minus one; id 1 has only the unnumbered instant-death label, id 12 and ids 15..29 are reserved. Columns: 0=level_1, 1=level_2, 2=level_3, 3=level_4, 4=level_5. | -| `0x2690` | attack_element_names | high | investigation | AFINIT attack-side affinity vocabulary. DRAWTIP indexes ids 1..8 from ITINIT, while INFOAF displays those same eight ordinary attack elements above attack_element_effectiveness_percent. Columns: 1=physical, 2=universal, 3=fire, 4=ice, 5=lightning, 6=earth, 7=holy, 8=dark, 11=resistance_1, 12=resistance_2, 13=resistance_3, 14=resistance_4, 15=resistance_5, 16=resistance_6, 17=resistance_7. | -| `0x26a4` | defense_element_names | high | investigation | AFINIT defense-side affinity vocabulary. DRAWENP and DRAWTIP index it with unit/item defense element ids; the same id selects a row of attack_element_effectiveness_percent. Columns: 1=physical, 2=universal, 3=fire, 4=ice, 5=lightning, 6=earth, 7=holy, 8=dark, 9=divinity, 10=demon, 11=spirit, 12=undead. | -| `0x26b4` | class_change_title_output | high | investigation | CCINIT writes the title selected by each eligible class-change rule. CALCCC copies it to unit_class_titles for a successful promotion, and ADDEXP includes the same string in the level-up notification. | -| `0x26b5` | terrain_type_names | high | investigation | LAINIT's terrain vocabulary. MPINIT's atlas cells contain terrain ids 0..19; the named ids distinguish passages, rooms, hidden spaces, bases, water, openings, altars, lava, and themed room variants. | -| `0x26d3` | terrain_effect_descriptions | high | investigation | LAINIT's player-facing terrain effect summary indexed by terrain id. FIELD shows it beneath the selected tile's terrain name; each populated string exactly describes that row of terrain_combat_stat_deltas. | -| `0x26f1` | object_type_names | high | investigation | OBINIT writes the authoritative object names. FIELD, SETOBJ, and DRAWOBJ use STINIT's object type id to select these definitions; extract_init joins the names to stage object placements. | -| `0x2755` | object_type_descriptions | high | investigation | OBINIT writes the short object descriptions displayed by the field object-information path. extract_init joins populated descriptions to STINIT object placements by type id. | -| `0x27b9` | stage_victory_condition_1 | high | investigation | STINIT writes one value for each of its 74 stage records. AIM renders this line first in the victory-condition section, and FIELD copies it into the current mission-condition display. | -| `0x27ba` | stage_victory_condition_2 | high | investigation | STINIT writes one value for each of its 74 stage records. AIM renders nonempty values after stage_victory_condition_1, and FIELD copies the slot into the current mission-condition display. | -| `0x27bb` | stage_defeat_condition_1 | high | investigation | STINIT writes one value for each of its 74 stage records. AIM renders this line first in the defeat-condition section, and FIELD copies it into the current mission-condition display. | -| `0x27bc` | stage_defeat_condition_2 | high | investigation | STINIT writes one value for each of its 74 stage records. AIM renders nonempty values after stage_defeat_condition_1, and FIELD copies the slot into the current mission-condition display. | -| `0x27bd` | stage_display_names | high | investigation | FORT and SELSTAGE enumerate this sparse catalog and render the selected title, while FIELD copies the active title into its shared display buffer. STINIT2 reserves 1,000 ids even though the shipped rows end at 170. | -| `0x2ba5` | stage_description_lines | high | investigation | SELSTAGE multiplies stage_clear_state by three and renders the corresponding three-column half of the selected STINIT2 row. The explicit 1,000-by-6 geometry prevents these strings from being mistaken for additional stage records. Columns: 0=uncleared_line_1, 1=uncleared_line_2, 2=uncleared_line_3, 3=cleared_line_1, 4=cleared_line_2, 5=cleared_line_3. | -| `0x4315` | card_definition_names | high | investigation | Card names populated by CDINIT2. FIELD indexes this table with current_card_id when presenting the card selected from CDINIT's weighted generation list. | -| `0x4379` | card_definition_result_messages | high | investigation | Short player-facing result text paired with card_definition_names. FIELD displays the selected card's row after applying its CDINIT2 effect. | -| `0x43dd` | name_entry_character_palette | high | investigation | INPUTNAME's five 70-cell character pages: row 0 hiragana, row 1 katakana, row 2 full-width Latin letters, row 3 Arabic/Kanji/Roman/circled numerals, and row 4 symbols. Cursor slots 70..74 select the page; selecting a populated cell copies it into the seven-character name buffer. | -| `0x45b9` | magic_action_names | high | investigation | MAINIT's one-based action-name array: eleven shipped records occupy ids 1..11 in a reserved 30-cell span. MAGIC, STUDY, and EVOLVE render the selected entry. | -| `0x45d7` | character_profile_names | high | investigation | CIINIT writes the character-information screen's 24 display names. INFOCH lists them by profile id, masks unrevealed rows, and uses the same id to select the backing unit metadata and CIMES biography. | -| `0x463b` | glossary_topic_titles | high | investigation | VIINIT writes the sparse glossary title table. INFOVO renders the selected title, and extract_init joins all 65 populated ids to VIMES's full help text. | -| `0x276` | — | med | auto-shape | string-table (written by SC0130) | -| `0x277` | — | med | auto-shape | string-table (written by SC0130) | -| `0x278` | — | med | auto-shape | string-table (written by FIELD) | -| `0x279` | — | med | auto-shape | string-table (written by INPUTNAME) | -| `0x27a` | — | med | auto-shape | string-table (written by READY) | -| `0x27c` | — | med | auto-shape | string-table (written by READY) | -| `0x27d` | — | med | auto-shape | string-table (written by READY) | -| `0x316` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x317` | — | med | auto-shape | string-table (written by GAMESTART) | -| `0x318` | — | med | auto-shape | string-table (written by GAMESTART) | -| `0x319` | — | med | auto-shape | string-table (written by GAMESTART) | -| `0x31a` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x31b` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x31c` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x31d` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x31e` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x31f` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x320` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x321` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x322` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x323` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x324` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x325` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x326` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x327` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x328` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x329` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x32a` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x32b` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x32c` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x32d` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x32e` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x32f` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x330` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x331` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x332` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x333` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x334` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x335` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x336` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x337` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x338` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x339` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x33a` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x33b` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x33c` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x33d` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x33e` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x33f` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x340` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x341` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x342` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x343` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x344` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x345` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x346` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x348` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x349` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x34b` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x34c` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x34e` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x34f` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x350` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x351` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x352` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x353` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x354` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x355` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x356` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x357` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x358` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x359` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x35a` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x35b` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x35c` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x35d` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x35e` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x35f` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x360` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x361` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x362` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x363` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x364` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x365` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x36f` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x370` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x371` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x372` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x373` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x374` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x37a` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x37b` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x37c` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x37d` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x37e` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x37f` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x381` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x382` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x383` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x384` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x385` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x387` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x388` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x389` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x38a` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x38c` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x38d` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x38e` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x38f` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x390` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x391` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x392` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x393` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x394` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x395` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x396` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x397` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x398` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x399` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x39a` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x39c` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x39d` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x39e` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x39f` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x3a0` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x3a1` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x3a2` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x3a3` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x3a4` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x3aa` | — | med | auto-shape | string-table (written by GAMESTART) | -| `0x3ab` | — | med | auto-shape | string-table (written by GAMESTART) | -| `0x3ac` | — | med | auto-shape | string-table (written by GAMESTART) | -| `0x3dd` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x3de` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x3df` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x3e0` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x3e2` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x3e3` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x3e4` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x3ec` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x3ed` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x3ee` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x3ef` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x3f0` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x3f1` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x3f6` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x3f7` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x3f8` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x3f9` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x3fa` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x3fb` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x400` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x405` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x40f` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x414` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x419` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x41e` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x423` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x424` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x425` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x428` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x441` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x442` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x446` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x447` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x44b` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x450` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x455` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x456` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x45a` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x473` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x478` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x479` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x47d` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x482` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x4a5` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x4a6` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x4aa` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x4ab` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x4af` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x4b4` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x4d7` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x4dc` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x4dd` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x4de` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x4e1` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x4e6` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x509` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x50a` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x50e` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x50f` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x510` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x511` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x513` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x514` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x518` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x51d` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x51e` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x522` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x56d` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x572` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x577` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x57c` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x581` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x59f` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x5a4` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x5a5` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x5ae` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x5af` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x5b3` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x5b4` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x5b5` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x5b6` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x5bd` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x5d1` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x5d6` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x5db` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x5e0` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x5e5` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x5ea` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x5ef` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x5f4` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x603` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x608` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x609` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x60a` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x60b` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x635` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x636` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x637` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x638` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x639` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x63a` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x63b` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x63c` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x63d` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x63e` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x63f` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x640` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x641` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x642` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x643` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x644` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x645` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x646` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x647` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x648` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x649` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x64a` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x64b` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x64c` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x64d` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x64e` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x64f` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x650` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x651` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x652` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x653` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x654` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x655` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x656` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x657` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x658` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x667` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x668` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x669` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x66a` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x66b` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x66c` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x66d` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x66e` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x66f` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x670` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x671` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x672` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x673` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x674` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x675` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x676` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x677` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x678` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x679` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x67a` | — | med | auto-shape | string-table (written by CNINIT) | -| `0x7da` | — | med | auto-shape | string-table (written by SC0100) | -| `0x849` | — | med | auto-shape | string-table (written by SAVE) | -| `0x84b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x84c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x84d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x84e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x84f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x850` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x851` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x852` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x853` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x854` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x855` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x856` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x857` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x858` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x859` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x85a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x85b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x85c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x85d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x85e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x85f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x860` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x861` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x862` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x863` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x864` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x865` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x866` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x867` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x868` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x869` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x86a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x86b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x86c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x86d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x86e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x86f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x870` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x871` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x872` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x873` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x874` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x875` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x876` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x877` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x878` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x879` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x87a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x87b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x87d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x87e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x880` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x881` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x882` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x883` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x884` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x885` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x886` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x887` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x888` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x889` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x88a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x88b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x88c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x88d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x88e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x88f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x890` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x891` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x892` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x893` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x894` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x895` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x896` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x897` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x898` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x899` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x89a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8a4` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8a5` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8a6` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8a7` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8a8` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8a9` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8af` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8b0` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8b1` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8b2` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8b3` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8b4` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8b6` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8b7` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8b8` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8b9` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8ba` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8bc` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8bd` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8be` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8bf` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8c1` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8c2` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8c3` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8c4` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8c5` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8c6` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8c7` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8c8` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8c9` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8ca` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8cb` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8cc` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8cd` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8ce` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8cf` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8d1` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8d2` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8d3` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8d4` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8d5` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8d6` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8d7` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8d8` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8d9` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8df` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8e0` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x8e1` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x912` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x913` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x914` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x915` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x917` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x918` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x919` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x921` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x922` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x923` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x924` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x925` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x926` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x92b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x92c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x92d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x92e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x92f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x930` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x935` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x93a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x944` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x949` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x94e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x953` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x958` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x959` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x95a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x95d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x976` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x977` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x97b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x97c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x980` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x985` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x98a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x98b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x98f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x9a8` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x9ad` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x9ae` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x9b2` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x9b7` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x9da` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x9db` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x9df` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x9e0` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x9e4` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x9e9` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xa0c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xa11` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xa12` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xa13` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xa16` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xa1b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xa3e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xa3f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xa43` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xa44` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xa45` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xa46` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xa48` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xa49` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xa4d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xa52` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xa53` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xaa2` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xaa7` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xaac` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xab1` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xab6` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xad4` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xad9` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xada` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xae3` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xae4` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xae8` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xae9` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xaea` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xaeb` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xaf2` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb06` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb0b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb10` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb15` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb1a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb1f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb24` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb29` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb38` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb3d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb3e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb3f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb40` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb6a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb6b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb6c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb6d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb6e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb6f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb70` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb71` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb72` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb73` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb74` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb75` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb76` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb77` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb78` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb79` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb7a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb7b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb7c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb7d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb7e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb7f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb80` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb81` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb82` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb83` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb84` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb85` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb86` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb87` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb88` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb89` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb8a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb8b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb8c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb8d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb9c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb9d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb9e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xb9f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xba0` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xba1` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xba2` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xba3` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xba4` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xba5` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xba6` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xba7` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xba8` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xba9` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xbaa` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xbab` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xbac` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xbad` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xbae` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xbaf` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc33` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc34` | — | med | auto-shape | string-table (written by GAMESTART) | -| `0xc35` | — | med | auto-shape | string-table (written by GAMESTART) | -| `0xc36` | — | med | auto-shape | string-table (written by GAMESTART) | -| `0xc37` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc38` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc39` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc3a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc3b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc3c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc3d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc3e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc3f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc40` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc41` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc42` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc43` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc44` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc45` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc46` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc47` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc48` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc49` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc4a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc4b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc4c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc4d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc4e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc4f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc50` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc51` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc52` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc53` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc54` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc55` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc56` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc57` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc58` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc59` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc5a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc5b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc5c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc5d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc5e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc5f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc60` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc61` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc62` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc63` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc65` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc66` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc68` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc69` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc6a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc6b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc6c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc6d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc6e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc6f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc70` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc71` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc72` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc73` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc74` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc75` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc76` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc77` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc78` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc79` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc7a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc7b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc7c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc7d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc7e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc7f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc80` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc81` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc82` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc8c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc8d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc8e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc8f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc90` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc91` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc97` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc98` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc99` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc9a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc9b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc9c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc9e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xc9f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xca0` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xca1` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xca2` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xca4` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xca5` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xca6` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xca7` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xca9` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xcaa` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xcab` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xcac` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xcad` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xcae` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xcaf` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xcb0` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xcb1` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xcb2` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xcb3` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xcb4` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xcb5` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xcb6` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xcb7` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xcb9` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xcba` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xcbb` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xcbc` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xcbd` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xcbe` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xcbf` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xcc0` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xcc1` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xcc7` | — | med | auto-shape | string-table (written by GAMESTART) | -| `0xcc8` | — | med | auto-shape | string-table (written by GAMESTART) | -| `0xcc9` | — | med | auto-shape | string-table (written by GAMESTART) | -| `0xcfa` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xcfb` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xcfc` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xcfd` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xcff` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd00` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd01` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd09` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd0a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd0b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd0c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd0d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd0e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd13` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd14` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd15` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd16` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd17` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd18` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd1d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd22` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd2c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd31` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd36` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd3b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd40` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd41` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd42` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd45` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd5e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd5f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd63` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd64` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd68` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd6d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd72` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd73` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd77` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd90` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd95` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd96` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd9a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xd9f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xdc2` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xdc3` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xdc7` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xdc8` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xdcc` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xdd1` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xdf4` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xdf9` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xdfa` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xdfb` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xdfe` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xe03` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xe26` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xe27` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xe2b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xe2c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xe2d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xe2e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xe30` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xe31` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xe35` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xe3a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xe3b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xe3f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xe8a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xe8f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xe94` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xe99` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xe9e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xebc` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xec1` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xec2` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xecb` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xecc` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xed0` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xed1` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xed2` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xed3` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xeda` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xeee` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xef3` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xef8` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xefd` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf02` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf07` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf0c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf11` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf20` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf25` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf26` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf27` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf28` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf52` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf53` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf54` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf55` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf56` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf57` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf58` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf59` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf5a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf5b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf5c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf5d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf5e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf5f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf60` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf61` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf62` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf63` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf64` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf65` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf66` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf67` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf68` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf69` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf6a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf6b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf6c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf6d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf6e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf6f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf70` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf71` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf72` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf73` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf74` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf75` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf84` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf85` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf86` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf87` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf88` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf89` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf8a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf8b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf8c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf8d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf8e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf8f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf90` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf91` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf92` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf93` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf94` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf95` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf96` | — | med | auto-shape | string-table (written by EBINIT) | -| `0xf97` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x101b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x101c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x101d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x101e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x101f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1020` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1021` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1022` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1023` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1024` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1025` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1026` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1027` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1028` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1029` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x102f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1030` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1031` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1032` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1033` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1034` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1035` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1041` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1042` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1043` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1044` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1045` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1046` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x104d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x104e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1050` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1051` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1052` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1053` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1054` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1055` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1056` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1057` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1058` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1059` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x105a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x105b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x105c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x105d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x105e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x105f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1060` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1061` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1062` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1063` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1064` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1065` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1066` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1067` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1068` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1069` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x106a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1079` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x107f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1080` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1081` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1082` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1083` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1084` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1086` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1087` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1088` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1089` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x108a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x108c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x108d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x108e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x108f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1091` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1092` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1093` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1094` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1095` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1096` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1097` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1098` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1099` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x109a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x109b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x109c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x109d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x109e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x109f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x10a1` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x10a2` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x10a3` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x10a4` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x10a5` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x10a6` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x10a7` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x10a8` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x10a9` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x10af` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x10b0` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x10b1` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x10e2` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x10e3` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x10e4` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x10e5` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x10e7` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x10e8` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x10e9` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x10f1` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x10f2` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x10f3` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x10f4` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x10f5` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x10f6` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x10fb` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x10fc` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x10fd` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x10fe` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x10ff` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1100` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1105` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x110a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1114` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1119` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x111e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1123` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1128` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1129` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x112a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x112d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1146` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1147` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x114b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x114c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1150` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1155` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x115a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x115b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x115f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1178` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x117d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x117e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1182` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1187` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x11aa` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x11ab` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x11af` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x11b0` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x11b4` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x11b9` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x11dc` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x11e1` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x11e2` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x11e3` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x11e6` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x11eb` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x120e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x120f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1213` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1214` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1215` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1216` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1218` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1219` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x121d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1222` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1223` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1227` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1272` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1277` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x127c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1281` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1286` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x12a4` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x12a9` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x12aa` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x12b3` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x12b4` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x12b8` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x12b9` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x12ba` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x12bb` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x12c2` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x12d6` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x12db` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x12e0` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x12e5` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x12ea` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x12ef` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x12f4` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x12f9` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1308` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x130d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x130e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x130f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1310` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x133a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x133b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x133c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x133d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x133e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x133f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1340` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1341` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1342` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1343` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1344` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1345` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1346` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1347` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1348` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1349` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x134a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x134b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x134c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x134d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x134e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x134f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1350` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1351` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1352` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1353` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1354` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1355` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1356` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1357` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1358` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1359` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x135a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x135b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x135c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x135d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x136c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x136d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x136e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x136f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1370` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1371` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1372` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1373` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1374` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1375` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1376` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1377` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1378` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1379` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x137a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x137b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x137c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x137d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x137e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x137f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1592` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1593` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1596` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1597` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x159c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x159d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x159e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x159f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x15a0` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x15a1` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x15b0` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x15b1` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x15b4` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x15b5` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x15b8` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x15b9` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x15ba` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x15c4` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x15c5` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x15c6` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x15c7` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x15c8` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x15c9` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x15ca` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x15cb` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x15cc` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x15cd` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x15ce` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x15d8` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1600` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1601` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x160a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x160b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1614` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1615` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x161e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x161f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1620` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1621` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1622` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1623` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1628` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1629` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x165a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x165b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x165c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1664` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1665` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1666` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1667` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x166e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x166f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1678` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1679` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1682` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1684` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x16be` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x16bf` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x16c8` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x16c9` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x16ca` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x16cb` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x16d2` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x16dc` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x16dd` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1722` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1723` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1724` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1725` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x172c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x172d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x172e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x172f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1736` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1737` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1740` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1786` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1787` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1790` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1792` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1793` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1794` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1795` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x17ea` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x17eb` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x17ec` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x17ed` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x17f4` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x17f8` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x17fe` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x17ff` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1800` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1801` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1808` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1809` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1812` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1814` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x18d0` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x18d1` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1916` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1917` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1920` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1921` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1922` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1923` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1934` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1935` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1936` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1937` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x193e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x193f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1940` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1941` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1942` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1943` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1944` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1945` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1952` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1953` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x197a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a44` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a45` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a46` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a47` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a48` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a49` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a4a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a4b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a56` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a57` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a58` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a5a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a5b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a5c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a5d` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a5e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a62` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a63` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a66` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a67` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a6e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a6f` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a70` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a72` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a73` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a74` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a76` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a77` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a78` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a79` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a7a` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a7b` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a7c` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a7e` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a80` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a81` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a82` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a83` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a84` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a85` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a86` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a87` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1a88` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1aa6` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1aa7` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1aa8` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1aaa` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1aab` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1aac` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1aad` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1aae` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1aaf` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1ab0` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1ab1` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1ab2` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1ab3` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1ab4` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1ab5` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1ab6` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1ab7` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1ab8` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1ab9` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1aba` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1abb` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1abe` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1abf` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1ac0` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1ac4` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1ac5` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1ac6` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1ac8` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1aca` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1acc` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1acd` | — | med | auto-shape | string-table (written by EBINIT) | -| `0x1bd3` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1bd4` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1bd5` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1bd6` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1bd7` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1bd8` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1bd9` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1bda` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1bdb` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1bdc` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1bde` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1bdf` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1be4` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1be5` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1be6` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1be7` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1be8` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1be9` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1bea` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1beb` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1bec` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1bed` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1bf1` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1bf2` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1bf3` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1bf4` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1bf5` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1bf6` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1bf7` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1bf8` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1bf9` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1bfa` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1bfb` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1bfc` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c05` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c06` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c08` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c09` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c0a` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c0b` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c0c` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c0d` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c0e` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c0f` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c10` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c11` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c12` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c13` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c14` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c15` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c16` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c17` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c18` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c19` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c1a` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c1b` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c1c` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c1d` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c1e` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c1f` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c20` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c21` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c22` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c2d` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c2e` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c2f` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c37` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c38` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c39` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c3a` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c3c` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c3d` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c3e` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c3f` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c40` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c43` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c45` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c47` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c48` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c49` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c4a` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c4b` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c9b` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c9d` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1c9f` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1ca0` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1caa` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1cab` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1cae` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1caf` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1cb0` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1cb2` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1cb5` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1cbf` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1cc0` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1cc2` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1cc3` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1cc5` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1cc7` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1cca` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1cd0` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1cd1` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1cd5` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1cd7` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1cd9` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1cdf` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1ce3` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1ce4` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1ce6` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1ce9` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1cea` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1ceb` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1cee` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1cef` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1cf1` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1cf8` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1cfa` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1cfc` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1cff` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d01` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d03` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d04` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d0e` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d10` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d12` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d13` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d14` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d17` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d19` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d20` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d22` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d25` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d27` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d29` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d2a` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d2b` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d2d` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d36` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d39` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d4f` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d51` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d54` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d5e` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d5f` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d61` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d62` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d63` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d66` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d68` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d6b` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d6f` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d72` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d75` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d77` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d78` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d79` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d7a` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d7b` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d7c` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d84` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d85` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d86` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d87` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d88` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d89` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d8a` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d8b` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d8c` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d8d` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d8e` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d8f` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d90` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d91` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d92` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d93` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d94` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d95` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d96` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d97` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d98` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d99` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d9a` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d9b` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d9d` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d9e` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1d9f` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1da0` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1da2` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1da3` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1da4` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1da5` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1da6` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1da8` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1da9` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1daa` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1dab` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1db2` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1db3` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1db4` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1db5` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1db6` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1db7` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1dc7` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1dc9` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1dcb` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e32` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e34` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e35` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e37` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e38` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e39` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e3a` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e3b` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e3e` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e40` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e41` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e43` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e45` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e46` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e47` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e4a` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e4b` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e4c` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e4e` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e4f` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e51` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e53` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e54` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e55` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e56` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e57` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e58` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e5b` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e5c` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e5d` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e5e` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e5f` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e8f` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e90` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e92` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e93` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e94` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e95` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e96` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e97` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e98` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1e99` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f57` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f58` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f59` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f5a` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f5b` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f5c` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f5d` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f5e` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f5f` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f60` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f61` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f62` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f63` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f64` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f68` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f69` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f6a` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f6b` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f6c` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f6d` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f6e` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f6f` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f70` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f71` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f72` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f73` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f74` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f75` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f76` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f77` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f78` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f79` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f7a` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f7b` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f7c` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f7d` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f7e` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f7f` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f80` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x1f81` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x201f` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2020` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2021` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2022` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2024` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2025` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2026` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2027` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2028` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x202b` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x202d` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x202f` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2030` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2031` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2032` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2033` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2083` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2085` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2087` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2088` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2092` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2093` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2096` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2097` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2098` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x209a` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x209d` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20a7` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20a8` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20aa` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20ab` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20ad` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20af` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20b2` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20b8` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20b9` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20bd` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20bf` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20c1` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20c7` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20cb` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20cc` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20ce` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20d1` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20d2` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20d3` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20d6` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20d7` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20d9` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20e0` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20e2` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20e4` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20e7` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20e9` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20eb` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20ec` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20f6` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20f8` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20fa` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20fb` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20fc` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x20ff` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2101` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2108` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x210a` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x210d` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x210f` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2111` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2112` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2113` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2115` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x211e` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2121` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2137` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2139` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x213c` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2146` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2147` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2149` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x214a` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x214b` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x214e` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2150` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2153` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2157` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x215a` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x215d` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x215f` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2160` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2161` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2162` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2163` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2164` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x216c` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x216d` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x216e` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x216f` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2170` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2171` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2172` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2173` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2174` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2175` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2176` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2177` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2178` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2179` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x217a` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x217b` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x217c` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x217d` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x217e` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x217f` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2180` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2181` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2182` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2183` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2185` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2186` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2187` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2188` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x218a` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x218b` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x218c` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x218d` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x218e` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2190` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2191` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2192` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2193` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x219a` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x219b` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x219c` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x219d` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x219e` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x219f` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x21af` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x21b1` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x21b3` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2277` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2278` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x227a` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x227b` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x227c` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x227d` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x227e` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x227f` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2280` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2281` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x233f` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2340` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2341` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2342` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2343` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2344` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2345` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2346` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2347` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2348` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2349` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x234a` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x234b` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x234c` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2350` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2351` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2352` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2353` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2354` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2355` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2356` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2357` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2358` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2359` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x235a` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x235b` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x235c` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x235d` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x235e` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x235f` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2360` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2361` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2362` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2363` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2364` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2365` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2366` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2367` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2368` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x2369` | — | med | auto-shape | string-table (written by ITINIT) | -| `0x23a3` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23a4` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23a5` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23a6` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23ad` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23b7` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23b8` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23b9` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23ba` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23bb` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23bd` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23be` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23bf` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23c0` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23c1` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23c2` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23c3` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23c4` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23c5` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23c6` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23c7` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23c8` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23c9` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23ca` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23cb` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23cc` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23cd` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23ce` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23cf` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23d0` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23d1` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23d2` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23d3` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23d4` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x23d5` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2407` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2408` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2409` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x240a` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x240b` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x240c` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x240d` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x240e` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x240f` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2410` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2411` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2412` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2413` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2414` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2415` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2416` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2417` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2418` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2419` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x241a` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x241b` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x241c` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x241d` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x241e` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x241f` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2420` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2421` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2422` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2423` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2424` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2425` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2426` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2427` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2428` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2429` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x242a` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x242b` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x242c` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x242d` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x242e` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x242f` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2430` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2432` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2438` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2439` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x243a` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x243b` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x243c` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x243d` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x243e` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x243f` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2440` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2441` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2442` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2443` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2469` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x246a` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x246b` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x246c` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x246d` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x246e` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x246f` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2470` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2471` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2472` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2473` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2474` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2475` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2476` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x247d` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x247e` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2480` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2481` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2483` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2484` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2485` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2486` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2487` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2488` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2489` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x248a` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x248c` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x248d` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x248e` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x248f` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2490` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2491` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2492` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2494` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2495` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2496` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2497` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2498` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2499` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x249a` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x249b` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24cf` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24d0` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24d1` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24d2` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24d9` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24e3` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24e4` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24e5` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24e6` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24e7` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24e9` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24ea` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24eb` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24ec` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24ed` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24ee` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24ef` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24f0` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24f1` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24f2` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24f3` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24f4` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24f5` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24f6` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24f7` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24f8` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24f9` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24fa` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24fb` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24fc` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24fd` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24fe` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x24ff` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2500` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2501` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2533` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2534` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2535` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2536` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2537` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2538` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2539` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x253a` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x253b` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x253c` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x253d` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x253e` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x253f` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2540` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2541` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2542` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2543` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2544` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2545` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2546` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2547` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2548` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2549` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x254a` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x254b` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x254c` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x254d` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x254e` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x254f` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2550` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2551` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2552` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2553` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2554` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2555` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2556` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2557` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2558` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2559` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x255a` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x255b` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x255c` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x255e` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2564` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2565` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2566` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2567` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2568` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2569` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x256a` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x256b` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x256c` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x256d` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x256e` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x256f` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2597` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2598` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x2599` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x259a` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x259b` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x259c` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x259d` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x259e` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x259f` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x25a0` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x25a1` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x25a2` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x25a9` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x25aa` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x25ac` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x25ad` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x25af` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x25b0` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x25b1` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x25b2` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x25b3` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x25b4` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x25b5` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x25b6` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x25b8` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x25b9` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x25ba` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x25bb` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x25bc` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x25bd` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x25be` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x25c0` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x25c1` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x25c2` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x25c3` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x25c4` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x25c5` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x25c6` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x25c7` | — | med | auto-shape | string-table (written by SKINIT) | -| `0x25ff` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2604` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2605` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2606` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2607` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2608` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2609` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x260a` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x260b` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x260c` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x260d` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x260e` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x260f` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2610` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2611` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2612` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2613` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2614` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2615` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2616` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2617` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2618` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2619` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x261a` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x261b` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x261c` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x261d` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x261e` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x261f` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2620` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2621` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2622` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2623` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2624` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2625` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2626` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2627` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2628` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2629` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x262a` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x262b` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x262c` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x262d` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x262e` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x262f` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2630` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2631` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2632` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2633` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2634` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2635` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x263b` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x263c` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x263d` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x263e` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x263f` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2640` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2641` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2642` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2643` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2644` | — | med | auto-shape | string-table (written by ILINIT) | -| `0x2691` | — | med | auto-shape | string-table (written by AFINIT) | -| `0x2692` | — | med | auto-shape | string-table (written by AFINIT) | -| `0x2693` | — | med | auto-shape | string-table (written by AFINIT) | -| `0x2694` | — | med | auto-shape | string-table (written by AFINIT) | -| `0x2695` | — | med | auto-shape | string-table (written by AFINIT) | -| `0x2696` | — | med | auto-shape | string-table (written by AFINIT) | -| `0x2697` | — | med | auto-shape | string-table (written by AFINIT) | -| `0x2698` | — | med | auto-shape | string-table (written by AFINIT) | -| `0x269b` | — | med | auto-shape | string-table (written by AFINIT) | -| `0x269c` | — | med | auto-shape | string-table (written by AFINIT) | -| `0x269d` | — | med | auto-shape | string-table (written by AFINIT) | -| `0x269e` | — | med | auto-shape | string-table (written by AFINIT) | -| `0x269f` | — | med | auto-shape | string-table (written by AFINIT) | -| `0x26a0` | — | med | auto-shape | string-table (written by AFINIT) | -| `0x26a1` | — | med | auto-shape | string-table (written by AFINIT) | -| `0x26a5` | — | med | auto-shape | string-table (written by AFINIT) | -| `0x26a6` | — | med | auto-shape | string-table (written by AFINIT) | -| `0x26a7` | — | med | auto-shape | string-table (written by AFINIT) | -| `0x26a8` | — | med | auto-shape | string-table (written by AFINIT) | -| `0x26a9` | — | med | auto-shape | string-table (written by AFINIT) | -| `0x26aa` | — | med | auto-shape | string-table (written by AFINIT) | -| `0x26ab` | — | med | auto-shape | string-table (written by AFINIT) | -| `0x26ac` | — | med | auto-shape | string-table (written by AFINIT) | -| `0x26ad` | — | med | auto-shape | string-table (written by AFINIT) | -| `0x26ae` | — | med | auto-shape | string-table (written by AFINIT) | -| `0x26af` | — | med | auto-shape | string-table (written by AFINIT) | -| `0x26b0` | — | med | auto-shape | string-table (written by AFINIT) | -| `0x26b6` | — | med | auto-shape | string-table (written by LAINIT) | -| `0x26b7` | — | med | auto-shape | string-table (written by LAINIT) | -| `0x26b8` | — | med | auto-shape | string-table (written by LAINIT) | -| `0x26b9` | — | med | auto-shape | string-table (written by LAINIT) | -| `0x26bc` | — | med | auto-shape | string-table (written by LAINIT) | -| `0x26bd` | — | med | auto-shape | string-table (written by LAINIT) | -| `0x26be` | — | med | auto-shape | string-table (written by LAINIT) | -| `0x26bf` | — | med | auto-shape | string-table (written by LAINIT) | -| `0x26c0` | — | med | auto-shape | string-table (written by LAINIT) | -| `0x26c1` | — | med | auto-shape | string-table (written by LAINIT) | -| `0x26c2` | — | med | auto-shape | string-table (written by LAINIT) | -| `0x26c3` | — | med | auto-shape | string-table (written by LAINIT) | -| `0x26c4` | — | med | auto-shape | string-table (written by LAINIT) | -| `0x26c5` | — | med | auto-shape | string-table (written by LAINIT) | -| `0x26c6` | — | med | auto-shape | string-table (written by LAINIT) | -| `0x26c7` | — | med | auto-shape | string-table (written by LAINIT) | -| `0x26c8` | — | med | auto-shape | string-table (written by LAINIT) | -| `0x26d7` | — | med | auto-shape | string-table (written by LAINIT) | -| `0x26da` | — | med | auto-shape | string-table (written by LAINIT) | -| `0x26db` | — | med | auto-shape | string-table (written by LAINIT) | -| `0x26dd` | — | med | auto-shape | string-table (written by LAINIT) | -| `0x26de` | — | med | auto-shape | string-table (written by LAINIT) | -| `0x26f2` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x26f3` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x26f4` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x26f5` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x26f6` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x26f7` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x26f8` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x26f9` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x26fa` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x26fb` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x26fc` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x26fd` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x26fe` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x26ff` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2700` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2701` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2702` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2703` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2704` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2705` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2706` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2707` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2708` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2709` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x270a` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x270b` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x270c` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x270d` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x270e` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x270f` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2710` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2711` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2712` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2713` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2714` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2715` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2716` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2717` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2718` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2719` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x271a` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x271b` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x271c` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x271d` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x271e` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x271f` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2756` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2757` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2758` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2759` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x275a` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x275b` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x275e` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x275f` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2761` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2762` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2763` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2764` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2765` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2766` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2767` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2768` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2769` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x276a` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x276b` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x276c` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x276d` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x276e` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x276f` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2770` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2771` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2772` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2773` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2774` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2775` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2776` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2779` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x277a` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2782` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x2783` | — | med | auto-shape | string-table (written by OBINIT) | -| `0x27be` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27bf` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27c0` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27c8` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27c9` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27ca` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27cc` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27cd` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27d2` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27d3` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27d4` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27d5` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27d6` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27d7` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27d8` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27dc` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27dd` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27de` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27df` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27e0` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27e1` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27e2` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27e3` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27e4` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27e6` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27e7` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27e8` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27e9` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27ea` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27eb` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27f0` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27f1` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27f2` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27f3` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27f4` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27f5` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27fa` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27fb` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27fc` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x27fd` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2804` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2805` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x280e` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x280f` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2810` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2816` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2818` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2819` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x281a` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x281b` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x281c` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x281d` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x281e` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x281f` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2822` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2823` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2824` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2825` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2826` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2827` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2828` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2829` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x282a` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x285d` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x285e` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x285f` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2860` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2861` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2862` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2863` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2864` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2865` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2866` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2867` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2bab` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2bac` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2bae` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2baf` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2bb1` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2bb2` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2bb3` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2bb4` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2bb5` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2bb6` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2bb7` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2bb8` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2bba` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2bbb` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2be7` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2be8` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2bea` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2bed` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2bee` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2bf0` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2bf3` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2bf4` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2bf6` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2bff` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c00` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c02` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c05` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c06` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c08` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c23` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c24` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c25` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c26` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c27` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c29` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c2a` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c2c` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c2d` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c2f` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c30` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c32` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c35` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c36` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c38` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c39` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c3b` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c3c` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c3e` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c3f` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c41` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c42` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c44` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c47` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c48` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c4a` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c4b` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c5f` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c60` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c62` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c65` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c66` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c67` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c68` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c6b` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c6c` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c6d` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c6e` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c71` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c72` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c73` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c74` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c77` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c78` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c79` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c7a` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c7d` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c7e` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c7f` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c80` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c83` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c84` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c86` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c89` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c8a` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c8b` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c8c` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c8d` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c8f` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c90` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c92` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c93` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c9b` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c9c` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2c9e` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2ca1` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2ca2` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2ca4` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2ca7` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2ca8` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2ca9` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2caa` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2cad` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2cae` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2cb0` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2cb1` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2cb3` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2cb4` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2cb6` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2cb7` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2cb9` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2cba` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2cbc` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2cbd` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2cd7` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2cd8` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2cda` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2cdd` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2cde` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2ce0` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2ce3` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2ce4` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2ce6` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2ce9` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2cea` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2cec` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2cef` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2cf0` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2cf1` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2cf2` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2cf5` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2cf6` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2cf7` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2cf8` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2cf9` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2d13` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2d14` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2d16` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2d17` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2d19` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2d1a` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2d1c` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2d1f` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2d20` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2d22` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2d25` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2d26` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2d28` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2d29` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2d4f` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2d50` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2d52` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2d55` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2d56` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2d58` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2d8b` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2d8c` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2d8e` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2d91` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2d92` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2d93` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2d94` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2d97` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2d98` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2d99` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2d9a` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2dbb` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2dbc` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2dbe` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2dbf` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2dc7` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2dc8` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2dc9` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2dca` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2dcd` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2dce` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2dcf` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2dd0` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2dd3` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2dd4` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2dd5` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2dd6` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2dd9` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2dda` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2ddb` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2ddc` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2ddf` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2de0` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2de1` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2de2` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2de5` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2de6` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2de7` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2de8` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2deb` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2dec` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2ded` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2dee` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2df1` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2df2` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2df3` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2df4` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e03` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e04` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e06` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e07` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e09` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e0a` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e0b` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e0c` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e0d` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e0e` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e0f` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e10` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e12` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e13` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e15` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e16` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e17` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e18` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e19` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e1a` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e1b` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e1c` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e1d` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e1e` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e1f` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e20` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e21` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e22` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e23` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e24` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e25` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e26` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e27` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e28` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e2a` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e2b` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e2d` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e2e` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e30` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e31` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e33` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e34` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e35` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e36` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e37` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2e38` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f65` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f66` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f67` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f68` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f6b` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f6c` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f6d` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f6e` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f71` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f72` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f74` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f77` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f78` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f79` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f7a` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f7d` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f7e` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f7f` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f80` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f83` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f84` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f85` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f86` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f89` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f8a` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f8b` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f8c` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f8f` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f90` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f91` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f92` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f95` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f96` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f97` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f98` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f99` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f9a` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f9b` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f9c` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f9d` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f9e` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2f9f` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2fa0` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2fa1` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2fa2` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2fa3` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2fa4` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2fa5` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x2fa6` | — | med | auto-shape | string-table (written by STINIT2) | -| `0x4316` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4317` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4318` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4319` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x431a` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x431b` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x431c` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x431d` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x431e` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x431f` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4320` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4321` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4322` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4323` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4324` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4325` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4326` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4327` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4328` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4329` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x432a` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x432b` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x432c` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x432d` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x432e` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x432f` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4330` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4331` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4332` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4333` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4334` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4335` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4336` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4337` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4338` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4339` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x433a` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x433b` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x433c` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x433d` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x433e` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x433f` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4340` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4341` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4342` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4343` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4344` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4345` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4346` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4347` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4348` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4349` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x434a` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x434b` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x434c` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x434d` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x434e` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x434f` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4350` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4351` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4352` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4353` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4354` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4355` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4356` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4357` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4358` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4359` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x435a` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x435b` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x435c` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x435d` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x435e` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x435f` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4360` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4361` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4362` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4363` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4364` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4365` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4366` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x437a` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x437b` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x437c` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x437d` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x437e` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x437f` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4380` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4381` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4382` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4383` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4384` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4385` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4386` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4387` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4388` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4389` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x438a` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x438b` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x438c` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x438d` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x438e` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x438f` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4390` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4391` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4392` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4393` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4394` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4395` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4396` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4397` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4398` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x4399` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x439a` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x439b` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x439c` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x439d` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x439e` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x439f` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43a0` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43a1` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43a2` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43a3` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43a4` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43a5` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43a6` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43a7` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43a8` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43a9` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43aa` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43ab` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43ac` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43ad` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43ae` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43af` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43b0` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43b1` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43b2` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43b3` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43b4` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43b5` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43b6` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43b7` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43b8` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43b9` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43ba` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43bb` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43bc` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43bd` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43be` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43bf` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43c0` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43c1` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43c2` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43c3` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43c4` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43c5` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43c6` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43c7` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43c8` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43c9` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43ca` | — | med | auto-shape | string-table (written by CDINIT2) | -| `0x43de` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x43df` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x43e0` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x43e1` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x43e2` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x43e3` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x43e4` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x43e5` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x43e6` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x43e7` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x43e8` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x43e9` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x43ea` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x43eb` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x43ec` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x43ed` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x43ef` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x43f1` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x43f2` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x43f3` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x43f4` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x43f5` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x43f6` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x43f7` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x43f8` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x43f9` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x43fa` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x43fb` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x43fc` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x43fd` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x43fe` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x43ff` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4400` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4401` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4403` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4405` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4406` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4407` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4408` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4409` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x440a` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x440b` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x440c` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x440d` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x440e` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x440f` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4410` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4411` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4412` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4413` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4414` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4415` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4416` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4417` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4418` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4423` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4424` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4425` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4426` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4427` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4428` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4429` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x442a` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x442b` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x442c` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x442d` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x442e` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x442f` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4430` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4431` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4432` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4433` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4435` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4437` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4438` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4439` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x443a` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x443b` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x443c` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x443d` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x443e` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x443f` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4440` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4441` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4442` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4443` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4444` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4445` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4446` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4447` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4449` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x444b` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x444c` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x444d` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x444e` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x444f` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4450` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4451` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4452` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4453` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4454` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4455` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4456` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4457` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4458` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4459` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x445a` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x445b` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x445c` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x445d` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x445e` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4469` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x446a` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x446b` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x446c` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x446d` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x446e` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x446f` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4470` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4471` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4472` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4473` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4474` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4475` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4476` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4477` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4478` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4479` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x447a` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x447b` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x447c` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x447d` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x447e` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x447f` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4480` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4481` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4482` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4487` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4488` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4489` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x448a` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x448b` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x448c` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x448d` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x448e` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x448f` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4490` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4491` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4492` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4493` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4494` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4495` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4496` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4497` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4498` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4499` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x449a` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x449b` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x449c` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x449d` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x449e` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x449f` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44a0` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44af` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44b0` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44b1` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44b2` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44b3` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44b4` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44b5` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44b6` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44b7` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44b8` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44b9` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44ba` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44bb` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44bc` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44bd` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44be` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44bf` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44c0` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44c1` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44c2` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44c3` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44c4` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44c5` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44c6` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44c7` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44c8` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44c9` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44ca` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44cb` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44cc` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44cd` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44ce` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44cf` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44d0` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44d1` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44d2` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44d3` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44d4` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44d5` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44d6` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44f5` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44f6` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44f7` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44f8` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44f9` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44fa` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44fb` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44fc` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44fd` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44fe` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x44ff` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4500` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4501` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4502` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4503` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4504` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4505` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4506` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4507` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4508` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4509` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x450a` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x450b` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x450c` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x450d` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x450e` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x450f` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4510` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4511` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4512` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4513` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4514` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4515` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4516` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4517` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4518` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4519` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x451a` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x451b` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x451c` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x451d` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x451e` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x451f` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4520` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4521` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4522` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4523` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4524` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4525` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4526` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4527` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4528` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4529` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x452a` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x452b` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x452c` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x452d` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x452e` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x452f` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4530` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4531` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4532` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4533` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4534` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4535` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4536` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4537` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4538` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x4539` | — | med | auto-shape | string-table (written by CTINIT) | -| `0x453c` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4541` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4542` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4544` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4545` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4546` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4547` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4548` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x454a` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x454b` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x454d` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x454e` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x454f` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4550` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4553` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4554` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4556` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4557` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4559` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x455a` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x455c` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x455f` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4560` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4562` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4565` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4566` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x456b` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x456c` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x456e` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4571` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4572` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4574` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4575` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4577` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4578` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x457a` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x457b` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x457d` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x457e` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4580` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4581` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4583` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4584` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4586` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4589` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x458a` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x458c` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x458d` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x458f` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4590` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4595` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4596` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4597` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x4598` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x459b` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x459c` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x459d` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x459e` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x459f` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x45a1` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x45a2` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x45a4` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x45a5` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x45a7` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x45a8` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x45aa` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x45ab` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x45ad` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x45ae` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x45b0` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x45b3` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x45b4` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x45b6` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x45b7` | — | med | auto-shape | string-table (written by TRINIT) | -| `0x45ba` | — | med | auto-shape | string-table (written by MAINIT) | -| `0x45bb` | — | med | auto-shape | string-table (written by MAINIT) | -| `0x45bc` | — | med | auto-shape | string-table (written by MAINIT) | -| `0x45bd` | — | med | auto-shape | string-table (written by MAINIT) | -| `0x45be` | — | med | auto-shape | string-table (written by MAINIT) | -| `0x45bf` | — | med | auto-shape | string-table (written by MAINIT) | -| `0x45c0` | — | med | auto-shape | string-table (written by MAINIT) | -| `0x45c1` | — | med | auto-shape | string-table (written by MAINIT) | -| `0x45c2` | — | med | auto-shape | string-table (written by MAINIT) | -| `0x45c3` | — | med | auto-shape | string-table (written by MAINIT) | -| `0x45c4` | — | med | auto-shape | string-table (written by MAINIT) | -| `0x45d8` | — | med | auto-shape | string-table (written by CIINIT) | -| `0x45d9` | — | med | auto-shape | string-table (written by CIINIT) | -| `0x45da` | — | med | auto-shape | string-table (written by CIINIT) | -| `0x45db` | — | med | auto-shape | string-table (written by CIINIT) | -| `0x45dc` | — | med | auto-shape | string-table (written by CIINIT) | -| `0x45dd` | — | med | auto-shape | string-table (written by CIINIT) | -| `0x45de` | — | med | auto-shape | string-table (written by CIINIT) | -| `0x45df` | — | med | auto-shape | string-table (written by CIINIT) | -| `0x45e0` | — | med | auto-shape | string-table (written by CIINIT) | -| `0x45e1` | — | med | auto-shape | string-table (written by CIINIT) | -| `0x45e2` | — | med | auto-shape | string-table (written by CIINIT) | -| `0x45e3` | — | med | auto-shape | string-table (written by CIINIT) | -| `0x45e4` | — | med | auto-shape | string-table (written by CIINIT) | -| `0x45e5` | — | med | auto-shape | string-table (written by CIINIT) | -| `0x45e6` | — | med | auto-shape | string-table (written by CIINIT) | -| `0x45e7` | — | med | auto-shape | string-table (written by CIINIT) | -| `0x45e8` | — | med | auto-shape | string-table (written by CIINIT) | -| `0x45e9` | — | med | auto-shape | string-table (written by CIINIT) | -| `0x45ea` | — | med | auto-shape | string-table (written by CIINIT) | -| `0x45eb` | — | med | auto-shape | string-table (written by CIINIT) | -| `0x45ec` | — | med | auto-shape | string-table (written by CIINIT) | -| `0x45ed` | — | med | auto-shape | string-table (written by CIINIT) | -| `0x45ee` | — | med | auto-shape | string-table (written by CIINIT) | -| `0x45ef` | — | med | auto-shape | string-table (written by CIINIT) | -| `0x463c` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x463d` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x463e` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x463f` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x4640` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x4641` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x4642` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x4643` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x4644` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x4645` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x4646` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x4647` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x4648` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x4649` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x464a` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x464b` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x464c` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x464d` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x464e` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x464f` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x4650` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x4651` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x4652` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x4653` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x4654` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x4655` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x4656` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x4657` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x4658` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x4659` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x465a` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x465b` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x465c` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x465d` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x465e` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x465f` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x466d` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x466e` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x466f` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x4670` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x4671` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x4672` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x4673` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x4681` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x4682` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x4683` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x4684` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x4685` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x4686` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x4687` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x4688` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x469f` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x46a0` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x46a1` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x46a2` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x46a3` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x46a4` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x46a5` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x46a6` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x46a7` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x46a8` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x46a9` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x46aa` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x46ab` | — | med | auto-shape | string-table (written by VIINIT) | -| `0x46b3` | — | med | auto-shape | string-table (written by VIINIT) | - -## ui-toggle - -| address | name | conf | source | usage | -|---|---|---|---|---| -| `0x6be` | — | low | inference | ADV message-window / text-render state in the 0x6bx-0x6cx chrome cluster (passed to render helpers u0041F9C0/u00415F70 alongside 0x6c3). NOT a story flag — high scene-reach is from the shared render chrome. Branch-read in 146 scenes. | -| `0x6c1` | adv_chrome_enabled | high | investigation | Inherited SYSTEM4 UI-boot flag. Standard ADV scripts register the five visible SO001 control-strip pointer rectangles only while nonzero; zero skips directly to the three off-screen keyboard/pad records. The Phase-A single-scene Godot bootstrap seeds the native observed value 1. | -| `0x6c3` | — | low | inference | ADV message-window / text-render state in the 0x6bx-0x6cx chrome cluster (`mov 0x6c3,` then `u00415F70(0x6c3)` right after draw-texture; paired with 0x6be). NOT a story flag. Branch-read in 136 scenes. | -| `0x6c9` | adv_hover_history | high | investigation | Pointer-hover flag for the standard ADV History button at (684,572). Its op 0x90 enter/leave callbacks set 1/0; the shared SO001 redraw shows the History tooltip plus generic hover overlay while set. | -| `0x6ca` | adv_hover_auto_message | high | investigation | Pointer-hover flag for the standard ADV Auto-message button at (706,572). See adv_hover_history. | -| `0x6cb` | adv_hover_message_skip | high | investigation | Pointer-hover flag for the standard ADV all-message Skip button at (728,572). See adv_hover_history. | -| `0x6cc` | adv_hover_read_message_skip | high | investigation | Pointer-hover flag for the standard ADV read-message-only Skip button at (750,572). See adv_hover_history. | -| `0x6cd` | adv_hover_hide_window | high | investigation | Pointer-hover flag for the standard ADV Hide-window button at (772,572). See adv_hover_history. | -| `0x62425` | adv_hide_window_enabled | high | investigation | Native ADV-scheduler permission for the standard Hide Window action. After op 0x199 enters the registered yield-A handler, every standard ADV scene calls HIDEWIN.BIN only while this value is nonzero. No script writes it and the complete boot-to-SC0000 VM-write capture does not contain it, so it is native-owned inherited state rather than saved-game or script boot data. The Godot scene bootstrap mirrors the original enabled value 1. | -| `0x15a096` | information_message_handled | high | investigation | INFOMES clears this before walking handler rows and stops when it becomes one. CIMES, EIMES, and VIMES set it after rendering a matching character, enemy, or glossary message, implementing a first-handler-wins extension chain. | - -## unknown - -| address | name | conf | source | usage | -|---|---|---|---|---| -| `0x3238` | — | low | inference | Config/settings global (CONFIG.BIN/INITCONFIG.BIN writer, scene-reach 0) — NOT a scene story flag; miner over-tagged it. Branch-read in 5 scripts; compared against [1]. | -| `0x3301` | — | low | inference | Config/settings global (INITCONFIG.BIN writer, scene-reach 0) — NOT a scene story flag; miner over-tagged it. Branch-read in 6 scripts; compared against [1, 2]. | -| `0x3303` | — | low | inference | Config/settings global (CONFIG.BIN/INITCONFIG.BIN writer, scene-reach 0) — NOT a scene story flag; miner over-tagged it. Branch-read in 8 scripts; compared against [1]. | -| `0x3304` | — | low | inference | Config/settings global (CONFIG.BIN/INITCONFIG.BIN writer, scene-reach 0) — NOT a scene story flag; miner over-tagged it. Branch-read in 13 scripts; compared against [1]. | -| `0x6249e` | — | low | inference | Graphics-subsystem state in the 0x624xx gfx-object range (set via `mov 0x6249e,` alongside `mov 0x62450,`). Likely a draw/slot parameter, NOT a story flag. Branch-read in 78 scenes. | -| `0xab8e7` | class_change_selected_level | high | investigation | CALCCC clears this accumulator before invoking the class-change rule scripts. Each eligible CCINIT rule replaces it only when its threshold is higher than the current selection; nonzero then signals CALCCC and ADDEXP to apply and report the chosen promotion. | -| `0xab8e8` | class_change_deployment_cost_delta | high | investigation | Shared class-change output initialized by CALCCC and incremented by the selected CCINIT rule. CALCCC adds it to unit_deployment_cost_adjustments and ADDEXP reports the signed cost change. | -| `0xab8e9` | class_change_stat_bonuses | high | investigation | Fourteen-cell class-change accumulator using the unit stat column order. CALCCC zeroes it, CCINIT adds the selected rule's bonuses, and CALCCC adds the result to unit_current_stats with per-column caps. EVOLVE separately clears it and calls CCINIT to preview the next Lily form's movement bonus. Columns: 0=accuracy, 1=evasion, 2=physical_attack, 3=physical_defense, 4=magic_attack, 5=magic_defense, 6=speed, 7=luck, 8=critical_chance, 9=capture_power, 10=movement, 11=max_hp, 12=max_sp, 13=max_fs. | -| `0xab8f7` | class_change_skill_awards | high | investigation | Four-cell class-change skill output. CALCCC zeroes the buffer, CCINIT writes awarded skill ids, and CALCCC copies positive values from the first three cells into unit_skill_ids before ADDEXP reports the changes. Columns: 0=skill_slot_1, 1=skill_slot_2, 2=skill_slot_3, 3=skill_slot_4. | -| `0xab8fb` | class_change_state_work | high | investigation | Ten-cell working copy of the current unit's unit_class_change_state row. CCINIT sets the slot belonging to an awarded rule; CALCCC manages the block copy between this buffer and persistent per-unit state. Columns: 0=promotion_slot_1, 1=promotion_slot_2, 2=promotion_slot_3, 3=promotion_slot_4, 4=promotion_slot_5, 5=promotion_slot_6, 6=promotion_slot_7, 7=promotion_slot_8, 8=promotion_slot_9, 9=promotion_slot_10. | -| `0x152618` | battle_outcome_flags | high | investigation | BTL derives the low three bits from the acting and target entities' post-exchange HP. Mask 4 selects the nonlethal experience table; otherwise BTL uses the defeat table. FIELD consumes and combines the result during post-battle flow, then passes it to SCJUMP, whose former progress-C comparisons are battle-outcome decisions. | -| `0x15261c` | battle_hit_result | high | investigation | CALCDMG initializes this to miss, changes it to hit after the accuracy gate, and then to critical after the critical-chance gate. BTL uses the same result to choose presentation, cut-ins, and critical voice columns; -1 is written only by a synthetic pre-battle path. | -| `0x15261d` | battle_hp_delta | high | investigation | CALCDMG's signed HP result. BTL subtracts it from the target's current HP, so positive values deal damage and negative values heal; zero and result state gate damage reactions and defeat handling. | -| `0x15261e` | battle_actor_hp_recovery | high | investigation | CALCDMG's actor-side HP recovery output. Absorb (SKINIT skill 40) contributes half of positive battle_hp_delta with a minimum of one, and the target's HP-absorption condition can add its level-scaled amount capped at the damage dealt. BTL adds the result to the actor's current HP, renders the green recovery number, and clamps the resource through the ordinary post-battle path. | -| `0x84a` | — | high | auto-shape | unit-name-table | -| `0xc32` | — | high | auto-shape | unit-desc-table | -| `0x101a` | — | high | auto-shape | unit-desc1-table | -| `0x14ca` | — | high | auto-shape | unit-desc2-table | -| `0x14cb` | — | high | auto-shape | unit-desc3-table | -| `0x1bd2` | — | high | auto-shape | item-name-table | -| `0x1fba` | — | high | auto-shape | item-desc-table | -| `0x23a2` | — | high | auto-shape | skill-name-table | -| `0x24ce` | — | high | auto-shape | skill-desc-table | -| `0x32f0` | — | med | auto-shape | current-entity-index? | -| `0x3ebe` | — | med | auto-shape | record-table[stride 10] | -| `0x7e54` | — | med | auto-shape | record-table[stride 50] | -| `0x4e3d7` | — | med | auto-shape | record-table[stride 14] | -| `0x53a2b` | — | med | auto-shape | record-table[stride 20] | -| `0x53ef5` | — | low | auto-shape | index/counter? | -| `0x53ef7` | — | med | auto-shape | record-table[stride 8] | -| `0x57356` | — | med | auto-shape | current-entity-index? | -| `0x62436` | — | low | auto-shape | index/counter? | -| `0x62ccb` | — | low | auto-shape | index/counter? | -| `0x81c96` | — | med | auto-shape | record-table[stride 3] | -| `0x8284e` | — | med | auto-shape | record-table[stride 3] | -| `0xcc9f0` | — | low | auto-shape | index/counter? | -| `0xccbdc` | — | med | auto-shape | record-table[stride 14] | -| `0xccc33` | — | med | auto-shape | record-table[stride 3] | -| `0xe6c5e` | — | med | auto-shape | obinit-field | -| `0xe6cc2` | — | med | auto-shape | obinit-field | -| `0xe6d26` | — | med | auto-shape | obinit-field | -| `0xe6d8a` | — | med | auto-shape | obinit-field | -| `0xe6e52` | — | low | auto-shape | obinit-field? | -| `0xe6eb6` | — | med | auto-shape | obinit-field | -| `0xe6f1a` | — | low | auto-shape | obinit-field? | -| `0xe6f7e` | — | low | auto-shape | obinit-field? | -| `0xe6fe2` | — | med | auto-shape | record-table[stride 3] | -| `0xe710e` | — | low | auto-shape | obinit-field? | -| `0xe7172` | — | low | auto-shape | obinit-field? | -| `0xe71d6` | — | med | auto-shape | record-table[stride 3] | -| `0x1519fa` | — | med | auto-shape | cdinit2-field | -| `0x151a7a` | — | low | auto-shape | cdinit2-field? | -| `0x151a7c` | — | low | auto-shape | cdinit2-field? | -| `0x151a7d` | — | low | auto-shape | cdinit2-field? | -| `0x151a7e` | — | low | auto-shape | cdinit2-field? | -| `0x151a7f` | — | low | auto-shape | cdinit2-field? | -| `0x151a80` | — | low | auto-shape | cdinit2-field? | -| `0x151a81` | — | low | auto-shape | cdinit2-field? | -| `0x151a82` | — | low | auto-shape | cdinit2-field? | -| `0x151a83` | — | low | auto-shape | cdinit2-field? | -| `0x151a84` | — | low | auto-shape | cdinit2-field? | -| `0x151a85` | — | low | auto-shape | cdinit2-field? | -| `0x151a86` | — | low | auto-shape | cdinit2-field? | -| `0x151a87` | — | low | auto-shape | cdinit2-field? | -| `0x151a88` | — | low | auto-shape | cdinit2-field? | -| `0x151a89` | — | low | auto-shape | cdinit2-field? | -| `0x151a8a` | — | low | auto-shape | cdinit2-field? | -| `0x151a8b` | — | low | auto-shape | cdinit2-field? | -| `0x151a8c` | — | low | auto-shape | cdinit2-field? | -| `0x151a8d` | — | low | auto-shape | cdinit2-field? | -| `0x151a8e` | — | low | auto-shape | cdinit2-field? | -| `0x151a8f` | — | low | auto-shape | cdinit2-field? | -| `0x151a90` | — | low | auto-shape | cdinit2-field? | -| `0x151a91` | — | low | auto-shape | cdinit2-field? | -| `0x151a92` | — | low | auto-shape | cdinit2-field? | -| `0x151a94` | — | low | auto-shape | cdinit2-field? | -| `0x151a95` | — | low | auto-shape | cdinit2-field? | -| `0x151a96` | — | low | auto-shape | cdinit2-field? | -| `0x151a97` | — | low | auto-shape | cdinit2-field? | -| `0x151a98` | — | low | auto-shape | cdinit2-field? | -| `0x151a99` | — | low | auto-shape | cdinit2-field? | -| `0x151a9a` | — | low | auto-shape | cdinit2-field? | -| `0x151a9b` | — | low | auto-shape | cdinit2-field? | -| `0x151a9c` | — | low | auto-shape | cdinit2-field? | -| `0x151a9d` | — | low | auto-shape | cdinit2-field? | -| `0x151a9e` | — | low | auto-shape | cdinit2-field? | -| `0x151a9f` | — | low | auto-shape | cdinit2-field? | -| `0x151aa0` | — | low | auto-shape | cdinit2-field? | -| `0x151aa1` | — | low | auto-shape | cdinit2-field? | -| `0x151aa2` | — | low | auto-shape | cdinit2-field? | -| `0x151aa3` | — | low | auto-shape | cdinit2-field? | -| `0x151aa4` | — | low | auto-shape | cdinit2-field? | -| `0x151aa5` | — | low | auto-shape | cdinit2-field? | -| `0x151aa6` | — | low | auto-shape | cdinit2-field? | -| `0x151aa7` | — | low | auto-shape | cdinit2-field? | -| `0x151aa8` | — | low | auto-shape | cdinit2-field? | -| `0x151aa9` | — | low | auto-shape | cdinit2-field? | -| `0x151aaa` | — | low | auto-shape | cdinit2-field? | -| `0x151aac` | — | low | auto-shape | cdinit2-field? | -| `0x151aad` | — | low | auto-shape | cdinit2-field? | -| `0x151aae` | — | low | auto-shape | cdinit2-field? | -| `0x151aaf` | — | low | auto-shape | cdinit2-field? | -| `0x151ab0` | — | low | auto-shape | cdinit2-field? | -| `0x151ab1` | — | low | auto-shape | cdinit2-field? | -| `0x151ab2` | — | low | auto-shape | cdinit2-field? | -| `0x151ab3` | — | low | auto-shape | cdinit2-field? | -| `0x151ab4` | — | low | auto-shape | cdinit2-field? | -| `0x151ab5` | — | low | auto-shape | cdinit2-field? | -| `0x151ab6` | — | low | auto-shape | cdinit2-field? | -| `0x151ab7` | — | low | auto-shape | cdinit2-field? | -| `0x151ab8` | — | low | auto-shape | cdinit2-field? | -| `0x151ab9` | — | low | auto-shape | cdinit2-field? | -| `0x151aba` | — | low | auto-shape | cdinit2-field? | -| `0x151abb` | — | low | auto-shape | cdinit2-field? | -| `0x151abc` | — | low | auto-shape | cdinit2-field? | -| `0x151abd` | — | low | auto-shape | cdinit2-field? | -| `0x151abe` | — | low | auto-shape | cdinit2-field? | -| `0x151abf` | — | low | auto-shape | cdinit2-field? | -| `0x151ac0` | — | low | auto-shape | cdinit2-field? | -| `0x151ac1` | — | low | auto-shape | cdinit2-field? | -| `0x151ba6` | — | low | auto-shape | cdinit2-field? | -| `0x151ba8` | — | low | auto-shape | cdinit2-field? | -| `0x151baa` | — | low | auto-shape | cdinit2-field? | -| `0x151bac` | — | low | auto-shape | cdinit2-field? | -| `0x151bae` | — | low | auto-shape | cdinit2-field? | -| `0x151bb0` | — | low | auto-shape | cdinit2-field? | -| `0x151bb2` | — | low | auto-shape | cdinit2-field? | -| `0x151bb4` | — | low | auto-shape | cdinit2-field? | -| `0x151bb6` | — | low | auto-shape | cdinit2-field? | -| `0x151bb8` | — | low | auto-shape | cdinit2-field? | -| `0x151bba` | — | low | auto-shape | cdinit2-field? | -| `0x151bbe` | — | low | auto-shape | cdinit2-field? | -| `0x151bc0` | — | low | auto-shape | cdinit2-field? | -| `0x151bc2` | — | low | auto-shape | cdinit2-field? | -| `0x151bc4` | — | low | auto-shape | cdinit2-field? | -| `0x151bc6` | — | low | auto-shape | cdinit2-field? | -| `0x151bc8` | — | low | auto-shape | cdinit2-field? | -| `0x151bca` | — | low | auto-shape | cdinit2-field? | -| `0x151bcc` | — | low | auto-shape | cdinit2-field? | -| `0x151bce` | — | low | auto-shape | cdinit2-field? | -| `0x151bd0` | — | low | auto-shape | cdinit2-field? | -| `0x151bd2` | — | low | auto-shape | cdinit2-field? | -| `0x151bd6` | — | low | auto-shape | cdinit2-field? | -| `0x151bd8` | — | low | auto-shape | cdinit2-field? | -| `0x151bda` | — | low | auto-shape | cdinit2-field? | -| `0x151bdc` | — | low | auto-shape | cdinit2-field? | -| `0x151bde` | — | low | auto-shape | cdinit2-field? | -| `0x151be0` | — | low | auto-shape | cdinit2-field? | -| `0x151be2` | — | low | auto-shape | cdinit2-field? | -| `0x151be4` | — | low | auto-shape | cdinit2-field? | -| `0x151be6` | — | low | auto-shape | cdinit2-field? | -| `0x151be8` | — | low | auto-shape | cdinit2-field? | -| `0x151bea` | — | low | auto-shape | cdinit2-field? | -| `0x151cb6` | — | low | auto-shape | cdinit2-field? | -| `0x151d1a` | — | low | auto-shape | cdinit2-field? | -| `0x151d7e` | — | low | auto-shape | cdinit2-field? | -| `0x151de6` | — | low | auto-shape | cdinit2-field? | -| `0x151de7` | — | low | auto-shape | cdinit2-field? | -| `0x151de8` | — | low | auto-shape | cdinit2-field? | -| `0x151de9` | — | low | auto-shape | cdinit2-field? | -| `0x151dea` | — | low | auto-shape | cdinit2-field? | -| `0x151f12` | — | low | auto-shape | cdinit2-field? | -| `0x151f13` | — | low | auto-shape | cdinit2-field? | -| `0x151f14` | — | low | auto-shape | cdinit2-field? | -| `0x151f15` | — | low | auto-shape | cdinit2-field? | -| `0x151f16` | — | low | auto-shape | cdinit2-field? | -| `0x15203a` | — | low | auto-shape | cdinit2-field? | -| `0x15209e` | — | low | auto-shape | cdinit2-field? | -| `0x152166` | — | low | auto-shape | cdinit2-field? | -| `0x152167` | — | low | auto-shape | cdinit2-field? | -| `0x152168` | — | low | auto-shape | cdinit2-field? | -| `0x152169` | — | low | auto-shape | cdinit2-field? | -| `0x15216a` | — | low | auto-shape | cdinit2-field? | -| `0x152171` | — | low | auto-shape | cdinit2-field? | -| `0x152174` | — | low | auto-shape | cdinit2-field? | -| `0x152292` | — | low | auto-shape | cdinit2-field? | -| `0x152293` | — | low | auto-shape | cdinit2-field? | -| `0x152294` | — | low | auto-shape | cdinit2-field? | -| `0x152295` | — | low | auto-shape | cdinit2-field? | -| `0x152296` | — | low | auto-shape | cdinit2-field? | -| `0x15229d` | — | low | auto-shape | cdinit2-field? | -| `0x1522a0` | — | low | auto-shape | cdinit2-field? | -| `0x15235a` | — | low | auto-shape | cdinit2-field? | -| `0x1523be` | — | low | auto-shape | cdinit2-field? | -| `0x152422` | — | med | auto-shape | cdinit2-field | -| `0x152878` | — | low | auto-shape | index/counter? | -| `0x15288b` | — | low | auto-shape | index/counter? | -| `0x152894` | — | low | auto-shape | btaninit2-field? | -| `0x152895` | — | low | auto-shape | btaninit2-field? | -| `0x152896` | — | low | auto-shape | btaninit2-field? | -| `0x152897` | — | low | auto-shape | btaninit2-field? | -| `0x152899` | — | low | auto-shape | btaninit2-field? | -| `0x15289a` | — | low | auto-shape | btaninit2-field? | -| `0x15289b` | — | low | auto-shape | btaninit2-field? | -| `0x15289c` | — | low | auto-shape | btaninit2-field? | -| `0x15289d` | — | low | auto-shape | btaninit2-field? | -| `0x15289f` | — | low | auto-shape | btaninit2-field? | -| `0x1528a0` | — | low | auto-shape | btaninit2-field? | -| `0x1528a1` | — | low | auto-shape | btaninit2-field? | -| `0x1528a2` | — | low | auto-shape | btaninit2-field? | -| `0x1528a3` | — | low | auto-shape | btaninit2-field? | -| `0x1528a5` | — | low | auto-shape | btaninit2-field? | -| `0x1528a6` | — | low | auto-shape | btaninit2-field? | -| `0x1528a7` | — | low | auto-shape | btaninit2-field? | -| `0x1528a8` | — | low | auto-shape | btaninit2-field? | -| `0x1528a9` | — | low | auto-shape | btaninit2-field? | -| `0x1528ab` | — | low | auto-shape | btaninit2-field? | -| `0x1528ac` | — | low | auto-shape | btaninit2-field? | -| `0x1528ad` | — | low | auto-shape | btaninit2-field? | -| `0x1528ae` | — | low | auto-shape | btaninit2-field? | -| `0x1528af` | — | low | auto-shape | btaninit2-field? | -| `0x1528b1` | — | low | auto-shape | btaninit2-field? | -| `0x1528b2` | — | low | auto-shape | btaninit2-field? | -| `0x1528b3` | — | low | auto-shape | btaninit2-field? | -| `0x1528b4` | — | low | auto-shape | btaninit2-field? | -| `0x1528b5` | — | low | auto-shape | btaninit2-field? | -| `0x1528b7` | — | low | auto-shape | btaninit2-field? | -| `0x1528b8` | — | low | auto-shape | btaninit2-field? | -| `0x1528b9` | — | low | auto-shape | btaninit2-field? | -| `0x1528ba` | — | low | auto-shape | btaninit2-field? | -| `0x1528bb` | — | low | auto-shape | btaninit2-field? | -| `0x1528bd` | — | low | auto-shape | btaninit2-field? | -| `0x1528be` | — | low | auto-shape | btaninit2-field? | -| `0x1528bf` | — | low | auto-shape | btaninit2-field? | -| `0x1528c0` | — | low | auto-shape | btaninit2-field? | -| `0x1528c1` | — | low | auto-shape | btaninit2-field? | -| `0x1528c3` | — | low | auto-shape | btaninit2-field? | -| `0x1528c4` | — | low | auto-shape | btaninit2-field? | -| `0x1528c5` | — | low | auto-shape | btaninit2-field? | -| `0x1528c6` | — | low | auto-shape | btaninit2-field? | -| `0x1528c7` | — | low | auto-shape | btaninit2-field? | -| `0x1528c9` | — | low | auto-shape | btaninit2-field? | -| `0x1528ca` | — | low | auto-shape | btaninit2-field? | -| `0x1528cb` | — | low | auto-shape | btaninit2-field? | -| `0x1528cc` | — | low | auto-shape | btaninit2-field? | -| `0x1528cd` | — | low | auto-shape | btaninit2-field? | -| `0x1528cf` | — | low | auto-shape | btaninit2-field? | -| `0x1528d0` | — | low | auto-shape | btaninit2-field? | -| `0x1528d1` | — | low | auto-shape | btaninit2-field? | -| `0x1528d2` | — | low | auto-shape | btaninit2-field? | -| `0x1528d3` | — | low | auto-shape | btaninit2-field? | -| `0x1528d5` | — | low | auto-shape | btaninit2-field? | -| `0x1528d6` | — | low | auto-shape | btaninit2-field? | -| `0x1528d7` | — | low | auto-shape | btaninit2-field? | -| `0x1528d8` | — | low | auto-shape | btaninit2-field? | -| `0x1528d9` | — | low | auto-shape | btaninit2-field? | -| `0x1528db` | — | low | auto-shape | btaninit2-field? | -| `0x1528dc` | — | low | auto-shape | btaninit2-field? | -| `0x1528dd` | — | low | auto-shape | btaninit2-field? | -| `0x1528de` | — | low | auto-shape | btaninit2-field? | -| `0x1528df` | — | low | auto-shape | btaninit2-field? | -| `0x1528e1` | — | low | auto-shape | btaninit2-field? | -| `0x1528e2` | — | low | auto-shape | btaninit2-field? | -| `0x1528e3` | — | low | auto-shape | btaninit2-field? | -| `0x1528e4` | — | low | auto-shape | btaninit2-field? | -| `0x1528e5` | — | low | auto-shape | btaninit2-field? | -| `0x1528e7` | — | low | auto-shape | btaninit2-field? | -| `0x1528e8` | — | low | auto-shape | btaninit2-field? | -| `0x1528e9` | — | low | auto-shape | btaninit2-field? | -| `0x1528ea` | — | low | auto-shape | btaninit2-field? | -| `0x1528eb` | — | low | auto-shape | btaninit2-field? | -| `0x1528ed` | — | low | auto-shape | btaninit2-field? | -| `0x1528ee` | — | low | auto-shape | btaninit2-field? | -| `0x1528ef` | — | low | auto-shape | btaninit2-field? | -| `0x1528f0` | — | low | auto-shape | btaninit2-field? | -| `0x1528f1` | — | low | auto-shape | btaninit2-field? | -| `0x1528f3` | — | low | auto-shape | btaninit2-field? | -| `0x1528f4` | — | low | auto-shape | btaninit2-field? | -| `0x1528f5` | — | low | auto-shape | btaninit2-field? | -| `0x1528f6` | — | low | auto-shape | btaninit2-field? | -| `0x1528f7` | — | low | auto-shape | btaninit2-field? | -| `0x1528f9` | — | low | auto-shape | btaninit2-field? | -| `0x1528fa` | — | low | auto-shape | btaninit2-field? | -| `0x1528fb` | — | low | auto-shape | btaninit2-field? | -| `0x1528fc` | — | low | auto-shape | btaninit2-field? | -| `0x1528fd` | — | low | auto-shape | btaninit2-field? | -| `0x1528ff` | — | low | auto-shape | btaninit2-field? | -| `0x152900` | — | low | auto-shape | btaninit2-field? | -| `0x152901` | — | low | auto-shape | btaninit2-field? | -| `0x152902` | — | low | auto-shape | btaninit2-field? | -| `0x152903` | — | low | auto-shape | btaninit2-field? | -| `0x152905` | — | low | auto-shape | btaninit2-field? | -| `0x152906` | — | low | auto-shape | btaninit2-field? | -| `0x152907` | — | low | auto-shape | btaninit2-field? | -| `0x152908` | — | low | auto-shape | btaninit2-field? | -| `0x152909` | — | low | auto-shape | btaninit2-field? | -| `0x15290b` | — | low | auto-shape | btaninit2-field? | -| `0x15290c` | — | low | auto-shape | btaninit2-field? | -| `0x15290d` | — | low | auto-shape | btaninit2-field? | -| `0x15290e` | — | low | auto-shape | btaninit2-field? | -| `0x15290f` | — | low | auto-shape | btaninit2-field? | -| `0x152911` | — | low | auto-shape | btaninit2-field? | -| `0x152aec` | — | low | auto-shape | btaninit2-field? | -| `0x152aed` | — | low | auto-shape | btaninit2-field? | -| `0x152aee` | — | low | auto-shape | btaninit2-field? | -| `0x152aef` | — | low | auto-shape | btaninit2-field? | -| `0x152af1` | — | low | auto-shape | btaninit2-field? | -| `0x152af2` | — | low | auto-shape | btaninit2-field? | -| `0x152af3` | — | low | auto-shape | btaninit2-field? | -| `0x152af4` | — | low | auto-shape | btaninit2-field? | -| `0x152af6` | — | low | auto-shape | btaninit2-field? | -| `0x152af7` | — | low | auto-shape | btaninit2-field? | -| `0x152af8` | — | low | auto-shape | btaninit2-field? | -| `0x152af9` | — | low | auto-shape | btaninit2-field? | -| `0x152afb` | — | low | auto-shape | btaninit2-field? | -| `0x152afc` | — | low | auto-shape | btaninit2-field? | -| `0x152afd` | — | low | auto-shape | btaninit2-field? | -| `0x152afe` | — | low | auto-shape | btaninit2-field? | -| `0x152b00` | — | low | auto-shape | btaninit2-field? | -| `0x152b01` | — | low | auto-shape | btaninit2-field? | -| `0x152b02` | — | low | auto-shape | btaninit2-field? | -| `0x152b03` | — | low | auto-shape | btaninit2-field? | -| `0x152b05` | — | low | auto-shape | btaninit2-field? | -| `0x152b06` | — | low | auto-shape | btaninit2-field? | -| `0x152b07` | — | low | auto-shape | btaninit2-field? | -| `0x152b08` | — | low | auto-shape | btaninit2-field? | -| `0x152b0a` | — | low | auto-shape | btaninit2-field? | -| `0x152b0b` | — | low | auto-shape | btaninit2-field? | -| `0x152b0c` | — | low | auto-shape | btaninit2-field? | -| `0x152b0d` | — | low | auto-shape | btaninit2-field? | -| `0x152b0f` | — | low | auto-shape | btaninit2-field? | -| `0x152b10` | — | low | auto-shape | btaninit2-field? | -| `0x152b11` | — | low | auto-shape | btaninit2-field? | -| `0x152b12` | — | low | auto-shape | btaninit2-field? | -| `0x152b14` | — | low | auto-shape | btaninit2-field? | -| `0x152b15` | — | low | auto-shape | btaninit2-field? | -| `0x152b16` | — | low | auto-shape | btaninit2-field? | -| `0x152b17` | — | low | auto-shape | btaninit2-field? | -| `0x152b19` | — | low | auto-shape | btaninit2-field? | -| `0x152b1a` | — | low | auto-shape | btaninit2-field? | -| `0x152b1b` | — | low | auto-shape | btaninit2-field? | -| `0x152b1c` | — | low | auto-shape | btaninit2-field? | -| `0x152b1e` | — | low | auto-shape | btaninit2-field? | -| `0x152b1f` | — | low | auto-shape | btaninit2-field? | -| `0x152b20` | — | low | auto-shape | btaninit2-field? | -| `0x152b21` | — | low | auto-shape | btaninit2-field? | -| `0x152b23` | — | low | auto-shape | btaninit2-field? | -| `0x152b24` | — | low | auto-shape | btaninit2-field? | -| `0x152b25` | — | low | auto-shape | btaninit2-field? | -| `0x152b26` | — | low | auto-shape | btaninit2-field? | -| `0x152b28` | — | low | auto-shape | btaninit2-field? | -| `0x152b29` | — | low | auto-shape | btaninit2-field? | -| `0x152b2a` | — | low | auto-shape | btaninit2-field? | -| `0x152b2b` | — | low | auto-shape | btaninit2-field? | -| `0x152b2d` | — | low | auto-shape | btaninit2-field? | -| `0x152b2e` | — | low | auto-shape | btaninit2-field? | -| `0x152b2f` | — | low | auto-shape | btaninit2-field? | -| `0x152b30` | — | low | auto-shape | btaninit2-field? | -| `0x152b32` | — | low | auto-shape | btaninit2-field? | -| `0x152b33` | — | low | auto-shape | btaninit2-field? | -| `0x152b34` | — | low | auto-shape | btaninit2-field? | -| `0x152b35` | — | low | auto-shape | btaninit2-field? | -| `0x152b37` | — | low | auto-shape | btaninit2-field? | -| `0x152b38` | — | low | auto-shape | btaninit2-field? | -| `0x152b39` | — | low | auto-shape | btaninit2-field? | -| `0x152b3a` | — | low | auto-shape | btaninit2-field? | -| `0x152b3c` | — | low | auto-shape | btaninit2-field? | -| `0x152b3d` | — | low | auto-shape | btaninit2-field? | -| `0x152b3e` | — | low | auto-shape | btaninit2-field? | -| `0x152b3f` | — | low | auto-shape | btaninit2-field? | -| `0x152b41` | — | low | auto-shape | btaninit2-field? | -| `0x152b42` | — | low | auto-shape | btaninit2-field? | -| `0x152b43` | — | low | auto-shape | btaninit2-field? | -| `0x152b44` | — | low | auto-shape | btaninit2-field? | -| `0x152b46` | — | low | auto-shape | btaninit2-field? | -| `0x152b47` | — | low | auto-shape | btaninit2-field? | -| `0x152b48` | — | low | auto-shape | btaninit2-field? | -| `0x152b49` | — | low | auto-shape | btaninit2-field? | -| `0x152b4b` | — | low | auto-shape | btaninit2-field? | -| `0x152b4c` | — | low | auto-shape | btaninit2-field? | -| `0x152b4d` | — | low | auto-shape | btaninit2-field? | -| `0x152b4e` | — | low | auto-shape | btaninit2-field? | -| `0x152b50` | — | low | auto-shape | btaninit2-field? | -| `0x152b51` | — | low | auto-shape | btaninit2-field? | -| `0x152b52` | — | low | auto-shape | btaninit2-field? | -| `0x152b53` | — | low | auto-shape | btaninit2-field? | -| `0x152b55` | — | low | auto-shape | btaninit2-field? | -| `0x152b56` | — | low | auto-shape | btaninit2-field? | -| `0x152b57` | — | low | auto-shape | btaninit2-field? | -| `0x152b58` | — | low | auto-shape | btaninit2-field? | -| `0x152b5a` | — | low | auto-shape | btaninit2-field? | -| `0x152b5b` | — | low | auto-shape | btaninit2-field? | -| `0x152b5c` | — | low | auto-shape | btaninit2-field? | -| `0x152b5d` | — | low | auto-shape | btaninit2-field? | -| `0x152b5f` | — | low | auto-shape | btaninit2-field? | -| `0x152b60` | — | low | auto-shape | btaninit2-field? | -| `0x152b61` | — | low | auto-shape | btaninit2-field? | -| `0x152b62` | — | low | auto-shape | btaninit2-field? | -| `0x152b64` | — | low | auto-shape | btaninit2-field? | -| `0x152b65` | — | low | auto-shape | btaninit2-field? | -| `0x152b66` | — | low | auto-shape | btaninit2-field? | -| `0x152b67` | — | low | auto-shape | btaninit2-field? | -| `0x152b69` | — | low | auto-shape | btaninit2-field? | -| `0x152b6a` | — | low | auto-shape | btaninit2-field? | -| `0x152b6b` | — | low | auto-shape | btaninit2-field? | -| `0x152b6c` | — | low | auto-shape | btaninit2-field? | -| `0x152b6e` | — | low | auto-shape | btaninit2-field? | -| `0x152b6f` | — | low | auto-shape | btaninit2-field? | -| `0x152b70` | — | low | auto-shape | btaninit2-field? | -| `0x152b71` | — | low | auto-shape | btaninit2-field? | -| `0x152b73` | — | low | auto-shape | btaninit2-field? | -| `0x152b74` | — | low | auto-shape | btaninit2-field? | -| `0x152b75` | — | low | auto-shape | btaninit2-field? | -| `0x152b76` | — | low | auto-shape | btaninit2-field? | -| `0x152b78` | — | low | auto-shape | btaninit2-field? | -| `0x154006` | — | low | auto-shape | btaninit2-field? | -| `0x154007` | — | low | auto-shape | btaninit2-field? | -| `0x154009` | — | low | auto-shape | btaninit2-field? | -| `0x15400c` | — | low | auto-shape | btaninit2-field? | -| `0x15400d` | — | low | auto-shape | btaninit2-field? | -| `0x15400f` | — | low | auto-shape | btaninit2-field? | -| `0x154012` | — | low | auto-shape | btaninit2-field? | -| `0x154013` | — | low | auto-shape | btaninit2-field? | -| `0x154015` | — | low | auto-shape | btaninit2-field? | -| `0x154018` | — | low | auto-shape | btaninit2-field? | -| `0x154019` | — | low | auto-shape | btaninit2-field? | -| `0x15401b` | — | low | auto-shape | btaninit2-field? | -| `0x15401e` | — | low | auto-shape | btaninit2-field? | -| `0x15401f` | — | low | auto-shape | btaninit2-field? | -| `0x154021` | — | low | auto-shape | btaninit2-field? | -| `0x154024` | — | low | auto-shape | btaninit2-field? | -| `0x154025` | — | low | auto-shape | btaninit2-field? | -| `0x154027` | — | low | auto-shape | btaninit2-field? | -| `0x15402a` | — | low | auto-shape | btaninit2-field? | -| `0x15402b` | — | low | auto-shape | btaninit2-field? | -| `0x15402d` | — | low | auto-shape | btaninit2-field? | -| `0x154030` | — | low | auto-shape | btaninit2-field? | -| `0x154031` | — | low | auto-shape | btaninit2-field? | -| `0x154033` | — | low | auto-shape | btaninit2-field? | -| `0x154036` | — | low | auto-shape | btaninit2-field? | -| `0x154037` | — | low | auto-shape | btaninit2-field? | -| `0x154039` | — | low | auto-shape | btaninit2-field? | -| `0x15403c` | — | low | auto-shape | btaninit2-field? | -| `0x15403d` | — | low | auto-shape | btaninit2-field? | -| `0x15403f` | — | low | auto-shape | btaninit2-field? | -| `0x154042` | — | low | auto-shape | btaninit2-field? | -| `0x154043` | — | low | auto-shape | btaninit2-field? | -| `0x154045` | — | low | auto-shape | btaninit2-field? | -| `0x154048` | — | low | auto-shape | btaninit2-field? | -| `0x154049` | — | low | auto-shape | btaninit2-field? | -| `0x15404b` | — | low | auto-shape | btaninit2-field? | -| `0x15404e` | — | low | auto-shape | btaninit2-field? | -| `0x15404f` | — | low | auto-shape | btaninit2-field? | -| `0x154051` | — | low | auto-shape | btaninit2-field? | -| `0x154054` | — | low | auto-shape | btaninit2-field? | -| `0x154055` | — | low | auto-shape | btaninit2-field? | -| `0x154057` | — | low | auto-shape | btaninit2-field? | -| `0x15405a` | — | low | auto-shape | btaninit2-field? | -| `0x15405b` | — | low | auto-shape | btaninit2-field? | -| `0x15405d` | — | low | auto-shape | btaninit2-field? | -| `0x154060` | — | low | auto-shape | btaninit2-field? | -| `0x154061` | — | low | auto-shape | btaninit2-field? | -| `0x154063` | — | low | auto-shape | btaninit2-field? | -| `0x154066` | — | low | auto-shape | btaninit2-field? | -| `0x154067` | — | low | auto-shape | btaninit2-field? | -| `0x154069` | — | low | auto-shape | btaninit2-field? | -| `0x15406c` | — | low | auto-shape | btaninit2-field? | -| `0x15406d` | — | low | auto-shape | btaninit2-field? | -| `0x15406f` | — | low | auto-shape | btaninit2-field? | -| `0x154072` | — | low | auto-shape | btaninit2-field? | -| `0x154073` | — | low | auto-shape | btaninit2-field? | -| `0x154075` | — | low | auto-shape | btaninit2-field? | -| `0x154078` | — | low | auto-shape | btaninit2-field? | -| `0x154079` | — | low | auto-shape | btaninit2-field? | -| `0x15407b` | — | low | auto-shape | btaninit2-field? | -| `0x15407e` | — | low | auto-shape | btaninit2-field? | -| `0x15407f` | — | low | auto-shape | btaninit2-field? | -| `0x154081` | — | low | auto-shape | btaninit2-field? | -| `0x15425e` | — | low | auto-shape | btaninit2-field? | -| `0x15425f` | — | low | auto-shape | btaninit2-field? | -| `0x154261` | — | low | auto-shape | btaninit2-field? | -| `0x154263` | — | low | auto-shape | btaninit2-field? | -| `0x154264` | — | low | auto-shape | btaninit2-field? | -| `0x154266` | — | low | auto-shape | btaninit2-field? | -| `0x154268` | — | low | auto-shape | btaninit2-field? | -| `0x154269` | — | low | auto-shape | btaninit2-field? | -| `0x15426b` | — | low | auto-shape | btaninit2-field? | -| `0x15426d` | — | low | auto-shape | btaninit2-field? | -| `0x15426e` | — | low | auto-shape | btaninit2-field? | -| `0x154270` | — | low | auto-shape | btaninit2-field? | -| `0x154272` | — | low | auto-shape | btaninit2-field? | -| `0x154273` | — | low | auto-shape | btaninit2-field? | -| `0x154275` | — | low | auto-shape | btaninit2-field? | -| `0x154277` | — | low | auto-shape | btaninit2-field? | -| `0x154278` | — | low | auto-shape | btaninit2-field? | -| `0x15427a` | — | low | auto-shape | btaninit2-field? | -| `0x15427c` | — | low | auto-shape | btaninit2-field? | -| `0x15427d` | — | low | auto-shape | btaninit2-field? | -| `0x15427f` | — | low | auto-shape | btaninit2-field? | -| `0x154281` | — | low | auto-shape | btaninit2-field? | -| `0x154282` | — | low | auto-shape | btaninit2-field? | -| `0x154284` | — | low | auto-shape | btaninit2-field? | -| `0x154286` | — | low | auto-shape | btaninit2-field? | -| `0x154287` | — | low | auto-shape | btaninit2-field? | -| `0x154289` | — | low | auto-shape | btaninit2-field? | -| `0x15428b` | — | low | auto-shape | btaninit2-field? | -| `0x15428c` | — | low | auto-shape | btaninit2-field? | -| `0x15428e` | — | low | auto-shape | btaninit2-field? | -| `0x154290` | — | low | auto-shape | btaninit2-field? | -| `0x154291` | — | low | auto-shape | btaninit2-field? | -| `0x154293` | — | low | auto-shape | btaninit2-field? | -| `0x154295` | — | low | auto-shape | btaninit2-field? | -| `0x154296` | — | low | auto-shape | btaninit2-field? | -| `0x154298` | — | low | auto-shape | btaninit2-field? | -| `0x15429a` | — | low | auto-shape | btaninit2-field? | -| `0x15429b` | — | low | auto-shape | btaninit2-field? | -| `0x15429d` | — | low | auto-shape | btaninit2-field? | -| `0x15429f` | — | low | auto-shape | btaninit2-field? | -| `0x1542a0` | — | low | auto-shape | btaninit2-field? | -| `0x1542a2` | — | low | auto-shape | btaninit2-field? | -| `0x1542a4` | — | low | auto-shape | btaninit2-field? | -| `0x1542a5` | — | low | auto-shape | btaninit2-field? | -| `0x1542a7` | — | low | auto-shape | btaninit2-field? | -| `0x1542a9` | — | low | auto-shape | btaninit2-field? | -| `0x1542aa` | — | low | auto-shape | btaninit2-field? | -| `0x1542ac` | — | low | auto-shape | btaninit2-field? | -| `0x1542ae` | — | low | auto-shape | btaninit2-field? | -| `0x1542af` | — | low | auto-shape | btaninit2-field? | -| `0x1542b1` | — | low | auto-shape | btaninit2-field? | -| `0x1542b3` | — | low | auto-shape | btaninit2-field? | -| `0x1542b4` | — | low | auto-shape | btaninit2-field? | -| `0x1542b6` | — | low | auto-shape | btaninit2-field? | -| `0x1542b8` | — | low | auto-shape | btaninit2-field? | -| `0x1542b9` | — | low | auto-shape | btaninit2-field? | -| `0x1542bb` | — | low | auto-shape | btaninit2-field? | -| `0x1542bd` | — | low | auto-shape | btaninit2-field? | -| `0x1542be` | — | low | auto-shape | btaninit2-field? | -| `0x1542c0` | — | low | auto-shape | btaninit2-field? | -| `0x1542c2` | — | low | auto-shape | btaninit2-field? | -| `0x1542c3` | — | low | auto-shape | btaninit2-field? | -| `0x1542c5` | — | low | auto-shape | btaninit2-field? | -| `0x1542c7` | — | low | auto-shape | btaninit2-field? | -| `0x1542c8` | — | low | auto-shape | btaninit2-field? | -| `0x1542ca` | — | low | auto-shape | btaninit2-field? | -| `0x1542cc` | — | low | auto-shape | btaninit2-field? | -| `0x1542cd` | — | low | auto-shape | btaninit2-field? | -| `0x1542cf` | — | low | auto-shape | btaninit2-field? | -| `0x1542d1` | — | low | auto-shape | btaninit2-field? | -| `0x1542d2` | — | low | auto-shape | btaninit2-field? | -| `0x1542d4` | — | low | auto-shape | btaninit2-field? | -| `0x1542d6` | — | low | auto-shape | btaninit2-field? | -| `0x1542d7` | — | low | auto-shape | btaninit2-field? | -| `0x1542d9` | — | low | auto-shape | btaninit2-field? | -| `0x1542db` | — | low | auto-shape | btaninit2-field? | -| `0x1542dc` | — | low | auto-shape | btaninit2-field? | -| `0x1542de` | — | low | auto-shape | btaninit2-field? | -| `0x1542e0` | — | low | auto-shape | btaninit2-field? | -| `0x1542e1` | — | low | auto-shape | btaninit2-field? | -| `0x1542e3` | — | low | auto-shape | btaninit2-field? | -| `0x1542e5` | — | low | auto-shape | btaninit2-field? | -| `0x1542e6` | — | low | auto-shape | btaninit2-field? | -| `0x1542e8` | — | low | auto-shape | btaninit2-field? | -| `0x15576f` | — | low | auto-shape | btaninit2-field? | -| `0x155770` | — | low | auto-shape | btaninit2-field? | -| `0x155771` | — | low | auto-shape | btaninit2-field? | -| `0x155772` | — | low | auto-shape | btaninit2-field? | -| `0x155773` | — | low | auto-shape | btaninit2-field? | -| `0x155774` | — | low | auto-shape | btaninit2-field? | -| `0x155775` | — | low | auto-shape | btaninit2-field? | -| `0x155776` | — | low | auto-shape | btaninit2-field? | -| `0x155777` | — | low | auto-shape | btaninit2-field? | -| `0x155778` | — | low | auto-shape | btaninit2-field? | -| `0x155779` | — | low | auto-shape | btaninit2-field? | -| `0x15577a` | — | low | auto-shape | btaninit2-field? | -| `0x15577b` | — | low | auto-shape | btaninit2-field? | -| `0x15577c` | — | low | auto-shape | btaninit2-field? | -| `0x15577d` | — | low | auto-shape | btaninit2-field? | -| `0x15577e` | — | low | auto-shape | btaninit2-field? | -| `0x15577f` | — | low | auto-shape | btaninit2-field? | -| `0x155780` | — | low | auto-shape | btaninit2-field? | -| `0x155781` | — | low | auto-shape | btaninit2-field? | -| `0x155782` | — | low | auto-shape | btaninit2-field? | -| `0x155783` | — | low | auto-shape | btaninit2-field? | -| `0x1557d3` | — | med | auto-shape | btaninit2-field | -| `0x1560e8` | — | med | auto-shape | mainit-field | -| `0x156106` | — | med | auto-shape | mainit-field | -| `0x156124` | — | med | auto-shape | mainit-field | -| `0x156142` | — | med | auto-shape | mainit-field | -| `0x156160` | — | med | auto-shape | mainit-field | -| `0x15617e` | — | low | auto-shape | mainit-field? | -| `0x1561d8` | — | low | auto-shape | mainit-field? | -| `0x15a75b` | — | med | auto-shape | record-table[stride 21] | -| `0x15a785` | — | med | auto-shape | record-table[stride 3] | - + +# Global Variable Reference (generated) + +4278 globals (447 curated, 3831 auto shape-inferred). Source of truth: `vm-map/globals.toml`. + +## choice-output + +| address | name | conf | source | usage | +|---|---|---|---|---| +| `0x0` | system_flow_request | high | investigation | Return-mode request shared by TITLE/GAMESTART and SYSTEM4. The natural New Game path writes 1 immediately after GAMESTART's TUNE call; TITLE returns and SYSTEM4 routes value 1 into its ADV scene loop. Values 2/3/5 route to FORT/FIELD/CAMP; other writers use the same system-level request channel. | +| `0x699` | next_script_resource_id | high | investigation | SYSTEM4's computed child-script resource id. On the normal ADV path SYSTEM4 copies G[0x87a57][scjump_decision_out] here, substitutes raw id 0x22 (SC0000.BIN) when zero, executes call-script through this cell at offset 0x477, then clears it after the child returns. | +| `0xa68` | — | med | auto-shape | TODO: confirm. Branch-read in 11 scenes / 12 scripts; compared against [0, 1]; writers=['SC0740.BIN', 'SC1580.BIN', 'SC1590.BIN']. | +| `0x62ccc` | scjump_decision_out2 | low | inference | Adjacent to scjump_decision_out (0x62ccf) in the 0x62ccc-0x62ccf progression decision-output cluster; same 136-scene reach, written by CAMP/CLOSE/DEBUGADV. INFERENCE from adjacency — confirm meaning before relying on it. | +| `0x62ccf` | scjump_decision_out | high | investigation | SCJUMP's selected progression decision id. Its chapter/flag decision tree writes one of 847 distinct values across 1,755 sites; SYSTEM4, FIELD, SALLY, and TRAIN use it to index scjump_scene_script_resource_ids and dispatch the corresponding SCxxxx scene script. | +| `0xcc9f1` | movement_search_mode | high | investigation | Transient MVSEEK mode. Zero replaces the caller-supplied origin with the current entity tile and uses movement+1 as the search allowance; nonzero modes retain the caller coordinate and use a broad allowance of 9999. Mode 2 additionally masks the doubled-coordinate terrain cells occupied by active entities of another faction before the flood fill. MVSEEK resets the mode to zero on exit. | +| `0xeff77` | routine_execution_state | high | investigation | Shared movement/battle routine result state. MVRTN and BTRTN clear it before scanning steps; a nonzero provider result stops the scan. Movement providers use state 1 for ordinary field movement/progress, state 2 for an immediate offensive battle action, and state 3 for an immediate healing/support action; MVRTN supplies state 1 when no provider produced another result. | + +## counter + +| address | name | conf | source | usage | +|---|---|---|---|---| +| `0x671b` | shared_spendable_points | high | investigation | Shared spendable point balance used by the alchemy, study, evolution, and summoning systems. ALCHEMY requires and deducts each recipe's alchemy_recipe_point_costs value; STAGECLEAR awards points to this balance and caps it at 999. The exact player-facing Japanese resource label remains unresolved. | +| `0x671c` | item_tuning_facility_level | high | investigation | Current equipment-tuning facility level. IMPROVE indexes facility_level_progress_thresholds row 0 with this value and raises it, up to 6, as item_tuning_facility_progress accumulates. | +| `0x671d` | alchemy_level | high | investigation | Current alchemy level. ALCHEMY hides recipes whose alchemy_recipe_minimum_levels value exceeds this level and raises it, up to 6, when alchemy_level_progress reaches the current threshold. | +| `0x671e` | magic_facility_level | high | investigation | Current magic/research facility level. MAGIC and USEMAGIC index facility_level_progress_thresholds row 2 with this level; USEMAGIC raises it up to 6 when magic_facility_progress reaches the current threshold. | +| `0x671f` | item_tuning_facility_progress | high | investigation | Progress toward the next equipment-tuning facility level. IMPROVE adds the selected item's tuning-level increases, applies row 0 of facility_level_progress_thresholds, and carries or clamps progress when the level rises. | +| `0x6720` | alchemy_level_progress | high | investigation | Progress toward the next alchemy level. Each successful ALCHEMY synthesis increments it; reaching the current threshold raises alchemy_level and resets this counter. | +| `0x6721` | magic_facility_progress | high | investigation | Progress toward the next magic/research facility level. USEMAGIC adds the selected action's progress award and applies row 2 of facility_level_progress_thresholds; MAGIC renders the same current/threshold pair. | +| `0x6722` | familiar_alignment | high | investigation | The familiar's alignment/personality axis. TRAIN decodes TRINIT minimum and maximum gates by subtracting 100 from the stored threshold, matching the locked hints' kind-versus-evil wording, and applies training_action_alignment_delta_hundredths through the paired fractional accumulator. DRAWCHP renders the signed value and EVOLVE/scene scripts use the same axis. | +| `0x6723` | familiar_alignment_fraction | high | investigation | Fractional accumulator paired with familiar_alignment. TRAIN adds the selected action's hundredths delta, applies the integral quotient and probabilistic remainder, and preserves the remaining fraction. | +| `0x6724` | familiar_training_progress | high | investigation | Cumulative familiar training/sexual-magic progress. TRAIN tests it against TRINIT's minimum/maximum progress gates, then applies training_action_training_progress_delta_hundredths through the paired fractional accumulator and clamps the result to 99. DRAWCHP and EVOLVE display or compare the same value. | +| `0x6725` | familiar_training_progress_fraction | high | investigation | Fractional accumulator paired with familiar_training_progress. TRAIN adds the action's hundredths delta, advances the integer value by the quotient and probabilistic remainder, and preserves the remaining fraction. | +| `0x6726` | training_action_total_execution_count | high | investigation | TRAIN increments this once after every successful action, independently of the selected action's own execution count. DRAWCHP displays it with the familiar's other training statistics and SAVE persists it. | +| `0x6727` | training_action_execution_counts | high | investigation | Per-action completed execution counts. TRAIN uses the prior count as the column in training_action_event_story_flag_ids, increments the selected cell, and treats a zero next event as the cap; GAMESTART restores each count and replays its completed event flags. | +| `0x204f4` | current_stage_turn | high | investigation | FIELD initializes this to 1, increments it after end-of-turn processing, compares it with STINIT's stage turn limit and timed object schedules, and displays it through DRAWCHP. Card generation divides it by each CDINIT growth interval to increase that card's weighted-selection share. | +| `0x204f8` | party_reference_level | high | investigation | FIELD's enemy auto-level reference. It averages all eligible party units when at most five exist, otherwise the five highest-level units. SETEN raises scalable enemies above unit_starting_level by the positive gap divided by the selected auto-level divisor before applying stage level clamps. Difficulty separately adds -5/0/+5 stat-growth iterations and does not change this stored runtime level. | +| `0x20530` | current_spirit | high | investigation | Current 精気 (spirit/essence) resource. TRAIN rejects a selected action when adding its negative TRINIT spirit delta would fall below zero, deducts the cost on execution, and passes the updated value to DRAWCHP. Field and scene reward paths update the same resource and clamp it to maximum_spirit. | +| `0x20534` | maximum_spirit | high | investigation | Maximum 精気 capacity paired with current_spirit. TRAIN clamps the post-cost current value against it, DRAWCHP renders the current/maximum gauge, and field/scene reward paths raise or restore the same capacity. | +| `0x4dfbb` | stage_card_spendable_point_bonus | high | investigation | FIELD clears this on stage entry and adds CDINIT2 type-3 card bonuses. STAGECLEAR adds the accumulated amount to its computed stage award before increasing shared_spendable_points. | +| `0x4dfbc` | scjump_progress_a | med | inference | Dominant SCJUMP switch input (1609 comparison reads) — a per-chapter story-progress counter/position the progression machine branches on. INFERENCE from SCJUMP usage; confirm exact meaning via a listing/playthrough. | +| `0x665d6` | modal_message_line_count | high | investigation | Number of populated strings in modal_message_lines. Dozens of menu/gameplay producers append at lines[count] and increment this value; MES renders the resulting non-selecting modal and clears the count, while SBUNKI consumes the same buffer as selectable options. | +| `0x665e2` | modal_annotation_count | high | investigation | Number of populated modal_annotation_texts entries. MES and SBUNKI iterate this many annotations and clear it on dismissal; no direct shipped producer was found. | +| `0xaac77` | current_condition_delta_levels | high | investigation | Shared signed level delta passed to ADDILL/ADDILLSUB for current_condition_id. Positive values apply or strengthen a condition; negative values weaken/remove it subject to the equipment/passive baseline floor. | +| `0xcc9f2` | usable_action_min_range | high | investigation | CALCSCOPE initializes this from the equipped/default attack's minimum range and widens it for usable offensive and healing skills. It is the lower bound shared by the offensive and healing action-scope tables. | +| `0xcc9f3` | usable_action_max_range | high | investigation | CALCSCOPE initializes this from the equipped/default attack's maximum range and widens it for usable offensive and healing skills. ATSEEK bounds its action-range flood fill with this value; RTN_M051/052 and RTN_M061 use it as their upper scan bound. | +| `0xe6c5d` | scjump_progress_d | med | inference | SCJUMP switch input (168 comparison reads) — progression counter/position. INFERENCE from SCJUMP usage. | +| `0x152619` | battle_exchange_step | high | investigation | BTL's six-step alternating exchange counter. Dividing it by two selects the first, second, or third ordinary-attack/skill voice variant and related animation slots. | + +## data-table + +| address | name | conf | source | usage | +|---|---|---|---|---| +| `0x5` | save_slot_portrait_entity_indices | high | investigation | SAVE and SELSTAGE snapshot current_entity_index through op 0x1a2. SAVE.BIN restores the slot cell with op 0x1a3 and uses its form range when choosing the portrait atlas region. | +| `0xd7` | save_slot_protagonist_levels | high | investigation | SAVE and SELSTAGE copy unit_current_levels[current_entity_index] into this shared SAVE.DAT-selected bank. SAVE.BIN restores and renders it as the row's LV value. | +| `0x1a9` | save_slot_training_action_counts | high | investigation | SAVE and SELSTAGE snapshot training_action_total_execution_count into this shared SAVE.DAT-selected per-slot bank; copy/move/delete operations keep it aligned with the rest of the preview record. | +| `0x27b` | save_slot_growth_values | high | investigation | SAVE and SELSTAGE snapshot familiar_training_progress through op 0x1a2. SAVE.BIN restores and renders it as the row's growth value. | +| `0x34d` | save_slot_personality_values | high | investigation | SAVE and SELSTAGE snapshot familiar_alignment through op 0x1a2. SAVE.BIN restores and renders the signed value in the row's personality field. | +| `0x41f` | save_slot_difficulty_indices | high | investigation | SAVE snapshots difficulty_index through op 0x1a2. SAVE.BIN restores the per-slot value and selects the corresponding 34x17 row badge from SO010. | +| `0x4f1` | save_slot_cleared_ending_masks | high | investigation | SAVE snapshots the current cleared-ending inheritance mask through op 0x1a2. SAVE.BIN restores it from shared SAVE.DAT, scans bits 0..14, and draws one 17x17 badge for every achieved ending on that slot and subsequent inherited-loop saves. | +| `0x5c3` | save_slot_append_install_masks | high | investigation | SAVE snapshots the current installed-append mask through op 0x1a2. SAVE.BIN compares each saved bit against the current mask and marks previews whose required append data is missing. | +| `0x6d3` | story_event_flags | high | investigation | Shared one-based story/event flag bank. Progression, recruitment, item, and stage logic read or write individual cells; STINIT object prerequisite ids are decremented by one before SETOBJ tests this array. | +| `0x2e49` | character_voice_suppressed | high | investigation | Base of the per-character voice enable/suppress settings. INITCONFIG zero-fills all 13 cells and registers each with the shared profile service; LOADCONFIG restores them. CONFIG indexes the table to preview a character voice and write 0/1. ROOM reads cell 0 before assigning its selected greeter's greeting/farewell voice ids, so the port's former scalar interpretation of zero-int-range (writing 13 into the base cell) suppressed those voices on every natural boot. This names the script-visible setting array without choosing a persistence backend for op 0x1a2/0x1a3. | +| `0x3239` | adv_layer_surface_slots | high | investigation | Shared ADV graphics-layer surface-slot registry. Scene setup initializes the three banks. The CG loader uses the primary slot for a fresh retained object, alternates between columns zero and one when replacing an already-bound layer, and uses column two for the transition/crossfade surface and cleanup. The corpus has 2,657 table-base accesses across 309 scripts. Columns: 0=primary_surface_slot, 1=alternate_surface_slot, 2=transition_surface_slot. | +| `0x329e` | adv_layer_movie_stop_time_ms | high | investigation | Per-ADV-layer movie stop positions. The common movie-layer loader writes opcode 0x23f's stop time immediately after opcode 0x236 opens the graph. CALLBACK_LOAD passes stop_time_ms-1 to opcode 0x241 so a numbered load reconstructs the movie layer at its terminal frame; this is not a separately sampled live playback cursor. | +| `0x453b` | training_action_text | high | investigation | TRINIT's six-string row for each of 21 training/sexual-magic actions. TRAIN renders columns 0..2 for the action description and cost/reward summary, or columns 3..5 for the unmet-condition hint. Columns: 0=description_line_1, 1=description_line_2, 2=description_line_3, 3=locked_hint_line_1, 4=locked_hint_line_2, 5=locked_hint_line_3. | +| `0x65ce` | skill_acquired_flags | high | investigation | Persistent acquired-skill flags. ADDSKILL sets the selected skill after resolving the unit's equipped-skill slots; FORT checks the flag before granting a skill; CHMENU combines it with skill_change_catalog_eligible to build the available skill-change catalog. | +| `0x673c` | party_slot_flags | high | investigation | Per-party-slot state flags for slots 0..99. UNITECH creates the initial unit by setting slot 2 to 0x13; CALCARR counts slots whose flags intersect 0x6, and CHMENU includes slots with bit 1 set. Exact meanings of the remaining bits are not yet classified. | +| `0x67a0` | party_slot_character_id | high | investigation | Character/unit definition id stored for each party slot. UNITECH writes character id 2 into initial slot 2 on a natural New Game; CHMENU reads this table for every active party_slot_flags entry when constructing its roster. | +| `0x6930` | unit_current_levels | high | investigation | Persistent current level by playable-unit id. CCINIT compares current_unit_id's row with each promotion threshold; ADDEXP increments and reports the same value. | +| `0x6994` | unit_experience_progress | high | investigation | Persistent experience progress by playable-unit id. ADDEXP adds the current award, animates the increase to 100, raises unit_current_levels, resets this cell to zero, and repeats while award remains and the unit is below unit_level_cap. | +| `0x69f8` | unit_current_stats | high | investigation | Persistent fourteen-stat row for each playable unit, using the same column order as unit_base_stats. CALCCC adds class_change_stat_bonuses to the current unit's row and clamps each result to the shared stat caps. Columns: 0=accuracy, 1=evasion, 2=physical_attack, 3=physical_defense, 4=magic_attack, 5=magic_defense, 6=speed, 7=luck, 8=critical_chance, 9=capture_power, 10=movement, 11=max_hp, 12=max_sp, 13=max_fs. | +| `0x6f70` | unit_stat_growth_fractions | high | investigation | Persistent fractional-growth row paired with each playable unit's unit_current_stats. ADDEXP adds unit_stat_growth_rates, TRAIN adds training_action_stat_growth_hundredths, and UNITECH applies level catch-up growth; each path awards the quotient divided by 100 to the current stat and retains the remainder modulo 100. GAMESTART serializes the rows, while GAMECLEAR and EVOLVE copy them with the rest of the persistent unit record. Columns: 0=accuracy, 1=evasion, 2=physical_attack, 3=physical_defense, 4=magic_attack, 5=magic_defense, 6=speed, 7=luck, 8=critical_chance, 9=capture_power, 10=movement, 11=max_hp, 12=max_sp, 13=max_fs. | +| `0x74e8` | unit_skill_ids | high | investigation | Persistent four-skill row for each playable unit. CALCCC copies positive class_change_skill_awards into the first three slots after a promotion; ADDEXP compares the before/after row to report learned or replaced skills. Columns: 0=skill_slot_1, 1=skill_slot_2, 2=skill_slot_3, 3=skill_slot_4. | +| `0x7684` | stage_clear_state | high | investigation | Persistent per-stage completion state indexed by stage id. STAGECLEAR sets the current stage cell to 1, while FORT, SELSTAGE, and FIELD use zero versus one to distinguish an uncleared mission from a cleared replay. | +| `0x141a4` | stage_object_runtime_state | high | investigation | Per-stage, per-object-slot runtime state. FIELD initializes mode-1 objects from STINIT's first tagged payload on a fresh stage and updates capturable-object ownership; DRAWOBJ uses it as the vertical sprite-row index. RTN_M015 treats the state of Magic Pillar types 2..4 as their controlling faction and targets pillars whose value differs from the acting entity's faction. | +| `0x20543` | tile_faction_traversal_masks | high | investigation | Row-major tile traversal permissions. Movement checks the acting entity's faction bit before enqueuing a tile in movement-limited MVSEEK searches. RTN_M013 builds either one selected faction bit or all bits except the actor's, requires the current tile not to match that set, and approaches the nearest reachable tile whose mask does. | +| `0x341ab` | current_stage_terrain_grid | high | investigation | Current stage's mutable terrain grid. FIELD clears all 2,000 rows and copies the selected stage_terrain_atlas rectangle; rendering, minimap, occupancy, battle, and movement scripts read it, while SETLAND/DELLAND alter cells and RESETLAND restores atlas values. | +| `0x4dfbd` | entity_unit_definition_ids | high | investigation | Definition id backing each runtime map entity. SETEN writes current_unit_id when materializing an enemy; BTL uses the opposing entity's value to read unit_experience_reward and drop tables, while ADDEXP uses the faction-1 participant's value to select persistent playable-unit state. | +| `0x4e021` | entity_runtime_flags | high | investigation | Per-runtime-entity state flags. RTN_M007 requires bit 0 when selecting an injured ally, and MVSEEK mode 2 requires it before masking a foreign entity's occupied terrain cell. | +| `0x4e053` | entity_levels | high | investigation | Displayed/runtime level for each map entity. SETEN begins enemies at unit_starting_level, applies party-reference auto-scaling and stage minimum/maximum clamps, and BTL subtracts the surviving faction-1 participant's level from the opponent's level to choose the experience multiplier bracket. | +| `0x4e085` | entity_current_resources | high | investigation | Per-runtime-entity current resources. DRAWCHP/DRAWENP render columns 0..2 against max-stat columns 11..13, skill/item resource deltas modify the same three columns, and movement search compares path cost with current_fs. Columns: 0=current_hp, 1=current_sp, 2=current_fs. | +| `0x4e11b` | entity_effective_stats | high | investigation | Per-runtime-entity effective fourteen-stat row after CALCREVISE applies base data, equipment, skills, and conditions. Combat/UI consumers use columns 0..10 directly; columns 11..13 are the maxima paired with entity_current_resources HP/SP/FS. Columns: 0=accuracy, 1=evasion, 2=physical_attack, 3=physical_defense, 4=magic_attack, 5=magic_defense, 6=speed, 7=luck, 8=critical_chance, 9=capture_power, 10=movement, 11=max_hp, 12=max_sp, 13=max_fs. | +| `0x4e693` | entity_skill_flags | high | investigation | Per-runtime-entity skill-state row. CALCREVISE and CALCSCOPE mark equipped skills, combat/field consumers test specific skill ids, and RTN_M009 requires skill 22 (Unlock) before treating an unopened type-7 chest as a treasure target. | +| `0x5212b` | entity_equipped_active_skill_ids | high | investigation | Four equipped active-skill slots per runtime entity. CALCSCOPE maps each usable offensive or healing skill into the corresponding action bit and range band; RTN_M051/052 select offensive skills and RTN_M061 selects a healing skill from these slots. | +| `0x52289` | entity_selected_action_ids | high | investigation | Per-entity selected action. RTN_M051/052 write either zero for the normal attack or an offensive equipped skill and return routine execution state 2; RTN_M061 writes a healing skill and returns state 3. BTRTN may replace the value through a battle-provider decision. | +| `0x522ed` | entity_faction_ids | high | investigation | Per-runtime-entity faction id. RTN_M007 restricts its injured-unit target to the acting entity's faction; MVSEEK mode 2 compares this value while masking active foreign-entity cells, and ordinary movement checks the acting faction's bit in tile passability masks. | +| `0x5231f` | entity_tile_x | high | investigation | Per-runtime-entity map X coordinate. FIELD movement and occupancy logic maintain it; movement providers pair it with entity_tile_y and compare or route from the current tile. | +| `0x52351` | entity_tile_y | high | investigation | Per-runtime-entity map Y coordinate paired with entity_tile_x. Values use the same stage map-space cell keys as STINIT object and enemy coordinates. | +| `0x52383` | entity_condition_levels | high | investigation | Per-runtime-entity current condition levels. ADDILLSUB applies signed level deltas, clamps the minimum to entity_condition_baseline_levels and the maximum to 5, and assigns condition duration. CALCREVISE, FIELD, combat, and UI consumers index the same ILINIT-defined 30-column condition id space. Columns: 1=instant_death, 2=hp_drain, 3=sp_drain, 4=fs_drain, 5=curse, 6=charm, 7=confusion, 8=paralysis, 9=poison, 10=water_flow, 11=fear, 12=reserved, 13=regeneration, 14=exaltation. | +| `0x5295f` | entity_condition_remaining_turns | high | investigation | Per-runtime-entity duration counters paired with entity_condition_levels. FIELD decrements positive counters and removes the condition when a counter reaches zero; DRAWENP displays negative values as infinity. RECOVER writes -1 when a recoverable condition retains an equipment/passive baseline and zero when it clears completely. Columns: 1=instant_death, 2=hp_drain, 3=sp_drain, 4=fs_drain, 5=curse, 6=charm, 7=confusion, 8=paralysis, 9=poison, 10=water_flow, 11=fear, 12=reserved, 13=regeneration, 14=exaltation. | +| `0x52f3b` | entity_condition_baseline_levels | high | investigation | Per-runtime-entity minimum condition levels supplied by equipment and passive effects. SETCH/SETEN populate the row from item_equipped_status_levels, ADDILLSUB cannot reduce current levels below it, CALCREVISE separates transient current levels from this baseline, and RECOVER restores eligible conditions to it. Columns: 1=instant_death, 2=hp_drain, 3=sp_drain, 4=fs_drain, 5=curse, 6=charm, 7=confusion, 8=paralysis, 9=poison, 10=water_flow, 11=fear, 12=reserved, 13=regeneration, 14=exaltation. | +| `0x53517` | entity_movement_routine_set_ids | high | investigation | Per-runtime-entity movement routine set for easy/normal/hard. SETEN copies a stage-specific override or the EBINIT default into this row; MVRTN selects the current difficulty column and stores it in current_routine_set_id. | +| `0x535ad` | entity_battle_routine_set_ids | high | investigation | Per-runtime-entity battle routine set for easy/normal/hard. SETEN copies a stage-specific override or the EBINIT default into this row; BTRTN selects the current difficulty column and stores it in current_routine_set_id. | +| `0x53643` | entity_movement_routine_progress | high | investigation | Per-runtime-entity movement-routine progress counters. FIELD clears all fifty rows, movement providers increment the current step, and MVRTN compares it with movement_routine_minimum_progress_counts before enabling a step. | +| `0x53e13` | entity_carried_item_ids | high | investigation | Two carried/drop-item slots per runtime entity. SETEN initializes slot 0 from the unit's starting equipment item, FIELD fills an empty or matching slot when treasure is collected, and RTN_M009 requires an empty slot or an item-id match before approaching a chest/treasure object. Columns: 0=slot_0, 1=slot_1. | +| `0x53e77` | entity_carried_item_counts | high | investigation | Quantities for the two per-entity carried/drop-item slots. SETEN seeds a starting item with quantity one; FIELD adds treasure quantities to the matching slot and caps the result at 999. Columns: 0=slot_0, 1=slot_1. | +| `0x53ede` | training_action_unlock_flags | high | investigation | Persistent per-action discovered/unlocked state maintained by TRAIN after evaluating eligibility. TRAIN uses it while choosing the locked-versus-known menu presentation, GAMESTART restores every cell, and SAVE persists the same block. | +| `0x56223` | unit_story_speaker_seen_flags | high | investigation | Scene scripts set and persist a unit's cell when drawing that speaker's name. CONFIG reloads the twelve CVINIT-mapped unit cells and enables each named character-voice control only after its speaker has been encountered. | +| `0x5660b` | skill_info_revealed_flags | high | investigation | Persistent skill-information visibility flags. ADDSKILL sets the selected skill, BTL marks every equipped skill when it is observed in combat, and INFOIT suppresses a skill's icon/handler-driven details until this flag is nonzero. This is broader than skill_acquired_flags. | +| `0x56738` | entity_battle_routine_random_rolls | high | investigation | Per-runtime-entity battle-step random rolls. FIELD and BTL fill every active entity's twenty cells with random-modulo-100; BTRTN executes a step when the matching roll is below battle_routine_activation_percents. | +| `0x56b20` | entity_patrol_waypoint_indices | high | investigation | RTN_M011 compares each step's one-based waypoint_ordinal minus one with the current entity's value. Reaching the selected destination advances this value modulo the largest RTN_M011 waypoint ordinal in the routine set. | +| `0x56b85` | enemy_encyclopedia_revealed_flags | high | investigation | Persistent enemy-information reveal state. BTL marks both participating unit definitions as revealed and synchronizes their cells; INFOEN masks unrevealed unit names and details while still listing EBINIT rows enabled by unit_enemy_info_listed. | +| `0x57357` | unit_deployment_cost_adjustments | high | investigation | Persistent per-unit delta added to unit_deployment_cost_base. CALCCC increments it by class_change_deployment_cost_delta, while SETCH, SETEN, ADDEXP, and deployment scripts include it when constructing or updating runtime command cost. | +| `0x573bb` | unit_class_change_state | high | investigation | Persistent ten-slot class-change state for each playable unit. CALCCC copies the current unit's row to class_change_state_work before invoking the rule scripts and persists the updated row; CCINIT requires the rule's slot to be zero so each promotion is applied once. Columns: 0=promotion_slot_1, 1=promotion_slot_2, 2=promotion_slot_3, 3=promotion_slot_4, 4=promotion_slot_5, 5=promotion_slot_6, 6=promotion_slot_7, 7=promotion_slot_8, 8=promotion_slot_9, 9=promotion_slot_10. | +| `0x5f0ed` | scene_decision_seen_flags | high | investigation | Persistent seen-state for progression decisions. Numbered scene scripts set the current scjump_decision_out cell after playback and synchronize it through the persistence opcode; INFOVO uses VIINIT's one-based prerequisites to unlock glossary topics. | +| `0x62455` | adv_gfx_object_handles | high | investigation | ADV retained-object handles indexed by adv_gfx_layer_index. INIT2 seeds handles 0xcb20, 0xcb2a, and 0xcb8e..0xcbc0 for the first nine cells; scene loaders query, bind, animate, and erase those objects while the eight-row surface-slot registry governs layers zero through seven. | +| `0x624bf` | unit_voice_family_unit_ids | high | investigation | CNINIT's sparse unit-id keyed voice-family normalization map. Story, history, field, and battle voice paths map the current unit variant through this table before selecting the family-level voice-suppression state; 175 of 277 authored rows alias a variant to another representative unit id. | +| `0x628a7` | unit_voice_suppression_flag_ids | high | investigation | CVINIT's unit-to-setting inverse map for the twelve named character voice controls. Story, history, field, and battle paths normalize the current unit through unit_voice_family_unit_ids, index this table by that representative unit id, and suppress voice playback when the selected character_voice_suppressed cell is nonzero. | +| `0x62c8f` | character_voice_setting_unit_ids | high | investigation | CVINIT's CONFIG-row join. CONFIG iterates setting slots 1..12, resolves each unit id through unit_story_display_names for its label, and tests the same unit's unit_story_speaker_seen_flags cell before exposing the row. CVINIT also writes the exact inverse mapping to unit_voice_suppression_flag_ids. Columns: 0=system_or_reserved, 1=lily, 2=sylphine, 3=sasune, 4=vidal, 5=estelle, 6=nelly, 7=tiofania, 8=colette, 9=bridget, 10=octavia, 11=fam, 12=deirdre. | +| `0x62cad` | character_voice_preview_asset_ids | high | investigation | CVINIT's thirteen voice-setting preview clips. CONFIG indexes this array by setting slot and plays the selected clip; slot 0 is the non-unit system voice, while slots 1..12 join to character_voice_setting_unit_ids. Columns: 0=system_voice, 1=lily, 2=sylphine, 3=sasune, 4=vidal, 5=estelle, 6=nelly, 7=tiofania, 8=colette, 9=bridget, 10=octavia, 11=fam, 12=deirdre. | +| `0x62cd1` | gallery_image_assets | high | investigation | CGINIT's sparse gallery asset rows. CGMODE tests and displays column 0 as the full-size gallery image. SAVE and SELSTAGE scan column 0 for the current image and, when column 1 is populated, load that 112x84 preview instead of capturing the current screen. Columns: 0=gallery_image_asset_id, 1=save_stage_preview_asset_id. | +| `0x63c71` | gallery_thumbnail_sheet_ids | high | investigation | CGINIT's gallery thumbnail-atlas selector. CGMODE subtracts one, remaps the configured sheet through gallery_thumbnail_sheet_asset_ids, and groups every populated gallery record under that sheet. | +| `0x64441` | gallery_thumbnail_slot_ids | high | investigation | CGINIT's slot within the selected 6x5 thumbnail atlas. CGMODE subtracts one, draws that one of thirty 126x95 cells, and reports the unlocked/total variant counts associated with the slot. | +| `0x64c11` | gallery_variant_ordinals | high | investigation | CGINIT's ordering key for multiple full-size images behind one thumbnail slot. CGMODE subtracts one and stores the gallery record id at sheet[slot*100 + ordinal], then walks that ordered variant list in the image viewer. | +| `0x66381` | gallery_thumbnail_sheet_asset_ids | high | investigation | CGMODE's configured thumbnail-sheet resources. INIT2 populates the first four cells with SO026A.AGF through SO026D.AGF and leaves the remaining six reserved; CGMODE compacts nonzero cells into its visible sheet list before applying gallery_thumbnail_sheet_ids. | +| `0x6638b` | h_scene_gallery_script_ids | high | investigation | SPINIT's H-scene gallery registry. HMODE compacts the eight configured thumbnail pages, scans each page's fifteen script slots, filters populated resources through opcode 0x19d, and call-scripts the selected available entry. Columns: 0=slot_0, 1=slot_1, 2=slot_2, 3=slot_3, 4=slot_4, 5=slot_5, 6=slot_6, 7=slot_7, 8=slot_8, 9=slot_9, 10=slot_10, 11=slot_11, 12=slot_12, 13=slot_13, 14=slot_14. | +| `0x66421` | h_scene_gallery_thumbnail_sheet_assets | high | investigation | INIT2's eight HMODE thumbnail-page assets. HMODE compacts nonzero configured pages and pairs each page index with the corresponding row of h_scene_gallery_script_ids. | +| `0x665e3` | modal_annotation_horizontal_cells | high | investigation | Per-annotation horizontal anchor input shared by MES and SBUNKI. Each renderer multiplies the cell by 21 pixels and offsets it by half the annotation's rendered width. | +| `0x66647` | modal_annotation_row_offsets | high | investigation | Per-annotation vertical row offset shared by MES and SBUNKI. Renderers multiply it by 30 pixels; a negative value additionally shifts the annotation left by one 21-pixel cell. | +| `0x66716` | unit_voice_asset_ids | high | investigation | EBINIT per-unit voice bank for 116 voiced characters and variants. FIELD directly selects column 0 before WARPD, column 1 when an acting unit takes chest/treasure contents, and column 3 after occupying, losing, or sealing a stage objective. BTL selects the acting unit's columns 7..9 for ordinary attacks, 10 for an ordinary critical, odd columns 11/13/15 for skill uses, and even columns 12/14/16 for critical skills; the three variants follow its six-step exchange selector. If the target survives positive damage, BTL selects target columns 19/20/21 with 60/30/10 percent weights; column 22 belongs to a target reduced to zero HP, while actor column 23 is selected for a finishing blow. SHOWGROW selects column 24 after level gain. Populated columns 4..6 and 17..18 have no reachable selector in the shipped script corpus and are retained as explicit unused authoring slots; columns 17 and 18 duplicate columns 15 and 16 in all 116 populated rows. Columns: 0=warp, 1=treasure_capture, 3=objective_interaction, 4=unused_slot_4, 5=unused_slot_5, 6=unused_slot_6, 7=normal_attack_1, 8=normal_attack_2, 9=normal_attack_3, 10=critical_normal_attack, 11=skill_use_1, 12=critical_skill_1, 13=skill_use_2, 14=critical_skill_2, 15=skill_use_3, 16=critical_skill_3, 17=unused_slot_17, 18=unused_slot_18, 19=damage_reaction_1, 20=damage_reaction_2, 21=damage_reaction_3, 22=defeated, 23=finishing_blow, 24=level_up. | +| `0x6dc46` | unit_status_art_asset_ids | high | investigation | Three-variant status/menu illustration table for 25 principal characters. The ids resolve to 456x420 CS character art; DRAWCHP selects column 0 above 50% HP, column 1 at 26..50%, and column 2 at 25% or below, then loads the art into the status-panel texture slot. Columns: 0=healthy, 1=wounded, 2=critical. | +| `0x6e7fe` | unit_map_sprite_asset_ids | high | investigation | Five-context unit sprite-sheet table for 251 units. Even columns 0/2/4 are compact CP*AA-style presentations for normal, alternate-condition, and special-condition states; columns 1/3 are the matching normal/alternate full directional CP*AB sheets used by FIELD. INFOCH/INFOEN and DRAWENP reuse the compact representation. Columns: 0=normal_compact, 1=normal_directional, 2=alternate_compact, 3=alternate_directional, 4=special_compact. | +| `0x6fb86` | unit_battle_sprite_asset_id | high | investigation | Battle figure for 248 units. Values resolve to transparent full-body CB character/monster art; BTL loads the selected combatant's figure and INFOEN uses the same asset for the enemy detail view. | +| `0x6ff6e` | unit_battle_portrait_asset_ids | high | investigation | Paired battle portrait assets: column 0 is the larger CA*A bust where available, and column 1 is the compact CA*D face portrait. BTL, DRAWENP, and EVOLVE select these assets for combat and unit-growth presentation. Columns: 0=large_bust, 1=compact_face. | +| `0x7073e` | unit_battle_cutin_asset_ids | high | investigation | Paired 800-pixel-wide battle cut-ins for 64 named characters. The values resolve to CIC cropped/action and CIN full-frame illustrations; BTL is the sole consumer. Columns: 0=cropped_action, 1=full_frame. | +| `0x70f0e` | unit_sort_key | high | investigation | EBINIT ordering key populated for 248 units. CHMENU, EXILE, SALLY, INFOEN, and SUMMON pass this array to op 0x12f's stable index sort or combine it with a unit id to build menu ordering keys, mirroring item_sort_key and skill_sort_key. | +| `0x712f6` | unit_enemy_info_listed | high | investigation | EBINIT eligibility flag for 183 enemy-information entries. INFOEN stable-sorts all unit ids, retains only rows whose value is nonzero, and then gates each retained entry's revealed state through the encounter/profile table. | +| `0x716de` | unit_icon_id | high | investigation | EBINIT icon selector populated for all 277 units. READICON returns it for unit ids; CHMENU, DRAWCHP, EXILE, SALLY, and SUMMON convert the value into icon-atlas page and cell coordinates. | +| `0x71ac6` | unit_species_category | med | investigation | Broad EBINIT species/allegiance category for 198 units: value 1 covers humans and allied heroines, 2 covers demons including Emilio and Lily as well as many demonic monsters, and 3 covers other monsters, dragons, and elementals. CHMENU uses it for equipment restrictions, CALCDMG for category-sensitive effects, and INFOCH/INFOEN for display. | +| `0x71eae` | unit_sex_category | high | investigation | EBINIT sex category for 251 units. Named character records establish the three values; CHMENU tests it against item_sex_restriction_mask, while INFOCH and INFOEN use the same category in unit presentation. | +| `0x72296` | unit_boss_class | med | investigation | Nonzero for 112 bosses, special encounters, summoned adds, and map hazards. CALCDMG grants every nonzero class the boss adjustment, CALCILL grants condition immunity, and FIELD/MAGIC/USEMAGIC exclude nonzero classes from ordinary-unit rules. FIELD draws the normal faction-colored unit banner for classes 0 and ±1..±3, then adds the separate yellow boss marker below it when this value is nonzero; class ±4 suppresses both standard markers for its special presentation. On stages whose clear rule is defeat-boss targets, FIELD blocks victory only while a positive-class enemy remains; negative peers keep boss treatment but are ignored, as with Octavia beside Bridget, Deirdre's shadows, EX-8 adds beside Tiamat, and the final boss's three organs. Classes 1..3 are otherwise authoring categories with no distinct shipped-script branch. Either sign of class 4 selects the final-boss battle BGM and special tactical-map presentation. | +| `0x7267e` | unit_canonical_id | high | investigation | Maps 106 alternate, boss, brainwashed, EX, and enemy variants back to their canonical character or recruitable archetype. For example all Estelle bosses map to 12, brainwashed Sylphine maps to 5, and ordinary/EX orcs map to recruitable orc 52. Setup, menus, inventory, dismissal, and combat normalize through this id. | +| `0x72a66` | unit_capturable | high | investigation | Capture eligibility for 74 ordinary enemy archetypes. SELACT and FIELD allow the capture skill only when this flag is nonzero and the acting unit's capture power meets the target-level check; successful resolution displays the explicit 'Captured the enemy' message. | +| `0x72e4e` | unit_roster_state_flag_base_index | high | investigation | Persistent roster-state block for seven recruitable heroines. SALLY's first three unit actions mark offsets 1, 2, and 0 respectively; UNITECH marks the offset selected by its recruitment mode; DELCH, REMOVECH, SALLY, and EXILE mark offset 3 when the unit is removed or released. The values are relative indices into the shared flag bank, not absolute global addresses. | +| `0x73236` | unit_sally_action_unlock_requirements | high | investigation | Availability requirements for SALLY's contract, brainwash, reserved, and sex-magic action slots. The SO012 button atlas and selection dispatch prove that UI choices 1, 2, and 3 select columns 0, 1, and 3; column 2 has a switch case but is deliberately skipped by both drawing and input, so it is reserved/unreachable in the shipped UI. While constructing the action mask, SALLY keeps a positive entry only when flag_bank[value - 1] equals 1, keeps -1 as unconditional, and clears an action whose entry is zero. Deploy, sacrifice, and release use separate eligibility logic. Columns: 0=contract, 1=brainwash, 2=reserved_action, 3=sex_magic. | +| `0x741d6` | unit_sally_event_ids | high | investigation | SALLY event ids for contract, brainwash, the unreachable reserved action, Lily's child/girl/adult sex-magic forms, sacrifice, and release. The action switch selects columns 0, 1, 6, and 7 directly; sex magic selects the current Lily unit id plus one, yielding columns 3..5 for Lily unit ids 2..4. A populated reachable slot is copied to scjump_decision_out and translated through the SCJUMP resource table at 0x87a57 into next_script_resource_id. Column 2 is paired with the UI-skipped reserved action and its shipped ids 1300..1306 have no SCJUMP resource mapping. EXILE also tests column 7 when deciding whether a unit can be released. Columns: 0=contract, 1=brainwash, 2=reserved_action, 3=sex_magic_lily_child, 4=sex_magic_lily_girl, 5=sex_magic_lily_adult, 6=sacrifice, 7=release. | +| `0x76116` | unit_roster_variant_ids | high | investigation | Roster-form mapping for 36 recruitable units. Column 0 maps the summonable archetypes and principal heroines to their normal unit id; column 1 maps seven heroines to EBINIT ids 21..27, whose names explicitly identify their brainwashed states. SALLY replaces the selected party unit with the action-selected form, and UNITECH recruitment modes 3/4 select the same two columns. Columns: 0=normal, 1=brainwashed. | +| `0x768e6` | unit_sex_magic_bonus_item_id | high | investigation | Item awarded by SALLY after the three form-dependent intimate-event actions for 22 eligible units. SALLY passes the value directly to USEITEM and then displays the selected character name followed by the literal message 'sex magic bonus' and the resolved item description. Principal heroines yield planetary stones; the remaining rows resolve to recovery items and rare materials. | +| `0x76cce` | unit_essence_yield | high | investigation | Essence returned by SALLY's unit-conversion/release actions for 187 units. The normal path adds this value to current essence and the special path adds five times it, clamps to the essence cap, then applies the corresponding alignment adjustment; it is distinct from unit_deployment_cost_base. | +| `0x770b6` | unit_summon_unlock_flag_index | high | investigation | Summoning-stone/unlock flag index for the 29 recruitable monster archetypes. SUMMON and SALLY subtract one and test the corresponding cell in the shared flag bank at 0x6d3 before listing or advancing the unit; GAMESTART uses presence of this mapping when restoring party slots. | +| `0x7749e` | unit_summon_knowledge_threshold | high | investigation | Per-archetype familiarity threshold for 19 summonable units. SUMMON divides accumulated progress by it for the displayed percentage and treats zero-threshold units as limited to one copy; SALLY awards the corresponding summoning item and 'deepened understanding' message when accumulated progress reaches the threshold. | +| `0x77886` | unit_summon_point_cost | high | investigation | Point cost for the 29 summonable unit archetypes. SUMMON compares it with the current point pool, emits 'Insufficient points' on failure, subtracts it on success, and displays the same number in each catalog row. | +| `0x77c6e` | unit_defense_element | high | investigation | EBINIT defensive affinity for 250 units. DRAWENP renders it through the same twelve-value defense-attribute vocabulary as item_defense_element; CALCBTPARAM, BTRTN, and route scripts consume it during battle resolution. | +| `0x78056` | unit_default_attack_item_id | high | investigation | EBINIT default attack for 250 units. Every populated value cross-resolves to ITINIT's innate-attack records; SELACT, BTL, CALCBTPARAM, CALCDMG, and CHMENU use it when no equipped weapon overrides the unit's natural attack. | +| `0x7843e` | unit_power_tier | med | inference | Authoring-only EBINIT power/progression tier populated for 243 units. It is independent of species, sex, defense element, and boss class, but rises strongly with deployment cost, essence yield, level cap, and base stats. Lily's child/girl/adult forms are tiers 2/4/6, and recurring heroine boss definitions generally rise as their story appearances become stronger. No shipped script reads the array, and the /v2 native image contains no literal reference to its global index, so the descriptive name is correlation-based rather than a runtime behavior claim. | +| `0x78826` | unit_weapon_item_category | high | investigation | EBINIT weapon/equipment-family restriction for 179 units. CHMENU compares an item's item_category directly with this value when deciding whether the selected unit can equip it; Lily's forms store -1 for unrestricted handling. | +| `0x78c0e` | unit_starting_equipment_item_id | high | investigation | Fixed equipment for 22 named/boss unit records. Values cross-resolve to weapons, shields, armor, and accessories in ITINIT. SETEN equips the item instead of unit_default_attack_item_id, UNITECH grants it on first recruitment, and INFOEN derives the displayed defense element from it when applicable. | +| `0x78ff6` | unit_starting_skill_ids | high | investigation | EBINIT four-slot starting skill record. The shipped table populates the first three columns. SETEN, UNITECH, and SALLY copy the row into each runtime unit's skill list; GAMESTART, FORT, FIELD, and DRAWENP inspect the same ids, all of which cross-resolve to SKINIT. Columns: 0=skill_slot_1, 1=skill_slot_2, 2=skill_slot_3, 3=skill_slot_4. | +| `0x79f96` | unit_deployment_cost_base | high | investigation | Base deployment/command cost for 204 units. SETCH, SETEN, and ADDEXP copy it plus the per-unit adjustment at 0x57357 into runtime cost 0x5f0bb; SALLY checks the prospective total against party capacity, while FIELD/READY add it to and REMOVECH subtracts it from the deployed-cost aggregate. | +| `0x7a37e` | unit_starting_level | high | investigation | EBINIT initial level for 242 units. Lily's three forms store levels 1, 20, and 40. SETEN and SALLY copy or compare it while constructing a runtime unit, and UNITECH uses it when synchronizing form and character state. | +| `0x7a766` | unit_level_cap | high | investigation | EBINIT maximum level for 243 units. ADDEXP permits level growth only while the runtime level is below this field, and SETEN uses it as the default upper bound when no scenario-specific enemy cap is supplied. | +| `0x7ab4e` | unit_auto_level_scale_divisor | high | investigation | Default level-scaling divisor for 192 enemy definitions. SETEN uses a scenario override when supplied, otherwise divides the difference between scenario level and unit_starting_level by this value, adds the result to the runtime level, and clamps it to unit_level_cap. | +| `0x7af36` | unit_base_stats | high | investigation | EBINIT fourteen-column base-stat record copied wholesale into each runtime unit by SETEN, UNITECH, and SALLY. Its layout matches item_stat_modifiers: columns 2 physical attack, 3 physical defense, 4 magic attack, 5 magic defense, 6 speed, 7 luck, 10 movement, 11 max HP, 12 max SP, and 13 max FS; accuracy/evasion and other unpopulated columns begin at zero. Columns: 0=accuracy, 1=evasion, 2=physical_attack, 3=physical_defense, 4=magic_attack, 5=magic_defense, 6=speed, 7=luck, 8=critical_chance, 9=capture_power, 10=movement, 11=max_hp, 12=max_sp, 13=max_fs. | +| `0x7e5e6` | unit_stat_growth_rates | high | investigation | EBINIT per-level growth record with the same fourteen-column layout as unit_base_stats. ADDEXP adds each rate to a fractional accumulator, divides by 100 to award whole stat points, and retains the remainder; SETEN and UNITECH apply the same rates when materializing units above their starting level. Columns: 0=accuracy, 1=evasion, 2=physical_attack, 3=physical_defense, 4=magic_attack, 5=magic_defense, 6=speed, 7=luck, 8=critical_chance, 9=capture_power, 10=movement, 11=max_hp, 12=max_sp, 13=max_fs. | +| `0x83406` | unit_experience_reward | high | investigation | Per-opponent base experience progress. After each battle exchange, BTL awards a surviving faction-1 participant against the opposing unit definition. If the opponent survives, enemy-minus-player level differences >=3/2/1/<=0 select 40/30/20/10 percent. If the opponent is defeated, differences >=3/2/1/0/-1/-2/<=-3 select 250/200/150/100/75/40/20 percent. Integer division truncates. The result enters ADDEXP, whose normally cleared modifier bits can suppress, double, or multiply it by ten. A cell with no writer in the ordered INIT sequence remains zero; append unit 900 is such a cell and therefore awards zero at every bracket. | +| `0x837ee` | unit_drop_item_ids | high | investigation | Enemy drop table. Values cross-resolve to ITINIT items (for example treasure puttetto drops bronze/silver/gold coins and planet stones); BTL rolls and awards the rows, while INFOEN displays the possible drops. Columns: 0=drop_1_item_id, 1=drop_2_item_id, 2=drop_3_item_id, 3=drop_4_item_id, 4=drop_5_item_id, 5=drop_6_item_id, 6=drop_7_item_id, 7=drop_8_item_id. | +| `0x8572e` | unit_drop_chance_percent | high | investigation | Per-slot drop chance paired with unit_drop_item_ids. BTL draws random-modulo 100 for each populated slot and awards the item when the result is below this value; only columns 0..4 are populated in shipped EBINIT. Columns: 0=drop_1_percent, 1=drop_2_percent, 2=drop_3_percent, 3=drop_4_percent, 4=drop_5_percent, 5=drop_6_percent, 6=drop_7_percent, 7=drop_8_percent. | +| `0x8766e` | unit_large_battle_sprite | high | investigation | Presentation flag for 33 large demons, dragons, gods, and their variants. BTL and INFOEN use it to anchor the CB battle figure at the lower screen edge and omit the ordinary-unit framing treatment required by smaller sprites. | +| `0x87a57` | scjump_scene_script_resource_ids | high | investigation | SCINIT's sparse decision-to-script registry. SYSTEM4, FIELD, SALLY, and TRAIN index it by scjump_decision_out, then either call the returned packed resource id or copy it to next_script_resource_id. SCINIT contains 1,209 final decision rows backed by 2,179 source assignments; all 135 distinct packed ids resolve to numbered SC scene scripts. | +| `0x8a167` | scjump_authored_chapters | high | investigation | SCINIT's parallel authored chapter metadata for each scjump_scene_script_resource_ids entry. Source assignments form contiguous chapter 1..9 runs followed by an unassigned -1 run. Of the 847 decision ids currently emitted by SCJUMP, 844 final tags agree with SCJUMP's independently decoded chapter paths; three retained mismatches are legacy/stale metadata. No shipped script reads this array directly. | +| `0x8c879` | item_sort_key | high | investigation | ITINIT field for all 287 populated item ids. CHMENU, IMPROVE, and INFOIT pass this array as the primary key to op 0x12f's stable index sort, establishing it as the catalog/display ordering key. The runtime lookup base is one cell before ITINIT's first write because item ids are one-based. | +| `0x8cc61` | item_random_tier | high | investigation | ITINIT field for all 287 items. ADDRANDOMITEM and LOSTRANDOMITEM bucket eligible item ids by this value before choosing a random gain/loss; IMPROVE compares it with the current progression rank. This is the random-item availability/rarity tier, distinct from item_category. | +| `0x8d049` | item_category | high | investigation | ITINIT field for all 287 items and ITMES's top-level behavior dispatch. Observed groups: 0 innate attacks, 1 key/story items, 2 consumables, 4 stat stones, 8 synthesis materials, 9 coins, 10..17 weapon families, 19 boots, 20 armor, 21 shields, 22 accessories, and 23 capture ropes. | +| `0x8d431` | item_min_range | high | investigation | Populated for the 12 bows/ranged innate attacks whose descriptions say range 2. CALCSCOPE reads it as the first range bound; the paired maximum is item_max_range. | +| `0x8d819` | item_max_range | high | investigation | Populated for the same 12 ranged items as item_min_range. CALCSCOPE reads it as the second range bound, matching every description's range-2 annotation. | +| `0x8dc01` | item_icon_id | high | investigation | ITINIT field for all 287 items. READICON sorts and indexes this array to select icon atlas entries; ALCHEMY, CHMENU, IMPROVE, and INFOIT use the same value for item-row presentation. | +| `0x8dfe9` | item_attack_element | high | investigation | Populated for 107 weapons/attacks. Values exactly match the AFINIT attack-attribute string table at GStr[0x2690 + value] and the Japanese item descriptions; combat scope/parameter code consumes the same array. | +| `0x8e3d1` | item_defense_element | high | investigation | Populated for the 13 shields. Values match descriptions such as physical, universal, holy, dark, spirit, and divinity defense; DRAWTIP renders them through AFINIT's defense string table at GStr[0x26a4 + value]. | +| `0x8e7b9` | item_character_whitelist | high | investigation | Sparse ITINIT row-major table with stride 5. CHMENU rejects an item when column 0 is populated and the selected party slot's character id is absent from the row. Unique accessories 471/472 allow one character each, while crossover accessories 480..485 allow character ids 2, 3, and 4. Unused trailing columns remain zero. Columns: 0=allowed_character_id_1, 1=allowed_character_id_2, 2=allowed_character_id_3, 3=allowed_character_id_4, 4=allowed_character_id_5. | +| `0x8ff29` | item_sex_restriction_mask | high | investigation | Sparse ITINIT equipment restriction. CHMENU uses unit_sex_category as a bit index and rejects an item when that bit is absent from this mask. Both populated items carry only bit 2; EBINIT value 2 is female, and ITMES explicitly describes item 419 as female-only. | +| `0x906f9` | item_status_delta_levels | high | investigation | Sparse ITINIT row-major table consumed by USEITEM and CALCILL when applying an item's effects. Positive values inflict or drain; -5 removes a condition (for example paralysis-removal item 108 stores -5 in column 8). Confirmed columns are 2 HP drain, 3 SP drain, 4 FS drain, 5 curse, 6 charm, 7 confusion, 8 paralysis, 9 poison, 10 water-flow, and 11 fear. Columns: 2=hp_drain, 3=sp_drain, 4=fs_drain, 5=curse, 6=charm, 7=confusion, 8=paralysis, 9=poison, 10=water_flow, 11=fear. | +| `0x97c29` | item_equipped_status_levels | high | investigation | Sparse ITINIT row-major table added to a unit's 30-column condition state by CALCREVISE. Item descriptions identify populated columns 9 poison, 11 fear, 13 regeneration, and 14 exaltation; these are passive equipped effects, distinct from item_status_delta_levels. Columns: 9=poison, 11=fear, 13=regeneration, 14=exaltation. | +| `0x9f159` | item_granted_skill_id | high | investigation | Populated for 85 equipment items. Values cross-resolve to SKINIT (for example flying bracelet=1 Flying, transfer bracelet=21 Transfer, thief key=22 Lockpick, ropes=156 Capture Attack); CALCREVISE applies the linked skill and UI scripts display it. | +| `0x9f541` | item_stat_modifiers | high | investigation | ITINIT row-major equipment modifiers added directly to the unit's 14-column stat record by CALCREVISE. Descriptions and consumers establish columns 0 accuracy, 1 evasion, 2 physical attack, 3 physical defense, 4 magic attack, 5 magic defense, 6 speed, 7 luck, 8 critical chance, 9 capture power, 10 movement, 11 max HP, 12 max SP, and 13 max FS. CALCBTPARAM adds columns 7 and 8 into the action's critical percentage, and CALCDMG compares the clamped result with a random-modulo-100 roll. Columns: 0=accuracy, 1=evasion, 2=physical_attack, 3=physical_defense, 4=magic_attack, 5=magic_defense, 6=speed, 7=luck, 8=critical_chance, 9=capture_power, 10=movement, 11=max_hp, 12=max_sp, 13=max_fs. | +| `0xa2bf1` | item_tuning_curve_ids | high | investigation | ITINIT row-major table selecting an equipment-growth curve for each of the ten tunable fields. TUNE, IMPROVE, DRAWTIP, and CALCREVISE combine each nonzero curve id with the item's corresponding tuning level and index the shared curve-value table at 0xab6fa. Columns align with item_stat_modifiers columns 0..9. Columns: 0=accuracy, 1=evasion, 2=physical_attack, 3=physical_defense, 4=magic_attack, 5=magic_defense, 6=speed, 7=luck, 8=critical_chance, 9=capture_power. | +| `0xa5301` | item_resource_recovery_amounts | high | investigation | Sparse ITINIT row-major consumable table. USEITEM applies columns 0, 1, and 2 to the matching three-column unit resource record; descriptions prove these are HP, SP, and FS respectively (for example item 101 stores HP 30, and item 107 stores 999/99/99 for full recovery). Columns: 0=hp, 1=sp, 2=fs. | +| `0xa62a1` | item_essence_recovery_amount | high | investigation | Sparse ITINIT consumable field. Item 106, Blood Price Healing Hand, describes essence recovery 50 and stores 50 here; USEITEM follows the dedicated essence-recovery path and scales the value before updating the selected unit. | +| `0xa6689` | item_weapon_class | high | investigation | Populated for 104 weapons/innate attacks. Stable values identify weapon families (1 unarmed, 2 staff, 3 claw, 4 dagger, 5 sword, 6 chain blade, 7 spear, 8 axe, 9 bow, 11 blade boots; later values are monster/natural attack classes). CALCDMG consumes it. | +| `0xa6a71` | item_handler_script_id | high | investigation | ITINIT field for all 287 items. Item menus look up this value and feed it directly to call-script; the packed id 0x319b resolves to ITMES.BIN, the shared per-item behavior/description dispatcher. | +| `0xa6e5a` | skill_sort_key | high | investigation | SKINIT field populated for 129 of 131 skills. ADDEXP, ADDSKILL, CHMENU, INFOIT, and SETCH combine it with skill_category to construct deterministic skill-list ordering keys; higher-level sort operations consume the resulting indices. | +| `0xa6f86` | skill_category | high | investigation | SKINIT category for all 131 skills. The records establish 1 movement/exploration, 2 defense/special attack, 3 utility/passive, 4 combat passive, 5 physical special, 6 offensive magic, and 7 healing magic. Combat and menu scripts dispatch directly on these values. | +| `0xa70b2` | skill_change_catalog_eligible | high | investigation | SKINIT inclusion flag for CHMENU's fourth (skill-change) catalog. CHMENU scans all 300 ids, keeps only nonzero rows, sorts acquired rows ahead of unavailable rows using skill_category and skill_sort_key, and copies the acquired prefix into catalog row 3. Eligible ids are 1, 2, 112, 130..133, 210, 228, 230, and 231. | +| `0xa71de` | skill_min_range_encoded | high | investigation | Populated for the 94 active skills. CALCSCOPE and CALCREVISE subtract one before using it as the lower range bound; SELACT and DRAWTIP use the same encoded bound. | +| `0xa730a` | skill_max_range_encoded | high | investigation | Populated for the same 94 active skills as skill_min_range_encoded. CALCSCOPE subtracts one to obtain the upper bound, exactly matching descriptions such as range 3 -> stored 4 and range 9 -> stored 10. | +| `0xa7436` | skill_attack_element | high | investigation | Populated for 60 elemental attacks and spells. Values match the Japanese descriptions and the same eight-value attack-element enum used by item_attack_element; CALCSCOPE, CALCBTPARAM, and SELACT consume it. | +| `0xa7562` | skill_status_levels | high | investigation | Sparse SKINIT row-major condition table consumed by CALCILL when applying a skill's effects to the target unit. Skill names and descriptions identify columns 1 instant death, 6 charm, 7 confusion, 8 paralysis, 9 poison, 10 water-flow, and 11 fear; the column layout matches item_status_delta_levels. Columns: 1=instant_death, 6=charm, 7=confusion, 8=paralysis, 9=poison, 10=water_flow, 11=fear. | +| `0xa988a` | skill_icon_id | high | investigation | SKINIT icon id for all 131 skills. CHMENU and INFOIT translate it into the shared icon atlas; the six ids group movement, defense, utility, passive, physical-special, and magic icons. | +| `0xa99b6` | skill_combat_stat_deltas | high | investigation | Sparse SKINIT row-major table applied by CALCBTPARAM for the selected action. Descriptions and combat consumers establish columns 0 accuracy, 1 evasion, 2 physical attack, 3 physical defense, 4 magic attack, 5 magic defense, 6 speed, 7 luck, 8 critical chance, and 9 capture power. Column 7 is unpopulated in shipped SKINIT; CALCBTPARAM adds any luck and critical modifiers into the critical percentage that CALCDMG rolls after the hit check. Columns: 0=accuracy, 1=evasion, 2=physical_attack, 3=physical_defense, 4=magic_attack, 5=magic_defense, 6=speed, 7=luck, 8=critical_chance, 9=capture_power. | +| `0xaa56e` | skill_resource_deltas | high | investigation | Sparse SKINIT resource table used throughout skill selection and resolution. Column 0 is HP recovery for the three healing spells; column 1 is the negative SP cost for all 95 active skills, exactly matching each description. Column 2 is unpopulated in the shipped table. Columns: 0=hp_recovery, 1=sp_cost. | +| `0xaa8f2` | skill_proc_chance_percent | high | investigation | Probability for 14 passive skills. CALCDMG compares random-modulo 100 against this value; examples include Re-action 20, Double Action 100, Counter 10, and Resurrection 50. | +| `0xaaa1e` | skill_battle_animation_id | high | investigation | Populated for 101 combat skills. BTL and CALCDMG place this value in the battle-animation selector before calling BTANINIT; most skills reuse their own id, while related skills deliberately share an animation and passive reactions use ids 801..808. | +| `0xaab4a` | skill_handler_script_id | high | investigation | SKINIT field for all 131 skills. CHMENU and INFOIT look it up and pass it directly to call-script; packed id 0x31ca resolves to SKMES.BIN, the shared per-skill text/behavior dispatcher. | +| `0xaac78` | condition_effectiveness_element_ids | high | investigation | ILINIT condition metadata. CALCILL uses the selected condition's value as the element-table column for its application-chance effectiveness calculation. | +| `0xaac96` | condition_can_affect_bosses | high | investigation | ILINIT policy vector. CALCILL rejects a condition against a boss-class target when this cell is zero; nonzero cells bypass that boss immunity gate. | +| `0xaacb4` | condition_cleared_by_recover | high | investigation | ILINIT recovery-policy vector. RECOVER and DISARM use it to identify charm, confusion, paralysis, poison, water-flow, and fear as removable conditions; RECOVER resets each eligible current level to its equipment/passive baseline. | +| `0xaacd2` | condition_icon_ids | high | investigation | ILINIT display metadata. DRAWENP and FIELD use these ids to deduplicate active-condition indicators and select the corresponding status-icon atlas entry. | +| `0xaacf0` | condition_duration_turns_by_level | high | investigation | ILINIT's five-column duration row for each condition. ADDILLSUB indexes it by the resulting condition level minus one and stores the value in entity_condition_remaining_turns. Columns: 0=level_1_turns, 1=level_2_turns, 2=level_3_turns, 3=level_4_turns, 4=level_5_turns. | +| `0xaad86` | condition_stat_deltas | high | investigation | ILINIT's five-level by eleven-stat matrix for each condition. CALCREVISE indexes (condition level - 1) * 11 + stat column and adds the result to entity_effective_stats columns 0..10. Shipped rows populate curse, confusion, paralysis, and exaltation. Columns: 0=level_1_accuracy, 1=level_1_evasion, 2=level_1_physical_attack, 3=level_1_physical_defense, 4=level_1_magic_attack, 5=level_1_magic_defense, 6=level_1_speed, 7=level_1_luck, 8=level_1_critical_chance, 9=level_1_capture_power, 10=level_1_movement, 11=level_2_accuracy, 12=level_2_evasion, 13=level_2_physical_attack, 14=level_2_physical_defense, 15=level_2_magic_attack, 16=level_2_magic_defense, 17=level_2_speed, 18=level_2_luck, 19=level_2_critical_chance, 20=level_2_capture_power, 21=level_2_movement, 22=level_3_accuracy, 23=level_3_evasion, 24=level_3_physical_attack, 25=level_3_physical_defense, 26=level_3_magic_attack, 27=level_3_magic_defense, 28=level_3_speed, 29=level_3_luck, 30=level_3_critical_chance, 31=level_3_capture_power, 32=level_3_movement, 33=level_4_accuracy, 34=level_4_evasion, 35=level_4_physical_attack, 36=level_4_physical_defense, 37=level_4_magic_attack, 38=level_4_magic_defense, 39=level_4_speed, 40=level_4_luck, 41=level_4_critical_chance, 42=level_4_capture_power, 43=level_4_movement, 44=level_5_accuracy, 45=level_5_evasion, 46=level_5_physical_attack, 47=level_5_physical_defense, 48=level_5_magic_attack, 49=level_5_magic_defense, 50=level_5_speed, 51=level_5_luck, 52=level_5_critical_chance, 53=level_5_capture_power, 54=level_5_movement. | +| `0xab3f8` | condition_resource_deltas | high | investigation | ILINIT's five-level by three-resource matrix for each condition. FIELD applies the active row each turn; CALCDMG also consumes the HP/SP/FS drain condition rows during battle. Positive values restore/drain to the acting side as defined by the caller, while negative values are periodic damage or loss. Columns: 0=level_1_hp, 1=level_1_sp, 2=level_1_fs, 3=level_2_hp, 4=level_2_sp, 5=level_2_fs, 6=level_3_hp, 7=level_3_sp, 8=level_3_fs, 9=level_4_hp, 10=level_4_sp, 11=level_4_fs, 12=level_5_hp, 13=level_5_sp, 14=level_5_fs. | +| `0xab5ba` | attack_element_effectiveness_percent | high | investigation | AFINIT-authored element matchup table with thirteen authored defense rows and eighteen authored cells per row inside the reserved 20-by-20 layout. Positive values make an action eligible in SETMVWORK and RTN_M051/052; CALCBTPARAM multiplies battle parameters by the selected percentage and handles negative values as special/immunity cases. INFOAF displays eight attack columns for its selected defense rows. | +| `0xab6fa` | item_tuning_stat_bonus_curves | high | investigation | Eighteen usable equipment-growth curves selected by item_tuning_curve_ids, plus an explicitly zeroed reserved row 19. TUNE and IMPROVE use the nonzero prefix as the available tuning-level range; CALCREVISE and DRAWTIP add the selected zero-based tuning level's bonus to the corresponding stat. Columns: 0=tuning_level_1, 1=tuning_level_2, 2=tuning_level_3, 3=tuning_level_4, 4=tuning_level_5, 5=tuning_level_6, 6=tuning_level_7, 7=tuning_level_8, 8=tuning_level_9, 9=tuning_level_10, 10=reserved. | +| `0xab7d6` | item_tuning_point_cost_curves | high | investigation | Point-cost curves paired by curve id and tuning level with item_tuning_stat_bonus_curves. IMPROVE sums costs for newly selected levels, subtracts refunds for removed levels, checks the resulting total against the tuning-point balance, and deducts it on confirmation. Columns: 0=tuning_level_1, 1=tuning_level_2, 2=tuning_level_3, 3=tuning_level_4, 4=tuning_level_5, 5=tuning_level_6, 6=tuning_level_7, 7=tuning_level_8, 8=tuning_level_9, 9=tuning_level_10, 10=reserved. | +| `0xab8b2` | facility_level_progress_thresholds | high | investigation | AFINIT's three facility-progression rows. IMPROVE uses row 0 for equipment tuning, ALCHEMY uses row 1, and MAGIC/USEMAGIC use row 2; each indexes the row by the current level and caps advancement at level 6. Columns: 0=level_0_to_1, 1=level_1_to_2, 2=level_2_to_3, 3=level_3_to_4, 4=level_4_to_5, 5=level_5_to_6, 6=level_6_cap. | +| `0xab8c7` | class_change_rule_script_ids | high | investigation | CALCCC iterates these 32 cells and call-scripts every positive entry to evaluate class-change providers. CCINIT is the shipped rule program decoded into build/data/CCINIT.json. | +| `0xaba64` | stage_object_runtime_flags | high | investigation | Per-current-stage object flags. RTN_M010 and RTN_M015 require bit 1 before considering Healing Feathers or Magic Pillars as movement targets; FIELD and object rendering maintain the broader type-dependent bitfield. | +| `0xaba96` | pathfinding_remaining_route_steps | high | investigation | MVSEEK's row-major reachability grid. Mode 0 searches from the current entity with movement+1 at the origin; modes 1/2 search from the caller-supplied coordinate with 9999 at the origin. Each traversed edge decrements the value, so a larger positive value is nearer to the origin. RTN_M006/007/015 use origin-minus-target values as route-step radii; RTN_M010 ranks Healing Feathers by the negated value. | +| `0xb240e` | pathfinding_movement_costs | high | investigation | MVSEEK's row-major movement-cost work grid, indexed as [tile_y][tile_x] with stride 27. FIELD and RTN_M providers accept candidate destinations only when this cost is within the acting entity's current FS or a provider-specific override. | +| `0xb8d86` | action_range_distance_grid | high | investigation | ATSEEK's row-major action-range flood-fill grid. It starts from the acting entity, expands through map-valid doubled-coordinate neighbors up to usable_action_max_range, and stores 1 for the first range band, 2 for the next, and so on. RTN_M051/052 select offensive targets from it; RTN_M061 selects in-range healing targets. | +| `0xbf6fe` | pathfinding_filtered_route_scores | high | investigation | SETMVWORK begins by copying pathfinding_remaining_route_steps, then filters occupied entity cells according to faction and the acting entity's usable offensive-action mask/effectiveness. RTN_M providers combine this target-proximity score with a movement-limited MVSEEK grid to select a reachable tile nearest an entity or stage object. | +| `0xc6077` | selected_movement_route_steps | high | investigation | Selected movement-route work grid indexed as [tile_y][tile_x]. MVRTN, FIELD, and SETROUTE clear all 27,000 cells. SETROUTE starts at map_target_tile_x/y, copies pathfinding_remaining_route_steps into the route, and follows the cardinal neighbor whose score is one greater until it reaches the acting entity. FIELD uses the monotone values to draw directional route markers and drive movement; SELACT tests whether an action target follows movement; seventeen RTN_M providers reject candidate endpoints whose route cell is zero. | +| `0xcc9f4` | offensive_action_scope_masks | high | investigation | CALCSCOPE clears ten encoded-range cells, sets bit 0 over the equipped/default attack's range, and sets bits 1..4 over each usable offensive skill's range. SETMVWORK uses the range-0 mask and paired attack elements when filtering target cells; RTN_M003/006/016/017/018 require its normal-attack bit. Columns: 0=range_0, 1=range_1, 2=range_2, 3=range_3, 4=range_4, 5=range_5, 6=range_6, 7=range_7, 8=range_8, 9=range_9. | +| `0xcc9fe` | healing_action_scope_masks | high | investigation | CALCSCOPE clears ten encoded-range cells and sets the equipped-slot bit for each usable category-7 healing skill over its applicable range. RTN_M061 uses the masks to restrict ally targets and to select the range-enabled healing skill. Columns: 0=range_0, 1=range_1, 2=range_2, 3=range_3, 4=range_4, 5=range_5, 6=range_6, 7=range_7, 8=range_8, 9=range_9. | +| `0xcca08` | offensive_action_attack_elements | high | investigation | CALCSCOPE stores the normal attack element in action column 0 and each usable equipped skill's attack element in columns 1..4 for every applicable range band. SETMVWORK and RTN_M051/052 test these elements against attack_element_effectiveness_percent. | +| `0xccbcf` | cardinal_tile_delta_x | high | investigation | INIT2's shared no-move-plus-four-cardinal-neighbor X offsets. SETROUTE uses indices 1..4 while tracing a selected route toward the acting entity; MVSEEK, ATSEEK, FIELD, SALLY, and DRAWMAP use the same neighbor order. | +| `0xccbd4` | cardinal_tile_delta_y | high | investigation | INIT2's Y offsets paired with cardinal_tile_delta_x. Indices 1..4 enumerate positive Y, negative X, negative Y, and positive X neighbors; index zero leaves the coordinate unchanged. | +| `0xccc93` | stage_terrain_atlas | high | investigation | Immutable sparse half-tile terrain atlas loaded by MPINIT. Each footer copy writes fifty cells at row stride 53. FIELD doubles STINIT2's tile bounds and copies the selected rectangle into current_stage_terrain_grid; DRAWMINIMAP reads the atlas outside the active rectangle for border context, and RESETLAND restores changed cells from it. | +| `0xe6aa4` | terrain_texture_slot_indices | high | investigation | LAINIT mapping from terrain id to the index in stage_map_texture_asset_overrides. DRAWMAP uses the selected slot to choose the current stage's tiled terrain surface. | +| `0xe6ac2` | terrain_area_fill_flags | high | investigation | LAINIT terrain topology flag. DRAWMAP and CALCOCC use neighboring values to expand room-like regions across the alternating half-tile grid; DRAWMINIMAP uses the same distinction when joining adjacent revealed cells. | +| `0xe6ae0` | terrain_layout_classes | high | investigation | LAINIT terrain class. Zero cells are rejected by map rendering, occupancy, and pathfinding; ordinary areas, passages, and hidden spaces take distinct DRAWMAP/CALCOCC/MVSEEK paths. Combined with terrain_area_fill_flags, it distinguishes hidden rooms from hidden passages. | +| `0xe6afe` | terrain_combat_stat_deltas | high | investigation | LAINIT terrain-effect matrix. CALCBTPARAM reads the acting unit's doubled-coordinate battle tile and adds columns 0..9 through the same combat-parameter channels used by SKINIT skill deltas. INFOAF displays the first eight columns for its terrain rows, and the five populated terrain_effect_descriptions exactly summarize the shipped nonzero cells. Columns: 0=accuracy, 1=evasion, 2=physical_attack, 3=physical_defense, 4=magic_attack, 5=magic_defense, 6=speed, 7=luck, 8=critical_chance, 9=capture_power. | +| `0xe6c2a` | terrain_required_skill_ids | high | investigation | LAINIT traversal/reveal requirement indexed by terrain id. MVSEEK and FIELD reject ordinary terrain unless the moving unit owns the referenced SKINIT skill; hidden passages/rooms use the exploration skill through the dedicated hidden-terrain path. FIELD and INFOAF resolve populated ids to skill names for display. | +| `0xe6c48` | stage_map_texture_default_asset_ids | high | investigation | Shared fallback map texture for each of twenty stage texture slots. FIELD loads a positive stage_map_texture_asset_overrides value directly, skips zero, and when the stage value is -1 loads this slot's MP000A/B/C/E/H/I/J/K/L/N.AGF default into surface 0x52+slot. | +| `0xe6dee` | object_sprite_state_row_mode | high | investigation | OBINIT metadata indexed by object type. FIELD copies the type-tagged initial payload into stage_object_runtime_state only for mode 1; DRAWOBJ likewise multiplies that runtime state by the object sprite height to select source Y only for mode 1. | +| `0xe7302` | stage_bgm_id | high | investigation | STINIT's per-stage scalar loaded for all 74 records. FIELD passes the value directly to play-bgm when starting the stage. | +| `0xe7303` | stage_target_clear_turns | high | investigation | STINIT's target/par turn count. STAGECLEAR divides elapsed turns by this value to derive a performance multiplier; when replaying an already-cleared ordinary stage, FIELD also uses it as the forced-retreat turn limit. | +| `0xe7304` | stage_clear_performance_bonus | med | investigation | Base stage-clear reward increment. STAGECLEAR multiplies it by the turn-performance percentage derived from stage_target_clear_turns, divides by 100, and adds the result to the capped persistent reward counter at 0x6719. The counter's player-facing resource name remains unresolved. | +| `0xe730b` | stage_replay_rules_disabled | high | investigation | FIELD's already-cleared-stage override gate. For a cleared stage with value 0, FIELD replaces the mission with an all-party retreat objective and a stage_target_clear_turns forced-retreat limit; value 1 suppresses that replay conversion and related revisit handling. | +| `0xe730c` | stage_turn_limit | high | investigation | STINIT's per-stage turn limit. DRAWCHP presents the value in the stage information, while FIELD compares the current turn against it when checking stage completion. | +| `0xe730d` | stage_turn_limit_outcome | high | investigation | STINIT mode paired with stage_turn_limit. Stage 1 stores 0 and describes 50-turn expiry as defeat; stage 2 stores 1 and explicitly describes 15-turn expiry as a forced-retreat clear. | +| `0xe7311` | stage_map_texture_asset_overrides | high | investigation | Twenty current-stage map texture slots. FIELD loads positive resource ids into tiled surface slots 0x52+index, skips zero, and substitutes the shared per-index fallback for -1; DRAWMAP selects and draws those surfaces through the terrain-to-texture-slot map. | +| `0xe7325` | stage_object_tile_x | high | investigation | X coordinate for each current-stage object slot. DRAWOBJ converts it to centered map-space pixels; FIELD and CALCOCC use it with stage_object_tile_y for object interaction and occupancy. | +| `0xe7357` | stage_object_tile_y | high | investigation | Y coordinate for each current-stage object slot. DRAWOBJ converts it to centered map-space pixels; FIELD and CALCOCC use it with stage_object_tile_x for object interaction and occupancy. | +| `0xe7389` | stage_object_type_id | high | investigation | Object-definition id for each current-stage object slot. SETOBJ decides whether the slot exists, while DRAWOBJ and FIELD use the id to select shared object graphics, dimensions, animation, collision, and behavior metadata. | +| `0xe73bb` | stage_object_primary_payload | high | investigation | STINIT's primary per-object payload array. FIELD interprets it by the parallel object type: initial faction for Magic Pillars, teleport destination X, item id, card-generation list id for type 28, non-triggering faction for hazards/barriers, or initial object state for the consumer-proven stateful types. | +| `0xe741f` | stage_object_reinforcement_interval_turns | high | investigation | Per-object reinforcement schedule. FIELD compares the current turn and the object's runtime spawn count against this interval to calculate due weighted enemy spawns; object type 27 uses the same value as its one-shot trigger turn. | +| `0xe7451` | stage_object_reinforcement_spawn_limit | high | investigation | Maximum number of scheduled units materialized through a stage object. FIELD stops the object's reinforcement path once its runtime spawn counter reaches this value; object type 27 stores one for its one-shot special spawn. | +| `0xe7483` | stage_object_difficulty_mask | high | investigation | Per-object difficulty inclusion mask. SETOBJ uses check-bit with difficulty_index and rejects the object slot when the selected difficulty bit is absent. | +| `0xe74b5` | stage_object_required_story_flags | high | investigation | Seven positive prerequisites per stage object. SETOBJ subtracts one from every populated id and suppresses the object unless the corresponding story_event_flags cell equals 1. Columns: 0=required_flag_1, 1=required_flag_2, 2=required_flag_3, 3=required_flag_4, 4=required_flag_5, 5=required_flag_6, 6=required_flag_7. | +| `0xe7613` | stage_object_forbidden_story_flags | high | investigation | Five negative prerequisites per stage object. SETOBJ subtracts one from every populated id and suppresses the object when the corresponding story_event_flags cell equals 1. Columns: 0=forbidden_flag_1, 1=forbidden_flag_2, 2=forbidden_flag_3, 3=forbidden_flag_4, 4=forbidden_flag_5. | +| `0xe773f` | stage_enemy_spawn_tile_x | high | investigation | Direct X coordinate for a current-stage enemy slot. FIELD copies it into the runtime unit position when stage_enemy_spawn_object_slot is zero; object-linked alternatives instead inherit the referenced object's coordinates. | +| `0xe775d` | stage_enemy_spawn_tile_y | high | investigation | Direct Y coordinate paired with stage_enemy_spawn_tile_x. FIELD and ADDEN copy the pair into the runtime unit position; object-linked alternatives instead inherit the referenced object's coordinates. | +| `0xe777b` | stage_enemy_spawn_object_slot | high | investigation | Optional object-placement anchor for an enemy spawn. FIELD resolves nonzero entries through stage_object_type_id and uses the matching stage_object_tile_x/Y location; zero selects stage_enemy_spawn_tile_x/Y directly. | +| `0xe7799` | stage_enemy_faction_id | high | investigation | Per-spawn faction/team selector. FIELD and ADDEN copy it into the runtime unit's faction field, use it to choose the entity-index band, and test the same value against map occupancy masks. | +| `0xe77b7` | stage_enemy_difficulty_mask | high | investigation | Per-spawn difficulty inclusion mask. FIELD uses check-bit with difficulty_index and rejects a slot when the selected difficulty bit is absent. | +| `0xe77d5` | stage_enemy_first_clear_only | high | investigation | Per-spawn replay gate. FIELD rejects a populated enemy slot when this value is 2 and stage_clear_state for the current stage is 1; zero/default slots remain eligible on cleared-stage replays. | +| `0xe77f3` | stage_enemy_random_selection_weight | high | investigation | Weight for stage-enemy alternatives. FIELD groups eligible nonzero-weight slots by their stage_enemy_spawn_object_slot, sums the weights, makes a weighted random choice within each eligible group, and directly materializes zero-weight slots. | +| `0xe7811` | stage_enemy_unit_id | high | investigation | Unit-definition id for each current-stage enemy slot. FIELD rejects zero slots, while FIELD and ADDEN pass populated ids to SETEN to copy the corresponding EBINIT definition into a runtime entity. | +| `0xe782f` | stage_enemy_min_level | high | investigation | Scenario-specific minimum level for each stage enemy. After applying party-level auto-scaling, SETEN raises the runtime level to this floor before applying the maximum-level clamp. | +| `0xe784d` | stage_enemy_max_level | high | investigation | Scenario-specific maximum level for each stage enemy. SETEN uses a positive value as the upper clamp unless the debug/config override is active; otherwise it falls back to the unit definition's unit_level_cap. | +| `0xe786b` | stage_enemy_auto_level_scale_divisor | high | investigation | Scenario override for enemy auto-level scaling. SETEN divides the positive gap between the scenario base level and unit_starting_level by this value before adding it to the runtime level; zero would fall back to unit_auto_level_scale_divisor. | +| `0xe7889` | stage_enemy_movement_routine_set_ids | high | investigation | Three difficulty-specific movement-AI routine-set ids per stage enemy. SETEN copies the row into the runtime unit, and MVRTN selects the difficulty_index column as its movement routine table row. Columns: 0=difficulty_0, 1=difficulty_1, 2=difficulty_2. | +| `0xe78e3` | stage_enemy_battle_routine_set_ids | high | investigation | Optional three-column battle-AI routine override per stage enemy. SETEN copies a populated row into the runtime unit or falls back to the unit definition, and BTRTN selects the difficulty_index column as its battle routine table row. Columns: 0=difficulty_0, 1=difficulty_1, 2=difficulty_2. | +| `0xe793d` | stage_enemy_required_story_flags | high | investigation | Seven positive prerequisites per stage enemy. FIELD subtracts one from every populated id and suppresses the spawn unless the corresponding story_event_flags cell equals 1. Columns: 0=required_flag_1, 1=required_flag_2, 2=required_flag_3, 3=required_flag_4, 4=required_flag_5, 5=required_flag_6, 6=required_flag_7. | +| `0xe7a0f` | stage_enemy_forbidden_story_flags | high | investigation | Five negative prerequisites per stage enemy. FIELD subtracts one from every populated id and suppresses the spawn when the corresponding story_event_flags cell equals 1. Columns: 0=forbidden_flag_1, 1=forbidden_flag_2, 2=forbidden_flag_3, 3=forbidden_flag_4, 4=forbidden_flag_5. | +| `0xe7e8d` | stage_unlock_group_ids | high | investigation | FIELD propagates an unlocked current stage to every other stage whose nonzero group id matches. The shipped groups bind route variants 32..34, 35..36, 71..72, and 82..83. | +| `0xe8275` | stage_main_progression_flags | high | investigation | When returning after a clear, FORT scans uncleared stage ids in descending order and auto-selects the first available row marked one. Side missions and all eight EX dungeons leave the flag zero. | +| `0xe865d` | stage_forbidden_story_flag_ids | high | investigation | FORT and SELSTAGE reject a stage when any populated cell resolves to story flag value one. The scripts subtract one before indexing story_event_flags, establishing the stored one-based id convention. Columns: 0=forbidden_flag_1, 1=forbidden_flag_2, 2=forbidden_flag_3, 3=forbidden_flag_4, 4=forbidden_flag_5, 5=forbidden_flag_6, 6=forbidden_flag_7. | +| `0xea1b5` | stage_required_story_flag_ids | high | investigation | FORT and SELSTAGE require every populated cell to resolve to story flag value one. Every shipped stage carries at least one gate, including common progression flags in columns two and three. Columns: 0=required_flag_1, 1=required_flag_2, 2=required_flag_3, 3=required_flag_4, 4=required_flag_5, 5=required_flag_6, 6=required_flag_7. | +| `0xebd0d` | stage_display_number_major | high | investigation | FORT, SELSTAGE, AIM, STAGECLEAR, and management screens render this as the major half of the stage number. A negative value renders EX, while both number components zero identify an event-only row. | +| `0xec0f5` | stage_display_number_minor | high | investigation | Rendered after stage_display_number_major as the minor stage number. FORT treats a row with both components zero as a direct event and dispatches its entry SCJUMP decision without entering FIELD. | +| `0xec4dd` | stage_map_min_tile_x | high | investigation | STINIT2's inclusive left map bound indexed by stage id. FIELD, DRAWMAP, DRAWMINIMAP, CALCOCC, and movement providers use it with stage_map_max_tile_x; terrain-grid accesses multiply the coordinate by two. | +| `0xec8c5` | stage_map_max_tile_x | high | investigation | STINIT2's inclusive right map bound indexed by stage id. Consumers pair it with stage_map_min_tile_x for iteration, camera/minimap limits, random placement, and the doubled-coordinate terrain-atlas copy. | +| `0xeccad` | stage_map_min_tile_y | high | investigation | STINIT2's inclusive top map bound indexed by stage id. FIELD and all map readers pair it with stage_map_max_tile_y and multiply it by two when addressing the half-tile terrain grid. | +| `0xed095` | stage_map_max_tile_y | high | investigation | STINIT2's inclusive bottom map bound indexed by stage id. The maximum shipped value 800 explains MPINIT's final authored doubled grid row at Y 1600. | +| `0xed47d` | stage_minimap_atlas_origin_y | high | investigation | FIELD and SELSTAGE copy this to the minimap drawing origin. SELSTAGE subtracts it from stage_map_min_tile_y to crop the selected stage's vertically packed minimap strip and labels the following 150 atlas rows. | +| `0xed865` | stage_clear_base_spendable_point_rewards | high | investigation | STAGECLEAR multiplies this base award by the turn/party-performance percentage, divides by 100, adds any card bonus, and credits the capped shared_spendable_points balance. | +| `0xedc4d` | stage_authoring_difficulty_tiers | med | inference | Authoring-only stage challenge/progression tier. No shipped script reads the array and the native engine can only reach VM globals through script operands, so it has no runtime effect. The ordinal correlates strongly with base clear points and encounter progression: late story maps are tier 6, EX maps use tiers 5 and 7, and the final EX map alone is tier 8. The descriptive name is correlation-based. | +| `0xee035` | stage_scjump_decision_ids | high | investigation | FORT dispatches column zero before entering a stage or for an event-only row. FIELD and a few scene return paths dispatch column one after clear and column two after failure or forced-retreat outcomes; all 174 populated references resolve through SCINIT. Columns: 0=entry, 1=clear, 2=failure. | +| `0xeebed` | stage_extra_dungeon_flags | high | investigation | Marks the eight shipped EX dungeons. FORT, SELSTAGE, and management screens combine it with stage_clear_state when deciding whether to show and apply the stage's post-clear coin rewards. | +| `0xeefd5` | stage_clear_coin_quantities | high | investigation | FORT and SELSTAGE render the three clear-reward quantities beside coin icons. Management screens grant the same values as item ids 91..93 after a cleared or EX-marked stage. Columns: 0=bronze_coin_item_91, 1=silver_coin_item_92, 2=gold_coin_item_93. | +| `0xefb8d` | stage_loader_script_ids | high | investigation | FIELD indirectly calls the selected STINIT2 row before initializing the map. Every shipped stage points to the shared STINIT selector program, which then populates stage-specific objects, enemies, rules, textures, and audio. | +| `0xeff78` | movement_routine_provider_selectors | high | investigation | RTINIT movement bank 0. MVRTN indexes it by current_routine_set_id and routine_step_index, resolves the selector through its RTN_M001..018/051..053/061 provider table, and call-scripts the selected movement routine. | +| `0xf4d98` | movement_routine_activation_percents | high | investigation | RTINIT movement bank 1. After all other step gates pass, MVRTN executes the provider only when random-modulo-100 is below this value. | +| `0xf9bb8` | movement_routine_parameter_1 | high | investigation | RTINIT movement bank 2. Its meaning is tagged by movement_routine_provider_selectors: RTN_M004 uses a stage_object_slot_index; RTN_M005/011/012 use destination_tile_x; RTN_M006/007/015 use maximum_target_route_steps; RTN_M010 uses resource_index (0=HP, 1=SP, 2=FS; shipped cells are unwritten/default zero); RTN_M013 uses target_faction_filter; and RTN_M014 uses maximum_threat_route_steps. The one RTN_M001 and one RTN_M008 authored cells are never read by those providers. | +| `0xfe9d8` | movement_routine_parameter_2 | high | investigation | RTINIT movement bank 3. Its meaning is tagged by movement_routine_provider_selectors: RTN_M005/011/012 use destination_tile_y, RTN_M007 uses maximum_target_hp_percent, and RTN_M010 uses maximum_resource_percent. The lone RTN_M001-authored value is never read by that provider. | +| `0x1037f8` | movement_routine_parameter_3 | high | investigation | RTINIT movement bank 4. RTN_M011 uses it as a one-based waypoint_ordinal, executing only the step whose ordinal matches the entity's current zero-based waypoint index. | +| `0x108618` | movement_routine_parameter_4 | high | investigation | RTINIT movement bank 5. RTN_M011 uses a nonzero value as path_cost_limit_override; zero or an unwritten cell falls back to the entity's current FS. | +| `0x112258` | movement_routine_minimum_progress_counts | high | investigation | RTINIT movement bank 7. MVRTN requires the current entity's matching movement-step progress counter to reach this value; movement providers increment those counters as their steps execute. | +| `0x117078` | movement_routine_required_story_flag_ids | high | investigation | RTINIT movement bank 8. MVRTN subtracts one and rejects the step when the referenced story flag is not set. | +| `0x11be98` | movement_routine_forbidden_story_flag_ids | high | investigation | RTINIT movement bank 9. MVRTN subtracts one and rejects the step when the referenced story flag is set. | +| `0x120cb8` | battle_routine_provider_selectors | high | investigation | RTINIT battle bank 10. BTRTN indexes it by current_routine_set_id and routine_step_index, resolves the selector through RTN_B001..004, and call-scripts the selected battle routine. | +| `0x125ad8` | battle_routine_activation_percents | high | investigation | RTINIT battle bank 11. BTRTN executes a candidate step only when the current entity's matching random-modulo-100 battle-step roll is below this value. | +| `0x12a8f8` | battle_routine_parameter_1 | high | investigation | RTINIT battle bank 12. RTN_B004 uses it to choose an entry from the prepared battle-action candidate table. | +| `0x147db8` | battle_routine_required_story_flag_ids | high | investigation | RTINIT battle bank 18. BTRTN subtracts one and rejects the step when the referenced story flag is not set. | +| `0x14cbd8` | battle_routine_forbidden_story_flag_ids | high | investigation | RTINIT battle bank 19. BTRTN subtracts one and rejects the step when the referenced story flag is set. | +| `0x1519f9` | card_definition_type_ids | high | investigation | CDINIT2 behavior class by card id. FIELD applies the common populated effect arrays, uses type 6 for the random valid-tile warp path, and uses type 1 to dispatch the card's event after showing its result. | +| `0x151a5d` | card_definition_required_story_flag_ids | high | investigation | CDINIT2 card eligibility rows. FIELD checks only columns 0 and 1 before admitting a card to weighted selection. CDINIT2 nevertheless authors column 2 for eighteen cards; those third requirements are engine-dead in the shipped FIELD loop and are retained separately by the extractor. Columns: 0=required_flag_1, 1=required_flag_2, 2=engine_dead_required_flag_3. | +| `0x151b89` | card_definition_forbidden_story_flag_ids | high | investigation | CDINIT2 card exclusion rows. FIELD checks columns 0 and 1 and rejects a card when either populated flag is set; the shipped definitions populate only column 0. Columns: 0=forbidden_flag_1, 1=forbidden_flag_2, 2=reserved_forbidden_flag_3. | +| `0x151cb5` | card_definition_awarded_item_ids | high | investigation | Optional item granted by FIELD through ADDITEM after card selection. All 24 populated ids resolve through ITINIT. | +| `0x151d19` | card_definition_event_story_flag_ids | high | investigation | Event dispatched for type-1 cards after FIELD displays the card result. All 40 populated ids resolve through SCINIT. | +| `0x151d7d` | card_definition_stage_clear_point_bonuses | high | investigation | Type-3 card reward accumulated into stage_card_spendable_point_bonus. STAGECLEAR adds it to the normal performance-adjusted award before updating shared_spendable_points; shipped small/medium/large values are 5, 10, and 15. | +| `0x151de1` | card_definition_minimum_resource_recovery | high | investigation | Lower bounds for type-4 HP/SP/FS card recovery. FIELD starts each resource delta at this value and, when the paired upper bound is larger, adds a random value below their difference. Columns: 0=hp, 1=sp, 2=fs. | +| `0x151f0d` | card_definition_maximum_resource_recovery | high | investigation | Upper bounds paired with card_definition_minimum_resource_recovery. Equal bounds produce the fixed minimum; larger bounds produce a uniformly selected value from minimum through upper-bound-minus-one. Columns: 0=hp, 1=sp, 2=fs. | +| `0x152039` | card_definition_minimum_spirit_recovery | high | investigation | Lower bound for type-4 familiar-spirit recovery. FIELD selects the value with the same minimum/exclusive-upper algorithm as HP/SP/FS and clamps current_spirit to maximum_spirit. | +| `0x15209d` | card_definition_maximum_spirit_recovery | high | investigation | Upper bound paired with card_definition_minimum_spirit_recovery. Equal bounds produce the fixed minimum; larger bounds exclude this upper value. | +| `0x152101` | card_definition_minimum_resource_damage | high | investigation | Lower bounds for type-5 trap damage. FIELD subtracts these randomized HP/SP/FS amounts from the active entity through the same resource-delta path used for recovery. Columns: 0=hp, 1=sp, 2=fs. | +| `0x15222d` | card_definition_maximum_resource_damage | high | investigation | Upper bounds paired with card_definition_minimum_resource_damage. Equal bounds produce fixed damage; larger bounds exclude this upper value. Columns: 0=hp, 1=sp, 2=fs. | +| `0x152359` | card_definition_condition_ids | high | investigation | Condition applied by type-5 trap cards through ADDILL. The three populated rows resolve to paralysis, poison, and water_flow. | +| `0x1523bd` | card_definition_condition_levels | high | investigation | Condition level paired with card_definition_condition_ids and passed to ADDILL. All three shipped condition traps use level 1. | +| `0x152421` | card_definition_visual_asset_ids | high | investigation | Card-result visual selected by FIELD before applying and presenting the effect. All 81 authored rows resolve to MVS*.AGF assets, with related card families sharing artwork. | +| `0x152486` | card_generation_weight_schedules | high | investigation | CDINIT's selector-specific candidate weights, parallel to card_generation_card_ids. FIELD computes base_weight + floor(current_stage_turn / growth_interval_turns) * growth_weight, with a zero interval selecting the fixed base path. The shipped lists populate 11..75 one-based slots. Columns: 0=base_weight, 1=growth_interval_turns, 2=growth_weight. | +| `0x1525b2` | card_generation_card_ids | high | investigation | Card ids parallel to card_generation_weight_schedules. FIELD scans slots 0..99, filters each nonzero id through the CDINIT2 story-flag rows, and performs cumulative weighted random selection. CDINIT clears only the first 50 slots even though its largest authored list reaches slot 75. | +| `0x15261f` | battle_triggered_passive_skill_flags | high | investigation | Per-exchange passive-skill activation matrix. CALCDMG clears both 300-cell side rows, considers the four equipped skills on each battle entity, retains category-4 passives allowed for that actor/target role, rolls skill_proc_chance_percent, and applies species, boss, movement-skill, action-category, and mutual-exclusion filters. BTL consumes the surviving flags to draw triggered-passive icons, play each passive's battle animation, and execute Roar, Counter, Reflect, Absorb, Pierce, Shield, Parry, and Revive behavior. | +| `0x152877` | battle_entity_indices | high | investigation | The two runtime entity rows participating in BTL. battle_actor_side_index and battle_target_side_index select these cells before BTL and CALCDMG access HP, unit definitions, skills, animation state, and voice banks. Columns: 0=side_0, 1=side_1. | +| `0x152879` | battle_selected_skill_ids | high | investigation | Selected skill for each battle side. BTL displays a positive entry through the skill-name table and selects skill-use voice columns; CALCDMG uses the same id for skill parameters. A zero entry follows the equipped/default ordinary-attack path. Columns: 0=side_0, 1=side_1. | +| `0x152883` | battle_critical_chance_percent | high | investigation | Final per-side critical chance for the current exchange. CALCBTPARAM starts with the side's effective critical-chance stat plus its effective luck minus the opposing side's effective luck, applies selected-skill and applicable target-tile terrain critical/luck deltas through the same channels, and clamps the result to 0..100. Equipment has already entered through entity_effective_stats: CT affects only its owner's outgoing critical chance, whereas luck both raises outgoing chance and lowers the opponent's. After a successful hit, CALCDMG rolls random-modulo-100 against this value; success sets battle_hit_result to 2 and doubles the signed HP delta. Columns: 0=side_0, 1=side_1. | +| `0x15288e` | battle_animation_effect_ids | high | investigation | BTANINIT2's sparse battle-animation composition table. BTANINIT expands the selected row into six runtime effect work slots. BTL anchors requested effects in slots 0 and 1 to the actor and slots 2 through 5 to the target; shipped data never populates slot 4. Columns: 0=effect_slot_0, 1=effect_slot_1, 2=effect_slot_2, 3=effect_slot_3, 4=reserved_effect_slot_4, 5=effect_slot_5. | +| `0x153ffe` | battle_animation_effect_start_delays_ms | high | investigation | Per-effect start delays paired with battle_animation_effect_ids. BTL passes each populated value to movie/sprite animation setup and adds it to the effect-local sound and hit-pulse offsets. Shipped data authors delays only for slots 2, 3, and 5. Columns: 0=effect_slot_0, 1=effect_slot_1, 2=effect_slot_2, 3=effect_slot_3, 4=reserved_effect_slot_4, 5=effect_slot_5. | +| `0x15576e` | battle_animation_duration_ms | high | investigation | Overall timing boundary for one BTANINIT2 animation row. BTL uses it to schedule delayed battle voice and to begin the 500 ms HP interpolation after the main animation. The passive/defeat auxiliary rows 801..809 intentionally omit it. | +| `0x155b56` | battle_effect_visual_asset_ids | high | investigation | BTANINIT clears and materializes the selected animation's six visual resources. BTL opens mode-0 values as nonblocking MPEG-in-AGF movies and mode-1/2 values as sprite sheets. All 202 effect definitions resolve through SYS4INI. | +| `0x155b5c` | battle_effect_visual_mode_ids | high | investigation | BTANINIT visual playback mode per materialized effect slot. BTL routes zero through play-movie-to-surface, mode 1 through set-texture with green color key 0x00ff00, and mode 2 through set-texture with no color key. | +| `0x155b62` | battle_effect_additive_blend_flags | high | investigation | When nonzero, BTL applies gfx-draw-color mode 1 (SRCALPHA/ONE additive glow) to the materialized battle-effect surface. The flag is populated on all 186 movie effects and the sole green-colorkey sprite-sheet effect. | +| `0x155b68` | battle_effect_widths | high | investigation | Width of the destination surface BTL creates for each materialized battle effect. It also participates in centering the surface before applying battle_effect_offset_x_pixels. | +| `0x155b6e` | battle_effect_heights | high | investigation | Height of the destination surface BTL creates for each materialized battle effect. It also participates in centering the surface before applying battle_effect_offset_y_pixels. | +| `0x155b74` | battle_effect_atlas_column_counts | high | investigation | Sprite-sheet column count passed by BTL to animate-gfx-srcrect-target. The sixteen sprite-sheet definitions pair it with battle_effect_atlas_frame_counts and a finite duration. | +| `0x155b7a` | battle_effect_atlas_row_counts | high | investigation | Authored sprite-sheet row count. It agrees with ceil(frame_count / column_count) for all sixteen sprite effects, but BTL never reads this array and instead passes the already-authored frame count and column count to animate-gfx-srcrect-target. | +| `0x155b80` | battle_effect_atlas_frame_counts | high | investigation | Total sprite-sheet frame count passed by BTL to animate-gfx-srcrect-target. Shipped values equal atlas columns times authored rows. | +| `0x155b86` | battle_effect_durations_ms | high | investigation | Per-effect playback duration. BTANINIT authors it for sixteen sprite-sheet effects; for movie effects BTL overwrites the slot with query-surface-stop-time-ms. BTL uses start delay plus this duration when extending the animation timeline. | +| `0x155b8c` | battle_effect_combatant_anchor_flags | high | investigation | When nonzero, BTL anchors effect slots 0 and 1 to the actor-side combatant and slots 2 through 5 to the target-side combatant. Zero uses the battlefield center. | +| `0x155b92` | battle_effect_offset_x_pixels | high | investigation | Horizontal offset added after BTL centers the effect surface on its selected combatant or the battlefield. | +| `0x155b98` | battle_effect_offset_y_pixels | high | investigation | Vertical offset added after BTL centers the effect surface on its selected combatant or the battlefield. | +| `0x155b9e` | battle_effect_sound_asset_ids | high | investigation | Optional WAV loaded by BTL for a materialized effect slot. BTL schedules playback at the animation row's effect start delay plus battle_effect_sound_delays_ms. All 199 populated ids resolve through SYS4INI. | +| `0x155ba4` | battle_effect_sound_delays_ms | high | investigation | Effect-local sound delay added to battle_animation_effect_start_delays_ms before BTL schedules the loaded WAV channel. | +| `0x155baa` | battle_effect_hit_pulse_offsets_ms | high | investigation | Up to three BTL hit-feedback pulse offsets per materialized effect slot. BTL adds the animation row's effect start delay, fires each pulse within a 100 ms window, and tracks it once per slot/column. Shipped BTANINIT populates only pulse_1, at 100 ms, on 26 effects. Columns: 0=pulse_1, 1=pulse_2, 2=pulse_3. | +| `0x155bbc` | training_action_required_story_flag_ids | high | investigation | Up to three prerequisite story flags per TRINIT action. TRAIN subtracts one before indexing story_event_flags and rejects the action unless every populated flag equals one. Columns: 0=required_story_flag_id_1, 1=required_story_flag_id_2, 2=required_story_flag_id_3. | +| `0x155bfb` | training_action_forbidden_story_flag_ids | high | investigation | Reserved three-slot exclusion table paired with training_action_required_story_flag_ids. TRAIN rejects an action when any populated flag equals one; shipped TRINIT leaves all 63 cells zero. Columns: 0=forbidden_story_flag_id_1, 1=forbidden_story_flag_id_2, 2=forbidden_story_flag_id_3. | +| `0x155c3a` | training_action_minimum_unit_levels | high | investigation | Minimum familiar level for each TRINIT action. TRAIN compares the selected unit's level and rejects values below the populated threshold. | +| `0x155c4f` | training_action_maximum_unit_levels | high | investigation | Maximum familiar level for each TRINIT action. TRAIN rejects levels above a populated threshold; shipped TRINIT leaves this reserved family empty. | +| `0x155c64` | training_action_minimum_alignment_thresholds_encoded | high | investigation | Encoded lower alignment/personality gates. TRAIN subtracts 100 from a populated value and requires familiar_alignment to be at least that signed threshold; the five shipped gates correspond to the locked hints' kind-personality requirements. | +| `0x155c79` | training_action_maximum_alignment_thresholds_encoded | high | investigation | Encoded upper alignment/personality gates. TRAIN subtracts 100 and requires familiar_alignment not to exceed the signed threshold; the five shipped gates correspond to evil-personality requirements. | +| `0x155c8e` | training_action_minimum_progress | high | investigation | Minimum familiar_training_progress required by each TRINIT action. TRAIN rejects the action when the current value is below a populated threshold. | +| `0x155ca3` | training_action_maximum_progress | high | investigation | Upper training-progress gate paired with training_action_minimum_progress. TRAIN enforces populated values; shipped TRINIT leaves all 21 cells zero. | +| `0x155cb8` | training_action_minimum_unit_stats | high | investigation | Ten-column minimum-stat gate using the first ten unit-stat ABI columns. TRAIN compares each populated cell with the selected familiar's current stat; shipped TRINIT leaves the table empty. Columns: 0=accuracy, 1=evasion, 2=physical_attack, 3=physical_defense, 4=magic_attack, 5=magic_defense, 6=speed, 7=luck, 8=critical_chance, 9=capture_power. | +| `0x155d8a` | training_action_maximum_unit_stats | high | investigation | Ten-column maximum-stat gate paired with training_action_minimum_unit_stats. TRAIN enforces populated cells; shipped TRINIT leaves the table empty. Columns: 0=accuracy, 1=evasion, 2=physical_attack, 3=physical_defense, 4=magic_attack, 5=magic_defense, 6=speed, 7=luck, 8=critical_chance, 9=capture_power. | +| `0x155e5c` | training_action_required_item_ids | high | investigation | Optional item prerequisite for each TRINIT action. TRAIN requires a nonzero inventory count and displays the joined item name; the item is a gate, not consumed by this path. | +| `0x155e71` | training_action_required_skill_ids | high | investigation | Optional acquired-skill prerequisite. TRAIN requires the corresponding skill_acquired_flags cell; shipped TRINIT leaves all 21 cells zero. | +| `0x155e86` | training_action_spirit_deltas | high | investigation | Signed current_spirit delta for each TRINIT action. TRAIN rejects an action whose post-delta spirit would be negative, displays the negated value as its cost, and applies the delta before scene dispatch. | +| `0x155e9b` | training_action_unit_stat_deltas | high | investigation | Fourteen-column familiar stat effects for each TRINIT action. TRAIN adds populated values through the unit stat-growth ABI, carries fractional growth, applies caps, and invokes SHOWGROW when any stat changes. Columns: 0=accuracy, 1=evasion, 2=physical_attack, 3=physical_defense, 4=magic_attack, 5=magic_defense, 6=speed, 7=luck, 8=critical_chance, 9=capture_power, 10=movement, 11=max_hp, 12=max_sp, 13=max_fs. | +| `0x155fc1` | training_action_alignment_deltas_hundredths | high | investigation | Alignment/personality change for each TRINIT action in hundredths. TRAIN combines it with familiar_alignment_fraction, applies the integral and stochastic fractional change to familiar_alignment, and clamps the result to -99..99. | +| `0x155fd6` | training_action_progress_deltas_hundredths | high | investigation | Training-progress gain for each TRINIT action in hundredths. TRAIN combines it with familiar_training_progress_fraction, advances familiar_training_progress with fractional probability, and clamps the result to 99. | +| `0x155feb` | training_action_awarded_skill_ids | high | investigation | Optional skill granted by a TRINIT action. TRAIN checks whether it is new, marks the reward path, and passes the id to ADDSKILL; the extractor joins all eight populated ids to SKINIT names. | +| `0x156000` | training_action_awarded_item_ids | high | investigation | Optional item granted by a TRINIT action. TRAIN suppresses already-owned key/story rewards, displays the joined item name, and calls ADDITEM for the three populated shipped actions. | +| `0x156015` | training_action_event_story_flag_ids | high | investigation | Per-action event sequence selected by the prior execution count. TRAIN copies the chosen id to scjump_decision_out and dispatches it through SCINIT; GAMESTART marks every slot below a restored count in story_event_flags. Repeated ids intentionally reuse a scene, and the first zero defines the execution cap. Columns: 0=execution_1, 1=execution_2, 2=execution_3, 3=execution_4, 4=execution_5, 5=execution_6, 6=execution_7, 7=execution_8, 8=execution_9, 9=execution_10. | +| `0x1561f6` | magic_action_information_handler_script_ids | high | investigation | MAINIT handler column indexed by current_magic_action_id. MAGIC and STUDY call the selected packed script id; every shipped action routes to MAMES, whose text dispatcher has authored descriptions for ids 1..9 only. | +| `0x156214` | alchemy_recipe_output_item_ids | high | investigation | Output item id indexed by sparse alchemy recipe id. ALCHEMY scans recipe ids 0..999, treats a nonzero cell as a populated recipe, and adds one copy of this item after a successful synthesis. | +| `0x1565fc` | alchemy_recipe_minimum_levels | high | investigation | Minimum alchemy level indexed by recipe id. ALCHEMY exposes a populated recipe only when this value is less than or equal to alchemy_level. | +| `0x1569e4` | alchemy_recipe_required_story_flags | high | investigation | Two positive story prerequisites per recipe. ALCHEMY subtracts one from every populated id and hides the recipe unless the corresponding story_event_flags cell equals 1; shipped ALINIT data populates only the first column. Columns: 0=required_flag_1, 1=required_flag_2. | +| `0x1571b4` | alchemy_recipe_forbidden_story_flags | high | investigation | Two negative story prerequisites per recipe. ALCHEMY subtracts one from every populated id and hides the recipe when the corresponding story_event_flags cell equals 1; shipped ALINIT data populates only the first column. Columns: 0=forbidden_flag_1, 1=forbidden_flag_2. | +| `0x157d6c` | alchemy_recipe_point_costs | high | investigation | Spendable point cost indexed by recipe id. ALCHEMY checks recipe availability against its point-capacity condition, then requires and deducts this value from shared_spendable_points on synthesis. | +| `0x158154` | alchemy_recipe_ingredient_item_ids | high | investigation | Up to four ingredient item ids per recipe. ALCHEMY checks total inventory for each populated slot and removes the paired alchemy_recipe_ingredient_quantities amount during synthesis. Columns: 0=ingredient_1, 1=ingredient_2, 2=ingredient_3, 3=ingredient_4. | +| `0x1590f4` | alchemy_recipe_ingredient_quantities | high | investigation | Required ingredient quantities paired cell-for-cell with alchemy_recipe_ingredient_item_ids. ALCHEMY requires and consumes this many copies of each populated ingredient. Columns: 0=ingredient_1, 1=ingredient_2, 2=ingredient_3, 3=ingredient_4. | +| `0x15a097` | information_message_handler_script_ids | high | investigation | INFOMES's 32-row, four-column handler registry. INIT2 populates row zero with CIMES (0x334a), EIMES (0x334b), and VIMES (0x334c); INFOMES scans rows in order for the current tab, calls nonzero handlers, and stops after information_message_handled is set. Columns: 0=character_handler, 1=enemy_handler, 2=glossary_handler, 3=reserved_handler. | +| `0x15a118` | character_profile_unit_ids | high | investigation | CIINIT's profile-to-unit join. INFOCH uses the selected unit id for reveal state, map sprite, short unit descriptions, species, and sex while CIMES remains keyed by the enclosing profile id. | +| `0x15a17c` | character_profile_portrait_asset_ids | high | investigation | Optional CIINIT portrait resource indexed by character profile id. INFOCH draws it when nonzero and otherwise falls back to the backing unit's map-sprite asset. | +| `0x15a1e0` | character_profile_portrait_x_offsets | high | investigation | INFOCH adds the selected cell to the centered portrait x coordinate. The 100-cell spacing to the adjacent CIINIT arrays and the direct indexed reader establish the reserved per-profile placement column. | +| `0x15a244` | character_profile_portrait_y_offsets | high | investigation | INFOCH adds the selected cell to the bottom-aligned portrait y coordinate. The 100-cell spacing to the adjacent CIINIT arrays and the direct indexed reader establish the reserved per-profile placement column. | +| `0x15a2a9` | glossary_topic_unlock_seen_decision_ids | high | investigation | VIINIT's three unlock prerequisites per glossary topic. INFOVO subtracts one from each positive value and exposes the topic when any referenced scene_decision_seen_flags cell is set; debug modes expose the same populated topics unconditionally. Columns: 0=unlock_seen_decision_1, 1=unlock_seen_decision_2, 2=unlock_seen_decision_3. | +| `0x2e2` | — | low | auto-shape | array | +| `0x69e` | — | low | auto-shape | array | +| `0x6fe` | — | low | auto-shape | array | +| `0x712` | — | low | auto-shape | array | +| `0x3276` | — | low | auto-shape | array | +| `0x328a` | — | low | auto-shape | array | +| `0x32b2` | — | low | auto-shape | array | +| `0x32c6` | — | low | auto-shape | array | +| `0x32da` | — | low | auto-shape | array | +| `0x3306` | — | low | auto-shape | array | +| `0x36ee` | — | low | auto-shape | array | +| `0x3ad6` | — | low | auto-shape | array | +| `0x6804` | — | low | auto-shape | array | +| `0x6868` | — | low | auto-shape | array | +| `0x7a6c` | — | low | auto-shape | array | +| `0x204fb` | — | low | auto-shape | array | +| `0x2052f` | — | low | auto-shape | array | +| `0x20533` | — | low | auto-shape | array | +| `0x20537` | — | low | auto-shape | array | +| `0x2053b` | — | low | auto-shape | array | +| `0x2053f` | — | low | auto-shape | array | +| `0x4dfef` | — | low | auto-shape | array | +| `0x521f3` | — | low | auto-shape | array | +| `0x52225` | — | low | auto-shape | array | +| `0x52257` | — | low | auto-shape | array | +| `0x522bb` | — | low | auto-shape | array | +| `0x55e3b` | — | low | auto-shape | array | +| `0x56b52` | — | low | auto-shape | array | +| `0x56f6d` | — | low | auto-shape | array | +| `0x577a3` | — | low | auto-shape | array | +| `0x5f0bb` | — | low | auto-shape | array | +| `0x617fe` | — | low | auto-shape | array | +| `0x61be6` | — | low | auto-shape | array | +| `0x61c4a` | — | low | auto-shape | array | +| `0x62032` | — | low | auto-shape | array | +| `0x6243a` | — | low | auto-shape | array | +| `0x6243c` | — | low | auto-shape | array | +| `0x62469` | — | low | auto-shape | array | +| `0x6247d` | — | low | auto-shape | array | +| `0x624a3` | — | low | auto-shape | array | +| `0x653e1` | — | low | auto-shape | array | +| `0x65bb1` | — | low | auto-shape | array | +| `0x6642d` | — | low | auto-shape | array | +| `0x66442` | — | low | auto-shape | array | +| `0x6650a` | — | low | auto-shape | array | +| `0x665d8` | — | low | auto-shape | array | +| `0x8fb41` | — | low | auto-shape | array | +| `0xa5eb9` | — | low | auto-shape | array | +| `0xaba3b` | — | low | auto-shape | array | +| `0xaba43` | — | low | auto-shape | array | +| `0xaba4b` | — | low | auto-shape | array | +| `0xaba53` | — | low | auto-shape | array | +| `0xaba5f` | — | low | auto-shape | array | +| `0xcca3a` | — | low | auto-shape | array | +| `0xccb66` | — | low | auto-shape | array | +| `0xccbd9` | — | low | auto-shape | array | +| `0xccbf8` | — | low | auto-shape | array | +| `0xccc11` | — | low | auto-shape | array | +| `0xccc2f` | — | low | auto-shape | array | +| `0xe7305` | — | low | auto-shape | array | +| `0xe730e` | — | low | auto-shape | array | +| `0xe73ed` | — | low | auto-shape | array | +| `0xe770d` | — | low | auto-shape | array | +| `0x15287b` | — | low | auto-shape | array | +| `0x15287d` | — | low | auto-shape | array | +| `0x15287f` | — | low | auto-shape | array | +| `0x152881` | — | low | auto-shape | array | +| `0x152885` | — | low | auto-shape | array | +| `0x152887` | — | low | auto-shape | array | +| `0x152889` | — | low | auto-shape | array | +| `0x15619c` | — | low | auto-shape | array | +| `0x1561ba` | — | low | auto-shape | array | +| `0x15a501` | — | low | auto-shape | array | +| `0x15a5c9` | — | low | auto-shape | array | +| `0x15a691` | — | low | auto-shape | array | + +## index-pointer + +| address | name | conf | source | usage | +|---|---|---|---|---| +| `0x32f1` | difficulty_index | high | investigation | GAMESTART's three-way difficulty selection. SETEN uses the zero-based index to select difficulty stat adjustments; FIELD indexes three-column stage-enemy arrays with it, and SETOBJ tests it against each object's difficulty mask. | +| `0x6718` | selected_party_slot | high | investigation | Current/selected slot in the 100-entry party-unit arrays. UNITECH chooses a free slot here before populating it; CHMENU replaces it with the selected sorted roster slot, then uses it to index party_slot_flags, party_slot_character_id, and companion per-slot tables. A natural New Game enters SC0000 with slot 2 selected. | +| `0x2052e` | current_faction_id | high | investigation | Active tactical faction/side. FIELD initializes it during stage entry, assigns 1 for the player phase, advances (value + 1) modulo 4 between phases, filters runtime entities and capturable objects by faction equality, and uses it as the bit index into tile_faction_traversal_masks. SCJUMP reads the same live stage context; this is not a story-progress counter. | +| `0x53edd` | selected_training_action_id | high | investigation | TRAIN's selected action row. It indexes all TRINIT eligibility, effect, text, award, and event arrays during detail rendering and execution. | +| `0x62424` | adv_gfx_resource_id | high | investigation | Transient ADV graphics-load input. Scene scripts set this immediately before their common layer loader, which passes it to set-texture together with adv_gfx_surface_slot_work. | +| `0x62450` | adv_gfx_layer_index | high | investigation | Current ADV graphics-layer row. All immediate assignments across the corpus are 0..7; common scene loaders use it to index adv_gfx_object_handles, per-layer geometry arrays, and adv_layer_surface_slots. | +| `0x62452` | adv_gfx_surface_slot_work | high | investigation | Working surface slot for the current ADV layer. Opcode 0x215 writes the retained object's existing source slot or -1; the common loader falls back to adv_layer_surface_slots, then passes the selected slot through set-texture, size queries, draw binding, and release. | +| `0x66713` | acting_entity_index | high | investigation | Entity whose movement or battle turn is being resolved. FIELD sets it before MVRTN; RTN_M providers use it for faction, position, resources, selected action, and routine progress. Together with target_entity_index it forms the attacker/target pair passed into battle. | +| `0x66714` | target_entity_index | high | investigation | Selected target/opponent entity. RTN_M051/052 choose and write an active foreign-faction target; FIELD pairs it with acting_entity_index for movement presentation and battle setup. | +| `0x66715` | current_unit_id | high | investigation | Shared current-unit selector used by character growth and setup scripts. CCINIT keys every class-change rule on this value; CALCCC, ADDEXP, SETEN, SALLY, and related scripts use it to index unit definitions and persistent per-unit state. | +| `0x8c877` | current_item_id | high | investigation | Shared item-id argument/selection slot. Item menus and gameplay scripts write a chosen item id, use it to index ITINIT arrays, and dispatch through item_handler_script_id; ITMES compares it against all 287 item ids to select the matching player-facing title and description. | +| `0xa6e59` | current_skill_id | high | investigation | Shared skill-id argument/selection slot. Skill menus and combat scripts write the chosen skill id and use it to index SKINIT arrays; SKMES compares it against all 131 skill ids to select the matching player-facing title and description. | +| `0xaac76` | current_condition_id | high | investigation | Shared condition selector consumed by CALCILL, ADDILL, ADDILLSUB, DISARM, FIELD, and related condition handlers. It indexes the 30-column runtime condition rows and ILINIT definition arrays. | +| `0xccc0a` | map_target_tile_x | high | investigation | Shared map target/focus X coordinate. Seventeen RTN_M providers unpack candidate coordinates here before testing selected_movement_route_steps, FIELD and SETROUTE use it as the selected destination, and LOOK converts it to the centered world X coordinate when no enemy spawn slot is selected. Fifty-five scripts reference the paired target coordinates. | +| `0xccc0b` | map_target_tile_y | high | investigation | Shared map target/focus Y coordinate paired with map_target_tile_x. Movement providers unpack the low sixteen bits of candidate coordinates here; FIELD and SETROUTE select the route endpoint, while story scripts and LOOK use the same pair to center the battlefield camera on scripted map locations. | +| `0xeff75` | current_routine_set_id | high | investigation | Shared RTINIT row selector. MVRTN loads the current entity's difficulty-selected movement routine set; BTRTN loads its battle routine set. Both then iterate routine_step_index across the selected twenty-slot row. | +| `0xeff76` | routine_step_index | high | investigation | Shared RTINIT step selector. MVRTN and BTRTN iterate it from zero through nineteen and use it as the column index in every routine bank and matching per-entity runtime row. | +| `0x1519f8` | current_card_id | high | investigation | FIELD's selected card-definition row. Card generation copies a surviving CDINIT card id here, uses it to test CDINIT2 story-flag gates, retains it through weighted selection, and indexes the chosen card's effects, graphics, name, and result text. | +| `0x152485` | current_card_generation_list_id | high | investigation | Selector consumed by CDINIT. FIELD loads it from the current STINIT type-28 card object's payload before rebuilding the parallel card-id and weight-schedule buffers; selectors 55 and 94 are authored but have no shipped STINIT object reference. | +| `0x152616` | current_entity_index | med | investigation | Primary current-entity row index (RECOVER-confirmed; purity 0.51, 363 row-index uses). | +| `0x152617` | current_stage_enemy_spawn_slot | high | investigation | Current STINIT enemy-template slot. FIELD selects slots 1..29 while materializing stage units, SETEN records the slot on the runtime entity and reads every parallel enemy buffer through it, and ADDEN uses slot 0 for its special generated unit. | +| `0x15261a` | battle_actor_side_index | high | investigation | Index of the acting side in BTL's two-entry battle arrays. CALCDMG derives battle_target_side_index as 1 minus this value; BTL uses the actor's unit-definition row for attack, skill, critical, and finishing-blow voices. | +| `0x15261b` | battle_target_side_index | high | investigation | Index of the target side in BTL's two-entry battle arrays. CALCDMG sets it to 1 - battle_actor_side_index; BTL applies battle_hp_delta to this side and uses its unit-definition row for damage and defeated voices. | +| `0x15288c` | selected_battle_animation_id | high | investigation | CALCDMG selects a skill_battle_animation_id or an equipped item's item_weapon_class, and BTL also writes passive reaction ids 801..808 and hardcoded defeat id 809. BTANINIT uses this value to select one six-effect timeline. | +| `0x1560e7` | current_magic_action_id | high | investigation | Shared selected magic/research/growth action id. MAGIC and STUDY index MAINIT's parallel columns with it, FIELD and USEMAGIC consume the selected action, and MAMES dispatches ids 1..9 to their untitled help descriptions. | +| `0x15a095` | information_tab_index | high | investigation | Selected INFO screen tab. INFO dispatches the five tab scripts with it; INFOMES uses values 0..2 as the column of information_message_handler_script_ids for INFOCH, INFOEN, and INFOVO. | +| `0x15a117` | current_character_profile_id | high | investigation | INFOCH's selected character-information row. It indexes CIINIT's name, unit, portrait, and placement arrays; CIMES compares the same id against all 24 profiles to dispatch the character biography. | +| `0x15a2a8` | current_glossary_topic_id | high | investigation | INFOVO's selected glossary/help topic. It indexes the VIINIT title and presentation arrays, then VIMES compares it against all 65 shipped topic ids to dispatch the full player-facing explanation. | +| `0x15a759` | current_enemy_encyclopedia_unit_id | high | investigation | INFOEN's selected enemy-encyclopedia unit id. It indexes EBINIT presentation and reveal arrays, seeds a temporary runtime entity for stat display, and EIMES compares it against 192 sparse unit ids to dispatch summary and strategy lines. | + +## story-flag + +| address | name | conf | source | usage | +|---|---|---|---|---| +| `0xa57` | lily_form_a | high | investigation | Lily current-form flag A. Exactly one of form A/B/C is 1; gates form-specific voiced dialogue (seeding 0xa57=1 -> SC0000 186->229 lines). Set externally (menu/save), no static writer. | +| `0xa58` | lily_form_b | high | investigation | Lily current-form flag B. See lily_form_a. | +| `0xa59` | lily_form_c | high | investigation | Lily current-form flag C. See lily_form_a. | +| `0xa99` | game_started | low | inference | New-game/playthrough gate: set to 1 by GAMESTART.BIN, then tested `==1` in story scenes (SC0200/SC0490, e.g. `0xa99==1 AND stat>3`). Marks that the game proper has begun. INFERENCE from the GAMESTART writer — confirm exact semantics before relying on it. | +| `0xd92` | — | med | auto-shape | TODO: confirm. Branch-read in 29 scenes / 29 scripts; compared against [1]; writers=none (external/native?). | +| `0x3231` | game_mode | med | inference | Game-mode/phase selector in the 0x3231-0x3234 progression-state cluster (chapter_mode is 0x3234). Enum 1..9, written by the gameplay scripts (AIM/ALCHEMY/BTL/BUNKI), branch-read in 136 scenes. Distinct from chapter; likely current sub-mode/screen. INFERENCE — confirm with a listing/sweep before relying on the exact meaning. | +| `0x3234` | chapter_mode | high | investigation | Progression chapter/mode selector. SCJUMP's top-level switch keys on it; branch-read by progression scripts (FIELD etc.), not directly by SC/SP scenes. | +| `0x3275` | — | med | auto-shape | TODO: confirm. Branch-read in 136 scenes / 143 scripts; compared against [0]; writers=['CAMP.BIN', 'DEBUGADV.BIN', 'DEBUGADV2.BIN', 'FIELD.BIN']. | +| `0x7679` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 4 scripts; compared against [0, 1, 4, 8, 16, 256, 512, 1024]; writers=['FIELD.BIN']. | +| `0x767a` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 4 scripts; compared against [0]; writers=['DEBUGMAP.BIN', 'DEBUGMAP2.BIN', 'DEBUGMAP3.BIN', 'FIELD.BIN']. | +| `0x767b` | — | med | auto-shape | TODO: confirm. Branch-read in 136 scenes / 150 scripts; compared against [0, 1]; writers=['DEBUGADV2.BIN', 'DEBUGMAP.BIN', 'DEBUGMAP2.BIN', 'DEBUGMAP3.BIN']. | +| `0x767d` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 9 scripts; compared against [0, 1, 2, 3]; writers=['CAMP.BIN', 'DEBUGADV2.BIN', 'DEBUGMAP.BIN', 'DEBUGMAP2.BIN']. | +| `0x204f5` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 3 scripts; compared against [1, 2, 4, 8, 16, 32, 64]; writers=['FIELD.BIN']. | +| `0x204f7` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 3 scripts; compared against [1, 2, 4, 6]; writers=['DEBUGMAP.BIN', 'DEBUGMAP2.BIN', 'DEBUGMAP3.BIN', 'GAMESTART.BIN']. | +| `0x53ef4` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 3 scripts; compared against [0]; writers=['CAMP.BIN']. | +| `0x55e37` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 3 scripts; compared against [0]; writers=['EVOLVE.BIN', 'STUDY.BIN']. | +| `0x55e38` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 9 scripts; compared against [0, 1, 2]; writers=['CHMENU.BIN', 'INFO.BIN', 'INFOAF.BIN', 'INFOCH.BIN']. | +| `0x55e39` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 8 scripts; compared against [0, 1, 4]; writers=['ALCHEMY.BIN', 'EVOLVE.BIN', 'MAGIC2.BIN', 'SELSTAGE.BIN']. | +| `0x55e3a` | — | med | auto-shape | TODO: confirm. Branch-read in 136 scenes / 143 scripts; compared against [0]; writers=['FORT.BIN']. | +| `0x617fd` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 6 scripts; compared against [0, 25, 50]; writers=['GAMESTART.BIN', 'TUNE.BIN']. | +| `0x62428` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 3 scripts; compared against [0]; writers=['CALLBACK_WINDOW.BIN', 'DEBUG.BIN', 'DEBUGADV.BIN', 'DEBUGADV2.BIN']. | +| `0x62439` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 6 scripts; compared against [0]; writers=['CHMENU.BIN', 'INFOAF.BIN', 'INFOCH.BIN', 'INFOEN.BIN']. | +| `0x624be` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 8 scripts; compared against [0]; writers=['MENU.BIN']. | +| `0x6642c` | route_branch | med | inference | Route/branch selector: sole writer is BUNKI.BIN (分岐 = branching), enum 0..7, branch-read in 36 scenes. Selects a story branch/route. INFERENCE from the BUNKI writer + enum — confirm exact routes via a listing/sweep. | +| `0x665d3` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 4 scripts; compared against [1, 2, 4, 8, 32, 64, 128, 65536]; writers=['ALCHEMY.BIN', 'BUNKI.BIN', 'DEBUGADV.BIN', 'EVOLVE.BIN']. | +| `0x665d7` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 5 scripts; compared against [1, 3]; writers=['ADDSKILL.BIN', 'SBUNKI.BIN']. | +| `0xaba5c` | — | med | auto-shape | TODO: confirm. Branch-read in 136 scenes / 149 scripts; compared against [0, 1]; writers=['DEBUGADV.BIN', 'DEBUGADV2.BIN', 'SC0000.BIN', 'SC0010.BIN']. | +| `0xaba5e` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 5 scripts; compared against [2]; writers=['DEBUGMAP.BIN', 'DEBUGMAP2.BIN', 'DEBUGMAP3.BIN']. | +| `0xccc21` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 4 scripts; compared against [0]; writers=['CHMENU.BIN']. | +| `0x15a094` | — | med | auto-shape | TODO: confirm. Branch-read in 0 scenes / 6 scripts; compared against [0]; writers=['ALCHEMY.BIN', 'EVOLVE.BIN', 'SELSTAGE.BIN', 'STUDY.BIN']. | + +## string-table + +| address | name | conf | source | usage | +|---|---|---|---|---| +| `0xd2` | save_slot_location_names | high | investigation | SAVE and SELSTAGE snapshot the current location label into this shared SAVE.DAT-selected string bank. SAVE.BIN restores it with op 0x1aa for the row's location field. | +| `0x1a4` | save_slot_protagonist_names | high | investigation | SAVE and SELSTAGE snapshot the active familiar's display name into this shared SAVE.DAT-selected string bank. SAVE.BIN restores it with op 0x1aa beside the portrait. | +| `0x27e` | unit_class_titles | high | investigation | Persistent per-unit class/title string table. CALCCC writes the selected class_change_title_output into the current unit's cell; character and status presentation scripts read the resulting title. | +| `0x315` | unit_story_display_names | high | investigation | CNINIT's sparse unit-id keyed story-name table. Scene scripts and HISTORY draw the selected speaker's value, DEBUGADV uses it for its scripted speaker previews, and INPUTNAME rejects a player-entered familiar name that collides with any populated row. The table intentionally leaves Lily's form ids 2..4 empty. | +| `0x7db` | modal_message_lines | high | investigation | Shared ten-string modal buffer. Producers append messages or menu options at modal_message_line_count; MES measures and draws each string, and SBUNKI reuses the same entries for an interactive selection list. | +| `0x7e5` | modal_annotation_texts | high | investigation | Optional small-font annotations rendered by MES and SBUNKI after the primary modal lines. No direct shipped producer was found; the paired count and placement arrays expose a reserved/extensible annotation ABI. | +| `0x25fa` | condition_level_names | high | investigation | ILINIT's row-major five-name matrix. Runtime condition UI selects the row by condition id and the column by current level minus one; id 1 has only the unnumbered instant-death label, id 12 and ids 15..29 are reserved. Columns: 0=level_1, 1=level_2, 2=level_3, 3=level_4, 4=level_5. | +| `0x2690` | attack_element_names | high | investigation | AFINIT attack-side affinity vocabulary. DRAWTIP indexes ids 1..8 from ITINIT, while INFOAF displays those same eight ordinary attack elements above attack_element_effectiveness_percent. Columns: 1=physical, 2=universal, 3=fire, 4=ice, 5=lightning, 6=earth, 7=holy, 8=dark, 11=resistance_1, 12=resistance_2, 13=resistance_3, 14=resistance_4, 15=resistance_5, 16=resistance_6, 17=resistance_7. | +| `0x26a4` | defense_element_names | high | investigation | AFINIT defense-side affinity vocabulary. DRAWENP and DRAWTIP index it with unit/item defense element ids; the same id selects a row of attack_element_effectiveness_percent. Columns: 1=physical, 2=universal, 3=fire, 4=ice, 5=lightning, 6=earth, 7=holy, 8=dark, 9=divinity, 10=demon, 11=spirit, 12=undead. | +| `0x26b4` | class_change_title_output | high | investigation | CCINIT writes the title selected by each eligible class-change rule. CALCCC copies it to unit_class_titles for a successful promotion, and ADDEXP includes the same string in the level-up notification. | +| `0x26b5` | terrain_type_names | high | investigation | LAINIT's terrain vocabulary. MPINIT's atlas cells contain terrain ids 0..19; the named ids distinguish passages, rooms, hidden spaces, bases, water, openings, altars, lava, and themed room variants. | +| `0x26d3` | terrain_effect_descriptions | high | investigation | LAINIT's player-facing terrain effect summary indexed by terrain id. FIELD shows it beneath the selected tile's terrain name; each populated string exactly describes that row of terrain_combat_stat_deltas. | +| `0x26f1` | object_type_names | high | investigation | OBINIT writes the authoritative object names. FIELD, SETOBJ, and DRAWOBJ use STINIT's object type id to select these definitions; extract_init joins the names to stage object placements. | +| `0x2755` | object_type_descriptions | high | investigation | OBINIT writes the short object descriptions displayed by the field object-information path. extract_init joins populated descriptions to STINIT object placements by type id. | +| `0x27b9` | stage_victory_condition_1 | high | investigation | STINIT writes one value for each of its 74 stage records. AIM renders this line first in the victory-condition section, and FIELD copies it into the current mission-condition display. | +| `0x27ba` | stage_victory_condition_2 | high | investigation | STINIT writes one value for each of its 74 stage records. AIM renders nonempty values after stage_victory_condition_1, and FIELD copies the slot into the current mission-condition display. | +| `0x27bb` | stage_defeat_condition_1 | high | investigation | STINIT writes one value for each of its 74 stage records. AIM renders this line first in the defeat-condition section, and FIELD copies it into the current mission-condition display. | +| `0x27bc` | stage_defeat_condition_2 | high | investigation | STINIT writes one value for each of its 74 stage records. AIM renders nonempty values after stage_defeat_condition_1, and FIELD copies the slot into the current mission-condition display. | +| `0x27bd` | stage_display_names | high | investigation | FORT and SELSTAGE enumerate this sparse catalog and render the selected title, while FIELD copies the active title into its shared display buffer. STINIT2 reserves 1,000 ids even though the shipped rows end at 170. | +| `0x2ba5` | stage_description_lines | high | investigation | SELSTAGE multiplies stage_clear_state by three and renders the corresponding three-column half of the selected STINIT2 row. The explicit 1,000-by-6 geometry prevents these strings from being mistaken for additional stage records. Columns: 0=uncleared_line_1, 1=uncleared_line_2, 2=uncleared_line_3, 3=cleared_line_1, 4=cleared_line_2, 5=cleared_line_3. | +| `0x4315` | card_definition_names | high | investigation | Card names populated by CDINIT2. FIELD indexes this table with current_card_id when presenting the card selected from CDINIT's weighted generation list. | +| `0x4379` | card_definition_result_messages | high | investigation | Short player-facing result text paired with card_definition_names. FIELD displays the selected card's row after applying its CDINIT2 effect. | +| `0x43dd` | name_entry_character_palette | high | investigation | INPUTNAME's five 70-cell character pages: row 0 hiragana, row 1 katakana, row 2 full-width Latin letters, row 3 Arabic/Kanji/Roman/circled numerals, and row 4 symbols. Cursor slots 70..74 select the page; selecting a populated cell copies it into the seven-character name buffer. | +| `0x45b9` | magic_action_names | high | investigation | MAINIT's one-based action-name array: eleven shipped records occupy ids 1..11 in a reserved 30-cell span. MAGIC, STUDY, and EVOLVE render the selected entry. | +| `0x45d7` | character_profile_names | high | investigation | CIINIT writes the character-information screen's 24 display names. INFOCH lists them by profile id, masks unrevealed rows, and uses the same id to select the backing unit metadata and CIMES biography. | +| `0x463b` | glossary_topic_titles | high | investigation | VIINIT writes the sparse glossary title table. INFOVO renders the selected title, and extract_init joins all 65 populated ids to VIMES's full help text. | +| `0x276` | — | med | auto-shape | string-table (written by SC0130) | +| `0x277` | — | med | auto-shape | string-table (written by SC0130) | +| `0x278` | — | med | auto-shape | string-table (written by FIELD) | +| `0x279` | — | med | auto-shape | string-table (written by INPUTNAME) | +| `0x27a` | — | med | auto-shape | string-table (written by READY) | +| `0x27c` | — | med | auto-shape | string-table (written by READY) | +| `0x27d` | — | med | auto-shape | string-table (written by READY) | +| `0x316` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x317` | — | med | auto-shape | string-table (written by GAMESTART) | +| `0x318` | — | med | auto-shape | string-table (written by GAMESTART) | +| `0x319` | — | med | auto-shape | string-table (written by GAMESTART) | +| `0x31a` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x31b` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x31c` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x31d` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x31e` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x31f` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x320` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x321` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x322` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x323` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x324` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x325` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x326` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x327` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x328` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x329` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x32a` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x32b` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x32c` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x32d` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x32e` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x32f` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x330` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x331` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x332` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x333` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x334` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x335` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x336` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x337` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x338` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x339` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x33a` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x33b` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x33c` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x33d` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x33e` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x33f` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x340` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x341` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x342` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x343` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x344` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x345` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x346` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x348` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x349` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x34b` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x34c` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x34e` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x34f` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x350` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x351` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x352` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x353` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x354` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x355` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x356` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x357` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x358` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x359` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x35a` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x35b` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x35c` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x35d` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x35e` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x35f` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x360` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x361` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x362` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x363` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x364` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x365` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x36f` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x370` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x371` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x372` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x373` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x374` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x37a` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x37b` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x37c` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x37d` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x37e` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x37f` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x381` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x382` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x383` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x384` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x385` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x387` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x388` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x389` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x38a` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x38c` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x38d` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x38e` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x38f` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x390` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x391` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x392` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x393` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x394` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x395` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x396` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x397` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x398` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x399` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x39a` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x39c` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x39d` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x39e` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x39f` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x3a0` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x3a1` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x3a2` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x3a3` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x3a4` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x3aa` | — | med | auto-shape | string-table (written by GAMESTART) | +| `0x3ab` | — | med | auto-shape | string-table (written by GAMESTART) | +| `0x3ac` | — | med | auto-shape | string-table (written by GAMESTART) | +| `0x3dd` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x3de` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x3df` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x3e0` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x3e2` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x3e3` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x3e4` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x3ec` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x3ed` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x3ee` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x3ef` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x3f0` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x3f1` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x3f6` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x3f7` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x3f8` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x3f9` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x3fa` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x3fb` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x400` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x405` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x40f` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x414` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x419` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x41e` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x423` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x424` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x425` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x428` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x441` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x442` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x446` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x447` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x44b` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x450` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x455` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x456` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x45a` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x473` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x478` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x479` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x47d` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x482` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x4a5` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x4a6` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x4aa` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x4ab` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x4af` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x4b4` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x4d7` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x4dc` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x4dd` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x4de` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x4e1` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x4e6` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x509` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x50a` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x50e` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x50f` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x510` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x511` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x513` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x514` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x518` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x51d` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x51e` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x522` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x56d` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x572` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x577` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x57c` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x581` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x59f` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x5a4` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x5a5` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x5ae` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x5af` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x5b3` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x5b4` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x5b5` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x5b6` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x5bd` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x5d1` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x5d6` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x5db` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x5e0` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x5e5` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x5ea` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x5ef` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x5f4` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x603` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x608` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x609` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x60a` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x60b` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x635` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x636` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x637` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x638` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x639` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x63a` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x63b` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x63c` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x63d` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x63e` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x63f` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x640` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x641` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x642` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x643` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x644` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x645` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x646` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x647` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x648` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x649` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x64a` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x64b` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x64c` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x64d` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x64e` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x64f` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x650` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x651` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x652` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x653` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x654` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x655` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x656` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x657` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x658` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x667` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x668` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x669` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x66a` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x66b` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x66c` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x66d` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x66e` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x66f` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x670` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x671` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x672` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x673` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x674` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x675` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x676` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x677` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x678` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x679` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x67a` | — | med | auto-shape | string-table (written by CNINIT) | +| `0x7da` | — | med | auto-shape | string-table (written by SC0100) | +| `0x849` | — | med | auto-shape | string-table (written by SAVE) | +| `0x84b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x84c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x84d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x84e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x84f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x850` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x851` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x852` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x853` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x854` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x855` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x856` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x857` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x858` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x859` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x85a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x85b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x85c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x85d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x85e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x85f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x860` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x861` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x862` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x863` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x864` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x865` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x866` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x867` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x868` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x869` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x86a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x86b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x86c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x86d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x86e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x86f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x870` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x871` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x872` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x873` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x874` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x875` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x876` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x877` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x878` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x879` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x87a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x87b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x87d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x87e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x880` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x881` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x882` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x883` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x884` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x885` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x886` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x887` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x888` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x889` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x88a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x88b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x88c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x88d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x88e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x88f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x890` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x891` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x892` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x893` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x894` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x895` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x896` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x897` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x898` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x899` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x89a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8a4` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8a5` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8a6` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8a7` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8a8` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8a9` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8af` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8b0` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8b1` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8b2` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8b3` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8b4` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8b6` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8b7` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8b8` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8b9` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8ba` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8bc` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8bd` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8be` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8bf` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8c1` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8c2` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8c3` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8c4` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8c5` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8c6` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8c7` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8c8` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8c9` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8ca` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8cb` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8cc` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8cd` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8ce` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8cf` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8d1` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8d2` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8d3` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8d4` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8d5` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8d6` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8d7` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8d8` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8d9` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8df` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8e0` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x8e1` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x912` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x913` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x914` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x915` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x917` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x918` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x919` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x921` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x922` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x923` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x924` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x925` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x926` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x92b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x92c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x92d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x92e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x92f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x930` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x935` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x93a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x944` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x949` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x94e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x953` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x958` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x959` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x95a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x95d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x976` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x977` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x97b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x97c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x980` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x985` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x98a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x98b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x98f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x9a8` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x9ad` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x9ae` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x9b2` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x9b7` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x9da` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x9db` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x9df` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x9e0` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x9e4` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x9e9` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xa0c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xa11` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xa12` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xa13` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xa16` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xa1b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xa3e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xa3f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xa43` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xa44` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xa45` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xa46` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xa48` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xa49` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xa4d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xa52` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xa53` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xaa2` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xaa7` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xaac` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xab1` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xab6` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xad4` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xad9` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xada` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xae3` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xae4` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xae8` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xae9` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xaea` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xaeb` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xaf2` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb06` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb0b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb10` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb15` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb1a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb1f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb24` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb29` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb38` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb3d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb3e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb3f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb40` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb6a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb6b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb6c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb6d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb6e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb6f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb70` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb71` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb72` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb73` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb74` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb75` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb76` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb77` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb78` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb79` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb7a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb7b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb7c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb7d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb7e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb7f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb80` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb81` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb82` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb83` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb84` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb85` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb86` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb87` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb88` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb89` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb8a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb8b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb8c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb8d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb9c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb9d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb9e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xb9f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xba0` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xba1` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xba2` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xba3` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xba4` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xba5` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xba6` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xba7` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xba8` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xba9` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xbaa` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xbab` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xbac` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xbad` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xbae` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xbaf` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc33` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc34` | — | med | auto-shape | string-table (written by GAMESTART) | +| `0xc35` | — | med | auto-shape | string-table (written by GAMESTART) | +| `0xc36` | — | med | auto-shape | string-table (written by GAMESTART) | +| `0xc37` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc38` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc39` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc3a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc3b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc3c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc3d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc3e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc3f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc40` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc41` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc42` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc43` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc44` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc45` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc46` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc47` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc48` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc49` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc4a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc4b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc4c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc4d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc4e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc4f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc50` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc51` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc52` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc53` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc54` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc55` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc56` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc57` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc58` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc59` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc5a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc5b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc5c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc5d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc5e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc5f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc60` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc61` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc62` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc63` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc65` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc66` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc68` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc69` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc6a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc6b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc6c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc6d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc6e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc6f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc70` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc71` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc72` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc73` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc74` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc75` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc76` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc77` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc78` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc79` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc7a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc7b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc7c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc7d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc7e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc7f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc80` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc81` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc82` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc8c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc8d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc8e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc8f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc90` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc91` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc97` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc98` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc99` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc9a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc9b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc9c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc9e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xc9f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xca0` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xca1` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xca2` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xca4` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xca5` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xca6` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xca7` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xca9` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xcaa` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xcab` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xcac` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xcad` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xcae` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xcaf` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xcb0` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xcb1` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xcb2` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xcb3` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xcb4` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xcb5` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xcb6` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xcb7` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xcb9` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xcba` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xcbb` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xcbc` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xcbd` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xcbe` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xcbf` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xcc0` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xcc1` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xcc7` | — | med | auto-shape | string-table (written by GAMESTART) | +| `0xcc8` | — | med | auto-shape | string-table (written by GAMESTART) | +| `0xcc9` | — | med | auto-shape | string-table (written by GAMESTART) | +| `0xcfa` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xcfb` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xcfc` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xcfd` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xcff` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd00` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd01` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd09` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd0a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd0b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd0c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd0d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd0e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd13` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd14` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd15` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd16` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd17` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd18` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd1d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd22` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd2c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd31` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd36` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd3b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd40` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd41` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd42` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd45` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd5e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd5f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd63` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd64` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd68` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd6d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd72` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd73` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd77` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd90` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd95` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd96` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd9a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xd9f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xdc2` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xdc3` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xdc7` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xdc8` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xdcc` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xdd1` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xdf4` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xdf9` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xdfa` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xdfb` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xdfe` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xe03` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xe26` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xe27` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xe2b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xe2c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xe2d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xe2e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xe30` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xe31` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xe35` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xe3a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xe3b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xe3f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xe8a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xe8f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xe94` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xe99` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xe9e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xebc` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xec1` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xec2` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xecb` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xecc` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xed0` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xed1` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xed2` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xed3` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xeda` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xeee` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xef3` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xef8` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xefd` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf02` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf07` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf0c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf11` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf20` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf25` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf26` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf27` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf28` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf52` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf53` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf54` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf55` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf56` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf57` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf58` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf59` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf5a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf5b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf5c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf5d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf5e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf5f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf60` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf61` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf62` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf63` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf64` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf65` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf66` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf67` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf68` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf69` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf6a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf6b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf6c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf6d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf6e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf6f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf70` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf71` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf72` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf73` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf74` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf75` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf84` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf85` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf86` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf87` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf88` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf89` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf8a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf8b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf8c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf8d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf8e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf8f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf90` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf91` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf92` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf93` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf94` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf95` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf96` | — | med | auto-shape | string-table (written by EBINIT) | +| `0xf97` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x101b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x101c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x101d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x101e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x101f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1020` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1021` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1022` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1023` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1024` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1025` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1026` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1027` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1028` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1029` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x102f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1030` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1031` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1032` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1033` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1034` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1035` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1041` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1042` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1043` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1044` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1045` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1046` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x104d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x104e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1050` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1051` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1052` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1053` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1054` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1055` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1056` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1057` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1058` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1059` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x105a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x105b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x105c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x105d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x105e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x105f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1060` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1061` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1062` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1063` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1064` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1065` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1066` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1067` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1068` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1069` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x106a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1079` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x107f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1080` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1081` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1082` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1083` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1084` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1086` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1087` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1088` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1089` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x108a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x108c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x108d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x108e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x108f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1091` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1092` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1093` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1094` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1095` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1096` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1097` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1098` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1099` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x109a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x109b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x109c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x109d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x109e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x109f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x10a1` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x10a2` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x10a3` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x10a4` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x10a5` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x10a6` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x10a7` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x10a8` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x10a9` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x10af` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x10b0` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x10b1` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x10e2` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x10e3` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x10e4` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x10e5` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x10e7` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x10e8` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x10e9` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x10f1` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x10f2` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x10f3` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x10f4` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x10f5` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x10f6` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x10fb` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x10fc` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x10fd` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x10fe` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x10ff` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1100` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1105` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x110a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1114` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1119` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x111e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1123` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1128` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1129` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x112a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x112d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1146` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1147` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x114b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x114c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1150` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1155` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x115a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x115b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x115f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1178` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x117d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x117e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1182` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1187` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x11aa` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x11ab` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x11af` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x11b0` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x11b4` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x11b9` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x11dc` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x11e1` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x11e2` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x11e3` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x11e6` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x11eb` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x120e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x120f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1213` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1214` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1215` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1216` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1218` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1219` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x121d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1222` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1223` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1227` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1272` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1277` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x127c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1281` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1286` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x12a4` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x12a9` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x12aa` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x12b3` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x12b4` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x12b8` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x12b9` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x12ba` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x12bb` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x12c2` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x12d6` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x12db` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x12e0` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x12e5` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x12ea` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x12ef` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x12f4` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x12f9` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1308` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x130d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x130e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x130f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1310` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x133a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x133b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x133c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x133d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x133e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x133f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1340` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1341` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1342` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1343` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1344` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1345` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1346` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1347` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1348` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1349` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x134a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x134b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x134c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x134d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x134e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x134f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1350` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1351` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1352` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1353` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1354` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1355` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1356` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1357` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1358` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1359` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x135a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x135b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x135c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x135d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x136c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x136d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x136e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x136f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1370` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1371` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1372` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1373` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1374` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1375` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1376` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1377` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1378` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1379` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x137a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x137b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x137c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x137d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x137e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x137f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1592` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1593` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1596` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1597` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x159c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x159d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x159e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x159f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x15a0` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x15a1` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x15b0` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x15b1` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x15b4` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x15b5` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x15b8` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x15b9` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x15ba` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x15c4` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x15c5` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x15c6` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x15c7` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x15c8` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x15c9` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x15ca` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x15cb` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x15cc` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x15cd` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x15ce` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x15d8` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1600` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1601` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x160a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x160b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1614` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1615` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x161e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x161f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1620` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1621` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1622` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1623` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1628` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1629` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x165a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x165b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x165c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1664` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1665` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1666` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1667` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x166e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x166f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1678` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1679` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1682` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1684` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x16be` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x16bf` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x16c8` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x16c9` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x16ca` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x16cb` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x16d2` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x16dc` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x16dd` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1722` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1723` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1724` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1725` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x172c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x172d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x172e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x172f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1736` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1737` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1740` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1786` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1787` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1790` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1792` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1793` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1794` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1795` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x17ea` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x17eb` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x17ec` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x17ed` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x17f4` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x17f8` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x17fe` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x17ff` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1800` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1801` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1808` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1809` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1812` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1814` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x18d0` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x18d1` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1916` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1917` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1920` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1921` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1922` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1923` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1934` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1935` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1936` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1937` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x193e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x193f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1940` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1941` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1942` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1943` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1944` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1945` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1952` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1953` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x197a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a44` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a45` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a46` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a47` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a48` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a49` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a4a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a4b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a56` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a57` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a58` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a5a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a5b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a5c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a5d` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a5e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a62` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a63` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a66` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a67` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a6e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a6f` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a70` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a72` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a73` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a74` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a76` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a77` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a78` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a79` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a7a` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a7b` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a7c` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a7e` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a80` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a81` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a82` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a83` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a84` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a85` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a86` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a87` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1a88` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1aa6` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1aa7` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1aa8` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1aaa` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1aab` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1aac` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1aad` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1aae` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1aaf` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1ab0` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1ab1` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1ab2` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1ab3` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1ab4` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1ab5` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1ab6` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1ab7` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1ab8` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1ab9` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1aba` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1abb` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1abe` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1abf` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1ac0` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1ac4` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1ac5` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1ac6` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1ac8` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1aca` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1acc` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1acd` | — | med | auto-shape | string-table (written by EBINIT) | +| `0x1bd3` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1bd4` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1bd5` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1bd6` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1bd7` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1bd8` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1bd9` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1bda` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1bdb` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1bdc` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1bde` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1bdf` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1be4` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1be5` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1be6` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1be7` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1be8` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1be9` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1bea` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1beb` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1bec` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1bed` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1bf1` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1bf2` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1bf3` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1bf4` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1bf5` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1bf6` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1bf7` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1bf8` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1bf9` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1bfa` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1bfb` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1bfc` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c05` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c06` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c08` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c09` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c0a` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c0b` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c0c` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c0d` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c0e` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c0f` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c10` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c11` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c12` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c13` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c14` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c15` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c16` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c17` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c18` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c19` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c1a` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c1b` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c1c` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c1d` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c1e` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c1f` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c20` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c21` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c22` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c2d` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c2e` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c2f` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c37` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c38` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c39` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c3a` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c3c` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c3d` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c3e` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c3f` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c40` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c43` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c45` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c47` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c48` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c49` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c4a` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c4b` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c9b` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c9d` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1c9f` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1ca0` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1caa` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1cab` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1cae` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1caf` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1cb0` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1cb2` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1cb5` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1cbf` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1cc0` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1cc2` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1cc3` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1cc5` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1cc7` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1cca` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1cd0` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1cd1` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1cd5` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1cd7` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1cd9` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1cdf` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1ce3` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1ce4` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1ce6` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1ce9` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1cea` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1ceb` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1cee` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1cef` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1cf1` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1cf8` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1cfa` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1cfc` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1cff` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d01` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d03` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d04` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d0e` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d10` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d12` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d13` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d14` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d17` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d19` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d20` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d22` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d25` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d27` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d29` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d2a` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d2b` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d2d` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d36` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d39` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d4f` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d51` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d54` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d5e` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d5f` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d61` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d62` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d63` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d66` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d68` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d6b` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d6f` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d72` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d75` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d77` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d78` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d79` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d7a` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d7b` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d7c` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d84` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d85` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d86` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d87` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d88` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d89` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d8a` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d8b` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d8c` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d8d` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d8e` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d8f` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d90` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d91` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d92` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d93` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d94` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d95` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d96` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d97` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d98` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d99` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d9a` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d9b` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d9d` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d9e` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1d9f` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1da0` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1da2` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1da3` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1da4` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1da5` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1da6` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1da8` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1da9` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1daa` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1dab` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1db2` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1db3` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1db4` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1db5` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1db6` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1db7` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1dc7` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1dc9` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1dcb` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e32` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e34` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e35` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e37` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e38` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e39` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e3a` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e3b` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e3e` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e40` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e41` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e43` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e45` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e46` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e47` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e4a` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e4b` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e4c` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e4e` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e4f` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e51` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e53` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e54` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e55` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e56` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e57` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e58` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e5b` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e5c` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e5d` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e5e` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e5f` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e8f` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e90` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e92` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e93` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e94` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e95` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e96` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e97` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e98` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1e99` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f57` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f58` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f59` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f5a` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f5b` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f5c` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f5d` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f5e` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f5f` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f60` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f61` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f62` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f63` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f64` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f68` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f69` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f6a` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f6b` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f6c` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f6d` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f6e` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f6f` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f70` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f71` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f72` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f73` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f74` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f75` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f76` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f77` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f78` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f79` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f7a` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f7b` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f7c` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f7d` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f7e` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f7f` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f80` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x1f81` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x201f` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2020` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2021` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2022` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2024` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2025` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2026` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2027` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2028` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x202b` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x202d` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x202f` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2030` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2031` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2032` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2033` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2083` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2085` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2087` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2088` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2092` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2093` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2096` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2097` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2098` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x209a` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x209d` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20a7` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20a8` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20aa` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20ab` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20ad` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20af` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20b2` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20b8` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20b9` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20bd` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20bf` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20c1` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20c7` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20cb` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20cc` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20ce` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20d1` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20d2` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20d3` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20d6` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20d7` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20d9` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20e0` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20e2` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20e4` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20e7` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20e9` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20eb` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20ec` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20f6` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20f8` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20fa` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20fb` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20fc` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x20ff` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2101` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2108` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x210a` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x210d` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x210f` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2111` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2112` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2113` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2115` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x211e` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2121` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2137` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2139` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x213c` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2146` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2147` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2149` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x214a` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x214b` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x214e` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2150` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2153` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2157` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x215a` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x215d` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x215f` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2160` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2161` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2162` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2163` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2164` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x216c` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x216d` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x216e` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x216f` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2170` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2171` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2172` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2173` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2174` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2175` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2176` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2177` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2178` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2179` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x217a` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x217b` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x217c` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x217d` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x217e` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x217f` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2180` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2181` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2182` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2183` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2185` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2186` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2187` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2188` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x218a` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x218b` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x218c` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x218d` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x218e` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2190` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2191` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2192` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2193` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x219a` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x219b` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x219c` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x219d` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x219e` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x219f` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x21af` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x21b1` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x21b3` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2277` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2278` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x227a` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x227b` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x227c` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x227d` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x227e` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x227f` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2280` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2281` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x233f` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2340` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2341` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2342` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2343` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2344` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2345` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2346` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2347` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2348` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2349` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x234a` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x234b` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x234c` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2350` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2351` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2352` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2353` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2354` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2355` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2356` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2357` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2358` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2359` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x235a` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x235b` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x235c` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x235d` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x235e` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x235f` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2360` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2361` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2362` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2363` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2364` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2365` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2366` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2367` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2368` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x2369` | — | med | auto-shape | string-table (written by ITINIT) | +| `0x23a3` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23a4` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23a5` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23a6` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23ad` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23b7` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23b8` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23b9` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23ba` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23bb` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23bd` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23be` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23bf` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23c0` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23c1` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23c2` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23c3` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23c4` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23c5` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23c6` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23c7` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23c8` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23c9` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23ca` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23cb` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23cc` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23cd` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23ce` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23cf` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23d0` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23d1` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23d2` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23d3` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23d4` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x23d5` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2407` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2408` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2409` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x240a` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x240b` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x240c` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x240d` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x240e` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x240f` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2410` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2411` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2412` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2413` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2414` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2415` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2416` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2417` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2418` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2419` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x241a` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x241b` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x241c` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x241d` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x241e` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x241f` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2420` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2421` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2422` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2423` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2424` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2425` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2426` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2427` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2428` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2429` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x242a` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x242b` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x242c` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x242d` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x242e` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x242f` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2430` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2432` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2438` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2439` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x243a` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x243b` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x243c` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x243d` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x243e` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x243f` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2440` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2441` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2442` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2443` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2469` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x246a` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x246b` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x246c` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x246d` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x246e` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x246f` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2470` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2471` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2472` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2473` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2474` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2475` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2476` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x247d` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x247e` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2480` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2481` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2483` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2484` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2485` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2486` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2487` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2488` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2489` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x248a` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x248c` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x248d` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x248e` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x248f` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2490` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2491` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2492` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2494` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2495` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2496` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2497` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2498` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2499` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x249a` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x249b` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24cf` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24d0` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24d1` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24d2` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24d9` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24e3` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24e4` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24e5` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24e6` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24e7` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24e9` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24ea` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24eb` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24ec` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24ed` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24ee` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24ef` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24f0` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24f1` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24f2` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24f3` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24f4` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24f5` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24f6` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24f7` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24f8` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24f9` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24fa` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24fb` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24fc` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24fd` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24fe` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x24ff` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2500` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2501` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2533` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2534` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2535` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2536` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2537` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2538` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2539` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x253a` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x253b` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x253c` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x253d` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x253e` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x253f` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2540` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2541` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2542` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2543` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2544` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2545` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2546` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2547` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2548` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2549` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x254a` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x254b` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x254c` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x254d` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x254e` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x254f` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2550` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2551` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2552` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2553` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2554` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2555` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2556` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2557` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2558` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2559` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x255a` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x255b` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x255c` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x255e` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2564` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2565` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2566` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2567` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2568` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2569` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x256a` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x256b` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x256c` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x256d` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x256e` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x256f` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2597` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2598` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x2599` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x259a` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x259b` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x259c` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x259d` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x259e` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x259f` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x25a0` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x25a1` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x25a2` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x25a9` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x25aa` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x25ac` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x25ad` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x25af` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x25b0` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x25b1` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x25b2` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x25b3` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x25b4` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x25b5` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x25b6` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x25b8` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x25b9` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x25ba` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x25bb` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x25bc` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x25bd` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x25be` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x25c0` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x25c1` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x25c2` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x25c3` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x25c4` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x25c5` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x25c6` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x25c7` | — | med | auto-shape | string-table (written by SKINIT) | +| `0x25ff` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2604` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2605` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2606` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2607` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2608` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2609` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x260a` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x260b` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x260c` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x260d` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x260e` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x260f` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2610` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2611` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2612` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2613` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2614` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2615` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2616` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2617` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2618` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2619` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x261a` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x261b` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x261c` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x261d` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x261e` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x261f` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2620` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2621` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2622` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2623` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2624` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2625` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2626` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2627` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2628` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2629` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x262a` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x262b` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x262c` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x262d` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x262e` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x262f` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2630` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2631` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2632` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2633` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2634` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2635` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x263b` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x263c` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x263d` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x263e` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x263f` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2640` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2641` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2642` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2643` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2644` | — | med | auto-shape | string-table (written by ILINIT) | +| `0x2691` | — | med | auto-shape | string-table (written by AFINIT) | +| `0x2692` | — | med | auto-shape | string-table (written by AFINIT) | +| `0x2693` | — | med | auto-shape | string-table (written by AFINIT) | +| `0x2694` | — | med | auto-shape | string-table (written by AFINIT) | +| `0x2695` | — | med | auto-shape | string-table (written by AFINIT) | +| `0x2696` | — | med | auto-shape | string-table (written by AFINIT) | +| `0x2697` | — | med | auto-shape | string-table (written by AFINIT) | +| `0x2698` | — | med | auto-shape | string-table (written by AFINIT) | +| `0x269b` | — | med | auto-shape | string-table (written by AFINIT) | +| `0x269c` | — | med | auto-shape | string-table (written by AFINIT) | +| `0x269d` | — | med | auto-shape | string-table (written by AFINIT) | +| `0x269e` | — | med | auto-shape | string-table (written by AFINIT) | +| `0x269f` | — | med | auto-shape | string-table (written by AFINIT) | +| `0x26a0` | — | med | auto-shape | string-table (written by AFINIT) | +| `0x26a1` | — | med | auto-shape | string-table (written by AFINIT) | +| `0x26a5` | — | med | auto-shape | string-table (written by AFINIT) | +| `0x26a6` | — | med | auto-shape | string-table (written by AFINIT) | +| `0x26a7` | — | med | auto-shape | string-table (written by AFINIT) | +| `0x26a8` | — | med | auto-shape | string-table (written by AFINIT) | +| `0x26a9` | — | med | auto-shape | string-table (written by AFINIT) | +| `0x26aa` | — | med | auto-shape | string-table (written by AFINIT) | +| `0x26ab` | — | med | auto-shape | string-table (written by AFINIT) | +| `0x26ac` | — | med | auto-shape | string-table (written by AFINIT) | +| `0x26ad` | — | med | auto-shape | string-table (written by AFINIT) | +| `0x26ae` | — | med | auto-shape | string-table (written by AFINIT) | +| `0x26af` | — | med | auto-shape | string-table (written by AFINIT) | +| `0x26b0` | — | med | auto-shape | string-table (written by AFINIT) | +| `0x26b6` | — | med | auto-shape | string-table (written by LAINIT) | +| `0x26b7` | — | med | auto-shape | string-table (written by LAINIT) | +| `0x26b8` | — | med | auto-shape | string-table (written by LAINIT) | +| `0x26b9` | — | med | auto-shape | string-table (written by LAINIT) | +| `0x26bc` | — | med | auto-shape | string-table (written by LAINIT) | +| `0x26bd` | — | med | auto-shape | string-table (written by LAINIT) | +| `0x26be` | — | med | auto-shape | string-table (written by LAINIT) | +| `0x26bf` | — | med | auto-shape | string-table (written by LAINIT) | +| `0x26c0` | — | med | auto-shape | string-table (written by LAINIT) | +| `0x26c1` | — | med | auto-shape | string-table (written by LAINIT) | +| `0x26c2` | — | med | auto-shape | string-table (written by LAINIT) | +| `0x26c3` | — | med | auto-shape | string-table (written by LAINIT) | +| `0x26c4` | — | med | auto-shape | string-table (written by LAINIT) | +| `0x26c5` | — | med | auto-shape | string-table (written by LAINIT) | +| `0x26c6` | — | med | auto-shape | string-table (written by LAINIT) | +| `0x26c7` | — | med | auto-shape | string-table (written by LAINIT) | +| `0x26c8` | — | med | auto-shape | string-table (written by LAINIT) | +| `0x26d7` | — | med | auto-shape | string-table (written by LAINIT) | +| `0x26da` | — | med | auto-shape | string-table (written by LAINIT) | +| `0x26db` | — | med | auto-shape | string-table (written by LAINIT) | +| `0x26dd` | — | med | auto-shape | string-table (written by LAINIT) | +| `0x26de` | — | med | auto-shape | string-table (written by LAINIT) | +| `0x26f2` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x26f3` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x26f4` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x26f5` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x26f6` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x26f7` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x26f8` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x26f9` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x26fa` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x26fb` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x26fc` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x26fd` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x26fe` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x26ff` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2700` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2701` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2702` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2703` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2704` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2705` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2706` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2707` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2708` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2709` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x270a` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x270b` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x270c` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x270d` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x270e` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x270f` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2710` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2711` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2712` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2713` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2714` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2715` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2716` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2717` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2718` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2719` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x271a` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x271b` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x271c` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x271d` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x271e` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x271f` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2756` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2757` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2758` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2759` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x275a` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x275b` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x275e` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x275f` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2761` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2762` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2763` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2764` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2765` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2766` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2767` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2768` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2769` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x276a` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x276b` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x276c` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x276d` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x276e` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x276f` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2770` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2771` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2772` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2773` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2774` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2775` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2776` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2779` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x277a` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2782` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x2783` | — | med | auto-shape | string-table (written by OBINIT) | +| `0x27be` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27bf` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27c0` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27c8` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27c9` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27ca` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27cc` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27cd` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27d2` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27d3` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27d4` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27d5` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27d6` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27d7` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27d8` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27dc` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27dd` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27de` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27df` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27e0` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27e1` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27e2` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27e3` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27e4` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27e6` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27e7` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27e8` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27e9` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27ea` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27eb` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27f0` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27f1` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27f2` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27f3` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27f4` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27f5` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27fa` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27fb` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27fc` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x27fd` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2804` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2805` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x280e` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x280f` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2810` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2816` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2818` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2819` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x281a` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x281b` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x281c` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x281d` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x281e` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x281f` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2822` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2823` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2824` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2825` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2826` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2827` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2828` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2829` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x282a` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x285d` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x285e` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x285f` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2860` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2861` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2862` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2863` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2864` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2865` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2866` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2867` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2bab` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2bac` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2bae` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2baf` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2bb1` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2bb2` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2bb3` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2bb4` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2bb5` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2bb6` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2bb7` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2bb8` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2bba` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2bbb` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2be7` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2be8` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2bea` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2bed` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2bee` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2bf0` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2bf3` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2bf4` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2bf6` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2bff` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c00` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c02` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c05` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c06` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c08` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c23` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c24` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c25` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c26` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c27` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c29` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c2a` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c2c` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c2d` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c2f` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c30` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c32` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c35` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c36` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c38` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c39` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c3b` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c3c` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c3e` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c3f` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c41` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c42` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c44` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c47` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c48` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c4a` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c4b` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c5f` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c60` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c62` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c65` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c66` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c67` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c68` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c6b` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c6c` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c6d` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c6e` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c71` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c72` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c73` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c74` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c77` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c78` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c79` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c7a` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c7d` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c7e` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c7f` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c80` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c83` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c84` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c86` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c89` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c8a` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c8b` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c8c` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c8d` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c8f` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c90` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c92` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c93` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c9b` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c9c` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2c9e` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2ca1` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2ca2` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2ca4` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2ca7` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2ca8` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2ca9` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2caa` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2cad` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2cae` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2cb0` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2cb1` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2cb3` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2cb4` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2cb6` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2cb7` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2cb9` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2cba` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2cbc` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2cbd` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2cd7` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2cd8` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2cda` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2cdd` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2cde` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2ce0` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2ce3` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2ce4` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2ce6` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2ce9` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2cea` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2cec` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2cef` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2cf0` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2cf1` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2cf2` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2cf5` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2cf6` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2cf7` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2cf8` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2cf9` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2d13` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2d14` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2d16` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2d17` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2d19` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2d1a` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2d1c` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2d1f` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2d20` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2d22` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2d25` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2d26` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2d28` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2d29` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2d4f` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2d50` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2d52` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2d55` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2d56` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2d58` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2d8b` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2d8c` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2d8e` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2d91` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2d92` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2d93` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2d94` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2d97` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2d98` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2d99` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2d9a` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2dbb` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2dbc` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2dbe` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2dbf` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2dc7` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2dc8` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2dc9` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2dca` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2dcd` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2dce` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2dcf` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2dd0` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2dd3` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2dd4` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2dd5` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2dd6` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2dd9` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2dda` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2ddb` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2ddc` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2ddf` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2de0` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2de1` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2de2` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2de5` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2de6` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2de7` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2de8` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2deb` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2dec` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2ded` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2dee` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2df1` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2df2` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2df3` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2df4` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e03` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e04` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e06` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e07` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e09` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e0a` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e0b` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e0c` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e0d` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e0e` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e0f` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e10` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e12` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e13` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e15` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e16` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e17` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e18` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e19` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e1a` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e1b` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e1c` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e1d` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e1e` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e1f` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e20` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e21` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e22` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e23` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e24` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e25` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e26` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e27` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e28` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e2a` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e2b` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e2d` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e2e` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e30` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e31` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e33` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e34` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e35` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e36` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e37` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2e38` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f65` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f66` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f67` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f68` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f6b` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f6c` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f6d` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f6e` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f71` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f72` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f74` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f77` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f78` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f79` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f7a` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f7d` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f7e` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f7f` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f80` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f83` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f84` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f85` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f86` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f89` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f8a` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f8b` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f8c` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f8f` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f90` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f91` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f92` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f95` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f96` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f97` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f98` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f99` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f9a` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f9b` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f9c` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f9d` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f9e` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2f9f` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2fa0` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2fa1` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2fa2` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2fa3` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2fa4` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2fa5` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x2fa6` | — | med | auto-shape | string-table (written by STINIT2) | +| `0x4316` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4317` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4318` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4319` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x431a` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x431b` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x431c` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x431d` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x431e` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x431f` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4320` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4321` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4322` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4323` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4324` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4325` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4326` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4327` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4328` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4329` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x432a` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x432b` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x432c` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x432d` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x432e` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x432f` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4330` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4331` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4332` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4333` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4334` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4335` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4336` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4337` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4338` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4339` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x433a` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x433b` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x433c` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x433d` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x433e` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x433f` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4340` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4341` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4342` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4343` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4344` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4345` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4346` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4347` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4348` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4349` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x434a` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x434b` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x434c` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x434d` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x434e` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x434f` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4350` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4351` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4352` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4353` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4354` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4355` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4356` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4357` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4358` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4359` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x435a` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x435b` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x435c` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x435d` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x435e` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x435f` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4360` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4361` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4362` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4363` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4364` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4365` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4366` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x437a` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x437b` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x437c` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x437d` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x437e` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x437f` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4380` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4381` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4382` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4383` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4384` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4385` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4386` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4387` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4388` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4389` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x438a` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x438b` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x438c` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x438d` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x438e` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x438f` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4390` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4391` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4392` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4393` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4394` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4395` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4396` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4397` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4398` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x4399` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x439a` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x439b` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x439c` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x439d` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x439e` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x439f` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43a0` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43a1` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43a2` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43a3` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43a4` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43a5` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43a6` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43a7` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43a8` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43a9` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43aa` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43ab` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43ac` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43ad` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43ae` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43af` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43b0` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43b1` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43b2` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43b3` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43b4` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43b5` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43b6` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43b7` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43b8` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43b9` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43ba` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43bb` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43bc` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43bd` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43be` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43bf` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43c0` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43c1` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43c2` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43c3` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43c4` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43c5` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43c6` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43c7` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43c8` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43c9` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43ca` | — | med | auto-shape | string-table (written by CDINIT2) | +| `0x43de` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x43df` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x43e0` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x43e1` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x43e2` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x43e3` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x43e4` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x43e5` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x43e6` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x43e7` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x43e8` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x43e9` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x43ea` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x43eb` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x43ec` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x43ed` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x43ef` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x43f1` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x43f2` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x43f3` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x43f4` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x43f5` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x43f6` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x43f7` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x43f8` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x43f9` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x43fa` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x43fb` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x43fc` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x43fd` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x43fe` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x43ff` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4400` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4401` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4403` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4405` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4406` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4407` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4408` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4409` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x440a` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x440b` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x440c` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x440d` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x440e` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x440f` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4410` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4411` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4412` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4413` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4414` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4415` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4416` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4417` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4418` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4423` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4424` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4425` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4426` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4427` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4428` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4429` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x442a` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x442b` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x442c` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x442d` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x442e` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x442f` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4430` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4431` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4432` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4433` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4435` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4437` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4438` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4439` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x443a` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x443b` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x443c` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x443d` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x443e` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x443f` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4440` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4441` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4442` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4443` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4444` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4445` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4446` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4447` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4449` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x444b` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x444c` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x444d` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x444e` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x444f` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4450` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4451` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4452` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4453` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4454` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4455` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4456` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4457` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4458` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4459` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x445a` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x445b` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x445c` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x445d` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x445e` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4469` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x446a` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x446b` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x446c` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x446d` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x446e` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x446f` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4470` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4471` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4472` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4473` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4474` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4475` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4476` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4477` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4478` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4479` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x447a` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x447b` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x447c` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x447d` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x447e` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x447f` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4480` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4481` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4482` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4487` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4488` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4489` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x448a` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x448b` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x448c` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x448d` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x448e` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x448f` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4490` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4491` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4492` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4493` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4494` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4495` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4496` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4497` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4498` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4499` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x449a` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x449b` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x449c` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x449d` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x449e` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x449f` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44a0` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44af` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44b0` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44b1` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44b2` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44b3` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44b4` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44b5` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44b6` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44b7` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44b8` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44b9` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44ba` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44bb` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44bc` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44bd` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44be` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44bf` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44c0` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44c1` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44c2` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44c3` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44c4` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44c5` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44c6` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44c7` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44c8` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44c9` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44ca` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44cb` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44cc` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44cd` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44ce` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44cf` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44d0` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44d1` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44d2` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44d3` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44d4` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44d5` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44d6` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44f5` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44f6` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44f7` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44f8` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44f9` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44fa` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44fb` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44fc` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44fd` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44fe` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x44ff` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4500` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4501` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4502` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4503` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4504` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4505` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4506` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4507` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4508` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4509` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x450a` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x450b` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x450c` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x450d` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x450e` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x450f` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4510` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4511` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4512` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4513` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4514` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4515` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4516` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4517` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4518` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4519` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x451a` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x451b` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x451c` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x451d` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x451e` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x451f` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4520` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4521` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4522` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4523` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4524` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4525` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4526` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4527` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4528` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4529` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x452a` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x452b` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x452c` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x452d` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x452e` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x452f` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4530` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4531` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4532` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4533` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4534` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4535` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4536` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4537` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4538` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x4539` | — | med | auto-shape | string-table (written by CTINIT) | +| `0x453c` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4541` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4542` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4544` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4545` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4546` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4547` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4548` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x454a` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x454b` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x454d` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x454e` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x454f` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4550` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4553` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4554` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4556` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4557` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4559` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x455a` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x455c` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x455f` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4560` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4562` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4565` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4566` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x456b` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x456c` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x456e` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4571` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4572` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4574` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4575` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4577` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4578` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x457a` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x457b` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x457d` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x457e` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4580` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4581` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4583` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4584` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4586` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4589` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x458a` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x458c` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x458d` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x458f` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4590` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4595` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4596` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4597` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x4598` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x459b` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x459c` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x459d` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x459e` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x459f` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x45a1` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x45a2` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x45a4` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x45a5` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x45a7` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x45a8` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x45aa` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x45ab` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x45ad` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x45ae` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x45b0` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x45b3` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x45b4` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x45b6` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x45b7` | — | med | auto-shape | string-table (written by TRINIT) | +| `0x45ba` | — | med | auto-shape | string-table (written by MAINIT) | +| `0x45bb` | — | med | auto-shape | string-table (written by MAINIT) | +| `0x45bc` | — | med | auto-shape | string-table (written by MAINIT) | +| `0x45bd` | — | med | auto-shape | string-table (written by MAINIT) | +| `0x45be` | — | med | auto-shape | string-table (written by MAINIT) | +| `0x45bf` | — | med | auto-shape | string-table (written by MAINIT) | +| `0x45c0` | — | med | auto-shape | string-table (written by MAINIT) | +| `0x45c1` | — | med | auto-shape | string-table (written by MAINIT) | +| `0x45c2` | — | med | auto-shape | string-table (written by MAINIT) | +| `0x45c3` | — | med | auto-shape | string-table (written by MAINIT) | +| `0x45c4` | — | med | auto-shape | string-table (written by MAINIT) | +| `0x45d8` | — | med | auto-shape | string-table (written by CIINIT) | +| `0x45d9` | — | med | auto-shape | string-table (written by CIINIT) | +| `0x45da` | — | med | auto-shape | string-table (written by CIINIT) | +| `0x45db` | — | med | auto-shape | string-table (written by CIINIT) | +| `0x45dc` | — | med | auto-shape | string-table (written by CIINIT) | +| `0x45dd` | — | med | auto-shape | string-table (written by CIINIT) | +| `0x45de` | — | med | auto-shape | string-table (written by CIINIT) | +| `0x45df` | — | med | auto-shape | string-table (written by CIINIT) | +| `0x45e0` | — | med | auto-shape | string-table (written by CIINIT) | +| `0x45e1` | — | med | auto-shape | string-table (written by CIINIT) | +| `0x45e2` | — | med | auto-shape | string-table (written by CIINIT) | +| `0x45e3` | — | med | auto-shape | string-table (written by CIINIT) | +| `0x45e4` | — | med | auto-shape | string-table (written by CIINIT) | +| `0x45e5` | — | med | auto-shape | string-table (written by CIINIT) | +| `0x45e6` | — | med | auto-shape | string-table (written by CIINIT) | +| `0x45e7` | — | med | auto-shape | string-table (written by CIINIT) | +| `0x45e8` | — | med | auto-shape | string-table (written by CIINIT) | +| `0x45e9` | — | med | auto-shape | string-table (written by CIINIT) | +| `0x45ea` | — | med | auto-shape | string-table (written by CIINIT) | +| `0x45eb` | — | med | auto-shape | string-table (written by CIINIT) | +| `0x45ec` | — | med | auto-shape | string-table (written by CIINIT) | +| `0x45ed` | — | med | auto-shape | string-table (written by CIINIT) | +| `0x45ee` | — | med | auto-shape | string-table (written by CIINIT) | +| `0x45ef` | — | med | auto-shape | string-table (written by CIINIT) | +| `0x463c` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x463d` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x463e` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x463f` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x4640` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x4641` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x4642` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x4643` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x4644` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x4645` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x4646` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x4647` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x4648` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x4649` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x464a` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x464b` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x464c` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x464d` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x464e` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x464f` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x4650` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x4651` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x4652` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x4653` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x4654` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x4655` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x4656` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x4657` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x4658` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x4659` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x465a` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x465b` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x465c` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x465d` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x465e` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x465f` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x466d` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x466e` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x466f` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x4670` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x4671` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x4672` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x4673` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x4681` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x4682` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x4683` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x4684` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x4685` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x4686` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x4687` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x4688` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x469f` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x46a0` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x46a1` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x46a2` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x46a3` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x46a4` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x46a5` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x46a6` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x46a7` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x46a8` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x46a9` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x46aa` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x46ab` | — | med | auto-shape | string-table (written by VIINIT) | +| `0x46b3` | — | med | auto-shape | string-table (written by VIINIT) | + +## ui-toggle + +| address | name | conf | source | usage | +|---|---|---|---|---| +| `0x6be` | — | low | inference | ADV message-window / text-render state in the 0x6bx-0x6cx chrome cluster (passed to render helpers u0041F9C0/u00415F70 alongside 0x6c3). NOT a story flag — high scene-reach is from the shared render chrome. Branch-read in 146 scenes. | +| `0x6c1` | adv_chrome_enabled | high | investigation | Inherited SYSTEM4 UI-boot flag. Standard ADV scripts register the five visible SO001 control-strip pointer rectangles only while nonzero; zero skips directly to the three off-screen keyboard/pad records. The Phase-A single-scene Godot bootstrap seeds the native observed value 1. | +| `0x6c3` | — | low | inference | ADV message-window / text-render state in the 0x6bx-0x6cx chrome cluster (`mov 0x6c3,` then `u00415F70(0x6c3)` right after draw-texture; paired with 0x6be). NOT a story flag. Branch-read in 136 scenes. | +| `0x6c9` | adv_hover_history | high | investigation | Pointer-hover flag for the standard ADV History button at (684,572). Its op 0x90 enter/leave callbacks set 1/0; the shared SO001 redraw shows the History tooltip plus generic hover overlay while set. | +| `0x6ca` | adv_hover_auto_message | high | investigation | Pointer-hover flag for the standard ADV Auto-message button at (706,572). See adv_hover_history. | +| `0x6cb` | adv_hover_message_skip | high | investigation | Pointer-hover flag for the standard ADV all-message Skip button at (728,572). See adv_hover_history. | +| `0x6cc` | adv_hover_read_message_skip | high | investigation | Pointer-hover flag for the standard ADV read-message-only Skip button at (750,572). See adv_hover_history. | +| `0x6cd` | adv_hover_hide_window | high | investigation | Pointer-hover flag for the standard ADV Hide-window button at (772,572). See adv_hover_history. | +| `0x62425` | adv_hide_window_enabled | high | investigation | Native ADV-scheduler permission for the standard Hide Window action. After op 0x199 enters the registered yield-A handler, every standard ADV scene calls HIDEWIN.BIN only while this value is nonzero. No script writes it and the complete boot-to-SC0000 VM-write capture does not contain it, so it is native-owned inherited state rather than saved-game or script boot data. The Godot scene bootstrap mirrors the original enabled value 1. | +| `0x15a096` | information_message_handled | high | investigation | INFOMES clears this before walking handler rows and stops when it becomes one. CIMES, EIMES, and VIMES set it after rendering a matching character, enemy, or glossary message, implementing a first-handler-wins extension chain. | + +## unknown + +| address | name | conf | source | usage | +|---|---|---|---|---| +| `0x3238` | — | low | inference | Config/settings global (CONFIG.BIN/INITCONFIG.BIN writer, scene-reach 0) — NOT a scene story flag; miner over-tagged it. Branch-read in 5 scripts; compared against [1]. | +| `0x3301` | — | low | inference | Config/settings global (INITCONFIG.BIN writer, scene-reach 0) — NOT a scene story flag; miner over-tagged it. Branch-read in 6 scripts; compared against [1, 2]. | +| `0x3303` | — | low | inference | Config/settings global (CONFIG.BIN/INITCONFIG.BIN writer, scene-reach 0) — NOT a scene story flag; miner over-tagged it. Branch-read in 8 scripts; compared against [1]. | +| `0x3304` | — | low | inference | Config/settings global (CONFIG.BIN/INITCONFIG.BIN writer, scene-reach 0) — NOT a scene story flag; miner over-tagged it. Branch-read in 13 scripts; compared against [1]. | +| `0x6249e` | — | low | inference | Graphics-subsystem state in the 0x624xx gfx-object range (set via `mov 0x6249e,` alongside `mov 0x62450,`). Likely a draw/slot parameter, NOT a story flag. Branch-read in 78 scenes. | +| `0xab8e7` | class_change_selected_level | high | investigation | CALCCC clears this accumulator before invoking the class-change rule scripts. Each eligible CCINIT rule replaces it only when its threshold is higher than the current selection; nonzero then signals CALCCC and ADDEXP to apply and report the chosen promotion. | +| `0xab8e8` | class_change_deployment_cost_delta | high | investigation | Shared class-change output initialized by CALCCC and incremented by the selected CCINIT rule. CALCCC adds it to unit_deployment_cost_adjustments and ADDEXP reports the signed cost change. | +| `0xab8e9` | class_change_stat_bonuses | high | investigation | Fourteen-cell class-change accumulator using the unit stat column order. CALCCC zeroes it, CCINIT adds the selected rule's bonuses, and CALCCC adds the result to unit_current_stats with per-column caps. EVOLVE separately clears it and calls CCINIT to preview the next Lily form's movement bonus. Columns: 0=accuracy, 1=evasion, 2=physical_attack, 3=physical_defense, 4=magic_attack, 5=magic_defense, 6=speed, 7=luck, 8=critical_chance, 9=capture_power, 10=movement, 11=max_hp, 12=max_sp, 13=max_fs. | +| `0xab8f7` | class_change_skill_awards | high | investigation | Four-cell class-change skill output. CALCCC zeroes the buffer, CCINIT writes awarded skill ids, and CALCCC copies positive values from the first three cells into unit_skill_ids before ADDEXP reports the changes. Columns: 0=skill_slot_1, 1=skill_slot_2, 2=skill_slot_3, 3=skill_slot_4. | +| `0xab8fb` | class_change_state_work | high | investigation | Ten-cell working copy of the current unit's unit_class_change_state row. CCINIT sets the slot belonging to an awarded rule; CALCCC manages the block copy between this buffer and persistent per-unit state. Columns: 0=promotion_slot_1, 1=promotion_slot_2, 2=promotion_slot_3, 3=promotion_slot_4, 4=promotion_slot_5, 5=promotion_slot_6, 6=promotion_slot_7, 7=promotion_slot_8, 8=promotion_slot_9, 9=promotion_slot_10. | +| `0x152618` | battle_outcome_flags | high | investigation | BTL derives the low three bits from the acting and target entities' post-exchange HP. Mask 4 selects the nonlethal experience table; otherwise BTL uses the defeat table. FIELD consumes and combines the result during post-battle flow, then passes it to SCJUMP, whose former progress-C comparisons are battle-outcome decisions. | +| `0x15261c` | battle_hit_result | high | investigation | CALCDMG initializes this to miss, changes it to hit after the accuracy gate, and then to critical after the critical-chance gate. BTL uses the same result to choose presentation, cut-ins, and critical voice columns; -1 is written only by a synthetic pre-battle path. | +| `0x15261d` | battle_hp_delta | high | investigation | CALCDMG's signed HP result. BTL subtracts it from the target's current HP, so positive values deal damage and negative values heal; zero and result state gate damage reactions and defeat handling. | +| `0x15261e` | battle_actor_hp_recovery | high | investigation | CALCDMG's actor-side HP recovery output. Absorb (SKINIT skill 40) contributes half of positive battle_hp_delta with a minimum of one, and the target's HP-absorption condition can add its level-scaled amount capped at the damage dealt. BTL adds the result to the actor's current HP, renders the green recovery number, and clamps the resource through the ordinary post-battle path. | +| `0x84a` | — | high | auto-shape | unit-name-table | +| `0xc32` | — | high | auto-shape | unit-desc-table | +| `0x101a` | — | high | auto-shape | unit-desc1-table | +| `0x14ca` | — | high | auto-shape | unit-desc2-table | +| `0x14cb` | — | high | auto-shape | unit-desc3-table | +| `0x1bd2` | — | high | auto-shape | item-name-table | +| `0x1fba` | — | high | auto-shape | item-desc-table | +| `0x23a2` | — | high | auto-shape | skill-name-table | +| `0x24ce` | — | high | auto-shape | skill-desc-table | +| `0x32f0` | — | med | auto-shape | current-entity-index? | +| `0x3ebe` | — | med | auto-shape | record-table[stride 10] | +| `0x7e54` | — | med | auto-shape | record-table[stride 50] | +| `0x4e3d7` | — | med | auto-shape | record-table[stride 14] | +| `0x53a2b` | — | med | auto-shape | record-table[stride 20] | +| `0x53ef5` | — | low | auto-shape | index/counter? | +| `0x53ef7` | — | med | auto-shape | record-table[stride 8] | +| `0x57356` | — | med | auto-shape | current-entity-index? | +| `0x62436` | — | low | auto-shape | index/counter? | +| `0x62ccb` | — | low | auto-shape | index/counter? | +| `0x81c96` | — | med | auto-shape | record-table[stride 3] | +| `0x8284e` | — | med | auto-shape | record-table[stride 3] | +| `0xcc9f0` | — | low | auto-shape | index/counter? | +| `0xccbdc` | — | med | auto-shape | record-table[stride 14] | +| `0xccc33` | — | med | auto-shape | record-table[stride 3] | +| `0xe6c5e` | — | med | auto-shape | obinit-field | +| `0xe6cc2` | — | med | auto-shape | obinit-field | +| `0xe6d26` | — | med | auto-shape | obinit-field | +| `0xe6d8a` | — | med | auto-shape | obinit-field | +| `0xe6e52` | — | low | auto-shape | obinit-field? | +| `0xe6eb6` | — | med | auto-shape | obinit-field | +| `0xe6f1a` | — | low | auto-shape | obinit-field? | +| `0xe6f7e` | — | low | auto-shape | obinit-field? | +| `0xe6fe2` | — | med | auto-shape | record-table[stride 3] | +| `0xe710e` | — | low | auto-shape | obinit-field? | +| `0xe7172` | — | low | auto-shape | obinit-field? | +| `0xe71d6` | — | med | auto-shape | record-table[stride 3] | +| `0x1519fa` | — | med | auto-shape | cdinit2-field | +| `0x151a7a` | — | low | auto-shape | cdinit2-field? | +| `0x151a7c` | — | low | auto-shape | cdinit2-field? | +| `0x151a7d` | — | low | auto-shape | cdinit2-field? | +| `0x151a7e` | — | low | auto-shape | cdinit2-field? | +| `0x151a7f` | — | low | auto-shape | cdinit2-field? | +| `0x151a80` | — | low | auto-shape | cdinit2-field? | +| `0x151a81` | — | low | auto-shape | cdinit2-field? | +| `0x151a82` | — | low | auto-shape | cdinit2-field? | +| `0x151a83` | — | low | auto-shape | cdinit2-field? | +| `0x151a84` | — | low | auto-shape | cdinit2-field? | +| `0x151a85` | — | low | auto-shape | cdinit2-field? | +| `0x151a86` | — | low | auto-shape | cdinit2-field? | +| `0x151a87` | — | low | auto-shape | cdinit2-field? | +| `0x151a88` | — | low | auto-shape | cdinit2-field? | +| `0x151a89` | — | low | auto-shape | cdinit2-field? | +| `0x151a8a` | — | low | auto-shape | cdinit2-field? | +| `0x151a8b` | — | low | auto-shape | cdinit2-field? | +| `0x151a8c` | — | low | auto-shape | cdinit2-field? | +| `0x151a8d` | — | low | auto-shape | cdinit2-field? | +| `0x151a8e` | — | low | auto-shape | cdinit2-field? | +| `0x151a8f` | — | low | auto-shape | cdinit2-field? | +| `0x151a90` | — | low | auto-shape | cdinit2-field? | +| `0x151a91` | — | low | auto-shape | cdinit2-field? | +| `0x151a92` | — | low | auto-shape | cdinit2-field? | +| `0x151a94` | — | low | auto-shape | cdinit2-field? | +| `0x151a95` | — | low | auto-shape | cdinit2-field? | +| `0x151a96` | — | low | auto-shape | cdinit2-field? | +| `0x151a97` | — | low | auto-shape | cdinit2-field? | +| `0x151a98` | — | low | auto-shape | cdinit2-field? | +| `0x151a99` | — | low | auto-shape | cdinit2-field? | +| `0x151a9a` | — | low | auto-shape | cdinit2-field? | +| `0x151a9b` | — | low | auto-shape | cdinit2-field? | +| `0x151a9c` | — | low | auto-shape | cdinit2-field? | +| `0x151a9d` | — | low | auto-shape | cdinit2-field? | +| `0x151a9e` | — | low | auto-shape | cdinit2-field? | +| `0x151a9f` | — | low | auto-shape | cdinit2-field? | +| `0x151aa0` | — | low | auto-shape | cdinit2-field? | +| `0x151aa1` | — | low | auto-shape | cdinit2-field? | +| `0x151aa2` | — | low | auto-shape | cdinit2-field? | +| `0x151aa3` | — | low | auto-shape | cdinit2-field? | +| `0x151aa4` | — | low | auto-shape | cdinit2-field? | +| `0x151aa5` | — | low | auto-shape | cdinit2-field? | +| `0x151aa6` | — | low | auto-shape | cdinit2-field? | +| `0x151aa7` | — | low | auto-shape | cdinit2-field? | +| `0x151aa8` | — | low | auto-shape | cdinit2-field? | +| `0x151aa9` | — | low | auto-shape | cdinit2-field? | +| `0x151aaa` | — | low | auto-shape | cdinit2-field? | +| `0x151aac` | — | low | auto-shape | cdinit2-field? | +| `0x151aad` | — | low | auto-shape | cdinit2-field? | +| `0x151aae` | — | low | auto-shape | cdinit2-field? | +| `0x151aaf` | — | low | auto-shape | cdinit2-field? | +| `0x151ab0` | — | low | auto-shape | cdinit2-field? | +| `0x151ab1` | — | low | auto-shape | cdinit2-field? | +| `0x151ab2` | — | low | auto-shape | cdinit2-field? | +| `0x151ab3` | — | low | auto-shape | cdinit2-field? | +| `0x151ab4` | — | low | auto-shape | cdinit2-field? | +| `0x151ab5` | — | low | auto-shape | cdinit2-field? | +| `0x151ab6` | — | low | auto-shape | cdinit2-field? | +| `0x151ab7` | — | low | auto-shape | cdinit2-field? | +| `0x151ab8` | — | low | auto-shape | cdinit2-field? | +| `0x151ab9` | — | low | auto-shape | cdinit2-field? | +| `0x151aba` | — | low | auto-shape | cdinit2-field? | +| `0x151abb` | — | low | auto-shape | cdinit2-field? | +| `0x151abc` | — | low | auto-shape | cdinit2-field? | +| `0x151abd` | — | low | auto-shape | cdinit2-field? | +| `0x151abe` | — | low | auto-shape | cdinit2-field? | +| `0x151abf` | — | low | auto-shape | cdinit2-field? | +| `0x151ac0` | — | low | auto-shape | cdinit2-field? | +| `0x151ac1` | — | low | auto-shape | cdinit2-field? | +| `0x151ba6` | — | low | auto-shape | cdinit2-field? | +| `0x151ba8` | — | low | auto-shape | cdinit2-field? | +| `0x151baa` | — | low | auto-shape | cdinit2-field? | +| `0x151bac` | — | low | auto-shape | cdinit2-field? | +| `0x151bae` | — | low | auto-shape | cdinit2-field? | +| `0x151bb0` | — | low | auto-shape | cdinit2-field? | +| `0x151bb2` | — | low | auto-shape | cdinit2-field? | +| `0x151bb4` | — | low | auto-shape | cdinit2-field? | +| `0x151bb6` | — | low | auto-shape | cdinit2-field? | +| `0x151bb8` | — | low | auto-shape | cdinit2-field? | +| `0x151bba` | — | low | auto-shape | cdinit2-field? | +| `0x151bbe` | — | low | auto-shape | cdinit2-field? | +| `0x151bc0` | — | low | auto-shape | cdinit2-field? | +| `0x151bc2` | — | low | auto-shape | cdinit2-field? | +| `0x151bc4` | — | low | auto-shape | cdinit2-field? | +| `0x151bc6` | — | low | auto-shape | cdinit2-field? | +| `0x151bc8` | — | low | auto-shape | cdinit2-field? | +| `0x151bca` | — | low | auto-shape | cdinit2-field? | +| `0x151bcc` | — | low | auto-shape | cdinit2-field? | +| `0x151bce` | — | low | auto-shape | cdinit2-field? | +| `0x151bd0` | — | low | auto-shape | cdinit2-field? | +| `0x151bd2` | — | low | auto-shape | cdinit2-field? | +| `0x151bd6` | — | low | auto-shape | cdinit2-field? | +| `0x151bd8` | — | low | auto-shape | cdinit2-field? | +| `0x151bda` | — | low | auto-shape | cdinit2-field? | +| `0x151bdc` | — | low | auto-shape | cdinit2-field? | +| `0x151bde` | — | low | auto-shape | cdinit2-field? | +| `0x151be0` | — | low | auto-shape | cdinit2-field? | +| `0x151be2` | — | low | auto-shape | cdinit2-field? | +| `0x151be4` | — | low | auto-shape | cdinit2-field? | +| `0x151be6` | — | low | auto-shape | cdinit2-field? | +| `0x151be8` | — | low | auto-shape | cdinit2-field? | +| `0x151bea` | — | low | auto-shape | cdinit2-field? | +| `0x151cb6` | — | low | auto-shape | cdinit2-field? | +| `0x151d1a` | — | low | auto-shape | cdinit2-field? | +| `0x151d7e` | — | low | auto-shape | cdinit2-field? | +| `0x151de6` | — | low | auto-shape | cdinit2-field? | +| `0x151de7` | — | low | auto-shape | cdinit2-field? | +| `0x151de8` | — | low | auto-shape | cdinit2-field? | +| `0x151de9` | — | low | auto-shape | cdinit2-field? | +| `0x151dea` | — | low | auto-shape | cdinit2-field? | +| `0x151f12` | — | low | auto-shape | cdinit2-field? | +| `0x151f13` | — | low | auto-shape | cdinit2-field? | +| `0x151f14` | — | low | auto-shape | cdinit2-field? | +| `0x151f15` | — | low | auto-shape | cdinit2-field? | +| `0x151f16` | — | low | auto-shape | cdinit2-field? | +| `0x15203a` | — | low | auto-shape | cdinit2-field? | +| `0x15209e` | — | low | auto-shape | cdinit2-field? | +| `0x152166` | — | low | auto-shape | cdinit2-field? | +| `0x152167` | — | low | auto-shape | cdinit2-field? | +| `0x152168` | — | low | auto-shape | cdinit2-field? | +| `0x152169` | — | low | auto-shape | cdinit2-field? | +| `0x15216a` | — | low | auto-shape | cdinit2-field? | +| `0x152171` | — | low | auto-shape | cdinit2-field? | +| `0x152174` | — | low | auto-shape | cdinit2-field? | +| `0x152292` | — | low | auto-shape | cdinit2-field? | +| `0x152293` | — | low | auto-shape | cdinit2-field? | +| `0x152294` | — | low | auto-shape | cdinit2-field? | +| `0x152295` | — | low | auto-shape | cdinit2-field? | +| `0x152296` | — | low | auto-shape | cdinit2-field? | +| `0x15229d` | — | low | auto-shape | cdinit2-field? | +| `0x1522a0` | — | low | auto-shape | cdinit2-field? | +| `0x15235a` | — | low | auto-shape | cdinit2-field? | +| `0x1523be` | — | low | auto-shape | cdinit2-field? | +| `0x152422` | — | med | auto-shape | cdinit2-field | +| `0x152878` | — | low | auto-shape | index/counter? | +| `0x15288b` | — | low | auto-shape | index/counter? | +| `0x152894` | — | low | auto-shape | btaninit2-field? | +| `0x152895` | — | low | auto-shape | btaninit2-field? | +| `0x152896` | — | low | auto-shape | btaninit2-field? | +| `0x152897` | — | low | auto-shape | btaninit2-field? | +| `0x152899` | — | low | auto-shape | btaninit2-field? | +| `0x15289a` | — | low | auto-shape | btaninit2-field? | +| `0x15289b` | — | low | auto-shape | btaninit2-field? | +| `0x15289c` | — | low | auto-shape | btaninit2-field? | +| `0x15289d` | — | low | auto-shape | btaninit2-field? | +| `0x15289f` | — | low | auto-shape | btaninit2-field? | +| `0x1528a0` | — | low | auto-shape | btaninit2-field? | +| `0x1528a1` | — | low | auto-shape | btaninit2-field? | +| `0x1528a2` | — | low | auto-shape | btaninit2-field? | +| `0x1528a3` | — | low | auto-shape | btaninit2-field? | +| `0x1528a5` | — | low | auto-shape | btaninit2-field? | +| `0x1528a6` | — | low | auto-shape | btaninit2-field? | +| `0x1528a7` | — | low | auto-shape | btaninit2-field? | +| `0x1528a8` | — | low | auto-shape | btaninit2-field? | +| `0x1528a9` | — | low | auto-shape | btaninit2-field? | +| `0x1528ab` | — | low | auto-shape | btaninit2-field? | +| `0x1528ac` | — | low | auto-shape | btaninit2-field? | +| `0x1528ad` | — | low | auto-shape | btaninit2-field? | +| `0x1528ae` | — | low | auto-shape | btaninit2-field? | +| `0x1528af` | — | low | auto-shape | btaninit2-field? | +| `0x1528b1` | — | low | auto-shape | btaninit2-field? | +| `0x1528b2` | — | low | auto-shape | btaninit2-field? | +| `0x1528b3` | — | low | auto-shape | btaninit2-field? | +| `0x1528b4` | — | low | auto-shape | btaninit2-field? | +| `0x1528b5` | — | low | auto-shape | btaninit2-field? | +| `0x1528b7` | — | low | auto-shape | btaninit2-field? | +| `0x1528b8` | — | low | auto-shape | btaninit2-field? | +| `0x1528b9` | — | low | auto-shape | btaninit2-field? | +| `0x1528ba` | — | low | auto-shape | btaninit2-field? | +| `0x1528bb` | — | low | auto-shape | btaninit2-field? | +| `0x1528bd` | — | low | auto-shape | btaninit2-field? | +| `0x1528be` | — | low | auto-shape | btaninit2-field? | +| `0x1528bf` | — | low | auto-shape | btaninit2-field? | +| `0x1528c0` | — | low | auto-shape | btaninit2-field? | +| `0x1528c1` | — | low | auto-shape | btaninit2-field? | +| `0x1528c3` | — | low | auto-shape | btaninit2-field? | +| `0x1528c4` | — | low | auto-shape | btaninit2-field? | +| `0x1528c5` | — | low | auto-shape | btaninit2-field? | +| `0x1528c6` | — | low | auto-shape | btaninit2-field? | +| `0x1528c7` | — | low | auto-shape | btaninit2-field? | +| `0x1528c9` | — | low | auto-shape | btaninit2-field? | +| `0x1528ca` | — | low | auto-shape | btaninit2-field? | +| `0x1528cb` | — | low | auto-shape | btaninit2-field? | +| `0x1528cc` | — | low | auto-shape | btaninit2-field? | +| `0x1528cd` | — | low | auto-shape | btaninit2-field? | +| `0x1528cf` | — | low | auto-shape | btaninit2-field? | +| `0x1528d0` | — | low | auto-shape | btaninit2-field? | +| `0x1528d1` | — | low | auto-shape | btaninit2-field? | +| `0x1528d2` | — | low | auto-shape | btaninit2-field? | +| `0x1528d3` | — | low | auto-shape | btaninit2-field? | +| `0x1528d5` | — | low | auto-shape | btaninit2-field? | +| `0x1528d6` | — | low | auto-shape | btaninit2-field? | +| `0x1528d7` | — | low | auto-shape | btaninit2-field? | +| `0x1528d8` | — | low | auto-shape | btaninit2-field? | +| `0x1528d9` | — | low | auto-shape | btaninit2-field? | +| `0x1528db` | — | low | auto-shape | btaninit2-field? | +| `0x1528dc` | — | low | auto-shape | btaninit2-field? | +| `0x1528dd` | — | low | auto-shape | btaninit2-field? | +| `0x1528de` | — | low | auto-shape | btaninit2-field? | +| `0x1528df` | — | low | auto-shape | btaninit2-field? | +| `0x1528e1` | — | low | auto-shape | btaninit2-field? | +| `0x1528e2` | — | low | auto-shape | btaninit2-field? | +| `0x1528e3` | — | low | auto-shape | btaninit2-field? | +| `0x1528e4` | — | low | auto-shape | btaninit2-field? | +| `0x1528e5` | — | low | auto-shape | btaninit2-field? | +| `0x1528e7` | — | low | auto-shape | btaninit2-field? | +| `0x1528e8` | — | low | auto-shape | btaninit2-field? | +| `0x1528e9` | — | low | auto-shape | btaninit2-field? | +| `0x1528ea` | — | low | auto-shape | btaninit2-field? | +| `0x1528eb` | — | low | auto-shape | btaninit2-field? | +| `0x1528ed` | — | low | auto-shape | btaninit2-field? | +| `0x1528ee` | — | low | auto-shape | btaninit2-field? | +| `0x1528ef` | — | low | auto-shape | btaninit2-field? | +| `0x1528f0` | — | low | auto-shape | btaninit2-field? | +| `0x1528f1` | — | low | auto-shape | btaninit2-field? | +| `0x1528f3` | — | low | auto-shape | btaninit2-field? | +| `0x1528f4` | — | low | auto-shape | btaninit2-field? | +| `0x1528f5` | — | low | auto-shape | btaninit2-field? | +| `0x1528f6` | — | low | auto-shape | btaninit2-field? | +| `0x1528f7` | — | low | auto-shape | btaninit2-field? | +| `0x1528f9` | — | low | auto-shape | btaninit2-field? | +| `0x1528fa` | — | low | auto-shape | btaninit2-field? | +| `0x1528fb` | — | low | auto-shape | btaninit2-field? | +| `0x1528fc` | — | low | auto-shape | btaninit2-field? | +| `0x1528fd` | — | low | auto-shape | btaninit2-field? | +| `0x1528ff` | — | low | auto-shape | btaninit2-field? | +| `0x152900` | — | low | auto-shape | btaninit2-field? | +| `0x152901` | — | low | auto-shape | btaninit2-field? | +| `0x152902` | — | low | auto-shape | btaninit2-field? | +| `0x152903` | — | low | auto-shape | btaninit2-field? | +| `0x152905` | — | low | auto-shape | btaninit2-field? | +| `0x152906` | — | low | auto-shape | btaninit2-field? | +| `0x152907` | — | low | auto-shape | btaninit2-field? | +| `0x152908` | — | low | auto-shape | btaninit2-field? | +| `0x152909` | — | low | auto-shape | btaninit2-field? | +| `0x15290b` | — | low | auto-shape | btaninit2-field? | +| `0x15290c` | — | low | auto-shape | btaninit2-field? | +| `0x15290d` | — | low | auto-shape | btaninit2-field? | +| `0x15290e` | — | low | auto-shape | btaninit2-field? | +| `0x15290f` | — | low | auto-shape | btaninit2-field? | +| `0x152911` | — | low | auto-shape | btaninit2-field? | +| `0x152aec` | — | low | auto-shape | btaninit2-field? | +| `0x152aed` | — | low | auto-shape | btaninit2-field? | +| `0x152aee` | — | low | auto-shape | btaninit2-field? | +| `0x152aef` | — | low | auto-shape | btaninit2-field? | +| `0x152af1` | — | low | auto-shape | btaninit2-field? | +| `0x152af2` | — | low | auto-shape | btaninit2-field? | +| `0x152af3` | — | low | auto-shape | btaninit2-field? | +| `0x152af4` | — | low | auto-shape | btaninit2-field? | +| `0x152af6` | — | low | auto-shape | btaninit2-field? | +| `0x152af7` | — | low | auto-shape | btaninit2-field? | +| `0x152af8` | — | low | auto-shape | btaninit2-field? | +| `0x152af9` | — | low | auto-shape | btaninit2-field? | +| `0x152afb` | — | low | auto-shape | btaninit2-field? | +| `0x152afc` | — | low | auto-shape | btaninit2-field? | +| `0x152afd` | — | low | auto-shape | btaninit2-field? | +| `0x152afe` | — | low | auto-shape | btaninit2-field? | +| `0x152b00` | — | low | auto-shape | btaninit2-field? | +| `0x152b01` | — | low | auto-shape | btaninit2-field? | +| `0x152b02` | — | low | auto-shape | btaninit2-field? | +| `0x152b03` | — | low | auto-shape | btaninit2-field? | +| `0x152b05` | — | low | auto-shape | btaninit2-field? | +| `0x152b06` | — | low | auto-shape | btaninit2-field? | +| `0x152b07` | — | low | auto-shape | btaninit2-field? | +| `0x152b08` | — | low | auto-shape | btaninit2-field? | +| `0x152b0a` | — | low | auto-shape | btaninit2-field? | +| `0x152b0b` | — | low | auto-shape | btaninit2-field? | +| `0x152b0c` | — | low | auto-shape | btaninit2-field? | +| `0x152b0d` | — | low | auto-shape | btaninit2-field? | +| `0x152b0f` | — | low | auto-shape | btaninit2-field? | +| `0x152b10` | — | low | auto-shape | btaninit2-field? | +| `0x152b11` | — | low | auto-shape | btaninit2-field? | +| `0x152b12` | — | low | auto-shape | btaninit2-field? | +| `0x152b14` | — | low | auto-shape | btaninit2-field? | +| `0x152b15` | — | low | auto-shape | btaninit2-field? | +| `0x152b16` | — | low | auto-shape | btaninit2-field? | +| `0x152b17` | — | low | auto-shape | btaninit2-field? | +| `0x152b19` | — | low | auto-shape | btaninit2-field? | +| `0x152b1a` | — | low | auto-shape | btaninit2-field? | +| `0x152b1b` | — | low | auto-shape | btaninit2-field? | +| `0x152b1c` | — | low | auto-shape | btaninit2-field? | +| `0x152b1e` | — | low | auto-shape | btaninit2-field? | +| `0x152b1f` | — | low | auto-shape | btaninit2-field? | +| `0x152b20` | — | low | auto-shape | btaninit2-field? | +| `0x152b21` | — | low | auto-shape | btaninit2-field? | +| `0x152b23` | — | low | auto-shape | btaninit2-field? | +| `0x152b24` | — | low | auto-shape | btaninit2-field? | +| `0x152b25` | — | low | auto-shape | btaninit2-field? | +| `0x152b26` | — | low | auto-shape | btaninit2-field? | +| `0x152b28` | — | low | auto-shape | btaninit2-field? | +| `0x152b29` | — | low | auto-shape | btaninit2-field? | +| `0x152b2a` | — | low | auto-shape | btaninit2-field? | +| `0x152b2b` | — | low | auto-shape | btaninit2-field? | +| `0x152b2d` | — | low | auto-shape | btaninit2-field? | +| `0x152b2e` | — | low | auto-shape | btaninit2-field? | +| `0x152b2f` | — | low | auto-shape | btaninit2-field? | +| `0x152b30` | — | low | auto-shape | btaninit2-field? | +| `0x152b32` | — | low | auto-shape | btaninit2-field? | +| `0x152b33` | — | low | auto-shape | btaninit2-field? | +| `0x152b34` | — | low | auto-shape | btaninit2-field? | +| `0x152b35` | — | low | auto-shape | btaninit2-field? | +| `0x152b37` | — | low | auto-shape | btaninit2-field? | +| `0x152b38` | — | low | auto-shape | btaninit2-field? | +| `0x152b39` | — | low | auto-shape | btaninit2-field? | +| `0x152b3a` | — | low | auto-shape | btaninit2-field? | +| `0x152b3c` | — | low | auto-shape | btaninit2-field? | +| `0x152b3d` | — | low | auto-shape | btaninit2-field? | +| `0x152b3e` | — | low | auto-shape | btaninit2-field? | +| `0x152b3f` | — | low | auto-shape | btaninit2-field? | +| `0x152b41` | — | low | auto-shape | btaninit2-field? | +| `0x152b42` | — | low | auto-shape | btaninit2-field? | +| `0x152b43` | — | low | auto-shape | btaninit2-field? | +| `0x152b44` | — | low | auto-shape | btaninit2-field? | +| `0x152b46` | — | low | auto-shape | btaninit2-field? | +| `0x152b47` | — | low | auto-shape | btaninit2-field? | +| `0x152b48` | — | low | auto-shape | btaninit2-field? | +| `0x152b49` | — | low | auto-shape | btaninit2-field? | +| `0x152b4b` | — | low | auto-shape | btaninit2-field? | +| `0x152b4c` | — | low | auto-shape | btaninit2-field? | +| `0x152b4d` | — | low | auto-shape | btaninit2-field? | +| `0x152b4e` | — | low | auto-shape | btaninit2-field? | +| `0x152b50` | — | low | auto-shape | btaninit2-field? | +| `0x152b51` | — | low | auto-shape | btaninit2-field? | +| `0x152b52` | — | low | auto-shape | btaninit2-field? | +| `0x152b53` | — | low | auto-shape | btaninit2-field? | +| `0x152b55` | — | low | auto-shape | btaninit2-field? | +| `0x152b56` | — | low | auto-shape | btaninit2-field? | +| `0x152b57` | — | low | auto-shape | btaninit2-field? | +| `0x152b58` | — | low | auto-shape | btaninit2-field? | +| `0x152b5a` | — | low | auto-shape | btaninit2-field? | +| `0x152b5b` | — | low | auto-shape | btaninit2-field? | +| `0x152b5c` | — | low | auto-shape | btaninit2-field? | +| `0x152b5d` | — | low | auto-shape | btaninit2-field? | +| `0x152b5f` | — | low | auto-shape | btaninit2-field? | +| `0x152b60` | — | low | auto-shape | btaninit2-field? | +| `0x152b61` | — | low | auto-shape | btaninit2-field? | +| `0x152b62` | — | low | auto-shape | btaninit2-field? | +| `0x152b64` | — | low | auto-shape | btaninit2-field? | +| `0x152b65` | — | low | auto-shape | btaninit2-field? | +| `0x152b66` | — | low | auto-shape | btaninit2-field? | +| `0x152b67` | — | low | auto-shape | btaninit2-field? | +| `0x152b69` | — | low | auto-shape | btaninit2-field? | +| `0x152b6a` | — | low | auto-shape | btaninit2-field? | +| `0x152b6b` | — | low | auto-shape | btaninit2-field? | +| `0x152b6c` | — | low | auto-shape | btaninit2-field? | +| `0x152b6e` | — | low | auto-shape | btaninit2-field? | +| `0x152b6f` | — | low | auto-shape | btaninit2-field? | +| `0x152b70` | — | low | auto-shape | btaninit2-field? | +| `0x152b71` | — | low | auto-shape | btaninit2-field? | +| `0x152b73` | — | low | auto-shape | btaninit2-field? | +| `0x152b74` | — | low | auto-shape | btaninit2-field? | +| `0x152b75` | — | low | auto-shape | btaninit2-field? | +| `0x152b76` | — | low | auto-shape | btaninit2-field? | +| `0x152b78` | — | low | auto-shape | btaninit2-field? | +| `0x154006` | — | low | auto-shape | btaninit2-field? | +| `0x154007` | — | low | auto-shape | btaninit2-field? | +| `0x154009` | — | low | auto-shape | btaninit2-field? | +| `0x15400c` | — | low | auto-shape | btaninit2-field? | +| `0x15400d` | — | low | auto-shape | btaninit2-field? | +| `0x15400f` | — | low | auto-shape | btaninit2-field? | +| `0x154012` | — | low | auto-shape | btaninit2-field? | +| `0x154013` | — | low | auto-shape | btaninit2-field? | +| `0x154015` | — | low | auto-shape | btaninit2-field? | +| `0x154018` | — | low | auto-shape | btaninit2-field? | +| `0x154019` | — | low | auto-shape | btaninit2-field? | +| `0x15401b` | — | low | auto-shape | btaninit2-field? | +| `0x15401e` | — | low | auto-shape | btaninit2-field? | +| `0x15401f` | — | low | auto-shape | btaninit2-field? | +| `0x154021` | — | low | auto-shape | btaninit2-field? | +| `0x154024` | — | low | auto-shape | btaninit2-field? | +| `0x154025` | — | low | auto-shape | btaninit2-field? | +| `0x154027` | — | low | auto-shape | btaninit2-field? | +| `0x15402a` | — | low | auto-shape | btaninit2-field? | +| `0x15402b` | — | low | auto-shape | btaninit2-field? | +| `0x15402d` | — | low | auto-shape | btaninit2-field? | +| `0x154030` | — | low | auto-shape | btaninit2-field? | +| `0x154031` | — | low | auto-shape | btaninit2-field? | +| `0x154033` | — | low | auto-shape | btaninit2-field? | +| `0x154036` | — | low | auto-shape | btaninit2-field? | +| `0x154037` | — | low | auto-shape | btaninit2-field? | +| `0x154039` | — | low | auto-shape | btaninit2-field? | +| `0x15403c` | — | low | auto-shape | btaninit2-field? | +| `0x15403d` | — | low | auto-shape | btaninit2-field? | +| `0x15403f` | — | low | auto-shape | btaninit2-field? | +| `0x154042` | — | low | auto-shape | btaninit2-field? | +| `0x154043` | — | low | auto-shape | btaninit2-field? | +| `0x154045` | — | low | auto-shape | btaninit2-field? | +| `0x154048` | — | low | auto-shape | btaninit2-field? | +| `0x154049` | — | low | auto-shape | btaninit2-field? | +| `0x15404b` | — | low | auto-shape | btaninit2-field? | +| `0x15404e` | — | low | auto-shape | btaninit2-field? | +| `0x15404f` | — | low | auto-shape | btaninit2-field? | +| `0x154051` | — | low | auto-shape | btaninit2-field? | +| `0x154054` | — | low | auto-shape | btaninit2-field? | +| `0x154055` | — | low | auto-shape | btaninit2-field? | +| `0x154057` | — | low | auto-shape | btaninit2-field? | +| `0x15405a` | — | low | auto-shape | btaninit2-field? | +| `0x15405b` | — | low | auto-shape | btaninit2-field? | +| `0x15405d` | — | low | auto-shape | btaninit2-field? | +| `0x154060` | — | low | auto-shape | btaninit2-field? | +| `0x154061` | — | low | auto-shape | btaninit2-field? | +| `0x154063` | — | low | auto-shape | btaninit2-field? | +| `0x154066` | — | low | auto-shape | btaninit2-field? | +| `0x154067` | — | low | auto-shape | btaninit2-field? | +| `0x154069` | — | low | auto-shape | btaninit2-field? | +| `0x15406c` | — | low | auto-shape | btaninit2-field? | +| `0x15406d` | — | low | auto-shape | btaninit2-field? | +| `0x15406f` | — | low | auto-shape | btaninit2-field? | +| `0x154072` | — | low | auto-shape | btaninit2-field? | +| `0x154073` | — | low | auto-shape | btaninit2-field? | +| `0x154075` | — | low | auto-shape | btaninit2-field? | +| `0x154078` | — | low | auto-shape | btaninit2-field? | +| `0x154079` | — | low | auto-shape | btaninit2-field? | +| `0x15407b` | — | low | auto-shape | btaninit2-field? | +| `0x15407e` | — | low | auto-shape | btaninit2-field? | +| `0x15407f` | — | low | auto-shape | btaninit2-field? | +| `0x154081` | — | low | auto-shape | btaninit2-field? | +| `0x15425e` | — | low | auto-shape | btaninit2-field? | +| `0x15425f` | — | low | auto-shape | btaninit2-field? | +| `0x154261` | — | low | auto-shape | btaninit2-field? | +| `0x154263` | — | low | auto-shape | btaninit2-field? | +| `0x154264` | — | low | auto-shape | btaninit2-field? | +| `0x154266` | — | low | auto-shape | btaninit2-field? | +| `0x154268` | — | low | auto-shape | btaninit2-field? | +| `0x154269` | — | low | auto-shape | btaninit2-field? | +| `0x15426b` | — | low | auto-shape | btaninit2-field? | +| `0x15426d` | — | low | auto-shape | btaninit2-field? | +| `0x15426e` | — | low | auto-shape | btaninit2-field? | +| `0x154270` | — | low | auto-shape | btaninit2-field? | +| `0x154272` | — | low | auto-shape | btaninit2-field? | +| `0x154273` | — | low | auto-shape | btaninit2-field? | +| `0x154275` | — | low | auto-shape | btaninit2-field? | +| `0x154277` | — | low | auto-shape | btaninit2-field? | +| `0x154278` | — | low | auto-shape | btaninit2-field? | +| `0x15427a` | — | low | auto-shape | btaninit2-field? | +| `0x15427c` | — | low | auto-shape | btaninit2-field? | +| `0x15427d` | — | low | auto-shape | btaninit2-field? | +| `0x15427f` | — | low | auto-shape | btaninit2-field? | +| `0x154281` | — | low | auto-shape | btaninit2-field? | +| `0x154282` | — | low | auto-shape | btaninit2-field? | +| `0x154284` | — | low | auto-shape | btaninit2-field? | +| `0x154286` | — | low | auto-shape | btaninit2-field? | +| `0x154287` | — | low | auto-shape | btaninit2-field? | +| `0x154289` | — | low | auto-shape | btaninit2-field? | +| `0x15428b` | — | low | auto-shape | btaninit2-field? | +| `0x15428c` | — | low | auto-shape | btaninit2-field? | +| `0x15428e` | — | low | auto-shape | btaninit2-field? | +| `0x154290` | — | low | auto-shape | btaninit2-field? | +| `0x154291` | — | low | auto-shape | btaninit2-field? | +| `0x154293` | — | low | auto-shape | btaninit2-field? | +| `0x154295` | — | low | auto-shape | btaninit2-field? | +| `0x154296` | — | low | auto-shape | btaninit2-field? | +| `0x154298` | — | low | auto-shape | btaninit2-field? | +| `0x15429a` | — | low | auto-shape | btaninit2-field? | +| `0x15429b` | — | low | auto-shape | btaninit2-field? | +| `0x15429d` | — | low | auto-shape | btaninit2-field? | +| `0x15429f` | — | low | auto-shape | btaninit2-field? | +| `0x1542a0` | — | low | auto-shape | btaninit2-field? | +| `0x1542a2` | — | low | auto-shape | btaninit2-field? | +| `0x1542a4` | — | low | auto-shape | btaninit2-field? | +| `0x1542a5` | — | low | auto-shape | btaninit2-field? | +| `0x1542a7` | — | low | auto-shape | btaninit2-field? | +| `0x1542a9` | — | low | auto-shape | btaninit2-field? | +| `0x1542aa` | — | low | auto-shape | btaninit2-field? | +| `0x1542ac` | — | low | auto-shape | btaninit2-field? | +| `0x1542ae` | — | low | auto-shape | btaninit2-field? | +| `0x1542af` | — | low | auto-shape | btaninit2-field? | +| `0x1542b1` | — | low | auto-shape | btaninit2-field? | +| `0x1542b3` | — | low | auto-shape | btaninit2-field? | +| `0x1542b4` | — | low | auto-shape | btaninit2-field? | +| `0x1542b6` | — | low | auto-shape | btaninit2-field? | +| `0x1542b8` | — | low | auto-shape | btaninit2-field? | +| `0x1542b9` | — | low | auto-shape | btaninit2-field? | +| `0x1542bb` | — | low | auto-shape | btaninit2-field? | +| `0x1542bd` | — | low | auto-shape | btaninit2-field? | +| `0x1542be` | — | low | auto-shape | btaninit2-field? | +| `0x1542c0` | — | low | auto-shape | btaninit2-field? | +| `0x1542c2` | — | low | auto-shape | btaninit2-field? | +| `0x1542c3` | — | low | auto-shape | btaninit2-field? | +| `0x1542c5` | — | low | auto-shape | btaninit2-field? | +| `0x1542c7` | — | low | auto-shape | btaninit2-field? | +| `0x1542c8` | — | low | auto-shape | btaninit2-field? | +| `0x1542ca` | — | low | auto-shape | btaninit2-field? | +| `0x1542cc` | — | low | auto-shape | btaninit2-field? | +| `0x1542cd` | — | low | auto-shape | btaninit2-field? | +| `0x1542cf` | — | low | auto-shape | btaninit2-field? | +| `0x1542d1` | — | low | auto-shape | btaninit2-field? | +| `0x1542d2` | — | low | auto-shape | btaninit2-field? | +| `0x1542d4` | — | low | auto-shape | btaninit2-field? | +| `0x1542d6` | — | low | auto-shape | btaninit2-field? | +| `0x1542d7` | — | low | auto-shape | btaninit2-field? | +| `0x1542d9` | — | low | auto-shape | btaninit2-field? | +| `0x1542db` | — | low | auto-shape | btaninit2-field? | +| `0x1542dc` | — | low | auto-shape | btaninit2-field? | +| `0x1542de` | — | low | auto-shape | btaninit2-field? | +| `0x1542e0` | — | low | auto-shape | btaninit2-field? | +| `0x1542e1` | — | low | auto-shape | btaninit2-field? | +| `0x1542e3` | — | low | auto-shape | btaninit2-field? | +| `0x1542e5` | — | low | auto-shape | btaninit2-field? | +| `0x1542e6` | — | low | auto-shape | btaninit2-field? | +| `0x1542e8` | — | low | auto-shape | btaninit2-field? | +| `0x15576f` | — | low | auto-shape | btaninit2-field? | +| `0x155770` | — | low | auto-shape | btaninit2-field? | +| `0x155771` | — | low | auto-shape | btaninit2-field? | +| `0x155772` | — | low | auto-shape | btaninit2-field? | +| `0x155773` | — | low | auto-shape | btaninit2-field? | +| `0x155774` | — | low | auto-shape | btaninit2-field? | +| `0x155775` | — | low | auto-shape | btaninit2-field? | +| `0x155776` | — | low | auto-shape | btaninit2-field? | +| `0x155777` | — | low | auto-shape | btaninit2-field? | +| `0x155778` | — | low | auto-shape | btaninit2-field? | +| `0x155779` | — | low | auto-shape | btaninit2-field? | +| `0x15577a` | — | low | auto-shape | btaninit2-field? | +| `0x15577b` | — | low | auto-shape | btaninit2-field? | +| `0x15577c` | — | low | auto-shape | btaninit2-field? | +| `0x15577d` | — | low | auto-shape | btaninit2-field? | +| `0x15577e` | — | low | auto-shape | btaninit2-field? | +| `0x15577f` | — | low | auto-shape | btaninit2-field? | +| `0x155780` | — | low | auto-shape | btaninit2-field? | +| `0x155781` | — | low | auto-shape | btaninit2-field? | +| `0x155782` | — | low | auto-shape | btaninit2-field? | +| `0x155783` | — | low | auto-shape | btaninit2-field? | +| `0x1557d3` | — | med | auto-shape | btaninit2-field | +| `0x1560e8` | — | med | auto-shape | mainit-field | +| `0x156106` | — | med | auto-shape | mainit-field | +| `0x156124` | — | med | auto-shape | mainit-field | +| `0x156142` | — | med | auto-shape | mainit-field | +| `0x156160` | — | med | auto-shape | mainit-field | +| `0x15617e` | — | low | auto-shape | mainit-field? | +| `0x1561d8` | — | low | auto-shape | mainit-field? | +| `0x15a75b` | — | med | auto-shape | record-table[stride 21] | +| `0x15a785` | — | med | auto-shape | record-table[stride 3] | + diff --git a/docs/opcode-reference.md b/docs/opcode-reference.md index 5bee577..657db5f 100644 --- a/docs/opcode-reference.md +++ b/docs/opcode-reference.md @@ -1,3005 +1,3005 @@ - -# Opcode Reference (generated) - -548 AGE catalog opcodes: 248 observed in Himegari and 300 compatibility stubs. Source of truth: `vm-map/opcodes.toml`. - -## adv - -### 0x6e `show-text` (show-text, argc 2) -- **summary:** (layout_slot)(text) - build and publish a retained text run in the selected ADV layout, using the current glyph delay and raster style; slot zero selects the current layout. -- **grounding:** source=investigation, confidence=high -- **evidence:** Native op 0x6e enters adv_text_build_glyph_records@0x4576c0, which snapshots the selected layout cursor and active font/color state, rasterizes one record per CP932 glyph, advances the live cursor, and publishes records through adv_text_publish_next_glyph@0x451220 using text-manager charDelay. adv_text_layout_check_overflow@0x45efc0 returns independent horizontal/vertical bits from strict right/bottom comparisons; the builder's wrap branch excludes CP932 0x8141/0x8142/0x8176. The publisher passes record edges directly to gfx_object_bind_draw@0x47e870 and stops at layout+0x6c capacity. Native SC0000 traces show a 50-ms ordinary delay and retained layout publication; MAMES/ITMES/SKMES/INFOMES set delay zero for immediate UI descriptions. - -The live 20-byte glyph record is {chain_flag,left,top,right,bottom}; rectangle members are edges. Overflow bits use strict bound sfx_channel_load@0x482500 -> asset_open_indexed_entry@0x44f390 + sound_decode_channel@0x483360. The opener indexes the base catalog directly for a zero high byte and selects mounted_aai[high_byte] otherwise. SC0000 0xc29 uses raw 0x28 = E0808.WAV. TITLE independently proves the addressing rule: raw 0x2aea = SE020.WAV is preloaded on channel 2 and started on every hover-selection change; raw 0x3321 = SE015.WAV is loaded/started on activation. The pre-fix port trace reported file=null under scene-manifest resolution; after switching Godot to ResolveSoundEffect/ResolvePacked, a synchronized TITLE->GAMESTART->TITLE trace resolves and starts SE020/SE015/SE013, confirmed audible by the user. - -### 0xb5 `sfx-start` (u0041D050, argc 1) -- **summary:** (channel) — start the already-loaded channel once (logical loop=false). DirectSound publishes synchronously through Play(0,0,DSBPLAY_LOOPING); the low-level flag loops only the streaming ring, while decoder EOF stops logical playback. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra op 0xb5 handler 0x420210 passes mode 0 to sfx_channel_start@0x4825d0; mode 1 belongs to op 0xba. sound_buffer_start@0x484270 primes four quarter-buffer notifications then calls IDirectSoundBuffer::Play with flag 1 before returning. Native trace at SC0000 0xc2e: E0808 channel 0 start enters/leaves in the same ms, preloaded 1->0 and playing 0->1. - -### 0xb6 `sfx-release` (u0041D080, argc 1) -- **summary:** (channel) - stop/destroy the channel decoder and DirectSound buffer, clear its retained resource id, and leave the slot empty. Idempotent for an unused channel. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra op 0xb6 handler 0x420250 -> sfx_channel_release@0x482600 -> sound_buffer_destroy@0x4831a0, which releases the per-channel object under its critical section and clears the slot. Native trace captured SC0000's channels 0..9 release sweep in consecutive calls. - -### 0xb7 `restart-bgm-loop` (restart-bgm-loop, argc 1) -- **summary:** (track_or_zero) — force-start looping BGM even when the requested nonzero track already matches the retained current track. A zero operand restarts the retained track; when no track is retained it resolves to an idempotent stop. Any active BGM fade is completed/cancelled first. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0xb7_force_play_bgm_loop@0x4202d0 first clears run-state bit 0x200 and forces bgm_fade_tick(...,100) when a fade is active, then calls bgm_force_play_track@0x464a90 with operand 1 and logical start mode 1. Unlike ordinary bgm_play_track@0x464750 (op 0xbf), the force worker has no same-track early return. A nonzero operand replaces EngineCtx.current_bgm_track_id; zero reuses it, or releases when it is also zero. The OGG backend forwards mode 1 through sound_buffer_start; sound_stream_fill_quarter rewinds at EOF only for nonzero mode. Corpus: CALLBACK_LOAD uses zero to restart restored music; CONFIG uses BGM029 for its music preview. - -Implemented: the VM resolves zero through its retained current track and calls the explicit forced-restart host seam with mode 1. Godot replaces the OGG stream with Loop=true and cancels any deferred fade; ordinary op 0xbf keeps its same-track idempotence. - -### 0xb8 `stop-bgm` (stop-bgm, argc 0) -- **summary:** Stop and release the active BGM source and clear the retained current track. Any active BGM fade is completed/cancelled first. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0xb8_stop_bgm@0x416ba0 clears run-state bit 0x200 and forces bgm_fade_tick(...,100) when a fade is active, then calls bgm_stop_release@0x464690. The worker clears music-facade current track/status fields and invokes the active backend's stop/release method. Corpus: CONFIG stops the BGM029 preview while closing; MMODE stops current music before building the music-room screen. - -Implemented: the VM clears its retained track and calls StopBgm. Godot cancels voice ducking and any fade, stops playback, releases the stream, and restores neutral gain. - -### 0xb9 `restart-bgm-once` (restart-bgm-once, argc 1) -- **summary:** (track_or_zero) — force-start one-shot BGM even when the requested nonzero track already matches the retained current track. A zero operand restarts the retained track once; when no track is retained it resolves to an idempotent stop. Any active BGM fade is completed/cancelled first. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0xb9_force_play_bgm_once@0x420330 shares op 0xb7's fade-finalization and bgm_force_play_track@0x464a90 path but supplies logical start mode 0. The OGG backend forwards that mode through sound_buffer_start; sound_stream_fill_quarter pads/stops at decoder EOF instead of rewinding. Corpus: STAGECLEAR's sole site force-starts BGM025 as its one-shot clear fanfare. - -Implemented: the VM shares op 0xb7's retained-track/zero handling but supplies mode 0. Godot replaces the OGG stream with Loop=false, so BGM025 naturally stops at EOF. - -### 0xba `sfx-start-loop` (sfx-start-loop, argc 1) -- **summary:** (channel) — start the already-loaded sound-effect channel with logical loop mode 1; the streaming decoder rewinds at EOF until the channel is replaced or released. -- **grounding:** source=investigation, confidence=high - -### 0xbf `play-bgm` (play-bgm, argc 1) -- **summary:** Play background music by id. BGM is addressed by DIRECT LITERAL NAME: id -> BGM{id:03d}.OGG (in DATA3), unlike ordinary resource operands, which are universal packed SYS4INI/AAI ids. E.g. play-bgm 5 -> BGM005. Reasserting the facade's current track id is idempotent and preserves playback position; a different id starts the new track, while fade-to-zero clears the current id so a later request can start it again. -- **grounding:** source=investigation, confidence=high -- **evidence:** By-ear confirmed (2026-07-06): SC0000 real game plays BGM005 for play-bgm 0x5 and BGM008 for play-bgm 0x8 (we initially mis-played BGM006/BGM009 via the disproven scene-section model). Direct-name proven by play-bgm 0x23 -> BGM035.OGG, a real standalone track (the BGM set skips 030-034). Ghidra /v2 op_0xbf_handler@0x420390 forwards the numeric track to the BGM facade rather than asset_open_indexed_entry; the facade retains that id at EngineCtx.current_bgm_track_id for op 0xc0 and numbered saves. FIELD intentionally reasserts stage_bgm_id from its common post-action/event cleanup at 0x884a, reached after unit movement; restarting an identical host stream there resets the music once per unit during enemy turns. Op 0xc2 target zero releases the source and the VM clears the retained id. Diagnostic: `Age.Cli audio SC0000.BIN`. - -### 0xc0 `get-current-bgm-track` (get-current-bgm-track, argc 1) -- **summary:** (track_out) - return the direct-name BGM track id retained by the music facade; the same value is restored from numbered saves. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2 op_0xc0_get_current_bgm_track@0x428440 writes EngineCtx.current_bgm_track_id (+0xa0b84) to operand 1. op 0xbf's bgm_play_track retains the selected direct-name id at the same music-facade field; layout-3 serialization copies it to payload +0x008 and restoration copies it back. Installed SAVE00 stores 0x18, matching FORT's BGM024. - -### 0xc2 `fade-bgm` (u0041D2B0, argc 2) -- **summary:** (target_percent)(duration_ms) — block script service while linearly fading current BGM volume to 0..100%. Durations >=1000 ms use 100 steps; shorter fades use 10. Target 0 releases the current BGM source at completion. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra op 0xc2 handler 0x4204c0 sets run-state 0x200, arms the service timer, and calls bgm_fade_arm@0x464830; bgm_fade_tick@0x464960 interpolates current/target percent and applies volume, releasing at target 0. Native SC0000 trace at 0x7c1/0x126c shows target 0, duration 3000, 1% ticks at about 30 ms. - -Implemented through the blocking host fade clock. Target zero clears the VM's retained track after the wait and invokes the shared BGM stop/release seam, so Godot does not retain a silent bound stream. - -### 0xc4 `play-voice` (play-voice, argc 1) -- **summary:** Play a voice clip by universal packed SYS4INI/AAI id with native playback/history variant 0. While all-message Skip is active, retain/replace the queued voice request instead of starting it; playback resumes from the latest queued request after Skip clears. Uses the same packed-id opener as textures/scripts/movies, unlike play-bgm's direct BGM{id:03d} naming. -- **grounding:** source=investigation, confidence=high -- **evidence:** By-ear confirmed (2026-07-06): SC0000 prologue voices play on their lines via Godot AudioStreamPlayer. Ghidra /v2 op_0xc4_handler@0x420610 passes operand 1 unchanged to voice_play_indexed_asset@0x488330, which passes it unchanged to asset_open_indexed_entry@0x44f390. That opener directly indexes the flat base table for a zero high byte or selects mounted_aai[high_byte] and low24 for append resources; it has no executing-scene input or section-base branch. SC0010 is decisive beyond base-zero SC0000: play-voice 0x120 is raw SYS4INI entry LILA1414.OGG, also SC0010 file_number 2; applying SC0010 base 0x11e again is wrong. ROOM's 0x3365 similarly resolves directly to EUA0016.OGG. While Skip is active the handler stores the latest id/zero variant at ctx+0x6dbf4/+0x6dbf8; adv_interpreter_tick starts and clears it when Skip/read-skip input ends. Lily's lines remain correctly form-gated. - -### 0xc5 `get-audio-volume` (get-audio-volume, argc 2) -- **summary:** (category)(out_basis_points) — read the configured audio volume: 0=master, 1=music, 2=SFX, 3=voice, 4=movie. Native values use 0..10000 basis points. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0xc5_get_audio_volume@0x428470 selects sound:Volume0..Volume4 for operand 1 values 0..4, queries the engine settings registry, and writes the result to operand 2. CONFIG.BIN uses the results to draw and adjust four visible category sliders; its initialization also sets Volume0..Volume3 to 10000/6500/5000/8000. - -Port status (2026-07-29): implemented against the profile-lifetime AudioMixerSettings registry. The native -1 unconfigured sentinel is preserved; CONFIG reads receive the exact stored basis-point value. - -### 0xc6 `set-audio-volume` (set-audio-volume, argc 2) -- **summary:** (category)(basis_points) — update the configured 0..10000 audio volume and apply it immediately: 0=master, 1=music, 2=SFX, 3=voice, 4=movie. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0xc6_set_audio_volume@0x4206d0 writes sound:Volume0..Volume4 through the settings registry and dispatches selectors 0..4 to the live master/music/SFX/voice/movie volume workers. The master worker reapplies dependent volume to active movies and sound buffers; category workers update active BGM, ten SFX channels, voice channel 12, or the movie basis respectively. - -Port status (2026-07-29): implemented with native SYS4REG.INI [sound] persistence and live Godot Master/Music/SFX/Voice/Movie bus gain changes. The CP932 preserving writer retains unrelated options; master and category buses compose multiplicatively like native basis-point application. - -### 0xc7 `get-audio-route-enabled` (get-audio-route-enabled, argc 2) -- **summary:** (category)(out_enabled) — query whether an audio route is enabled: 1=music, 2=SFX, 3=voice, 4=movie. Writes boolean 0 or 1. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0xc7_get_audio_route_enabled@0x4285a0 queries sound:Music/SE/Voice/Movie for selectors 1..4 and writes boolean 0/1 to operand 2. CONFIG.BIN's only site loops selectors 1..3 to choose enabled/disabled presentation. - -Port status (2026-07-29): implemented as the read half of the shared audio-route registry loaded from native SYS4REG.INI. - -### 0x1ba `set-audio-route-enabled` (set-audio-route-enabled, argc 2) -- **summary:** (category)(enabled) — enable or disable an audio route and persist the setting: 1=music, 2=SFX, 3=voice, 4=movie. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x1ba_set_audio_route_enabled@0x420860 dispatches selectors 1..4 to the music/SFX/voice/movie enable workers. Those workers update the live route, stop active playback when disabling where applicable, write sound:Music/SE/Voice/Movie through the settings registry, and reject selectors outside 1..4. All 15 CONFIG.BIN sites pass literal 0/1. - -Port status (2026-07-29): implemented with native SYS4REG.INI route persistence and live bus muting. AGE's raw music value band is preserved (Himegari 2 enabled toggles to -1 disabled); music changes restart/stop the retained stream, disabling SFX or voice stops active playback, and movie changes remain non-destructive. - -### 0x1bd `play-history-voice` (u0041D910, argc 1) -- **summary:** Replay a voice id selected from retained ADV text history using native playback/history variant 1, preserving normal Skip and Auto-voice state behavior. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x1bd_play_history_voice@0x420920 stops/replaces the active voice and calls voice_play_indexed_asset@0x488330 with operand 1 plus playback variant 1 when Skip is inactive (or queues that pair while Skip is active). When text-history recording is enabled it appends voice pair {id,1}; HISTORY.BIN suppresses recording with op 0x1bb while its UI is active, preventing replay clicks from recursively entering the backlog. The handler also sets adv_auto_voice_pending when playback exists. voice_play_indexed_asset retains the variant in sound-buffer state before starting channel 12; its exact audible meaning remains unproven. - -### 0x1cf `set-voice-bgm-duck-control` (set-voice-bgm-duck-control, argc 1) -- **summary:** (flags) - replace the transient voice/BGM-duck control mask. Bit 0 suppresses automatic BGM attenuation when voice playback starts; zero permits the configured duck behavior. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x1cf_set_voice_bgm_duck_control@0x4209f0 fetches operand 1 and writes it verbatim to ctx+0x6dbf0. The voice-start helper voice_bgm_duck_begin@0x406de0 tests bit 0 before arming BGM attenuation; native settings defaults register MusicFadeOnVoicePlaying=1 and MusicFadeOnVoicePlayingVol=50. SC0000 uses values 0 and 1. - -### 0x2bf `schedule-sfx-start` (schedule-sfx-start, argc 3) -- **summary:** (channel)(start_mode)(delay_ms) - schedule the already-loaded SFX channel to enter the ordinary start worker after the requested delay. Channels are limited to 0..9. -- **grounding:** source=frida, confidence=high -- **evidence:** Ghidra /v2: op_0x2bf_schedule_sfx_start@0x425240 calls sfx_set_delay@0x482720 on the ctx+0x14024 sound facade. The worker's native error text names Function:SetDelay, validates channel<=9, and stores active/progress/delay/start-mode state. Existing SC0000 trace: SetDelay(channel 4, mode 0, 100) is followed about 109 ms later by the ordinary sfx_channel_start worker on channel 4 with mode 0 and no intervening 0xb5. - -### 0x2c0 `schedule-voice-playback` (schedule-voice-playback, argc 3) -- **summary:** Arm delayed voice playback: (voice_id, playback_variant, delay_ms). The engine main tick starts the voice after the monotonic deadline. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x2c0_schedule_voice_playback@0x425290 forwards three operands to voice_schedule_delayed_playback@0x488480 on the text/ADV service at EngineCtx+0x14508. That worker stores active=1, start=0, delay at +0x424, voice id at +0x428, and variant at +0x42c. engine_main_tick_with_exception_policy calls voice_tick_delayed_playback@0x4884d0; after unsigned elapsed >= delay it clears the request and calls voice_play_indexed_asset(voice_id,variant). Corpus: one BTL site at 0x2f6e. - -The setter replaces the single pending request, marks it active, and clears its start timestamp. On the first service tick the worker captures the current millisecond time; once unsigned elapsed time reaches delay_ms it clears the request and calls the ordinary indexed-voice player with voice_id and playback_variant. BTL's only call selects a randomized combat voice id, variant 0, and an entity-specific delay. - -## compute - -### 0x60 `random-modulo` (u0041A270, argc 2) -- **summary:** (destination)(bound) — write CRT rand() % bound. A bound of zero first writes zero and then raises the engine's script error. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x60_handler@0x426970 calls imported CRT rand(), fetches operand 2, takes signed remainder, and writes operand 1. The zero-bound branch writes zero then throws error 0x10005. ROOM@0x5 calls (local 0x110,4), and its following branches select one of four character surface sets; variants 0..2 also select voice-id sextets. /v2 annotated and saved 2026-07-21. - -### 0x61 `lookup-array` (lookup-array, argc 3) -- **summary:** Take a typed reference to base[index], preserving whether the base belongs to local or global storage. -- **grounding:** source=investigation, confidence=high -- **evidence:** HISTORY.BIN copies x/y tables into local-int cells 0x4 and 0x68, then lookup-array local-ptr <- local-int base supplies every right-side button and hovered-row draw coordinate. Treating the local operand's current value as a global base collapses those draws to (0,0); retaining the local address yields the native x=768/y=121..549 positions. RECOVER.BIN independently exercises the same pointer destination with global bases. - -Operand 2 names the base cell itself: a global-bank operand produces a global reference and a local-bank operand produces a local reference. Operand 3 is added as the element offset. Pointer destinations retain that address domain; reading or writing the pointer dereferences the corresponding bank. Non-pointer destinations receive the addressed value. The same domain-preserving address model applies to lookup-array-2d (0x12c). - -### 0x63 `take-address` (take-address, argc 2) -- **summary:** (destination_pointer)(source) - store the underlying typed storage address of source in destination_pointer; a pointer source aliases its existing target. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2 op_0x63_take_address@0x426ac0 calls vm_operand_resolve_address@0x425a50 for operand 2 with unsubscripted indices -1/-1, then vm_pointer_operand_write@0x416090 for operand 1. The resolver returns a backing-cell address for direct global/local integer or string operands and the already-stored target for pointer operands. Corpus: 92 calls; destination is always local-ptr, while sources are local-ptr x81, local-int x7, and global-int x4. The C# VM preserves the local/global address domain and supports the native string-pointer destination forms; the traced natural boot reaches the UNITECH/CALCCC pair without fallback. - -### 0x64 `copy-inline-int-array` (copy-inline-int-array, argc 2) -- **summary:** (destination)(inline_blob_offset) - decode the count-prefixed integer literal blob at codebase + offset*4 and copy its values to consecutive VM integer cells beginning at destination. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x64_handler@0x426b00 resolves operand 1 as a writable VM address, reads a count dword followed by values from frame_codebase + operand2*4, reverses the native loader's rotate/XOR in-memory representation with anti_tamper_a, and writes consecutive dwords. The original SYS4 file footer stores the count and values plainly; HISTORY.BIN uses 15 blobs to initialize its rectangle, coordinate, and lookup arrays. - -### 0x6c `zero-int-range` (copy-to-global, argc 2) -- **summary:** (destination)(count) — write logical integer zero to count consecutive VM cells beginning at the resolved destination. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x6c_handler@0x426d90 resolves operand 1 as a writable VM pointer and fills operand-2 consecutive dwords with ctx->anti_tamper_b, the native encoded representation of logical integer zero. INITCONFIG@0x30 clears G[0x2e49..0x2e55] before registering those 13 profile cells; treating operand 2 as a scalar source incorrectly wrote 13 to G[0x2e49] and disabled ROOM's character greeting/farewell voices. /v2 annotated and saved 2026-07-21. - -### 0x12f `sort-indices-by-key-sum` (sort-indices-by-key-sum, argc 4) -- **summary:** (out_indices, key_a, key_b, count) - write a stable ascending permutation of indices 0..count-1, ordered by the signed 32-bit sum key_a[index] + key_b[index]. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x12f_sort_indices_by_key_sum@0x429360 resolves operands 1-3 as integer-array bases, seeds out_indices[0]=0, then performs insertion sort. It shifts a prior index only when signed unchecked(key_a[new]+key_b[new]) is strictly less than the prior sum, so equal keys retain source order. Operand 4 is fetched as the exclusive count. The final native loop merely re-encodes direct writes into AGE's protected integer representation. Release corpus: 40 sites. CHMENU@0x1c9b sorts 100 party-slot keys and reads the populated tail; a no-op leaves the initial party slot undiscoverable even though UNITECH created it. - -Implemented with domain-preserving addressed-array access, native signed 32-bit key addition/overflow, stable insertion ordering, repeated count reads, and the native unconditional out_indices[0]=0 write. Focused tests lock stability/overflow/zero-count behavior; a natural SYSTEM4-to-SC0000 state carried into release CHMENU proves the initial slot remains selected after the real roster sort. - -### 0x132 `reset-int-queue` (reset-int-queue, argc 1) -- **summary:** (queue_id) - destroy any existing queue in the selected engine slot and replace it with an empty integer FIFO. Valid queue ids are 0..10. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x132_reset_int_queue@0x4217d0 fetches queue_id, rejects values above 10, invokes the existing object's virtual destructor, allocates 0x1c bytes, and calls int_queue_construct@0x4074c0. The constructor allocates 0x100 dwords, sets capacity and growth quantum to 0x100, and zeros the read/end/high-water indices. scene_context_init_reset@0x40b560 constructs exactly ten queue pointers at EngineCtx+0x55130 before the ten stack pointers at +0x55158, so admitted queue id 10 aliases stack slot 0. The only corpus sites are ATSEEK@0x32 and MVSEEK@0x145, both using id 0 before their flood fills. - -Implemented as 11 safe logical queue slots so the handler-admitted 0..10 script ABI cannot corrupt adjacent host state. Reset replaces the selected queue with an empty FIFO pre-sized to the native 0x100-dword initial capacity; invalid ids halt with a diagnostic. Native physically owns only ten independent slots and its id-10 address aliases stack slot 0. - -### 0x133 `enqueue-int` (enqueue-int, argc 2) -- **summary:** (queue_id, value) - append one integer to the selected engine FIFO, compacting consumed entries or growing its storage when required. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x133_enqueue_int@0x4218d0 validates queue_id 0..10, fetches value, and calls int_queue_enqueue@0x408930 on ctx's selected queue. The helper appends at end_index, compacts unread entries when read_index is nonzero, or grows capacity by the 0x100-dword quantum. All four corpus sites are in ATSEEK/MVSEEK and enqueue coordinates packed as (x << 16) + y. - -Implemented with signed 32-bit value normalization into the selected FIFO. The port diagnoses invalid or never-reset slots; every shipped use resets queue 0 before enqueueing. - -### 0x134 `try-dequeue-int` (try-dequeue-int, argc 3) -- **summary:** (queue_id, out_success, out_value) - consume the next integer from the selected FIFO, writing success=1 and the value; write success=0 when empty. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x134_try_dequeue_int@0x429620 validates queue_id 0..10 and compares the selected queue's read_index with end_index. When nonempty it reads data[read_index], increments read_index, updates the high-water index, writes 1 to operand 2, and writes the item to operand 3; when empty it writes 0 to operand 2. Native still writes a non-item implementation value to operand 3 on failure, but both shipped callers branch on out_success before reading out_value. ATSEEK and MVSEEK use the opcode as the loop head for their coordinate flood fills. - -Implemented as FIFO TryDequeue: nonempty writes success=1 plus the signed dword; empty writes success=0 and retains the prior value destination because native's failure value is an unusable implementation pointer. Focused tests cover slot independence, ordering, empty/reset behavior, and signed values; real MVSEEK/ATSEEK regressions prove both searches expand beyond the origin. - -### 0x135 `bit-set` (bit-set, argc 2) -- **summary:** (value)(bit_index) - set the indexed bit in the destination integer. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x135_handler@0x4296c0 fetches operand 2 as an unsigned bit index, rejects values >=32 through the native script-error path, fetches operand 1, and writes value | (1 << index). HIDEWIN.BIN sets index 1 at 0x13d and later tests mask 0x2 at 0x146. - -### 0x136 `bit-reset` (bit-reset, argc 2) -- **summary:** (value)(bit_index) - clear the indexed bit in the destination integer. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x136_handler@0x429730 fetches operand 2 as an unsigned bit index, rejects values >=32 through the native script-error path, fetches operand 1, and writes value & ~(1 << index). HIDEWIN.BIN clears index 1 at 0x154 after testing mask 0x2. - -### 0x137 `reset-int-stack` (reset-int-stack, argc 1) -- **summary:** (stack_id) - destroy the selected native integer LIFO and replace it with an empty stack. -- **grounding:** source=investigation, confidence=high -- **depended on by:** 0x138, 0x139 -- **evidence:** Ghidra /v2: op_0x137_reset_int_stack@0x421940 destroys the pointer at EngineCtx+0x55158+id*4, allocates 0x14 bytes, and calls int_stack_construct@0x407410. The constructor allocates 0x100 dwords, records a 0x100-dword growth quantum, and initializes top=-1. scene_context_init_reset@0x40b560 constructs exactly ten entries [0,10), while the handler checks only id<=10; id 10 therefore lands at +0x55180, the numeric-glyph-style table. Corpus: CALLBACK_LOAD@0xf2 is the sole site and resets stack 0 before rebuilding the eight retained ADV layers. - -AGE owns ten independent stack pointers at EngineCtx+0x55158 and reconstructs all ten on every scene-context reset. The handler's unsigned range check accidentally admits id 10 as well as 0..9; that address aliases the first dword of the numeric-glyph-style table rather than an eleventh stack. Himegari uses only id 0. Port status (2026-07-29): implemented with eleven safely isolated handler-addressable stacks, each initially available with native-equivalent 0x100-dword starting capacity and reconstructed empty on root scene reload. Reset replaces only the selected logical stack; invalid ids halt diagnostically. - -### 0x138 `push-int-stack` (push-int-stack, argc 2) -- **summary:** (stack_id, value) - push one signed integer onto the selected native LIFO, growing its dword buffer by 0x100 entries when full. -- **grounding:** source=investigation, confidence=high -- **depends on:** 0x137 -- **depended on by:** 0x139 -- **evidence:** Ghidra /v2: op_0x138_push_int_stack@0x421a40 admits stack ids <=10 and calls int_stack_push@0x408860. The helper grows capacity by the stored 0x100-dword quantum when top+2 reaches capacity, increments top, and stores the value. The ten-slot/id-10 alias caveat is documented on op 0x137. No Himegari script calls this opcode. - -Port status (2026-07-29): implemented over the scene-context stack registry. All signed dword values round-trip through the VM's integer-cell representation, and handler-addressable slot 10 remains independent host state. - -### 0x139 `try-pop-int-stack` (try-pop-int-stack, argc 3) -- **summary:** (stack_id, out_success, out_value) - pop the most recently pushed integer and write success=1, or write success=0 when empty. -- **grounding:** source=investigation, confidence=high -- **depends on:** 0x137, 0x138 -- **evidence:** Ghidra /v2: op_0x139_try_pop_int_stack@0x4297a0 reads top at stack+0x10; when top>=0 it reads data[top] and decrements top, then writes success and value. When top<0, the local holding the value was never replaced from the incoming EngineCtx pointer, yet operand 3 is still written. No Himegari script calls this opcode. - -On success native writes the removed value. On empty, the release handler still writes its reused `this`/EngineCtx local into out_value, so that cell is implementation garbage and must not be consumed unless out_success is nonzero. Port status (2026-07-29): implemented as LIFO TryPop; success writes 1 and the signed dword, while empty writes 0 and deliberately preserves out_value rather than exposing a host pointer. The ten-slot/id-10 alias caveat is documented on op 0x137. - -### 0x191 `absolute-value` (absolute-value, argc 2) -- **summary:** Write the signed 32-bit absolute value of operand 2 to operand 1. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x191_handler@0x426de0 computes (value ^ (value >> 31)) - (value >> 31) and writes it through vm_operand_write. All five Himegari calls are in SELACT, where it normalizes a signed preview delta before drawing it. - -### 0x193 `concat` (concat, argc 3) -- **summary:** Concatenate operand 2 followed by operand 3 and replace the destination string. Sources are resolved before the write, so destination/source aliasing is supported. -- **grounding:** source=inference, confidence=high -- **evidence:** Kelebek identifies param1 = param2.concat(param3). Corpus ordering confirms direction and aliasing: ADDEXP builds level/result messages with both literal-prefix concat(dst, literal, dst) and append concat(dst, dst, literal); BTL has eight calls. - -### 0x194 `string-equals` (string-equals, argc 3) -- **summary:** (out)(left)(right) - compare two complete SYS4 strings and write 1 when equal, otherwise 0. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2 op_0x194_string_equals@0x426e20 fetches operands 2 and 3 through the string resolver, compares their byte ranges through FUN_004017a0, and writes compare_result==0 to integer operand 1. INIT2 and GAMESTART use it as a branch predicate for INPUTNAME/default-name handling; the natural Game Start diagnostic reached one GAMESTART call at 0x134c. The C# VM implements ordinal equality through the shared string resolver, covering literal, global, local, global-string-pointer, and local-string-pointer operands; the traced natural-boot regression proves the reached GAMESTART call no longer falls back. - -### 0x195 `string-not-equals` (string-not-equals, argc 3) -- **summary:** (out)(left)(right) - compare two complete SYS4 strings and write 1 when different, otherwise 0. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: dispatch slot ctx[0x26c93+0x195] is op_0x195_string_not_equals@0x426f20. It resolves operands 2 and 3 as engine strings, compares their complete byte ranges through the same worker as sibling op 0x194, and writes compare_result!=0 to operand 1. Corpus: 17 sites; 15 immediately branch on the result. BUNKI uses three comparisons against the empty string for its optional title row. - -This is the logical inverse of op 0x194 string-equals. Skipping it is stateful: the destination is not cleared. At BUNKI@0x905, local 0x99 still contains a nonzero graphics handle, so the missing write falsely reserves a 30-pixel title row and shifts every choice down. The C# VM implements ordinal inequality through the shared string resolver; focused tests cover literal/global/local/pointer operands and the exact empty-title stale-handle overwrite. - -### 0x19d `is-catalog-resource-unlocked` (is-catalog-resource-unlocked, argc 2) -- **summary:** (out)(packed_resource_id) - return 1 when the shared SAVE.DAT catalog marker for the selected base or append resource decodes to AGE's deterministic per-index unlock stamp, otherwise 0. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x19d_handler@0x427810 fetches operand 2, rejects packed append ids when `set:SaveVersion1/2` is older than 3.10, calls asset_catalog_is_resource_unlocked@0x415920 on ctx+0x9c24c, and writes the bool to operand 1. The helper selects base table +0x41c or append pointer table +0x3844 and compares the stored low word to `(short)index * 0x6f99 - 0x4f50`. asset_catalog_mark_resource_opened@0x44e410 writes the equivalent full stamp and encrypted profile marker after asset_open_indexed_entry succeeds. shared_profile_load decodes the catalog arrays with modular exponentiation before populating those tables. Corpus: four calls, in CGMODE, HMODE, MMODE, and ED. The installed port SAVE.DAT decodes to 7,966/13,208 base markers and 75/81 append markers; all 851 CGINIT gallery images and all 118 SPINIT H-scene scripts validate unlocked. - -Base ids use the low 24-bit index in the primary catalog marker table. A nonzero high-byte selector addresses that append catalog's independent table; selectors require SaveVersion 3.10 or later, and AGE's signed selector lookup only supports 1..127. Successful native catalog opens write the stamp `low16(index * 0x053d6f99 + 0xb0b0b0b0)` and its encrypted SAVE.DAT form. CGMODE tests CGINIT image ids and HMODE tests SPINIT scene-script ids through this predicate. Port status (2026-07-28): shared-profile import decodes both catalog sections, successful VFS opens mark resources, shared SAVE.DAT writes native-decodable encrypted markers, and the opcode returns the live profile predicate. - -### 0x1a6 `half-byte-string-length` (halve-strlen, argc 2) -- **summary:** Write half the resolved string's byte length, using integer truncation. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x1a6_half_byte_strlen@0x427020 resolves operand 2, scans to NUL, and vm_operand_write(1, strlen_bytes >> 1). DRAWCHP sites 0x9b3/0x9e2 multiply the result by 21 and subtract it from x=257 before draw-string. - -Native applies strlen to the NUL-terminated engine byte string and shifts the byte count right by one. DRAWCHP uses this Shift-JIS-oriented width proxy to center unit and weapon names before rasterizing them into a scratch surface. - -### 0x1b0 `copy-dwords` (copy-dwords, argc 3) -- **summary:** (source)(destination)(count) - copy count consecutive 32-bit cells from source to destination. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2 op_0x1b0_copy_dwords@0x427060 fetches operand 3, resolves addressable operands 1 and 2 through vm_operand_resolve_address@0x425a50, and calls memcpy(destination, source, count*4). Corpus: 65 calls across direct global/local spans and local pointers; 43 are immediately preceded by take-address 0x63. The C# VM copies resolved integer-cell spans while retaining local/global address domains; focused tests cover direct spans and aliased pointers, and the traced natural boot reaches the UNITECH/CALCCC pair without fallback. - -### 0x1c8 `toString` (toString, argc 2) -- **summary:** Convert the source signed 32-bit integer to its invariant decimal string and replace the destination string. -- **grounding:** source=inference, confidence=high -- **evidence:** Kelebek identifies integer-to-string conversion. All five corpus sites are in ADDEXP and feed concat immediately: level numbers, signed deployment-cost deltas, and movement deltas. Source types are global/local integer and the destination is a local string. - -### 0x2c5 `byte-string-length` (strlen, argc 2) -- **summary:** Write the resolved NUL-terminated engine string's raw byte length. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x2c5_byte_strlen@0x42a690 resolves operand 2, scans byte-by-byte through the terminating NUL, and writes the byte count to operand 1. Corpus: 23 sites in 10 scripts. BUNKI uses two sites to size its temporary menu surface and horizontally place all primary option strings. - -This is raw strlen(bytes), not a .NET UTF-16 character count. BUNKI compares all option/title byte lengths, adds four bytes of padding, and converts the result to pixels; skipping the opcode leaves its local maximum at zero, forcing the minimum-width menu and shifting every primary label right. The C# VM shares the configurable native-string byte counter used by op 0x1a6 (CP932 by default), including embedded-NUL termination; focused tests cover literals and local-string pointers. - -### 0x2c6 `cp932-character-length` (cp932-character-length, argc 2) -- **summary:** (out)(string) - write the Japanese-locale multibyte character count of the CP932 string, counting a valid lead/trail pair as one character. -- **grounding:** source=investigation, confidence=high -- **evidence:** The real /v2 dispatch slot registers op_0x2c6_cp932_character_length@0x42a6d0. The handler sets LC_ALL to `japanese`, resolves operand 2, calls MSVC _mbstrlen, and writes the result to operand 1. INPUTNAME's sole site at 0x1002 uses this count as the loop bound before slicing each character with opcode 0x2c8. - -This is character count rather than .NET UTF-16 length or raw CP932 byte length. Port status (2026-07-29): implemented by encoding the C-string prefix through VmOptions.NativeStringCodePage and counting valid CP932 lead/trail pairs as one character; focused tests cover mixed single-byte and double-byte characters. - -### 0x2c8 `cp932-substring` (cp932-substring, argc 4) -- **summary:** (out)(string)(start)(count) - copy a CP932 substring selected by multibyte-character index and count without splitting valid lead/trail pairs. -- **grounding:** source=investigation, confidence=high -- **evidence:** The real /v2 dispatch slot registers op_0x2c8_cp932_substring@0x42c420. It copies operand 2 into a 256-byte buffer, sets LC_ALL to `japanese`, obtains _mbstrlen, reads start and count, clamps end=start+count to the character length when end is below 1 or beyond that length, and walks bytes with _mbbtype so CP932 lead/trail pairs are copied together. It writes the selected byte interval back through operand 1. INPUTNAME's sole site at 0x1021 loops substring(name,index,1) into its eight local character cells. - -The release call uses nonnegative in-range indices and count 1. Port status (2026-07-29): implemented over encoded byte spans, preserving every valid lead/trail pair and reproducing native end clamping (`end = length` when start+count < 1 or > length) before selecting the half-open character interval [start,end). - -## control - -### 0x1 `throw-exit-request` (throw-exit-request, argc 0) -- **summary:** () - raise Command_Exit_Exception with result value 1. The outer engine loop catches it, exits without advancing the VM PC, and returns control to the frontend. TITLE uses it for the fifth main-menu action; SYSTEM4 uses it after reporting an invalid execution mode. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x1_throw_exit_request@0x4162e0 constructs a four-byte payload with value 1 and calls __CxxThrowException_8 with ThrowInfo 0x5a9710. Its CatchableTypeArray resolves to RTTI TypeDescriptor 0x5b13e8, `.?AVCommand_Exit_Exception@@`. The outer engine_main_tick_with_exception_policy@0x411840 has MSVC FuncInfo 0x5a9750; its typed catch entry maps Command_Exit_Exception to catch_CommandExitException_set_exit_result@0x412648, which forces result 1 and returns continuation 0x412961 for loop teardown/return. The dispatcher advances frame_pc only after a handler returns, and this catch never advances it. A separate generic error-dialog result-4 path at 0x412928 explicitly advances the PC, proving fall-through is opt-in and does not apply here. Corpus has exactly two sites: TITLE@0x393 after the fifth menu action's sound/sleep, and SYSTEM4@0x5b9 after printing 'invalid execution mode'. TITLE bytecode following 0x1 builds a developer debug menu and is unreachable in the retail native path. The frontend full-exit/return-to-title prompt remains a separate unimplemented boundary. - -### 0x3 `call-script` (call-script, argc 1) -- **summary:** load & call another SYS4 script by id; id = RAW index into the SYS4INI file table (asset-index). Pushes a script frame; returns to caller when the callee ends. -- **grounding:** source=investigation, confidence=high -- **evidence:** native-RE (Ghidra): handler FUN_0041bc90 -> loader script_frame_load_resource@0x40e980 -> resolver asset_open_indexed_entry@0x44f390 indexes an 80-byte record table (FileDB+0x414 base, FileDB+0x40c count) at base+id*0x50 = the SYS4INI record layout {name[64],arc_id@0x40,file_number@0x44,offset@0x48,size@0x4c}. The FileDB is embedded at EngineCtx+0x9c24c, making those EngineCtx+0x9c660/+0x9c658. Confirmed statically: all 297 distinct base-corpus call-script ids resolve to a .BIN script with a semantically-exact name (0x1ab->ADDITEM, 0x2ae7->MES, 0x143->BUNKI, 0x329d->CALCREVISE), 0 out-of-range. See docs/engine-re.md + name-resolution.md #1. - -op 0x03 (call-script, argc 1): `call-script `. RESOLVED — the id is a direct RAW index into -the SYS4INI global file table (the same table parse_sys4ini.py reads, but indexed WITHOUT skipping -'@' placeholders; SYS4INI has 13208 records / 2 placeholders). No separate on-disk id->code registry -exists; SYS4INI *is* the call-script registry. -Native mechanism (dispatch table `handler(op)=ctx[0x26c93+op]`, op 0x03 -> FUN_0041bc90): - 1. FUN_0041bc90 fetches operand 1 (id), bounds-checks call depth (<=0x26), pushes a frame. - 2. FUN_0040e980 (loader): opens the resource by id, reads the 0x20-byte SYS4 header, checks magic, - allocates per-frame code/local buffers from the header var-counts, reads the bytecode body, - pushes a script frame (stride 0x1e = 30 dwords, indexed by ctx[0x14f45]). - 3. asset_open_indexed_entry@0x44f390 (resolver): its `this` is the embedded FileDB, not EngineCtx. - Base record = [FileDB+0x414] + id*0x50. It tries a LOOSE OVERRIDE first (CreateFileA on - record.name -> mod/patch hook point), else opens archive [record.arc_id*0x100 + FileDB+0x410], - SetFilePointer to record.offset, size = record.size. - High-byte-tagged ids select [FileDB+0x3028 + signed_selector*4] and index the chosen AAI by the - low 24 bits. The base corpus has 0/297 explicit high-byte call-script operands; INIT2 op 0x143 - supplies mounted record-zero ids dynamically. -Companion op 0x8f `call` is INTRA-script (a local JSR), not cross-script -- see its entry. -This also names the whole call graph statically (build/callscript-names.json). - - -### 0x6 `preload-script-slot` (preload-script-slot, argc 2) -- **summary:** (script_id, frame_slot) - load and allocate a script into a numbered engine context slot without executing it. Valid slots are 0..39. -- **grounding:** source=investigation, confidence=high -- **depended on by:** 0x8 -- **evidence:** Ghidra /v2: op_0x6_preload_script_slot@0x41bdb0 fetches script_id and frame_slot, saves the current context index, selects frame_slot, rejects values above 39, calls script_frame_load_resource(ctx+0x54fe8, script_id), restores the caller index, and throws on load failure. SYSTEM4's only three sites preload ATSEEK.BIN (0x337f) into slot 0x1d, SETROUTE.BIN (0x3380) into 0x1e, and MVSEEK.BIN (0x3381) into 0x1f before INIT2. - -Implemented as persistent VM-owned preloaded slots containing the resolved script id and one reusable ExecFrame. Replacing a slot allocates a fresh frame/local bank; invalid slots, absent providers, and unresolved scripts halt diagnostically. Root scene reload clears the slots before SYSTEM4 registers them again. - -### 0x8 `call-preloaded-script-slot` (call-preloaded-script-slot, argc 1) -- **summary:** (frame_slot) - restart and execute the script previously loaded into that engine context slot, returning to the caller when it exits. -- **grounding:** source=investigation, confidence=high -- **depends on:** 0x6 -- **evidence:** Ghidra /v2: op_0x8_call_preloaded_script_slot@0x41bf00 fetches frame_slot, switches cur_ctx_index to it, errors if frame_codebase is null, stores the caller context index into the selected slot's ctx_record_base, resets its PC to codebase and instruction length to zero, and returns to the dispatcher. op_0x2_exit_or_return_frame@0x417940 disposes only an adjacent child (parent+1==current); SYSTEM4's non-adjacent slots 0x1d..0x1f therefore retain their allocated local banks between calls. Corpus has 64 sites, exclusively slots 0x1d/0x1e/0x1f. FIELD uses 0x1f for MVSEEK, 0x1d for ATSEEK, and 0x1e for SETROUTE. - -Implemented by recursively executing the reusable preloaded ExecFrame while preserving its local banks across invocations, restarting at script offset zero, and propagating halt/root-reload/exit outcomes like ordinary call-script. The port emits normal call-script trace events for observability. Focused tests prove code restart plus local persistence and drive the real MVSEEK through SYSTEM4's exact 0x06/0x08 ABI. - -### 0x9 `exit-script` (exit-script, argc 0) -- **summary:** () - discard the complete active script stack, reset scene-owned engine services, and load raw script resource 0 as the new root. The global VM banks and process-owned configuration survive; the initial-root-run flag queried by op 0x130 is cleared so LOGO/OP are not replayed. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x9_reset_scene_and_reload_root@0x418f50 clears EngineCtx+0x54ff0, disposes all 40 interpreter-frame slots with script_frame_dispose@0x40e610, aborts timed/input callback state, calls scene_context_init_reset@0x40b3b0, resets hotspot/input services, optionally releases AutoFreeTex surfaces, then calls script_frame_load_resource(...,0). The scene reset clears interpreter/ADV/input/retained-gfx state and normally releases the 1000 surface/movie slots; it does not clear the VM global bank or engine configuration. Corpus sites are terminal scene/control exits rather than ordinary local returns. - -Implemented as a whole-stack root-reload boundary in the persistent VM. A request propagates through every nested call-script frame without resuming caller instructions, clears VM/host scene presentation and input state, cancels deferred SFX starts while preserving active/process-owned audio, preserves globals/external globals and process-owned host configuration/caches, then resolves raw resource 0 through the script provider and starts it at offset zero. The retained history backlog is deliberately preserved pending a separate proof of its native lifetime; recording suppression is reset. - -### 0x7b `coroutine-save-yield-handlers` (u0041ADB0, argc 2) -- **summary:** (handler1_pc)(handler2_pc) — scene-coroutine: save the two per-frame yield/resume handler PCs. Native writes op1→ctx[0x6da88+idx*4], op2→ctx[0x6db28+idx*4] (idx=ctx[0x53d14] script-context index); its generic handler prologue records the 5-dword instruction length. SC0000 0x79: `0x7b label_3c9 label_41e` registers the ADV per-frame render→poll→yield handlers. Part of the scene-coroutine framework (see engine-re.md §Scene-coroutine framework); pairs with 0x7c (resume) + 0x140 (loop iterator). -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra: handler FUN_0041ebf0 (dispatch ctx[0x26c93+0x7b]) = {frame_instruction_word_count[idx]=5; ctx[0x6da88+idx*4]=op1; ctx[0x6db28+idx*4]=op2}. Both operands are code PCs (handler labels). - -### 0x7c `coroutine-resume` (u00416A90, argc 0) -- **summary:** () — scene-coroutine RESUME point. Native requires run-state bit 0x2000000 (ctx[0x6dbc8]) set — THROWS (__CxxThrowException) if unset, so it is only ever reached on a scheduler-driven re-entry, NEVER on a cold first pass (cold flow jmps over it). Restores PC=ctx[0x53d28]+ctx[0x6dbcc]*4, clears the run-bit (ctx+0xa0ce4 &= ~0x2000000), resets input/line state. SC0000 0x443 (falls into the main loop label_444). See engine-re.md §Scene-coroutine framework. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra: handler FUN_00417cb0 (dispatch ctx[0x26c93+0x7c]). Guards on (ctx[0x6dbc8] & 0x2000000)==0 → throw; else restores PC = ctx[0x53d2c-slot] = ctx[0x53d28]+ctx[0x6dbcc]*4, ctx[0xa0ce4]=ctx[0x6dbc8]&0xfdffffff, clears input state (ctx[0x13bdc]/0xc6f8=-1 etc.). - -### 0x8f `call` (call, argc 1) -- **summary:** intra-script subroutine call (local JSR): PC = frame.codebase + operand*4; pushes a return address on the per-frame return stack. NOT cross-script (that is call-script 0x03). -- **grounding:** source=investigation, confidence=high -- **evidence:** native-RE (Ghidra): handler FUN_0041fba0 (= ctx[0x26c93+0x8f]) sets [frame PC @+0x53d2c] = [frame codebase @+0x53d28] + operand*4 and pushes ((pc-base)>>2)+3 onto the per-frame return stack ([ctx+0x552e8]/[ctx+0x55248]). Target is a code OFFSET within the current script (matches header table T3 tag 0x8F = local call targets), confirming it is a local JSR, not a script load. - -### 0xa1 `begin-value-switch` (begin-value-switch, argc 0) -- **summary:** Clear and initialize the current value-to-PC dispatch table used by the following case and switch-jump opcodes. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0xa1_handler@0x42bd60 resets the engine's open-addressing value-dispatch table with capacity 0xfff. Corpus has 12 canonical sequences of 0xa1, one or more 0xa2 cases, then 0xa3 dispatch. - -### 0xa2 `add-value-switch-case` (add-value-switch-case, argc 2) -- **summary:** (case_value)(target_pc) - format the VM value as a dispatch key and add its branch target to the current switch table. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0xa2_handler@0x42d310 formats operand 1 through vm_value_format_string@0x418860 and inserts operand 2 into value_dispatch_insert_case@0x42cf70. HISTORY.BIN maps action values 0,3,4,5,6 to callback branches; it is generic switch/case dispatch, not menu registration. - -### 0xa3 `value-switch-jump` (value-switch-jump, argc 2) -- **summary:** (selector)(default_target) - jump to the target registered for selector, or to the supplied default target when no case matches. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0xa3_handler@0x420060 formats operand 1, queries value_dispatch_lookup@0x419290, writes the matched or operand-2 default PC into the current frame, and clears the command type. Corpus pairs it with 0xa1/0xa2 in 12 generic switch sequences. - -### 0xae `continue-save-load-stack-restore` (continue-save-load-stack-restore, argc 0) -- **summary:** () - during serialized save restoration, replace the current frame PC with its saved resume/call target and advance through the saved script-context stack; otherwise a no-op. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0xae_continue_save_load_stack_restore@0x416790 first tests ctx+0x53d24 (set by save_data_deserialize_and_begin_restore@0x40fd10). When clear it returns. When set, it selects the serialized frame layout through set:SaveVersion1/2, restores the current PC from that layout's saved return/call target, advances through contexts with script_frame_restore_saved_layout@0x40f2d0, and clears the restore flag on reaching the saved terminal context. The restore helper calls script_frame_load_resource@0x40e980, which initializes each new frame PC to its script codebase; the script therefore executes its ordinary prologue before reaching 0xae. Native parent contexts retain restored coordinates while the child runs. SAVE00 -> SAVE03 proved the port must retain the terminal 0x1ad boundary; SAVE00 -> SAVE04 proved a managed parent parked at synthetic 0xae must serialize original resume=8/call=8 rather than synthetic -1/-1; slot 006 proved direct entry at 0xae skips FIELD's zoom-table prologue and collapses the dungeon map. Its 305 corpus sites overwhelmingly follow coroutine-resume/call boundaries. - -Layout 3 frame d259 indexes SYS4 T1 read-message reset sites, d260 indexes T2 call-script sites, and the saved local return stack indexes T3 local-call sites. Port status (2026-07-24): each saved script is loaded at its ordinary entry, runs its frame-local prologue, and reaches 0xae itself; the active path then reconstructs the saved recursive frame chain, preserves each synthetic ancestor's original T1/T2/T3 coordinates while its restored child is active, reinstates the terminal restored frame as opcode 0x1ad's save boundary, and resumes it at T1. The installed SAVE00 continuation gate proves SYSTEM4 -> FORT restoration reaches FORT's CHMENU gameplay poll; the unchanged port-authored dungeon slot 006 proves FIELD's pre-rendezvous zoom table is initialized; synthetic gates assert both root/child prologue execution, SaveRestore rather than ordinary CallScript entry, exclusion of nested SAVE helpers from a re-save, and reload of that rewrite without ordinary boot re-entry. - -### 0xc8 `sleep` (sleep, argc 1) -- **summary:** Pause the current script for milliseconds while retained presentation continues. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra: dispatch ctx[0x26c93+0xc8]=0x420ec0; sleep_op_0xc8 + sleep_timer_arm decoded/annotated 2026-07-08. docs/engine-re.md sleep section. - -Native handler sleep_op_0xc8 @0x420ec0 is NON-BLOCKING: it arms a timer (sleep_timer_arm @0x44cff0 at ctx+0x5f304 = active flag + start tick + duration) that the engine main loop polls, resuming the script when elapsed. Operand UNIT = MILLISECONDS (start = ms tick source DAT_0056f3d4, timeGetTime/GetTickCount class), and the native arm helper clamps duration to a minimum of 1 ms. ROOM's input loop deliberately uses sleep(0), making it a one-engine-tick yield rather than a no-op. The handler also records its generic 3-dword instruction length and runs anti-tamper checks, neither needed host-side. Port equivalent: the Godot host parks the VM thread for max(1, scaled duration) ms while the presentation compositor continues. Sleep is one proven presentation-capable service boundary; ordinary AE setup runs burst-fast to 0x21c and is not paced per opcode. Headless hosts no-op it (parity). - -### 0xd0 `get-monotonic-time-ms` (get-monotonic-time-ms, argc 1) -- **summary:** Write the native monotonic millisecond clock to operand 1. Battle presentation uses paired samples around timed callback sequences to calculate elapsed time. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0xd0_handler@0x428860 calls imp_winmm_timeGetTime and writes the returned 32-bit tick count to operand 1. BTL samples it before and after its timed HP/damage presentation; MVRTN has the other two corpus calls. - -### 0xd3 `begin-timed-callback-sequence` (u00425960, argc 0) -- **summary:** Clear and initialize the current script frame's timed local-callback sequence. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0xd3_handler@0x41a430 clears the 16-byte-entry vector at ctx+0x5f694, sets last index ctx+0x5f6a4 and abort target ctx+0x5f690 to -1, and resets playback cursor ctx+0x5f6a8 to zero. HISTORY.BIN@0xbf9 begins its seven-event scrollbar interpolation schedule. - -### 0xd4 `append-relative-timed-callbacks` (u004266F0, argc 4) -- **summary:** Append repeated relative deadlines and their on-time/catch-up local callback targets to the current frame's timed sequence. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0xd4_handler@0x428890 loops operand 2 times, accumulates operand 1 onto the preceding deadline, stores operand 3 at entry+8 and operand 4 at entry+0xc, and appends each 16-byte entry. HISTORY.BIN@0xbfa/0xc03/0xc0c produces deadlines 10,20,30,40,50,51,52 ms. - -### 0xd5 `run-timed-callback-sequence` (u004262C0, argc 1) -- **summary:** Start or service the frame-local timed sequence, dispatching scheduled local callbacks through the penultimate entry and selecting the catch-up target when the following deadline is already late. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0xd5_handler@0x421090 retains the current script resource, starts the ctx+0x5f3ac timer, sorts the schedule, and keeps run-state bit 0x40 active only while cursor < last_index, making the final entry a non-dispatched look-ahead sentinel. timed_callback_sequence_tick@0x408170 waits to each deadline, compares the following entry deadline with elapsed time to select entry+8 versus entry+0xc, redirects the frame PC, and advances ctx+0x5f6a8. engine_main_tick_with_exception_policy@0x411840 bypasses its ordinary gfx_render_frame path while only run-state bit 0x40 owns the wait. Operand 1 is an optional abort/fallback PC; HISTORY and BUNKIMOVE pass 0xffffffff. - -Run-state bit 0x40 suppresses the outer loop's ordinary retained-frame renderer while the timed service sleeps. A scheduled callback becomes visible only through its own explicit presentation opcode; the pacing wait is not itself a retained-state publication boundary. - -### 0xd9 `clear-run-state-0x1000` (u00415880, argc 0) -- **summary:** Clear native run/service bit 0x1000; if the secondary context is active, clear the same bit there. SC0000 executes it once after the initial SFX-channel reset, with no VM-visible result. -- **grounding:** source=investigation, confidence=high, noop_headless=True -- **evidence:** Ghidra op 0xd9 handler 0x416da0: ctx->run_state_flags &= ~0x1000; when ctx+0x6f8b8 is nonzero, also clears bit 0x1000 at ctx+0x53d20. No operands, calls, or return value. - -### 0x130 `get-initial-root-run` (get-initial-root-run, argc 1) -- **summary:** (out) - write the engine's initial-root-run flag. It is initialized to 1 when the AGE context is constructed and cleared by op 0x9 before that opcode resets state and reloads root script id 0. SYSTEM4 uses the value to call LOGO.BIN and OP.BIN only on the process's initial root run. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x130_get_initial_root_run@0x4295b0 copies EngineCtx+0x54ff0 to operand 1. FUN_00413860 initializes +0x54ff0 to 1 at 0x413cc7/0x413d15; op_0x9_reset_scene_and_reload_root@0x418f50 is its only later writer and clears it before scene_context_init_reset plus script_frame_load_resource(...,0). Corpus: sole site SYSTEM4@0x29a branches to LOGO.BIN then OP.BIN only when the returned value is nonzero. - -Implemented as process-lifecycle state owned by the persistent VM: it begins at one and op 0x9 clears it. It is not a script global, save/profile value, command-line seed, or script-name special case. - -### 0x140 `coroutine-label-yield` (u0041F9C0, argc 4) -- **summary:** (out)(name_str)(sub_str)(in) — scene-coroutine LOOP ITERATOR / labeled yield. Handler copies name/sub strings + the int operand and calls AGERC host command 8 through g_pfnAgercHostCallback(8, ctx[0x54fe8], &{name,sub,in}); writes the returned PC-like value to operand 1. In SC0000 label_462 'ループ開始' (@0x46d): `out=G[0x6be]=LABEL('J',G[0x6be])`; loop runs the intro-setup body (incl. call label_125bd = slot-table fill G[0x3239..0x324e]=4..11) and jmps back until out==G[0x6c3] (a per-scene exit-PC immediate) → mov aba5c 0 → content. The gate G[0xaba5c]==1 that opens this loop is NATIVE scene-entry state (no script sets it to 1). PORT = HOST-MODEL IMPLEMENTED: synthesize the ADV scene-entry gate, run the LABEL/J setup body once, then return the structurally discovered per-scene terminal; do not emulate the service dialog. See engine-re.md §Scene-coroutine framework. -- **grounding:** source=investigation, confidence=med -- **evidence:** Ghidra: handler 0x4299c0 (dispatch ctx[0x9b74c]=0x4299c0; created+typed EngineCtx*+annotated; Kelebek u0041F9C0 = VA-drift). Records the generic 9-dword instruction length; op2→local_204, op3→local_104, op4→local_208; g_pfnAgercHostCallback(8, ctx[0x54fe8], &local_210) → FUN_00425fb0(1,ret). A read-only probe resolves the callback to AGERC.DLL+0x1050; imported /support/AGERC.DLL identifies agerc_dispatch_host_command@0x100025f0 and its command-8 dialog-resource branch. FUN_00405740 calls the same dispatcher with command 3 and branches on return 1/2 for transition progress. Command 8's exact LABEL iterator calculation remains unresolved, so confidence remains medium. - -### 0x143 `run-mounted-append-autoruns` (u00415FB0, argc 0) -- **summary:** () - enqueue record zero from every mounted nonzero AAI selector in ascending selector order, then execute those packed scripts serially before resuming the caller. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x143_run_mounted_append_autoruns@0x4172f0 scans mounted_aai_catalogs[1..255] at EngineCtx+0x9f278, enqueues selector<<24 through script_launch_queue_enqueue@0x40f820 while dispatch is suppressed, advances the caller PC, then tail-dispatches through script_launch_queue_dispatch_next@0x40f6e0. Positive queue entries load in reserved frame 37 with return sentinel -10; op_0x2_exit_or_return_frame@0x417940 dispatches the next queued entry or restores the suspended caller. Corpus: the sole site is INIT2@0x17f, after its 23 base INIT children and global/array setup and immediately before TUNE.BIN. - -The opcode does not look up an AUTORUN filename. For each non-null mounted catalog pointer in selector -slots 1 through 255, it constructs the packed id `selector << 24`, whose low 24-bit record index is zero. -At Himegari cold boot the native catalog loader has already mounted APPEND01 in selector 1 before SYSTEM4 -starts. SYSTEM4 calls INIT2; INIT2 runs EBINIT through SCINIT plus BTANINIT2, completes its base registry -setup, executes this opcode, and resumes at its following TUNE call only after every queued record-zero -script returns. Installed selector 1 record zero is `$1$AUTORUN.BIN`, which applies the append INIT deltas -and registrations. This is a serial base-then-append patch boundary, not a filename overlay. - -PORT = IMPLEMENTED. `IScriptProvider.MountedAppendSelectors` exposes mounted selector identity without -coupling the VM to the SYS4 catalog type. The opcode snapshots, deduplicates, and sorts selectors, constructs -each packed record-zero id, and runs the resolved script through the ordinary nested-frame machinery before -resuming INIT2. Focused tests protect ordering, packed-id construction, caller suspension, and unresolved -record-zero failure. Natural SYSTEM4 boot proves BTANINIT2 -> `$1$AUTORUN.BIN` -> `$1$EBINIT.BIN` -> TUNE. - - -### 0x199 `yield-adv-coroutine` (u00414D50, argc 0) -- **summary:** Yield/re-enter the registered ADV coroutine handler. The fifth standard chrome button uses this transition to enter the HIDEWIN/window-hidden flow. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x199_yield_adv_coroutine@0x416440 selects the registered coroutine yield-A or yield-B PC according to ctx+0x6dbc8, saves the current resume offset/state, and redirects the current frame PC. SC0000's x=772 ADV button invokes it; the SO001 tooltip at source x=528 reads Window hide, and the surrounding coroutine calls HIDEWIN.BIN. - -### 0x19e `save-numbered-slot` (save-numbered-slot, argc 2) -- **summary:** (status_out)(slot) - write the active native VM/session state to `SAVE%02d.DAT`. The file is truncated/replaced in place after any compatibility-overwrite prompt; successful serialization also flushes shared `SAVE.DAT`/`RT.DAT`. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x19e_save_numbered_slot@0x4278b0 formats SAVE%2.2d.DAT, checks an existing header and prompts before replacing an incompatible file, opens CREATE_ALWAYS, reads set:SaveVersion2 then set:SaveVersion1, and calls context_state_serialize@0x40d320. Corpus: two calls in SAVE.BIN and SELSTAGE.BIN. - -Uses `set:SaveVersion1` and `set:SaveVersion2` to choose the numbered payload layout. Status is 0 on success and 1 on refusal, open/create failure, or serializer failure. Numbered `.DAT` files do not use the shared profile's temp/backup replacement scheme. Port status (2026-07-24): layout 3 writes fixed state, six native banks, T1/T2/T3 frame records, surface/resource reload state, retained gfx records, the appended history tail, and then flushes shared SAVE.DAT/RT.DAT. - -### 0x19f `load-numbered-slot-data-only` (load-numbered-slot-data-only, argc 2) -- **summary:** (status_out)(slot) - decode `SAVE%02d.DAT` without restoring the active script-frame chain or text history. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x19f_load_numbered_slot_data_only@0x427a40 opens SAVE%2.2d.DAT and calls save_data_deserialize_and_begin_restore@0x40fd10(handle, SaveVersion1, SaveVersion2, 0, 0), then decodes protected integer globals. Missing/open failure writes status 1; otherwise the decoder result is returned. Corpus count: 0. - -This is the data-only companion to full-resume opcode 0x1a1. It selects the configured SaveVersion layout and restores serialized state with both runtime/history restore flags clear. Himegari's shipped script corpus does not call it, but it belongs to the shared SYS4 persistence ABI. Port status (2026-07-24): implemented for layout 3 through the same bank/resource/gfx decoder without activating history or frame restoration. - -### 0x1a0 `query-numbered-save-metadata` (query-numbered-save-metadata, argc 9) -- **summary:** (status_out)(slot)(year)(month)(day)(hour)(minute)(second)(playtime_seconds) - validate a numbered `.DAT` header and return its timestamp and accumulated playtime. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x1a0_query_numbered_save_metadata@0x427ba0 calls save_container_read_and_validate_header@0x4306f0. It reads SYSTEMTIME WORDs at header +0x108/+0x10a/+0x10e/+0x110/+0x112/+0x114 and DWORD accumulated playtime at +0x118. Corpus: three calls in SAVE.BIN. - -Status 0 means valid metadata was written, 1 means the file could not be opened, and 2 means its native header was invalid or incompatible. Metadata comes from the fixed 0x124-byte S3SD/S4SD container header; no payload decode is needed. Himegari numbered files use compatibility id 0x42323234, distinct from shared SAVE.DAT/RT.DAT id 0x4a343234. Port status (2026-07-24): implemented through the native directory store with fixed-header-only reads. - -### 0x1a1 `load-numbered-slot-and-resume` (load-numbered-slot-and-resume, argc 2) -- **summary:** (status_out)(slot) - fully load `SAVE%02d.DAT`, including saved script frames and text history, then resume through `CALLBACK_LOAD.BIN` and opcode 0xae. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x1a1_load_numbered_slot_and_resume@0x427d30 calls save_data_deserialize_and_begin_restore@0x40fd10(handle, SaveVersion1, SaveVersion2, 1, 1), closes the file, and decodes protected integer globals. The loader activates the saved-frame state consumed by op_0xae. Corpus: one call in SAVE.BIN. - -The caller pre-seeds status to zero. A missing/open failure writes 1; success starts the asynchronous native stack-restoration rendezvous and does not overwrite that zero. This is the ordinary load-game path, unlike data-only opcode 0x19f. Port status (2026-07-24): layout 3 restores banks, history, surfaces/resources, and retained gfx, unwinds the obsolete managed call chain, then reconstructs saved frames through opcode 0xae. - -### 0x1a2 `store-shared-profile-int` (store-shared-profile-int, argc 1) -- **summary:** 0x1a2 (cell) — snapshot the selected global integer cell into AGE's shared SAVE.DAT profile table. Its native key is raw type byte `0x03` followed by eight lowercase ASCII hex digits for the lvalue's resolved global-bank index; the stored value is the cell's current raw 32-bit value. Insert-or-assign semantics replace an existing entry. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x1a2_store_shared_profile_int@0x42d360 reads operand 1 with vm_operand_fetch, resolves its cell index with vm_operand_lvalue (accepted types 3/6/0xc), formats `3%08x`, and calls hash_table_insert_or_assign with ECX=ctx+0x5190. shared_profile_payload_write@0x430a20 serializes each 12-byte key plus 32-bit value to SAVE.DAT. Corpus: 17,585 calls in 315 scripts; 17,539 use local-ptr after lookup-array and 46 use global-int. - -Paired reader 0x1a3 restores the same cell, returning zero when the key is absent. The table is embedded at ctx+0x5190, explicitly enumerated by shared_profile_payload_write into shared SAVE.DAT, and reconstructed by shared_profile_payload_read. It is not the retained gfx map, numbered SAVE##.DAT state, or RT.DAT ReadTextDB. Port status (2026-07-24): implemented through profile-owned SharedProfile state shared across fresh scene VMs and the native shared-payload/store lifecycle; direct globals and resolved global local-pointers are covered. - -### 0x1a3 `load-shared-profile-int` (load-shared-profile-int, argc 1) -- **summary:** 0x1a3 (cell) — restore the selected global integer cell from AGE's shared SAVE.DAT profile table. It resolves the same raw `0x03` plus eight-hex-digit cell-address key as 0x1a2 and overwrites the operand with the stored raw 32-bit value, or zero when the key is absent. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x1a3_load_shared_profile_int@0x427e90 resolves operand 1 with vm_operand_lvalue, calls shared_profile_int_lookup@0x4199d0 with the shared-profile object at ctx+0x4d7c, then vm_operand_write stores the result. The wrapper searches the table at object+0x414 = ctx+0x5190 and returns zero on a miss. Current override-aware corpus: 77 calls in 12 scripts. - -This is the read half of the shared-profile integer service, not a string operation. LOADCONFIG.BIN restores configuration globals with it; GAMESTART/GAMECLEAR and array-pointer call sites restore other selected profile-wide values. Port status (2026-07-24): implemented with 0x1a2 through the shared profile service and native payload codec. - -### 0x1a9 `store-shared-profile-string` (store-shared-profile-string, argc 1) -- **summary:** (cell) - snapshot the selected global string cell into AGE's shared `SAVE.DAT` profile table under a raw `0x05` type byte plus eight lowercase ASCII hex digits for the resolved global-bank index, replacing any earlier value. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x1a9_store_shared_profile_string@0x42d3e0 fetches operand 1's string, resolves the lvalue cell index, and calls shared_profile_store_string_by_typed_key@0x42d2b0 with type prefix 5. Corpus: 17 calls in GAMECLEAR, INPUTNAME, SAVE, and SELSTAGE. - -This is the string counterpart to integer-store opcode 0x1a2. The value is profile-wide rather than numbered-slot-local and is written by the shared profile lifecycle. Port status (2026-07-24): implemented for direct global strings and resolved global string-pointers. - -### 0x1aa `load-shared-profile-string` (load-shared-profile-string, argc 1) -- **summary:** (cell) - restore the selected global string cell from AGE's shared `SAVE.DAT` profile table using the raw `0x05` plus eight-hex-digit key; a missing key yields the native empty-string default. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x1aa_load_shared_profile_string@0x42bd90 resolves operand 1's lvalue index, calls shared_profile_load_string_by_typed_key@0x419ca0 with type prefix 5, and writes the result back through the VM string lvalue. Corpus: seven calls in GAMESTART, INIT2, INPUTNAME, and SAVE. - -This is the paired reader for opcode 0x1a9 and the string counterpart to integer-load opcode 0x1a3. Port status (2026-07-24): implemented through the shared profile service and native payload codec. - -### 0x1ab `delete-numbered-save` (delete-numbered-save, argc 2) -- **summary:** (status_out)(slot) - attempt to delete both `SAVE%02d.DAT` and its `SAVE%02d.STH` thumbnail. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x1ab_delete_numbered_save@0x427ed0 formats and calls DeleteFileA for the numbered .DAT and .STH paths with the layered status convention. Corpus: one call in SAVE.BIN. - -Both deletes are attempted. Status is 0 when both succeed, 1 when only the DAT delete fails, and 2 whenever the STH delete fails (taking precedence over a DAT failure). Port status (2026-07-24): implemented against the paired native filenames. - -### 0x1ac `copy-numbered-save` (copy-numbered-save, argc 3) -- **summary:** (status_out)(source_slot)(destination_slot) - copy both numbered `.DAT` state and `.STH` thumbnail, replacing destination files. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x1ac_copy_numbered_save@0x427fb0 formats source/destination SAVE%2.2d.DAT and SAVE%2.2d.STH paths and invokes CopyFileA with fail-if-exists false. Corpus: two calls in SAVE.BIN. - -Both copies are attempted with overwrite allowed. Status is 0 when both succeed, 1 when only the DAT copy fails, and 2 whenever the STH copy fails (taking precedence over a DAT failure). Port status (2026-07-24): implemented against the paired native filenames. - -### 0x1ad `mark-save-resume-frame` (mark-save-resume-frame, argc 0) -- **summary:** Mark the current script context as the highest frame serialized by numbered-save layouts 2/3. The native serializer saves frames 0 through this boundary and strips the boundary frame's return target so loading resumes it as the top frame. This opcode performs no file I/O itself. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x1ad_mark_save_resume_frame@0x416b70 writes decoded instruction size 1 and ctx+0x9928c=cur_ctx_index. context_state_serialize@0x40d320 uses that field (or cur_ctx_index when -1) as the inclusive frame cutoff for save layouts 2/3, serializes frames 0..cutoff, and forces the cutoff frame's saved return entry to -1. op_0x2_exit_or_return_frame@0x417940 clears the mark when unwinding below it. Corpus: 1,928 calls in 304 scripts; SC0000's six calls are at startup and immediately after HISTORY/MENU/HIDEWIN/INPUTNAME returns. - -Port status (2026-07-24): implemented as an active ExecFrame identity marker. It survives nested calls and clears when its owning frame unwinds; the following full numbered-payload slice will consume the exposed zero-based cutoff. - -### 0x1b2 `append-diagnostic-value` (u00425790, argc 1) -- **summary:** Format operand 1 with AGE's generic operand-to-string conversion and append its exact bytes to the context diagnostic accumulator. This does not present or clear the accumulated text. -- **grounding:** source=investigation, confidence=high -- **depended on by:** 0x1b3, 0x1b4 -- **evidence:** The real /v2 dispatch slot ctx+0x9b914 registers op_0x1b2_append_diagnostic_value@0x41f4b0. It formats operand 1 through vm_operand_format_as_string@0x41af90, measures the returned NUL-terminated bytes, and appends them to the embedded MSVC string at ctx+0x6f880. Himegari has two literal-string sites and one SYSTEM4 global-integer site. - -Implemented with an EngineCtx-lifetime accumulator shared across GameSession scene VMs. String operands append decoded text, integer and pointer forms append signed decimal, and float forms reproduce native `%lf`'s six fractional digits. - -### 0x1b3 `append-diagnostic-newline` (u004257D0, argc 0) -- **summary:** Append the literal CRLF byte pair to the context diagnostic accumulator without presenting or clearing it. -- **grounding:** source=investigation, confidence=high -- **depends on:** 0x1b2 -- **evidence:** The real /v2 dispatch slot ctx+0x9b918 registers op_0x1b3_append_diagnostic_newline@0x41a400. Its one operation appends two bytes from DAT_0057082c to the same embedded string at ctx+0x6f880; memory at that address is 0d 0a 00. Both Himegari sites immediately follow diagnostic construction. - -Implemented as an exact `\r\n` append to the shared diagnostic accumulator, including FIELD's persistent line and SYSTEM4's native post-clear newline. - -### 0x1b4 `show-and-clear-diagnostic` (u004237C0, argc 0) -- **summary:** Show the accumulated text plus native script-location context in a synchronous owner-window information message box, then erase the complete accumulator. -- **grounding:** source=investigation, confidence=high -- **depends on:** 0x1b2 -- **evidence:** The real /v2 dispatch slot ctx+0x9b91c registers op_0x1b4_show_and_clear_diagnostic@0x419240. It resolves the MSVC string bytes at ctx+0x6f880 and calls engine_host_show_message@0x403820 with owner HWND ctx+0x54fe8 and flags 0x10004. The thunk dispatches host_ui_interface vslot +4; the default host implementation at 0x431520 logs the raw text and calls age_show_message_box@0x409370. Flag 0x10000 appends `FILE=%s ADDRESS=%X LINE=%d COMMAND=%s(%d) DEPTH=%d`; low mode 4 formats `%s%s`, uses caption `エラーが発生しました`, and calls USER32 MessageBoxA with style 0x40 (MB_OK|MB_ICONINFORMATION). The optional command metadata at ctx+0x6ddac and source-line maps at ctx+0x6f798 are zero-initialized and have no writer in Himegari's release image, yielding `LINE=-1 COMMAND=-(436)` at this opcode. The opcode ignores the return, then calls msvc_string_erase(buffer,0,0xffffffff). SYSTEM4's sole site presents its invalid-execution-mode text and value; a following 0x1b3 appends CRLF to the now-empty accumulator. - -Implemented as a synchronous host effect. Himegari's release-only null debug tables make the native suffix deterministic (`LINE=-1 COMMAND=-(436)`); FILE, dword ADDRESS, and zero-based frame DEPTH come from the live instruction. Godot marshals `OS.Alert` to the main thread and parks the VM until dismissal; CaptureHost records the effect. The accumulator clears only after the host call returns. - -### 0x1cc `get-adv-read-skip-state` (get-adv-read-skip-state, argc 1) -- **summary:** (out) - copy the current ADV read/click-skip service state from ctx+0x6dbd4. label_1235a ORs it with 0x1c7's Ctrl/message-skip bit: zero takes 0x21c's normal transition/yield path; nonzero resets the animation service and presents the completed endpoint through 0x20c. -- **grounding:** source=investigation, confidence=high -- **depended on by:** 0x20c, 0x20d, 0x21c, 0x223 -- **evidence:** Ghidra handler 0x427330 calls vm_operand_write(1, ctx+0x6dbd4). adv_refresh_read_skip_state@0x406cd0 and op 0x6e/0x71/0x72 maintain the field from message:ReadTextSkip plus read_text_db_find_message_index@0x468f50 and read_text_db_is_message_read@0x469930. The database is engine-owned shared RT.DAT state keyed by raw packed script resource id and per-script message index, not VM globals or slot-local SAVE##.DAT data. adv_interpreter_tick consumes the result in click/read-skip control; it is not op 0x223 surface-transition progress. - -Port status (2026-07-24): the VM refreshes this state from message:ReadTextSkip plus the current packed script id/T1 message index at 0x6e, 0x71, and 0x72. It is shared-profile read history, not a host-only flag. - -### 0x21c `mark-frame-yield` (mark-frame-yield, argc 0) -- **summary:** Set native run-state bit 0x400; in normal ADV playback this is the retained-presentation render/wait/resume boundary. -- **grounding:** source=investigation, confidence=high -- **depends on:** 0x223, 0x1c7, 0x1cc -- **depended on by:** 0x223 -- **evidence:** Ghidra handler 0x417520 records the 1-dword instruction length and ORs ctx+0xa0ce4 with 0x400. engine_main_tick_with_exception_policy@0x411840 branch 0x4123d1 polls gfx_animation_service_poll; its active branch reads EffectSkipOnClick@0x570f60, rejects gfx_animation_service_flags bit 0, polls/consumes action-4 bit 0x10, clears run-state 0x400, calls gfx_request_force_complete_and_reset_anim_clock@0x4076c0, then gfx_render_frame. capture_presentation_trace.py: after 0x125a6 render, 0xcb8e/0xcb98 bind and 0xd5a/0xd63/0xd73/0xd8a mode+targets execute without render; repeated gfx_render_frame begins only at 0x21c. 2026-07-10, click lifecycle refined 2026-07-29. - -SC0000 label_1235a reaches this when 0x1c7/0x1cc are zero. Native run-state bit 0x400 parks the interpreter while gfx_render_frame repeatedly samples finite one-shot object channels and queued surface commands; op 0x224 follows after dirty state clears. When system:EffectSkipOnClick is enabled and animation-service flag bit 0 is clear, logical action 4 is consumed and run-state 0x400 is cleared before the engine requests the same forced completion as 0x243 and renders once. Wait release is independent of endpoint completion: service-flags bit 1 can suppress the force worker, while op-0x242-detached channels, ambient cycles, and movie-backed presentation can continue asynchronously after interpreter resume. With ordinary flags, the request completes finite color/scale/rotation/translation channels and type-0 surface commands together. Native trace proves AE001D bind, mode-1 0x203, and 0x202 targets complete in one 5 ms batch with no render, then first compose here. - -## draw - -### 0x21 `fade-surface-in-from-black` (u00418860, argc 2) -- **summary:** (surface_slot)(timing_argument) — block while fading from black to a captured full-frame surface. The captured surface remains the terminal frame. -- **grounding:** source=investigation, confidence=high -- **depends on:** 0x20c, 0x20d -- **evidence:** Ghidra /v2: dispatch slot 0x21 resolves to op_0x21_fade_surface_in_from_black@0x41cb00. With run_state_flags bit 0x08000000 clear, the handler sets effect-service bit 8, converts timing <=64 to interval=argument ms and alpha step=16 (otherwise interval=argument/16 and step=1), starts screen_transition_begin@0x439da0 mode 0, flushes the initiating trigger, and advances the PC. engine_main_tick_with_exception_policy@0x411840 owns natural progress and, when system:EffectSkipOnClick is enabled, forces action-4 clicks through screen_transition_tick@0x43a7a0 with delta 0x10000000. If fast-forward bit 0x08000000 was already set at dispatch, the handler instead publishes the operand-surface endpoint directly; it is not a post-transition re-entry. Corpus: 3 sites in EVOLVE, SELSTAGE, and STUDY, all (1,30), approximately 480 ms. - -Port status (2026-07-29, skip lifecycle corrected 2026-07-29): implemented through the blocking legacy full-frame transition host path. An explicit empty/black source endpoint is composited beneath the captured target. An already-active ADV fast-forward channel bypasses the timed service and publishes the target endpoint; logical action 4 forces an in-progress transition endpoint when system:EffectSkipOnClick is enabled. - -### 0x22 `fade-surface-out-to-black` (u00418920, argc 2) -- **summary:** (surface_slot)(timing_argument) — block while fading a captured full-frame surface to black. Black remains the terminal frame. -- **grounding:** source=investigation, confidence=high -- **depends on:** 0x20c, 0x20d -- **evidence:** Ghidra /v2: dispatch slot 0x22 resolves to op_0x22_fade_surface_out_to_black@0x41cbc0. With run_state_flags bit 0x08000000 clear, it uses the same timer/alpha-step conversion as 0x21/0x25, starts screen_transition_begin@0x439da0 mode 1, flushes the initiating trigger, and advances the PC. screen_transition_tick@0x43a7a0 keeps the operand surface opaque and raises black alpha 0->255; engine_main_tick_with_exception_policy@0x411840 owns natural and system:EffectSkipOnClick-forced completion. If fast-forward was already active at dispatch, the handler publishes black directly; it is not a post-transition re-entry. Corpus: 8 sites across ALCHEMY, CHMENU, EVOLVE, FORT, SELSTAGE, STUDY, and SUMMON, all (1,30), approximately 480 ms. - -Port status (2026-07-29, skip lifecycle corrected 2026-07-29): implemented through the blocking legacy full-frame transition host path. The captured source is composited beneath an explicit empty/black target endpoint. An already-active ADV fast-forward channel bypasses the timed service and publishes black; logical action 4 forces an in-progress transition endpoint when system:EffectSkipOnClick is enabled. - -### 0x23 `fade-surface-in-from-white` (u004189D0, argc 2) -- **summary:** (surface_slot)(timing_argument) — broader-AGE mode-2 sibling of 0x21: block while fading from white to a captured full-frame surface. -- **grounding:** source=investigation, confidence=high -- **depends on:** 0x20c, 0x20d -- **evidence:** Ghidra /v2: dispatch slot 0x23 resolves to op_0x23_fade_surface_in_from_white@0x41cc80 and starts screen_transition_begin@0x439da0 mode 2 with the same timing conversion as 0x21/0x22/0x25. Not observed in Himegari's script corpus. - -### 0x24 `fade-surface-out-to-white` (u00418A90, argc 2) -- **summary:** (surface_slot)(timing_argument) — broader-AGE mode-3 sibling of 0x22: block while fading a captured full-frame surface to white. -- **grounding:** source=investigation, confidence=high -- **depends on:** 0x20c, 0x20d -- **evidence:** Ghidra /v2: dispatch slot 0x24 resolves to op_0x24_fade_surface_out_to_white@0x41cd40 and starts screen_transition_begin@0x439da0 mode 3 with the same timing conversion as 0x21/0x22/0x25. Not observed in Himegari's script corpus. - -### 0x25 `crossfade-surfaces` (u00418B40, argc 3) -- **summary:** (source_surface)(target_surface)(interval_argument) — blocking legacy full-frame mode-4 alpha transition. The native engine composites the captured target surface over the captured source while an 8-bit alpha accumulator advances from 0 to 256. -- **grounding:** source=investigation, confidence=high -- **depends on:** 0x20c, 0x20d -- **evidence:** Ghidra /v2: dispatch handler op_0x25_handler@0x41ce00 checks ADV fast-forward bit 0x08000000. Clear: it sets effect-service bit 8, converts operand 3 to timer interval/alpha step (<=64: interval=arg ms and step=16; >64: interval=arg/16 ms and step=1), starts screen_transition_begin@0x439da0 mode 4, flushes the initiating trigger, and advances the PC. engine_main_tick_with_exception_policy@0x411840 polls interval_timer_poll_elapsed_steps@0x44d080 and calls screen_transition_tick@0x43a7a0; mode 4 draws source then target with progress alpha and commits target at 0x100. With system:EffectSkipOnClick enabled, logical action 4 is consumed and delta 0x10000000 forces that endpoint. If fast-forward was already set at dispatch, the handler calls screen_transition_finalize@0x4399c0 for the target directly; this is not post-transition re-entry. Thus ROOM argument 10 is about 160 ms and argument 30 about 480 ms. ROOM sites: 0x12f,0x7c6,0x856 use (1,2,10); 0x8dc uses (1,2,30). /v2 annotations corrected 2026-07-29. - -The handler uses an alpha step of 16 and timer interval=argument when argument <=64. Above 64 it uses step=1 and interval=argument/16. The main loop polls that timer and does not resume ordinary script execution until the target endpoint is presented. An already-active ADV fast-forward channel publishes the target without starting the service; with system:EffectSkipOnClick enabled, logical action 4 forces an in-progress service to the same endpoint. ROOM uses (1,2,10) for button/character entry and exit fades and (1,2,30) for the final fade before returning to TITLE. The port captures retained-frame snapshots whenever op 0x20c presents to a selected offscreen render target, then reproduces the blocking and forced-endpoint lifecycle in the interactive host. - -### 0x80 `set-default-gfx-object-slot` (u0041AF00, argc 1) -- **summary:** (slot) - select the retained graphics-object slot used when op 0x1d9 receives explicit slot zero. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x80_set_default_gfx_object_slot@0x41ed40 writes operand 1 to EngineCtx+0x14e08. op_0x1d9_handler@0x420a30 reads that field only when its operand-1 object slot is zero, otherwise it indexes the explicit slot; both paths write object+0x70. MENU-family scripts select working slots 7/8/9 on entry and restore slot 1 during teardown. - -### 0x131 `get-message-window-alpha` (get-message-window-alpha, argc 1) -- **summary:** (out) - read the configured `message:MesWinAlpha` value used to alpha-modulate the ADV chrome. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x131_handler@0x4295e0 calls the settings getter with `message:MesWinAlpha` and writes the result. HISTORY.BIN and the shared ADV redraw path compute (16-value)<<4 for the control-strip alpha. - -### 0x13a `register-numeric-glyph-style` (u0041F3A0, argc 6) -- **summary:** Register a decimal-glyph atlas style as (surface slot, source x/y, digit width/height); the handler admits style indices 0..10. -- **grounding:** source=investigation, confidence=high -- **depended on by:** 0x23b -- **evidence:** Ghidra /v2: op_0x13a_register_numeric_glyph_style@0x421ab0 writes operands 2..6 to EngineCtx+0x55180+style_index*0x14 after enforcing style_index<11. scene_context_init_reset@0x40b560 clears 200 bytes at +0x55180, exactly ten records; record 10 therefore overlaps ret_stack_a at +0x55248. Corpus: 74 sites in 24 scripts; all literal style registrations are 0..9. - -The five-dword definition is stored at EngineCtx+0x55180+style_index*0x14. Opcode 0x23b consumes it to turn an integer into retained draw objects, one atlas cell per decimal digit. Scene reset clears only ten physical records (200 bytes, indices 0..9); the admitted index 10 begins at EngineCtx+0x55248 and aliases the return-stack table. Himegari's literal registrations use only 0..9. The port safely models all eleven handler-addressable logical records without reproducing the overflow. - -### 0x141 `set-message-window-alpha` (set-message-window-alpha, argc 1) -- **summary:** (value) - write the configured `message:MesWinAlpha` value read by opcode 0x131. Himegari's CONFIG menu bounds the value to 0..16; larger values make the inverse-width opacity bar shorter. -- **grounding:** source=investigation, confidence=high -- **evidence:** CONFIG.BIN is a complete paired getter/setter proof: reset-defaults writes 4; the two message-window-opacity controls read op 0x131, increment/decrement within 0..16, then pass the result to op 0x141; the redraw path reads op 0x131 again and computes bar width (16-value)*80/16. The shared ADV/history paths independently consume the same getter as (16-value)<<4 alpha. - -### 0x1ae `write-numbered-save-thumbnail` (write-numbered-save-thumbnail, argc 3) -- **summary:** (status_out)(slot)(surface_slot) - encode the selected surface into the numbered save's separate `SAVE%02d.STH` thumbnail file. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x1ae_write_numbered_save_thumbnail@0x428100 creates SAVE%2.2d.STH with CREATE_ALWAYS and serializes operand 3's surface via the active renderer backend. Corpus: two calls in SAVE.BIN and SELSTAGE.BIN. - -Status is 0 on success, 1 when the file cannot be created/opened, and 2 when surface encoding or writing fails. Renderer backend selects a handle-based or path-based native worker. Himegari writes an ordinary bottom-up 24-bit BMP (112x84 in installed files), BGR rows with four-byte padding, under the .STH extension. Its bfSize field historically omits the 14-byte BITMAPFILEHEADER. Port status (2026-07-24): implemented with exact native BMP output and host surface capture. - -### 0x1af `load-numbered-save-thumbnail` (load-numbered-save-thumbnail, argc 3) -- **summary:** (status_out)(slot)(surface_slot) - decode the numbered save's separate `SAVE%02d.STH` thumbnail into a surface slot. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x1af_load_numbered_save_thumbnail@0x428240 opens SAVE%2.2d.STH and passes it plus operand 3's surface slot to the active renderer decoder. Corpus: one call in SAVE.BIN. - -Status is 0 on success, 1 when the file cannot be opened, and 2 when image decoding fails. The thumbnail format is owned by the renderer codec and is not embedded in the numbered `.DAT` payload. Port status (2026-07-24): implemented with 24-bit BMP decode and host surface replacement. - -### 0x1f6 `clear-retained-gfx-objects` (clear-retained-gfx-objects, argc 0) -- **summary:** Clear the complete retained gfx-object registry while preserving allocated surface resources. Subsequent object queries return absent until draw/geometry operations recreate records. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x1f6_clear_retained_gfx_objects@0x417430 passes ctx+0x46614 to retained_gfx_objects_clear@0x47cab0. The worker destroys every node in owner+0x408, resets its sentinel/count, and clears owner+0xb558/+0xb55c/+0xb564/+0xb568 plus bit 0x10000 state. DATA1: 293 calls in 146 scripts; 146 continue to 0x23d and 143 to 0x20e. - -The handler clears the map embedded at retained-gfx owner+0x408, resets its count and transient dirty/force flags, but does not release the 1000 surface slots or clear the separate queued-surface-command list. Corpus call sites pair it either with 0x23d for a full transient-resource reset or with 0x20e for a backbuffer clear. - -### 0x1f7 `gfx-elem-erase` (gfx-elem-erase, argc 2) -- **summary:** 0x1f7 (handle)(count) — erase retained gfx objects. Handler 0x422270 calls gfx_object_erase_range@0x47d8b0 for [handle,handle+count) when count>1, else gfx_object_erase@0x47d850. This removes entries from the same object map queried by op 0x215, so erased objects stop compositing. SC0000 uses it before op 0x1fa releases the returned surface slot. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra handler 0x422270; gfx_object_erase_range@0x47d8b0 loops gfx_object_erase@0x47d850. Both operate on owner+0x408, the retained-object map also used by gfx_object_get_or_create/draw and gfx_object_query_source_slot. - -### 0x1f8 `create-texture` (create-texture, argc 4) -- **summary:** Allocate/prepare a texture slot: (slot, width, height, flag). e.g. `create-texture 0xd 0x190 0x1e 0x0` = slot 13, 400x30. -- **grounding:** source=investigation, confidence=med -- **evidence:** SC0000 CG/UI-draw path disasm; slot/w/h roles read off the operands (400x30 text bars, etc.). - -### 0x1f9 `set-texture` (set-texture, argc 3) -- **summary:** Load a texture by universal packed SYS4INI/AAI id into a mode-0 surface slot: (resource_id, slot, colorkey). A zero high byte directly indexes the flat base catalog; a nonzero high byte selects an AAI mount and uses the low 24 bits. This is the same addressing contract as 0x249; only the native surface mode differs. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2 gfx_op_0x1f9_load_surface@0x422360 fetches operand 1 and passes it unchanged to asset_open_indexed_entry@0x44f390. asset_catalog_parse_base_tables@0x44e7e0 builds one flat entry array; the opener has no scene/context input and directly indexes that array for high-byte zero. SC0010 set-texture 0x21 proves the distinction outside SC0000: raw 0x21 is SO013A.AGF, while adding SC0010's 0x11e section position lands on unrelated COL0023.OGG. The earlier 586/595 Frida correlation established that SYS4INI file_number describes grouping/order, not runtime operand rebasing. - -### 0x1fa `gfx-elem-release` (gfx-elem-release, argc 1) -- **summary:** 0x1fa (surface_slot) — release the surface at ctx+0x52bd4[slot] (virtual free, then null) and call FUN_00474e40(slot). It releases a surface slot, not a retained object handle. SC0000 feeds it the slot returned by op 0x215 after op 0x1f7 erases the associated object group. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra handler 0x4224a0 (dispatch ctx[0x26c93+0x1fa]); frees ctx+0x52bd4[operand1*4] via vtbl, then FUN_00474e40(operand1). - -### 0x1fb `draw-texture` (draw-texture, argc 8) -- **summary:** Blit a texture slot to screen. Observed 8 args: (handle, slot, srcx, srcy, w, h, dstx, dsty). e.g. `draw-texture 0xcf08 0x3 0 0 0x320 0x258 0 0` = full-screen (800x600) slot 3 at (0,0). -- **grounding:** source=investigation, confidence=med -- **evidence:** SC0000 CG-load subroutine label_12649: `draw-texture (ptr) (slot) 0 0 (w) (h) (dstx) (dsty)`; full-screen slot-3 draws use 0x320x0x258 (800x600). - -### 0x1fd `gfx-set-scale-current` (u00420620, argc 4) -- **summary:** (handle)(scale_x_percent)(scale_y_percent)(scale_z_percent) — immediately replace the retained object's current scale matrix at obj+0x6c. The handler divides each integer operand by 100.0 before calling matrix4_make_scale; this is distinct from 0x21e's delayed one-shot target scale. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: handler gfx_op_0x1fd_set_vec_scaled@0x422650 fetches operands 2..4, divides each by the 100.0 constant, and calls gfx_object_set_scale_current@0x47e6b0. The worker gets/creates the object, marks obj+0x68, and calls matrix4_make_scale on obj+0x6c. SC0000 sets AE001D handles to 210/210/100 and 240/240/100; without this setter their 800x800 alpha circles remain below the viewport. Both functions annotated and /v2 saved 2026-07-11. - -### 0x1fe `set-current-rotation-axis-angle` (set-current-rotation-axis-angle, argc 5) -- **summary:** (handle)(axis_x)(axis_y)(axis_z)(angle_degrees) — immediately replace the retained object's current axis-angle rotation matrix. This is the direct-current companion to op 0x21f's delayed one-shot rotation target. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x1fe_set_rotation_current@0x422700 converts operands 2..5 to float and calls gfx_object_set_rotation_current@0x47e720. The worker gets/creates the handle, marks transform state at obj+0x68, stores current axis obj+0x1ec..0x1f4 and angle degrees obj+0x204, converts degrees to radians with pi/180, builds the current matrix at obj+0xec through matrix4_make_axis_angle, and sets retained-gfx redraw dirty owner+0xb558 (EngineCtx+0x51b6c). The finite-channel consumer composes this current matrix between scale and translation. Corpus: 186/187 calls use Z axis (0,0,1); the lone DEBUG call uses Y axis (0,1,0). - -### 0x1ff `set-current-translation` (set-gfx-geom3-c, argc 4) -- **summary:** 0x1ff (handle)(x)(y)(z) — immediately replace the retained object's current translation matrix at obj+0x16c. This is the direct-current companion to 0x220's delayed target at obj+0x1ac. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: handler gfx_op_0x1ff_set_geom3@0x4227b0 converts operands 2..4 to float and calls gfx_object_set_translation_current@0x47e800. The worker gets/creates the object, marks obj+0x168, and calls matrix4_make_translation on obj+0x16c. SC0000 uses (0,0,0) before animating BG001A. Annotated and saved 2026-07-11. - -### 0x202 `gfx-blit-color` (gfx-blit-color, argc 5) -- **summary:** 0x202 (handle)(delay_ms)(duration_ms)(alpha)(color) — arm the one-shot packed-ARGB channel. Worker gfx_op_0x202_worker_set_color_anim @0x47ea00 resets shared start obj+0x34, writes delay +0x38, duration +0x4c, and target +0x64. gfx_object_apply_transform_channels @0x472f00 linearly interpolates each byte from current +0x60 on retained-gfx owner+0xb550 (EngineCtx+0x51b64), commits the target, clears timing, writes target -1, and clears the one-shot active bit when all sibling channels finish. Negative alpha/RGB independently preserve current bytes. Implemented in GfxState with synchronized current/target timeline evidence; draw-string 0x204/0x7a remains separate. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra handler 0x4228d0 packs operands 4/5 and calls worker 0x47ea00(handle,delay,duration,packed). Consumer 0x472f00: shared start +0x34; color delay/duration +0x38/+0x4c; current/target +0x60/+0x64; frame clock retained-gfx owner+0xb550 (EngineCtx+0x51b64); bytewise integer LERP; natural or owner+0xb55c (EngineCtx+0x51b70) forced completion. /v2 annotated and saved 2026-07-10. - -### 0x203 `gfx-draw-color` (gfx-draw-color, argc 4) -- **summary:** 0x203 (handle)(mode)(alpha)(color) — worker stores the D3D blend selector at obj+0x30 and STATIC packed color at obj+0x60; the handler's ctx+0x53d88 write is the generic 9-dword instruction length. Negative alpha/RGB preserve current static bytes. Mode 0 is the default textured path: preserved 0xffffffff is identity (the alpha byte is not tint strength). Its consumption is order-sensitive: a post-bind write supplies opacity until the next draw-texture bind, covering both FIELD's bound idle-unit suppression and CALLBACK_SETTING's freshly rebuilt ADV backing; pre-bind alpha-zero initialization remains opaque after the later bind. Mode 1 is SRCALPHA/ONE additive glow with ARGB alpha scaling the source contribution and RGB providing multiplicative modulation. Mode 2 conditionally forces ONE/ZERO for the selected render target and is used by 0x223 transition sources; mode 3 selects a subtractive special path. Surfaceless mode-0 fill consumption remains distinct. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra handler 0x4229a0; negative operands read current obj+0x60, then worker 0x47e9b0 stores op2 at obj+0x30 and ARGB at +0x60. gfx_object_composite call-site 0x47f78f passes +0x30/+0x60 directly to gfx_object_blit_d3d9. Correct D3D9 constants at 0x4774c0 prove mode 1 writes SRCBLEND=5/SRCALPHA and DESTBLEND=2/ONE, not INVSRCALPHA. TITLE draws two opaque-black, no-colorkey SO022 flame sprites with mode 1; additive composition removes black and preserves the blue glow, verified in a windowed capture. Mode 2 transition setup and synchronized pixels prove 0xffffffff is identity, not solid white. SC0000 page 14 adds the mode-0 endpoint proof: after the EV052CA->EV052DA 0x223 crossfade, 0x203@0x12478 restores the base CG to mode 0 with preserved 0xffffffff; native keeps EV052DA visible while the port's tint-strength interpretation turns every texel white. FIELD's movement lifecycle clones idle handle 0x9c40+entity to temporary handle 0x9c40+0x76c, writes mode-0 alpha zero to the bound idle handle at 0x45dc/0x4699/0x5210, animates only the temporary handle, then DRAWCH rebinds the idle handle at the next tile. CALLBACK_SETTING independently erases the ADV family, binds SO001 to fresh handle 0xd2f0, reads message:MesWinAlpha, and writes (16-value)<<4 through static mode-0 0x203 before presenting. Rendering post-bind static mode-0 alpha as inert causes both the stationary FIELD ghost and the reported always-opaque post-CONFIG message window. - -### 0x205 `draw-formatted-integer` (u00420A60, argc 6) -- **summary:** Format an integer into a fixed-width decimal field and rasterize it immediately into a numbered graphics surface using the current font/color/effect state. -- **grounding:** source=investigation, confidence=high -- **depends on:** 0x75, 0x204 -- **evidence:** Ghidra /v2: op_0x205_handler@0x422ab0 fetches (surface,x,y,value,width,flags), calls format_integer_for_surface@0x407190, then draw_string_to_surface@0x450150. DRAWENP contains all 16 previously stubbed calls responsible for its level, HP/SP/FS, and stat values. - -The field width includes an optional sign. Bit 0 zero-pads; bit 1 centers omitted leading cells; bit 2 left-aligns; bits 3/4 request '+' for positive/zero; bit 5 renders zero with '-'. With bit 16, output remains half-width ASCII and omitted-cell x adjustment uses half the current font cell advance; otherwise the formatter converts digits/signs to full-width CP932. Default alignment preserves the field's right edge by shifting x right for each omitted leading cell. - -### 0x207 `copy-surface-rect` (copy-surface-rect, argc 8) -- **summary:** Copy a rectangular pixel region between mutable graphics surfaces: (source_surface, destination_surface, source_x, source_y, width, height, destination_x, destination_y). -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x207_handler@0x422b50 constructs source [x,y,x+w,y+h] and destination [dx,dy,dx+w,dy+h] rectangles and calls gfx_copy_surface_rect@0x477da0. The worker validates both surface slots, clips both rectangles together, marks the destination dirty, and copies through locked D3D surfaces. Corpus: 15 calls total: DRAWMINIMAP 8, STATUS 3, READICON 2, DRAWTIP 2. - -The worker clips the paired source and destination rectangles against both surfaces while preserving their correspondence, returns successfully for an empty clipped rectangle, and marks the destination surface dirty. Himegari uses the opcode for minimap markers plus STATUS, READICON, and DRAWTIP surface composition. - -### 0x208 `get-texture-size` (get-texture-size, argc 3) -- **summary:** 0x208 (slot)(out_w)(out_h) — writes the loaded texture's width/height into two output globals; keystone for bytecode-computed sprite/bg geometry (SC0000 label_12649) -- **grounding:** source=inference, confidence=med -- **evidence:** SC0000 label_12649: set-texture(resId,slot) then 0x208(slot)->w,h feeds w/2 horizontal-center + foot-anchor subtraction into draw-texture dst; stubbing yields 0x0 sizes / off-center draws - -### 0x20b `fill-surface-rect` (fill-surface-rect, argc 7) -- **summary:** (surface_slot)(x)(y)(width)(height)(alpha)(rgb) - fill a clipped rectangle on a graphics surface with the supplied color and alpha. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x20b_handler@0x422d50 converts x/y/width/height to an exclusive rectangle, clamps alpha to 255, repacks RGB to native ARGB, and calls the surface manager's rectangle-fill path at 0x4790e0. HISTORY.BIN clears each 600x30 name strip on temporary surface 0xc1 before draw-string. - -### 0x20c `present-frame` (present-frame, argc 0) -- **summary:** Draw every visible retained object over the selected target without implicitly clearing it, then present the composited backbuffer; label_1235a uses this on the read/message-skip branch to expose the completed foreground endpoint immediately. -- **grounding:** source=investigation, confidence=high -- **depends on:** 0x223, 0x1c7, 0x1cc -- **depended on by:** 0x21, 0x22, 0x23, 0x24, 0x25, 0x20d, 0x223 -- **evidence:** Ghidra /v2: dispatch table FUN_00413860 param_1[0x26e9f]=gfx_op_0x20c_present_frame; 0x26e9f-0x26c93=0x20c. The handler calls gfx_render_frame@0x4820b0, which begins a D3D scene, consumes queued surface commands, draws all visible retained objects, ends the scene, and presents the backbuffer without calling d3d_clear_render_target_black; opcode 0x20e is the separate clear. Refined 2026-07-30. - -Native handler gfx_op_0x20c_present_frame -> gfx_render_frame @0x4820b0. This is an explicit retained-state publication boundary, not a continuously visible object-store mutation. The renderer does not clear its selected target: opcode 0x20e owns explicit black clearing, so full-frame publication preserves preceding target pixels beneath its redraw. The read/message-skip branch resets the animation service then presents; the port publishes and snaps pending 0x223 state here. Normal playback branches to 0x21c, which owns repeated render/wait/resume. Headless hosts remain non-blocking. - -### 0x20d `select-render-target` (select-render-target, argc 1) -- **summary:** Select an offscreen surface slot as Direct3D render target 0, or restore the device backbuffer when the operand is at least 1000. -- **grounding:** source=investigation, confidence=high -- **depends on:** 0x20c, 0x1c7, 0x1cc -- **depended on by:** 0x21, 0x22, 0x23, 0x24, 0x25 -- **evidence:** Ghidra /v2: op_0x20d_select_render_target@0x422e10 passes operand 1 and retained-gfx owner ctx+0x46614 to retained_gfx_select_render_target@0x479660. Its D3D calls resolve texture level 0 or backbuffer 0, then invoke device vtable +0x94 SetRenderTarget and store selected slot at owner+0xb530. DATA1: 113 calls in 24 scripts. - -For slots below 1000 the native worker obtains that surface's level-0 D3D texture surface and calls IDirect3DDevice9::SetRenderTarget(0,...). The >=1000 path obtains backbuffer 0 and records current target -1. Himegari commonly follows a freshly created blank surface selection with 0x20e before drawing into it. - -### 0x20e `clear-render-target` (clear-render-target, argc 0) -- **summary:** Clear the currently selected render target to black and reset its depth buffer to 1.0. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x20e_clear_render_target@0x4174f0 passes renderer ctx+0x46188 to d3d_clear_render_target_black@0x471460. The worker calls device pointer +0x410, vtable +0xac with (0,NULL,3,0,1.0f,0). DATA1: 345 calls in 167 scripts; 57 directly follow 0x20d and 143 directly follow 0x1f6. - -This is a target-pixel operation, not retained-object teardown. It invokes IDirect3DDevice9::Clear with zero rectangles, flags D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER (3), color 0, depth 1.0, and stencil 0. The port tracks 0x20d target ownership and forwards the clear to the host; its retained compositor already rebuilds the backbuffer from black. - -### 0x20f `play-modal-movie-to-surface` (play-modal-movie-to-surface, argc 3) -- **summary:** (packed_resource_id)(surface_slot)(movie_flags) - open a universal packed SYS4INI/AAI MPEG asset into an existing retained surface, start its native movie graph, and arm modal run-state bit 0x2000 so script execution remains parked until the movie completes or is skipped. This is the LOGO/OP/ED whole-movie path; op 0x236 uses the same resolver with non-modal lifecycle. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x20f_play_modal_movie_to_surface@0x422e50 requires an existing retained D3D target, shares the movie-object allocation, DirectShow graph open, audio-route, and volume setup used by 0x236, then calls movie_start_modal_playback@0x463280, ORs EngineCtx+0xa0ce4 with 0x2000, and marks movie presentation dirty. It does not reload/rebind the gfx surface record or assign an RGB color key. The start worker calls IMediaControl::Run at vtable +0x1c on the freshly stopped graph; AGE performs no explicit Pause, seek, or opening-frame decode. DirectShow's stopped-to-paused-to-running transition cues the first sample. movie_texture_renderer_receive_sample@0x4628d0 copies it to the D3D texture and sets renderer +0x5b4; movie_consume_renderer_new_frame_flag@0x405120 makes the outer tick render it. Native OP then advances video immediately with audio, so FFmpeg's roughly 600 ms shared-mux video origin is not an AGE-visible hold. Corpus has exactly three sites: LOGO (0x335f,42,4), OP (0x3364,42,4), and ED (0x3324,42,dynamic flags). - -Implemented through IHost.PlayModalMovieToSurface. Its operand uses the same native universal packed-id catalog contract as 0x236; the separate host call exists for modal wait/cancel lifecycle, not a different resolver. ResourceMap.ResolveMovie selects through ResolvePacked and retains MPEG signature validation in ReadMovie. Godot reuses the asynchronous FFmpeg decoder/retained-surface compositor, parks only the VM thread until EOF, and treats mouse click or Accept/Cancel input as completion before wrapper cleanup releases both video and per-playback audio output. Movie playback leaves the existing mutable target at resourceId 0 with no RGB color key; MovieSurfaceRegistry supplies its live pixels. Audio-bearing movies deliver timestamped stereo float PCM through AudioStreamGenerator and use the sound-hardware position as the master clock. The first decoded image is latched before audio starts, and all video deadlines are rebased to the first video PTS while the complete audio stream begins at its own timestamp zero. No opening samples are discarded. - -### 0x215 `query-gfx-object?` (query-gfx-object?, argc 2) -- **summary:** 0x215 (out_slot)(handle) — query the retained gfx-object map. Handler gfx_op_0x215_query_source_slot@0x42a0b0 calls gfx_object_query_source_slot@0x47f280 with owner ctx+0x46614. The worker searches owner+0x408, the same map populated by geometry/draw workers, and returns obj+4: the live source-surface slot written by draw-texture, or -1 if absent. gfx_object_init_default zeroes obj+4, so a geometry/animation-created but draw-unbound object returns slot 0, not -1. SC0000 uses a successful result for query-guarded teardown: op 0x1f7 erases the object group and op 0x1fa releases this slot. Matching the zero default prevents stale transforms from surviving into the EV050EA CG at SC0000 page 58. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra: handler 0x42a0b0 passes ECX=ctx+0x46614 to 0x47f280, which searches ECX+0x408 and returns object+4. gfx_object_bind_draw@0x47e870 writes the bound slot there; gfx_object_init_default@0x472810 explicitly writes zero to dword index 1. SC0000 page-58 trace: the old -1 default skipped cleanup of transform-created handle 0xcb2a, then EV050EA inherited translation (-100,0), rotation -90, and alpha 0; the native zero default makes the guard succeed and the reused object is identity/opaque. - -### 0x216 `query-gfx-field?` (query-gfx-field?, argc 2) -- **summary:** 0x216 (out)(idx) — handler gfx_op_0x216_query_table46d14 @0x42a0f0: out = *(ctx+0x46d14 + idx*0x14). The generic instruction length is 5 dwords. A per-object field query over a stride-0x14 table. See docs/engine-re.md gfx op-contract table. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra handler 0x42a0f0; reads ctx+0x46d14[operand2 * 0x14], writes operand1 via FUN_00425fb0(1,·). - -### 0x217 `set-gfx-geom3` (set-gfx-geom3, argc 4) -- **summary:** 0x217 (handle)(a)(b)(c) — handler gfx_op_0x217_set_geom3 @0x4231b0 SETS a 3-vector (int→float a,b,c) on object `handle` via native worker FUN_0047e960; its generic instruction length is 9 dwords. In SC0000 label_12649 it writes the anchor vector G[0x6249b/c/d] INTO the object; op 0x218 reads it back. See docs/engine-re.md gfx op-contract table. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra handler 0x4231b0 (dispatch ctx[0x26c93+0x217]); FUN_0047e960(op1,(float)op2,(float)op3,(float)op4). label_12649 sites e.g. 0x00c67 handle=G[0x62457], vec=G[0x6249b/c/d]. - -### 0x218 `get-gfx-geom3?` (get-gfx-geom3?, argc 4) -- **summary:** 0x218 (handle)(out_a)(out_b)(out_c) — handler gfx_op_0x218_query_geom3 @0x42a130 GETS a stored 3-vector from object `handle` (FUN_0047f360) into out_a/b/c; its generic instruction length is 9 dwords. In label_12649 it reads the object's anchor vector back into G[0x6249b/c/d] — a stubbed DRIVER of the render drift (stale anchor → bad centering). See docs/engine-re.md gfx op-contract table. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra handler 0x42a130; FUN_0047f360(obj op1) + 3x FUN_00550850→FUN_00425fb0(2/3/4). label_12649 site 0x00c8f handle=G[0x62457] → G[0x6249b/c/d]. - -### 0x219 `set-gfx-geom3-b` (set-gfx-geom3-b, argc 4) -- **summary:** 0x219 (handle)(a)(b)(c) — handler gfx_op_0x219_set_geom3 @0x423240 SETS a 3-vector (int→float) on object `handle` via native worker FUN_0047e910 (sibling of 0x217, a different per-object vector); its generic instruction length is 9 dwords. See docs/engine-re.md gfx op-contract table. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra handler 0x423240 (was unanalyzed; function created this session; dispatch ctx[0x26c93+0x219]); FUN_0047e910(op1,(float)op2,(float)op3,(float)op4). - -### 0x21a `get-gfx-geom3-b?` (get-gfx-geom3-b?, argc 4) -- **summary:** 0x21a (handle)(out_a)(out_b)(out_c) — handler gfx_op_0x21a_query_geom3 @0x42a1b0 GETS a stored 3-vector from object `handle` (FUN_0047f2e0) into out_a/b/c; its generic instruction length is 9 dwords. In label_12649 it reads the object's position vector into G[0x62498/9/a] — a stubbed DRIVER of the render drift. See docs/engine-re.md gfx op-contract table. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra handler 0x42a1b0; FUN_0047f2e0(obj op1) + 3x→FUN_00425fb0(2/3/4). label_12649 site 0x00c86 handle=G[0x62457] → G[0x62498/9/a]. - -### 0x21d `clone-gfx-object` (clone-gfx-object, argc 2) -- **summary:** (source_handle)(destination_handle) - clone the complete retained gfx object record (0xb5 dwords / 0x2d4 bytes). SC0000 uses destination=source+1 as range A's old-frame snapshot immediately before 0x223 crossfades range B's updated source into target handle source+2. -- **grounding:** source=investigation, confidence=high -- **depends on:** 0x223 -- **evidence:** Ghidra handler 0x423310 -> gfx_object_clone@0x47e4f0. Worker requires source in retained-gfx owner+0x408 (EngineCtx+0x46a1c), creates destination, copies exactly 0xb5 dwords from source object record, then marks owner+0xb558 (EngineCtx+0x51b6c) dirty. SC0000 site 0x128fc passes current handle and handle+1 before queueing 0x223 at 0x129e7. - -### 0x21e `set-anim-transform-norm` (set-anim-transform-norm, argc 6) -- **summary:** (handle)(delay_ms)(duration_ms)(sx)(sy)(sz) — set the normalized SCALE-matrix channel (100=identity). Target obj+0xac is linearly sampled from current obj+0x6c by gfx_object_apply_transform_channels@0x472f00 on retained-gfx frame time owner+0xb550 (EngineCtx+0x51b64), after delay and for duration, then committed. Shares only start timestamp obj+0x34 with op 0x220; neither Z is opacity. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra 0x47eaa0 calls matrix builder 0x48af1d for target obj+0xac. Consumer 0x472f00 uses delay obj+0x3c, duration obj+0x50, current obj+0x6c, target obj+0xac, shared start obj+0x34, and retained-gfx frame time owner+0xb550 (EngineCtx+0x51b64). - -### 0x21f `set-anim-rotation-axis-angle` (set-anim-rotation-axis-angle, argc 7) -- **summary:** (handle)(delay_ms)(duration_ms)(axis_x)(axis_y)(axis_z)(angle_deg) — set the delayed one-shot axis-angle rotation channel. Handler converts axis/angle integers to floats; worker stores target axis obj+0x1f8 and angle obj+0x208 and builds target matrix obj+0x12c. gfx_object_apply_transform_channels samples current axis/angle linearly on shared start obj+0x34 and composes T(-anchor)*scale*rotation*translation*T(anchor). -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra handler 0x423410 -> gfx_object_set_rotation_channel@0x47eb70; consumer gfx_object_apply_transform_channels@0x472f00 uses delay +0x40, duration +0x54, current axis +0x1ec/angle +0x204, target axis +0x1f8/angle +0x208, current matrix +0xec and target +0x12c. Native SC0000 handle 0xcb8e sample at 11/390 of axis (0,0,1), 30deg matches matrix [0.9055,0.0134;-0.0134,0.9055] and translation (74.1449,47.3127). - -### 0x220 `set-anim-transform-abs` (set-anim-transform-abs, argc 6) -- **summary:** (handle)(delay_ms)(duration_ms)(tx)(ty)(tz) — set the absolute TRANSLATION-matrix channel. Target obj+0x1ac is linearly sampled from current obj+0x16c by gfx_object_apply_transform_channels@0x472f00 on retained-gfx frame time owner+0xb550 (EngineCtx+0x51b64), after delay and for duration, then committed. Independent of op 0x21e scale; neither Z is opacity. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra 0x47ecc0 calls matrix builder 0x48afb1 for target obj+0x1ac. Consumer 0x472f00 uses delay obj+0x44, duration obj+0x58, current obj+0x16c, target obj+0x1ac, shared start obj+0x34, and retained-gfx frame time owner+0xb550 (EngineCtx+0x51b64). - -### 0x222 `present-gfx-object-range` (present-gfx-object-range, argc 2) -- **summary:** (first_handle)(count) - flush/present retained graphics objects in the selected handle range into the currently selected backbuffer or offscreen render target, then clear their pending update flags. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x222_handler@0x4235e0 calls gfx_present_object_range@0x482230. The worker enters the graphics service, walks the retained-object map, processes flagged objects whose handles fall in [first,first+count), clears pending flags, and finalizes the render batch in the D3D target previously selected by op 0x20d. HISTORY.BIN uses (0,60000) for the backbuffer. SAVE.BIN instead renders [0,0x130b0) into 800x600 slot 2, then handle 0x15f90 at 14% scale into 112x84 slot 192; op 0x1ae writes slot 192 as the numbered .STH thumbnail. - -### 0x223 `queue-surface-alpha-transition` (queue-surface-alpha-transition, argc 8) -- **summary:** (command_key)(target_slot)(range_a_start)(range_a_count)(range_b_start)(range_b_count)(delay_ms)(duration_ms) — queue a type-0 timed alpha transition command in the separate ctx+0x414 command map. This is render-target/surface presentation state, not an object affine matrix. The render frame composites the two handle ranges into target_slot and ramps alpha 0->1 after delay over duration. -- **grounding:** source=investigation, confidence=high -- **depends on:** 0x20c, 0x21c, 0x1c7, 0x1cc -- **depended on by:** 0x20c, 0x21c, 0x21d, 0x24d -- **evidence:** Ghidra handler 0x423620 -> gfx_queue_surface_alpha_transition@0x47f440. Record fields: type +0=0, start +4=0, delay +8=arg7, duration +0xc=arg8, slot +0x10=arg2, range A +0x14/+0x1c=args3/4, range B +0x18/+0x20=args5/6. gfx_render_frame@0x47fbc0 initializes start from retained-gfx owner+0xb550 (EngineCtx+0x51b64) and consumes type 0 as an alpha ramp. SC0000 executes one shared-helper site at 0x129e7. - -### 0x224 `clear-gfx-command-queue` (clear-gfx-command-queue, argc 0) -- **summary:** Clear the native gfx command queue rooted at ctx+0x418. Host-implicit because the port composites retained state directly. -- **grounding:** source=investigation, confidence=high, noop_headless=True -- **evidence:** Ghidra handler 0x417550 -> gfx_command_queue_clear 0x47cb10, which destroys queued nodes and restores the sentinel links/count. - -### 0x228 `query-gfx-translation-target` (u00421940, argc 5) -- **summary:** 0x228 query translation target (succ)(handle)(outX)(outY)(outZ): clone the retained object, decompose its target translation matrix at obj+0x17c, and return matrix translation obj+0x1ac/+0x1b0/+0x1b4. Returns succ=0 when found; when absent, writes succ=1 and leaves outputs untouched. The C# VM queries TranslationTarget independently of V24. See docs/engine-re.md §SC0000 anim cluster. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2 handler gfx_op_0x228_query_position@0x42a3a0 calls gfx_object_query_translation_target@0x47cdd0. The worker copies the complete 0xb5-dword object record, passes copied obj+0x17c to matrix4_decompose_affine@0x48d7c8, and returns its translation outputs; the decomposition reads matrix elements +0x30/+0x34/+0x38, corresponding to obj+0x1ac/+0x1b0/+0x1b4. SC0000 AE001H queries this before each 0x220 leg. C# regression covers targets (40,-20), (50,-80), (130,-100), plus the missing-object output-preservation path. - -### 0x229 `set-gfx-range-transform` (set-gfx-range-transform, argc 5) -- **summary:** (first_handle)(count)(anchor_x)(anchor_y)(anchor_z) — reset and select the retained-gfx range transform applied after each ordinary object matrix for handles in [first, first+count), then set its anchor/pivot. A zero count disables it. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x229_set_gfx_range_transform@0x423700 first calls gfx_range_transform_reset@0x472b80, then writes operands 1/2 to retained-gfx owner+0x420/+0x424 and operands 3..5 to the embedded transform object's anchor at owner+0x440..+0x448. gfx_object_composite@0x47f650 post-multiplies the sampled owner+0xb5b4 matrix only for handles in that selected range. Corpus: 693 calls/309 scripts; 590 disable with all zeroes, 101 select from handle 1 with a script-computed count, and FIELD/LOOK supply camera anchors. This supersedes the former incorrect per-object-position interpretation; per-object direct position is 0x22f. - -### 0x22a `set-gfx-range-scale-current` (set-gfx-range-scale-current, argc 3) -- **summary:** (scale_x_percent)(scale_y_percent)(scale_z_percent) — immediately replace the selected retained-gfx range transform's current scale matrix. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x22a_set_gfx_range_scale_current@0x4237b0 divides all three operands by 100 and calls gfx_range_transform_set_scale_current@0x472c10, which builds owner+0x494. FIELD and LOOK each call it once after 0x229/0x22c; FIELD's zoom percent is G[0xccc09]. - -### 0x22c `set-gfx-range-translation-current` (set-gfx-range-translation-current, argc 3) -- **summary:** (translate_x)(translate_y)(translate_z) — immediately replace the selected retained-gfx range transform's current translation matrix. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x22c_set_gfx_range_translation_current@0x423900 passes the three integer operands as floats to gfx_range_transform_set_translation_current@0x472d00, which builds owner+0x594. FIELD computes (400-camera_x, 300-camera_y, 0), making the selected map anchor land at screen center; LOOK uses the same camera helper. - -### 0x22d `set-gfx-range-scale-target` (set-gfx-range-scale-target, argc 5) -- **summary:** (delay_ms)(duration_ms)(scale_x_percent)(scale_y_percent)(scale_z_percent) — animate the selected retained-gfx range transform's scale from its current matrix to the target. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x22d_set_gfx_range_scale_target@0x423990 divides operands 3..5 by 100 and calls gfx_range_transform_set_scale_target@0x472d50. The worker arms the embedded transform object's ordinary scale channel (delay obj+0x3c, duration +0x50, target matrix +0xac), which gfx_range_transform_sample_frame@0x476df0 samples before range composition. FIELD has the sole corpus call, a 300 ms camera zoom. - -### 0x22f `set-gfx-position-current` (u00421DD0, argc 5) -- **summary:** (handle)(control)(x)(y)(z) — set the object's current/base translation matrix. The native worker also retains operand 2 as channel control state; the port currently applies x/y/z but ignores that control operand. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: gfx_op_0x22f_set_position_anim@0x423b00 fetches x/y/z as floats and passes all five operands to gfx_worker_set_translation@0x472e90. The worker builds the current translation matrix with x/y/z and stores operand 2 in the channel record. This is distinct from the shared range transform at 0x229. The C# handler sets V24 directly and is therefore position-correct but does not yet model operand 2. - -### 0x230 `reset-gfx-cyclic-animations` (u00421E70, argc 1) -- **summary:** (handle) — get or create a retained gfx object, clear its cyclic-animation active flag, and zero all five looping-channel start/period pairs without changing current/base transforms. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x230_reset_gfx_cyclic_animations@0x423ba0 fetches the handle and calls gfx_object_reset_cyclic_animation_channels@0x47ee60. The worker clears object flag bit 2 and zeroes starts obj+0x20c/+0x210/+0x214/+0x218/+0x21c plus periods obj+0x220/+0x224/+0x228/+0x22c/+0x230, covering looping color, scale, rotation, the second cyclic matrix, and source-rectangle channels. Corpus: five DEBUGADV effect demonstrations plus one FIELD movement setup before 0x239. - -Port status (2026-07-29): implemented as one retained-state reset covering cyclic color, scale, rotation, secondary-matrix, and source-rectangle timing. It disables the four modeled looping channels, clears the complete native raw timing block for drop-in persistence, and preserves base/current transforms, cyclic targets, and one-shot channels. - -### 0x231 `animate-gfx-srcrect-loop` (u00421EA0, argc 4) -- **summary:** (handle)(frame_period_ms)(frame_count)(column_count) — loop row-major through the spritesheet. Every sample preserves draw-texture's source-rectangle width/height; frame=floor((shared_frame_time-object_start)/frame_period)%frame_count, src offset=(frame%columns*width, frame/columns*height). All objects use the retained manager's shared current/previous millisecond timestamps but retain their own start and period. The native consumer raises redraw dirty only when the current and previous samples select different cells. Worker gfx_worker_anim_srcrect @0x47eec0; consumer gfx_object_anim_interpolate @0x473ed0. -- **grounding:** source=investigation, confidence=high -- **evidence:** Native /v2 decompile: worker stores/reset start at obj+0x21c, period at +0x230, frame_count at +0x238, and columns at +0x23c. Interpolator seeds the object start from manager+0xb550, computes ((current-start)/period)%frame_count, then offsets both source-rect X bounds by rect_width*(frame%columns) and Y bounds by rect_height*(frame/columns). It repeats the cell calculation with manager+0xb554 and sets manager+0xb558 dirty only when the two cells differ. engine_main_tick_with_exception_policy shifts current to previous and samples timeGetTime once per active outer tick. SC0000 uses (100,8,4) with AE001H's eight 200x200 cells in a 4x2 800x400 sheet. FIELD configures prototype 0x9c40 with (200,4,2), then DRAWCH clones its complete zero-start record to the entity handles before the first render, phase-locking that family. - -### 0x232 `animate-gfx-color-loop` (u00421EF0, argc 4) -- **summary:** 0x232 anim-color (handle)(period)(alpha)(color): ping-pong the temporary packed ARGB passed to the normal object blit. Handler resolves negative alpha/RGB from static color obj+0x60 and clamps alpha above 255. Blend selector obj+0x30 is unchanged: mode 0 keeps default blending (animated alpha is inert; RGB is vertex modulation), while mode 1 uses sampled ARGB alpha as the SRCALPHA scale for additive composition. Fresh static color is 0xffffffff. The C# VM resolves sentinels and consumes sampled ARGB through the unchanged mode-specific path. See docs/engine-re.md §SC0000 anim cluster. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: gfx_op_0x232_anim_color@0x423c30 resolves sentinels then calls gfx_worker_anim_color@0x47ef50; gfx_object_anim_interpolate@0x473ed0 samples static obj+0x60 toward target obj+0x240 into a temporary packed color; gfx_object_composite@0x47f650 passes that color plus unchanged selector obj+0x30 to gfx_object_blit_d3d9@0x4774c0. Blit mode 0 leaves the default path and passes RGB as modulation; mode 1 sets SRCALPHA/ONE additive composition. gfx_object_init_default@0x472810 initializes obj+0x60=0xffffffff. SC0000 0x1a0e (handle,1200,224,-1) is therefore 0xffffffff<->0xe0ffffff with inert alpha and identity RGB in mode 0: no visible pulse. C# regressions cover exact AE001H visual invariance, negative-RGB preservation, mode-0 RGB modulation, and mode-1 additive scaling. - -### 0x233 `set-scale-cycle` (set-scale-cycle, argc 5) -- **summary:** (handle)(period_ms)(scale_x_percent)(scale_y_percent)(scale_z_percent) — configure a cyclic ping-pong scale matrix that moves identity→target over the first half-period and target→identity over the second. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x233_set_scale_cycle@0x423cf0 divides operands 3..5 by 100 and calls gfx_object_set_scale_cycle@0x47efd0. The worker stores start=0 at obj+0x210, period at +0x224, and the target scale matrix at +0x250. gfx_object_anim_interpolate@0x473ed0 samples a triangular phase 2*min(elapsed%period,period-elapsed%period)/period, linearly blends identity to target, and multiplies the result into the separately anchored cyclic-animation product. Corpus: 31 sites in nine scripts, including eight ordinary ADV scenes. - -Port status (2026-07-28): implemented as an independent retained-object scale cycle. The compositor samples the exact triangular phase, keeps the channel frame-driven during waits, and composes it after one-shot translation but before the sibling cyclic rotation. - -### 0x234 `anim-start` (anim-start, argc 5) -- **summary:** (handle)(period_ms)(axis_x)(axis_y)(axis_z) — configure cyclic rotation. Worker stores period obj+0x228, start obj+0x214=0, and float axis obj+0x244; each frame uses integer degrees floor(((now-start)%period)*360/period). gfx_object_composite right-multiplies this separately anchored transform after the one-shot scale/rotation/translation product, so cyclic rotation also rotates the translation vector. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra handler 0x423da0 converts axis ints to floats -> worker 0x47f060. gfx_object_anim_interpolate@0x473ed0 consumes obj+0x228/+0x214/+0x244 on retained-gfx owner+0xb550 (EngineCtx+0x51b64) and matrix4_make_axis_angle@0x48b215. gfx_object_composite@0x47f650 calls one-shot transform first, cyclic animation second. - -### 0x236 `play-movie-to-surface` (play-movie-to-surface, argc 4) -- **summary:** (packed_resource_id)(surface_slot)(movie_flags)(start_delay_ms) - synchronously open a universal packed SYS4INI/AAI movie and construct its DirectShow graph, then start asynchronous frame delivery into the retained destination surface after the requested service-tick delay. The opcode itself is non-blocking: the VM advances to the next instruction. SC0000's 0x33 and BTL's 0x2axx/0x2bxx MVB ids are already absolute base-catalog indexes. -- **grounding:** source=investigation, confidence=high -- **depended on by:** 0x241, 0x24d -- **evidence:** Ghidra /v2 op_0x236_play_movie_to_surface@0x423ee0 fetches operand 1 and passes it unchanged to movie_to_texture_open_asset_graph@0x463e20, which passes it unchanged to asset_open_indexed_entry@0x44f390. The opener directly indexes the flat base table or selected AAI table and has no scene input. The handler leaves playback pending through movie_play_configure@0x4625e0; movie_start_pending_after_sync_delay@0x4633b0 records the first service tick and calls the shared IMediaControl::Run worker after operand 4's delay, giving non-modal playback the same DirectShow first-sample preroll as 0x20f. SC0000 native operand capture and exact 0x13c8->0x13d1 trace prove nonblocking behavior. BTL's live 0x2b21 site supplies 0x2af1/0x2af5/0x2bca/0x2bd8/0x2bde, the exact base entries MVB001/MVB004/MVB914/MVB958/MVB955. - -The handler requires an existing destination texture, allocates/reuses a 0x478-byte movie-to-texture object for the surface without replacing its resource identity/color key, opens operand 1 through the native universal packed-id reader, builds FilterGraph/IGraphBuilder/IMediaControl/IMediaPosition/IMediaEvent/IBasicAudio, and presents bottom-up RGB samples through the movie texture renderer. Operand 3 selects movie/sound routing policy: bits 0x10000/0x20000/0x40000/0x80000 force mute/music/SE/voice routes, otherwise set:DependMovieSound selects the normal movie route; SC0000's low value 2 is retained as native movie mode state. Godot maps those categories to audio buses and sends FFmpeg-decoded timestamped stereo float PCM through a per-playback AudioStreamGenerator. The first image is latched before audio start; video cadence is rebased to its first decoded PTS for both audio-bearing and video-only streams, while audio retains every sample from its own timestamp zero. Operand 4 delays the pending graph start in native service ticks. Static layer preparation after 0x236 does not terminate the retained movie; 0x21c services it through EOF and subsequent surface cleanup stops/detaches both decoder and audio output. The port type-checks the selected ResolvePacked record as MPEG without adding a scene base or fallback. - -### 0x238 `set-anim-clock` (set-anim-clock, argc 1) -- **summary:** (duration) — configure the separate global finite-animation service window: native ctx+0x51b78=0 (start), +0x51b7c=duration. The generic instruction length is 3 dwords. NON-BLOCKING: gfx_animation_service_poll seeds the start from the shared frame timestamp and keeps redraw active through the duration. This is not the time source or cadence for cyclic object channels, which sample ctx+0x51b64/+0x51b68 with object-local starts and periods. SC0000 opening @0x123bd/@0x13858. Handler 0x4240e0; Kelebek VA 0x422390 is drift. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x238_handler@0x4240e0 zeros retained-gfx manager+0xb564 and stores the duration at +0xb568. gfx_animation_service_poll@0x407640 seeds +0xb564 from manager+0xb550, marks redraw dirty while current<=start+duration, then clears the window. Cyclic worker gfx_object_anim_interpolate@0x473ed0 instead uses shared frame current/previous +0xb550/+0xb554 and per-channel object start/period fields. - -### 0x239 `animate-gfx-srcrect-target` (u004223C0, argc 6) -- **summary:** (handle)(delay_ms)(duration_ms)(frame_count)(column_count)(target_frame) — one-shot row-major source-rectangle cell channel. Worker gfx_worker_set_srcrect_cell @0x47ed90 stores timing at obj+0x48/+0x5c, layout at +0x238/+0x23c, and target at +0x234. C# currently retains the endpoint cell immediately. -- **grounding:** source=investigation, confidence=high -- **evidence:** Native /v2 worker and gfx_object_apply_transform_channels decompile. The consumer advances target_frame cells over duration after delay, preserves the existing source-rect dimensions, and commits the endpoint. - -### 0x23a `query-movie-surface-active` (query-movie-surface-active, argc 2) -- **summary:** Write whether a movie-backed surface has a nonzero playback/synchronization state at surface object offset 0x42c; an empty surface slot writes zero. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x23a_handler@0x42a440 indexes the surface table by operand 2, writes zero for a null slot, otherwise writes surface+0x42c != 0. All four corpus sites are movie completion polling loops: BTL checks active combat-movie surfaces 7+, while FIELD and USEMAGIC poll surface 42 between present-frame, frame-time sampling, and sleep(16). - -### 0x23b `draw-decimal-glyphs` (u00422460, argc 7) -- **summary:** Draw an integer as decimal glyph objects from a style registered by opcode 0x13a. -- **grounding:** source=investigation, confidence=high -- **depends on:** 0x13a -- **evidence:** Ghidra /v2: op_0x23b_draw_decimal_glyphs@0x424190 reads the five-dword style record at EngineCtx+0x55180, erases the destination handle range, and calls gfx_object_bind_draw once per displayed digit. Corpus: 147 sites in 24 scripts; DRAWCHP contains 22 calls for the field HUD, including turn/control/mana/level/HP/SP/FS values visible as blank in the DEBUGMAP discrepancy. - -First erase digit_capacity objects beginning at base_handle. Then split value by signed division/modulo 10 and bind at most digit_capacity retained objects using adjacent digit-width cells from the registered atlas. Flags bit 0 zero-pads, bit 1 centers the used digits, and bit 2 left-aligns them; with no alignment bit the value is right-aligned in the capacity. The handler admits style index 10 even though native physically clears only records 0..9; see op 0x13a's adjacent-memory alias note. Indices above 10 and unregistered styles raise the engine's script error. - -### 0x23c `sample-frame-time` (sample-frame-time, argc 0) -- **summary:** Explicitly shift the shared current retained-presentation timestamp to the previous field, then sample the native monotonic millisecond clock as the new current timestamp. The active outer engine tick normally performs the same update; this opcode does not create a distinct timer or fixed-rate animation cadence. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x23c_handler@0x417580 copies EngineCtx frame_timer_current at +0x51b64 to frame_timer_previous at +0x51b68, then stores imp_winmm_timeGetTime() at +0x51b64. engine_main_tick_with_exception_policy@0x411840 performs the same shift/sample once per active outer presentation tick before dirty/movie rendering. BTL, ADDEXP, SHOWGROW, USEMAGIC, and FIELD place the explicit opcode at presentation/present-frame boundaries. - -### 0x23d `release-transient-surfaces` (release-transient-surfaces, argc 0) -- **summary:** Stop movie bindings and release transient gfx surface slots 42 through 999 inclusive, preserving system-owned slots 0 through 41. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x23d_release_transient_surfaces@0x4175c0 loops EDI=42 while EDI<1000, stops/releases ctx+0x52bd4[EDI] movie objects, and calls retained_gfx_release_surface@0x474e40 on owner ctx+0x46614. DATA1: 149 calls in 146 scripts; 146 directly follow 0x1f6. - -For each fixed slot in [42,1000), the handler stops/releases the movie-to-texture object at ctx+0x52bd4[slot], then invokes the ordinary retained-gfx surface-release worker. Protected/externally owned slots may be retained by the worker's per-slot guard. This is the resource half of the common 0x1f6/0x23d full-reset sequence. - -### 0x23f `query-surface-stop-time-ms` (u00422930, argc 2) -- **summary:** (out_stop_time_ms)(surface_slot) — query the DirectShow stop position retained by a loaded movie surface, convert seconds to integer milliseconds by truncating toward zero, and write -1 when the movie slot is empty. Port-only host decoder failure is modeled as an explicitly completed, zero-duration movie. -- **grounding:** source=investigation, confidence=high -- **depended on by:** 0x241 -- **evidence:** Ghidra /v2: op_0x23f_query_surface_stop_time_ms@0x42a520 indexes EngineCtx surface array operand 2, returns -1 for a null slot, otherwise dereferences movie+0x414 IMediaPosition and calls vtable+0x28 get_StopTime. The adjacent op 0x23e uses the same interface at vtable+0x24 get_CurrentPosition; movie op 0x245 uses +0x20 put_CurrentPosition, independently confirming the documented vtable layout. The returned seconds are multiplied by g_dMillisecondsPerSecond@0x5713e8 (double 1000.0) and truncated by crt_ftol2_sse_truncate@0x550850 before vm_operand_write(1). All 23 Himegari sites in 17 scripts are associated with a preceding op 0x236 movie load to the queried surface. FIELD divides one result by 16 and adds 1 to build a 16 ms callback schedule; another path clamps the result to 600 ms before DRAWVOL. - -The surface object's +0x414 member is IMediaPosition. Its vtable +0x28 entry is get_StopTime (after IUnknown, IDispatch, get_Duration, put_CurrentPosition, and get_CurrentPosition), returning a REFTIME double in seconds. Native multiplies by the double constant 1000.0 and calls the compiler float-to-integer helper, whose SSE2 and x87 paths both truncate toward zero. It does not inspect the getter HRESULT. For a valid graph the default stop time normally equals media duration, which explains duration-style consumers, but the exact ABI is stop position rather than get_Duration. The handler only queries state; it does not yield or alter playback. Native has no meaningful answer for a port host that cannot build a graph for a valid shipped MPEG. Port safety extension: op 0x236 normalizes missing host metadata to stop time 0 and marks decoder failure completed, while a truly empty movie slot still returns -1. - -### 0x241 `play-movie-to-surface-at-position` (play-movie-to-surface-at-position, argc 5) -- **summary:** (packed_resource_id)(surface_slot)(movie_flags)(start_delay_ms)(position_ms) - perform the same non-modal movie-to-retained-surface open as opcode 0x236, seek the graph to the requested millisecond position, then arm playback. -- **grounding:** source=investigation, confidence=high -- **depends on:** 0x236, 0x23f -- **evidence:** Ghidra /v2: op_0x241_play_movie_to_surface_at_position@0x4247e0 uses the same 0x478-byte movie-to-texture object, destination render-target check, packed asset open, sound-route/volume path, and movie_play_configure worker as op 0x236. Between open and configure it calls movie+0x414 IMediaPosition vtable+0x20 put_CurrentPosition with operand5/1000.0; operand4 is then passed unchanged as the start delay. Corpus: sole site CALLBACK_LOAD@0x189 receives the layer resource, surface and flags from globals 0x3276/0x3239/0x328a, delay 0, and global 0x329e[layer]-1. The ordinary ADV creation path writes op 0x23f stop_time_ms into 0x329e immediately after op 0x236. - -The seek is applied through IMediaPosition::put_CurrentPosition before movie_play_configure records the flags and start delay. CALLBACK_LOAD does not restore a separately sampled live playback cursor: the ADV setup path stores opcode 0x23f's stop time in global array 0x329e, and load passes stop_time_ms-1. The shipped use therefore reconstructs the movie layer at its terminal frame after a numbered load. Port status (2026-07-29): implemented through the existing 0x236 surface binding, routing, and completion lifecycle. FFmpeg ABI v3 seeks its independent video and audio demuxers before worker start; managed preroll selects the video frame active at the requested position (retaining the last frame at stop_time_ms-1), trims audio to the same point, and rebases both remaining timelines to playback time zero. Negative positions clamp to zero and positions at or beyond the graph stop clamp to stop_time_ms-1. - -### 0x242 `set-object-animation-detached` (set-object-animation-detached, argc 2) -- **summary:** Replace the retained object's animation-control word at obj+0x2d0. Bit 0 detaches finite one-shot channels from blocking presentation and protects them from 0x243 forced completion until they finish naturally. -- **grounding:** source=investigation, confidence=high -- **depended on by:** 0x243 -- **evidence:** Ghidra /v2: op_0x242_set_object_animation_detached@0x4249d0 calls gfx_object_set_animation_control@0x47f1a0. Consumer gfx_object_apply_transform_channels@0x472f00 tests obj+0x2d0 bit 0 to suppress manager+0xb55c forced completion and manager+0xb560 blocking-dirty publication, while still setting manager+0xb558 redraw dirty; it clears bit 0 when the finite group completes. DATA1: 303 calls; values zero x302, one x1. - -The setter get-or-creates the object and writes the complete operand. During retained composition, bit 0 makes the one-shot color/scale/rotation/translation/source-rectangle group ignore the manager's force-complete request and suppresses the blocking-dirty flag while leaving the redraw-dirty flag active. When no finite channel remains, native clears bit 0 and the shared start time. SC0000's two common CG loaders explicitly write zero. Across DATA1, 302 calls write zero and the sole nonzero call is BTL.BIN's animated battle-object setup, which writes one. - -### 0x243 `reset-anim-clock` (reset-anim-clock, argc 0) -- **summary:** When animation-service flag bit 1 is clear, request forced completion of ordinary finite one-shot object channels and reset the global animation-service elapsed/duration fields. Objects detached by 0x242 bit 0 ignore the force request. -- **grounding:** source=investigation, confidence=high -- **depends on:** 0x242 -- **evidence:** Ghidra handler 0x4182d0: if !(ctx+0x51b80 & 2), set retained-gfx owner+0xb55c (EngineCtx+0x51b70)=1 and zero owner+0xb564/+0xb568. gfx_object_apply_transform_channels treats force value 1 as immediate completion unless obj+0x2d0 bit 0 is set. SC0000 label_1235a calls it before present-frame. - -### 0x248 `set-tiled-surface-edge-length` (set-tiled-surface-edge-length, argc 1) -- **summary:** Set the legacy mode-1 tiled-surface edge length in pixels. Native surface creation, blitting, rectangle operations, and AGF upload use it to partition one logical surface into ordinary texture tiles; SYSTEM4 initializes it to 128. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x248_set_tiled_surface_edge_length@0x424af0 directly stores operand 1 in g_nTiledSurfaceEdgeLength@0x5b15b0. Its 30 xrefs are confined to gfx_tiled_surface_create/blit/rect_op/upload_agf, where dimensions are split by ceil(size / edge). SYSTEM4's sole call passes 128 immediately after opcode 0x149. This configures opcode 0x249's mode-1 tiled wrapper and is unrelated to adjacent opcode 0x24d. - -Port status (2026-07-29): implemented as retained signed-dword graphics configuration. The value survives scene-context resets and does not dirty presentation or rebuild existing surfaces. The portable backend deliberately keeps mode-1 surfaces as contiguous RGBA images rather than reproducing legacy D3D texture tiling. - -### 0x249 `load-raw-texture-surface` (load-raw-texture-surface, argc 3) -- **summary:** Load an AGF by universal packed SYS4INI/AAI catalog id into a retained surface slot using native surface mode 1 and the same packed-id/RGB-colorkey contract as set-texture (0x1f9). -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x249_load_raw_texture_surface@0x424b20 is instruction-length 7 and is contract-identical to gfx_op_0x1f9_load_surface through release, unchanged packed operand, asset_open_indexed_entry, RGB colorkey conversion, load failure, and cleanup. Its only relevant distinction is mode-1 gfx_surface_mode1_ctor, a tiled large-image wrapper: gfx_tiled_surface_create@0x432ff0 splits logical dimensions into ordinary mode-0 child textures; gfx_tiled_surface_upload_agf@0x431a10 decodes/uploads regions; gfx_tiled_surface_blit@0x4316b0 subdivides logical source rectangles. Corpus literals include FIELD 0x32da..0x32dd -> SO005/SO007/SO008A/SO007A. The former claim that only 0x249 bypasses scene normalization was wrong because native never performs scene normalization for 0x1f9 either. - -### 0x24d `play-movie-mask-transition` (play-movie-mask-transition, argc 12) -- **summary:** Capture an old retained-object range into the newly drawn scratch surface, retime a movie to the requested duration, and use each decoded frame's green channel as a byte-per-pixel alpha mask within the supplied rectangle. -- **grounding:** source=investigation, confidence=high -- **depends on:** 0x236, 0x223 -- **evidence:** Ghidra /v2: op_0x24d_play_movie_mask_transition@0x424db0 opens operand 10 through movie_to_texture_open_asset_graph, configures delay operand 11, sets IMediaPosition::put_Rate to native_stop_time_ms / operand12_ms, allocates a width*height byte mask through movie_texture_allocate_transition_mask@0x415d90, and calls gfx_movie_mask_transition_register@0x47f560 with operands 1-9/11. movie_texture_renderer_receive_sample@0x4628d0's mask-active branch copies byte +1 of every bottom-up RGB24 sample pixel, i.e. its green channel, directly into that mask. The retained compositor's type-1 branch applies the movie-updated mask between the old and new object ranges and holds its blocking dirty state until playback completes. Both DEBUG.BIN sites use TEST.AGF (an MPEG program stream), delay 0, and duration 1000 ms. - -The RGB24 sample callback copies the bottom-up green byte verbatim. In the native 32-bit mask compositor, captured RGB remains unchanged and the output alpha byte is the high byte of `((source_argb >> 8) * mask_byte)`; this records the exact packed-integer operation, including its low-color carry, rather than approximating it as a scalar luminance crossfade. Mode 1 initializes the mask to 0 and completes at 255; all other modes initialize at 255 and complete at 0. Port status (2026-07-29): implemented through the existing retained-range software rasterizer and dynamic scratch-surface path. The decoder honors start delay and native stop/duration retiming, publishes logical top-down green masks, and holds opcode 0x21c until movie completion; click completion remains limited to type-0 transitions. - -### 0x24e `set-gfx-animation-service-flags` (set-gfx-animation-service-flags, argc 1) -- **summary:** Replace the retained graphics animation-service flags with operand 1. BTL brackets combat presentation with values 1 and 0; GAMECLEAR uses 3 and 0. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x24e_handler@0x425070 writes operand 1 directly to EngineCtx.gfx_animation_service_flags at +0x51b80. engine_main_tick_with_exception_policy@0x411840 tests bit 0 before polling action 4 in the run-state-0x400 EffectSkipOnClick branch. gfx_request_force_complete_and_reset_anim_clock@0x4076c0 tests bit 1 before setting force-complete and zeroing the service clock; opcode 0x243 calls the same worker. - -Bit 0 disables the run-state-0x400 EffectSkipOnClick branch while finite retained presentation is active. Bit 1 independently suppresses opcode 0x243 and the click branch's shared force-complete/clock-reset request. BTL brackets combat presentation with 1/0 and GAMECLEAR uses 3/0, protecting those service-owned animations from ordinary ADV click completion. - -### 0x258 `set-surface-persistence-flags` (set-surface-persistence-flags, argc 2) -- **summary:** (surface_slot)(flags) - replace the native surface record's numbered-save persistence flags; bit 0 controls asset reload on restore and bit 1 controls the adjacent still-unnamed field. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x258_set_surface_persistence_flags@0x4250a0 reads the slot and flags operands and calls gfx_surface_set_persistence_flags@0x4159c0. The worker writes flags&1 to record +0x08 and (flags>>1)&1 to +0x0c in both 1,000-record tables. This corrects the old upstream address/name association: 0x422fe0 is opcode 0x20f movie playback, not 0x258. Corpus declaration chains follow opcode 0x259 at script entry. - -Scripts place declaration chains immediately after opcode 0x259 clears both fields. The port models bit 0 because it is consumed by layout-3 restoration; bit 1 is retained as an identified native field but has no known runtime consumer yet. - -### 0x259 `script-entry` (script-entry, argc 0) -- **summary:** zero-arg script/prologue entry; clears surface-record persistence fields +0x08 and +0x0c across both 1,000-record native tables before the declaration chain continues -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x259_script_entry_clear_surface_persistence_flags@0x417660 loops over both 20,000-byte surface-record tables (1,000 records x 20 bytes), writing zero to record +0x08 and +0x0c. SC0000 offset 0x0 and every observed script entry begins with this opcode; 0x258 continues the declaration chain. Port clears its modeled +0x08 reload policy; +0x0c remains opaque/unmodeled. - -## input - -### 0x86 `set-cursor-resource` (u0041B210, argc 1) -- **summary:** (resource_id) - load an indexed cursor asset and install it as the active custom cursor. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x86_set_cursor_resource@0x41f0a0 opens operand 1 through asset_open_indexed_entry, extracts the asset payload, passes it to the cursor installer at 0x485ce0, releases the asset, and refreshes the OS cursor when the window is active. HIDEWIN.BIN selects resources 0x3318..0x331f according to the pointer's screen-edge region. - -### 0x87 `clear-cursor-resource` (u00414D10, argc 0) -- **summary:** Clear the active custom cursor and refresh the OS cursor when the game window is active. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x87_clear_cursor_resource@0x416400 calls the cursor clear/release helper at 0x4856b0 and then the same active-window cursor refresh used by op 0x86. HIDEWIN.BIN calls it when leaving an edge region and on exit. - -### 0x88 `set-message-skip` (u0041B290, argc 1) -- **summary:** (enabled) - set persistent all-message Skip state. Nonzero makes the interpreter inject ADV fast-forward input every tick; zero stops injection and clears the transient skip run-state bit. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x88_set_message_skip@0x41f130 writes operand 1 to ctx+0x13dc and ctx+0x550fc; nonzero also sets ctx+0x6da78=1, while zero clears run-state bit 0x08000000. adv_interpreter_tick injects input bit 0x40 on every tick while ctx+0x13dc is nonzero. engine_settings_register_defaults@0x46be30 initializes set:CancelMesSkipOnClick to 0; only a nonzero override enables its press/release cancellation path. All 301 ADV button callbacks pass 1; CALLBACK_LOAD.BIN is the sole corpus 0x88(0) reset. - -### 0x90 `register-hotspot-callbacks` (u0041BEB0, argc 7) -- **summary:** (x)(y)(w)(h)(on_enter_pc)(on_leave_pc)(on_activate_pc) - append an inclusive cursor rectangle and three callback PCs to the current script frame's native input registry. This opcode only registers; the ADV input service dispatches callbacks later. -- **grounding:** source=investigation, confidence=high, noop_headless=True -- **depended on by:** 0x97 -- **evidence:** Ghidra /v2: op_0x90_handler@0x41fc80 fetches x/y/w/h, forms x+w/y+h, fetches operands 5/6/7, and calls input_hotspot_register_rect_callbacks@0x403d70 on the current frame registry. The worker appends rect + callbacks to arrays and returns without changing PC. input_hotspot_poll_hover_callback@0x4040b0 returns operand 5 on entry and operand 6 on exit; input_hotspot_take_click_callback@0x404330 resets the registry and returns operand 7 on activation. All 301 ADV scripts contain the identical five control-strip records plus three keyed records. - -op 0x90 (u0041BEB0, argc 7): `0x90 x y w h tgt_a tgt_b tgt_c`. Kelebek left it "ukn" noting args -5-7 are code locations. Native RE plus corpus analysis resolves it: -- The opcode APPENDS a record; it is not an immediate branch. Rect bounds are stored as - `(x,y,x+w,y+h)` and the cursor hit-test compares them inclusively. -- The later input service maps targets exactly: target A = pointer enter, target B = pointer leave, - target C = activation/click. Moving directly between records emits leave first, then enter on the - next service poll. Activation consumes/resets the registry before dispatching target C. -- Two forms, both ONLY in one shared ADV-chrome subroutine copied into every ADV script: - * Mode A (1505 = 5x301): immediate x,y,w,h with w=h=20; the five on-screen buttons at - (684|706|728|750|772, 572): History, Auto message, Message skip, Read-message skip, and - Hide window. Their enter/leave callbacks set G[0x6c9..0x6cd] to 1/0 and redraw SO001's - tooltip + generic 20x20 translucent hover overlay; target C runs the per-button action. - * Mode B (903 = 3x301): local-int operands, w=h=1, only tgt_c real. Companion op 0x97 binds - input-bit ids 0, 8, and 7 to these records for keyboard/pad activation. -- Every one of the 301 scripts has EXACTLY 8 sites (5 A + 3 B); zero scene-specific use. -- Registration returns normally to pc+1; later callbacks temporarily redirect execution. -- Headless (no cursor/input) can ignore registration; the 12 EMPTY sweep scenes - are gated by state + this input-wait chrome, NOT by unmodelled 0x90. Model live in A2. - - -### 0x93 `cancel-hotspot-wait` (u00415040, argc 0) -- **summary:** Reset the current frame's hotspot registry/input wait and clear native run-state bit 0x00800000. Used before opening History, Menu, or HIDEWIN flows. -- **grounding:** source=investigation, confidence=high, noop_headless=True -- **evidence:** Ghidra /v2: op_0x93_cancel_hotspot_wait@0x416670 clears run-state bit 0x00800000, calls input_hotspot_reset@0x404130, and clears the active flag at ctx+0xc6e4 (or sets the pending flag at +0xc6e0 when already inactive). - -### 0x94 `arm-hotspot-wait` (u00415090, argc 0) -- **summary:** Arm native hotspot input processing after the script has registered its rectangles. -- **grounding:** source=investigation, confidence=high, noop_headless=True -- **evidence:** Ghidra /v2: op_0x94_arm_hotspot_wait@0x4166d0 sets ctx+0xc6e4=1 and calls input_hotspot_arm_cursor_tracking@0x404230 with 10000. SC0000 executes it immediately after the five control-strip and three keyed registrations. - -### 0x97 `bind-hotspot-key` (u0041C150, argc 5) -- **summary:** (x)(y)(w)(h)(logical_action) - find the already-registered rectangle with identical bounds and bind a logical input action to its activation callback. -- **grounding:** source=investigation, confidence=high, noop_headless=True -- **depends on:** 0x90 -- **evidence:** Ghidra /v2: op_0x97_bind_hotspot_key@0x41ff30 builds the same inclusive rect as op 0x90 and calls input_hotspot_bind_key_bit@0x403f50. That worker searches registered rects for exact equality and stores operand 5 in the record's logical-action field. adv_input_service_poll@0x411230 passes the configured live action mask to input_hotspot_poll_bound_action_callback@0x403fb0, which returns the first matching record's activation PC. All 136 SC-family scripts bind action 7 to the callback that calls MENU.BIN; SYSTEM4 maps both right mouse and X to action 7. - -### 0xcc `register-mouse-callback` (mouse_callback, argc 2) -- **summary:** (poll_interval_ms)(target_pc) - register a timed per-frame mouse callback in the current script. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0xcc_register_mouse_callback@0x420f70 stores operand 2 as the callback PC and the current frame_script_resource_id as its owner, then arms operand 1 as the poll interval. HIDEWIN.BIN and HISTORY.BIN both register a 0x10-ms callback. Op 0xcd performs the timed dispatch. - -### 0xcd `dispatch-mouse-callback` (get-input-type, argc 0) -- **summary:** Dispatch the registered mouse callback when its polling interval elapses. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0xcd_dispatch_mouse_callback@0x417e10 compares timeGetTime against the registered interval, pushes the following PC, verifies the callback's saved script resource id matches the current frame, and jumps to the registered callback target. It writes no operand, so the upstream get-input-type label was incorrect. - -### 0xfb `register-joy-callback` (joy_callback, argc 2) -- **summary:** (input_index)(target_pc) - register one of 32 per-frame joy/input callback targets. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0xfb_register_joy_callback@0x421270 bounds-checks operand 1 to 0..31 and stores operand 2 in the current script frame's 33-entry callback table. Ops 0xff/0x100 poll and dispatch this table; HISTORY.BIN and HIDEWIN.BIN register indices 0..10. - -### 0xfe `set-input-action-count` (u0041E360, argc 1) -- **summary:** (count) - set the logical action scan bound; op 0x100 uses callback slot count itself when the polled mask is empty. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0xfe_set_input_action_count@0x421390 accepts unsigned values below 32, stores the count at EngineCtx+0x814, and throws script error 0x10005 otherwise. op_0x100_dispatch_joy_callbacks scans set mask bits only below this count; when op 0xff produces an empty mask, it instead dispatches the callback table entry at index count and resumes after op 0x100. SYSTEM4@0x1cf sets 10, enabling held logical actions 0..9 and reserving callback slot 10 for the no-input/release path before configuring joystick, mouse, and keyboard mappings. - -### 0xff `poll-joy-callback-input` (u00415A10, argc 0) -- **summary:** Poll the configured keyboard/mouse/joystick action mask and initialize the op 0x100 dispatch scan. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0xff_poll_joy_callback_input@0x416eb0 clears the pending input mask, fills it through input_poll_action_mask@0x4608b0, resets EngineCtx+0x6da6c input_callback_scan_index, and copies input_action_count to +0x6da70. The poller combines configured keyboard, mouse-action, and joystick bits; the joystick button-slot loop uses input_action_count, while op 0x100 applies the final action scan bound. input_poll_mouse_action_bits@0x460240 maps VK_LBUTTON/VK_RBUTTON through mouse_button_action_map and adds 4; initialization leaves both slots zero, so left defaults to action 4, while SYSTEM4 op 0x10b remaps right to action 7. - -### 0x100 `dispatch-joy-callbacks` (u00415A60, argc 0) -- **summary:** Dispatch each set logical action below the configured count, or callback slot count when no action is held. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x100_dispatch_joy_callbacks@0x416f00 scans the bitmask captured by op 0xff from EngineCtx+0x6da6c up to but excluding EngineCtx+0x814 input_action_count. Each set action resumes at op 0x100 so simultaneous bits continue dispatching. If the mask is empty, it dispatches callback table slot input_action_count and resumes after op 0x100. Callback targets come from the current frame's table populated by op 0xfb; SYSTEM4's count 10 therefore makes slot 10 the native no-input/release callback rather than an eleventh action bit. - -### 0x101 `reset-message-skip-input` (u00415BF0, argc 0) -- **summary:** Reset transient message-skip/input service state after an ADV chrome action without clearing op 0x88's persistent all-message Skip flag. -- **grounding:** source=investigation, confidence=med -- **evidence:** Ghidra /v2: op_0x101_reset_message_skip_input@0x4170a0 resets the input state rooted at ctx+0xa0ce8, clears run-state bit 0x08000000, zeroes ctx+0xa0ce8, and writes ctx+0x6da74=1 / ctx+0x6da80=0. It does not touch ctx+0x13dc or ctx+0x550fc, so adv_interpreter_tick re-injects Skip on the following tick while persistent state remains enabled. The Auto, Message-skip, Read-skip, and Hide-window callbacks invoke it after their 100 ms cursor re-arm sequence. - -### 0x107 `map-joystick-button` (u0041E500, argc 2) -- **summary:** (button_slot)(physical_button) - map a logical button slot to a physical joystick button; slot N emits logical action N+4. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x107_map_joystick_button@0x421550 writes operand 2 to EngineCtx+0x89c+operand1*4 when unsigned operand1<32, otherwise it is a no-op. input_poll_joystick_action_bits@0x460380 emits axes as actions 0=up, 1=right, 2=down, 3=left and mapped button slot N as action N+4. SYSTEM4 maps slots 0..5 to physical buttons 0,3,2,1,6,7, producing actions 4..9. - -### 0x108 `get-mouse-button-state` (u00415E70, argc 1) -- **summary:** (out) - return the current mouse-button state bitmask. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x108_get_mouse_button_state@0x428b60 fills a local through input_poll_raw_mouse_buttons@0x4602e0 and writes it to operand 1. The raw mapping is VK_LBUTTON -> 0x1 and VK_RBUTTON -> 0x2. This is distinct from op 0xff's configured logical action mask: left defaults to action 4, while SYSTEM4 maps right to action 7 with op 0x10b. HIDEWIN registers both logical actions to its close/restore callback. - -### 0x109 `get-cursor-virtual` (u00415EC0, argc 2) -- **summary:** (out_x)(out_y) - read the OS cursor and convert it into AGE's virtual-screen coordinates. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x109_get_cursor_virtual@0x428bb0 calls the cursor-position helper, converts client/display coordinates through the active VirtualFullScreen transform, and writes x/y to operands 1/2. The ADV chrome callbacks preserve x and then move y by alternating -1/+1 before op 0x10a. - -### 0x10a `set-cursor-virtual` (u0041E540, argc 2) -- **summary:** (x)(y) - convert AGE virtual-screen coordinates to client/screen coordinates and move the OS cursor. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x10a_set_cursor_virtual@0x421590 maps virtual coordinates through the active VirtualFullScreen geometry and calls SetCursorPos. SC0000 alternates the cursor by one vertical pixel after state-changing ADV button clicks so the hover state re-enters cleanly. - -### 0x10b `map-mouse-button` (u0041E5A0, argc 2) -- **summary:** (button_slot)(physical_button) - map a physical mouse button to a logical button slot; polling emits the slot as logical action slot+4. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x10b_map_mouse_button@0x4216f0 writes operand 1 to EngineCtx+0x135c+operand2*4 when unsigned operand1<32; it does not validate the physical-button operand. input_poll_mouse_action_bits@0x460240 checks left/right physical indices 0/1, reads this map, adds 4, and sets that logical action bit. Initialization zeroes the map, so left defaults to action 4. SYSTEM4@0x218 uses (3,1), mapping right mouse to action 7. - -### 0x10c `map-keyboard-scancode` (u0041E5E0, argc 2) -- **summary:** (action)(dik_scan_code) - map a DirectInput keyboard scan code to a logical input action. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x10c_map_keyboard_scancode@0x421730 requires unsigned operand1<32 or throws script error 0x10005. It translates operand 2 through EngineCtx+0x1828, the DIK-to-Win32-VK table built by input_initialize_dik_to_vk_table@0x45fc60, then writes the action to EngineCtx+0x1428[VK]. input_poll_keyboard_action_bits@0x4601a0 polls 256 virtual keys and emits the configured action bits. input_manager_initialize_defaults@0x460630 starts with count 7 and maps 0=Up, 1=Right, 2=Down, 3=Left, 4=Enter, 5=Space, and 6=Backspace. SYSTEM4 raises the count to 10 and adds Z to action 4, C/LeftCtrl to 6, X to 7, PageUp to 8, and PageDown to 9 without erasing the earlier mappings. - -### 0x10d `consume-mouse-wheel-delta` (u00415F10, argc 1) -- **summary:** (out) - return the accumulated signed mouse-wheel delta and clear it. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x10d_consume_mouse_wheel_delta@0x428cf0 copies ctx+0x1c34 to operand 1 and immediately clears the field. AGE's window procedure at 0x486925 handles WM_MOUSEWHEEL by sign-extending the high word of wParam and accumulating it at ctx+0x1c34; HISTORY.BIN polls this value and branches on its sign to select one scroll direction. - -### 0x12e `find-hit-rectangle` (find-hit-rectangle, argc 8) -- **summary:** (index_inout)(reference_rect)(pointer_x)(pointer_y)(rect_array)(x_offsets)(y_offsets)(count) - scan after the incoming index for the next inclusive rectangle intersection, or return -1. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x12e_find_hit_rectangle@0x428ff0 resolves the reference rectangle and three array operands as VM pointers, decodes rectangle/offset values with anti_tamper_a, and starts at incoming_index+1. Each candidate is [left,right,top,bottom]; the worker subtracts its per-entry x/y offsets from the pointer, inclusively intersects it with the reference rectangle, and writes the matched array index or -1 to operand 1. HISTORY.BIN uses decoded local arrays for scrollbar/control regions, close region 8, and visible text rows 9..13. - -### 0x142 `set-system-menu-enabled` (set-system-menu-enabled, argc 1) -- **summary:** (enabled) - replace the EngineCtx flag exposed through IAGEService to gate reentrant native AGERC system-menu actions. Scene reset defaults it to 1; CONFIG writes 0 on entry and 1 immediately before teardown and exit. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x142_set_system_menu_actions_enabled@0x421fe0 directly stores operand 1 at EngineCtx+0xa0d10. scene_context_init_reset initializes the field to 1. iage_service_query_system_menu_enabled@0x45f7c0 exposes it as a boolean through the AGE:IAGEService vtable at +0xb4. Shipped /support/AGERC.DLL's agerc_refresh_system_menu_state@0x10002e10 calls that method; zero invokes EnableMenuItem(...,MF_GRAYED) for command ids 0x9c63/64/65/68/6c/6e/6f. CONFIG.BIN's only sites bracket its complete scripted settings UI with 0 then 1. - -Port status (2026-07-29): implemented as an EngineCtx-lifetime signed-dword field on VirtualMachine. Root scene reload restores one. The current Godot frontend has no AGERC native system menu, so the value is retained for exact state parity and a future equivalent menu consumer without affecting game input or persisted settings. - -### 0x144 `edit-fullwidth-string-dialog` (edit-fullwidth-string-dialog, argc 2) -- **summary:** (result_inout)(initial_text) - synchronously open AGERC's modal full-width text editor. Accept writes at most eight valid CP932 double-byte characters to operand 1; cancel leaves operand 1 unchanged. Operand 2 supplies the initial edit text and is preserved. -- **grounding:** source=investigation, confidence=high -- **evidence:** The real /v2 dispatch slot registers op_0x144_edit_fullwidth_string_dialog@0x42bdd0. It copies both resolved string operands into 0x400-byte buffers, calls the runtime host callback g_pfnAgercHostCallback with command 10 and owner HWND, then writes both returned buffers back. A read-only Frida probe of the pristine game resolved that callback to AGERC.DLL+0x1050. Imported /support/AGERC.DLL shows agerc_dispatch_host_command@0x100025f0 opening dialog resource 10 with agerc_fullwidth_text_dialog_proc@0x10002140: edit control 1006 is initialized from operand 2; IDOK rejects more than 16 bytes (`字数オーバーです`) or any non-DBCS cell (`半角文字は使用できません`) before copying the accepted text to operand 1; IDCANCEL closes without changing operand 1. INPUTNAME's sole site at 0xdcd passes its assembled current name in both operands, then resplits operand 1 through 0x2c6/0x2c8. - -This is INPUTNAME's optional native keyboard-entry button, not the surrounding script-authored -character palette. The VM can use a synchronous host seam like the existing diagnostic dialog because -the Godot host runs script execution on its worker thread while the main thread owns the modal UI. -Compatibility requires the native full-width-only and 16-CP932-byte limits before accepting the result. - -Port status (2026-07-29): implemented. The VM issues an explicit accept/cancel request through IHost; -headless hosts preserve the inout value by default. Godot parks the VM worker, opens a main-thread modal -LineEdit, keeps it open on either native validation error, and resumes the worker only after valid accept -or cancel. Accept replaces operand 1 and cancel leaves it untouched; operand 2 is never modified. - - -### 0x148 `get-system-menu-show-delay` (get-system-menu-show-delay, argc 1) -- **summary:** (out) - return the current unsigned TIMER_SHOWMENU top-edge dwell threshold paired with opcode 0x149. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x148_get_system_menu_show_delay@0x429c70 writes EngineCtx+0x5511c to operand 1. Scene reset initializes the field to 0, opcode 0x149 replaces it, and the windowed top-edge TIMER_SHOWMENU path consumes it as an unsigned millisecond threshold. This getter is not observed in Himegari's corpus. - -Port status (2026-07-29): implemented with opcode 0x149. The getter writes the retained dword through the VM's signed integer-cell representation so high-bit values preserve the same native 32 bits. - -### 0x149 `set-system-menu-show-delay` (set-system-menu-show-delay, argc 1) -- **summary:** (milliseconds) - replace the unsigned dwell threshold before pointer hover at the top two client rows reveals AGERC's modeless system-menu strip. Scene reset defaults to 0; SYSTEM4 sets 1000. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x149_set_system_menu_show_delay@0x422050 directly stores operand 1 at EngineCtx+0x5511c; scene_context_init_reset writes 0 and paired op_0x148_get_system_menu_show_delay@0x429c70 reads it. system_menu_top_edge_dwell_timer_tick@0x486280 compares the field unsigned against timeGetTime elapsed while WM_MOUSEMOVE is in client y=0..1, then requires no left/right button, windowed ScreenMode, and g_pfnAgercHostCallback(-1)==0 before system_menu_strip_show@0x407bd0 invokes AGERC command 4. The handler uses the complete dword. SYSTEM4's sole site sets 1000 immediately before the unrelated tiled-surface edge setting. - -Port status (2026-07-29): implemented as unsigned scene-context state. The setter preserves all 32 operand bits, root scene reload restores zero, and the current Godot frontend deliberately adds no host effect because it has no AGERC application-menu strip. - -### 0x19a `get-message-skip` (u00414E50, argc 1) -- **summary:** (out) - return the current all-message skip state set by op 0x88. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x19a_get_message_skip@0x4271b0 writes ctx+0x550fc to operand 1. The shared ADV redraw routine uses it to select SO001's active Message-skip icon at x=728. - -### 0x19b `suspend-adv-skip-service` (u00414E80, argc 0) -- **summary:** () - suspend persistent/read-driven ADV fast-forward while preserving the user's all-message Skip toggle; physically held logical action 6 is independent. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x19b_suspend_adv_skip_service@0x416560 clears run-state bit 0x08000000, ctx+0x13dc active message skip, ctx+0x55100 ADV skip-service enable, and the click-cancel phase, but deliberately leaves ctx+0x550fc persistent all-message Skip unchanged. It does not mutate the input manager; adv_interpreter_tick@0x410fb0 polls logical action 6 (mask bit 0x40) independently of ctx+0x55100. Corpus comments call the opcode `savemesskip`; ADV-end/branch and CALLBACK_LOAD paths use it before leaving ADV presentation. - -This lifecycle operation affects persistent/read-driven active Skip only. Physical logical action 6 is process input polled independently by adv_interpreter_tick and remains active while held. - -### 0x19c `resume-adv-skip-service` (u00414EC0, argc 0) -- **summary:** () - enable the persistent/read ADV skip service and recompute active fast-forward from all-message Skip or the live read-skip channel; physical action 6 remains independent. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x19c_resume_adv_skip_service@0x4165a0 sets ctx+0x55100, clears the click-cancel phase, and normally activates run-state bit 0x08000000 when ctx+0x550fc persistent all-message Skip or ctx+0x6dbd4 adv_read_skip_state is nonzero. Otherwise it clears ctx+0x13dc and the run-state bit. A separate startup fast-forward guard at ctx+0x6f86c suppresses reactivation while active. Corpus comments call it `loadmesskip`; ADV setup, branch, and CALLBACK_LOAD paths pair it with op 0x19b. - -### 0x1b6 `get-auto-message` (u00414F60, argc 1) -- **summary:** (out) - return whether automatic message advance is enabled. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x1b6_get_auto_message@0x4271e0 writes `(ctx+0x55104 != 0)` to operand 1. FUN_00411230 consumes the same field to arm AutoMessageTime0/1 timers; the shared ADV redraw routine uses it for the active Auto icon. - -### 0x1b7 `set-auto-message` (u0041B640, argc 1) -- **summary:** (enabled) - enable or disable automatic message advance. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x1b7_set_auto_message@0x41f560 stores `(operand1 != 0)` at ctx+0x55104. SC0000's x=706 Auto button reads the current value through 0x1b6, toggles modulo 2, then writes it through this opcode. - -### 0x1b8 `get-auto-message-time` (u0041B670, argc 2) -- **summary:** (selector)(out) - read an Auto-message delay from engine configuration: selector 0 = post-voice AutoMessageTime0, selector 1 = unvoiced AutoMessageTime1. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x1b8_handler@0x427210 dispatches selector 0 to config key message:AutoMessageTime0 and selector 1 to message:AutoMessageTime1, then writes the result to operand 2. CONFIG.BIN uses it to bound the two UI settings. - -### 0x1b9 `set-auto-message-time` (u0041B710, argc 2) -- **summary:** (selector)(milliseconds) - write an Auto-message delay to engine configuration: selector 0 = post-voice AutoMessageTime0, selector 1 = unvoiced AutoMessageTime1. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x1b9_handler@0x41f5a0 dispatches selector 0/1 to config setters for message:AutoMessageTime0/1. CONFIG.BIN initializes them to 500/2000 ms and adjusts each in 500-ms steps within 500..9500. - -### 0x1bc `reset-message-voice-state` (u00415670, argc 0) -- **summary:** Reset the per-message queued-voice flag used by ADV Auto timing. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x1bc_handler@0x416c20 writes zero to ctx+0x6dbe4 (adv_auto_voice_pending). Opcode 0xc4 sets that field when voice playback is queued; adv_input_service_poll consumes it to select the post-voice AutoMessageTime0 path. - -### 0x1c7 `get-message-skip` (get-message-skip, argc 1) -- **summary:** (out) - write 1 iff ADV message-skip run-state bit 0x08000000 is set, otherwise 0. -- **grounding:** source=investigation, confidence=high -- **depended on by:** 0x20c, 0x20d, 0x21c, 0x223 -- **evidence:** Ghidra /v2: handler 0x4272b0 reads ctx+0xa0ce4 bit 0x08000000 and vm_operand_write(1, 1|0). adv_interpreter_tick@0x410fb0 first polls the configured logical-action mask; action 6 is bit 0x40 and therefore drives this transient run state from SYSTEM4's C/LeftCtrl bindings or the retained native Backspace default. Persistent op-0x88 state injects the same bit. SC0000 label_1235a ORs the result with op 0x1cc. - -### 0x1ca `set-read-message-skip` (u0041B9B0, argc 1) -- **summary:** (enabled) - set the engine setting `message:ReadTextSkip`, which skips only previously read text. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x1ca_set_read_message_skip@0x41f880 calls the engine setting interface's setter for `message:ReadTextSkip` with operand 1. SC0000's x=750 Read-message-skip button toggles the value read by op 0x1cb. - -Port status (2026-07-24): implemented as profile-lifetime engine setting state. Changing it immediately refreshes the current T1 message against the shared RT.DAT-backed ReadTextDB. - -### 0x1cb `get-read-message-skip` (u00414FD0, argc 1) -- **summary:** (out) - read the engine setting `message:ReadTextSkip`. -- **grounding:** source=investigation, confidence=high -- **evidence:** Ghidra /v2: op_0x1cb_get_read_message_skip@0x4272f0 calls the engine setting interface's getter for `message:ReadTextSkip` and writes the result to operand 1. The shared ADV redraw routine uses it for the active Read-message-skip icon. - -Port status (2026-07-24): implemented through the same profile-lifetime setting used by 0x1ca and the ADV ReadTextDB query path. - -## marker - -### 0x1a8 `instruction-marker-noop` (dev_ukn, argc 0) -- **summary:** Zero-operand structural marker. The native shared 0xaf/0x1a8 handler only records this instruction's one-dword length and returns. -- **grounding:** source=investigation, confidence=high, noop_headless=True -- **evidence:** Ghidra /v2: op_0xaf_0x1a8_handler@0x416650 writes frame_instruction_word_count=1 for the current script context and immediately returns. Himegari has 1,989 op-0x1a8 sites. The port's explicit no-op matches native behavior. - -### 0x1bf `call-end` (u004156C0, argc 0) -- **summary:** zero-arg; call->0x1bf->stmt-end — end-of-call-statement marker -- **grounding:** source=inference, confidence=med, noop_headless=True - -### 0x1d5 `cond-block` (u00415700, argc 0) -- **summary:** zero-arg; ALWAYS follows jcc — marks conditional body entry -- **grounding:** source=inference, confidence=high, noop_headless=True - -### 0x1f4 `stmt-begin` (u004160D0, argc 0) -- **summary:** zero-arg; opens scripts, pairs with stmt-end 0x1f5 -- **grounding:** source=investigation, confidence=high, noop_headless=True - -### 0x1f5 `stmt-end` (u00416120, argc 0) -- **summary:** zero-arg; precedes exit/next-stmt, pairs with 0x1f4 -- **grounding:** source=investigation, confidence=high, noop_headless=True - -### 0x21b `line-id?` (u004213E0, argc 1) -- **summary:** 1 imm; mov->0x21b->stmt-end; near save/load-messkip — likely line/stmt id, verify not msg-control -- **grounding:** source=harness, confidence=med, noop_headless=True - -## unknown - -### 0x2 `exit` (exit, argc 0) -- **summary:** — -- **grounding:** source=kelebek, confidence=med -- **evidence:** Ghidra /v2: op_0xba_sfx_start_loop@0x420290 records a 3-dword instruction, fetches channel operand 1, and calls sfx_channel_start@0x4825d0 with logical loop mode 1. The same worker receives mode 0 from op 0xb5. sound_stream_fill_quarter@0x483b70 rewinds the decoder at EOF only for mode 1. All 334 Himegari sites pass literal channel 9 immediately after op 0xb4 loads that channel. - -### 0x4 `u00417E30` (u00417E30, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x5 `ret` (ret, argc 0) -- **summary:** — -- **grounding:** source=kelebek, confidence=med - -### 0x7 `u00417F90` (u00417F90, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xa `u00424170` (u00424170, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xb `u00418090` (u00418090, argc 11) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xc `u004149E0` (u004149E0, argc 0) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xd `u004181A0` (u004181A0, argc 4) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xe `u00418200` (u00418200, argc 12) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xf `u00418300` (u00418300, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x10 `u00414A00` (u00414A00, argc 4) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x11 `u00418330` (u00418330, argc 9) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x12 `u004183F0` (u004183F0, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x13 `u00418420` (u00418420, argc 4) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x14 `u00414A20` (u00414A20, argc 0) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x15 `u00418490` (u00418490, argc 5) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x16 `u00418520` (u00418520, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x17 `u00418560` (u00418560, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x1e `u004185B0` (u004185B0, argc 8) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x1f `u00418690` (u00418690, argc 12) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x20 `u004187C0` (u004187C0, argc 6) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x26 `u00418C00` (u00418C00, argc 4) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x27 `u00418CC0` (u00418CC0, argc 4) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x28 `u00418D90` (u00418D90, argc 4) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2a `u00418E60` (u00418E60, argc 4) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2b `u00418F30` (u00418F30, argc 5) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2c `u00419010` (u00419010, argc 5) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2d `u004190A0` (u004190A0, argc 12) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2e `u004194B0` (u004194B0, argc 5) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2f `u004195A0` (u004195A0, argc 4) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x30 `u00419670` (u00419670, argc 5) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x31 `u00419750` (u00419750, argc 4) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x32 `u004197C0` (u004197C0, argc 10) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x33 `u00419900` (u00419900, argc 6) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x34 `u004199C0` (u004199C0, argc 12) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x35 `u00419AF0` (u00419AF0, argc 11) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x36 `u00419C00` (u00419C00, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x37 `u00419C90` (u00419C90, argc 11) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x38 `u00419DA0` (u00419DA0, argc 12) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x50 `add` (add, argc 3) -- **summary:** — -- **grounding:** source=kelebek, confidence=med - -### 0x51 `sub` (sub, argc 3) -- **summary:** — -- **grounding:** source=kelebek, confidence=med - -### 0x52 `mul` (mul, argc 3) -- **summary:** — -- **grounding:** source=kelebek, confidence=med - -### 0x53 `div` (div, argc 3) -- **summary:** — -- **grounding:** source=kelebek, confidence=med - -### 0x54 `mod` (mod, argc 3) -- **summary:** — -- **grounding:** source=kelebek, confidence=med - -### 0x55 `mov` (mov, argc 2) -- **summary:** — -- **grounding:** source=kelebek, confidence=med - -### 0x56 `and` (and, argc 3) -- **summary:** — -- **grounding:** source=kelebek, confidence=med - -### 0x57 `or` (or, argc 3) -- **summary:** — -- **grounding:** source=kelebek, confidence=med - -### 0x58 `sar` (sar, argc 3) -- **summary:** — -- **grounding:** source=kelebek, confidence=med - -### 0x59 `shl` (shl, argc 3) -- **summary:** — -- **grounding:** source=kelebek, confidence=med - -### 0x5a `eq` (eq, argc 3) -- **summary:** — -- **grounding:** source=kelebek, confidence=med - -### 0x5b `ne` (ne, argc 3) -- **summary:** — -- **grounding:** source=kelebek, confidence=med - -### 0x5c `lt` (lt, argc 3) -- **summary:** — -- **grounding:** source=kelebek, confidence=med - -### 0x5d `lte` (lte, argc 3) -- **summary:** — -- **grounding:** source=kelebek, confidence=med - -### 0x5e `gr` (gr, argc 3) -- **summary:** — -- **grounding:** source=kelebek, confidence=med - -### 0x5f `gre` (gre, argc 3) -- **summary:** — -- **grounding:** source=kelebek, confidence=med - -### 0x62 `u0041A360` (u0041A360, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x65 `u00414AA0` (u00414AA0, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x66 `u00414AE0` (u00414AE0, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x67 `u00414B20` (u00414B20, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x68 `u00414B60` (u00414B60, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x69 `u00414BA0` (u00414BA0, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x6a `u00414BE0` (u00414BE0, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x6b `u00414C20` (u00414C20, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x6d `u00416960` (u00416960, argc 0) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x74 `u0041AC00` (u0041AC00, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x7d `u0041AE00` (u0041AE00, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x7e `u0041AEA0` (u0041AEA0, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x81 `u0041AF30` (u0041AF30, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x82 `u0041AF80` (u0041AF80, argc 5) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x83 `u00414C90` (u00414C90, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x84 `u0041AFE0` (u0041AFE0, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x89 `u0041B2E0` (u0041B2E0, argc 4) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x8a `u0041B330` (u0041B330, argc 6) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x8c `jmp` (jmp, argc 1) -- **summary:** — -- **grounding:** source=kelebek, confidence=med - -### 0x8d `u0041BCE0` (u0041BCE0, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x8e `u0041BD60` (u0041BD60, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x91 `u0041BFB0` (u0041BFB0, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x92 `u0041C030` (u0041C030, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x95 `u0041C0C0` (u0041C0C0, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x96 `u004150C0` (u004150C0, argc 0) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xa0 `jcc` (jcc, argc 3) -- **summary:** — -- **grounding:** source=kelebek, confidence=med - -### 0xaa `u0041C270` (u0041C270, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xab `u0041C330` (u0041C330, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xac `u0041C3E0` (u0041C3E0, argc 9) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xad `u00415110` (u00415110, argc 0) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xaf `u00415480` (u00415480, argc 0) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xb0 `u0041C530` (u0041C530, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xb1 `u0041C560` (u0041C560, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xb2 `u0041C590` (u0041C590, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xb3 `u004154B0` (u004154B0, argc 0) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xbb `u0041D250` (u0041D250, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xbc `u0041D280` (u0041D280, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xbd `u00415570` (u00415570, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xbe `u004155E0` (u004155E0, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xc1 `u00415650` (u00415650, argc 0) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xc3 `u0041D390` (u0041D390, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xc9 `u00415770` (u00415770, argc 0) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xca `u004157A0` (u004157A0, argc 0) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xcb `u00415800` (u00415800, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xce `u0041E0B0` (u0041E0B0, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xcf `u00416D40` (u00416D40, argc 0) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xd1 `u00415860` (u00415860, argc 0) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xd2 `u0041E110` (u0041E110, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xd6 `u004267D0` (u004267D0, argc 6) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xd7 `u0041E1A0` (u0041E1A0, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xd8 `u0041E150` (u0041E150, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xda `u004158B0` (u004158B0, argc 6) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xfa `u00415940` (u00415940, argc 0) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xfc `u004159F0` (u004159F0, argc 0) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0xfd `u0041E2D0` (u0041E2D0, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x102 `u0041E3C0` (u0041E3C0, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x103 `u0041E4A0` (u0041E4A0, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x104 `u00415C50` (u00415C50, argc 0) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x105 `u0041E4D0` (u0041E4D0, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x106 `u00415E40` (u00415E40, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x10e `u0041E650` (u0041E650, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x10f `u0041E690` (u0041E690, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x12c `lookup-array-2d` (lookup-array-2d, argc 5) -- **summary:** — -- **grounding:** source=kelebek, confidence=med - -### 0x12d `u0041E720` (u0041E720, argc 7) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x13b `u0041F440` (u0041F440, argc 7) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x13c `u0041F7E0` (u0041F7E0, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x13d `u0041F840` (u0041F840, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x13e `u0041F8D0` (u0041F8D0, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x13f `check-bit` (check-bit, argc 3) -- **summary:** — -- **grounding:** source=kelebek, confidence=med - -### 0x145 `u00416040` (u00416040, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x146 `u0041FB40` (u0041FB40, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x147 `u0041FB80` (u0041FB80, argc 6) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x14a `u0041FD10` (u0041FD10, argc 7) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x14b `u0041FF50` (u0041FF50, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x14c `set-agerc-export` (set-agerc-export, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x14d `call-agerc-export` (call-agerc-export, argc 6) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x190 `u0041C5E0` (u0041C5E0, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x192 `set-string` (set-string, argc 2) -- **summary:** — -- **grounding:** source=kelebek, confidence=med - -### 0x196 `display-furigana` (display-furigana, argc 3) -- **summary:** — -- **grounding:** source=kelebek, confidence=med - -### 0x1a7 `comment` (comment, argc 1) -- **summary:** — -- **grounding:** source=kelebek, confidence=med - -### 0x1b1 `u0041B5C0` (u0041B5C0, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x1be `u0041D9D0` (u0041D9D0, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x1c0 `u0041DB70` (u0041DB70, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x1c2 `u0041B860` (u0041B860, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x1c3 `u0041B8A0` (u0041B8A0, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x1c4 `u00415720` (u00415720, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x1c5 `u00425800` (u00425800, argc 4) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x1c6 `u0041DD80` (u0041DD80, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x1c9 `u0041B8E0` (u0041B8E0, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x1cd `u0041A560` (u0041A560, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x1d6 `u0041DA40` (u0041DA40, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x1d7 `u0041DA80` (u0041DA80, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x1d8 `u0041DAD0` (u0041DAD0, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x1d9 `u0041DB20` (u0041DB20, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x1fc `u004205F0` (u004205F0, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x200 `u00420800` (u00420800, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x201 `u00416190` (u00416190, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x206 `u004161C0` (u004161C0, argc 7) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x209 `u00420C50` (u00420C50, argc 5) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x210 `u00420FF0` (u00420FF0, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x211 `u00421060` (u00421060, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x214 `u00421120` (u00421120, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x221 `u00421670` (u00421670, argc 4) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x225 `u00421780` (u00421780, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x226 `u004217D0` (u004217D0, argc 5) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x227 `u00421880` (u00421880, argc 6) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x22b `u00421B30` (u00421B30, argc 4) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x22e `u00421D10` (u00421D10, argc 6) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x235 `u00422100` (u00422100, argc 5) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x237 `u00422350` (u00422350, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x23e `u004228C0` (u004228C0, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x240 `u004229A0` (u004229A0, argc 4) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x244 `u00416360` (u00416360, argc 0) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x245 `u00422DA0` (u00422DA0, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x246 `u00422E10` (u00422E10, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x247 `u00416390` (u00416390, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x24a `u004163C0` (u004163C0, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x24f `u00422ED0` (u00422ED0, argc 10) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x250 `u00422F60` (u00422F60, argc 10) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x251 `u00422FF0` (u00422FF0, argc 12) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x252 `u00423000` (u00423000, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x253 `u00423019` (u00423019, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x254 `u00423049` (u00423049, argc 5) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x256 `u00423050` (u00423050, argc 5) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x257 `257` (257, argc 5) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x25a `u00423120` (u00423120, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x25b `25B` (25B, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x25c `u00423122` (u00423122, argc 8) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x25d `u00423123` (u00423123, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x25e `u00423124` (u00423124, argc 5) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x25f `u00423125` (u00423125, argc 4) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x260 `u00423126` (u00423126, argc 4) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x261 `u00423127` (u00423127, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x262 `262` (262, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x263 `263` (263, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x264 `264` (264, argc 5) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2bc `u00423020` (u00423020, argc 11) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2be `u00423140` (u00423140, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2c1 `u00425BC0` (u00425BC0, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2c2 `u00425CD0` (u00425CD0, argc 6) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2c3 `u00423200` (u00423200, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2c4 `u00416450` (u00416450, argc 0) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2c7 `u0042B5F0` (u0042B5F0, argc 4) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2c9 `2C9` (2C9, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2cc `2CC` (2CC, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2cd `2CD` (2CD, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2ce `u0042B616` (u0042B616, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2cf `u0042B617` (u0042B617, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2d0 `u0042B940` (u0042B940, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2d1 `u0042B950` (u0042B950, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2d2 `u0042B960` (u0042B960, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2d3 `u0042B970` (u0042B970, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2d5 `u0042B990` (u0042B990, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2d7 `u0042B9B0` (u0042B9B0, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2d8 `set-array-to` (set-array-to, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2d9 `u0042BA30` (u0042BA30, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2da `u004234E0` (u004234E0, argc 8) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2db `u004235C0` (u004235C0, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2dc `u0042BA80` (u0042BA80, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2dd `u0042D880` (u0042D880, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2de `u0042BAC0` (u0042BAC0, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2df `u0042BAC1` (u0042BAC1, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2e0 `u0042CE0F` (u0042CE0F, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2e1 `u0042CE10` (u0042CE10, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2e2 `u0042CE11` (u0042CE11, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2e3 `u0042CE30` (u0042CE30, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2e4 `u0042CE31` (u0042CE31, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2e5 `u0042CE50` (u0042CE50, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2e6 `u0042CE60` (u0042CE60, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2e7 `u0042CE70` (u0042CE70, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2e8 `u0042CE80` (u0042CE80, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2e9 `u0042CE90` (u0042CE90, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2ea `u0042CEA0` (u0042CEA0, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2eb `u0042CEB0` (u0042CEB0, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2ec `u0042CEC0` (u0042CEC0, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2ee `u0042CEC2` (u0042CEC2, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2ef `u0042CEC3` (u0042CEC3, argc 11) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2f0 `u0042CEC4` (u0042CEC4, argc 9) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2f1 `u0042CEC5` (u0042CEC5, argc 7) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2f2 `u0042CEC6` (u0042CEC6, argc 6) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2f3 `2F3` (2F3, argc 6) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2f4 `2F4` (2F4, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2f5 `2F5` (2F5, argc 4) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2f6 `2F6` (2F6, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2f7 `2F7` (2F7, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2f8 `2F8` (2F8, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2f9 `2F9` (2F9, argc 7) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2fa `2FA` (2FA, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2fb `2FB` (2FB, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2fc `2FC` (2FC, argc 5) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2fd `2FD` (2FD, argc 6) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2fe `2FE` (2FE, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x2ff `2FF` (2FF, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x300 `300` (300, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x301 `301` (301, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x302 `302` (302, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x303 `303` (303, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x304 `304` (304, argc 0) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x305 `305` (305, argc 0) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x306 `306` (306, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x307 `307` (307, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x308 `308` (308, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x30a `30A` (30A, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x30c `30C` (30C, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x320 `u0043AA20` (u0043AA20, argc 10) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x321 `u0043AA30` (u0043AA30, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x322 `u0043AA40` (u0043AA40, argc 4) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x323 `u0043AA50` (u0043AA50, argc 5) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x324 `u0043AA60` (u0043AA60, argc 0) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x325 `u0043AA70` (u0043AA70, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x326 `u0043AA80` (u0043AA80, argc 4) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x327 `u0043AA90` (u0043AA90, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x328 `u0043AAA0` (u0043AAA0, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x329 `u0043AAB0` (u0043AAB0, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x32a `32A` (32A, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x32b `u0043AAD0` (u0043AAD0, argc 0) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x32c `u0043AAE0` (u0043AAE0, argc 6) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x32d `u0043AAF0` (u0043AAF0, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x32e `u0043AB10` (u0043AB10, argc 11) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x32f `u0043AB11` (u0043AB11, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x330 `u0043AB12` (u0043AB12, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x332 `u0043AB14` (u0043AB14, argc 4) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x334 `u0043AB16` (u0043AB16, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x335 `u0043AB17` (u0043AB17, argc 4) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x337 `u0043AB19` (u0043AB19, argc 4) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x33b `u0043AB1D` (u0043AB1D, argc 4) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x33d `u0043AB1E` (u0043AB1E, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x33e `u0043AB1F` (u0043AB1F, argc 5) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x33f `u0043AB20` (u0043AB20, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=low -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x340 `340` (340, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x341 `341` (341, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x342 `342` (342, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x344 `344` (344, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x345 `345` (345, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x349 `349` (349, argc 4) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x34d `34D` (34D, argc 6) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x34e `34E` (34E, argc 4) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x352 `352` (352, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x353 `353` (353, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x354 `354` (354, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x358 `358` (358, argc 5) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x35a `35A` (35A, argc 5) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x35b `35B` (35B, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x35c `35C` (35C, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x35d `35D` (35D, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x35f `35F` (35F, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x360 `360` (360, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x361 `361` (361, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x363 `363` (363, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x364 `364` (364, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x384 `384` (384, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x386 `386` (386, argc 11) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x387 `387` (387, argc 8) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x388 `388` (388, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x389 `389` (389, argc 6) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x38f `38F` (38F, argc 6) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x390 `390` (390, argc 7) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x391 `391` (391, argc 2) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x392 `392` (392, argc 1) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x393 `393` (393, argc 6) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x396 `396` (396, argc 5) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x398 `398` (398, argc 3) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x399 `399` (399, argc 7) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - -### 0x39b `39B` (39B, argc 5) -- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. -- **grounding:** source=kelebek, confidence=med -- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. - + +# Opcode Reference (generated) + +548 AGE catalog opcodes: 248 observed in Himegari and 300 compatibility stubs. Source of truth: `vm-map/opcodes.toml`. + +## adv + +### 0x6e `show-text` (show-text, argc 2) +- **summary:** (layout_slot)(text) - build and publish a retained text run in the selected ADV layout, using the current glyph delay and raster style; slot zero selects the current layout. +- **grounding:** source=investigation, confidence=high +- **evidence:** Native op 0x6e enters adv_text_build_glyph_records@0x4576c0, which snapshots the selected layout cursor and active font/color state, rasterizes one record per CP932 glyph, advances the live cursor, and publishes records through adv_text_publish_next_glyph@0x451220 using text-manager charDelay. adv_text_layout_check_overflow@0x45efc0 returns independent horizontal/vertical bits from strict right/bottom comparisons; the builder's wrap branch excludes CP932 0x8141/0x8142/0x8176. The publisher passes record edges directly to gfx_object_bind_draw@0x47e870 and stops at layout+0x6c capacity. Native SC0000 traces show a 50-ms ordinary delay and retained layout publication; MAMES/ITMES/SKMES/INFOMES set delay zero for immediate UI descriptions. + +The live 20-byte glyph record is {chain_flag,left,top,right,bottom}; rectangle members are edges. Overflow bits use strict bound sfx_channel_load@0x482500 -> asset_open_indexed_entry@0x44f390 + sound_decode_channel@0x483360. The opener indexes the base catalog directly for a zero high byte and selects mounted_aai[high_byte] otherwise. SC0000 0xc29 uses raw 0x28 = E0808.WAV. TITLE independently proves the addressing rule: raw 0x2aea = SE020.WAV is preloaded on channel 2 and started on every hover-selection change; raw 0x3321 = SE015.WAV is loaded/started on activation. The pre-fix port trace reported file=null under scene-manifest resolution; after switching Godot to ResolveSoundEffect/ResolvePacked, a synchronized TITLE->GAMESTART->TITLE trace resolves and starts SE020/SE015/SE013, confirmed audible by the user. + +### 0xb5 `sfx-start` (u0041D050, argc 1) +- **summary:** (channel) — start the already-loaded channel once (logical loop=false). DirectSound publishes synchronously through Play(0,0,DSBPLAY_LOOPING); the low-level flag loops only the streaming ring, while decoder EOF stops logical playback. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra op 0xb5 handler 0x420210 passes mode 0 to sfx_channel_start@0x4825d0; mode 1 belongs to op 0xba. sound_buffer_start@0x484270 primes four quarter-buffer notifications then calls IDirectSoundBuffer::Play with flag 1 before returning. Native trace at SC0000 0xc2e: E0808 channel 0 start enters/leaves in the same ms, preloaded 1->0 and playing 0->1. + +### 0xb6 `sfx-release` (u0041D080, argc 1) +- **summary:** (channel) - stop/destroy the channel decoder and DirectSound buffer, clear its retained resource id, and leave the slot empty. Idempotent for an unused channel. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra op 0xb6 handler 0x420250 -> sfx_channel_release@0x482600 -> sound_buffer_destroy@0x4831a0, which releases the per-channel object under its critical section and clears the slot. Native trace captured SC0000's channels 0..9 release sweep in consecutive calls. + +### 0xb7 `restart-bgm-loop` (restart-bgm-loop, argc 1) +- **summary:** (track_or_zero) — force-start looping BGM even when the requested nonzero track already matches the retained current track. A zero operand restarts the retained track; when no track is retained it resolves to an idempotent stop. Any active BGM fade is completed/cancelled first. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0xb7_force_play_bgm_loop@0x4202d0 first clears run-state bit 0x200 and forces bgm_fade_tick(...,100) when a fade is active, then calls bgm_force_play_track@0x464a90 with operand 1 and logical start mode 1. Unlike ordinary bgm_play_track@0x464750 (op 0xbf), the force worker has no same-track early return. A nonzero operand replaces EngineCtx.current_bgm_track_id; zero reuses it, or releases when it is also zero. The OGG backend forwards mode 1 through sound_buffer_start; sound_stream_fill_quarter rewinds at EOF only for nonzero mode. Corpus: CALLBACK_LOAD uses zero to restart restored music; CONFIG uses BGM029 for its music preview. + +Implemented: the VM resolves zero through its retained current track and calls the explicit forced-restart host seam with mode 1. Godot replaces the OGG stream with Loop=true and cancels any deferred fade; ordinary op 0xbf keeps its same-track idempotence. + +### 0xb8 `stop-bgm` (stop-bgm, argc 0) +- **summary:** Stop and release the active BGM source and clear the retained current track. Any active BGM fade is completed/cancelled first. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0xb8_stop_bgm@0x416ba0 clears run-state bit 0x200 and forces bgm_fade_tick(...,100) when a fade is active, then calls bgm_stop_release@0x464690. The worker clears music-facade current track/status fields and invokes the active backend's stop/release method. Corpus: CONFIG stops the BGM029 preview while closing; MMODE stops current music before building the music-room screen. + +Implemented: the VM clears its retained track and calls StopBgm. Godot cancels voice ducking and any fade, stops playback, releases the stream, and restores neutral gain. + +### 0xb9 `restart-bgm-once` (restart-bgm-once, argc 1) +- **summary:** (track_or_zero) — force-start one-shot BGM even when the requested nonzero track already matches the retained current track. A zero operand restarts the retained track once; when no track is retained it resolves to an idempotent stop. Any active BGM fade is completed/cancelled first. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0xb9_force_play_bgm_once@0x420330 shares op 0xb7's fade-finalization and bgm_force_play_track@0x464a90 path but supplies logical start mode 0. The OGG backend forwards that mode through sound_buffer_start; sound_stream_fill_quarter pads/stops at decoder EOF instead of rewinding. Corpus: STAGECLEAR's sole site force-starts BGM025 as its one-shot clear fanfare. + +Implemented: the VM shares op 0xb7's retained-track/zero handling but supplies mode 0. Godot replaces the OGG stream with Loop=false, so BGM025 naturally stops at EOF. + +### 0xba `sfx-start-loop` (sfx-start-loop, argc 1) +- **summary:** (channel) — start the already-loaded sound-effect channel with logical loop mode 1; the streaming decoder rewinds at EOF until the channel is replaced or released. +- **grounding:** source=investigation, confidence=high + +### 0xbf `play-bgm` (play-bgm, argc 1) +- **summary:** Play background music by id. BGM is addressed by DIRECT LITERAL NAME: id -> BGM{id:03d}.OGG (in DATA3), unlike ordinary resource operands, which are universal packed SYS4INI/AAI ids. E.g. play-bgm 5 -> BGM005. Reasserting the facade's current track id is idempotent and preserves playback position; a different id starts the new track, while fade-to-zero clears the current id so a later request can start it again. +- **grounding:** source=investigation, confidence=high +- **evidence:** By-ear confirmed (2026-07-06): SC0000 real game plays BGM005 for play-bgm 0x5 and BGM008 for play-bgm 0x8 (we initially mis-played BGM006/BGM009 via the disproven scene-section model). Direct-name proven by play-bgm 0x23 -> BGM035.OGG, a real standalone track (the BGM set skips 030-034). Ghidra /v2 op_0xbf_handler@0x420390 forwards the numeric track to the BGM facade rather than asset_open_indexed_entry; the facade retains that id at EngineCtx.current_bgm_track_id for op 0xc0 and numbered saves. FIELD intentionally reasserts stage_bgm_id from its common post-action/event cleanup at 0x884a, reached after unit movement; restarting an identical host stream there resets the music once per unit during enemy turns. Op 0xc2 target zero releases the source and the VM clears the retained id. Diagnostic: `Age.Cli audio SC0000.BIN`. + +### 0xc0 `get-current-bgm-track` (get-current-bgm-track, argc 1) +- **summary:** (track_out) - return the direct-name BGM track id retained by the music facade; the same value is restored from numbered saves. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2 op_0xc0_get_current_bgm_track@0x428440 writes EngineCtx.current_bgm_track_id (+0xa0b84) to operand 1. op 0xbf's bgm_play_track retains the selected direct-name id at the same music-facade field; layout-3 serialization copies it to payload +0x008 and restoration copies it back. Installed SAVE00 stores 0x18, matching FORT's BGM024. + +### 0xc2 `fade-bgm` (u0041D2B0, argc 2) +- **summary:** (target_percent)(duration_ms) — block script service while linearly fading current BGM volume to 0..100%. Durations >=1000 ms use 100 steps; shorter fades use 10. Target 0 releases the current BGM source at completion. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra op 0xc2 handler 0x4204c0 sets run-state 0x200, arms the service timer, and calls bgm_fade_arm@0x464830; bgm_fade_tick@0x464960 interpolates current/target percent and applies volume, releasing at target 0. Native SC0000 trace at 0x7c1/0x126c shows target 0, duration 3000, 1% ticks at about 30 ms. + +Implemented through the blocking host fade clock. Target zero clears the VM's retained track after the wait and invokes the shared BGM stop/release seam, so Godot does not retain a silent bound stream. + +### 0xc4 `play-voice` (play-voice, argc 1) +- **summary:** Play a voice clip by universal packed SYS4INI/AAI id with native playback/history variant 0. While all-message Skip is active, retain/replace the queued voice request instead of starting it; playback resumes from the latest queued request after Skip clears. Uses the same packed-id opener as textures/scripts/movies, unlike play-bgm's direct BGM{id:03d} naming. +- **grounding:** source=investigation, confidence=high +- **evidence:** By-ear confirmed (2026-07-06): SC0000 prologue voices play on their lines via Godot AudioStreamPlayer. Ghidra /v2 op_0xc4_handler@0x420610 passes operand 1 unchanged to voice_play_indexed_asset@0x488330, which passes it unchanged to asset_open_indexed_entry@0x44f390. That opener directly indexes the flat base table for a zero high byte or selects mounted_aai[high_byte] and low24 for append resources; it has no executing-scene input or section-base branch. SC0010 is decisive beyond base-zero SC0000: play-voice 0x120 is raw SYS4INI entry LILA1414.OGG, also SC0010 file_number 2; applying SC0010 base 0x11e again is wrong. ROOM's 0x3365 similarly resolves directly to EUA0016.OGG. While Skip is active the handler stores the latest id/zero variant at ctx+0x6dbf4/+0x6dbf8; adv_interpreter_tick starts and clears it when Skip/read-skip input ends. Lily's lines remain correctly form-gated. + +### 0xc5 `get-audio-volume` (get-audio-volume, argc 2) +- **summary:** (category)(out_basis_points) — read the configured audio volume: 0=master, 1=music, 2=SFX, 3=voice, 4=movie. Native values use 0..10000 basis points. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0xc5_get_audio_volume@0x428470 selects sound:Volume0..Volume4 for operand 1 values 0..4, queries the engine settings registry, and writes the result to operand 2. CONFIG.BIN uses the results to draw and adjust four visible category sliders; its initialization also sets Volume0..Volume3 to 10000/6500/5000/8000. + +Port status (2026-07-29): implemented against the profile-lifetime AudioMixerSettings registry. The native -1 unconfigured sentinel is preserved; CONFIG reads receive the exact stored basis-point value. + +### 0xc6 `set-audio-volume` (set-audio-volume, argc 2) +- **summary:** (category)(basis_points) — update the configured 0..10000 audio volume and apply it immediately: 0=master, 1=music, 2=SFX, 3=voice, 4=movie. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0xc6_set_audio_volume@0x4206d0 writes sound:Volume0..Volume4 through the settings registry and dispatches selectors 0..4 to the live master/music/SFX/voice/movie volume workers. The master worker reapplies dependent volume to active movies and sound buffers; category workers update active BGM, ten SFX channels, voice channel 12, or the movie basis respectively. + +Port status (2026-07-29): implemented with native SYS4REG.INI [sound] persistence and live Godot Master/Music/SFX/Voice/Movie bus gain changes. The CP932 preserving writer retains unrelated options; master and category buses compose multiplicatively like native basis-point application. + +### 0xc7 `get-audio-route-enabled` (get-audio-route-enabled, argc 2) +- **summary:** (category)(out_enabled) — query whether an audio route is enabled: 1=music, 2=SFX, 3=voice, 4=movie. Writes boolean 0 or 1. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0xc7_get_audio_route_enabled@0x4285a0 queries sound:Music/SE/Voice/Movie for selectors 1..4 and writes boolean 0/1 to operand 2. CONFIG.BIN's only site loops selectors 1..3 to choose enabled/disabled presentation. + +Port status (2026-07-29): implemented as the read half of the shared audio-route registry loaded from native SYS4REG.INI. + +### 0x1ba `set-audio-route-enabled` (set-audio-route-enabled, argc 2) +- **summary:** (category)(enabled) — enable or disable an audio route and persist the setting: 1=music, 2=SFX, 3=voice, 4=movie. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x1ba_set_audio_route_enabled@0x420860 dispatches selectors 1..4 to the music/SFX/voice/movie enable workers. Those workers update the live route, stop active playback when disabling where applicable, write sound:Music/SE/Voice/Movie through the settings registry, and reject selectors outside 1..4. All 15 CONFIG.BIN sites pass literal 0/1. + +Port status (2026-07-29): implemented with native SYS4REG.INI route persistence and live bus muting. AGE's raw music value band is preserved (Himegari 2 enabled toggles to -1 disabled); music changes restart/stop the retained stream, disabling SFX or voice stops active playback, and movie changes remain non-destructive. + +### 0x1bd `play-history-voice` (u0041D910, argc 1) +- **summary:** Replay a voice id selected from retained ADV text history using native playback/history variant 1, preserving normal Skip and Auto-voice state behavior. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x1bd_play_history_voice@0x420920 stops/replaces the active voice and calls voice_play_indexed_asset@0x488330 with operand 1 plus playback variant 1 when Skip is inactive (or queues that pair while Skip is active). When text-history recording is enabled it appends voice pair {id,1}; HISTORY.BIN suppresses recording with op 0x1bb while its UI is active, preventing replay clicks from recursively entering the backlog. The handler also sets adv_auto_voice_pending when playback exists. voice_play_indexed_asset retains the variant in sound-buffer state before starting channel 12; its exact audible meaning remains unproven. + +### 0x1cf `set-voice-bgm-duck-control` (set-voice-bgm-duck-control, argc 1) +- **summary:** (flags) - replace the transient voice/BGM-duck control mask. Bit 0 suppresses automatic BGM attenuation when voice playback starts; zero permits the configured duck behavior. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x1cf_set_voice_bgm_duck_control@0x4209f0 fetches operand 1 and writes it verbatim to ctx+0x6dbf0. The voice-start helper voice_bgm_duck_begin@0x406de0 tests bit 0 before arming BGM attenuation; native settings defaults register MusicFadeOnVoicePlaying=1 and MusicFadeOnVoicePlayingVol=50. SC0000 uses values 0 and 1. + +### 0x2bf `schedule-sfx-start` (schedule-sfx-start, argc 3) +- **summary:** (channel)(start_mode)(delay_ms) - schedule the already-loaded SFX channel to enter the ordinary start worker after the requested delay. Channels are limited to 0..9. +- **grounding:** source=frida, confidence=high +- **evidence:** Ghidra /v2: op_0x2bf_schedule_sfx_start@0x425240 calls sfx_set_delay@0x482720 on the ctx+0x14024 sound facade. The worker's native error text names Function:SetDelay, validates channel<=9, and stores active/progress/delay/start-mode state. Existing SC0000 trace: SetDelay(channel 4, mode 0, 100) is followed about 109 ms later by the ordinary sfx_channel_start worker on channel 4 with mode 0 and no intervening 0xb5. + +### 0x2c0 `schedule-voice-playback` (schedule-voice-playback, argc 3) +- **summary:** Arm delayed voice playback: (voice_id, playback_variant, delay_ms). The engine main tick starts the voice after the monotonic deadline. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x2c0_schedule_voice_playback@0x425290 forwards three operands to voice_schedule_delayed_playback@0x488480 on the text/ADV service at EngineCtx+0x14508. That worker stores active=1, start=0, delay at +0x424, voice id at +0x428, and variant at +0x42c. engine_main_tick_with_exception_policy calls voice_tick_delayed_playback@0x4884d0; after unsigned elapsed >= delay it clears the request and calls voice_play_indexed_asset(voice_id,variant). Corpus: one BTL site at 0x2f6e. + +The setter replaces the single pending request, marks it active, and clears its start timestamp. On the first service tick the worker captures the current millisecond time; once unsigned elapsed time reaches delay_ms it clears the request and calls the ordinary indexed-voice player with voice_id and playback_variant. BTL's only call selects a randomized combat voice id, variant 0, and an entity-specific delay. + +## compute + +### 0x60 `random-modulo` (u0041A270, argc 2) +- **summary:** (destination)(bound) — write CRT rand() % bound. A bound of zero first writes zero and then raises the engine's script error. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x60_handler@0x426970 calls imported CRT rand(), fetches operand 2, takes signed remainder, and writes operand 1. The zero-bound branch writes zero then throws error 0x10005. ROOM@0x5 calls (local 0x110,4), and its following branches select one of four character surface sets; variants 0..2 also select voice-id sextets. /v2 annotated and saved 2026-07-21. + +### 0x61 `lookup-array` (lookup-array, argc 3) +- **summary:** Take a typed reference to base[index], preserving whether the base belongs to local or global storage. +- **grounding:** source=investigation, confidence=high +- **evidence:** HISTORY.BIN copies x/y tables into local-int cells 0x4 and 0x68, then lookup-array local-ptr <- local-int base supplies every right-side button and hovered-row draw coordinate. Treating the local operand's current value as a global base collapses those draws to (0,0); retaining the local address yields the native x=768/y=121..549 positions. RECOVER.BIN independently exercises the same pointer destination with global bases. + +Operand 2 names the base cell itself: a global-bank operand produces a global reference and a local-bank operand produces a local reference. Operand 3 is added as the element offset. Pointer destinations retain that address domain; reading or writing the pointer dereferences the corresponding bank. Non-pointer destinations receive the addressed value. The same domain-preserving address model applies to lookup-array-2d (0x12c). + +### 0x63 `take-address` (take-address, argc 2) +- **summary:** (destination_pointer)(source) - store the underlying typed storage address of source in destination_pointer; a pointer source aliases its existing target. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2 op_0x63_take_address@0x426ac0 calls vm_operand_resolve_address@0x425a50 for operand 2 with unsubscripted indices -1/-1, then vm_pointer_operand_write@0x416090 for operand 1. The resolver returns a backing-cell address for direct global/local integer or string operands and the already-stored target for pointer operands. Corpus: 92 calls; destination is always local-ptr, while sources are local-ptr x81, local-int x7, and global-int x4. The C# VM preserves the local/global address domain and supports the native string-pointer destination forms; the traced natural boot reaches the UNITECH/CALCCC pair without fallback. + +### 0x64 `copy-inline-int-array` (copy-inline-int-array, argc 2) +- **summary:** (destination)(inline_blob_offset) - decode the count-prefixed integer literal blob at codebase + offset*4 and copy its values to consecutive VM integer cells beginning at destination. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x64_handler@0x426b00 resolves operand 1 as a writable VM address, reads a count dword followed by values from frame_codebase + operand2*4, reverses the native loader's rotate/XOR in-memory representation with anti_tamper_a, and writes consecutive dwords. The original SYS4 file footer stores the count and values plainly; HISTORY.BIN uses 15 blobs to initialize its rectangle, coordinate, and lookup arrays. + +### 0x6c `zero-int-range` (copy-to-global, argc 2) +- **summary:** (destination)(count) — write logical integer zero to count consecutive VM cells beginning at the resolved destination. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x6c_handler@0x426d90 resolves operand 1 as a writable VM pointer and fills operand-2 consecutive dwords with ctx->anti_tamper_b, the native encoded representation of logical integer zero. INITCONFIG@0x30 clears G[0x2e49..0x2e55] before registering those 13 profile cells; treating operand 2 as a scalar source incorrectly wrote 13 to G[0x2e49] and disabled ROOM's character greeting/farewell voices. /v2 annotated and saved 2026-07-21. + +### 0x12f `sort-indices-by-key-sum` (sort-indices-by-key-sum, argc 4) +- **summary:** (out_indices, key_a, key_b, count) - write a stable ascending permutation of indices 0..count-1, ordered by the signed 32-bit sum key_a[index] + key_b[index]. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x12f_sort_indices_by_key_sum@0x429360 resolves operands 1-3 as integer-array bases, seeds out_indices[0]=0, then performs insertion sort. It shifts a prior index only when signed unchecked(key_a[new]+key_b[new]) is strictly less than the prior sum, so equal keys retain source order. Operand 4 is fetched as the exclusive count. The final native loop merely re-encodes direct writes into AGE's protected integer representation. Release corpus: 40 sites. CHMENU@0x1c9b sorts 100 party-slot keys and reads the populated tail; a no-op leaves the initial party slot undiscoverable even though UNITECH created it. + +Implemented with domain-preserving addressed-array access, native signed 32-bit key addition/overflow, stable insertion ordering, repeated count reads, and the native unconditional out_indices[0]=0 write. Focused tests lock stability/overflow/zero-count behavior; a natural SYSTEM4-to-SC0000 state carried into release CHMENU proves the initial slot remains selected after the real roster sort. + +### 0x132 `reset-int-queue` (reset-int-queue, argc 1) +- **summary:** (queue_id) - destroy any existing queue in the selected engine slot and replace it with an empty integer FIFO. Valid queue ids are 0..10. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x132_reset_int_queue@0x4217d0 fetches queue_id, rejects values above 10, invokes the existing object's virtual destructor, allocates 0x1c bytes, and calls int_queue_construct@0x4074c0. The constructor allocates 0x100 dwords, sets capacity and growth quantum to 0x100, and zeros the read/end/high-water indices. scene_context_init_reset@0x40b560 constructs exactly ten queue pointers at EngineCtx+0x55130 before the ten stack pointers at +0x55158, so admitted queue id 10 aliases stack slot 0. The only corpus sites are ATSEEK@0x32 and MVSEEK@0x145, both using id 0 before their flood fills. + +Implemented as 11 safe logical queue slots so the handler-admitted 0..10 script ABI cannot corrupt adjacent host state. Reset replaces the selected queue with an empty FIFO pre-sized to the native 0x100-dword initial capacity; invalid ids halt with a diagnostic. Native physically owns only ten independent slots and its id-10 address aliases stack slot 0. + +### 0x133 `enqueue-int` (enqueue-int, argc 2) +- **summary:** (queue_id, value) - append one integer to the selected engine FIFO, compacting consumed entries or growing its storage when required. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x133_enqueue_int@0x4218d0 validates queue_id 0..10, fetches value, and calls int_queue_enqueue@0x408930 on ctx's selected queue. The helper appends at end_index, compacts unread entries when read_index is nonzero, or grows capacity by the 0x100-dword quantum. All four corpus sites are in ATSEEK/MVSEEK and enqueue coordinates packed as (x << 16) + y. + +Implemented with signed 32-bit value normalization into the selected FIFO. The port diagnoses invalid or never-reset slots; every shipped use resets queue 0 before enqueueing. + +### 0x134 `try-dequeue-int` (try-dequeue-int, argc 3) +- **summary:** (queue_id, out_success, out_value) - consume the next integer from the selected FIFO, writing success=1 and the value; write success=0 when empty. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x134_try_dequeue_int@0x429620 validates queue_id 0..10 and compares the selected queue's read_index with end_index. When nonempty it reads data[read_index], increments read_index, updates the high-water index, writes 1 to operand 2, and writes the item to operand 3; when empty it writes 0 to operand 2. Native still writes a non-item implementation value to operand 3 on failure, but both shipped callers branch on out_success before reading out_value. ATSEEK and MVSEEK use the opcode as the loop head for their coordinate flood fills. + +Implemented as FIFO TryDequeue: nonempty writes success=1 plus the signed dword; empty writes success=0 and retains the prior value destination because native's failure value is an unusable implementation pointer. Focused tests cover slot independence, ordering, empty/reset behavior, and signed values; real MVSEEK/ATSEEK regressions prove both searches expand beyond the origin. + +### 0x135 `bit-set` (bit-set, argc 2) +- **summary:** (value)(bit_index) - set the indexed bit in the destination integer. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x135_handler@0x4296c0 fetches operand 2 as an unsigned bit index, rejects values >=32 through the native script-error path, fetches operand 1, and writes value | (1 << index). HIDEWIN.BIN sets index 1 at 0x13d and later tests mask 0x2 at 0x146. + +### 0x136 `bit-reset` (bit-reset, argc 2) +- **summary:** (value)(bit_index) - clear the indexed bit in the destination integer. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x136_handler@0x429730 fetches operand 2 as an unsigned bit index, rejects values >=32 through the native script-error path, fetches operand 1, and writes value & ~(1 << index). HIDEWIN.BIN clears index 1 at 0x154 after testing mask 0x2. + +### 0x137 `reset-int-stack` (reset-int-stack, argc 1) +- **summary:** (stack_id) - destroy the selected native integer LIFO and replace it with an empty stack. +- **grounding:** source=investigation, confidence=high +- **depended on by:** 0x138, 0x139 +- **evidence:** Ghidra /v2: op_0x137_reset_int_stack@0x421940 destroys the pointer at EngineCtx+0x55158+id*4, allocates 0x14 bytes, and calls int_stack_construct@0x407410. The constructor allocates 0x100 dwords, records a 0x100-dword growth quantum, and initializes top=-1. scene_context_init_reset@0x40b560 constructs exactly ten entries [0,10), while the handler checks only id<=10; id 10 therefore lands at +0x55180, the numeric-glyph-style table. Corpus: CALLBACK_LOAD@0xf2 is the sole site and resets stack 0 before rebuilding the eight retained ADV layers. + +AGE owns ten independent stack pointers at EngineCtx+0x55158 and reconstructs all ten on every scene-context reset. The handler's unsigned range check accidentally admits id 10 as well as 0..9; that address aliases the first dword of the numeric-glyph-style table rather than an eleventh stack. Himegari uses only id 0. Port status (2026-07-29): implemented with eleven safely isolated handler-addressable stacks, each initially available with native-equivalent 0x100-dword starting capacity and reconstructed empty on root scene reload. Reset replaces only the selected logical stack; invalid ids halt diagnostically. + +### 0x138 `push-int-stack` (push-int-stack, argc 2) +- **summary:** (stack_id, value) - push one signed integer onto the selected native LIFO, growing its dword buffer by 0x100 entries when full. +- **grounding:** source=investigation, confidence=high +- **depends on:** 0x137 +- **depended on by:** 0x139 +- **evidence:** Ghidra /v2: op_0x138_push_int_stack@0x421a40 admits stack ids <=10 and calls int_stack_push@0x408860. The helper grows capacity by the stored 0x100-dword quantum when top+2 reaches capacity, increments top, and stores the value. The ten-slot/id-10 alias caveat is documented on op 0x137. No Himegari script calls this opcode. + +Port status (2026-07-29): implemented over the scene-context stack registry. All signed dword values round-trip through the VM's integer-cell representation, and handler-addressable slot 10 remains independent host state. + +### 0x139 `try-pop-int-stack` (try-pop-int-stack, argc 3) +- **summary:** (stack_id, out_success, out_value) - pop the most recently pushed integer and write success=1, or write success=0 when empty. +- **grounding:** source=investigation, confidence=high +- **depends on:** 0x137, 0x138 +- **evidence:** Ghidra /v2: op_0x139_try_pop_int_stack@0x4297a0 reads top at stack+0x10; when top>=0 it reads data[top] and decrements top, then writes success and value. When top<0, the local holding the value was never replaced from the incoming EngineCtx pointer, yet operand 3 is still written. No Himegari script calls this opcode. + +On success native writes the removed value. On empty, the release handler still writes its reused `this`/EngineCtx local into out_value, so that cell is implementation garbage and must not be consumed unless out_success is nonzero. Port status (2026-07-29): implemented as LIFO TryPop; success writes 1 and the signed dword, while empty writes 0 and deliberately preserves out_value rather than exposing a host pointer. The ten-slot/id-10 alias caveat is documented on op 0x137. + +### 0x191 `absolute-value` (absolute-value, argc 2) +- **summary:** Write the signed 32-bit absolute value of operand 2 to operand 1. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x191_handler@0x426de0 computes (value ^ (value >> 31)) - (value >> 31) and writes it through vm_operand_write. All five Himegari calls are in SELACT, where it normalizes a signed preview delta before drawing it. + +### 0x193 `concat` (concat, argc 3) +- **summary:** Concatenate operand 2 followed by operand 3 and replace the destination string. Sources are resolved before the write, so destination/source aliasing is supported. +- **grounding:** source=inference, confidence=high +- **evidence:** Kelebek identifies param1 = param2.concat(param3). Corpus ordering confirms direction and aliasing: ADDEXP builds level/result messages with both literal-prefix concat(dst, literal, dst) and append concat(dst, dst, literal); BTL has eight calls. + +### 0x194 `string-equals` (string-equals, argc 3) +- **summary:** (out)(left)(right) - compare two complete SYS4 strings and write 1 when equal, otherwise 0. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2 op_0x194_string_equals@0x426e20 fetches operands 2 and 3 through the string resolver, compares their byte ranges through FUN_004017a0, and writes compare_result==0 to integer operand 1. INIT2 and GAMESTART use it as a branch predicate for INPUTNAME/default-name handling; the natural Game Start diagnostic reached one GAMESTART call at 0x134c. The C# VM implements ordinal equality through the shared string resolver, covering literal, global, local, global-string-pointer, and local-string-pointer operands; the traced natural-boot regression proves the reached GAMESTART call no longer falls back. + +### 0x195 `string-not-equals` (string-not-equals, argc 3) +- **summary:** (out)(left)(right) - compare two complete SYS4 strings and write 1 when different, otherwise 0. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: dispatch slot ctx[0x26c93+0x195] is op_0x195_string_not_equals@0x426f20. It resolves operands 2 and 3 as engine strings, compares their complete byte ranges through the same worker as sibling op 0x194, and writes compare_result!=0 to operand 1. Corpus: 17 sites; 15 immediately branch on the result. BUNKI uses three comparisons against the empty string for its optional title row. + +This is the logical inverse of op 0x194 string-equals. Skipping it is stateful: the destination is not cleared. At BUNKI@0x905, local 0x99 still contains a nonzero graphics handle, so the missing write falsely reserves a 30-pixel title row and shifts every choice down. The C# VM implements ordinal inequality through the shared string resolver; focused tests cover literal/global/local/pointer operands and the exact empty-title stale-handle overwrite. + +### 0x19d `is-catalog-resource-unlocked` (is-catalog-resource-unlocked, argc 2) +- **summary:** (out)(packed_resource_id) - return 1 when the shared SAVE.DAT catalog marker for the selected base or append resource decodes to AGE's deterministic per-index unlock stamp, otherwise 0. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x19d_handler@0x427810 fetches operand 2, rejects packed append ids when `set:SaveVersion1/2` is older than 3.10, calls asset_catalog_is_resource_unlocked@0x415920 on ctx+0x9c24c, and writes the bool to operand 1. The helper selects base table +0x41c or append pointer table +0x3844 and compares the stored low word to `(short)index * 0x6f99 - 0x4f50`. asset_catalog_mark_resource_opened@0x44e410 writes the equivalent full stamp and encrypted profile marker after asset_open_indexed_entry succeeds. shared_profile_load decodes the catalog arrays with modular exponentiation before populating those tables. Corpus: four calls, in CGMODE, HMODE, MMODE, and ED. The installed port SAVE.DAT decodes to 7,966/13,208 base markers and 75/81 append markers; all 851 CGINIT gallery images and all 118 SPINIT H-scene scripts validate unlocked. + +Base ids use the low 24-bit index in the primary catalog marker table. A nonzero high-byte selector addresses that append catalog's independent table; selectors require SaveVersion 3.10 or later, and AGE's signed selector lookup only supports 1..127. Successful native catalog opens write the stamp `low16(index * 0x053d6f99 + 0xb0b0b0b0)` and its encrypted SAVE.DAT form. CGMODE tests CGINIT image ids and HMODE tests SPINIT scene-script ids through this predicate. Port status (2026-07-28): shared-profile import decodes both catalog sections, successful VFS opens mark resources, shared SAVE.DAT writes native-decodable encrypted markers, and the opcode returns the live profile predicate. + +### 0x1a6 `half-byte-string-length` (halve-strlen, argc 2) +- **summary:** Write half the resolved string's byte length, using integer truncation. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x1a6_half_byte_strlen@0x427020 resolves operand 2, scans to NUL, and vm_operand_write(1, strlen_bytes >> 1). DRAWCHP sites 0x9b3/0x9e2 multiply the result by 21 and subtract it from x=257 before draw-string. + +Native applies strlen to the NUL-terminated engine byte string and shifts the byte count right by one. DRAWCHP uses this Shift-JIS-oriented width proxy to center unit and weapon names before rasterizing them into a scratch surface. + +### 0x1b0 `copy-dwords` (copy-dwords, argc 3) +- **summary:** (source)(destination)(count) - copy count consecutive 32-bit cells from source to destination. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2 op_0x1b0_copy_dwords@0x427060 fetches operand 3, resolves addressable operands 1 and 2 through vm_operand_resolve_address@0x425a50, and calls memcpy(destination, source, count*4). Corpus: 65 calls across direct global/local spans and local pointers; 43 are immediately preceded by take-address 0x63. The C# VM copies resolved integer-cell spans while retaining local/global address domains; focused tests cover direct spans and aliased pointers, and the traced natural boot reaches the UNITECH/CALCCC pair without fallback. + +### 0x1c8 `toString` (toString, argc 2) +- **summary:** Convert the source signed 32-bit integer to its invariant decimal string and replace the destination string. +- **grounding:** source=inference, confidence=high +- **evidence:** Kelebek identifies integer-to-string conversion. All five corpus sites are in ADDEXP and feed concat immediately: level numbers, signed deployment-cost deltas, and movement deltas. Source types are global/local integer and the destination is a local string. + +### 0x2c5 `byte-string-length` (strlen, argc 2) +- **summary:** Write the resolved NUL-terminated engine string's raw byte length. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x2c5_byte_strlen@0x42a690 resolves operand 2, scans byte-by-byte through the terminating NUL, and writes the byte count to operand 1. Corpus: 23 sites in 10 scripts. BUNKI uses two sites to size its temporary menu surface and horizontally place all primary option strings. + +This is raw strlen(bytes), not a .NET UTF-16 character count. BUNKI compares all option/title byte lengths, adds four bytes of padding, and converts the result to pixels; skipping the opcode leaves its local maximum at zero, forcing the minimum-width menu and shifting every primary label right. The C# VM shares the configurable native-string byte counter used by op 0x1a6 (CP932 by default), including embedded-NUL termination; focused tests cover literals and local-string pointers. + +### 0x2c6 `cp932-character-length` (cp932-character-length, argc 2) +- **summary:** (out)(string) - write the Japanese-locale multibyte character count of the CP932 string, counting a valid lead/trail pair as one character. +- **grounding:** source=investigation, confidence=high +- **evidence:** The real /v2 dispatch slot registers op_0x2c6_cp932_character_length@0x42a6d0. The handler sets LC_ALL to `japanese`, resolves operand 2, calls MSVC _mbstrlen, and writes the result to operand 1. INPUTNAME's sole site at 0x1002 uses this count as the loop bound before slicing each character with opcode 0x2c8. + +This is character count rather than .NET UTF-16 length or raw CP932 byte length. Port status (2026-07-29): implemented by encoding the C-string prefix through VmOptions.NativeStringCodePage and counting valid CP932 lead/trail pairs as one character; focused tests cover mixed single-byte and double-byte characters. + +### 0x2c8 `cp932-substring` (cp932-substring, argc 4) +- **summary:** (out)(string)(start)(count) - copy a CP932 substring selected by multibyte-character index and count without splitting valid lead/trail pairs. +- **grounding:** source=investigation, confidence=high +- **evidence:** The real /v2 dispatch slot registers op_0x2c8_cp932_substring@0x42c420. It copies operand 2 into a 256-byte buffer, sets LC_ALL to `japanese`, obtains _mbstrlen, reads start and count, clamps end=start+count to the character length when end is below 1 or beyond that length, and walks bytes with _mbbtype so CP932 lead/trail pairs are copied together. It writes the selected byte interval back through operand 1. INPUTNAME's sole site at 0x1021 loops substring(name,index,1) into its eight local character cells. + +The release call uses nonnegative in-range indices and count 1. Port status (2026-07-29): implemented over encoded byte spans, preserving every valid lead/trail pair and reproducing native end clamping (`end = length` when start+count < 1 or > length) before selecting the half-open character interval [start,end). + +## control + +### 0x1 `throw-exit-request` (throw-exit-request, argc 0) +- **summary:** () - raise Command_Exit_Exception with result value 1. The outer engine loop catches it, exits without advancing the VM PC, and returns control to the frontend. TITLE uses it for the fifth main-menu action; SYSTEM4 uses it after reporting an invalid execution mode. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x1_throw_exit_request@0x4162e0 constructs a four-byte payload with value 1 and calls __CxxThrowException_8 with ThrowInfo 0x5a9710. Its CatchableTypeArray resolves to RTTI TypeDescriptor 0x5b13e8, `.?AVCommand_Exit_Exception@@`. The outer engine_main_tick_with_exception_policy@0x411840 has MSVC FuncInfo 0x5a9750; its typed catch entry maps Command_Exit_Exception to catch_CommandExitException_set_exit_result@0x412648, which forces result 1 and returns continuation 0x412961 for loop teardown/return. The dispatcher advances frame_pc only after a handler returns, and this catch never advances it. A separate generic error-dialog result-4 path at 0x412928 explicitly advances the PC, proving fall-through is opt-in and does not apply here. Corpus has exactly two sites: TITLE@0x393 after the fifth menu action's sound/sleep, and SYSTEM4@0x5b9 after printing 'invalid execution mode'. TITLE bytecode following 0x1 builds a developer debug menu and is unreachable in the retail native path. The frontend full-exit/return-to-title prompt remains a separate unimplemented boundary. + +### 0x3 `call-script` (call-script, argc 1) +- **summary:** load & call another SYS4 script by id; id = RAW index into the SYS4INI file table (asset-index). Pushes a script frame; returns to caller when the callee ends. +- **grounding:** source=investigation, confidence=high +- **evidence:** native-RE (Ghidra): handler FUN_0041bc90 -> loader script_frame_load_resource@0x40e980 -> resolver asset_open_indexed_entry@0x44f390 indexes an 80-byte record table (FileDB+0x414 base, FileDB+0x40c count) at base+id*0x50 = the SYS4INI record layout {name[64],arc_id@0x40,file_number@0x44,offset@0x48,size@0x4c}. The FileDB is embedded at EngineCtx+0x9c24c, making those EngineCtx+0x9c660/+0x9c658. Confirmed statically: all 297 distinct base-corpus call-script ids resolve to a .BIN script with a semantically-exact name (0x1ab->ADDITEM, 0x2ae7->MES, 0x143->BUNKI, 0x329d->CALCREVISE), 0 out-of-range. See docs/engine-re.md + name-resolution.md #1. + +op 0x03 (call-script, argc 1): `call-script `. RESOLVED — the id is a direct RAW index into +the SYS4INI global file table (the same table parse_sys4ini.py reads, but indexed WITHOUT skipping +'@' placeholders; SYS4INI has 13208 records / 2 placeholders). No separate on-disk id->code registry +exists; SYS4INI *is* the call-script registry. +Native mechanism (dispatch table `handler(op)=ctx[0x26c93+op]`, op 0x03 -> FUN_0041bc90): + 1. FUN_0041bc90 fetches operand 1 (id), bounds-checks call depth (<=0x26), pushes a frame. + 2. FUN_0040e980 (loader): opens the resource by id, reads the 0x20-byte SYS4 header, checks magic, + allocates per-frame code/local buffers from the header var-counts, reads the bytecode body, + pushes a script frame (stride 0x1e = 30 dwords, indexed by ctx[0x14f45]). + 3. asset_open_indexed_entry@0x44f390 (resolver): its `this` is the embedded FileDB, not EngineCtx. + Base record = [FileDB+0x414] + id*0x50. It tries a LOOSE OVERRIDE first (CreateFileA on + record.name -> mod/patch hook point), else opens archive [record.arc_id*0x100 + FileDB+0x410], + SetFilePointer to record.offset, size = record.size. + High-byte-tagged ids select [FileDB+0x3028 + signed_selector*4] and index the chosen AAI by the + low 24 bits. The base corpus has 0/297 explicit high-byte call-script operands; INIT2 op 0x143 + supplies mounted record-zero ids dynamically. +Companion op 0x8f `call` is INTRA-script (a local JSR), not cross-script -- see its entry. +This also names the whole call graph statically (build/callscript-names.json). + + +### 0x6 `preload-script-slot` (preload-script-slot, argc 2) +- **summary:** (script_id, frame_slot) - load and allocate a script into a numbered engine context slot without executing it. Valid slots are 0..39. +- **grounding:** source=investigation, confidence=high +- **depended on by:** 0x8 +- **evidence:** Ghidra /v2: op_0x6_preload_script_slot@0x41bdb0 fetches script_id and frame_slot, saves the current context index, selects frame_slot, rejects values above 39, calls script_frame_load_resource(ctx+0x54fe8, script_id), restores the caller index, and throws on load failure. SYSTEM4's only three sites preload ATSEEK.BIN (0x337f) into slot 0x1d, SETROUTE.BIN (0x3380) into 0x1e, and MVSEEK.BIN (0x3381) into 0x1f before INIT2. + +Implemented as persistent VM-owned preloaded slots containing the resolved script id and one reusable ExecFrame. Replacing a slot allocates a fresh frame/local bank; invalid slots, absent providers, and unresolved scripts halt diagnostically. Root scene reload clears the slots before SYSTEM4 registers them again. + +### 0x8 `call-preloaded-script-slot` (call-preloaded-script-slot, argc 1) +- **summary:** (frame_slot) - restart and execute the script previously loaded into that engine context slot, returning to the caller when it exits. +- **grounding:** source=investigation, confidence=high +- **depends on:** 0x6 +- **evidence:** Ghidra /v2: op_0x8_call_preloaded_script_slot@0x41bf00 fetches frame_slot, switches cur_ctx_index to it, errors if frame_codebase is null, stores the caller context index into the selected slot's ctx_record_base, resets its PC to codebase and instruction length to zero, and returns to the dispatcher. op_0x2_exit_or_return_frame@0x417940 disposes only an adjacent child (parent+1==current); SYSTEM4's non-adjacent slots 0x1d..0x1f therefore retain their allocated local banks between calls. Corpus has 64 sites, exclusively slots 0x1d/0x1e/0x1f. FIELD uses 0x1f for MVSEEK, 0x1d for ATSEEK, and 0x1e for SETROUTE. + +Implemented by recursively executing the reusable preloaded ExecFrame while preserving its local banks across invocations, restarting at script offset zero, and propagating halt/root-reload/exit outcomes like ordinary call-script. The port emits normal call-script trace events for observability. Focused tests prove code restart plus local persistence and drive the real MVSEEK through SYSTEM4's exact 0x06/0x08 ABI. + +### 0x9 `exit-script` (exit-script, argc 0) +- **summary:** () - discard the complete active script stack, reset scene-owned engine services, and load raw script resource 0 as the new root. The global VM banks and process-owned configuration survive; the initial-root-run flag queried by op 0x130 is cleared so LOGO/OP are not replayed. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x9_reset_scene_and_reload_root@0x418f50 clears EngineCtx+0x54ff0, disposes all 40 interpreter-frame slots with script_frame_dispose@0x40e610, aborts timed/input callback state, calls scene_context_init_reset@0x40b3b0, resets hotspot/input services, optionally releases AutoFreeTex surfaces, then calls script_frame_load_resource(...,0). The scene reset clears interpreter/ADV/input/retained-gfx state and normally releases the 1000 surface/movie slots; it does not clear the VM global bank or engine configuration. Corpus sites are terminal scene/control exits rather than ordinary local returns. + +Implemented as a whole-stack root-reload boundary in the persistent VM. A request propagates through every nested call-script frame without resuming caller instructions, clears VM/host scene presentation and input state, cancels deferred SFX starts while preserving active/process-owned audio, preserves globals/external globals and process-owned host configuration/caches, then resolves raw resource 0 through the script provider and starts it at offset zero. The retained history backlog is deliberately preserved pending a separate proof of its native lifetime; recording suppression is reset. + +### 0x7b `coroutine-save-yield-handlers` (u0041ADB0, argc 2) +- **summary:** (handler1_pc)(handler2_pc) — scene-coroutine: save the two per-frame yield/resume handler PCs. Native writes op1→ctx[0x6da88+idx*4], op2→ctx[0x6db28+idx*4] (idx=ctx[0x53d14] script-context index); its generic handler prologue records the 5-dword instruction length. SC0000 0x79: `0x7b label_3c9 label_41e` registers the ADV per-frame render→poll→yield handlers. Part of the scene-coroutine framework (see engine-re.md §Scene-coroutine framework); pairs with 0x7c (resume) + 0x140 (loop iterator). +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra: handler FUN_0041ebf0 (dispatch ctx[0x26c93+0x7b]) = {frame_instruction_word_count[idx]=5; ctx[0x6da88+idx*4]=op1; ctx[0x6db28+idx*4]=op2}. Both operands are code PCs (handler labels). + +### 0x7c `coroutine-resume` (u00416A90, argc 0) +- **summary:** () — scene-coroutine RESUME point. Native requires run-state bit 0x2000000 (ctx[0x6dbc8]) set — THROWS (__CxxThrowException) if unset, so it is only ever reached on a scheduler-driven re-entry, NEVER on a cold first pass (cold flow jmps over it). Restores PC=ctx[0x53d28]+ctx[0x6dbcc]*4, clears the run-bit (ctx+0xa0ce4 &= ~0x2000000), resets input/line state. SC0000 0x443 (falls into the main loop label_444). See engine-re.md §Scene-coroutine framework. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra: handler FUN_00417cb0 (dispatch ctx[0x26c93+0x7c]). Guards on (ctx[0x6dbc8] & 0x2000000)==0 → throw; else restores PC = ctx[0x53d2c-slot] = ctx[0x53d28]+ctx[0x6dbcc]*4, ctx[0xa0ce4]=ctx[0x6dbc8]&0xfdffffff, clears input state (ctx[0x13bdc]/0xc6f8=-1 etc.). + +### 0x8f `call` (call, argc 1) +- **summary:** intra-script subroutine call (local JSR): PC = frame.codebase + operand*4; pushes a return address on the per-frame return stack. NOT cross-script (that is call-script 0x03). +- **grounding:** source=investigation, confidence=high +- **evidence:** native-RE (Ghidra): handler FUN_0041fba0 (= ctx[0x26c93+0x8f]) sets [frame PC @+0x53d2c] = [frame codebase @+0x53d28] + operand*4 and pushes ((pc-base)>>2)+3 onto the per-frame return stack ([ctx+0x552e8]/[ctx+0x55248]). Target is a code OFFSET within the current script (matches header table T3 tag 0x8F = local call targets), confirming it is a local JSR, not a script load. + +### 0xa1 `begin-value-switch` (begin-value-switch, argc 0) +- **summary:** Clear and initialize the current value-to-PC dispatch table used by the following case and switch-jump opcodes. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0xa1_handler@0x42bd60 resets the engine's open-addressing value-dispatch table with capacity 0xfff. Corpus has 12 canonical sequences of 0xa1, one or more 0xa2 cases, then 0xa3 dispatch. + +### 0xa2 `add-value-switch-case` (add-value-switch-case, argc 2) +- **summary:** (case_value)(target_pc) - format the VM value as a dispatch key and add its branch target to the current switch table. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0xa2_handler@0x42d310 formats operand 1 through vm_value_format_string@0x418860 and inserts operand 2 into value_dispatch_insert_case@0x42cf70. HISTORY.BIN maps action values 0,3,4,5,6 to callback branches; it is generic switch/case dispatch, not menu registration. + +### 0xa3 `value-switch-jump` (value-switch-jump, argc 2) +- **summary:** (selector)(default_target) - jump to the target registered for selector, or to the supplied default target when no case matches. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0xa3_handler@0x420060 formats operand 1, queries value_dispatch_lookup@0x419290, writes the matched or operand-2 default PC into the current frame, and clears the command type. Corpus pairs it with 0xa1/0xa2 in 12 generic switch sequences. + +### 0xae `continue-save-load-stack-restore` (continue-save-load-stack-restore, argc 0) +- **summary:** () - during serialized save restoration, replace the current frame PC with its saved resume/call target and advance through the saved script-context stack; otherwise a no-op. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0xae_continue_save_load_stack_restore@0x416790 first tests ctx+0x53d24 (set by save_data_deserialize_and_begin_restore@0x40fd10). When clear it returns. When set, it selects the serialized frame layout through set:SaveVersion1/2, restores the current PC from that layout's saved return/call target, advances through contexts with script_frame_restore_saved_layout@0x40f2d0, and clears the restore flag on reaching the saved terminal context. The restore helper calls script_frame_load_resource@0x40e980, which initializes each new frame PC to its script codebase; the script therefore executes its ordinary prologue before reaching 0xae. Native parent contexts retain restored coordinates while the child runs. SAVE00 -> SAVE03 proved the port must retain the terminal 0x1ad boundary; SAVE00 -> SAVE04 proved a managed parent parked at synthetic 0xae must serialize original resume=8/call=8 rather than synthetic -1/-1; slot 006 proved direct entry at 0xae skips FIELD's zoom-table prologue and collapses the dungeon map. Its 305 corpus sites overwhelmingly follow coroutine-resume/call boundaries. + +Layout 3 frame d259 indexes SYS4 T1 read-message reset sites, d260 indexes T2 call-script sites, and the saved local return stack indexes T3 local-call sites. Port status (2026-07-24): each saved script is loaded at its ordinary entry, runs its frame-local prologue, and reaches 0xae itself; the active path then reconstructs the saved recursive frame chain, preserves each synthetic ancestor's original T1/T2/T3 coordinates while its restored child is active, reinstates the terminal restored frame as opcode 0x1ad's save boundary, and resumes it at T1. The installed SAVE00 continuation gate proves SYSTEM4 -> FORT restoration reaches FORT's CHMENU gameplay poll; the unchanged port-authored dungeon slot 006 proves FIELD's pre-rendezvous zoom table is initialized; synthetic gates assert both root/child prologue execution, SaveRestore rather than ordinary CallScript entry, exclusion of nested SAVE helpers from a re-save, and reload of that rewrite without ordinary boot re-entry. + +### 0xc8 `sleep` (sleep, argc 1) +- **summary:** Pause the current script for milliseconds while retained presentation continues. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra: dispatch ctx[0x26c93+0xc8]=0x420ec0; sleep_op_0xc8 + sleep_timer_arm decoded/annotated 2026-07-08. docs/engine-re.md sleep section. + +Native handler sleep_op_0xc8 @0x420ec0 is NON-BLOCKING: it arms a timer (sleep_timer_arm @0x44cff0 at ctx+0x5f304 = active flag + start tick + duration) that the engine main loop polls, resuming the script when elapsed. Operand UNIT = MILLISECONDS (start = ms tick source DAT_0056f3d4, timeGetTime/GetTickCount class), and the native arm helper clamps duration to a minimum of 1 ms. ROOM's input loop deliberately uses sleep(0), making it a one-engine-tick yield rather than a no-op. The handler also records its generic 3-dword instruction length and runs anti-tamper checks, neither needed host-side. Port equivalent: the Godot host parks the VM thread for max(1, scaled duration) ms while the presentation compositor continues. Sleep is one proven presentation-capable service boundary; ordinary AE setup runs burst-fast to 0x21c and is not paced per opcode. Headless hosts no-op it (parity). + +### 0xd0 `get-monotonic-time-ms` (get-monotonic-time-ms, argc 1) +- **summary:** Write the native monotonic millisecond clock to operand 1. Battle presentation uses paired samples around timed callback sequences to calculate elapsed time. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0xd0_handler@0x428860 calls imp_winmm_timeGetTime and writes the returned 32-bit tick count to operand 1. BTL samples it before and after its timed HP/damage presentation; MVRTN has the other two corpus calls. + +### 0xd3 `begin-timed-callback-sequence` (u00425960, argc 0) +- **summary:** Clear and initialize the current script frame's timed local-callback sequence. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0xd3_handler@0x41a430 clears the 16-byte-entry vector at ctx+0x5f694, sets last index ctx+0x5f6a4 and abort target ctx+0x5f690 to -1, and resets playback cursor ctx+0x5f6a8 to zero. HISTORY.BIN@0xbf9 begins its seven-event scrollbar interpolation schedule. + +### 0xd4 `append-relative-timed-callbacks` (u004266F0, argc 4) +- **summary:** Append repeated relative deadlines and their on-time/catch-up local callback targets to the current frame's timed sequence. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0xd4_handler@0x428890 loops operand 2 times, accumulates operand 1 onto the preceding deadline, stores operand 3 at entry+8 and operand 4 at entry+0xc, and appends each 16-byte entry. HISTORY.BIN@0xbfa/0xc03/0xc0c produces deadlines 10,20,30,40,50,51,52 ms. + +### 0xd5 `run-timed-callback-sequence` (u004262C0, argc 1) +- **summary:** Start or service the frame-local timed sequence, dispatching scheduled local callbacks through the penultimate entry and selecting the catch-up target when the following deadline is already late. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0xd5_handler@0x421090 retains the current script resource, starts the ctx+0x5f3ac timer, sorts the schedule, and keeps run-state bit 0x40 active only while cursor < last_index, making the final entry a non-dispatched look-ahead sentinel. timed_callback_sequence_tick@0x408170 waits to each deadline, compares the following entry deadline with elapsed time to select entry+8 versus entry+0xc, redirects the frame PC, and advances ctx+0x5f6a8. engine_main_tick_with_exception_policy@0x411840 bypasses its ordinary gfx_render_frame path while only run-state bit 0x40 owns the wait. Operand 1 is an optional abort/fallback PC; HISTORY and BUNKIMOVE pass 0xffffffff. + +Run-state bit 0x40 suppresses the outer loop's ordinary retained-frame renderer while the timed service sleeps. A scheduled callback becomes visible only through its own explicit presentation opcode; the pacing wait is not itself a retained-state publication boundary. + +### 0xd9 `clear-run-state-0x1000` (u00415880, argc 0) +- **summary:** Clear native run/service bit 0x1000; if the secondary context is active, clear the same bit there. SC0000 executes it once after the initial SFX-channel reset, with no VM-visible result. +- **grounding:** source=investigation, confidence=high, noop_headless=True +- **evidence:** Ghidra op 0xd9 handler 0x416da0: ctx->run_state_flags &= ~0x1000; when ctx+0x6f8b8 is nonzero, also clears bit 0x1000 at ctx+0x53d20. No operands, calls, or return value. + +### 0x130 `get-initial-root-run` (get-initial-root-run, argc 1) +- **summary:** (out) - write the engine's initial-root-run flag. It is initialized to 1 when the AGE context is constructed and cleared by op 0x9 before that opcode resets state and reloads root script id 0. SYSTEM4 uses the value to call LOGO.BIN and OP.BIN only on the process's initial root run. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x130_get_initial_root_run@0x4295b0 copies EngineCtx+0x54ff0 to operand 1. FUN_00413860 initializes +0x54ff0 to 1 at 0x413cc7/0x413d15; op_0x9_reset_scene_and_reload_root@0x418f50 is its only later writer and clears it before scene_context_init_reset plus script_frame_load_resource(...,0). Corpus: sole site SYSTEM4@0x29a branches to LOGO.BIN then OP.BIN only when the returned value is nonzero. + +Implemented as process-lifecycle state owned by the persistent VM: it begins at one and op 0x9 clears it. It is not a script global, save/profile value, command-line seed, or script-name special case. + +### 0x140 `coroutine-label-yield` (u0041F9C0, argc 4) +- **summary:** (out)(name_str)(sub_str)(in) — scene-coroutine LOOP ITERATOR / labeled yield. Handler copies name/sub strings + the int operand and calls AGERC host command 8 through g_pfnAgercHostCallback(8, ctx[0x54fe8], &{name,sub,in}); writes the returned PC-like value to operand 1. In SC0000 label_462 'ループ開始' (@0x46d): `out=G[0x6be]=LABEL('J',G[0x6be])`; loop runs the intro-setup body (incl. call label_125bd = slot-table fill G[0x3239..0x324e]=4..11) and jmps back until out==G[0x6c3] (a per-scene exit-PC immediate) → mov aba5c 0 → content. The gate G[0xaba5c]==1 that opens this loop is NATIVE scene-entry state (no script sets it to 1). PORT = HOST-MODEL IMPLEMENTED: synthesize the ADV scene-entry gate, run the LABEL/J setup body once, then return the structurally discovered per-scene terminal; do not emulate the service dialog. See engine-re.md §Scene-coroutine framework. +- **grounding:** source=investigation, confidence=med +- **evidence:** Ghidra: handler 0x4299c0 (dispatch ctx[0x9b74c]=0x4299c0; created+typed EngineCtx*+annotated; Kelebek u0041F9C0 = VA-drift). Records the generic 9-dword instruction length; op2→local_204, op3→local_104, op4→local_208; g_pfnAgercHostCallback(8, ctx[0x54fe8], &local_210) → FUN_00425fb0(1,ret). A read-only probe resolves the callback to AGERC.DLL+0x1050; imported /support/AGERC.DLL identifies agerc_dispatch_host_command@0x100025f0 and its command-8 dialog-resource branch. FUN_00405740 calls the same dispatcher with command 3 and branches on return 1/2 for transition progress. Command 8's exact LABEL iterator calculation remains unresolved, so confidence remains medium. + +### 0x143 `run-mounted-append-autoruns` (u00415FB0, argc 0) +- **summary:** () - enqueue record zero from every mounted nonzero AAI selector in ascending selector order, then execute those packed scripts serially before resuming the caller. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x143_run_mounted_append_autoruns@0x4172f0 scans mounted_aai_catalogs[1..255] at EngineCtx+0x9f278, enqueues selector<<24 through script_launch_queue_enqueue@0x40f820 while dispatch is suppressed, advances the caller PC, then tail-dispatches through script_launch_queue_dispatch_next@0x40f6e0. Positive queue entries load in reserved frame 37 with return sentinel -10; op_0x2_exit_or_return_frame@0x417940 dispatches the next queued entry or restores the suspended caller. Corpus: the sole site is INIT2@0x17f, after its 23 base INIT children and global/array setup and immediately before TUNE.BIN. + +The opcode does not look up an AUTORUN filename. For each non-null mounted catalog pointer in selector +slots 1 through 255, it constructs the packed id `selector << 24`, whose low 24-bit record index is zero. +At Himegari cold boot the native catalog loader has already mounted APPEND01 in selector 1 before SYSTEM4 +starts. SYSTEM4 calls INIT2; INIT2 runs EBINIT through SCINIT plus BTANINIT2, completes its base registry +setup, executes this opcode, and resumes at its following TUNE call only after every queued record-zero +script returns. Installed selector 1 record zero is `$1$AUTORUN.BIN`, which applies the append INIT deltas +and registrations. This is a serial base-then-append patch boundary, not a filename overlay. + +PORT = IMPLEMENTED. `IScriptProvider.MountedAppendSelectors` exposes mounted selector identity without +coupling the VM to the SYS4 catalog type. The opcode snapshots, deduplicates, and sorts selectors, constructs +each packed record-zero id, and runs the resolved script through the ordinary nested-frame machinery before +resuming INIT2. Focused tests protect ordering, packed-id construction, caller suspension, and unresolved +record-zero failure. Natural SYSTEM4 boot proves BTANINIT2 -> `$1$AUTORUN.BIN` -> `$1$EBINIT.BIN` -> TUNE. + + +### 0x199 `yield-adv-coroutine` (u00414D50, argc 0) +- **summary:** Yield/re-enter the registered ADV coroutine handler. The fifth standard chrome button uses this transition to enter the HIDEWIN/window-hidden flow. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x199_yield_adv_coroutine@0x416440 selects the registered coroutine yield-A or yield-B PC according to ctx+0x6dbc8, saves the current resume offset/state, and redirects the current frame PC. SC0000's x=772 ADV button invokes it; the SO001 tooltip at source x=528 reads Window hide, and the surrounding coroutine calls HIDEWIN.BIN. + +### 0x19e `save-numbered-slot` (save-numbered-slot, argc 2) +- **summary:** (status_out)(slot) - write the active native VM/session state to `SAVE%02d.DAT`. The file is truncated/replaced in place after any compatibility-overwrite prompt; successful serialization also flushes shared `SAVE.DAT`/`RT.DAT`. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x19e_save_numbered_slot@0x4278b0 formats SAVE%2.2d.DAT, checks an existing header and prompts before replacing an incompatible file, opens CREATE_ALWAYS, reads set:SaveVersion2 then set:SaveVersion1, and calls context_state_serialize@0x40d320. Corpus: two calls in SAVE.BIN and SELSTAGE.BIN. + +Uses `set:SaveVersion1` and `set:SaveVersion2` to choose the numbered payload layout. Status is 0 on success and 1 on refusal, open/create failure, or serializer failure. Numbered `.DAT` files do not use the shared profile's temp/backup replacement scheme. Port status (2026-07-24): layout 3 writes fixed state, six native banks, T1/T2/T3 frame records, surface/resource reload state, retained gfx records, the appended history tail, and then flushes shared SAVE.DAT/RT.DAT. + +### 0x19f `load-numbered-slot-data-only` (load-numbered-slot-data-only, argc 2) +- **summary:** (status_out)(slot) - decode `SAVE%02d.DAT` without restoring the active script-frame chain or text history. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x19f_load_numbered_slot_data_only@0x427a40 opens SAVE%2.2d.DAT and calls save_data_deserialize_and_begin_restore@0x40fd10(handle, SaveVersion1, SaveVersion2, 0, 0), then decodes protected integer globals. Missing/open failure writes status 1; otherwise the decoder result is returned. Corpus count: 0. + +This is the data-only companion to full-resume opcode 0x1a1. It selects the configured SaveVersion layout and restores serialized state with both runtime/history restore flags clear. Himegari's shipped script corpus does not call it, but it belongs to the shared SYS4 persistence ABI. Port status (2026-07-24): implemented for layout 3 through the same bank/resource/gfx decoder without activating history or frame restoration. + +### 0x1a0 `query-numbered-save-metadata` (query-numbered-save-metadata, argc 9) +- **summary:** (status_out)(slot)(year)(month)(day)(hour)(minute)(second)(playtime_seconds) - validate a numbered `.DAT` header and return its timestamp and accumulated playtime. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x1a0_query_numbered_save_metadata@0x427ba0 calls save_container_read_and_validate_header@0x4306f0. It reads SYSTEMTIME WORDs at header +0x108/+0x10a/+0x10e/+0x110/+0x112/+0x114 and DWORD accumulated playtime at +0x118. Corpus: three calls in SAVE.BIN. + +Status 0 means valid metadata was written, 1 means the file could not be opened, and 2 means its native header was invalid or incompatible. Metadata comes from the fixed 0x124-byte S3SD/S4SD container header; no payload decode is needed. Himegari numbered files use compatibility id 0x42323234, distinct from shared SAVE.DAT/RT.DAT id 0x4a343234. Port status (2026-07-24): implemented through the native directory store with fixed-header-only reads. + +### 0x1a1 `load-numbered-slot-and-resume` (load-numbered-slot-and-resume, argc 2) +- **summary:** (status_out)(slot) - fully load `SAVE%02d.DAT`, including saved script frames and text history, then resume through `CALLBACK_LOAD.BIN` and opcode 0xae. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x1a1_load_numbered_slot_and_resume@0x427d30 calls save_data_deserialize_and_begin_restore@0x40fd10(handle, SaveVersion1, SaveVersion2, 1, 1), closes the file, and decodes protected integer globals. The loader activates the saved-frame state consumed by op_0xae. Corpus: one call in SAVE.BIN. + +The caller pre-seeds status to zero. A missing/open failure writes 1; success starts the asynchronous native stack-restoration rendezvous and does not overwrite that zero. This is the ordinary load-game path, unlike data-only opcode 0x19f. Port status (2026-07-24): layout 3 restores banks, history, surfaces/resources, and retained gfx, unwinds the obsolete managed call chain, then reconstructs saved frames through opcode 0xae. + +### 0x1a2 `store-shared-profile-int` (store-shared-profile-int, argc 1) +- **summary:** 0x1a2 (cell) — snapshot the selected global integer cell into AGE's shared SAVE.DAT profile table. Its native key is raw type byte `0x03` followed by eight lowercase ASCII hex digits for the lvalue's resolved global-bank index; the stored value is the cell's current raw 32-bit value. Insert-or-assign semantics replace an existing entry. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x1a2_store_shared_profile_int@0x42d360 reads operand 1 with vm_operand_fetch, resolves its cell index with vm_operand_lvalue (accepted types 3/6/0xc), formats `3%08x`, and calls hash_table_insert_or_assign with ECX=ctx+0x5190. shared_profile_payload_write@0x430a20 serializes each 12-byte key plus 32-bit value to SAVE.DAT. Corpus: 17,585 calls in 315 scripts; 17,539 use local-ptr after lookup-array and 46 use global-int. + +Paired reader 0x1a3 restores the same cell, returning zero when the key is absent. The table is embedded at ctx+0x5190, explicitly enumerated by shared_profile_payload_write into shared SAVE.DAT, and reconstructed by shared_profile_payload_read. It is not the retained gfx map, numbered SAVE##.DAT state, or RT.DAT ReadTextDB. Port status (2026-07-24): implemented through profile-owned SharedProfile state shared across fresh scene VMs and the native shared-payload/store lifecycle; direct globals and resolved global local-pointers are covered. + +### 0x1a3 `load-shared-profile-int` (load-shared-profile-int, argc 1) +- **summary:** 0x1a3 (cell) — restore the selected global integer cell from AGE's shared SAVE.DAT profile table. It resolves the same raw `0x03` plus eight-hex-digit cell-address key as 0x1a2 and overwrites the operand with the stored raw 32-bit value, or zero when the key is absent. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x1a3_load_shared_profile_int@0x427e90 resolves operand 1 with vm_operand_lvalue, calls shared_profile_int_lookup@0x4199d0 with the shared-profile object at ctx+0x4d7c, then vm_operand_write stores the result. The wrapper searches the table at object+0x414 = ctx+0x5190 and returns zero on a miss. Current override-aware corpus: 77 calls in 12 scripts. + +This is the read half of the shared-profile integer service, not a string operation. LOADCONFIG.BIN restores configuration globals with it; GAMESTART/GAMECLEAR and array-pointer call sites restore other selected profile-wide values. Port status (2026-07-24): implemented with 0x1a2 through the shared profile service and native payload codec. + +### 0x1a9 `store-shared-profile-string` (store-shared-profile-string, argc 1) +- **summary:** (cell) - snapshot the selected global string cell into AGE's shared `SAVE.DAT` profile table under a raw `0x05` type byte plus eight lowercase ASCII hex digits for the resolved global-bank index, replacing any earlier value. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x1a9_store_shared_profile_string@0x42d3e0 fetches operand 1's string, resolves the lvalue cell index, and calls shared_profile_store_string_by_typed_key@0x42d2b0 with type prefix 5. Corpus: 17 calls in GAMECLEAR, INPUTNAME, SAVE, and SELSTAGE. + +This is the string counterpart to integer-store opcode 0x1a2. The value is profile-wide rather than numbered-slot-local and is written by the shared profile lifecycle. Port status (2026-07-24): implemented for direct global strings and resolved global string-pointers. + +### 0x1aa `load-shared-profile-string` (load-shared-profile-string, argc 1) +- **summary:** (cell) - restore the selected global string cell from AGE's shared `SAVE.DAT` profile table using the raw `0x05` plus eight-hex-digit key; a missing key yields the native empty-string default. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x1aa_load_shared_profile_string@0x42bd90 resolves operand 1's lvalue index, calls shared_profile_load_string_by_typed_key@0x419ca0 with type prefix 5, and writes the result back through the VM string lvalue. Corpus: seven calls in GAMESTART, INIT2, INPUTNAME, and SAVE. + +This is the paired reader for opcode 0x1a9 and the string counterpart to integer-load opcode 0x1a3. Port status (2026-07-24): implemented through the shared profile service and native payload codec. + +### 0x1ab `delete-numbered-save` (delete-numbered-save, argc 2) +- **summary:** (status_out)(slot) - attempt to delete both `SAVE%02d.DAT` and its `SAVE%02d.STH` thumbnail. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x1ab_delete_numbered_save@0x427ed0 formats and calls DeleteFileA for the numbered .DAT and .STH paths with the layered status convention. Corpus: one call in SAVE.BIN. + +Both deletes are attempted. Status is 0 when both succeed, 1 when only the DAT delete fails, and 2 whenever the STH delete fails (taking precedence over a DAT failure). Port status (2026-07-24): implemented against the paired native filenames. + +### 0x1ac `copy-numbered-save` (copy-numbered-save, argc 3) +- **summary:** (status_out)(source_slot)(destination_slot) - copy both numbered `.DAT` state and `.STH` thumbnail, replacing destination files. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x1ac_copy_numbered_save@0x427fb0 formats source/destination SAVE%2.2d.DAT and SAVE%2.2d.STH paths and invokes CopyFileA with fail-if-exists false. Corpus: two calls in SAVE.BIN. + +Both copies are attempted with overwrite allowed. Status is 0 when both succeed, 1 when only the DAT copy fails, and 2 whenever the STH copy fails (taking precedence over a DAT failure). Port status (2026-07-24): implemented against the paired native filenames. + +### 0x1ad `mark-save-resume-frame` (mark-save-resume-frame, argc 0) +- **summary:** Mark the current script context as the highest frame serialized by numbered-save layouts 2/3. The native serializer saves frames 0 through this boundary and strips the boundary frame's return target so loading resumes it as the top frame. This opcode performs no file I/O itself. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x1ad_mark_save_resume_frame@0x416b70 writes decoded instruction size 1 and ctx+0x9928c=cur_ctx_index. context_state_serialize@0x40d320 uses that field (or cur_ctx_index when -1) as the inclusive frame cutoff for save layouts 2/3, serializes frames 0..cutoff, and forces the cutoff frame's saved return entry to -1. op_0x2_exit_or_return_frame@0x417940 clears the mark when unwinding below it. Corpus: 1,928 calls in 304 scripts; SC0000's six calls are at startup and immediately after HISTORY/MENU/HIDEWIN/INPUTNAME returns. + +Port status (2026-07-24): implemented as an active ExecFrame identity marker. It survives nested calls and clears when its owning frame unwinds; the following full numbered-payload slice will consume the exposed zero-based cutoff. + +### 0x1b2 `append-diagnostic-value` (u00425790, argc 1) +- **summary:** Format operand 1 with AGE's generic operand-to-string conversion and append its exact bytes to the context diagnostic accumulator. This does not present or clear the accumulated text. +- **grounding:** source=investigation, confidence=high +- **depended on by:** 0x1b3, 0x1b4 +- **evidence:** The real /v2 dispatch slot ctx+0x9b914 registers op_0x1b2_append_diagnostic_value@0x41f4b0. It formats operand 1 through vm_operand_format_as_string@0x41af90, measures the returned NUL-terminated bytes, and appends them to the embedded MSVC string at ctx+0x6f880. Himegari has two literal-string sites and one SYSTEM4 global-integer site. + +Implemented with an EngineCtx-lifetime accumulator shared across GameSession scene VMs. String operands append decoded text, integer and pointer forms append signed decimal, and float forms reproduce native `%lf`'s six fractional digits. + +### 0x1b3 `append-diagnostic-newline` (u004257D0, argc 0) +- **summary:** Append the literal CRLF byte pair to the context diagnostic accumulator without presenting or clearing it. +- **grounding:** source=investigation, confidence=high +- **depends on:** 0x1b2 +- **evidence:** The real /v2 dispatch slot ctx+0x9b918 registers op_0x1b3_append_diagnostic_newline@0x41a400. Its one operation appends two bytes from DAT_0057082c to the same embedded string at ctx+0x6f880; memory at that address is 0d 0a 00. Both Himegari sites immediately follow diagnostic construction. + +Implemented as an exact `\r\n` append to the shared diagnostic accumulator, including FIELD's persistent line and SYSTEM4's native post-clear newline. + +### 0x1b4 `show-and-clear-diagnostic` (u004237C0, argc 0) +- **summary:** Show the accumulated text plus native script-location context in a synchronous owner-window information message box, then erase the complete accumulator. +- **grounding:** source=investigation, confidence=high +- **depends on:** 0x1b2 +- **evidence:** The real /v2 dispatch slot ctx+0x9b91c registers op_0x1b4_show_and_clear_diagnostic@0x419240. It resolves the MSVC string bytes at ctx+0x6f880 and calls engine_host_show_message@0x403820 with owner HWND ctx+0x54fe8 and flags 0x10004. The thunk dispatches host_ui_interface vslot +4; the default host implementation at 0x431520 logs the raw text and calls age_show_message_box@0x409370. Flag 0x10000 appends `FILE=%s ADDRESS=%X LINE=%d COMMAND=%s(%d) DEPTH=%d`; low mode 4 formats `%s%s`, uses caption `エラーが発生しました`, and calls USER32 MessageBoxA with style 0x40 (MB_OK|MB_ICONINFORMATION). The optional command metadata at ctx+0x6ddac and source-line maps at ctx+0x6f798 are zero-initialized and have no writer in Himegari's release image, yielding `LINE=-1 COMMAND=-(436)` at this opcode. The opcode ignores the return, then calls msvc_string_erase(buffer,0,0xffffffff). SYSTEM4's sole site presents its invalid-execution-mode text and value; a following 0x1b3 appends CRLF to the now-empty accumulator. + +Implemented as a synchronous host effect. Himegari's release-only null debug tables make the native suffix deterministic (`LINE=-1 COMMAND=-(436)`); FILE, dword ADDRESS, and zero-based frame DEPTH come from the live instruction. Godot marshals `OS.Alert` to the main thread and parks the VM until dismissal; CaptureHost records the effect. The accumulator clears only after the host call returns. + +### 0x1cc `get-adv-read-skip-state` (get-adv-read-skip-state, argc 1) +- **summary:** (out) - copy the current ADV read/click-skip service state from ctx+0x6dbd4. label_1235a ORs it with 0x1c7's Ctrl/message-skip bit: zero takes 0x21c's normal transition/yield path; nonzero resets the animation service and presents the completed endpoint through 0x20c. +- **grounding:** source=investigation, confidence=high +- **depended on by:** 0x20c, 0x20d, 0x21c, 0x223 +- **evidence:** Ghidra handler 0x427330 calls vm_operand_write(1, ctx+0x6dbd4). adv_refresh_read_skip_state@0x406cd0 and op 0x6e/0x71/0x72 maintain the field from message:ReadTextSkip plus read_text_db_find_message_index@0x468f50 and read_text_db_is_message_read@0x469930. The database is engine-owned shared RT.DAT state keyed by raw packed script resource id and per-script message index, not VM globals or slot-local SAVE##.DAT data. adv_interpreter_tick consumes the result in click/read-skip control; it is not op 0x223 surface-transition progress. + +Port status (2026-07-24): the VM refreshes this state from message:ReadTextSkip plus the current packed script id/T1 message index at 0x6e, 0x71, and 0x72. It is shared-profile read history, not a host-only flag. + +### 0x21c `mark-frame-yield` (mark-frame-yield, argc 0) +- **summary:** Set native run-state bit 0x400; in normal ADV playback this is the retained-presentation render/wait/resume boundary. +- **grounding:** source=investigation, confidence=high +- **depends on:** 0x223, 0x1c7, 0x1cc +- **depended on by:** 0x223 +- **evidence:** Ghidra handler 0x417520 records the 1-dword instruction length and ORs ctx+0xa0ce4 with 0x400. engine_main_tick_with_exception_policy@0x411840 branch 0x4123d1 polls gfx_animation_service_poll; its active branch reads EffectSkipOnClick@0x570f60, rejects gfx_animation_service_flags bit 0, polls/consumes action-4 bit 0x10, clears run-state 0x400, calls gfx_request_force_complete_and_reset_anim_clock@0x4076c0, then gfx_render_frame. capture_presentation_trace.py: after 0x125a6 render, 0xcb8e/0xcb98 bind and 0xd5a/0xd63/0xd73/0xd8a mode+targets execute without render; repeated gfx_render_frame begins only at 0x21c. 2026-07-10, click lifecycle refined 2026-07-29. + +SC0000 label_1235a reaches this when 0x1c7/0x1cc are zero. Native run-state bit 0x400 parks the interpreter while gfx_render_frame repeatedly samples finite one-shot object channels and queued surface commands; op 0x224 follows after dirty state clears. When system:EffectSkipOnClick is enabled and animation-service flag bit 0 is clear, logical action 4 is consumed and run-state 0x400 is cleared before the engine requests the same forced completion as 0x243 and renders once. Wait release is independent of endpoint completion: service-flags bit 1 can suppress the force worker, while op-0x242-detached channels, ambient cycles, and movie-backed presentation can continue asynchronously after interpreter resume. With ordinary flags, the request completes finite color/scale/rotation/translation channels and type-0 surface commands together. Native trace proves AE001D bind, mode-1 0x203, and 0x202 targets complete in one 5 ms batch with no render, then first compose here. + +## draw + +### 0x21 `fade-surface-in-from-black` (u00418860, argc 2) +- **summary:** (surface_slot)(timing_argument) — block while fading from black to a captured full-frame surface. The captured surface remains the terminal frame. +- **grounding:** source=investigation, confidence=high +- **depends on:** 0x20c, 0x20d +- **evidence:** Ghidra /v2: dispatch slot 0x21 resolves to op_0x21_fade_surface_in_from_black@0x41cb00. With run_state_flags bit 0x08000000 clear, the handler sets effect-service bit 8, converts timing <=64 to interval=argument ms and alpha step=16 (otherwise interval=argument/16 and step=1), starts screen_transition_begin@0x439da0 mode 0, flushes the initiating trigger, and advances the PC. engine_main_tick_with_exception_policy@0x411840 owns natural progress and, when system:EffectSkipOnClick is enabled, forces action-4 clicks through screen_transition_tick@0x43a7a0 with delta 0x10000000. If fast-forward bit 0x08000000 was already set at dispatch, the handler instead publishes the operand-surface endpoint directly; it is not a post-transition re-entry. Corpus: 3 sites in EVOLVE, SELSTAGE, and STUDY, all (1,30), approximately 480 ms. + +Port status (2026-07-29, skip lifecycle corrected 2026-07-29): implemented through the blocking legacy full-frame transition host path. An explicit empty/black source endpoint is composited beneath the captured target. An already-active ADV fast-forward channel bypasses the timed service and publishes the target endpoint; logical action 4 forces an in-progress transition endpoint when system:EffectSkipOnClick is enabled. + +### 0x22 `fade-surface-out-to-black` (u00418920, argc 2) +- **summary:** (surface_slot)(timing_argument) — block while fading a captured full-frame surface to black. Black remains the terminal frame. +- **grounding:** source=investigation, confidence=high +- **depends on:** 0x20c, 0x20d +- **evidence:** Ghidra /v2: dispatch slot 0x22 resolves to op_0x22_fade_surface_out_to_black@0x41cbc0. With run_state_flags bit 0x08000000 clear, it uses the same timer/alpha-step conversion as 0x21/0x25, starts screen_transition_begin@0x439da0 mode 1, flushes the initiating trigger, and advances the PC. screen_transition_tick@0x43a7a0 keeps the operand surface opaque and raises black alpha 0->255; engine_main_tick_with_exception_policy@0x411840 owns natural and system:EffectSkipOnClick-forced completion. If fast-forward was already active at dispatch, the handler publishes black directly; it is not a post-transition re-entry. Corpus: 8 sites across ALCHEMY, CHMENU, EVOLVE, FORT, SELSTAGE, STUDY, and SUMMON, all (1,30), approximately 480 ms. + +Port status (2026-07-29, skip lifecycle corrected 2026-07-29): implemented through the blocking legacy full-frame transition host path. The captured source is composited beneath an explicit empty/black target endpoint. An already-active ADV fast-forward channel bypasses the timed service and publishes black; logical action 4 forces an in-progress transition endpoint when system:EffectSkipOnClick is enabled. + +### 0x23 `fade-surface-in-from-white` (u004189D0, argc 2) +- **summary:** (surface_slot)(timing_argument) — broader-AGE mode-2 sibling of 0x21: block while fading from white to a captured full-frame surface. +- **grounding:** source=investigation, confidence=high +- **depends on:** 0x20c, 0x20d +- **evidence:** Ghidra /v2: dispatch slot 0x23 resolves to op_0x23_fade_surface_in_from_white@0x41cc80 and starts screen_transition_begin@0x439da0 mode 2 with the same timing conversion as 0x21/0x22/0x25. Not observed in Himegari's script corpus. + +### 0x24 `fade-surface-out-to-white` (u00418A90, argc 2) +- **summary:** (surface_slot)(timing_argument) — broader-AGE mode-3 sibling of 0x22: block while fading a captured full-frame surface to white. +- **grounding:** source=investigation, confidence=high +- **depends on:** 0x20c, 0x20d +- **evidence:** Ghidra /v2: dispatch slot 0x24 resolves to op_0x24_fade_surface_out_to_white@0x41cd40 and starts screen_transition_begin@0x439da0 mode 3 with the same timing conversion as 0x21/0x22/0x25. Not observed in Himegari's script corpus. + +### 0x25 `crossfade-surfaces` (u00418B40, argc 3) +- **summary:** (source_surface)(target_surface)(interval_argument) — blocking legacy full-frame mode-4 alpha transition. The native engine composites the captured target surface over the captured source while an 8-bit alpha accumulator advances from 0 to 256. +- **grounding:** source=investigation, confidence=high +- **depends on:** 0x20c, 0x20d +- **evidence:** Ghidra /v2: dispatch handler op_0x25_handler@0x41ce00 checks ADV fast-forward bit 0x08000000. Clear: it sets effect-service bit 8, converts operand 3 to timer interval/alpha step (<=64: interval=arg ms and step=16; >64: interval=arg/16 ms and step=1), starts screen_transition_begin@0x439da0 mode 4, flushes the initiating trigger, and advances the PC. engine_main_tick_with_exception_policy@0x411840 polls interval_timer_poll_elapsed_steps@0x44d080 and calls screen_transition_tick@0x43a7a0; mode 4 draws source then target with progress alpha and commits target at 0x100. With system:EffectSkipOnClick enabled, logical action 4 is consumed and delta 0x10000000 forces that endpoint. If fast-forward was already set at dispatch, the handler calls screen_transition_finalize@0x4399c0 for the target directly; this is not post-transition re-entry. Thus ROOM argument 10 is about 160 ms and argument 30 about 480 ms. ROOM sites: 0x12f,0x7c6,0x856 use (1,2,10); 0x8dc uses (1,2,30). /v2 annotations corrected 2026-07-29. + +The handler uses an alpha step of 16 and timer interval=argument when argument <=64. Above 64 it uses step=1 and interval=argument/16. The main loop polls that timer and does not resume ordinary script execution until the target endpoint is presented. An already-active ADV fast-forward channel publishes the target without starting the service; with system:EffectSkipOnClick enabled, logical action 4 forces an in-progress service to the same endpoint. ROOM uses (1,2,10) for button/character entry and exit fades and (1,2,30) for the final fade before returning to TITLE. The port captures retained-frame snapshots whenever op 0x20c presents to a selected offscreen render target, then reproduces the blocking and forced-endpoint lifecycle in the interactive host. + +### 0x80 `set-default-gfx-object-slot` (u0041AF00, argc 1) +- **summary:** (slot) - select the retained graphics-object slot used when op 0x1d9 receives explicit slot zero. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x80_set_default_gfx_object_slot@0x41ed40 writes operand 1 to EngineCtx+0x14e08. op_0x1d9_handler@0x420a30 reads that field only when its operand-1 object slot is zero, otherwise it indexes the explicit slot; both paths write object+0x70. MENU-family scripts select working slots 7/8/9 on entry and restore slot 1 during teardown. + +### 0x131 `get-message-window-alpha` (get-message-window-alpha, argc 1) +- **summary:** (out) - read the configured `message:MesWinAlpha` value used to alpha-modulate the ADV chrome. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x131_handler@0x4295e0 calls the settings getter with `message:MesWinAlpha` and writes the result. HISTORY.BIN and the shared ADV redraw path compute (16-value)<<4 for the control-strip alpha. + +### 0x13a `register-numeric-glyph-style` (u0041F3A0, argc 6) +- **summary:** Register a decimal-glyph atlas style as (surface slot, source x/y, digit width/height); the handler admits style indices 0..10. +- **grounding:** source=investigation, confidence=high +- **depended on by:** 0x23b +- **evidence:** Ghidra /v2: op_0x13a_register_numeric_glyph_style@0x421ab0 writes operands 2..6 to EngineCtx+0x55180+style_index*0x14 after enforcing style_index<11. scene_context_init_reset@0x40b560 clears 200 bytes at +0x55180, exactly ten records; record 10 therefore overlaps ret_stack_a at +0x55248. Corpus: 74 sites in 24 scripts; all literal style registrations are 0..9. + +The five-dword definition is stored at EngineCtx+0x55180+style_index*0x14. Opcode 0x23b consumes it to turn an integer into retained draw objects, one atlas cell per decimal digit. Scene reset clears only ten physical records (200 bytes, indices 0..9); the admitted index 10 begins at EngineCtx+0x55248 and aliases the return-stack table. Himegari's literal registrations use only 0..9. The port safely models all eleven handler-addressable logical records without reproducing the overflow. + +### 0x141 `set-message-window-alpha` (set-message-window-alpha, argc 1) +- **summary:** (value) - write the configured `message:MesWinAlpha` value read by opcode 0x131. Himegari's CONFIG menu bounds the value to 0..16; larger values make the inverse-width opacity bar shorter. +- **grounding:** source=investigation, confidence=high +- **evidence:** CONFIG.BIN is a complete paired getter/setter proof: reset-defaults writes 4; the two message-window-opacity controls read op 0x131, increment/decrement within 0..16, then pass the result to op 0x141; the redraw path reads op 0x131 again and computes bar width (16-value)*80/16. The shared ADV/history paths independently consume the same getter as (16-value)<<4 alpha. + +### 0x1ae `write-numbered-save-thumbnail` (write-numbered-save-thumbnail, argc 3) +- **summary:** (status_out)(slot)(surface_slot) - encode the selected surface into the numbered save's separate `SAVE%02d.STH` thumbnail file. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x1ae_write_numbered_save_thumbnail@0x428100 creates SAVE%2.2d.STH with CREATE_ALWAYS and serializes operand 3's surface via the active renderer backend. Corpus: two calls in SAVE.BIN and SELSTAGE.BIN. + +Status is 0 on success, 1 when the file cannot be created/opened, and 2 when surface encoding or writing fails. Renderer backend selects a handle-based or path-based native worker. Himegari writes an ordinary bottom-up 24-bit BMP (112x84 in installed files), BGR rows with four-byte padding, under the .STH extension. Its bfSize field historically omits the 14-byte BITMAPFILEHEADER. Port status (2026-07-24): implemented with exact native BMP output and host surface capture. + +### 0x1af `load-numbered-save-thumbnail` (load-numbered-save-thumbnail, argc 3) +- **summary:** (status_out)(slot)(surface_slot) - decode the numbered save's separate `SAVE%02d.STH` thumbnail into a surface slot. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x1af_load_numbered_save_thumbnail@0x428240 opens SAVE%2.2d.STH and passes it plus operand 3's surface slot to the active renderer decoder. Corpus: one call in SAVE.BIN. + +Status is 0 on success, 1 when the file cannot be opened, and 2 when image decoding fails. The thumbnail format is owned by the renderer codec and is not embedded in the numbered `.DAT` payload. Port status (2026-07-24): implemented with 24-bit BMP decode and host surface replacement. + +### 0x1f6 `clear-retained-gfx-objects` (clear-retained-gfx-objects, argc 0) +- **summary:** Clear the complete retained gfx-object registry while preserving allocated surface resources. Subsequent object queries return absent until draw/geometry operations recreate records. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x1f6_clear_retained_gfx_objects@0x417430 passes ctx+0x46614 to retained_gfx_objects_clear@0x47cab0. The worker destroys every node in owner+0x408, resets its sentinel/count, and clears owner+0xb558/+0xb55c/+0xb564/+0xb568 plus bit 0x10000 state. DATA1: 293 calls in 146 scripts; 146 continue to 0x23d and 143 to 0x20e. + +The handler clears the map embedded at retained-gfx owner+0x408, resets its count and transient dirty/force flags, but does not release the 1000 surface slots or clear the separate queued-surface-command list. Corpus call sites pair it either with 0x23d for a full transient-resource reset or with 0x20e for a backbuffer clear. + +### 0x1f7 `gfx-elem-erase` (gfx-elem-erase, argc 2) +- **summary:** 0x1f7 (handle)(count) — erase retained gfx objects. Handler 0x422270 calls gfx_object_erase_range@0x47d8b0 for [handle,handle+count) when count>1, else gfx_object_erase@0x47d850. This removes entries from the same object map queried by op 0x215, so erased objects stop compositing. SC0000 uses it before op 0x1fa releases the returned surface slot. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra handler 0x422270; gfx_object_erase_range@0x47d8b0 loops gfx_object_erase@0x47d850. Both operate on owner+0x408, the retained-object map also used by gfx_object_get_or_create/draw and gfx_object_query_source_slot. + +### 0x1f8 `create-texture` (create-texture, argc 4) +- **summary:** Allocate/prepare a texture slot: (slot, width, height, flag). e.g. `create-texture 0xd 0x190 0x1e 0x0` = slot 13, 400x30. +- **grounding:** source=investigation, confidence=med +- **evidence:** SC0000 CG/UI-draw path disasm; slot/w/h roles read off the operands (400x30 text bars, etc.). + +### 0x1f9 `set-texture` (set-texture, argc 3) +- **summary:** Load a texture by universal packed SYS4INI/AAI id into a mode-0 surface slot: (resource_id, slot, colorkey). A zero high byte directly indexes the flat base catalog; a nonzero high byte selects an AAI mount and uses the low 24 bits. This is the same addressing contract as 0x249; only the native surface mode differs. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2 gfx_op_0x1f9_load_surface@0x422360 fetches operand 1 and passes it unchanged to asset_open_indexed_entry@0x44f390. asset_catalog_parse_base_tables@0x44e7e0 builds one flat entry array; the opener has no scene/context input and directly indexes that array for high-byte zero. SC0010 set-texture 0x21 proves the distinction outside SC0000: raw 0x21 is SO013A.AGF, while adding SC0010's 0x11e section position lands on unrelated COL0023.OGG. The earlier 586/595 Frida correlation established that SYS4INI file_number describes grouping/order, not runtime operand rebasing. + +### 0x1fa `gfx-elem-release` (gfx-elem-release, argc 1) +- **summary:** 0x1fa (surface_slot) — release the surface at ctx+0x52bd4[slot] (virtual free, then null) and call FUN_00474e40(slot). It releases a surface slot, not a retained object handle. SC0000 feeds it the slot returned by op 0x215 after op 0x1f7 erases the associated object group. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra handler 0x4224a0 (dispatch ctx[0x26c93+0x1fa]); frees ctx+0x52bd4[operand1*4] via vtbl, then FUN_00474e40(operand1). + +### 0x1fb `draw-texture` (draw-texture, argc 8) +- **summary:** Blit a texture slot to screen. Observed 8 args: (handle, slot, srcx, srcy, w, h, dstx, dsty). e.g. `draw-texture 0xcf08 0x3 0 0 0x320 0x258 0 0` = full-screen (800x600) slot 3 at (0,0). +- **grounding:** source=investigation, confidence=med +- **evidence:** SC0000 CG-load subroutine label_12649: `draw-texture (ptr) (slot) 0 0 (w) (h) (dstx) (dsty)`; full-screen slot-3 draws use 0x320x0x258 (800x600). + +### 0x1fd `gfx-set-scale-current` (u00420620, argc 4) +- **summary:** (handle)(scale_x_percent)(scale_y_percent)(scale_z_percent) — immediately replace the retained object's current scale matrix at obj+0x6c. The handler divides each integer operand by 100.0 before calling matrix4_make_scale; this is distinct from 0x21e's delayed one-shot target scale. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: handler gfx_op_0x1fd_set_vec_scaled@0x422650 fetches operands 2..4, divides each by the 100.0 constant, and calls gfx_object_set_scale_current@0x47e6b0. The worker gets/creates the object, marks obj+0x68, and calls matrix4_make_scale on obj+0x6c. SC0000 sets AE001D handles to 210/210/100 and 240/240/100; without this setter their 800x800 alpha circles remain below the viewport. Both functions annotated and /v2 saved 2026-07-11. + +### 0x1fe `set-current-rotation-axis-angle` (set-current-rotation-axis-angle, argc 5) +- **summary:** (handle)(axis_x)(axis_y)(axis_z)(angle_degrees) — immediately replace the retained object's current axis-angle rotation matrix. This is the direct-current companion to op 0x21f's delayed one-shot rotation target. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x1fe_set_rotation_current@0x422700 converts operands 2..5 to float and calls gfx_object_set_rotation_current@0x47e720. The worker gets/creates the handle, marks transform state at obj+0x68, stores current axis obj+0x1ec..0x1f4 and angle degrees obj+0x204, converts degrees to radians with pi/180, builds the current matrix at obj+0xec through matrix4_make_axis_angle, and sets retained-gfx redraw dirty owner+0xb558 (EngineCtx+0x51b6c). The finite-channel consumer composes this current matrix between scale and translation. Corpus: 186/187 calls use Z axis (0,0,1); the lone DEBUG call uses Y axis (0,1,0). + +### 0x1ff `set-current-translation` (set-gfx-geom3-c, argc 4) +- **summary:** 0x1ff (handle)(x)(y)(z) — immediately replace the retained object's current translation matrix at obj+0x16c. This is the direct-current companion to 0x220's delayed target at obj+0x1ac. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: handler gfx_op_0x1ff_set_geom3@0x4227b0 converts operands 2..4 to float and calls gfx_object_set_translation_current@0x47e800. The worker gets/creates the object, marks obj+0x168, and calls matrix4_make_translation on obj+0x16c. SC0000 uses (0,0,0) before animating BG001A. Annotated and saved 2026-07-11. + +### 0x202 `gfx-blit-color` (gfx-blit-color, argc 5) +- **summary:** 0x202 (handle)(delay_ms)(duration_ms)(alpha)(color) — arm the one-shot packed-ARGB channel. Worker gfx_op_0x202_worker_set_color_anim @0x47ea00 resets shared start obj+0x34, writes delay +0x38, duration +0x4c, and target +0x64. gfx_object_apply_transform_channels @0x472f00 linearly interpolates each byte from current +0x60 on retained-gfx owner+0xb550 (EngineCtx+0x51b64), commits the target, clears timing, writes target -1, and clears the one-shot active bit when all sibling channels finish. Negative alpha/RGB independently preserve current bytes. Implemented in GfxState with synchronized current/target timeline evidence; draw-string 0x204/0x7a remains separate. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra handler 0x4228d0 packs operands 4/5 and calls worker 0x47ea00(handle,delay,duration,packed). Consumer 0x472f00: shared start +0x34; color delay/duration +0x38/+0x4c; current/target +0x60/+0x64; frame clock retained-gfx owner+0xb550 (EngineCtx+0x51b64); bytewise integer LERP; natural or owner+0xb55c (EngineCtx+0x51b70) forced completion. /v2 annotated and saved 2026-07-10. + +### 0x203 `gfx-draw-color` (gfx-draw-color, argc 4) +- **summary:** 0x203 (handle)(mode)(alpha)(color) — worker stores the D3D blend selector at obj+0x30 and STATIC packed color at obj+0x60; the handler's ctx+0x53d88 write is the generic 9-dword instruction length. Negative alpha/RGB preserve current static bytes. Mode 0 is the default textured path: preserved 0xffffffff is identity (the alpha byte is not tint strength). Its consumption is order-sensitive: a post-bind write supplies opacity until the next draw-texture bind, covering both FIELD's bound idle-unit suppression and CALLBACK_SETTING's freshly rebuilt ADV backing; pre-bind alpha-zero initialization remains opaque after the later bind. Mode 1 is SRCALPHA/ONE additive glow with ARGB alpha scaling the source contribution and RGB providing multiplicative modulation. Mode 2 conditionally forces ONE/ZERO for the selected render target and is used by 0x223 transition sources; mode 3 selects a subtractive special path. Surfaceless mode-0 fill consumption remains distinct. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra handler 0x4229a0; negative operands read current obj+0x60, then worker 0x47e9b0 stores op2 at obj+0x30 and ARGB at +0x60. gfx_object_composite call-site 0x47f78f passes +0x30/+0x60 directly to gfx_object_blit_d3d9. Correct D3D9 constants at 0x4774c0 prove mode 1 writes SRCBLEND=5/SRCALPHA and DESTBLEND=2/ONE, not INVSRCALPHA. TITLE draws two opaque-black, no-colorkey SO022 flame sprites with mode 1; additive composition removes black and preserves the blue glow, verified in a windowed capture. Mode 2 transition setup and synchronized pixels prove 0xffffffff is identity, not solid white. SC0000 page 14 adds the mode-0 endpoint proof: after the EV052CA->EV052DA 0x223 crossfade, 0x203@0x12478 restores the base CG to mode 0 with preserved 0xffffffff; native keeps EV052DA visible while the port's tint-strength interpretation turns every texel white. FIELD's movement lifecycle clones idle handle 0x9c40+entity to temporary handle 0x9c40+0x76c, writes mode-0 alpha zero to the bound idle handle at 0x45dc/0x4699/0x5210, animates only the temporary handle, then DRAWCH rebinds the idle handle at the next tile. CALLBACK_SETTING independently erases the ADV family, binds SO001 to fresh handle 0xd2f0, reads message:MesWinAlpha, and writes (16-value)<<4 through static mode-0 0x203 before presenting. Rendering post-bind static mode-0 alpha as inert causes both the stationary FIELD ghost and the reported always-opaque post-CONFIG message window. + +### 0x205 `draw-formatted-integer` (u00420A60, argc 6) +- **summary:** Format an integer into a fixed-width decimal field and rasterize it immediately into a numbered graphics surface using the current font/color/effect state. +- **grounding:** source=investigation, confidence=high +- **depends on:** 0x75, 0x204 +- **evidence:** Ghidra /v2: op_0x205_handler@0x422ab0 fetches (surface,x,y,value,width,flags), calls format_integer_for_surface@0x407190, then draw_string_to_surface@0x450150. DRAWENP contains all 16 previously stubbed calls responsible for its level, HP/SP/FS, and stat values. + +The field width includes an optional sign. Bit 0 zero-pads; bit 1 centers omitted leading cells; bit 2 left-aligns; bits 3/4 request '+' for positive/zero; bit 5 renders zero with '-'. With bit 16, output remains half-width ASCII and omitted-cell x adjustment uses half the current font cell advance; otherwise the formatter converts digits/signs to full-width CP932. Default alignment preserves the field's right edge by shifting x right for each omitted leading cell. + +### 0x207 `copy-surface-rect` (copy-surface-rect, argc 8) +- **summary:** Copy a rectangular pixel region between mutable graphics surfaces: (source_surface, destination_surface, source_x, source_y, width, height, destination_x, destination_y). +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x207_handler@0x422b50 constructs source [x,y,x+w,y+h] and destination [dx,dy,dx+w,dy+h] rectangles and calls gfx_copy_surface_rect@0x477da0. The worker validates both surface slots, clips both rectangles together, marks the destination dirty, and copies through locked D3D surfaces. Corpus: 15 calls total: DRAWMINIMAP 8, STATUS 3, READICON 2, DRAWTIP 2. + +The worker clips the paired source and destination rectangles against both surfaces while preserving their correspondence, returns successfully for an empty clipped rectangle, and marks the destination surface dirty. Himegari uses the opcode for minimap markers plus STATUS, READICON, and DRAWTIP surface composition. + +### 0x208 `get-texture-size` (get-texture-size, argc 3) +- **summary:** 0x208 (slot)(out_w)(out_h) — writes the loaded texture's width/height into two output globals; keystone for bytecode-computed sprite/bg geometry (SC0000 label_12649) +- **grounding:** source=inference, confidence=med +- **evidence:** SC0000 label_12649: set-texture(resId,slot) then 0x208(slot)->w,h feeds w/2 horizontal-center + foot-anchor subtraction into draw-texture dst; stubbing yields 0x0 sizes / off-center draws + +### 0x20b `fill-surface-rect` (fill-surface-rect, argc 7) +- **summary:** (surface_slot)(x)(y)(width)(height)(alpha)(rgb) - fill a clipped rectangle on a graphics surface with the supplied color and alpha. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x20b_handler@0x422d50 converts x/y/width/height to an exclusive rectangle, clamps alpha to 255, repacks RGB to native ARGB, and calls the surface manager's rectangle-fill path at 0x4790e0. HISTORY.BIN clears each 600x30 name strip on temporary surface 0xc1 before draw-string. + +### 0x20c `present-frame` (present-frame, argc 0) +- **summary:** Draw every visible retained object over the selected target without implicitly clearing it, then present the composited backbuffer; label_1235a uses this on the read/message-skip branch to expose the completed foreground endpoint immediately. +- **grounding:** source=investigation, confidence=high +- **depends on:** 0x223, 0x1c7, 0x1cc +- **depended on by:** 0x21, 0x22, 0x23, 0x24, 0x25, 0x20d, 0x223 +- **evidence:** Ghidra /v2: dispatch table FUN_00413860 param_1[0x26e9f]=gfx_op_0x20c_present_frame; 0x26e9f-0x26c93=0x20c. The handler calls gfx_render_frame@0x4820b0, which begins a D3D scene, consumes queued surface commands, draws all visible retained objects, ends the scene, and presents the backbuffer without calling d3d_clear_render_target_black; opcode 0x20e is the separate clear. Refined 2026-07-30. + +Native handler gfx_op_0x20c_present_frame -> gfx_render_frame @0x4820b0. This is an explicit retained-state publication boundary, not a continuously visible object-store mutation. The renderer does not clear its selected target: opcode 0x20e owns explicit black clearing, so full-frame publication preserves preceding target pixels beneath its redraw. The read/message-skip branch resets the animation service then presents; the port publishes and snaps pending 0x223 state here. Normal playback branches to 0x21c, which owns repeated render/wait/resume. Headless hosts remain non-blocking. + +### 0x20d `select-render-target` (select-render-target, argc 1) +- **summary:** Select an offscreen surface slot as Direct3D render target 0, or restore the device backbuffer when the operand is at least 1000. +- **grounding:** source=investigation, confidence=high +- **depends on:** 0x20c, 0x1c7, 0x1cc +- **depended on by:** 0x21, 0x22, 0x23, 0x24, 0x25 +- **evidence:** Ghidra /v2: op_0x20d_select_render_target@0x422e10 passes operand 1 and retained-gfx owner ctx+0x46614 to retained_gfx_select_render_target@0x479660. Its D3D calls resolve texture level 0 or backbuffer 0, then invoke device vtable +0x94 SetRenderTarget and store selected slot at owner+0xb530. DATA1: 113 calls in 24 scripts. + +For slots below 1000 the native worker obtains that surface's level-0 D3D texture surface and calls IDirect3DDevice9::SetRenderTarget(0,...). The >=1000 path obtains backbuffer 0 and records current target -1. Himegari commonly follows a freshly created blank surface selection with 0x20e before drawing into it. + +### 0x20e `clear-render-target` (clear-render-target, argc 0) +- **summary:** Clear the currently selected render target to black and reset its depth buffer to 1.0. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x20e_clear_render_target@0x4174f0 passes renderer ctx+0x46188 to d3d_clear_render_target_black@0x471460. The worker calls device pointer +0x410, vtable +0xac with (0,NULL,3,0,1.0f,0). DATA1: 345 calls in 167 scripts; 57 directly follow 0x20d and 143 directly follow 0x1f6. + +This is a target-pixel operation, not retained-object teardown. It invokes IDirect3DDevice9::Clear with zero rectangles, flags D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER (3), color 0, depth 1.0, and stencil 0. The port tracks 0x20d target ownership and forwards the clear to the host; its retained compositor already rebuilds the backbuffer from black. + +### 0x20f `play-modal-movie-to-surface` (play-modal-movie-to-surface, argc 3) +- **summary:** (packed_resource_id)(surface_slot)(movie_flags) - open a universal packed SYS4INI/AAI MPEG asset into an existing retained surface, start its native movie graph, and arm modal run-state bit 0x2000 so script execution remains parked until the movie completes or is skipped. This is the LOGO/OP/ED whole-movie path; op 0x236 uses the same resolver with non-modal lifecycle. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x20f_play_modal_movie_to_surface@0x422e50 requires an existing retained D3D target, shares the movie-object allocation, DirectShow graph open, audio-route, and volume setup used by 0x236, then calls movie_start_modal_playback@0x463280, ORs EngineCtx+0xa0ce4 with 0x2000, and marks movie presentation dirty. It does not reload/rebind the gfx surface record or assign an RGB color key. The start worker calls IMediaControl::Run at vtable +0x1c on the freshly stopped graph; AGE performs no explicit Pause, seek, or opening-frame decode. DirectShow's stopped-to-paused-to-running transition cues the first sample. movie_texture_renderer_receive_sample@0x4628d0 copies it to the D3D texture and sets renderer +0x5b4; movie_consume_renderer_new_frame_flag@0x405120 makes the outer tick render it. Native OP then advances video immediately with audio, so FFmpeg's roughly 600 ms shared-mux video origin is not an AGE-visible hold. Corpus has exactly three sites: LOGO (0x335f,42,4), OP (0x3364,42,4), and ED (0x3324,42,dynamic flags). + +Implemented through IHost.PlayModalMovieToSurface. Its operand uses the same native universal packed-id catalog contract as 0x236; the separate host call exists for modal wait/cancel lifecycle, not a different resolver. ResourceMap.ResolveMovie selects through ResolvePacked and retains MPEG signature validation in ReadMovie. Godot reuses the asynchronous FFmpeg decoder/retained-surface compositor, parks only the VM thread until EOF, and treats mouse click or Accept/Cancel input as completion before wrapper cleanup releases both video and per-playback audio output. Movie playback leaves the existing mutable target at resourceId 0 with no RGB color key; MovieSurfaceRegistry supplies its live pixels. Audio-bearing movies deliver timestamped stereo float PCM through AudioStreamGenerator and use the sound-hardware position as the master clock. The first decoded image is latched before audio starts, and all video deadlines are rebased to the first video PTS while the complete audio stream begins at its own timestamp zero. No opening samples are discarded. + +### 0x215 `query-gfx-object?` (query-gfx-object?, argc 2) +- **summary:** 0x215 (out_slot)(handle) — query the retained gfx-object map. Handler gfx_op_0x215_query_source_slot@0x42a0b0 calls gfx_object_query_source_slot@0x47f280 with owner ctx+0x46614. The worker searches owner+0x408, the same map populated by geometry/draw workers, and returns obj+4: the live source-surface slot written by draw-texture, or -1 if absent. gfx_object_init_default zeroes obj+4, so a geometry/animation-created but draw-unbound object returns slot 0, not -1. SC0000 uses a successful result for query-guarded teardown: op 0x1f7 erases the object group and op 0x1fa releases this slot. Matching the zero default prevents stale transforms from surviving into the EV050EA CG at SC0000 page 58. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra: handler 0x42a0b0 passes ECX=ctx+0x46614 to 0x47f280, which searches ECX+0x408 and returns object+4. gfx_object_bind_draw@0x47e870 writes the bound slot there; gfx_object_init_default@0x472810 explicitly writes zero to dword index 1. SC0000 page-58 trace: the old -1 default skipped cleanup of transform-created handle 0xcb2a, then EV050EA inherited translation (-100,0), rotation -90, and alpha 0; the native zero default makes the guard succeed and the reused object is identity/opaque. + +### 0x216 `query-gfx-field?` (query-gfx-field?, argc 2) +- **summary:** 0x216 (out)(idx) — handler gfx_op_0x216_query_table46d14 @0x42a0f0: out = *(ctx+0x46d14 + idx*0x14). The generic instruction length is 5 dwords. A per-object field query over a stride-0x14 table. See docs/engine-re.md gfx op-contract table. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra handler 0x42a0f0; reads ctx+0x46d14[operand2 * 0x14], writes operand1 via FUN_00425fb0(1,·). + +### 0x217 `set-gfx-geom3` (set-gfx-geom3, argc 4) +- **summary:** 0x217 (handle)(a)(b)(c) — handler gfx_op_0x217_set_geom3 @0x4231b0 SETS a 3-vector (int→float a,b,c) on object `handle` via native worker FUN_0047e960; its generic instruction length is 9 dwords. In SC0000 label_12649 it writes the anchor vector G[0x6249b/c/d] INTO the object; op 0x218 reads it back. See docs/engine-re.md gfx op-contract table. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra handler 0x4231b0 (dispatch ctx[0x26c93+0x217]); FUN_0047e960(op1,(float)op2,(float)op3,(float)op4). label_12649 sites e.g. 0x00c67 handle=G[0x62457], vec=G[0x6249b/c/d]. + +### 0x218 `get-gfx-geom3?` (get-gfx-geom3?, argc 4) +- **summary:** 0x218 (handle)(out_a)(out_b)(out_c) — handler gfx_op_0x218_query_geom3 @0x42a130 GETS a stored 3-vector from object `handle` (FUN_0047f360) into out_a/b/c; its generic instruction length is 9 dwords. In label_12649 it reads the object's anchor vector back into G[0x6249b/c/d] — a stubbed DRIVER of the render drift (stale anchor → bad centering). See docs/engine-re.md gfx op-contract table. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra handler 0x42a130; FUN_0047f360(obj op1) + 3x FUN_00550850→FUN_00425fb0(2/3/4). label_12649 site 0x00c8f handle=G[0x62457] → G[0x6249b/c/d]. + +### 0x219 `set-gfx-geom3-b` (set-gfx-geom3-b, argc 4) +- **summary:** 0x219 (handle)(a)(b)(c) — handler gfx_op_0x219_set_geom3 @0x423240 SETS a 3-vector (int→float) on object `handle` via native worker FUN_0047e910 (sibling of 0x217, a different per-object vector); its generic instruction length is 9 dwords. See docs/engine-re.md gfx op-contract table. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra handler 0x423240 (was unanalyzed; function created this session; dispatch ctx[0x26c93+0x219]); FUN_0047e910(op1,(float)op2,(float)op3,(float)op4). + +### 0x21a `get-gfx-geom3-b?` (get-gfx-geom3-b?, argc 4) +- **summary:** 0x21a (handle)(out_a)(out_b)(out_c) — handler gfx_op_0x21a_query_geom3 @0x42a1b0 GETS a stored 3-vector from object `handle` (FUN_0047f2e0) into out_a/b/c; its generic instruction length is 9 dwords. In label_12649 it reads the object's position vector into G[0x62498/9/a] — a stubbed DRIVER of the render drift. See docs/engine-re.md gfx op-contract table. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra handler 0x42a1b0; FUN_0047f2e0(obj op1) + 3x→FUN_00425fb0(2/3/4). label_12649 site 0x00c86 handle=G[0x62457] → G[0x62498/9/a]. + +### 0x21d `clone-gfx-object` (clone-gfx-object, argc 2) +- **summary:** (source_handle)(destination_handle) - clone the complete retained gfx object record (0xb5 dwords / 0x2d4 bytes). SC0000 uses destination=source+1 as range A's old-frame snapshot immediately before 0x223 crossfades range B's updated source into target handle source+2. +- **grounding:** source=investigation, confidence=high +- **depends on:** 0x223 +- **evidence:** Ghidra handler 0x423310 -> gfx_object_clone@0x47e4f0. Worker requires source in retained-gfx owner+0x408 (EngineCtx+0x46a1c), creates destination, copies exactly 0xb5 dwords from source object record, then marks owner+0xb558 (EngineCtx+0x51b6c) dirty. SC0000 site 0x128fc passes current handle and handle+1 before queueing 0x223 at 0x129e7. + +### 0x21e `set-anim-transform-norm` (set-anim-transform-norm, argc 6) +- **summary:** (handle)(delay_ms)(duration_ms)(sx)(sy)(sz) — set the normalized SCALE-matrix channel (100=identity). Target obj+0xac is linearly sampled from current obj+0x6c by gfx_object_apply_transform_channels@0x472f00 on retained-gfx frame time owner+0xb550 (EngineCtx+0x51b64), after delay and for duration, then committed. Shares only start timestamp obj+0x34 with op 0x220; neither Z is opacity. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra 0x47eaa0 calls matrix builder 0x48af1d for target obj+0xac. Consumer 0x472f00 uses delay obj+0x3c, duration obj+0x50, current obj+0x6c, target obj+0xac, shared start obj+0x34, and retained-gfx frame time owner+0xb550 (EngineCtx+0x51b64). + +### 0x21f `set-anim-rotation-axis-angle` (set-anim-rotation-axis-angle, argc 7) +- **summary:** (handle)(delay_ms)(duration_ms)(axis_x)(axis_y)(axis_z)(angle_deg) — set the delayed one-shot axis-angle rotation channel. Handler converts axis/angle integers to floats; worker stores target axis obj+0x1f8 and angle obj+0x208 and builds target matrix obj+0x12c. gfx_object_apply_transform_channels samples current axis/angle linearly on shared start obj+0x34 and composes T(-anchor)*scale*rotation*translation*T(anchor). +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra handler 0x423410 -> gfx_object_set_rotation_channel@0x47eb70; consumer gfx_object_apply_transform_channels@0x472f00 uses delay +0x40, duration +0x54, current axis +0x1ec/angle +0x204, target axis +0x1f8/angle +0x208, current matrix +0xec and target +0x12c. Native SC0000 handle 0xcb8e sample at 11/390 of axis (0,0,1), 30deg matches matrix [0.9055,0.0134;-0.0134,0.9055] and translation (74.1449,47.3127). + +### 0x220 `set-anim-transform-abs` (set-anim-transform-abs, argc 6) +- **summary:** (handle)(delay_ms)(duration_ms)(tx)(ty)(tz) — set the absolute TRANSLATION-matrix channel. Target obj+0x1ac is linearly sampled from current obj+0x16c by gfx_object_apply_transform_channels@0x472f00 on retained-gfx frame time owner+0xb550 (EngineCtx+0x51b64), after delay and for duration, then committed. Independent of op 0x21e scale; neither Z is opacity. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra 0x47ecc0 calls matrix builder 0x48afb1 for target obj+0x1ac. Consumer 0x472f00 uses delay obj+0x44, duration obj+0x58, current obj+0x16c, target obj+0x1ac, shared start obj+0x34, and retained-gfx frame time owner+0xb550 (EngineCtx+0x51b64). + +### 0x222 `present-gfx-object-range` (present-gfx-object-range, argc 2) +- **summary:** (first_handle)(count) - flush/present retained graphics objects in the selected handle range into the currently selected backbuffer or offscreen render target, then clear their pending update flags. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x222_handler@0x4235e0 calls gfx_present_object_range@0x482230. The worker enters the graphics service, walks the retained-object map, processes flagged objects whose handles fall in [first,first+count), clears pending flags, and finalizes the render batch in the D3D target previously selected by op 0x20d. HISTORY.BIN uses (0,60000) for the backbuffer. SAVE.BIN instead renders [0,0x130b0) into 800x600 slot 2, then handle 0x15f90 at 14% scale into 112x84 slot 192; op 0x1ae writes slot 192 as the numbered .STH thumbnail. + +### 0x223 `queue-surface-alpha-transition` (queue-surface-alpha-transition, argc 8) +- **summary:** (command_key)(target_slot)(range_a_start)(range_a_count)(range_b_start)(range_b_count)(delay_ms)(duration_ms) — queue a type-0 timed alpha transition command in the separate ctx+0x414 command map. This is render-target/surface presentation state, not an object affine matrix. The render frame composites the two handle ranges into target_slot and ramps alpha 0->1 after delay over duration. +- **grounding:** source=investigation, confidence=high +- **depends on:** 0x20c, 0x21c, 0x1c7, 0x1cc +- **depended on by:** 0x20c, 0x21c, 0x21d, 0x24d +- **evidence:** Ghidra handler 0x423620 -> gfx_queue_surface_alpha_transition@0x47f440. Record fields: type +0=0, start +4=0, delay +8=arg7, duration +0xc=arg8, slot +0x10=arg2, range A +0x14/+0x1c=args3/4, range B +0x18/+0x20=args5/6. gfx_render_frame@0x47fbc0 initializes start from retained-gfx owner+0xb550 (EngineCtx+0x51b64) and consumes type 0 as an alpha ramp. SC0000 executes one shared-helper site at 0x129e7. + +### 0x224 `clear-gfx-command-queue` (clear-gfx-command-queue, argc 0) +- **summary:** Clear the native gfx command queue rooted at ctx+0x418. Host-implicit because the port composites retained state directly. +- **grounding:** source=investigation, confidence=high, noop_headless=True +- **evidence:** Ghidra handler 0x417550 -> gfx_command_queue_clear 0x47cb10, which destroys queued nodes and restores the sentinel links/count. + +### 0x228 `query-gfx-translation-target` (u00421940, argc 5) +- **summary:** 0x228 query translation target (succ)(handle)(outX)(outY)(outZ): clone the retained object, decompose its target translation matrix at obj+0x17c, and return matrix translation obj+0x1ac/+0x1b0/+0x1b4. Returns succ=0 when found; when absent, writes succ=1 and leaves outputs untouched. The C# VM queries TranslationTarget independently of V24. See docs/engine-re.md §SC0000 anim cluster. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2 handler gfx_op_0x228_query_position@0x42a3a0 calls gfx_object_query_translation_target@0x47cdd0. The worker copies the complete 0xb5-dword object record, passes copied obj+0x17c to matrix4_decompose_affine@0x48d7c8, and returns its translation outputs; the decomposition reads matrix elements +0x30/+0x34/+0x38, corresponding to obj+0x1ac/+0x1b0/+0x1b4. SC0000 AE001H queries this before each 0x220 leg. C# regression covers targets (40,-20), (50,-80), (130,-100), plus the missing-object output-preservation path. + +### 0x229 `set-gfx-range-transform` (set-gfx-range-transform, argc 5) +- **summary:** (first_handle)(count)(anchor_x)(anchor_y)(anchor_z) — reset and select the retained-gfx range transform applied after each ordinary object matrix for handles in [first, first+count), then set its anchor/pivot. A zero count disables it. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x229_set_gfx_range_transform@0x423700 first calls gfx_range_transform_reset@0x472b80, then writes operands 1/2 to retained-gfx owner+0x420/+0x424 and operands 3..5 to the embedded transform object's anchor at owner+0x440..+0x448. gfx_object_composite@0x47f650 post-multiplies the sampled owner+0xb5b4 matrix only for handles in that selected range. Corpus: 693 calls/309 scripts; 590 disable with all zeroes, 101 select from handle 1 with a script-computed count, and FIELD/LOOK supply camera anchors. This supersedes the former incorrect per-object-position interpretation; per-object direct position is 0x22f. + +### 0x22a `set-gfx-range-scale-current` (set-gfx-range-scale-current, argc 3) +- **summary:** (scale_x_percent)(scale_y_percent)(scale_z_percent) — immediately replace the selected retained-gfx range transform's current scale matrix. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x22a_set_gfx_range_scale_current@0x4237b0 divides all three operands by 100 and calls gfx_range_transform_set_scale_current@0x472c10, which builds owner+0x494. FIELD and LOOK each call it once after 0x229/0x22c; FIELD's zoom percent is G[0xccc09]. + +### 0x22c `set-gfx-range-translation-current` (set-gfx-range-translation-current, argc 3) +- **summary:** (translate_x)(translate_y)(translate_z) — immediately replace the selected retained-gfx range transform's current translation matrix. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x22c_set_gfx_range_translation_current@0x423900 passes the three integer operands as floats to gfx_range_transform_set_translation_current@0x472d00, which builds owner+0x594. FIELD computes (400-camera_x, 300-camera_y, 0), making the selected map anchor land at screen center; LOOK uses the same camera helper. + +### 0x22d `set-gfx-range-scale-target` (set-gfx-range-scale-target, argc 5) +- **summary:** (delay_ms)(duration_ms)(scale_x_percent)(scale_y_percent)(scale_z_percent) — animate the selected retained-gfx range transform's scale from its current matrix to the target. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x22d_set_gfx_range_scale_target@0x423990 divides operands 3..5 by 100 and calls gfx_range_transform_set_scale_target@0x472d50. The worker arms the embedded transform object's ordinary scale channel (delay obj+0x3c, duration +0x50, target matrix +0xac), which gfx_range_transform_sample_frame@0x476df0 samples before range composition. FIELD has the sole corpus call, a 300 ms camera zoom. + +### 0x22f `set-gfx-position-current` (u00421DD0, argc 5) +- **summary:** (handle)(control)(x)(y)(z) — set the object's current/base translation matrix. The native worker also retains operand 2 as channel control state; the port currently applies x/y/z but ignores that control operand. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: gfx_op_0x22f_set_position_anim@0x423b00 fetches x/y/z as floats and passes all five operands to gfx_worker_set_translation@0x472e90. The worker builds the current translation matrix with x/y/z and stores operand 2 in the channel record. This is distinct from the shared range transform at 0x229. The C# handler sets V24 directly and is therefore position-correct but does not yet model operand 2. + +### 0x230 `reset-gfx-cyclic-animations` (u00421E70, argc 1) +- **summary:** (handle) — get or create a retained gfx object, clear its cyclic-animation active flag, and zero all five looping-channel start/period pairs without changing current/base transforms. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x230_reset_gfx_cyclic_animations@0x423ba0 fetches the handle and calls gfx_object_reset_cyclic_animation_channels@0x47ee60. The worker clears object flag bit 2 and zeroes starts obj+0x20c/+0x210/+0x214/+0x218/+0x21c plus periods obj+0x220/+0x224/+0x228/+0x22c/+0x230, covering looping color, scale, rotation, the second cyclic matrix, and source-rectangle channels. Corpus: five DEBUGADV effect demonstrations plus one FIELD movement setup before 0x239. + +Port status (2026-07-29): implemented as one retained-state reset covering cyclic color, scale, rotation, secondary-matrix, and source-rectangle timing. It disables the four modeled looping channels, clears the complete native raw timing block for drop-in persistence, and preserves base/current transforms, cyclic targets, and one-shot channels. + +### 0x231 `animate-gfx-srcrect-loop` (u00421EA0, argc 4) +- **summary:** (handle)(frame_period_ms)(frame_count)(column_count) — loop row-major through the spritesheet. Every sample preserves draw-texture's source-rectangle width/height; frame=floor((shared_frame_time-object_start)/frame_period)%frame_count, src offset=(frame%columns*width, frame/columns*height). All objects use the retained manager's shared current/previous millisecond timestamps but retain their own start and period. The native consumer raises redraw dirty only when the current and previous samples select different cells. Worker gfx_worker_anim_srcrect @0x47eec0; consumer gfx_object_anim_interpolate @0x473ed0. +- **grounding:** source=investigation, confidence=high +- **evidence:** Native /v2 decompile: worker stores/reset start at obj+0x21c, period at +0x230, frame_count at +0x238, and columns at +0x23c. Interpolator seeds the object start from manager+0xb550, computes ((current-start)/period)%frame_count, then offsets both source-rect X bounds by rect_width*(frame%columns) and Y bounds by rect_height*(frame/columns). It repeats the cell calculation with manager+0xb554 and sets manager+0xb558 dirty only when the two cells differ. engine_main_tick_with_exception_policy shifts current to previous and samples timeGetTime once per active outer tick. SC0000 uses (100,8,4) with AE001H's eight 200x200 cells in a 4x2 800x400 sheet. FIELD configures prototype 0x9c40 with (200,4,2), then DRAWCH clones its complete zero-start record to the entity handles before the first render, phase-locking that family. + +### 0x232 `animate-gfx-color-loop` (u00421EF0, argc 4) +- **summary:** 0x232 anim-color (handle)(period)(alpha)(color): ping-pong the temporary packed ARGB passed to the normal object blit. Handler resolves negative alpha/RGB from static color obj+0x60 and clamps alpha above 255. Blend selector obj+0x30 is unchanged: mode 0 keeps default blending (animated alpha is inert; RGB is vertex modulation), while mode 1 uses sampled ARGB alpha as the SRCALPHA scale for additive composition. Fresh static color is 0xffffffff. The C# VM resolves sentinels and consumes sampled ARGB through the unchanged mode-specific path. See docs/engine-re.md §SC0000 anim cluster. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: gfx_op_0x232_anim_color@0x423c30 resolves sentinels then calls gfx_worker_anim_color@0x47ef50; gfx_object_anim_interpolate@0x473ed0 samples static obj+0x60 toward target obj+0x240 into a temporary packed color; gfx_object_composite@0x47f650 passes that color plus unchanged selector obj+0x30 to gfx_object_blit_d3d9@0x4774c0. Blit mode 0 leaves the default path and passes RGB as modulation; mode 1 sets SRCALPHA/ONE additive composition. gfx_object_init_default@0x472810 initializes obj+0x60=0xffffffff. SC0000 0x1a0e (handle,1200,224,-1) is therefore 0xffffffff<->0xe0ffffff with inert alpha and identity RGB in mode 0: no visible pulse. C# regressions cover exact AE001H visual invariance, negative-RGB preservation, mode-0 RGB modulation, and mode-1 additive scaling. + +### 0x233 `set-scale-cycle` (set-scale-cycle, argc 5) +- **summary:** (handle)(period_ms)(scale_x_percent)(scale_y_percent)(scale_z_percent) — configure a cyclic ping-pong scale matrix that moves identity→target over the first half-period and target→identity over the second. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x233_set_scale_cycle@0x423cf0 divides operands 3..5 by 100 and calls gfx_object_set_scale_cycle@0x47efd0. The worker stores start=0 at obj+0x210, period at +0x224, and the target scale matrix at +0x250. gfx_object_anim_interpolate@0x473ed0 samples a triangular phase 2*min(elapsed%period,period-elapsed%period)/period, linearly blends identity to target, and multiplies the result into the separately anchored cyclic-animation product. Corpus: 31 sites in nine scripts, including eight ordinary ADV scenes. + +Port status (2026-07-28): implemented as an independent retained-object scale cycle. The compositor samples the exact triangular phase, keeps the channel frame-driven during waits, and composes it after one-shot translation but before the sibling cyclic rotation. + +### 0x234 `anim-start` (anim-start, argc 5) +- **summary:** (handle)(period_ms)(axis_x)(axis_y)(axis_z) — configure cyclic rotation. Worker stores period obj+0x228, start obj+0x214=0, and float axis obj+0x244; each frame uses integer degrees floor(((now-start)%period)*360/period). gfx_object_composite right-multiplies this separately anchored transform after the one-shot scale/rotation/translation product, so cyclic rotation also rotates the translation vector. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra handler 0x423da0 converts axis ints to floats -> worker 0x47f060. gfx_object_anim_interpolate@0x473ed0 consumes obj+0x228/+0x214/+0x244 on retained-gfx owner+0xb550 (EngineCtx+0x51b64) and matrix4_make_axis_angle@0x48b215. gfx_object_composite@0x47f650 calls one-shot transform first, cyclic animation second. + +### 0x236 `play-movie-to-surface` (play-movie-to-surface, argc 4) +- **summary:** (packed_resource_id)(surface_slot)(movie_flags)(start_delay_ms) - synchronously open a universal packed SYS4INI/AAI movie and construct its DirectShow graph, then start asynchronous frame delivery into the retained destination surface after the requested service-tick delay. The opcode itself is non-blocking: the VM advances to the next instruction. SC0000's 0x33 and BTL's 0x2axx/0x2bxx MVB ids are already absolute base-catalog indexes. +- **grounding:** source=investigation, confidence=high +- **depended on by:** 0x241, 0x24d +- **evidence:** Ghidra /v2 op_0x236_play_movie_to_surface@0x423ee0 fetches operand 1 and passes it unchanged to movie_to_texture_open_asset_graph@0x463e20, which passes it unchanged to asset_open_indexed_entry@0x44f390. The opener directly indexes the flat base table or selected AAI table and has no scene input. The handler leaves playback pending through movie_play_configure@0x4625e0; movie_start_pending_after_sync_delay@0x4633b0 records the first service tick and calls the shared IMediaControl::Run worker after operand 4's delay, giving non-modal playback the same DirectShow first-sample preroll as 0x20f. SC0000 native operand capture and exact 0x13c8->0x13d1 trace prove nonblocking behavior. BTL's live 0x2b21 site supplies 0x2af1/0x2af5/0x2bca/0x2bd8/0x2bde, the exact base entries MVB001/MVB004/MVB914/MVB958/MVB955. + +The handler requires an existing destination texture, allocates/reuses a 0x478-byte movie-to-texture object for the surface without replacing its resource identity/color key, opens operand 1 through the native universal packed-id reader, builds FilterGraph/IGraphBuilder/IMediaControl/IMediaPosition/IMediaEvent/IBasicAudio, and presents bottom-up RGB samples through the movie texture renderer. Operand 3 selects movie/sound routing policy: bits 0x10000/0x20000/0x40000/0x80000 force mute/music/SE/voice routes, otherwise set:DependMovieSound selects the normal movie route; SC0000's low value 2 is retained as native movie mode state. Godot maps those categories to audio buses and sends FFmpeg-decoded timestamped stereo float PCM through a per-playback AudioStreamGenerator. The first image is latched before audio start; video cadence is rebased to its first decoded PTS for both audio-bearing and video-only streams, while audio retains every sample from its own timestamp zero. Operand 4 delays the pending graph start in native service ticks. Static layer preparation after 0x236 does not terminate the retained movie; 0x21c services it through EOF and subsequent surface cleanup stops/detaches both decoder and audio output. The port type-checks the selected ResolvePacked record as MPEG without adding a scene base or fallback. + +### 0x238 `set-anim-clock` (set-anim-clock, argc 1) +- **summary:** (duration) — configure the separate global finite-animation service window: native ctx+0x51b78=0 (start), +0x51b7c=duration. The generic instruction length is 3 dwords. NON-BLOCKING: gfx_animation_service_poll seeds the start from the shared frame timestamp and keeps redraw active through the duration. This is not the time source or cadence for cyclic object channels, which sample ctx+0x51b64/+0x51b68 with object-local starts and periods. SC0000 opening @0x123bd/@0x13858. Handler 0x4240e0; Kelebek VA 0x422390 is drift. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x238_handler@0x4240e0 zeros retained-gfx manager+0xb564 and stores the duration at +0xb568. gfx_animation_service_poll@0x407640 seeds +0xb564 from manager+0xb550, marks redraw dirty while current<=start+duration, then clears the window. Cyclic worker gfx_object_anim_interpolate@0x473ed0 instead uses shared frame current/previous +0xb550/+0xb554 and per-channel object start/period fields. + +### 0x239 `animate-gfx-srcrect-target` (u004223C0, argc 6) +- **summary:** (handle)(delay_ms)(duration_ms)(frame_count)(column_count)(target_frame) — one-shot row-major source-rectangle cell channel. Worker gfx_worker_set_srcrect_cell @0x47ed90 stores timing at obj+0x48/+0x5c, layout at +0x238/+0x23c, and target at +0x234. C# currently retains the endpoint cell immediately. +- **grounding:** source=investigation, confidence=high +- **evidence:** Native /v2 worker and gfx_object_apply_transform_channels decompile. The consumer advances target_frame cells over duration after delay, preserves the existing source-rect dimensions, and commits the endpoint. + +### 0x23a `query-movie-surface-active` (query-movie-surface-active, argc 2) +- **summary:** Write whether a movie-backed surface has a nonzero playback/synchronization state at surface object offset 0x42c; an empty surface slot writes zero. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x23a_handler@0x42a440 indexes the surface table by operand 2, writes zero for a null slot, otherwise writes surface+0x42c != 0. All four corpus sites are movie completion polling loops: BTL checks active combat-movie surfaces 7+, while FIELD and USEMAGIC poll surface 42 between present-frame, frame-time sampling, and sleep(16). + +### 0x23b `draw-decimal-glyphs` (u00422460, argc 7) +- **summary:** Draw an integer as decimal glyph objects from a style registered by opcode 0x13a. +- **grounding:** source=investigation, confidence=high +- **depends on:** 0x13a +- **evidence:** Ghidra /v2: op_0x23b_draw_decimal_glyphs@0x424190 reads the five-dword style record at EngineCtx+0x55180, erases the destination handle range, and calls gfx_object_bind_draw once per displayed digit. Corpus: 147 sites in 24 scripts; DRAWCHP contains 22 calls for the field HUD, including turn/control/mana/level/HP/SP/FS values visible as blank in the DEBUGMAP discrepancy. + +First erase digit_capacity objects beginning at base_handle. Then split value by signed division/modulo 10 and bind at most digit_capacity retained objects using adjacent digit-width cells from the registered atlas. Flags bit 0 zero-pads, bit 1 centers the used digits, and bit 2 left-aligns them; with no alignment bit the value is right-aligned in the capacity. The handler admits style index 10 even though native physically clears only records 0..9; see op 0x13a's adjacent-memory alias note. Indices above 10 and unregistered styles raise the engine's script error. + +### 0x23c `sample-frame-time` (sample-frame-time, argc 0) +- **summary:** Explicitly shift the shared current retained-presentation timestamp to the previous field, then sample the native monotonic millisecond clock as the new current timestamp. The active outer engine tick normally performs the same update; this opcode does not create a distinct timer or fixed-rate animation cadence. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x23c_handler@0x417580 copies EngineCtx frame_timer_current at +0x51b64 to frame_timer_previous at +0x51b68, then stores imp_winmm_timeGetTime() at +0x51b64. engine_main_tick_with_exception_policy@0x411840 performs the same shift/sample once per active outer presentation tick before dirty/movie rendering. BTL, ADDEXP, SHOWGROW, USEMAGIC, and FIELD place the explicit opcode at presentation/present-frame boundaries. + +### 0x23d `release-transient-surfaces` (release-transient-surfaces, argc 0) +- **summary:** Stop movie bindings and release transient gfx surface slots 42 through 999 inclusive, preserving system-owned slots 0 through 41. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x23d_release_transient_surfaces@0x4175c0 loops EDI=42 while EDI<1000, stops/releases ctx+0x52bd4[EDI] movie objects, and calls retained_gfx_release_surface@0x474e40 on owner ctx+0x46614. DATA1: 149 calls in 146 scripts; 146 directly follow 0x1f6. + +For each fixed slot in [42,1000), the handler stops/releases the movie-to-texture object at ctx+0x52bd4[slot], then invokes the ordinary retained-gfx surface-release worker. Protected/externally owned slots may be retained by the worker's per-slot guard. This is the resource half of the common 0x1f6/0x23d full-reset sequence. + +### 0x23f `query-surface-stop-time-ms` (u00422930, argc 2) +- **summary:** (out_stop_time_ms)(surface_slot) — query the DirectShow stop position retained by a loaded movie surface, convert seconds to integer milliseconds by truncating toward zero, and write -1 when the movie slot is empty. Port-only host decoder failure is modeled as an explicitly completed, zero-duration movie. +- **grounding:** source=investigation, confidence=high +- **depended on by:** 0x241 +- **evidence:** Ghidra /v2: op_0x23f_query_surface_stop_time_ms@0x42a520 indexes EngineCtx surface array operand 2, returns -1 for a null slot, otherwise dereferences movie+0x414 IMediaPosition and calls vtable+0x28 get_StopTime. The adjacent op 0x23e uses the same interface at vtable+0x24 get_CurrentPosition; movie op 0x245 uses +0x20 put_CurrentPosition, independently confirming the documented vtable layout. The returned seconds are multiplied by g_dMillisecondsPerSecond@0x5713e8 (double 1000.0) and truncated by crt_ftol2_sse_truncate@0x550850 before vm_operand_write(1). All 23 Himegari sites in 17 scripts are associated with a preceding op 0x236 movie load to the queried surface. FIELD divides one result by 16 and adds 1 to build a 16 ms callback schedule; another path clamps the result to 600 ms before DRAWVOL. + +The surface object's +0x414 member is IMediaPosition. Its vtable +0x28 entry is get_StopTime (after IUnknown, IDispatch, get_Duration, put_CurrentPosition, and get_CurrentPosition), returning a REFTIME double in seconds. Native multiplies by the double constant 1000.0 and calls the compiler float-to-integer helper, whose SSE2 and x87 paths both truncate toward zero. It does not inspect the getter HRESULT. For a valid graph the default stop time normally equals media duration, which explains duration-style consumers, but the exact ABI is stop position rather than get_Duration. The handler only queries state; it does not yield or alter playback. Native has no meaningful answer for a port host that cannot build a graph for a valid shipped MPEG. Port safety extension: op 0x236 normalizes missing host metadata to stop time 0 and marks decoder failure completed, while a truly empty movie slot still returns -1. + +### 0x241 `play-movie-to-surface-at-position` (play-movie-to-surface-at-position, argc 5) +- **summary:** (packed_resource_id)(surface_slot)(movie_flags)(start_delay_ms)(position_ms) - perform the same non-modal movie-to-retained-surface open as opcode 0x236, seek the graph to the requested millisecond position, then arm playback. +- **grounding:** source=investigation, confidence=high +- **depends on:** 0x236, 0x23f +- **evidence:** Ghidra /v2: op_0x241_play_movie_to_surface_at_position@0x4247e0 uses the same 0x478-byte movie-to-texture object, destination render-target check, packed asset open, sound-route/volume path, and movie_play_configure worker as op 0x236. Between open and configure it calls movie+0x414 IMediaPosition vtable+0x20 put_CurrentPosition with operand5/1000.0; operand4 is then passed unchanged as the start delay. Corpus: sole site CALLBACK_LOAD@0x189 receives the layer resource, surface and flags from globals 0x3276/0x3239/0x328a, delay 0, and global 0x329e[layer]-1. The ordinary ADV creation path writes op 0x23f stop_time_ms into 0x329e immediately after op 0x236. + +The seek is applied through IMediaPosition::put_CurrentPosition before movie_play_configure records the flags and start delay. CALLBACK_LOAD does not restore a separately sampled live playback cursor: the ADV setup path stores opcode 0x23f's stop time in global array 0x329e, and load passes stop_time_ms-1. The shipped use therefore reconstructs the movie layer at its terminal frame after a numbered load. Port status (2026-07-29): implemented through the existing 0x236 surface binding, routing, and completion lifecycle. FFmpeg ABI v3 seeks its independent video and audio demuxers before worker start; managed preroll selects the video frame active at the requested position (retaining the last frame at stop_time_ms-1), trims audio to the same point, and rebases both remaining timelines to playback time zero. Negative positions clamp to zero and positions at or beyond the graph stop clamp to stop_time_ms-1. + +### 0x242 `set-object-animation-detached` (set-object-animation-detached, argc 2) +- **summary:** Replace the retained object's animation-control word at obj+0x2d0. Bit 0 detaches finite one-shot channels from blocking presentation and protects them from 0x243 forced completion until they finish naturally. +- **grounding:** source=investigation, confidence=high +- **depended on by:** 0x243 +- **evidence:** Ghidra /v2: op_0x242_set_object_animation_detached@0x4249d0 calls gfx_object_set_animation_control@0x47f1a0. Consumer gfx_object_apply_transform_channels@0x472f00 tests obj+0x2d0 bit 0 to suppress manager+0xb55c forced completion and manager+0xb560 blocking-dirty publication, while still setting manager+0xb558 redraw dirty; it clears bit 0 when the finite group completes. DATA1: 303 calls; values zero x302, one x1. + +The setter get-or-creates the object and writes the complete operand. During retained composition, bit 0 makes the one-shot color/scale/rotation/translation/source-rectangle group ignore the manager's force-complete request and suppresses the blocking-dirty flag while leaving the redraw-dirty flag active. When no finite channel remains, native clears bit 0 and the shared start time. SC0000's two common CG loaders explicitly write zero. Across DATA1, 302 calls write zero and the sole nonzero call is BTL.BIN's animated battle-object setup, which writes one. + +### 0x243 `reset-anim-clock` (reset-anim-clock, argc 0) +- **summary:** When animation-service flag bit 1 is clear, request forced completion of ordinary finite one-shot object channels and reset the global animation-service elapsed/duration fields. Objects detached by 0x242 bit 0 ignore the force request. +- **grounding:** source=investigation, confidence=high +- **depends on:** 0x242 +- **evidence:** Ghidra handler 0x4182d0: if !(ctx+0x51b80 & 2), set retained-gfx owner+0xb55c (EngineCtx+0x51b70)=1 and zero owner+0xb564/+0xb568. gfx_object_apply_transform_channels treats force value 1 as immediate completion unless obj+0x2d0 bit 0 is set. SC0000 label_1235a calls it before present-frame. + +### 0x248 `set-tiled-surface-edge-length` (set-tiled-surface-edge-length, argc 1) +- **summary:** Set the legacy mode-1 tiled-surface edge length in pixels. Native surface creation, blitting, rectangle operations, and AGF upload use it to partition one logical surface into ordinary texture tiles; SYSTEM4 initializes it to 128. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x248_set_tiled_surface_edge_length@0x424af0 directly stores operand 1 in g_nTiledSurfaceEdgeLength@0x5b15b0. Its 30 xrefs are confined to gfx_tiled_surface_create/blit/rect_op/upload_agf, where dimensions are split by ceil(size / edge). SYSTEM4's sole call passes 128 immediately after opcode 0x149. This configures opcode 0x249's mode-1 tiled wrapper and is unrelated to adjacent opcode 0x24d. + +Port status (2026-07-29): implemented as retained signed-dword graphics configuration. The value survives scene-context resets and does not dirty presentation or rebuild existing surfaces. The portable backend deliberately keeps mode-1 surfaces as contiguous RGBA images rather than reproducing legacy D3D texture tiling. + +### 0x249 `load-raw-texture-surface` (load-raw-texture-surface, argc 3) +- **summary:** Load an AGF by universal packed SYS4INI/AAI catalog id into a retained surface slot using native surface mode 1 and the same packed-id/RGB-colorkey contract as set-texture (0x1f9). +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x249_load_raw_texture_surface@0x424b20 is instruction-length 7 and is contract-identical to gfx_op_0x1f9_load_surface through release, unchanged packed operand, asset_open_indexed_entry, RGB colorkey conversion, load failure, and cleanup. Its only relevant distinction is mode-1 gfx_surface_mode1_ctor, a tiled large-image wrapper: gfx_tiled_surface_create@0x432ff0 splits logical dimensions into ordinary mode-0 child textures; gfx_tiled_surface_upload_agf@0x431a10 decodes/uploads regions; gfx_tiled_surface_blit@0x4316b0 subdivides logical source rectangles. Corpus literals include FIELD 0x32da..0x32dd -> SO005/SO007/SO008A/SO007A. The former claim that only 0x249 bypasses scene normalization was wrong because native never performs scene normalization for 0x1f9 either. + +### 0x24d `play-movie-mask-transition` (play-movie-mask-transition, argc 12) +- **summary:** Capture an old retained-object range into the newly drawn scratch surface, retime a movie to the requested duration, and use each decoded frame's green channel as a byte-per-pixel alpha mask within the supplied rectangle. +- **grounding:** source=investigation, confidence=high +- **depends on:** 0x236, 0x223 +- **evidence:** Ghidra /v2: op_0x24d_play_movie_mask_transition@0x424db0 opens operand 10 through movie_to_texture_open_asset_graph, configures delay operand 11, sets IMediaPosition::put_Rate to native_stop_time_ms / operand12_ms, allocates a width*height byte mask through movie_texture_allocate_transition_mask@0x415d90, and calls gfx_movie_mask_transition_register@0x47f560 with operands 1-9/11. movie_texture_renderer_receive_sample@0x4628d0's mask-active branch copies byte +1 of every bottom-up RGB24 sample pixel, i.e. its green channel, directly into that mask. The retained compositor's type-1 branch applies the movie-updated mask between the old and new object ranges and holds its blocking dirty state until playback completes. Both DEBUG.BIN sites use TEST.AGF (an MPEG program stream), delay 0, and duration 1000 ms. + +The RGB24 sample callback copies the bottom-up green byte verbatim. In the native 32-bit mask compositor, captured RGB remains unchanged and the output alpha byte is the high byte of `((source_argb >> 8) * mask_byte)`; this records the exact packed-integer operation, including its low-color carry, rather than approximating it as a scalar luminance crossfade. Mode 1 initializes the mask to 0 and completes at 255; all other modes initialize at 255 and complete at 0. Port status (2026-07-29): implemented through the existing retained-range software rasterizer and dynamic scratch-surface path. The decoder honors start delay and native stop/duration retiming, publishes logical top-down green masks, and holds opcode 0x21c until movie completion; click completion remains limited to type-0 transitions. + +### 0x24e `set-gfx-animation-service-flags` (set-gfx-animation-service-flags, argc 1) +- **summary:** Replace the retained graphics animation-service flags with operand 1. BTL brackets combat presentation with values 1 and 0; GAMECLEAR uses 3 and 0. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x24e_handler@0x425070 writes operand 1 directly to EngineCtx.gfx_animation_service_flags at +0x51b80. engine_main_tick_with_exception_policy@0x411840 tests bit 0 before polling action 4 in the run-state-0x400 EffectSkipOnClick branch. gfx_request_force_complete_and_reset_anim_clock@0x4076c0 tests bit 1 before setting force-complete and zeroing the service clock; opcode 0x243 calls the same worker. + +Bit 0 disables the run-state-0x400 EffectSkipOnClick branch while finite retained presentation is active. Bit 1 independently suppresses opcode 0x243 and the click branch's shared force-complete/clock-reset request. BTL brackets combat presentation with 1/0 and GAMECLEAR uses 3/0, protecting those service-owned animations from ordinary ADV click completion. + +### 0x258 `set-surface-persistence-flags` (set-surface-persistence-flags, argc 2) +- **summary:** (surface_slot)(flags) - replace the native surface record's numbered-save persistence flags; bit 0 controls asset reload on restore and bit 1 controls the adjacent still-unnamed field. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x258_set_surface_persistence_flags@0x4250a0 reads the slot and flags operands and calls gfx_surface_set_persistence_flags@0x4159c0. The worker writes flags&1 to record +0x08 and (flags>>1)&1 to +0x0c in both 1,000-record tables. This corrects the old upstream address/name association: 0x422fe0 is opcode 0x20f movie playback, not 0x258. Corpus declaration chains follow opcode 0x259 at script entry. + +Scripts place declaration chains immediately after opcode 0x259 clears both fields. The port models bit 0 because it is consumed by layout-3 restoration; bit 1 is retained as an identified native field but has no known runtime consumer yet. + +### 0x259 `script-entry` (script-entry, argc 0) +- **summary:** zero-arg script/prologue entry; clears surface-record persistence fields +0x08 and +0x0c across both 1,000-record native tables before the declaration chain continues +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x259_script_entry_clear_surface_persistence_flags@0x417660 loops over both 20,000-byte surface-record tables (1,000 records x 20 bytes), writing zero to record +0x08 and +0x0c. SC0000 offset 0x0 and every observed script entry begins with this opcode; 0x258 continues the declaration chain. Port clears its modeled +0x08 reload policy; +0x0c remains opaque/unmodeled. + +## input + +### 0x86 `set-cursor-resource` (u0041B210, argc 1) +- **summary:** (resource_id) - load an indexed cursor asset and install it as the active custom cursor. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x86_set_cursor_resource@0x41f0a0 opens operand 1 through asset_open_indexed_entry, extracts the asset payload, passes it to the cursor installer at 0x485ce0, releases the asset, and refreshes the OS cursor when the window is active. HIDEWIN.BIN selects resources 0x3318..0x331f according to the pointer's screen-edge region. + +### 0x87 `clear-cursor-resource` (u00414D10, argc 0) +- **summary:** Clear the active custom cursor and refresh the OS cursor when the game window is active. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x87_clear_cursor_resource@0x416400 calls the cursor clear/release helper at 0x4856b0 and then the same active-window cursor refresh used by op 0x86. HIDEWIN.BIN calls it when leaving an edge region and on exit. + +### 0x88 `set-message-skip` (u0041B290, argc 1) +- **summary:** (enabled) - set persistent all-message Skip state. Nonzero makes the interpreter inject ADV fast-forward input every tick; zero stops injection and clears the transient skip run-state bit. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x88_set_message_skip@0x41f130 writes operand 1 to ctx+0x13dc and ctx+0x550fc; nonzero also sets ctx+0x6da78=1, while zero clears run-state bit 0x08000000. adv_interpreter_tick injects input bit 0x40 on every tick while ctx+0x13dc is nonzero. engine_settings_register_defaults@0x46be30 initializes set:CancelMesSkipOnClick to 0; only a nonzero override enables its press/release cancellation path. All 301 ADV button callbacks pass 1; CALLBACK_LOAD.BIN is the sole corpus 0x88(0) reset. + +### 0x90 `register-hotspot-callbacks` (u0041BEB0, argc 7) +- **summary:** (x)(y)(w)(h)(on_enter_pc)(on_leave_pc)(on_activate_pc) - append an inclusive cursor rectangle and three callback PCs to the current script frame's native input registry. This opcode only registers; the ADV input service dispatches callbacks later. +- **grounding:** source=investigation, confidence=high, noop_headless=True +- **depended on by:** 0x97 +- **evidence:** Ghidra /v2: op_0x90_handler@0x41fc80 fetches x/y/w/h, forms x+w/y+h, fetches operands 5/6/7, and calls input_hotspot_register_rect_callbacks@0x403d70 on the current frame registry. The worker appends rect + callbacks to arrays and returns without changing PC. input_hotspot_poll_hover_callback@0x4040b0 returns operand 5 on entry and operand 6 on exit; input_hotspot_take_click_callback@0x404330 resets the registry and returns operand 7 on activation. All 301 ADV scripts contain the identical five control-strip records plus three keyed records. + +op 0x90 (u0041BEB0, argc 7): `0x90 x y w h tgt_a tgt_b tgt_c`. Kelebek left it "ukn" noting args +5-7 are code locations. Native RE plus corpus analysis resolves it: +- The opcode APPENDS a record; it is not an immediate branch. Rect bounds are stored as + `(x,y,x+w,y+h)` and the cursor hit-test compares them inclusively. +- The later input service maps targets exactly: target A = pointer enter, target B = pointer leave, + target C = activation/click. Moving directly between records emits leave first, then enter on the + next service poll. Activation consumes/resets the registry before dispatching target C. +- Two forms, both ONLY in one shared ADV-chrome subroutine copied into every ADV script: + * Mode A (1505 = 5x301): immediate x,y,w,h with w=h=20; the five on-screen buttons at + (684|706|728|750|772, 572): History, Auto message, Message skip, Read-message skip, and + Hide window. Their enter/leave callbacks set G[0x6c9..0x6cd] to 1/0 and redraw SO001's + tooltip + generic 20x20 translucent hover overlay; target C runs the per-button action. + * Mode B (903 = 3x301): local-int operands, w=h=1, only tgt_c real. Companion op 0x97 binds + input-bit ids 0, 8, and 7 to these records for keyboard/pad activation. +- Every one of the 301 scripts has EXACTLY 8 sites (5 A + 3 B); zero scene-specific use. +- Registration returns normally to pc+1; later callbacks temporarily redirect execution. +- Headless (no cursor/input) can ignore registration; the 12 EMPTY sweep scenes + are gated by state + this input-wait chrome, NOT by unmodelled 0x90. Model live in A2. + + +### 0x93 `cancel-hotspot-wait` (u00415040, argc 0) +- **summary:** Reset the current frame's hotspot registry/input wait and clear native run-state bit 0x00800000. Used before opening History, Menu, or HIDEWIN flows. +- **grounding:** source=investigation, confidence=high, noop_headless=True +- **evidence:** Ghidra /v2: op_0x93_cancel_hotspot_wait@0x416670 clears run-state bit 0x00800000, calls input_hotspot_reset@0x404130, and clears the active flag at ctx+0xc6e4 (or sets the pending flag at +0xc6e0 when already inactive). + +### 0x94 `arm-hotspot-wait` (u00415090, argc 0) +- **summary:** Arm native hotspot input processing after the script has registered its rectangles. +- **grounding:** source=investigation, confidence=high, noop_headless=True +- **evidence:** Ghidra /v2: op_0x94_arm_hotspot_wait@0x4166d0 sets ctx+0xc6e4=1 and calls input_hotspot_arm_cursor_tracking@0x404230 with 10000. SC0000 executes it immediately after the five control-strip and three keyed registrations. + +### 0x97 `bind-hotspot-key` (u0041C150, argc 5) +- **summary:** (x)(y)(w)(h)(logical_action) - find the already-registered rectangle with identical bounds and bind a logical input action to its activation callback. +- **grounding:** source=investigation, confidence=high, noop_headless=True +- **depends on:** 0x90 +- **evidence:** Ghidra /v2: op_0x97_bind_hotspot_key@0x41ff30 builds the same inclusive rect as op 0x90 and calls input_hotspot_bind_key_bit@0x403f50. That worker searches registered rects for exact equality and stores operand 5 in the record's logical-action field. adv_input_service_poll@0x411230 passes the configured live action mask to input_hotspot_poll_bound_action_callback@0x403fb0, which returns the first matching record's activation PC. All 136 SC-family scripts bind action 7 to the callback that calls MENU.BIN; SYSTEM4 maps both right mouse and X to action 7. + +### 0xcc `register-mouse-callback` (mouse_callback, argc 2) +- **summary:** (poll_interval_ms)(target_pc) - register a timed per-frame mouse callback in the current script. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0xcc_register_mouse_callback@0x420f70 stores operand 2 as the callback PC and the current frame_script_resource_id as its owner, then arms operand 1 as the poll interval. HIDEWIN.BIN and HISTORY.BIN both register a 0x10-ms callback. Op 0xcd performs the timed dispatch. + +### 0xcd `dispatch-mouse-callback` (get-input-type, argc 0) +- **summary:** Dispatch the registered mouse callback when its polling interval elapses. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0xcd_dispatch_mouse_callback@0x417e10 compares timeGetTime against the registered interval, pushes the following PC, verifies the callback's saved script resource id matches the current frame, and jumps to the registered callback target. It writes no operand, so the upstream get-input-type label was incorrect. + +### 0xfb `register-joy-callback` (joy_callback, argc 2) +- **summary:** (input_index)(target_pc) - register one of 32 per-frame joy/input callback targets. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0xfb_register_joy_callback@0x421270 bounds-checks operand 1 to 0..31 and stores operand 2 in the current script frame's 33-entry callback table. Ops 0xff/0x100 poll and dispatch this table; HISTORY.BIN and HIDEWIN.BIN register indices 0..10. + +### 0xfe `set-input-action-count` (u0041E360, argc 1) +- **summary:** (count) - set the logical action scan bound; op 0x100 uses callback slot count itself when the polled mask is empty. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0xfe_set_input_action_count@0x421390 accepts unsigned values below 32, stores the count at EngineCtx+0x814, and throws script error 0x10005 otherwise. op_0x100_dispatch_joy_callbacks scans set mask bits only below this count; when op 0xff produces an empty mask, it instead dispatches the callback table entry at index count and resumes after op 0x100. SYSTEM4@0x1cf sets 10, enabling held logical actions 0..9 and reserving callback slot 10 for the no-input/release path before configuring joystick, mouse, and keyboard mappings. + +### 0xff `poll-joy-callback-input` (u00415A10, argc 0) +- **summary:** Poll the configured keyboard/mouse/joystick action mask and initialize the op 0x100 dispatch scan. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0xff_poll_joy_callback_input@0x416eb0 clears the pending input mask, fills it through input_poll_action_mask@0x4608b0, resets EngineCtx+0x6da6c input_callback_scan_index, and copies input_action_count to +0x6da70. The poller combines configured keyboard, mouse-action, and joystick bits; the joystick button-slot loop uses input_action_count, while op 0x100 applies the final action scan bound. input_poll_mouse_action_bits@0x460240 maps VK_LBUTTON/VK_RBUTTON through mouse_button_action_map and adds 4; initialization leaves both slots zero, so left defaults to action 4, while SYSTEM4 op 0x10b remaps right to action 7. + +### 0x100 `dispatch-joy-callbacks` (u00415A60, argc 0) +- **summary:** Dispatch each set logical action below the configured count, or callback slot count when no action is held. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x100_dispatch_joy_callbacks@0x416f00 scans the bitmask captured by op 0xff from EngineCtx+0x6da6c up to but excluding EngineCtx+0x814 input_action_count. Each set action resumes at op 0x100 so simultaneous bits continue dispatching. If the mask is empty, it dispatches callback table slot input_action_count and resumes after op 0x100. Callback targets come from the current frame's table populated by op 0xfb; SYSTEM4's count 10 therefore makes slot 10 the native no-input/release callback rather than an eleventh action bit. + +### 0x101 `reset-message-skip-input` (u00415BF0, argc 0) +- **summary:** Reset transient message-skip/input service state after an ADV chrome action without clearing op 0x88's persistent all-message Skip flag. +- **grounding:** source=investigation, confidence=med +- **evidence:** Ghidra /v2: op_0x101_reset_message_skip_input@0x4170a0 resets the input state rooted at ctx+0xa0ce8, clears run-state bit 0x08000000, zeroes ctx+0xa0ce8, and writes ctx+0x6da74=1 / ctx+0x6da80=0. It does not touch ctx+0x13dc or ctx+0x550fc, so adv_interpreter_tick re-injects Skip on the following tick while persistent state remains enabled. The Auto, Message-skip, Read-skip, and Hide-window callbacks invoke it after their 100 ms cursor re-arm sequence. + +### 0x107 `map-joystick-button` (u0041E500, argc 2) +- **summary:** (button_slot)(physical_button) - map a logical button slot to a physical joystick button; slot N emits logical action N+4. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x107_map_joystick_button@0x421550 writes operand 2 to EngineCtx+0x89c+operand1*4 when unsigned operand1<32, otherwise it is a no-op. input_poll_joystick_action_bits@0x460380 emits axes as actions 0=up, 1=right, 2=down, 3=left and mapped button slot N as action N+4. SYSTEM4 maps slots 0..5 to physical buttons 0,3,2,1,6,7, producing actions 4..9. + +### 0x108 `get-mouse-button-state` (u00415E70, argc 1) +- **summary:** (out) - return the current mouse-button state bitmask. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x108_get_mouse_button_state@0x428b60 fills a local through input_poll_raw_mouse_buttons@0x4602e0 and writes it to operand 1. The raw mapping is VK_LBUTTON -> 0x1 and VK_RBUTTON -> 0x2. This is distinct from op 0xff's configured logical action mask: left defaults to action 4, while SYSTEM4 maps right to action 7 with op 0x10b. HIDEWIN registers both logical actions to its close/restore callback. + +### 0x109 `get-cursor-virtual` (u00415EC0, argc 2) +- **summary:** (out_x)(out_y) - read the OS cursor and convert it into AGE's virtual-screen coordinates. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x109_get_cursor_virtual@0x428bb0 calls the cursor-position helper, converts client/display coordinates through the active VirtualFullScreen transform, and writes x/y to operands 1/2. The ADV chrome callbacks preserve x and then move y by alternating -1/+1 before op 0x10a. + +### 0x10a `set-cursor-virtual` (u0041E540, argc 2) +- **summary:** (x)(y) - convert AGE virtual-screen coordinates to client/screen coordinates and move the OS cursor. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x10a_set_cursor_virtual@0x421590 maps virtual coordinates through the active VirtualFullScreen geometry and calls SetCursorPos. SC0000 alternates the cursor by one vertical pixel after state-changing ADV button clicks so the hover state re-enters cleanly. + +### 0x10b `map-mouse-button` (u0041E5A0, argc 2) +- **summary:** (button_slot)(physical_button) - map a physical mouse button to a logical button slot; polling emits the slot as logical action slot+4. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x10b_map_mouse_button@0x4216f0 writes operand 1 to EngineCtx+0x135c+operand2*4 when unsigned operand1<32; it does not validate the physical-button operand. input_poll_mouse_action_bits@0x460240 checks left/right physical indices 0/1, reads this map, adds 4, and sets that logical action bit. Initialization zeroes the map, so left defaults to action 4. SYSTEM4@0x218 uses (3,1), mapping right mouse to action 7. + +### 0x10c `map-keyboard-scancode` (u0041E5E0, argc 2) +- **summary:** (action)(dik_scan_code) - map a DirectInput keyboard scan code to a logical input action. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x10c_map_keyboard_scancode@0x421730 requires unsigned operand1<32 or throws script error 0x10005. It translates operand 2 through EngineCtx+0x1828, the DIK-to-Win32-VK table built by input_initialize_dik_to_vk_table@0x45fc60, then writes the action to EngineCtx+0x1428[VK]. input_poll_keyboard_action_bits@0x4601a0 polls 256 virtual keys and emits the configured action bits. input_manager_initialize_defaults@0x460630 starts with count 7 and maps 0=Up, 1=Right, 2=Down, 3=Left, 4=Enter, 5=Space, and 6=Backspace. SYSTEM4 raises the count to 10 and adds Z to action 4, C/LeftCtrl to 6, X to 7, PageUp to 8, and PageDown to 9 without erasing the earlier mappings. + +### 0x10d `consume-mouse-wheel-delta` (u00415F10, argc 1) +- **summary:** (out) - return the accumulated signed mouse-wheel delta and clear it. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x10d_consume_mouse_wheel_delta@0x428cf0 copies ctx+0x1c34 to operand 1 and immediately clears the field. AGE's window procedure at 0x486925 handles WM_MOUSEWHEEL by sign-extending the high word of wParam and accumulating it at ctx+0x1c34; HISTORY.BIN polls this value and branches on its sign to select one scroll direction. + +### 0x12e `find-hit-rectangle` (find-hit-rectangle, argc 8) +- **summary:** (index_inout)(reference_rect)(pointer_x)(pointer_y)(rect_array)(x_offsets)(y_offsets)(count) - scan after the incoming index for the next inclusive rectangle intersection, or return -1. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x12e_find_hit_rectangle@0x428ff0 resolves the reference rectangle and three array operands as VM pointers, decodes rectangle/offset values with anti_tamper_a, and starts at incoming_index+1. Each candidate is [left,right,top,bottom]; the worker subtracts its per-entry x/y offsets from the pointer, inclusively intersects it with the reference rectangle, and writes the matched array index or -1 to operand 1. HISTORY.BIN uses decoded local arrays for scrollbar/control regions, close region 8, and visible text rows 9..13. + +### 0x142 `set-system-menu-enabled` (set-system-menu-enabled, argc 1) +- **summary:** (enabled) - replace the EngineCtx flag exposed through IAGEService to gate reentrant native AGERC system-menu actions. Scene reset defaults it to 1; CONFIG writes 0 on entry and 1 immediately before teardown and exit. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x142_set_system_menu_actions_enabled@0x421fe0 directly stores operand 1 at EngineCtx+0xa0d10. scene_context_init_reset initializes the field to 1. iage_service_query_system_menu_enabled@0x45f7c0 exposes it as a boolean through the AGE:IAGEService vtable at +0xb4. Shipped /support/AGERC.DLL's agerc_refresh_system_menu_state@0x10002e10 calls that method; zero invokes EnableMenuItem(...,MF_GRAYED) for command ids 0x9c63/64/65/68/6c/6e/6f. CONFIG.BIN's only sites bracket its complete scripted settings UI with 0 then 1. + +Port status (2026-07-29): implemented as an EngineCtx-lifetime signed-dword field on VirtualMachine. Root scene reload restores one. The current Godot frontend has no AGERC native system menu, so the value is retained for exact state parity and a future equivalent menu consumer without affecting game input or persisted settings. + +### 0x144 `edit-fullwidth-string-dialog` (edit-fullwidth-string-dialog, argc 2) +- **summary:** (result_inout)(initial_text) - synchronously open AGERC's modal full-width text editor. Accept writes at most eight valid CP932 double-byte characters to operand 1; cancel leaves operand 1 unchanged. Operand 2 supplies the initial edit text and is preserved. +- **grounding:** source=investigation, confidence=high +- **evidence:** The real /v2 dispatch slot registers op_0x144_edit_fullwidth_string_dialog@0x42bdd0. It copies both resolved string operands into 0x400-byte buffers, calls the runtime host callback g_pfnAgercHostCallback with command 10 and owner HWND, then writes both returned buffers back. A read-only Frida probe of the pristine game resolved that callback to AGERC.DLL+0x1050. Imported /support/AGERC.DLL shows agerc_dispatch_host_command@0x100025f0 opening dialog resource 10 with agerc_fullwidth_text_dialog_proc@0x10002140: edit control 1006 is initialized from operand 2; IDOK rejects more than 16 bytes (`字数オーバーです`) or any non-DBCS cell (`半角文字は使用できません`) before copying the accepted text to operand 1; IDCANCEL closes without changing operand 1. INPUTNAME's sole site at 0xdcd passes its assembled current name in both operands, then resplits operand 1 through 0x2c6/0x2c8. + +This is INPUTNAME's optional native keyboard-entry button, not the surrounding script-authored +character palette. The VM can use a synchronous host seam like the existing diagnostic dialog because +the Godot host runs script execution on its worker thread while the main thread owns the modal UI. +Compatibility requires the native full-width-only and 16-CP932-byte limits before accepting the result. + +Port status (2026-07-29): implemented. The VM issues an explicit accept/cancel request through IHost; +headless hosts preserve the inout value by default. Godot parks the VM worker, opens a main-thread modal +LineEdit, keeps it open on either native validation error, and resumes the worker only after valid accept +or cancel. Accept replaces operand 1 and cancel leaves it untouched; operand 2 is never modified. + + +### 0x148 `get-system-menu-show-delay` (get-system-menu-show-delay, argc 1) +- **summary:** (out) - return the current unsigned TIMER_SHOWMENU top-edge dwell threshold paired with opcode 0x149. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x148_get_system_menu_show_delay@0x429c70 writes EngineCtx+0x5511c to operand 1. Scene reset initializes the field to 0, opcode 0x149 replaces it, and the windowed top-edge TIMER_SHOWMENU path consumes it as an unsigned millisecond threshold. This getter is not observed in Himegari's corpus. + +Port status (2026-07-29): implemented with opcode 0x149. The getter writes the retained dword through the VM's signed integer-cell representation so high-bit values preserve the same native 32 bits. + +### 0x149 `set-system-menu-show-delay` (set-system-menu-show-delay, argc 1) +- **summary:** (milliseconds) - replace the unsigned dwell threshold before pointer hover at the top two client rows reveals AGERC's modeless system-menu strip. Scene reset defaults to 0; SYSTEM4 sets 1000. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x149_set_system_menu_show_delay@0x422050 directly stores operand 1 at EngineCtx+0x5511c; scene_context_init_reset writes 0 and paired op_0x148_get_system_menu_show_delay@0x429c70 reads it. system_menu_top_edge_dwell_timer_tick@0x486280 compares the field unsigned against timeGetTime elapsed while WM_MOUSEMOVE is in client y=0..1, then requires no left/right button, windowed ScreenMode, and g_pfnAgercHostCallback(-1)==0 before system_menu_strip_show@0x407bd0 invokes AGERC command 4. The handler uses the complete dword. SYSTEM4's sole site sets 1000 immediately before the unrelated tiled-surface edge setting. + +Port status (2026-07-29): implemented as unsigned scene-context state. The setter preserves all 32 operand bits, root scene reload restores zero, and the current Godot frontend deliberately adds no host effect because it has no AGERC application-menu strip. + +### 0x19a `get-message-skip` (u00414E50, argc 1) +- **summary:** (out) - return the current all-message skip state set by op 0x88. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x19a_get_message_skip@0x4271b0 writes ctx+0x550fc to operand 1. The shared ADV redraw routine uses it to select SO001's active Message-skip icon at x=728. + +### 0x19b `suspend-adv-skip-service` (u00414E80, argc 0) +- **summary:** () - suspend persistent/read-driven ADV fast-forward while preserving the user's all-message Skip toggle; physically held logical action 6 is independent. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x19b_suspend_adv_skip_service@0x416560 clears run-state bit 0x08000000, ctx+0x13dc active message skip, ctx+0x55100 ADV skip-service enable, and the click-cancel phase, but deliberately leaves ctx+0x550fc persistent all-message Skip unchanged. It does not mutate the input manager; adv_interpreter_tick@0x410fb0 polls logical action 6 (mask bit 0x40) independently of ctx+0x55100. Corpus comments call the opcode `savemesskip`; ADV-end/branch and CALLBACK_LOAD paths use it before leaving ADV presentation. + +This lifecycle operation affects persistent/read-driven active Skip only. Physical logical action 6 is process input polled independently by adv_interpreter_tick and remains active while held. + +### 0x19c `resume-adv-skip-service` (u00414EC0, argc 0) +- **summary:** () - enable the persistent/read ADV skip service and recompute active fast-forward from all-message Skip or the live read-skip channel; physical action 6 remains independent. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x19c_resume_adv_skip_service@0x4165a0 sets ctx+0x55100, clears the click-cancel phase, and normally activates run-state bit 0x08000000 when ctx+0x550fc persistent all-message Skip or ctx+0x6dbd4 adv_read_skip_state is nonzero. Otherwise it clears ctx+0x13dc and the run-state bit. A separate startup fast-forward guard at ctx+0x6f86c suppresses reactivation while active. Corpus comments call it `loadmesskip`; ADV setup, branch, and CALLBACK_LOAD paths pair it with op 0x19b. + +### 0x1b6 `get-auto-message` (u00414F60, argc 1) +- **summary:** (out) - return whether automatic message advance is enabled. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x1b6_get_auto_message@0x4271e0 writes `(ctx+0x55104 != 0)` to operand 1. FUN_00411230 consumes the same field to arm AutoMessageTime0/1 timers; the shared ADV redraw routine uses it for the active Auto icon. + +### 0x1b7 `set-auto-message` (u0041B640, argc 1) +- **summary:** (enabled) - enable or disable automatic message advance. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x1b7_set_auto_message@0x41f560 stores `(operand1 != 0)` at ctx+0x55104. SC0000's x=706 Auto button reads the current value through 0x1b6, toggles modulo 2, then writes it through this opcode. + +### 0x1b8 `get-auto-message-time` (u0041B670, argc 2) +- **summary:** (selector)(out) - read an Auto-message delay from engine configuration: selector 0 = post-voice AutoMessageTime0, selector 1 = unvoiced AutoMessageTime1. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x1b8_handler@0x427210 dispatches selector 0 to config key message:AutoMessageTime0 and selector 1 to message:AutoMessageTime1, then writes the result to operand 2. CONFIG.BIN uses it to bound the two UI settings. + +### 0x1b9 `set-auto-message-time` (u0041B710, argc 2) +- **summary:** (selector)(milliseconds) - write an Auto-message delay to engine configuration: selector 0 = post-voice AutoMessageTime0, selector 1 = unvoiced AutoMessageTime1. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x1b9_handler@0x41f5a0 dispatches selector 0/1 to config setters for message:AutoMessageTime0/1. CONFIG.BIN initializes them to 500/2000 ms and adjusts each in 500-ms steps within 500..9500. + +### 0x1bc `reset-message-voice-state` (u00415670, argc 0) +- **summary:** Reset the per-message queued-voice flag used by ADV Auto timing. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x1bc_handler@0x416c20 writes zero to ctx+0x6dbe4 (adv_auto_voice_pending). Opcode 0xc4 sets that field when voice playback is queued; adv_input_service_poll consumes it to select the post-voice AutoMessageTime0 path. + +### 0x1c7 `get-message-skip` (get-message-skip, argc 1) +- **summary:** (out) - write 1 iff ADV message-skip run-state bit 0x08000000 is set, otherwise 0. +- **grounding:** source=investigation, confidence=high +- **depended on by:** 0x20c, 0x20d, 0x21c, 0x223 +- **evidence:** Ghidra /v2: handler 0x4272b0 reads ctx+0xa0ce4 bit 0x08000000 and vm_operand_write(1, 1|0). adv_interpreter_tick@0x410fb0 first polls the configured logical-action mask; action 6 is bit 0x40 and therefore drives this transient run state from SYSTEM4's C/LeftCtrl bindings or the retained native Backspace default. Persistent op-0x88 state injects the same bit. SC0000 label_1235a ORs the result with op 0x1cc. + +### 0x1ca `set-read-message-skip` (u0041B9B0, argc 1) +- **summary:** (enabled) - set the engine setting `message:ReadTextSkip`, which skips only previously read text. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x1ca_set_read_message_skip@0x41f880 calls the engine setting interface's setter for `message:ReadTextSkip` with operand 1. SC0000's x=750 Read-message-skip button toggles the value read by op 0x1cb. + +Port status (2026-07-24): implemented as profile-lifetime engine setting state. Changing it immediately refreshes the current T1 message against the shared RT.DAT-backed ReadTextDB. + +### 0x1cb `get-read-message-skip` (u00414FD0, argc 1) +- **summary:** (out) - read the engine setting `message:ReadTextSkip`. +- **grounding:** source=investigation, confidence=high +- **evidence:** Ghidra /v2: op_0x1cb_get_read_message_skip@0x4272f0 calls the engine setting interface's getter for `message:ReadTextSkip` and writes the result to operand 1. The shared ADV redraw routine uses it for the active Read-message-skip icon. + +Port status (2026-07-24): implemented through the same profile-lifetime setting used by 0x1ca and the ADV ReadTextDB query path. + +## marker + +### 0x1a8 `instruction-marker-noop` (dev_ukn, argc 0) +- **summary:** Zero-operand structural marker. The native shared 0xaf/0x1a8 handler only records this instruction's one-dword length and returns. +- **grounding:** source=investigation, confidence=high, noop_headless=True +- **evidence:** Ghidra /v2: op_0xaf_0x1a8_handler@0x416650 writes frame_instruction_word_count=1 for the current script context and immediately returns. Himegari has 1,989 op-0x1a8 sites. The port's explicit no-op matches native behavior. + +### 0x1bf `call-end` (u004156C0, argc 0) +- **summary:** zero-arg; call->0x1bf->stmt-end — end-of-call-statement marker +- **grounding:** source=inference, confidence=med, noop_headless=True + +### 0x1d5 `cond-block` (u00415700, argc 0) +- **summary:** zero-arg; ALWAYS follows jcc — marks conditional body entry +- **grounding:** source=inference, confidence=high, noop_headless=True + +### 0x1f4 `stmt-begin` (u004160D0, argc 0) +- **summary:** zero-arg; opens scripts, pairs with stmt-end 0x1f5 +- **grounding:** source=investigation, confidence=high, noop_headless=True + +### 0x1f5 `stmt-end` (u00416120, argc 0) +- **summary:** zero-arg; precedes exit/next-stmt, pairs with 0x1f4 +- **grounding:** source=investigation, confidence=high, noop_headless=True + +### 0x21b `line-id?` (u004213E0, argc 1) +- **summary:** 1 imm; mov->0x21b->stmt-end; near save/load-messkip — likely line/stmt id, verify not msg-control +- **grounding:** source=harness, confidence=med, noop_headless=True + +## unknown + +### 0x2 `exit` (exit, argc 0) +- **summary:** — +- **grounding:** source=kelebek, confidence=med +- **evidence:** Ghidra /v2: op_0xba_sfx_start_loop@0x420290 records a 3-dword instruction, fetches channel operand 1, and calls sfx_channel_start@0x4825d0 with logical loop mode 1. The same worker receives mode 0 from op 0xb5. sound_stream_fill_quarter@0x483b70 rewinds the decoder at EOF only for mode 1. All 334 Himegari sites pass literal channel 9 immediately after op 0xb4 loads that channel. + +### 0x4 `u00417E30` (u00417E30, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x5 `ret` (ret, argc 0) +- **summary:** — +- **grounding:** source=kelebek, confidence=med + +### 0x7 `u00417F90` (u00417F90, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xa `u00424170` (u00424170, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xb `u00418090` (u00418090, argc 11) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xc `u004149E0` (u004149E0, argc 0) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xd `u004181A0` (u004181A0, argc 4) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xe `u00418200` (u00418200, argc 12) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xf `u00418300` (u00418300, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x10 `u00414A00` (u00414A00, argc 4) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x11 `u00418330` (u00418330, argc 9) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x12 `u004183F0` (u004183F0, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x13 `u00418420` (u00418420, argc 4) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x14 `u00414A20` (u00414A20, argc 0) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x15 `u00418490` (u00418490, argc 5) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x16 `u00418520` (u00418520, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x17 `u00418560` (u00418560, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x1e `u004185B0` (u004185B0, argc 8) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x1f `u00418690` (u00418690, argc 12) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x20 `u004187C0` (u004187C0, argc 6) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x26 `u00418C00` (u00418C00, argc 4) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x27 `u00418CC0` (u00418CC0, argc 4) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x28 `u00418D90` (u00418D90, argc 4) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2a `u00418E60` (u00418E60, argc 4) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2b `u00418F30` (u00418F30, argc 5) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2c `u00419010` (u00419010, argc 5) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2d `u004190A0` (u004190A0, argc 12) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2e `u004194B0` (u004194B0, argc 5) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2f `u004195A0` (u004195A0, argc 4) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x30 `u00419670` (u00419670, argc 5) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x31 `u00419750` (u00419750, argc 4) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x32 `u004197C0` (u004197C0, argc 10) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x33 `u00419900` (u00419900, argc 6) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x34 `u004199C0` (u004199C0, argc 12) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x35 `u00419AF0` (u00419AF0, argc 11) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x36 `u00419C00` (u00419C00, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x37 `u00419C90` (u00419C90, argc 11) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x38 `u00419DA0` (u00419DA0, argc 12) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x50 `add` (add, argc 3) +- **summary:** — +- **grounding:** source=kelebek, confidence=med + +### 0x51 `sub` (sub, argc 3) +- **summary:** — +- **grounding:** source=kelebek, confidence=med + +### 0x52 `mul` (mul, argc 3) +- **summary:** — +- **grounding:** source=kelebek, confidence=med + +### 0x53 `div` (div, argc 3) +- **summary:** — +- **grounding:** source=kelebek, confidence=med + +### 0x54 `mod` (mod, argc 3) +- **summary:** — +- **grounding:** source=kelebek, confidence=med + +### 0x55 `mov` (mov, argc 2) +- **summary:** — +- **grounding:** source=kelebek, confidence=med + +### 0x56 `and` (and, argc 3) +- **summary:** — +- **grounding:** source=kelebek, confidence=med + +### 0x57 `or` (or, argc 3) +- **summary:** — +- **grounding:** source=kelebek, confidence=med + +### 0x58 `sar` (sar, argc 3) +- **summary:** — +- **grounding:** source=kelebek, confidence=med + +### 0x59 `shl` (shl, argc 3) +- **summary:** — +- **grounding:** source=kelebek, confidence=med + +### 0x5a `eq` (eq, argc 3) +- **summary:** — +- **grounding:** source=kelebek, confidence=med + +### 0x5b `ne` (ne, argc 3) +- **summary:** — +- **grounding:** source=kelebek, confidence=med + +### 0x5c `lt` (lt, argc 3) +- **summary:** — +- **grounding:** source=kelebek, confidence=med + +### 0x5d `lte` (lte, argc 3) +- **summary:** — +- **grounding:** source=kelebek, confidence=med + +### 0x5e `gr` (gr, argc 3) +- **summary:** — +- **grounding:** source=kelebek, confidence=med + +### 0x5f `gre` (gre, argc 3) +- **summary:** — +- **grounding:** source=kelebek, confidence=med + +### 0x62 `u0041A360` (u0041A360, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x65 `u00414AA0` (u00414AA0, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x66 `u00414AE0` (u00414AE0, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x67 `u00414B20` (u00414B20, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x68 `u00414B60` (u00414B60, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x69 `u00414BA0` (u00414BA0, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x6a `u00414BE0` (u00414BE0, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x6b `u00414C20` (u00414C20, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x6d `u00416960` (u00416960, argc 0) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x74 `u0041AC00` (u0041AC00, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x7d `u0041AE00` (u0041AE00, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x7e `u0041AEA0` (u0041AEA0, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x81 `u0041AF30` (u0041AF30, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x82 `u0041AF80` (u0041AF80, argc 5) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x83 `u00414C90` (u00414C90, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x84 `u0041AFE0` (u0041AFE0, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x89 `u0041B2E0` (u0041B2E0, argc 4) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x8a `u0041B330` (u0041B330, argc 6) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x8c `jmp` (jmp, argc 1) +- **summary:** — +- **grounding:** source=kelebek, confidence=med + +### 0x8d `u0041BCE0` (u0041BCE0, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x8e `u0041BD60` (u0041BD60, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x91 `u0041BFB0` (u0041BFB0, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x92 `u0041C030` (u0041C030, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x95 `u0041C0C0` (u0041C0C0, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x96 `u004150C0` (u004150C0, argc 0) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xa0 `jcc` (jcc, argc 3) +- **summary:** — +- **grounding:** source=kelebek, confidence=med + +### 0xaa `u0041C270` (u0041C270, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xab `u0041C330` (u0041C330, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xac `u0041C3E0` (u0041C3E0, argc 9) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xad `u00415110` (u00415110, argc 0) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xaf `u00415480` (u00415480, argc 0) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xb0 `u0041C530` (u0041C530, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xb1 `u0041C560` (u0041C560, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xb2 `u0041C590` (u0041C590, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xb3 `u004154B0` (u004154B0, argc 0) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xbb `u0041D250` (u0041D250, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xbc `u0041D280` (u0041D280, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xbd `u00415570` (u00415570, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xbe `u004155E0` (u004155E0, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xc1 `u00415650` (u00415650, argc 0) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xc3 `u0041D390` (u0041D390, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xc9 `u00415770` (u00415770, argc 0) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xca `u004157A0` (u004157A0, argc 0) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xcb `u00415800` (u00415800, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xce `u0041E0B0` (u0041E0B0, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xcf `u00416D40` (u00416D40, argc 0) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xd1 `u00415860` (u00415860, argc 0) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xd2 `u0041E110` (u0041E110, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xd6 `u004267D0` (u004267D0, argc 6) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xd7 `u0041E1A0` (u0041E1A0, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xd8 `u0041E150` (u0041E150, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xda `u004158B0` (u004158B0, argc 6) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xfa `u00415940` (u00415940, argc 0) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xfc `u004159F0` (u004159F0, argc 0) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0xfd `u0041E2D0` (u0041E2D0, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x102 `u0041E3C0` (u0041E3C0, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x103 `u0041E4A0` (u0041E4A0, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x104 `u00415C50` (u00415C50, argc 0) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x105 `u0041E4D0` (u0041E4D0, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x106 `u00415E40` (u00415E40, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x10e `u0041E650` (u0041E650, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x10f `u0041E690` (u0041E690, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x12c `lookup-array-2d` (lookup-array-2d, argc 5) +- **summary:** — +- **grounding:** source=kelebek, confidence=med + +### 0x12d `u0041E720` (u0041E720, argc 7) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x13b `u0041F440` (u0041F440, argc 7) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x13c `u0041F7E0` (u0041F7E0, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x13d `u0041F840` (u0041F840, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x13e `u0041F8D0` (u0041F8D0, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x13f `check-bit` (check-bit, argc 3) +- **summary:** — +- **grounding:** source=kelebek, confidence=med + +### 0x145 `u00416040` (u00416040, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x146 `u0041FB40` (u0041FB40, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x147 `u0041FB80` (u0041FB80, argc 6) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x14a `u0041FD10` (u0041FD10, argc 7) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x14b `u0041FF50` (u0041FF50, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x14c `set-agerc-export` (set-agerc-export, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x14d `call-agerc-export` (call-agerc-export, argc 6) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x190 `u0041C5E0` (u0041C5E0, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x192 `set-string` (set-string, argc 2) +- **summary:** — +- **grounding:** source=kelebek, confidence=med + +### 0x196 `display-furigana` (display-furigana, argc 3) +- **summary:** — +- **grounding:** source=kelebek, confidence=med + +### 0x1a7 `comment` (comment, argc 1) +- **summary:** — +- **grounding:** source=kelebek, confidence=med + +### 0x1b1 `u0041B5C0` (u0041B5C0, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x1be `u0041D9D0` (u0041D9D0, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x1c0 `u0041DB70` (u0041DB70, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x1c2 `u0041B860` (u0041B860, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x1c3 `u0041B8A0` (u0041B8A0, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x1c4 `u00415720` (u00415720, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x1c5 `u00425800` (u00425800, argc 4) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x1c6 `u0041DD80` (u0041DD80, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x1c9 `u0041B8E0` (u0041B8E0, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x1cd `u0041A560` (u0041A560, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x1d6 `u0041DA40` (u0041DA40, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x1d7 `u0041DA80` (u0041DA80, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x1d8 `u0041DAD0` (u0041DAD0, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x1d9 `u0041DB20` (u0041DB20, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x1fc `u004205F0` (u004205F0, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x200 `u00420800` (u00420800, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x201 `u00416190` (u00416190, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x206 `u004161C0` (u004161C0, argc 7) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x209 `u00420C50` (u00420C50, argc 5) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x210 `u00420FF0` (u00420FF0, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x211 `u00421060` (u00421060, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x214 `u00421120` (u00421120, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x221 `u00421670` (u00421670, argc 4) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x225 `u00421780` (u00421780, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x226 `u004217D0` (u004217D0, argc 5) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x227 `u00421880` (u00421880, argc 6) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x22b `u00421B30` (u00421B30, argc 4) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x22e `u00421D10` (u00421D10, argc 6) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x235 `u00422100` (u00422100, argc 5) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x237 `u00422350` (u00422350, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x23e `u004228C0` (u004228C0, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x240 `u004229A0` (u004229A0, argc 4) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x244 `u00416360` (u00416360, argc 0) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x245 `u00422DA0` (u00422DA0, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x246 `u00422E10` (u00422E10, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x247 `u00416390` (u00416390, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x24a `u004163C0` (u004163C0, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x24f `u00422ED0` (u00422ED0, argc 10) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x250 `u00422F60` (u00422F60, argc 10) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x251 `u00422FF0` (u00422FF0, argc 12) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x252 `u00423000` (u00423000, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x253 `u00423019` (u00423019, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x254 `u00423049` (u00423049, argc 5) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x256 `u00423050` (u00423050, argc 5) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x257 `257` (257, argc 5) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x25a `u00423120` (u00423120, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x25b `25B` (25B, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x25c `u00423122` (u00423122, argc 8) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x25d `u00423123` (u00423123, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x25e `u00423124` (u00423124, argc 5) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x25f `u00423125` (u00423125, argc 4) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x260 `u00423126` (u00423126, argc 4) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x261 `u00423127` (u00423127, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x262 `262` (262, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x263 `263` (263, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x264 `264` (264, argc 5) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2bc `u00423020` (u00423020, argc 11) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2be `u00423140` (u00423140, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2c1 `u00425BC0` (u00425BC0, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2c2 `u00425CD0` (u00425CD0, argc 6) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2c3 `u00423200` (u00423200, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2c4 `u00416450` (u00416450, argc 0) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2c7 `u0042B5F0` (u0042B5F0, argc 4) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2c9 `2C9` (2C9, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2cc `2CC` (2CC, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2cd `2CD` (2CD, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2ce `u0042B616` (u0042B616, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2cf `u0042B617` (u0042B617, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2d0 `u0042B940` (u0042B940, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2d1 `u0042B950` (u0042B950, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2d2 `u0042B960` (u0042B960, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2d3 `u0042B970` (u0042B970, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2d5 `u0042B990` (u0042B990, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2d7 `u0042B9B0` (u0042B9B0, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2d8 `set-array-to` (set-array-to, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2d9 `u0042BA30` (u0042BA30, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2da `u004234E0` (u004234E0, argc 8) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2db `u004235C0` (u004235C0, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2dc `u0042BA80` (u0042BA80, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2dd `u0042D880` (u0042D880, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2de `u0042BAC0` (u0042BAC0, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2df `u0042BAC1` (u0042BAC1, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2e0 `u0042CE0F` (u0042CE0F, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2e1 `u0042CE10` (u0042CE10, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2e2 `u0042CE11` (u0042CE11, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2e3 `u0042CE30` (u0042CE30, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2e4 `u0042CE31` (u0042CE31, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2e5 `u0042CE50` (u0042CE50, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2e6 `u0042CE60` (u0042CE60, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2e7 `u0042CE70` (u0042CE70, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2e8 `u0042CE80` (u0042CE80, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2e9 `u0042CE90` (u0042CE90, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2ea `u0042CEA0` (u0042CEA0, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2eb `u0042CEB0` (u0042CEB0, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2ec `u0042CEC0` (u0042CEC0, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2ee `u0042CEC2` (u0042CEC2, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2ef `u0042CEC3` (u0042CEC3, argc 11) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2f0 `u0042CEC4` (u0042CEC4, argc 9) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2f1 `u0042CEC5` (u0042CEC5, argc 7) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2f2 `u0042CEC6` (u0042CEC6, argc 6) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2f3 `2F3` (2F3, argc 6) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2f4 `2F4` (2F4, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2f5 `2F5` (2F5, argc 4) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2f6 `2F6` (2F6, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2f7 `2F7` (2F7, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2f8 `2F8` (2F8, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2f9 `2F9` (2F9, argc 7) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2fa `2FA` (2FA, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2fb `2FB` (2FB, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2fc `2FC` (2FC, argc 5) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2fd `2FD` (2FD, argc 6) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2fe `2FE` (2FE, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x2ff `2FF` (2FF, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x300 `300` (300, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x301 `301` (301, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x302 `302` (302, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x303 `303` (303, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x304 `304` (304, argc 0) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x305 `305` (305, argc 0) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x306 `306` (306, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x307 `307` (307, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x308 `308` (308, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x30a `30A` (30A, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x30c `30C` (30C, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x320 `u0043AA20` (u0043AA20, argc 10) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x321 `u0043AA30` (u0043AA30, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x322 `u0043AA40` (u0043AA40, argc 4) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x323 `u0043AA50` (u0043AA50, argc 5) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x324 `u0043AA60` (u0043AA60, argc 0) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x325 `u0043AA70` (u0043AA70, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x326 `u0043AA80` (u0043AA80, argc 4) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x327 `u0043AA90` (u0043AA90, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x328 `u0043AAA0` (u0043AAA0, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x329 `u0043AAB0` (u0043AAB0, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x32a `32A` (32A, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x32b `u0043AAD0` (u0043AAD0, argc 0) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x32c `u0043AAE0` (u0043AAE0, argc 6) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x32d `u0043AAF0` (u0043AAF0, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x32e `u0043AB10` (u0043AB10, argc 11) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x32f `u0043AB11` (u0043AB11, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x330 `u0043AB12` (u0043AB12, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x332 `u0043AB14` (u0043AB14, argc 4) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x334 `u0043AB16` (u0043AB16, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x335 `u0043AB17` (u0043AB17, argc 4) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x337 `u0043AB19` (u0043AB19, argc 4) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x33b `u0043AB1D` (u0043AB1D, argc 4) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x33d `u0043AB1E` (u0043AB1E, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x33e `u0043AB1F` (u0043AB1F, argc 5) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x33f `u0043AB20` (u0043AB20, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=low +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x340 `340` (340, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x341 `341` (341, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x342 `342` (342, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x344 `344` (344, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x345 `345` (345, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x349 `349` (349, argc 4) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x34d `34D` (34D, argc 6) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x34e `34E` (34E, argc 4) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x352 `352` (352, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x353 `353` (353, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x354 `354` (354, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x358 `358` (358, argc 5) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x35a `35A` (35A, argc 5) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x35b `35B` (35B, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x35c `35C` (35C, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x35d `35D` (35D, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x35f `35F` (35F, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x360 `360` (360, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x361 `361` (361, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x363 `363` (363, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x364 `364` (364, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x384 `384` (384, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x386 `386` (386, argc 11) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x387 `387` (387, argc 8) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x388 `388` (388, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x389 `389` (389, argc 6) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x38f `38F` (38F, argc 6) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x390 `390` (390, argc 7) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x391 `391` (391, argc 2) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x392 `392` (392, argc 1) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x393 `393` (393, argc 6) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x396 `396` (396, argc 5) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x398 `398` (398, argc 3) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x399 `399` (399, argc 7) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + +### 0x39b `39B` (39B, argc 5) +- **summary:** Broader AGE-catalog compatibility stub; the port currently traces and skips it. +- **grounding:** source=kelebek, confidence=med +- **evidence:** Not observed in Himegari's script corpus; ABI label/argc come from Kelebek's AGE table. + diff --git a/docs/platform-portability.md b/docs/platform-portability.md index 0820e90..d9c25ad 100644 --- a/docs/platform-portability.md +++ b/docs/platform-portability.md @@ -55,7 +55,7 @@ claiming portable exports. | Game-install, runtime metadata, and repository discovery | `GameRootSelection` accepts `--game-root`, then probes the executable directory and current working directory for `SYS4INI.BIN`; on Unix the frontend prefers inherited shell `PWD` because Godot may change the process directory during project startup. Godot injects the selected root into its catalog and loose-first ALF store. `Himegari.csproj` embeds generated `build/opcodes.json`, and the frontend loads that assembly resource rather than `Paths.OpcodesJson`. `Paths.cs` remains a development/test locator; its page-map use is compiled only for `TOOLS` builds | Installed game data and packaged VM metadata no longer depend on the workspace sibling layout. The Linux export passed an explicit absolute game root outside the repository and read the installed archives. Exported automatic page maps use `user://diagnostics/page-maps`; editor/development runs preserve `build/page-map-.jsonl` | Let the future profile launcher pass `--game-root`, and run executable-directory/CWD plus case/permission smoke gates on Linux and macOS | | Archive parity oracle | One integration test launches `bin/BinExtractALF.exe` | Windows-only test helper, not a shipped runtime dependency | Skip/replace on non-Windows CI; runtime ALF/AAI readers do not depend on it | | Native RE tools | Frida/Ghidra helpers target the original `AGE.EXE`; supporting utilities include Windows executables and Windows command conventions | Development/research only | Keep separate from export requirements; document platform prerequisites per tool | -| Python workflow | Operating guide uses Windows `py -3.11` invocation | Developer workflow only | Add equivalent `python3` instructions if non-Windows development becomes active | +| Python workflow and core CI | The operating guide uses Windows `py -3.11`; `validate.py` launches child tools through `sys.executable` and has POSIX process-group cleanup plus `ps`-based leak auditing | The asset-independent core gate is platform-neutral. Tracked generated references and the engine solution/project files now have canonical LF blobs, so Linux regeneration and a fresh checkout do not acquire EOL-only drift | Run the first hosted gate on Linux with an explicitly provisioned Python 3.11 interpreter and `python -X utf8 tools/validate.py --level core`; keep private corpus and Godot runtime phases outside public CI | No authored runtime code currently calls native DirectSound, Direct3D, Vulkan, Metal, or OpenGL. Mentions of those APIs in `docs/engine-re.md` describe the original AGE implementation. Both the software-oracle display diff --git a/docs/remake-architecture-and-roadmap.md b/docs/remake-architecture-and-roadmap.md index 47dea33..1846bdd 100644 --- a/docs/remake-architecture-and-roadmap.md +++ b/docs/remake-architecture-and-roadmap.md @@ -912,6 +912,14 @@ do not mix mechanical moves with semantic changes. gate remain green under the tracked policy. Item 2, a CI workflow calling that same core gate, is the next safe slice. + **Linux CI preparation (2026-08-03):** the eight legacy text blobs that prevented a clean Linux checkout or + generated-reference comparison are now deliberately normalized to canonical LF: the engine solution, three + engine project files, three generated Markdown references, and the generated Himegari opcode module. The + generated files are once again ordinary text under the repository EOL policy; their existing whitespace + exceptions do not disable normalization. Regeneration through all three owning tools is clean, Windows core + validation remains green, and a Linux Git comparison reports no unstaged EOL drift. The first hosted CI job + can therefore target Linux rather than carrying forward a Windows-runner dependency. + **Not cleanup targets:** generated `build/` output, the two intentional solution files, historical `docs/superpowers/` plans/specifications, and fidelity-specific complexity that is directly covered by the native ABI. Reorganization is successful when ownership and reproduction become clearer, not when the raw @@ -1259,8 +1267,9 @@ layer's rendering diverges from ADV; save layout. ## 8. Immediate next step Continue step 5 of the **codebase consolidation** maintenance slice with an asset-independent CI workflow that -invokes `py -3.11 -X utf8 tools/validate.py --level core` on Windows using the tracked .NET SDK policy. Keep the -private game corpus and Godot runtime out of the hermetic CI job, preserve the validation driver's failure and -child-process semantics, and avoid introducing a second build/test command path. +provisions Python 3.11 and the `global.json` .NET SDK on Linux, then invokes +`python -X utf8 tools/validate.py --level core`. Keep the private game corpus and Godot runtime out of the +hermetic CI job, preserve the validation driver's failure and POSIX child-process semantics, and avoid +introducing a second build/test command path. Concrete playthrough blockers may still preempt this bounded maintenance work; the consolidation effort does not replace Phase B gameplay validation or the open cross-platform gates. diff --git a/engine/Age.Cli/Age.Cli.csproj b/engine/Age.Cli/Age.Cli.csproj index 1e7f822..4cc68a7 100644 --- a/engine/Age.Cli/Age.Cli.csproj +++ b/engine/Age.Cli/Age.Cli.csproj @@ -1,14 +1,14 @@ - - - - - - - - Exe - net8.0 - enable - enable - - - + + + + + + + + Exe + net8.0 + enable + enable + + + diff --git a/engine/Age.Engine.Tests/Age.Engine.Tests.csproj b/engine/Age.Engine.Tests/Age.Engine.Tests.csproj index d22ec7e..929f2db 100644 --- a/engine/Age.Engine.Tests/Age.Engine.Tests.csproj +++ b/engine/Age.Engine.Tests/Age.Engine.Tests.csproj @@ -1,29 +1,29 @@ - - - - net8.0 - enable - enable - - false - true - - - - - - - - - - - - - + + + + net8.0 + enable + enable + + false + true + + + + + + + + + + + + + - - + + diff --git a/engine/Age.Engine/Age.Engine.csproj b/engine/Age.Engine/Age.Engine.csproj index 880e720..d8b6c4e 100644 --- a/engine/Age.Engine/Age.Engine.csproj +++ b/engine/Age.Engine/Age.Engine.csproj @@ -1,13 +1,13 @@ - - - - net8.0 - enable - enable - - - - - - - + + + + net8.0 + enable + enable + + + + + + + diff --git a/engine/AgeEngine.sln b/engine/AgeEngine.sln index 523b022..5859dcd 100644 --- a/engine/AgeEngine.sln +++ b/engine/AgeEngine.sln @@ -1,46 +1,46 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Age.Engine", "Age.Engine\Age.Engine.csproj", "{DD04FB21-F83D-4547-BBEC-97295F30623A}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Age.Engine.Frontend", "Age.Engine.Frontend\Age.Engine.Frontend.csproj", "{2B018D3E-4057-465E-89CB-4CC77FDD60E2}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Age.Cli", "Age.Cli\Age.Cli.csproj", "{795573A0-A283-4A28-B26C-606C1AA5E1FE}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Age.Engine.Tests", "Age.Engine.Tests\Age.Engine.Tests.csproj", "{2ED171C8-DA87-40FD-A6FB-3B3F6501029F}" -EndProject +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Age.Engine.Tests", "Age.Engine.Tests\Age.Engine.Tests.csproj", "{2ED171C8-DA87-40FD-A6FB-3B3F6501029F}" +EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Age.Engine.Text.Windows", "Age.Engine.Text.Windows\Age.Engine.Text.Windows.csproj", "{74F3B4B8-5F8D-45F4-AA6B-7C2C1A54CB90}" EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {DD04FB21-F83D-4547-BBEC-97295F30623A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DD04FB21-F83D-4547-BBEC-97295F30623A}.Debug|Any CPU.Build.0 = Debug|Any CPU +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {DD04FB21-F83D-4547-BBEC-97295F30623A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DD04FB21-F83D-4547-BBEC-97295F30623A}.Debug|Any CPU.Build.0 = Debug|Any CPU {DD04FB21-F83D-4547-BBEC-97295F30623A}.Release|Any CPU.ActiveCfg = Release|Any CPU {DD04FB21-F83D-4547-BBEC-97295F30623A}.Release|Any CPU.Build.0 = Release|Any CPU {2B018D3E-4057-465E-89CB-4CC77FDD60E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2B018D3E-4057-465E-89CB-4CC77FDD60E2}.Debug|Any CPU.Build.0 = Debug|Any CPU {2B018D3E-4057-465E-89CB-4CC77FDD60E2}.Release|Any CPU.ActiveCfg = Release|Any CPU {2B018D3E-4057-465E-89CB-4CC77FDD60E2}.Release|Any CPU.Build.0 = Release|Any CPU - {795573A0-A283-4A28-B26C-606C1AA5E1FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {795573A0-A283-4A28-B26C-606C1AA5E1FE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {795573A0-A283-4A28-B26C-606C1AA5E1FE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {795573A0-A283-4A28-B26C-606C1AA5E1FE}.Release|Any CPU.Build.0 = Release|Any CPU - {2ED171C8-DA87-40FD-A6FB-3B3F6501029F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2ED171C8-DA87-40FD-A6FB-3B3F6501029F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2ED171C8-DA87-40FD-A6FB-3B3F6501029F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2ED171C8-DA87-40FD-A6FB-3B3F6501029F}.Release|Any CPU.Build.0 = Release|Any CPU + {795573A0-A283-4A28-B26C-606C1AA5E1FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {795573A0-A283-4A28-B26C-606C1AA5E1FE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {795573A0-A283-4A28-B26C-606C1AA5E1FE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {795573A0-A283-4A28-B26C-606C1AA5E1FE}.Release|Any CPU.Build.0 = Release|Any CPU + {2ED171C8-DA87-40FD-A6FB-3B3F6501029F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2ED171C8-DA87-40FD-A6FB-3B3F6501029F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2ED171C8-DA87-40FD-A6FB-3B3F6501029F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2ED171C8-DA87-40FD-A6FB-3B3F6501029F}.Release|Any CPU.Build.0 = Release|Any CPU {74F3B4B8-5F8D-45F4-AA6B-7C2C1A54CB90}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {74F3B4B8-5F8D-45F4-AA6B-7C2C1A54CB90}.Debug|Any CPU.Build.0 = Debug|Any CPU {74F3B4B8-5F8D-45F4-AA6B-7C2C1A54CB90}.Release|Any CPU.ActiveCfg = Release|Any CPU {74F3B4B8-5F8D-45F4-AA6B-7C2C1A54CB90}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + EndGlobalSection +EndGlobal diff --git a/tools/age_opcodes_himegari.py b/tools/age_opcodes_himegari.py index e12e5da..e273e63 100644 --- a/tools/age_opcodes_himegari.py +++ b/tools/age_opcodes_himegari.py @@ -1,89 +1,89 @@ -# DO NOT EDIT -- generated from vm-map/opcodes.toml by tools/opcodes_build.py --build - -"""Inferred Himegari opcode semantics (generated). sys4load reads INFERRED[op]['name'].""" -from __future__ import annotations - -INFERRED: dict[int, dict] = { - 0x21: dict(name='fade-surface-in-from-black', category='draw', noop=False, confidence='high', source='investigation', summary='(surface_slot)(timing_argument) — block while fading from black to a captured full-frame surface. The captured surface remains the terminal frame.'), - 0x22: dict(name='fade-surface-out-to-black', category='draw', noop=False, confidence='high', source='investigation', summary='(surface_slot)(timing_argument) — block while fading a captured full-frame surface to black. Black remains the terminal frame.'), - 0x23: dict(name='fade-surface-in-from-white', category='draw', noop=False, confidence='high', source='investigation', summary='(surface_slot)(timing_argument) — broader-AGE mode-2 sibling of 0x21: block while fading from white to a captured full-frame surface.'), - 0x24: dict(name='fade-surface-out-to-white', category='draw', noop=False, confidence='high', source='investigation', summary='(surface_slot)(timing_argument) — broader-AGE mode-3 sibling of 0x22: block while fading a captured full-frame surface to white.'), - 0x25: dict(name='crossfade-surfaces', category='draw', noop=False, confidence='high', source='investigation', summary='(source_surface)(target_surface)(interval_argument) — blocking legacy full-frame mode-4 alpha transition. The native engine composites the captured target surface over the captured source while an 8-bit alpha accumulator advances from 0 to 256.'), - 0x60: dict(name='random-modulo', category='compute', noop=False, confidence='high', source='investigation', summary="(destination)(bound) — write CRT rand() % bound. A bound of zero first writes zero and then raises the engine's script error."), - 0x6c: dict(name='zero-int-range', category='compute', noop=False, confidence='high', source='investigation', summary='(destination)(count) — write logical integer zero to count consecutive VM cells beginning at the resolved destination.'), - 0x7b: dict(name='coroutine-save-yield-handlers', category='control', noop=False, confidence='high', source='investigation', summary='(handler1_pc)(handler2_pc) — scene-coroutine: save the two per-frame yield/resume handler PCs. Native writes op1→ctx[0x6da88+idx*4], op2→ctx[0x6db28+idx*4] (idx=ctx[0x53d14] script-context index); its generic handler prologue records the 5-dword instruction length. SC0000 0x79: `0x7b label_3c9 label_41e` registers the ADV per-frame render→poll→yield handlers. Part of the scene-coroutine framework (see engine-re.md §Scene-coroutine framework); pairs with 0x7c (resume) + 0x140 (loop iterator).'), - 0x7c: dict(name='coroutine-resume', category='control', noop=False, confidence='high', source='investigation', summary='() — scene-coroutine RESUME point. Native requires run-state bit 0x2000000 (ctx[0x6dbc8]) set — THROWS (__CxxThrowException) if unset, so it is only ever reached on a scheduler-driven re-entry, NEVER on a cold first pass (cold flow jmps over it). Restores PC=ctx[0x53d28]+ctx[0x6dbcc]*4, clears the run-bit (ctx+0xa0ce4 &= ~0x2000000), resets input/line state. SC0000 0x443 (falls into the main loop label_444). See engine-re.md §Scene-coroutine framework.'), - 0x7f: dict(name='get-message-glyph-delay', category='adv', noop=False, confidence='high', source='investigation', summary='(out) - read the current per-glyph ADV text reveal delay in milliseconds.'), - 0x80: dict(name='set-default-gfx-object-slot', category='draw', noop=False, confidence='high', source='investigation', summary='(slot) - select the retained graphics-object slot used when op 0x1d9 receives explicit slot zero.'), - 0x86: dict(name='set-cursor-resource', category='input', noop=False, confidence='high', source='investigation', summary='(resource_id) - load an indexed cursor asset and install it as the active custom cursor.'), - 0x87: dict(name='clear-cursor-resource', category='input', noop=False, confidence='high', source='investigation', summary='Clear the active custom cursor and refresh the OS cursor when the game window is active.'), - 0x88: dict(name='set-message-skip', category='input', noop=False, confidence='high', source='investigation', summary='(enabled) - set persistent all-message Skip state. Nonzero makes the interpreter inject ADV fast-forward input every tick; zero stops injection and clears the transient skip run-state bit.'), - 0x8b: dict(name='set-text-line-spacing', category='adv', noop=False, confidence='high', source='investigation', summary='(pixels) - set the extra pixel spacing added between text lines.'), - 0x90: dict(name='register-hotspot-callbacks', category='input', noop=True, confidence='high', source='investigation', summary="(x)(y)(w)(h)(on_enter_pc)(on_leave_pc)(on_activate_pc) - append an inclusive cursor rectangle and three callback PCs to the current script frame's native input registry. This opcode only registers; the ADV input service dispatches callbacks later."), - 0x93: dict(name='cancel-hotspot-wait', category='input', noop=True, confidence='high', source='investigation', summary="Reset the current frame's hotspot registry/input wait and clear native run-state bit 0x00800000. Used before opening History, Menu, or HIDEWIN flows."), - 0x94: dict(name='arm-hotspot-wait', category='input', noop=True, confidence='high', source='investigation', summary='Arm native hotspot input processing after the script has registered its rectangles.'), - 0x97: dict(name='bind-hotspot-key', category='input', noop=True, confidence='high', source='investigation', summary='(x)(y)(w)(h)(logical_action) - find the already-registered rectangle with identical bounds and bind a logical input action to its activation callback.'), - 0xb4: dict(name='sfx-load', category='audio', noop=False, confidence='high', source='investigation', summary="(packed_raw_resource_id)(channel) — synchronously open the universal SYS4INI/AAI catalog entry and replace the channel's decoded sound buffer without starting playback. A zero high byte is a raw SYS4INI index; a nonzero high byte selects an append catalog and uses the low 24-bit index. Native manager supports channels 0..12; SC0000 uses 0..9."), - 0xb5: dict(name='sfx-start', category='audio', noop=False, confidence='high', source='investigation', summary='(channel) — start the already-loaded channel once (logical loop=false). DirectSound publishes synchronously through Play(0,0,DSBPLAY_LOOPING); the low-level flag loops only the streaming ring, while decoder EOF stops logical playback.'), - 0xb6: dict(name='sfx-release', category='audio', noop=False, confidence='high', source='investigation', summary='(channel) - stop/destroy the channel decoder and DirectSound buffer, clear its retained resource id, and leave the slot empty. Idempotent for an unused channel.'), - 0xc2: dict(name='fade-bgm', category='audio', noop=False, confidence='high', source='investigation', summary='(target_percent)(duration_ms) — block script service while linearly fading current BGM volume to 0..100%. Durations >=1000 ms use 100 steps; shorter fades use 10. Target 0 releases the current BGM source at completion.'), - 0xcc: dict(name='register-mouse-callback', category='input', noop=False, confidence='high', source='investigation', summary='(poll_interval_ms)(target_pc) - register a timed per-frame mouse callback in the current script.'), - 0xcd: dict(name='dispatch-mouse-callback', category='input', noop=False, confidence='high', source='investigation', summary='Dispatch the registered mouse callback when its polling interval elapses.'), - 0xd3: dict(name='begin-timed-callback-sequence', category='control', noop=False, confidence='high', source='investigation', summary="Clear and initialize the current script frame's timed local-callback sequence."), - 0xd4: dict(name='append-relative-timed-callbacks', category='control', noop=False, confidence='high', source='investigation', summary="Append repeated relative deadlines and their on-time/catch-up local callback targets to the current frame's timed sequence."), - 0xd5: dict(name='run-timed-callback-sequence', category='control', noop=False, confidence='high', source='investigation', summary='Start or service the frame-local timed sequence, dispatching scheduled local callbacks through the penultimate entry and selecting the catch-up target when the following deadline is already late.'), - 0xd9: dict(name='clear-run-state-0x1000', category='control', noop=True, confidence='high', source='investigation', summary='Clear native run/service bit 0x1000; if the secondary context is active, clear the same bit there. SC0000 executes it once after the initial SFX-channel reset, with no VM-visible result.'), - 0xfb: dict(name='register-joy-callback', category='input', noop=False, confidence='high', source='investigation', summary='(input_index)(target_pc) - register one of 32 per-frame joy/input callback targets.'), - 0xfe: dict(name='set-input-action-count', category='input', noop=False, confidence='high', source='investigation', summary='(count) - set the logical action scan bound; op 0x100 uses callback slot count itself when the polled mask is empty.'), - 0xff: dict(name='poll-joy-callback-input', category='input', noop=False, confidence='high', source='investigation', summary='Poll the configured keyboard/mouse/joystick action mask and initialize the op 0x100 dispatch scan.'), - 0x100: dict(name='dispatch-joy-callbacks', category='input', noop=False, confidence='high', source='investigation', summary='Dispatch each set logical action below the configured count, or callback slot count when no action is held.'), - 0x101: dict(name='reset-message-skip-input', category='input', noop=False, confidence='med', source='investigation', summary="Reset transient message-skip/input service state after an ADV chrome action without clearing op 0x88's persistent all-message Skip flag."), - 0x107: dict(name='map-joystick-button', category='input', noop=False, confidence='high', source='investigation', summary='(button_slot)(physical_button) - map a logical button slot to a physical joystick button; slot N emits logical action N+4.'), - 0x108: dict(name='get-mouse-button-state', category='input', noop=False, confidence='high', source='investigation', summary='(out) - return the current mouse-button state bitmask.'), - 0x109: dict(name='get-cursor-virtual', category='input', noop=False, confidence='high', source='investigation', summary="(out_x)(out_y) - read the OS cursor and convert it into AGE's virtual-screen coordinates."), - 0x10a: dict(name='set-cursor-virtual', category='input', noop=False, confidence='high', source='investigation', summary='(x)(y) - convert AGE virtual-screen coordinates to client/screen coordinates and move the OS cursor.'), - 0x10b: dict(name='map-mouse-button', category='input', noop=False, confidence='high', source='investigation', summary='(button_slot)(physical_button) - map a physical mouse button to a logical button slot; polling emits the slot as logical action slot+4.'), - 0x10c: dict(name='map-keyboard-scancode', category='input', noop=False, confidence='high', source='investigation', summary='(action)(dik_scan_code) - map a DirectInput keyboard scan code to a logical input action.'), - 0x10d: dict(name='consume-mouse-wheel-delta', category='input', noop=False, confidence='high', source='investigation', summary='(out) - return the accumulated signed mouse-wheel delta and clear it.'), - 0x13a: dict(name='register-numeric-glyph-style', category='draw', noop=False, confidence='high', source='investigation', summary='Register a decimal-glyph atlas style as (surface slot, source x/y, digit width/height); the handler admits style indices 0..10.'), - 0x140: dict(name='coroutine-label-yield', category='control', noop=False, confidence='med', source='investigation', summary="(out)(name_str)(sub_str)(in) — scene-coroutine LOOP ITERATOR / labeled yield. Handler copies name/sub strings + the int operand and calls AGERC host command 8 through g_pfnAgercHostCallback(8, ctx[0x54fe8], &{name,sub,in}); writes the returned PC-like value to operand 1. In SC0000 label_462 'ループ開始' (@0x46d): `out=G[0x6be]=LABEL('J',G[0x6be])`; loop runs the intro-setup body (incl. call label_125bd = slot-table fill G[0x3239..0x324e]=4..11) and jmps back until out==G[0x6c3] (a per-scene exit-PC immediate) → mov aba5c 0 → content. The gate G[0xaba5c]==1 that opens this loop is NATIVE scene-entry state (no script sets it to 1). PORT = HOST-MODEL IMPLEMENTED: synthesize the ADV scene-entry gate, run the LABEL/J setup body once, then return the structurally discovered per-scene terminal; do not emulate the service dialog. See engine-re.md §Scene-coroutine framework."), - 0x143: dict(name='run-mounted-append-autoruns', category='control', noop=False, confidence='high', source='investigation', summary='() - enqueue record zero from every mounted nonzero AAI selector in ascending selector order, then execute those packed scripts serially before resuming the caller.'), - 0x199: dict(name='yield-adv-coroutine', category='control', noop=False, confidence='high', source='investigation', summary='Yield/re-enter the registered ADV coroutine handler. The fifth standard chrome button uses this transition to enter the HIDEWIN/window-hidden flow.'), - 0x19a: dict(name='get-message-skip', category='input', noop=False, confidence='high', source='investigation', summary='(out) - return the current all-message skip state set by op 0x88.'), - 0x19b: dict(name='suspend-adv-skip-service', category='input', noop=False, confidence='high', source='investigation', summary="() - suspend persistent/read-driven ADV fast-forward while preserving the user's all-message Skip toggle; physically held logical action 6 is independent."), - 0x19c: dict(name='resume-adv-skip-service', category='input', noop=False, confidence='high', source='investigation', summary='() - enable the persistent/read ADV skip service and recompute active fast-forward from all-message Skip or the live read-skip channel; physical action 6 remains independent.'), - 0x1a6: dict(name='half-byte-string-length', category='compute', noop=False, confidence='high', source='investigation', summary="Write half the resolved string's byte length, using integer truncation."), - 0x1a8: dict(name='instruction-marker-noop', category='marker', noop=True, confidence='high', source='investigation', summary="Zero-operand structural marker. The native shared 0xaf/0x1a8 handler only records this instruction's one-dword length and returns."), - 0x1b2: dict(name='append-diagnostic-value', category='control', noop=False, confidence='high', source='investigation', summary="Format operand 1 with AGE's generic operand-to-string conversion and append its exact bytes to the context diagnostic accumulator. This does not present or clear the accumulated text."), - 0x1b3: dict(name='append-diagnostic-newline', category='control', noop=False, confidence='high', source='investigation', summary='Append the literal CRLF byte pair to the context diagnostic accumulator without presenting or clearing it.'), - 0x1b4: dict(name='show-and-clear-diagnostic', category='control', noop=False, confidence='high', source='investigation', summary='Show the accumulated text plus native script-location context in a synchronous owner-window information message box, then erase the complete accumulator.'), - 0x1b5: dict(name='set-message-glyph-delay', category='adv', noop=False, confidence='high', source='investigation', summary='(milliseconds) - set the per-glyph ADV text reveal delay; zero makes retained UI text publish immediately.'), - 0x1b6: dict(name='get-auto-message', category='input', noop=False, confidence='high', source='investigation', summary='(out) - return whether automatic message advance is enabled.'), - 0x1b7: dict(name='set-auto-message', category='input', noop=False, confidence='high', source='investigation', summary='(enabled) - enable or disable automatic message advance.'), - 0x1b8: dict(name='get-auto-message-time', category='input', noop=False, confidence='high', source='investigation', summary='(selector)(out) - read an Auto-message delay from engine configuration: selector 0 = post-voice AutoMessageTime0, selector 1 = unvoiced AutoMessageTime1.'), - 0x1b9: dict(name='set-auto-message-time', category='input', noop=False, confidence='high', source='investigation', summary='(selector)(milliseconds) - write an Auto-message delay to engine configuration: selector 0 = post-voice AutoMessageTime0, selector 1 = unvoiced AutoMessageTime1.'), - 0x1bc: dict(name='reset-message-voice-state', category='input', noop=False, confidence='high', source='investigation', summary='Reset the per-message queued-voice flag used by ADV Auto timing.'), - 0x1bd: dict(name='play-history-voice', category='audio', noop=False, confidence='high', source='investigation', summary='Replay a voice id selected from retained ADV text history using native playback/history variant 1, preserving normal Skip and Auto-voice state behavior.'), - 0x1bf: dict(name='call-end', category='marker', noop=True, confidence='med', source='inference', summary='zero-arg; call->0x1bf->stmt-end — end-of-call-statement marker'), - 0x1ca: dict(name='set-read-message-skip', category='input', noop=False, confidence='high', source='investigation', summary='(enabled) - set the engine setting `message:ReadTextSkip`, which skips only previously read text.'), - 0x1cb: dict(name='get-read-message-skip', category='input', noop=False, confidence='high', source='investigation', summary='(out) - read the engine setting `message:ReadTextSkip`.'), - 0x1ce: dict(name='set-adv-wait-indicator-enabled', category='adv', noop=False, confidence='high', source='investigation', summary='(enabled) - explicitly start or stop the animated ADV input-wait indicator service.'), - 0x1d1: dict(name='render-text-history', category='adv', noop=False, confidence='high', source='investigation', summary='(layout_slot)(record_index)(flags)(color_a)(color_b) - render retained ADV text records into a selected text layout/surface.'), - 0x1d5: dict(name='cond-block', category='marker', noop=True, confidence='high', source='inference', summary='zero-arg; ALWAYS follows jcc — marks conditional body entry'), - 0x1f4: dict(name='stmt-begin', category='marker', noop=True, confidence='high', source='investigation', summary='zero-arg; opens scripts, pairs with stmt-end 0x1f5'), - 0x1f5: dict(name='stmt-end', category='marker', noop=True, confidence='high', source='investigation', summary='zero-arg; precedes exit/next-stmt, pairs with 0x1f4'), - 0x1fd: dict(name='gfx-set-scale-current', category='draw', noop=False, confidence='high', source='investigation', summary="(handle)(scale_x_percent)(scale_y_percent)(scale_z_percent) — immediately replace the retained object's current scale matrix at obj+0x6c. The handler divides each integer operand by 100.0 before calling matrix4_make_scale; this is distinct from 0x21e's delayed one-shot target scale."), - 0x1ff: dict(name='set-current-translation', category='draw', noop=False, confidence='high', source='investigation', summary="0x1ff (handle)(x)(y)(z) — immediately replace the retained object's current translation matrix at obj+0x16c. This is the direct-current companion to 0x220's delayed target at obj+0x1ac."), - 0x205: dict(name='draw-formatted-integer', category='draw', noop=False, confidence='high', source='investigation', summary='Format an integer into a fixed-width decimal field and rasterize it immediately into a numbered graphics surface using the current font/color/effect state.'), - 0x20a: dict(name='publish-adv-text-layout', category='adv', noop=False, confidence='high', source='investigation', summary='(layout_slot) - republish one ADV text layout and, while active, its current wait-indicator frame.'), - 0x21b: dict(name='line-id?', category='marker', noop=True, confidence='med', source='harness', summary='1 imm; mov->0x21b->stmt-end; near save/load-messkip — likely line/stmt id, verify not msg-control'), - 0x228: dict(name='query-gfx-translation-target', category='draw', noop=False, confidence='high', source='investigation', summary='0x228 query translation target (succ)(handle)(outX)(outY)(outZ): clone the retained object, decompose its target translation matrix at obj+0x17c, and return matrix translation obj+0x1ac/+0x1b0/+0x1b4. Returns succ=0 when found; when absent, writes succ=1 and leaves outputs untouched. The C# VM queries TranslationTarget independently of V24. See docs/engine-re.md §SC0000 anim cluster.'), - 0x22f: dict(name='set-gfx-position-current', category='draw', noop=False, confidence='high', source='investigation', summary="(handle)(control)(x)(y)(z) — set the object's current/base translation matrix. The native worker also retains operand 2 as channel control state; the port currently applies x/y/z but ignores that control operand."), - 0x230: dict(name='reset-gfx-cyclic-animations', category='draw', noop=False, confidence='high', source='investigation', summary='(handle) — get or create a retained gfx object, clear its cyclic-animation active flag, and zero all five looping-channel start/period pairs without changing current/base transforms.'), - 0x231: dict(name='animate-gfx-srcrect-loop', category='draw', noop=False, confidence='high', source='investigation', summary="(handle)(frame_period_ms)(frame_count)(column_count) — loop row-major through the spritesheet. Every sample preserves draw-texture's source-rectangle width/height; frame=floor((shared_frame_time-object_start)/frame_period)%frame_count, src offset=(frame%columns*width, frame/columns*height). All objects use the retained manager's shared current/previous millisecond timestamps but retain their own start and period. The native consumer raises redraw dirty only when the current and previous samples select different cells. Worker gfx_worker_anim_srcrect @0x47eec0; consumer gfx_object_anim_interpolate @0x473ed0."), - 0x232: dict(name='animate-gfx-color-loop', category='draw', noop=False, confidence='high', source='investigation', summary='0x232 anim-color (handle)(period)(alpha)(color): ping-pong the temporary packed ARGB passed to the normal object blit. Handler resolves negative alpha/RGB from static color obj+0x60 and clamps alpha above 255. Blend selector obj+0x30 is unchanged: mode 0 keeps default blending (animated alpha is inert; RGB is vertex modulation), while mode 1 uses sampled ARGB alpha as the SRCALPHA scale for additive composition. Fresh static color is 0xffffffff. The C# VM resolves sentinels and consumes sampled ARGB through the unchanged mode-specific path. See docs/engine-re.md §SC0000 anim cluster.'), - 0x239: dict(name='animate-gfx-srcrect-target', category='draw', noop=False, confidence='high', source='investigation', summary='(handle)(delay_ms)(duration_ms)(frame_count)(column_count)(target_frame) — one-shot row-major source-rectangle cell channel. Worker gfx_worker_set_srcrect_cell @0x47ed90 stores timing at obj+0x48/+0x5c, layout at +0x238/+0x23c, and target at +0x234. C# currently retains the endpoint cell immediately.'), - 0x23b: dict(name='draw-decimal-glyphs', category='draw', noop=False, confidence='high', source='investigation', summary='Draw an integer as decimal glyph objects from a style registered by opcode 0x13a.'), - 0x23f: dict(name='query-surface-stop-time-ms', category='draw', noop=False, confidence='high', source='investigation', summary='(out_stop_time_ms)(surface_slot) — query the DirectShow stop position retained by a loaded movie surface, convert seconds to integer milliseconds by truncating toward zero, and write -1 when the movie slot is empty. Port-only host decoder failure is modeled as an explicitly completed, zero-duration movie.'), - 0x2c5: dict(name='byte-string-length', category='compute', noop=False, confidence='high', source='investigation', summary="Write the resolved NUL-terminated engine string's raw byte length."), -} +# DO NOT EDIT -- generated from vm-map/opcodes.toml by tools/opcodes_build.py --build + +"""Inferred Himegari opcode semantics (generated). sys4load reads INFERRED[op]['name'].""" +from __future__ import annotations + +INFERRED: dict[int, dict] = { + 0x21: dict(name='fade-surface-in-from-black', category='draw', noop=False, confidence='high', source='investigation', summary='(surface_slot)(timing_argument) — block while fading from black to a captured full-frame surface. The captured surface remains the terminal frame.'), + 0x22: dict(name='fade-surface-out-to-black', category='draw', noop=False, confidence='high', source='investigation', summary='(surface_slot)(timing_argument) — block while fading a captured full-frame surface to black. Black remains the terminal frame.'), + 0x23: dict(name='fade-surface-in-from-white', category='draw', noop=False, confidence='high', source='investigation', summary='(surface_slot)(timing_argument) — broader-AGE mode-2 sibling of 0x21: block while fading from white to a captured full-frame surface.'), + 0x24: dict(name='fade-surface-out-to-white', category='draw', noop=False, confidence='high', source='investigation', summary='(surface_slot)(timing_argument) — broader-AGE mode-3 sibling of 0x22: block while fading a captured full-frame surface to white.'), + 0x25: dict(name='crossfade-surfaces', category='draw', noop=False, confidence='high', source='investigation', summary='(source_surface)(target_surface)(interval_argument) — blocking legacy full-frame mode-4 alpha transition. The native engine composites the captured target surface over the captured source while an 8-bit alpha accumulator advances from 0 to 256.'), + 0x60: dict(name='random-modulo', category='compute', noop=False, confidence='high', source='investigation', summary="(destination)(bound) — write CRT rand() % bound. A bound of zero first writes zero and then raises the engine's script error."), + 0x6c: dict(name='zero-int-range', category='compute', noop=False, confidence='high', source='investigation', summary='(destination)(count) — write logical integer zero to count consecutive VM cells beginning at the resolved destination.'), + 0x7b: dict(name='coroutine-save-yield-handlers', category='control', noop=False, confidence='high', source='investigation', summary='(handler1_pc)(handler2_pc) — scene-coroutine: save the two per-frame yield/resume handler PCs. Native writes op1→ctx[0x6da88+idx*4], op2→ctx[0x6db28+idx*4] (idx=ctx[0x53d14] script-context index); its generic handler prologue records the 5-dword instruction length. SC0000 0x79: `0x7b label_3c9 label_41e` registers the ADV per-frame render→poll→yield handlers. Part of the scene-coroutine framework (see engine-re.md §Scene-coroutine framework); pairs with 0x7c (resume) + 0x140 (loop iterator).'), + 0x7c: dict(name='coroutine-resume', category='control', noop=False, confidence='high', source='investigation', summary='() — scene-coroutine RESUME point. Native requires run-state bit 0x2000000 (ctx[0x6dbc8]) set — THROWS (__CxxThrowException) if unset, so it is only ever reached on a scheduler-driven re-entry, NEVER on a cold first pass (cold flow jmps over it). Restores PC=ctx[0x53d28]+ctx[0x6dbcc]*4, clears the run-bit (ctx+0xa0ce4 &= ~0x2000000), resets input/line state. SC0000 0x443 (falls into the main loop label_444). See engine-re.md §Scene-coroutine framework.'), + 0x7f: dict(name='get-message-glyph-delay', category='adv', noop=False, confidence='high', source='investigation', summary='(out) - read the current per-glyph ADV text reveal delay in milliseconds.'), + 0x80: dict(name='set-default-gfx-object-slot', category='draw', noop=False, confidence='high', source='investigation', summary='(slot) - select the retained graphics-object slot used when op 0x1d9 receives explicit slot zero.'), + 0x86: dict(name='set-cursor-resource', category='input', noop=False, confidence='high', source='investigation', summary='(resource_id) - load an indexed cursor asset and install it as the active custom cursor.'), + 0x87: dict(name='clear-cursor-resource', category='input', noop=False, confidence='high', source='investigation', summary='Clear the active custom cursor and refresh the OS cursor when the game window is active.'), + 0x88: dict(name='set-message-skip', category='input', noop=False, confidence='high', source='investigation', summary='(enabled) - set persistent all-message Skip state. Nonzero makes the interpreter inject ADV fast-forward input every tick; zero stops injection and clears the transient skip run-state bit.'), + 0x8b: dict(name='set-text-line-spacing', category='adv', noop=False, confidence='high', source='investigation', summary='(pixels) - set the extra pixel spacing added between text lines.'), + 0x90: dict(name='register-hotspot-callbacks', category='input', noop=True, confidence='high', source='investigation', summary="(x)(y)(w)(h)(on_enter_pc)(on_leave_pc)(on_activate_pc) - append an inclusive cursor rectangle and three callback PCs to the current script frame's native input registry. This opcode only registers; the ADV input service dispatches callbacks later."), + 0x93: dict(name='cancel-hotspot-wait', category='input', noop=True, confidence='high', source='investigation', summary="Reset the current frame's hotspot registry/input wait and clear native run-state bit 0x00800000. Used before opening History, Menu, or HIDEWIN flows."), + 0x94: dict(name='arm-hotspot-wait', category='input', noop=True, confidence='high', source='investigation', summary='Arm native hotspot input processing after the script has registered its rectangles.'), + 0x97: dict(name='bind-hotspot-key', category='input', noop=True, confidence='high', source='investigation', summary='(x)(y)(w)(h)(logical_action) - find the already-registered rectangle with identical bounds and bind a logical input action to its activation callback.'), + 0xb4: dict(name='sfx-load', category='audio', noop=False, confidence='high', source='investigation', summary="(packed_raw_resource_id)(channel) — synchronously open the universal SYS4INI/AAI catalog entry and replace the channel's decoded sound buffer without starting playback. A zero high byte is a raw SYS4INI index; a nonzero high byte selects an append catalog and uses the low 24-bit index. Native manager supports channels 0..12; SC0000 uses 0..9."), + 0xb5: dict(name='sfx-start', category='audio', noop=False, confidence='high', source='investigation', summary='(channel) — start the already-loaded channel once (logical loop=false). DirectSound publishes synchronously through Play(0,0,DSBPLAY_LOOPING); the low-level flag loops only the streaming ring, while decoder EOF stops logical playback.'), + 0xb6: dict(name='sfx-release', category='audio', noop=False, confidence='high', source='investigation', summary='(channel) - stop/destroy the channel decoder and DirectSound buffer, clear its retained resource id, and leave the slot empty. Idempotent for an unused channel.'), + 0xc2: dict(name='fade-bgm', category='audio', noop=False, confidence='high', source='investigation', summary='(target_percent)(duration_ms) — block script service while linearly fading current BGM volume to 0..100%. Durations >=1000 ms use 100 steps; shorter fades use 10. Target 0 releases the current BGM source at completion.'), + 0xcc: dict(name='register-mouse-callback', category='input', noop=False, confidence='high', source='investigation', summary='(poll_interval_ms)(target_pc) - register a timed per-frame mouse callback in the current script.'), + 0xcd: dict(name='dispatch-mouse-callback', category='input', noop=False, confidence='high', source='investigation', summary='Dispatch the registered mouse callback when its polling interval elapses.'), + 0xd3: dict(name='begin-timed-callback-sequence', category='control', noop=False, confidence='high', source='investigation', summary="Clear and initialize the current script frame's timed local-callback sequence."), + 0xd4: dict(name='append-relative-timed-callbacks', category='control', noop=False, confidence='high', source='investigation', summary="Append repeated relative deadlines and their on-time/catch-up local callback targets to the current frame's timed sequence."), + 0xd5: dict(name='run-timed-callback-sequence', category='control', noop=False, confidence='high', source='investigation', summary='Start or service the frame-local timed sequence, dispatching scheduled local callbacks through the penultimate entry and selecting the catch-up target when the following deadline is already late.'), + 0xd9: dict(name='clear-run-state-0x1000', category='control', noop=True, confidence='high', source='investigation', summary='Clear native run/service bit 0x1000; if the secondary context is active, clear the same bit there. SC0000 executes it once after the initial SFX-channel reset, with no VM-visible result.'), + 0xfb: dict(name='register-joy-callback', category='input', noop=False, confidence='high', source='investigation', summary='(input_index)(target_pc) - register one of 32 per-frame joy/input callback targets.'), + 0xfe: dict(name='set-input-action-count', category='input', noop=False, confidence='high', source='investigation', summary='(count) - set the logical action scan bound; op 0x100 uses callback slot count itself when the polled mask is empty.'), + 0xff: dict(name='poll-joy-callback-input', category='input', noop=False, confidence='high', source='investigation', summary='Poll the configured keyboard/mouse/joystick action mask and initialize the op 0x100 dispatch scan.'), + 0x100: dict(name='dispatch-joy-callbacks', category='input', noop=False, confidence='high', source='investigation', summary='Dispatch each set logical action below the configured count, or callback slot count when no action is held.'), + 0x101: dict(name='reset-message-skip-input', category='input', noop=False, confidence='med', source='investigation', summary="Reset transient message-skip/input service state after an ADV chrome action without clearing op 0x88's persistent all-message Skip flag."), + 0x107: dict(name='map-joystick-button', category='input', noop=False, confidence='high', source='investigation', summary='(button_slot)(physical_button) - map a logical button slot to a physical joystick button; slot N emits logical action N+4.'), + 0x108: dict(name='get-mouse-button-state', category='input', noop=False, confidence='high', source='investigation', summary='(out) - return the current mouse-button state bitmask.'), + 0x109: dict(name='get-cursor-virtual', category='input', noop=False, confidence='high', source='investigation', summary="(out_x)(out_y) - read the OS cursor and convert it into AGE's virtual-screen coordinates."), + 0x10a: dict(name='set-cursor-virtual', category='input', noop=False, confidence='high', source='investigation', summary='(x)(y) - convert AGE virtual-screen coordinates to client/screen coordinates and move the OS cursor.'), + 0x10b: dict(name='map-mouse-button', category='input', noop=False, confidence='high', source='investigation', summary='(button_slot)(physical_button) - map a physical mouse button to a logical button slot; polling emits the slot as logical action slot+4.'), + 0x10c: dict(name='map-keyboard-scancode', category='input', noop=False, confidence='high', source='investigation', summary='(action)(dik_scan_code) - map a DirectInput keyboard scan code to a logical input action.'), + 0x10d: dict(name='consume-mouse-wheel-delta', category='input', noop=False, confidence='high', source='investigation', summary='(out) - return the accumulated signed mouse-wheel delta and clear it.'), + 0x13a: dict(name='register-numeric-glyph-style', category='draw', noop=False, confidence='high', source='investigation', summary='Register a decimal-glyph atlas style as (surface slot, source x/y, digit width/height); the handler admits style indices 0..10.'), + 0x140: dict(name='coroutine-label-yield', category='control', noop=False, confidence='med', source='investigation', summary="(out)(name_str)(sub_str)(in) — scene-coroutine LOOP ITERATOR / labeled yield. Handler copies name/sub strings + the int operand and calls AGERC host command 8 through g_pfnAgercHostCallback(8, ctx[0x54fe8], &{name,sub,in}); writes the returned PC-like value to operand 1. In SC0000 label_462 'ループ開始' (@0x46d): `out=G[0x6be]=LABEL('J',G[0x6be])`; loop runs the intro-setup body (incl. call label_125bd = slot-table fill G[0x3239..0x324e]=4..11) and jmps back until out==G[0x6c3] (a per-scene exit-PC immediate) → mov aba5c 0 → content. The gate G[0xaba5c]==1 that opens this loop is NATIVE scene-entry state (no script sets it to 1). PORT = HOST-MODEL IMPLEMENTED: synthesize the ADV scene-entry gate, run the LABEL/J setup body once, then return the structurally discovered per-scene terminal; do not emulate the service dialog. See engine-re.md §Scene-coroutine framework."), + 0x143: dict(name='run-mounted-append-autoruns', category='control', noop=False, confidence='high', source='investigation', summary='() - enqueue record zero from every mounted nonzero AAI selector in ascending selector order, then execute those packed scripts serially before resuming the caller.'), + 0x199: dict(name='yield-adv-coroutine', category='control', noop=False, confidence='high', source='investigation', summary='Yield/re-enter the registered ADV coroutine handler. The fifth standard chrome button uses this transition to enter the HIDEWIN/window-hidden flow.'), + 0x19a: dict(name='get-message-skip', category='input', noop=False, confidence='high', source='investigation', summary='(out) - return the current all-message skip state set by op 0x88.'), + 0x19b: dict(name='suspend-adv-skip-service', category='input', noop=False, confidence='high', source='investigation', summary="() - suspend persistent/read-driven ADV fast-forward while preserving the user's all-message Skip toggle; physically held logical action 6 is independent."), + 0x19c: dict(name='resume-adv-skip-service', category='input', noop=False, confidence='high', source='investigation', summary='() - enable the persistent/read ADV skip service and recompute active fast-forward from all-message Skip or the live read-skip channel; physical action 6 remains independent.'), + 0x1a6: dict(name='half-byte-string-length', category='compute', noop=False, confidence='high', source='investigation', summary="Write half the resolved string's byte length, using integer truncation."), + 0x1a8: dict(name='instruction-marker-noop', category='marker', noop=True, confidence='high', source='investigation', summary="Zero-operand structural marker. The native shared 0xaf/0x1a8 handler only records this instruction's one-dword length and returns."), + 0x1b2: dict(name='append-diagnostic-value', category='control', noop=False, confidence='high', source='investigation', summary="Format operand 1 with AGE's generic operand-to-string conversion and append its exact bytes to the context diagnostic accumulator. This does not present or clear the accumulated text."), + 0x1b3: dict(name='append-diagnostic-newline', category='control', noop=False, confidence='high', source='investigation', summary='Append the literal CRLF byte pair to the context diagnostic accumulator without presenting or clearing it.'), + 0x1b4: dict(name='show-and-clear-diagnostic', category='control', noop=False, confidence='high', source='investigation', summary='Show the accumulated text plus native script-location context in a synchronous owner-window information message box, then erase the complete accumulator.'), + 0x1b5: dict(name='set-message-glyph-delay', category='adv', noop=False, confidence='high', source='investigation', summary='(milliseconds) - set the per-glyph ADV text reveal delay; zero makes retained UI text publish immediately.'), + 0x1b6: dict(name='get-auto-message', category='input', noop=False, confidence='high', source='investigation', summary='(out) - return whether automatic message advance is enabled.'), + 0x1b7: dict(name='set-auto-message', category='input', noop=False, confidence='high', source='investigation', summary='(enabled) - enable or disable automatic message advance.'), + 0x1b8: dict(name='get-auto-message-time', category='input', noop=False, confidence='high', source='investigation', summary='(selector)(out) - read an Auto-message delay from engine configuration: selector 0 = post-voice AutoMessageTime0, selector 1 = unvoiced AutoMessageTime1.'), + 0x1b9: dict(name='set-auto-message-time', category='input', noop=False, confidence='high', source='investigation', summary='(selector)(milliseconds) - write an Auto-message delay to engine configuration: selector 0 = post-voice AutoMessageTime0, selector 1 = unvoiced AutoMessageTime1.'), + 0x1bc: dict(name='reset-message-voice-state', category='input', noop=False, confidence='high', source='investigation', summary='Reset the per-message queued-voice flag used by ADV Auto timing.'), + 0x1bd: dict(name='play-history-voice', category='audio', noop=False, confidence='high', source='investigation', summary='Replay a voice id selected from retained ADV text history using native playback/history variant 1, preserving normal Skip and Auto-voice state behavior.'), + 0x1bf: dict(name='call-end', category='marker', noop=True, confidence='med', source='inference', summary='zero-arg; call->0x1bf->stmt-end — end-of-call-statement marker'), + 0x1ca: dict(name='set-read-message-skip', category='input', noop=False, confidence='high', source='investigation', summary='(enabled) - set the engine setting `message:ReadTextSkip`, which skips only previously read text.'), + 0x1cb: dict(name='get-read-message-skip', category='input', noop=False, confidence='high', source='investigation', summary='(out) - read the engine setting `message:ReadTextSkip`.'), + 0x1ce: dict(name='set-adv-wait-indicator-enabled', category='adv', noop=False, confidence='high', source='investigation', summary='(enabled) - explicitly start or stop the animated ADV input-wait indicator service.'), + 0x1d1: dict(name='render-text-history', category='adv', noop=False, confidence='high', source='investigation', summary='(layout_slot)(record_index)(flags)(color_a)(color_b) - render retained ADV text records into a selected text layout/surface.'), + 0x1d5: dict(name='cond-block', category='marker', noop=True, confidence='high', source='inference', summary='zero-arg; ALWAYS follows jcc — marks conditional body entry'), + 0x1f4: dict(name='stmt-begin', category='marker', noop=True, confidence='high', source='investigation', summary='zero-arg; opens scripts, pairs with stmt-end 0x1f5'), + 0x1f5: dict(name='stmt-end', category='marker', noop=True, confidence='high', source='investigation', summary='zero-arg; precedes exit/next-stmt, pairs with 0x1f4'), + 0x1fd: dict(name='gfx-set-scale-current', category='draw', noop=False, confidence='high', source='investigation', summary="(handle)(scale_x_percent)(scale_y_percent)(scale_z_percent) — immediately replace the retained object's current scale matrix at obj+0x6c. The handler divides each integer operand by 100.0 before calling matrix4_make_scale; this is distinct from 0x21e's delayed one-shot target scale."), + 0x1ff: dict(name='set-current-translation', category='draw', noop=False, confidence='high', source='investigation', summary="0x1ff (handle)(x)(y)(z) — immediately replace the retained object's current translation matrix at obj+0x16c. This is the direct-current companion to 0x220's delayed target at obj+0x1ac."), + 0x205: dict(name='draw-formatted-integer', category='draw', noop=False, confidence='high', source='investigation', summary='Format an integer into a fixed-width decimal field and rasterize it immediately into a numbered graphics surface using the current font/color/effect state.'), + 0x20a: dict(name='publish-adv-text-layout', category='adv', noop=False, confidence='high', source='investigation', summary='(layout_slot) - republish one ADV text layout and, while active, its current wait-indicator frame.'), + 0x21b: dict(name='line-id?', category='marker', noop=True, confidence='med', source='harness', summary='1 imm; mov->0x21b->stmt-end; near save/load-messkip — likely line/stmt id, verify not msg-control'), + 0x228: dict(name='query-gfx-translation-target', category='draw', noop=False, confidence='high', source='investigation', summary='0x228 query translation target (succ)(handle)(outX)(outY)(outZ): clone the retained object, decompose its target translation matrix at obj+0x17c, and return matrix translation obj+0x1ac/+0x1b0/+0x1b4. Returns succ=0 when found; when absent, writes succ=1 and leaves outputs untouched. The C# VM queries TranslationTarget independently of V24. See docs/engine-re.md §SC0000 anim cluster.'), + 0x22f: dict(name='set-gfx-position-current', category='draw', noop=False, confidence='high', source='investigation', summary="(handle)(control)(x)(y)(z) — set the object's current/base translation matrix. The native worker also retains operand 2 as channel control state; the port currently applies x/y/z but ignores that control operand."), + 0x230: dict(name='reset-gfx-cyclic-animations', category='draw', noop=False, confidence='high', source='investigation', summary='(handle) — get or create a retained gfx object, clear its cyclic-animation active flag, and zero all five looping-channel start/period pairs without changing current/base transforms.'), + 0x231: dict(name='animate-gfx-srcrect-loop', category='draw', noop=False, confidence='high', source='investigation', summary="(handle)(frame_period_ms)(frame_count)(column_count) — loop row-major through the spritesheet. Every sample preserves draw-texture's source-rectangle width/height; frame=floor((shared_frame_time-object_start)/frame_period)%frame_count, src offset=(frame%columns*width, frame/columns*height). All objects use the retained manager's shared current/previous millisecond timestamps but retain their own start and period. The native consumer raises redraw dirty only when the current and previous samples select different cells. Worker gfx_worker_anim_srcrect @0x47eec0; consumer gfx_object_anim_interpolate @0x473ed0."), + 0x232: dict(name='animate-gfx-color-loop', category='draw', noop=False, confidence='high', source='investigation', summary='0x232 anim-color (handle)(period)(alpha)(color): ping-pong the temporary packed ARGB passed to the normal object blit. Handler resolves negative alpha/RGB from static color obj+0x60 and clamps alpha above 255. Blend selector obj+0x30 is unchanged: mode 0 keeps default blending (animated alpha is inert; RGB is vertex modulation), while mode 1 uses sampled ARGB alpha as the SRCALPHA scale for additive composition. Fresh static color is 0xffffffff. The C# VM resolves sentinels and consumes sampled ARGB through the unchanged mode-specific path. See docs/engine-re.md §SC0000 anim cluster.'), + 0x239: dict(name='animate-gfx-srcrect-target', category='draw', noop=False, confidence='high', source='investigation', summary='(handle)(delay_ms)(duration_ms)(frame_count)(column_count)(target_frame) — one-shot row-major source-rectangle cell channel. Worker gfx_worker_set_srcrect_cell @0x47ed90 stores timing at obj+0x48/+0x5c, layout at +0x238/+0x23c, and target at +0x234. C# currently retains the endpoint cell immediately.'), + 0x23b: dict(name='draw-decimal-glyphs', category='draw', noop=False, confidence='high', source='investigation', summary='Draw an integer as decimal glyph objects from a style registered by opcode 0x13a.'), + 0x23f: dict(name='query-surface-stop-time-ms', category='draw', noop=False, confidence='high', source='investigation', summary='(out_stop_time_ms)(surface_slot) — query the DirectShow stop position retained by a loaded movie surface, convert seconds to integer milliseconds by truncating toward zero, and write -1 when the movie slot is empty. Port-only host decoder failure is modeled as an explicitly completed, zero-duration movie.'), + 0x2c5: dict(name='byte-string-length', category='compute', noop=False, confidence='high', source='investigation', summary="Write the resolved NUL-terminated engine string's raw byte length."), +}