docs: propagate u00428010/op-0x1a2 correction into opcodes.toml + name-resolution

op 0x1a2 resolve-handle? -> gfx-cmd-register (verified handler FUN_0042d360, gfx
command-buffer op). name-resolution: decision->scene hop is native+unidentified, not
u00428010 (disproven). Regenerated opcode-reference + shim.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
gamer147
2026-07-07 11:47:35 -04:00
parent 1323ec8852
commit 057a26a97a
4 changed files with 16 additions and 16 deletions

View File

@@ -46,8 +46,10 @@ on disk to read. Resolving it needs one of:
**Update (2026-07-07):** SCJUMP's *decision logic* is now decoded — `(chapter_mode, guards) →
decision value` — see `docs/scjump-progression.md` and `tools/scjump_decode.py`. That confirmed
SCJUMP is not the `call-script` registry (it produces a decision value, not a script id). The
decision→scene hop itself is a **native op (`u00428010`)**, engine-level, in the same bucket as
`call-script`; both await the engine dump / Frida.
decision→scene hop is **native and still unidentified** — an earlier guess that op `u00428010`
resolved it was **disproven via Ghidra** (that op is a graphics command-buffer op; see
`docs/engine-re.md`). It's the same engine-level bucket as `call-script`; the Ghidra + MCP loop (and
its recovered opcode-dispatch table) is now the tool to crack the `call-script`/script-load handler.
---

View File

@@ -27,15 +27,13 @@
- **grounding:** source=investigation, confidence=high
- **evidence:** By-ear confirmed (2026-07-06): SC0000 prologue voices play on their lines via Godot AudioStreamPlayer. Off-by-one disproven structurally: manifest interleaves graphics/voice (files[35]=EV049AA, [36]=MAN999, [37]=EV052CA, [38]=SYL0001), so files[base+id] lands voices on OGGs while files[base+id-1] would land them on .AGF graphics (silent) -- and they play, so the offset is exactly 0. Lily's lines are correctly form-gated (G[0xa57/0xa58/0xa59]) and stay silent when no form flag is seeded -- not a bug.
## compute
### 0x1a2 `resolve-handle?` (u00428010, argc 1)
- **summary:** 1 local-ptr from lookup-array, then create-texture — resolves a looked-up resource/handle
- **grounding:** source=inference, confidence=low
- **evidence:** confirm via frida
## draw
### 0x1a2 `gfx-cmd-register` (u00428010, argc 1)
- **summary:** graphics command-buffer op: sets current gfx-object cmd-type=3 and registers a '%c%8.8x' key from operand 1
- **grounding:** source=investigation, confidence=med
- **evidence:** Ghidra: real handler FUN_0042d360 (via dispatch table ctx[0x26c93+op]); sets *(ctx+0x53d88+ctx[0x53d14]*0x78)=3, sprintf("%c%8.8x",3,op1), FUN_0042cf70. NOT save/scene (raw Kelebek VA 0x428010 drifted to op 0x1ac save handler). See docs/engine-re.md
### 0x1f7 `ui-elem?` (u00420270, argc 2)
- **summary:** 2 args; 0x420 family, pairs with 0x1fa — create/begin a UI element
- **grounding:** source=inference, confidence=med