re: DEMO_* in a message's voice slot is not a sound bank

An open question from the game_data migration: 132 dialogue lines carry an
unprefixed DEMO_* token where a VOICE_* one is expected, and whether DEMO_*
names a bank was untested. It does not.

  VOICE_*  4443 distinct, 4175 resolve in sound.pak
                          (2360 eng\Voice\, 1815 eng\etc\)
  DEMO_*    296 distinct,    0 resolve

Zero resolve under any of the three directories, and looking them up through
the convention -- VOICE_DEMO_nnn -- resolves 0 of 296 as well. So the slot is
not "the voice bank"; it can hold either a bank reference or a demo one.

The tokens run DEMO_000 to DEMO_310, 287 distinct in [0, 310] -- a dense
sequential id space, which is the shape of the demo id this file already uses
in MSG_DEMO_<demo>_<page>_<line> caption keys. I did NOT confirm the overlap
and say so: those keys live in IXUD wide-string blocks while my scan walked
IDXD objects only, so it found 0 of them. That needs an IXUD-aware sweep.

Incidental and left open: 268 of the 4443 VOICE_* tokens do not resolve
either. That is a separate gap and the DEMO_* finding does not explain it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PMRJjbxLqZtsb5Vb7KunPE
This commit is contained in:
Sylpheed RE agent
2026-08-26 02:16:16 +00:00
parent f095fe647f
commit 197ae49123

View File

@@ -176,3 +176,27 @@ data** (mission scripts / `GP_MAIN_GAME` IDXD tables), not in the text pack. Whe
reversing mission data, look for demo-id references there to bind dialogue to
events; the IDXD "Message" schema records also carry `Character` (speaker) and
`Face` (portrait) per line.
## ✅ `DEMO_*` in a message's voice slot is NOT a sound bank
The dialogue message tables put a token in what reads as a voice slot, and 296
distinct ones are spelled `DEMO_*` rather than `VOICE_*`. They do not name audio:
| token family | distinct | resolve in `sound.pak` |
|---|---|---|
| `VOICE_*` | 4443 | **4175** — 2360 under `eng\Voice\`, 1815 under `eng\etc\` |
| `DEMO_*` | 296 | **0** |
Zero resolve under any of the three directories (`Movie`, `etc`, `Voice`), and
prefixing the convention — looking up `VOICE_DEMO_nnn` — resolves **0 of 296**
too. So the slot is not "the voice bank" but something that can hold either a
bank reference or a demo reference.
🟡 The tokens run `DEMO_000``DEMO_310`, **287 distinct in [0, 310]** — a dense
sequential id space, which is the shape of the demo id this file already uses in
`MSG_DEMO_<demo>_<page>_<line>` caption keys. **I did not confirm the overlap**:
those keys live in the IXUD wide-string blocks and the scan above only walked
IDXD objects, so it found 0 of them. Confirming it needs an IXUD-aware sweep.
**268 of the 4443 `VOICE_*` tokens do not resolve either.** That is a separate
gap and is not explained by the `DEMO_*` finding.