re: the crate reads 1.3% of the game's text — seven caption families unread
movie_subtitle handles MSG_DEMO_*, the cutscene captions. Counting every IXUD block in GP_MAIN_GAME_E.pak, that is the SMALLEST of eight families: MSG_ADAN 23236 keys 9801 with text ADAN combat chatter MSG_RHIN 21196 8509 Rhino squadron MSG_TCAF 17148 6728 TCAF MSG_VOICE 13060 6776 in-mission scripted dialogue MSG_BIRD 14036 5834 Bird squadron MSG_ADPL 12640 4127 ADAN pilots MSG_ACRO 4804 2244 Acropolis MSG_DEMO 1252 560 cutscene captions <- the only one read total 107372 44579 560 of 44579 text-bearing keys = 1.3%. I report the text-bearing column rather than raw keys because only 41.5% of keys carry text -- the rest are the empty line slots this container pads with, and counting those would flatter the denominator. MSG_VOICE_* is the family the message tables reference -- the dialogue whose voice bindings this file now analyses in detail -- and nothing in crates/ parses it. So the corpus knows which bank plays for a line it cannot read. First step recorded: build_demo_text already pairs a text value with the MSG_DEMO_<demo>_<page>_<line> key that follows it, and the other seven families use the same <id>_<page>_<line> shape, so generalising the key parser is most of the work. With a warning attached: do NOT assume the id spaces relate, since the voice-bank id and the caption id within one message page are different numbers. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PMRJjbxLqZtsb5Vb7KunPE
This commit is contained in:
@@ -310,3 +310,36 @@ Message_044: voice = VOICE_E_012B
|
||||
`VOICE_C_468` ↔ `MSG_VOICE_C_385`, `VOICE_D_182` ↔ `MSG_VOICE_D_152`,
|
||||
`VOICE_E_012B` ↔ `MSG_VOICE_E_044`. Same family letter, **different index
|
||||
space**. Deriving one from the other will silently mis-pair audio and text.
|
||||
|
||||
## ❔ The crate reads 1.3 % of the game's text
|
||||
|
||||
`movie_subtitle` handles the `MSG_DEMO_*` family — the cutscene captions. That is
|
||||
the **smallest of eight** caption families in the English pak, and the rest have
|
||||
no reader.
|
||||
|
||||
Counted over every IXUD block in `GP_MAIN_GAME_E.pak`:
|
||||
|
||||
| family | keys | with text | what it is |
|
||||
|---|---|---|---|
|
||||
| `MSG_ADAN` | 23 236 | **9 801** | ADAN combat chatter |
|
||||
| `MSG_RHIN` | 21 196 | **8 509** | Rhino squadron chatter |
|
||||
| `MSG_TCAF` | 17 148 | **6 728** | TCAF chatter |
|
||||
| `MSG_VOICE` | 13 060 | **6 776** | in-mission scripted dialogue |
|
||||
| `MSG_BIRD` | 14 036 | **5 834** | Bird squadron chatter |
|
||||
| `MSG_ADPL` | 12 640 | **4 127** | ADAN pilots |
|
||||
| `MSG_ACRO` | 4 804 | **2 244** | Acropolis |
|
||||
| **`MSG_DEMO`** | **1 252** | **560** | **cutscene captions — the only one read** |
|
||||
| **total** | **107 372** | **44 579** | |
|
||||
|
||||
**560 of 44 579 = 1.3 %.** (41.5 % of keys carry text; the rest are the empty
|
||||
line slots this container uses for padding, so the "with text" column is the
|
||||
honest denominator.)
|
||||
|
||||
`MSG_VOICE_*` is the family the message tables reference — the dialogue whose
|
||||
voice bindings are analysed above — and nothing in `crates/` parses it.
|
||||
|
||||
▶️ **First step:** `movie_subtitle::build_demo_text` already pairs a text value
|
||||
with the `MSG_DEMO_<demo>_<page>_<line>` key that follows it; the other seven
|
||||
families use the same `<id>_<page>_<line>` shape, so generalising the key parser
|
||||
is most of the work. ⚠️ Do **not** assume the id spaces relate — the voice-bank
|
||||
id and the caption id in one message page are different numbers (above).
|
||||
|
||||
Reference in New Issue
Block a user