re: sweep all six language packs -- and Japanese is not missing captions

The five European packs have byte-for-byte identical MSG key sets: 18813 keys,
4091 ids, zero differences in any direction. Japanese has 14295 keys, which
looks like 4521 missing captions and is not: its id set matches to within 5, its
page count is the same (4765 vs 4758), and its mean lines per page is 1.52
against English's 1.85 with no 4-line pages at all. It carries the same dialogue
and wraps into fewer lines, which is what a language without inter-word spaces
does in a fixed-width box.

Also corrects my own wording in cutscene-message-table.md, which said a page
'holds 3 or 4 wrapped lines'. That counted key SLOTS, which MSG_DEMO records
allocate four at a time. Counting lines with text, an English page holds 1 to 4
(1574/2439/632/113). And it reconciles the 8800 figure used throughout: that is
distinct English keys with non-empty text, out of 18813 keys total.
This commit is contained in:
Sylpheed RE agent
2026-08-26 05:23:06 +00:00
parent 975d5b6519
commit 77a768c908

View File

@@ -86,7 +86,8 @@ names had no text to resolve *to*, and the 100 % figure was unreachable.
* **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.
* ~~**The other five languages.** Only the English pack was swept.~~ ✅ Swept
2026-08-26 — see below.
* **Ordering.** The tool prints call sites in file order, which is *script*
order, not necessarily *play* order — phases and branches are not resolved.
@@ -96,3 +97,46 @@ names had no text to resolve *to*, and the 100 % figure was unreachable.
Sample output committed at [../data/isl-stage02-dialogue.txt](../data/isl-stage02-dialogue.txt)
(Stage 02, 213 message calls, 213 with text).
## ✅ All six language packs swept (2026-08-26)
| pack | distinct `MSG_*` keys | with non-empty text | ids | pages |
|---|---|---|---|---|
| **E** English | 18 813 | **8 800** | 4 091 | 4 758 |
| **D** German | 18 813 | — | 4 091 | — |
| **F** French | 18 813 | — | 4 091 | — |
| **I** Italian | 18 813 | — | 4 091 | — |
| **S** Spanish | 18 813 | — | 4 091 | — |
| **J** Japanese | 14 295 | 7 266 | 4 087 | 4 765 |
The five European packs have **byte-for-byte identical key sets** — zero keys
missing, zero extra, in any direction. Only Japanese differs, and the difference
is not missing content:
* its **id** set matches to within 5 missing and 1 extra of 4 091;
* its **page** count is 4 765 against English's 4 758 — the same;
* its **lines per page** are fewer: mean **1.52** vs **1.85**, and it never uses
a 4-line page where English has 113.
So Japanese carries the same dialogue and simply **wraps into fewer lines**,
which is what a language without inter-word spaces does in a fixed-width box.
The 4 521 "missing" keys are line slots that were never needed. ❌ A reading of
"Japanese is missing 4 521 captions" would be wrong.
### ⚠️ Correcting my own wording elsewhere
[cutscene-message-table.md](cutscene-message-table.md) says a page holds "3 or 4
wrapped lines (4 506 of 4, 263 of 3 — no other width occurs)". That measured
**key slots**, which the `MSG_DEMO` records allocate four at a time. Counting
lines that actually carry text, an English page holds **1 to 4**:
1 line: 1 574 2 lines: 2 439 3 lines: 632 4 lines: 113
Both numbers are true of different things, but "holds 3 or 4 wrapped lines"
reads as a statement about the text and is wrong as such. A page has up to four
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.