re: stage dialogue with per-line audio durations, in both languages

Joins the ISL script's built-in 64 call sites, the caption table and the sound
bank seek tables. Duration is the last cumulative sample over the sample rate --
read, never decoded. 1663 of 2683 call sites (62.0%) have an English duration,
2198 (81.9%) a Japanese one; the gap is the headerless banks, and which language
lacks one differs per line, so the columns are complementary.

Two columns deliberately: FILES names the jpn banks and the game substitutes the
language directory, so a line's English and Japanese recordings are different
files of different lengths -- 'They got Leader!' is 1.78 s in English and 2.46 s
in Japanese. The captions are English, so eng is the matching column. The first
version of this artifact had one column and would have attached Japanese timings
to English text; that is why it was regenerated.
This commit is contained in:
Sylpheed RE agent
2026-08-26 05:46:03 +00:00
parent 856fd64b3b
commit 0aed00d4f6
2 changed files with 3492 additions and 1 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -142,4 +142,38 @@ slots and usually fills one or two.
This also reconciles the **8 800** figure quoted throughout the corpus: it is
distinct English keys *with non-empty text*, out of 18 813 keys in total. The
larger number is not a contradiction — most slots are empty.
larger number is not a contradiction — most slots are empty.
## ✅ Dialogue with audio durations, all 28 stages
**2026-08-26.** [`../data/stage-dialogue-with-durations.txt`](../data/stage-dialogue-with-durations.txt)
joins three separately decoded systems — the ISL script's built-in 64 call
sites, the caption table, and the sound-bank `seek` tables:
offset | message id | eng s | jpn s | caption
Duration is the bank's last cumulative sample over its sample rate. **Nothing is
decoded**; every number is read.
Coverage over the 2 683 call sites: **1 663 (62.0 %) have an English duration**
and **2 198 (81.9 %) a Japanese one**. The gap is the headerless banks, which
carry no `seek` table — and which language lacks one differs per line, so the
two columns are complementary rather than nested.
**Two columns, deliberately.** `FILES` names the `jpn\` banks and the game
substitutes the language directory, so a line's English and Japanese recordings
are different files of different lengths. The caption text is English, so `eng`
is the column that matches it. Reporting a single duration here would have
silently attached Japanese timings to English text — the first version of this
artifact did exactly that, which is why it was regenerated.
The difference is not academic:
MSG_VOICE_A_065 "They got Leader!" eng 1.78 s jpn 2.46 s
MSG_VOICE_D_257 "Katana! Damn it!" eng - jpn 2.59 s
MSG_VOICE_D_342 "Katana, Ellen, good work." eng 4.18 s jpn -
❔ Not settled: the 38 % of call sites with no English duration. They are
headerless banks, so the audio exists but its length is not recoverable from a
`seek` table — it would have to come from the packet count, which for a
headerless bank means the whole entry, and the entry is not the wave boundary.