re: the cue-less cutscene pages ARE the resupply lines, and they cross-check the movie work
16 of the 17 pages with an empty slot 4 belong to MSG_DEMO_600..604, whose caption text matches, word for word, the five resupply lines documented from the movie side as VOICE_D_450..454. Slot 4 is empty on purpose: that audio binds through the movie path, not through a DEMO_nnn cue. That also disposes of the '5 ids with more than one record' item -- each appears once per stage that uses it, and the repeat counts equal the movie-slot counts recorded independently for the matching banks: 3/3/4/4/2 both ways, 5 of 5. The 11 extra records over 138 ids are these repeats. Worth more than closing two items: the cutscene message table and the movie subtitle chain were decoded from different containers by different routes and agree on the same five lines with the same multiplicities. MSG_DEMO_500 remains: one page, KATANA, 2s, no text and no cue.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user