diff --git a/docs/re/BACKLOG.md b/docs/re/BACKLOG.md index 55b6fe9..f351d27 100644 --- a/docs/re/BACKLOG.md +++ b/docs/re/BACKLOG.md @@ -6,6 +6,28 @@ unknown, what evidence exists, and what the first step would be. Move an item in --- +## ✅ SOLVED (2026-08-26) — the mission scripts are readable as dialogue + +Built-in **64** (`request_script_message`) stages a symbol-table-1 reference in +slot 0; the symbol is a message id (`MSG_VOICE_D_257`), and the caption table +holds its text under `_000_00`. **2683 of 2683** call sites across all 28 +stage scripts resolve — every one stages slot 0, every operand is type 6, every +name has text. 1338 distinct names in six families. + +This was only reachable after `build_caption_text` was switched to the IXUD +field table on 2026-08-25 (537 → 8800 lines); before that most of these names +had nothing to resolve to, which is why the item sat open. + +Write-up + tool: [`structures/isl-message-dialogue-link.md`](structures/isl-message-dialogue-link.md), +`tools/re-capture/isl_dialogue.py`. + +**Still open from this**: which *recording* plays for a line (the voice-bank +binding is unresolved and a generic take is known to play against a specific +subtitle); multi-page captions; the other five languages; and play order, since +the tool prints script order without resolving phases or branches. + +--- + ## ✅ SOLVED (2026-08-19) — the paint order is a runtime child list, not a table in the file The screen object the game builds at load time holds **two** lists of its diff --git a/docs/re/INDEX.md b/docs/re/INDEX.md index 3e3589e..11f1b62 100644 --- a/docs/re/INDEX.md +++ b/docs/re/INDEX.md @@ -94,6 +94,7 @@ files, which is how the same ground got covered twice. | [`idxd-legacy-reader-audit.md`](idxd-legacy-reader-audit.md) | The legacy IDXD string-pool reader vs the real field table — what the old numbers got wrong | 🟡 shape CONFIRMED by hand (`FCSRange`, `ShieldRatio`, hangar `Model`); disc-wide rates are single-source | | [`structures/idxd-container.md`](structures/idxd-container.md) | The IDXD/IXUD container — record/field table, and the two beliefs it withdraws | ✅ CONFIRMED disc-wide, 7 750/7 750 objects and 1 271 462/1 271 462 named fields, zero failures | | [`structures/hud-glyph-quad.md`](structures/hud-glyph-quad.md) | The HUD's glyph quad — vtable `0x820B2A64` | ✅ CONFIRMED for the object layout and the atlas size, read live off | +| [`structures/isl-message-dialogue-link.md`](structures/isl-message-dialogue-link.md) | Mission scripts as dialogue — built-in 64 -> message id -> caption text | ✅ CONFIRMED total, 2 683/2 683 call sites across all 28 stages resolve, no residue | | [`structures/mission-objective-counter.md`](structures/mission-objective-counter.md) | `REMAINING OB` — the mission's own objective counter, in RAM | ✅ CONFIRMED for one Stage 02 run: a big-endian u32 whose value | | [`structures/movie-subtitles.md`](structures/movie-subtitles.md) | Movie subtitles & the movie ↔ mission ↔ text chain | — | | [`structures/regn-map-grid.md`](structures/regn-map-grid.md) | `REGN` — a per-map spatial grid (and `MCOL` beside it) | ✅ CONFIRMED for the header, which self-checks on all 11 objects on |