diff --git a/docs/re/BACKLOG.md b/docs/re/BACKLOG.md index 007e0c9c..9a0b1bde 100644 --- a/docs/re/BACKLOG.md +++ b/docs/re/BACKLOG.md @@ -62,6 +62,12 @@ and which bank voices a line (`tables.pak`'s cue index — see [`structures/sound-cue-table.md`](structures/sound-cue-table.md); 1 326 of 1 338 script message ids resolve to a `.slb`). +**Also closed (2026-08-26)**: the 17 cue-less cutscene pages and the 5 +duplicated `MSG_DEMO` records are one and the same thing — the resupply lines, +whose audio binds through the movie path rather than a `DEMO_nnn` cue. Their +repeat counts match the movie-slot counts recorded for `VOICE_D_450`–`454`, 5 of +5, from a separately decoded container. + **Still open from this**: nothing about the wrong-recording case — that was already settled in `voice-bank-leading-region.md` (generic line, correct binding) and my first write-up wrongly reopened it; the other five languages; and play order, since the tool prints diff --git a/docs/re/structures/cutscene-message-table.md b/docs/re/structures/cutscene-message-table.md index cd56568d..7c3eb153 100644 --- a/docs/re/structures/cutscene-message-table.md +++ b/docs/re/structures/cutscene-message-table.md @@ -71,13 +71,11 @@ reference would be. ## What this does not settle -* **17 pages have no cue** (slot 4 empty). Silent, or voiced by another route, - is unmeasured. +* **`MSG_DEMO_500`** — one page, KATANA, 2 s, **no text and no cue**. A + placeholder, apparently. * **Slot 2 is `None` at all 149 records**, so what it would hold otherwise is unknown — a constant with no observed variation carries no information. -* **5 ids have more than one record** (`MSG_DEMO_600`–`604`), accounting for - the 11 extra records over 138 ids. Whether these are context variants or - duplicates was not investigated. + * **Nothing here was run.** This is a static read of the tables; the playback order, and whether slot 3 is really the on-screen duration rather than an audio length or a delay, has not been checked against the running game. @@ -87,3 +85,37 @@ reference would be. [`../data/cutscene-message-table.txt`](../data/cutscene-message-table.txt) — all 313 pages with speaker, portrait, seconds, cue and text. Regenerate with `tools/re-capture/sound_cues.py demo`. + + +## ✅ The cue-less pages are the resupply lines — and they corroborate the movie work + +**Settled 2026-08-26.** 16 of the 17 pages with an empty slot 4 belong to five +ids, and those five are exactly the resupply lines already documented from the +*movie* side in [voice-bank-leading-region.md](../voice-bank-leading-region.md). +The caption text matches word for word: + +| id | speaker | line | bank | +|---|---|---|---| +| `MSG_DEMO_600` | NATALIE | "Rhino 3 has landed. Commencing resupply." | `VOICE_D_450` | +| `MSG_DEMO_601` | NATALIE | "Rhino Leader has landed. Commencing resupply." | `VOICE_D_451` | +| `MSG_DEMO_602` | NATALIE | "Resupply complete. You are cleared for take-off!" | `VOICE_D_452` | +| `MSG_DEMO_603` | TCAFSUPPLY | "All right, beginning resupply." | `VOICE_D_453` | +| `MSG_DEMO_604` | TCAFSUPPLY | "Resupply complete. Switching to take-off sequence." | `VOICE_D_454` | + +This also explains the duplicate records. Each of these ids appears **once per +stage that uses it**, and the repeat counts equal the movie-slot counts recorded +independently for the corresponding banks — **5 of 5**: + + DEMO_600 x3 DEMO_601 x3 DEMO_602 x4 DEMO_603 x4 DEMO_604 x2 + D_450 x3 D_451 x3 D_452 x4 D_453 x4 D_454 x2 + +Two facts fall out: + +* the **11 extra records over 138 ids** are these repeats, not an anomaly; and +* slot 4 is empty on purpose — a resupply line's audio is bound through the + **movie** path (`VOICE_D_45x`), not through the `DEMO_nnn` cue path, so there + is no cue to name. + +The agreement is worth something beyond closing two items: the cutscene message +table and the movie subtitle chain were decoded separately, from different +containers, and they land on the same five lines with the same multiplicities.