re: caption pages are utterances, and the dialogue tool was truncating 356 names

Measured the <id>_<page>_<line> key structure: a page is one subtitle box of
3 or 4 wrapped lines, and successive pages are successive utterances by
possibly different speakers. 452 of 4091 ids span more than one page, up to 8.

That refutes the isl_dialogue.py committed two commits ago, which read only
page 000 -- 356 of the 1338 script message names are multi-page, so a quarter
of its output was truncated to the opening utterance. Tool now walks pages
until one is empty; Stage 02 sample regenerated (43 of 213 calls multi-page).

The 2683/2683 resolution figure is unaffected: it counted ids that have text,
and every id does have a page 000. What was wrong was the rendered text.
This commit is contained in:
Sylpheed RE agent
2026-08-26 03:11:38 +00:00
parent de132c5dec
commit a962daf518
3 changed files with 119 additions and 11 deletions

View File

@@ -41,6 +41,34 @@ Name families and their share of call sites:
ship-side announcements (`ACRO` = ACROPOLIS, `ADAN`/`ADPL` = ADAN,
`TCAF`, `RHIN` = Rhino flight).
## Page and line structure — and a correction to this page's first tool
**✅ Measured 2026-08-26**, on the English pack. A caption id is keyed
`<id>_<page>_<line>`:
* a **page** is one subtitle box, holding **3 or 4 wrapped lines** (4 506 pages
of 4, 263 of 3 — no other width occurs);
* successive **pages are successive utterances**, and may be different
speakers. A multi-page id is therefore a whole exchange, not one long line:
MSG_DEMO_009 page 0 No way! There's more of them?
page 1 Rhino Leader to ACROPOLIS! There's a whole fleet of them now!
page 2 What? Is there any way you can get out of there?
page 3 If we get rid of those fighters, we can cut our way out of here.
Of 4 091 distinct ids, **452 span more than one page** (374 `MSG_VOICE`,
78 `MSG_DEMO`), up to 8 pages.
**This refuted the first version of `isl_dialogue.py`**, committed earlier the
same day, which read only page `000`. **356 of the 1338 script message names
are multi-page**, so a quarter of the dialogue it printed was silently
truncated to its opening utterance. The tool now walks pages until one is
empty. The 2683/2683 resolution figure above is unaffected — it counted ids
that *have* text, and every id does have a page `000` — but the *rendered*
text was incomplete, and the caveat this page originally carried ("whether any
id uses a page other than `000` is unmeasured") understated it as a question
when it was already a defect.
## Why this was not obvious earlier
The caption table only became readable on 2026-08-25, when `build_caption_text`
@@ -55,9 +83,9 @@ names had no text to resolve *to*, and the 100 % figure was unreachable.
is a separate and still-unresolved question — see
[voice-bank-leading-region.md](voice-bank-leading-region.md) and the
known case of a generic line playing against a specific subtitle.
* **Multi-line captions.** `isl_dialogue.py` concatenates pages `_000_00`
through `_000_03`. Whether the game wraps by page or by line, and whether
any id uses a page other than `000`, is unmeasured.
* **Which page a `MSG_DEMO_*` id belongs to.** The `DEMO` family is not called
from the stage scripts at all — 78 of its ids are multi-page, so something
else drives cutscene dialogue. That driver is unidentified.
* **The other five languages.** Only the English pack was swept.
* **Ordering.** The tool prints call sites in file order, which is *script*
order, not necessarily *play* order — phases and branches are not resolved.