Files
Sylpheed/docs/re/captures/movie-subtitle-voice-map.csv
Sylpheed RE agent 0cf0cda09e re: rebuild the movie manifest on the record table — the old counts measured pool strings
movie_manifest::parse now reads BASE_INFO's positional field keys (the game's
own cutscene ids, stage*100 + slot) and follows each to its record, instead of
scraping the string pool. The pool stores each distinct string once, so a
REPEAT reference produced no token and read as "no binding".

That single cause explains every wrong cell: 13 later references to
VOICE_D_450..454, two to SUBTITLE_hokyu_LS_s11A.tbl, and MS01A's share of
pwterop_s01a.prt. All 18 hokyu movies are bound, not five.

Counts, verified independently by me against the disc before recording:
104 cutscene SLOTS binding 101 distinct MOVIES; 99 slots / 96 movies with a
voice track, 99 / 96 with a subtitle, 22 / 22 with a telop. The docs' old
94 / 83 / 21 are exactly the counts of DISTINCT POOL STRINGS -- not wrong
measurements, measurements of the wrong thing. Three denominators were being
conflated; the new test pins all three.

Two assertions in movie_manifest_disc.rs were false and are corrected:
hokyu_DS_s13A binds VOICE_D_452 and resolves to eng\etc\VOICE_D_452.slb. The
in-game verdict that rejected that value tested an INFERENCE from a shared
demo id, on a decoder that discards 85-87% of banks in this class -- see
voice-bank-leading-region.md, committed earlier today.

The ~104 script ids are no longer open: they are literal positional keys,
each naming its record, and all 104 resolve. The old "counts differ by three,
positional pairing does not work" has a concrete cause -- three resupply
movies are bound by TWO slots each.

Also corrected: the naming convention has 3 subtitle exceptions (s24A/s27A
borrow s11A's track) and 18 voice exceptions, not one and five.

The legacy scraper is kept as a fallback for blobs with no record table, so
the synthetic unit fixtures still exercise it.

Artifacts: examples/movie_map_csv.rs regenerates the CSV, now slot-keyed
(104 rows; the movie-keyed version silently dropped one slot of each
duplicate). Disc tests green.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PMRJjbxLqZtsb5Vb7KunPE
2026-08-25 23:13:41 +00:00

6.2 KiB

1slotmovietelopsubtitlevoicetrack
2LOGO1logo1.wmv
3LOGO2logo2.wmv
4LOGO3logo3.wmv
5LOGO4logo4.wmv
6ADVERTISE_MOVIEADV.wmvVOICE_ADV
7STAFF_ROLLSYLPH_HD720p_8M-CBR_2ch.wmvpwterop_s01a.prtSYLPH_HD720p_8M-CBR_2ch.tbl
8MS00AS00A.wmvSUBTITLE_S00A.tblVOICE_S00A
9MS01AS01A.wmvpwterop_s01a.prtSUBTITLE_S01A.tblVOICE_S01A
10STAGE01_PHASE01RT01A.wmvpwrt01.prtSUBTITLE_RT01A.tblVOICE_RT01A
11STAGE01_PHASE02RT01B.wmvSUBTITLE_RT01B.tblVOICE_RT01B
12STAGE01_PHASE_END_01RT01C_1.wmvSUBTITLE_RT01C_1.tblVOICE_RT01C_1
13STAGE01_PHASE_END_02RT01C_2.wmvSUBTITLE_RT01C_2.tblVOICE_RT01C_2
14MS02AS02A.wmvpwterop_s02a.prtSUBTITLE_S02A.tblVOICE_S02A
15MS02BS02B.wmvSUBTITLE_S02B.tblVOICE_S02B
16MS02CS02C.wmvSUBTITLE_S02C.tblVOICE_S02C
17STAGE02_PHASE01RT02A.wmvpwrt02.prtSUBTITLE_RT02A.tblVOICE_RT02A
18STAGE02_PHASE02RT02B.wmvSUBTITLE_RT02B.tblVOICE_RT02B
19STAGE02_PHASE03RT02C.wmvSUBTITLE_RT02C.tblVOICE_RT02C
20STAGE02_PHASE_END_01RT02D_1.wmvSUBTITLE_RT02D_1.tblVOICE_RT02D_1
21STAGE02_PHASE_END_02RT02D_2.wmvSUBTITLE_RT02D_2.tblVOICE_RT02D_2
22S02_SUPPLY_ACROPOLIShokyu_LS_s02A.wmvSUBTITLE_hokyu_LS_s02A.tblVOICE_D_450
23S02_SUPPLY_TANKERhokyu_LS_s02H.wmvSUBTITLE_hokyu_LS_s02H.tblVOICE_D_453
24MS03AS03A.wmvSUBTITLE_S03A.tblVOICE_S03A
25STAGE03_PHASE01RT03A.wmvpwrt03.prtSUBTITLE_RT03A.tblVOICE_RT03A
26STAGE03_PHASE02RT03B.wmvSUBTITLE_RT03B.tblVOICE_RT03B
27STAGE03_PHASE03RT03C.wmvSUBTITLE_RT03C.tblVOICE_RT03C
28STAGE03_PHASE_ENDRT03D.wmvSUBTITLE_RT03D.tblVOICE_RT03D
29S03_SUPPLY_ACROPOLIShokyu_LS_s03A.wmvSUBTITLE_hokyu_LS_s03A.tblVOICE_D_450
30S03_SUPPLY_TANKERhokyu_LS_s03H.wmvSUBTITLE_hokyu_LS_s03H.tblVOICE_D_453
31MS04AS04A.wmvSUBTITLE_S04A.tblVOICE_S04A
32MS04BS04B.wmvSUBTITLE_S04B.tblVOICE_S04B
33STAGE04_PHASE01RT04A.wmvpwrt04.prtSUBTITLE_RT04A.tblVOICE_RT04A
34STAGE04_PHASE02RT04B.wmvSUBTITLE_RT04B.tblVOICE_RT04B
35S04_SUPPLY_ACROPOLIShokyu_DS_s02A.wmvSUBTITLE_hokyu_DS_s02A.tblVOICE_D_452
36MS05AS05A.wmvSUBTITLE_S05A.tblVOICE_S05A
37STAGE05_PHASE01RT05A.wmvpwrt05.prtSUBTITLE_RT05A.tblVOICE_RT05A
38STAGE05_PHASE02RT05B.wmvSUBTITLE_RT05B.tblVOICE_RT05B
39STAGE05_PHASE_ENDRT05C.wmvSUBTITLE_RT05C.tblVOICE_RT05C
40S05_SUPPLY_ACROPOLIShokyu_LS_s02A.wmvSUBTITLE_hokyu_LS_s02A.tblVOICE_D_450
41MS06AS06A.wmvpwterop_s06a.prtSUBTITLE_S06A.tblVOICE_S06A
42MS06BS06B.wmvSUBTITLE_S06B.tblVOICE_S06B
43STAGE06_PHASE01RT06A.wmvpwrt06.prtSUBTITLE_RT06A.tblVOICE_RT06A
44STAGE06_PHASE02RT06B.wmvSUBTITLE_RT06B.tblVOICE_RT06B
45STAGE06_PHASE03RT06C.wmvSUBTITLE_RT06C.tblVOICE_RT06C
46STAGE06_PHASE_ENDRT06D.wmvSUBTITLE_RT06D.tblVOICE_RT06D
47S06_SUPPLY_ACROPOLIShokyu_LS_s06A.wmvSUBTITLE_hokyu_LS_s06A.tblVOICE_D_450
48S06_SUPPLY_TANKERhokyu_LS_s06H.wmvSUBTITLE_hokyu_LS_s06H.tblVOICE_D_453
49MS07AS07A.wmvSUBTITLE_S07A.tblVOICE_S07A
50MS07BS07B.wmvSUBTITLE_S07B.tblVOICE_S07B
51STAGE07_PHASE01RT07A.wmvpwrt07.prtSUBTITLE_RT07A.tblVOICE_RT07A
52STAGE07_PHASE02RT07B.wmvSUBTITLE_RT07B.tblVOICE_RT07B
53STAGE07_PHASE_ENDRT07C.wmvSUBTITLE_RT07C.tblVOICE_RT07C
54S07_SUPPLY_ACROPOLIShokyu_DS_s07A.wmvSUBTITLE_hokyu_DS_s07A.tblVOICE_D_452
55S07_SUPPLY_TANKERhokyu_DS_s07H.wmvSUBTITLE_hokyu_DS_s07H.tblVOICE_D_454
56STAGE08_PHASE01RT08A.wmvpwrt08.prtSUBTITLE_RT08A.tblVOICE_RT08A
57STAGE08_PHASE02RT08B.wmvSUBTITLE_RT08B.tblVOICE_RT08B
58STAGE08_PHASE_ENDRT08C.wmvSUBTITLE_RT08C.tblVOICE_RT08C
59S08_SUPPLY_ACROPOLIShokyu_DS_s08A.wmvSUBTITLE_hokyu_DS_s08A.tblVOICE_D_452
60MS09BS09B.wmvSUBTITLE_S09B.tblVOICE_S09B
61STAGE09_PHASE01RT09A.wmvpwrt09.prtSUBTITLE_RT09A.tblVOICE_RT09A
62STAGE09_PHASE02RT09B.wmvSUBTITLE_RT09B.tblVOICE_RT09B
63STAGE09_PHASE03RT09C.wmvSUBTITLE_RT09C.tblVOICE_RT09C
64STAGE09_PHASE_ENDRT09D.wmvSUBTITLE_RT09D.tblVOICE_RT09D
65S09_SUPPLY_ACROPOLIShokyu_LS_s09A.wmvSUBTITLE_hokyu_LS_s09A.tblVOICE_D_451
66S09_SUPPLY_TANKERhokyu_LS_s09H.wmvSUBTITLE_hokyu_LS_s09H.tblVOICE_D_453
67MS10BS10B.wmvSUBTITLE_S10B.tblVOICE_S10B
68STAGE10_PHASE01RT10A.wmvpwrt10.prtSUBTITLE_RT10A.tblVOICE_RT10A
69STAGE10_PHASE_ENDRT10B.wmvSUBTITLE_RT10B.tblVOICE_RT10B
70MS11AS11A.wmvSUBTITLE_S11A.tblVOICE_S11A
71MS11CS11C.wmvSUBTITLE_S11C.tblVOICE_S11C
72STAGE11_PHASE01RT11A.wmvpwrt11.prtSUBTITLE_RT11A.tblVOICE_RT11A
73STAGE11_PHASE02RT11B.wmvSUBTITLE_RT11B.tblVOICE_RT11B
74STAGE11_PHASE_ENDRT11C.wmvSUBTITLE_RT11C.tblVOICE_RT11C
75S11_SUPPLY_ACROPOLIShokyu_LS_s11A.wmvSUBTITLE_hokyu_LS_s11A.tblVOICE_D_451
76MS12AS12A.wmvSUBTITLE_S12A.tblVOICE_S12A
77MS12BS12B.wmvSUBTITLE_S12B.tblVOICE_S12B
78MS12CS12C.wmvSUBTITLE_S12C.tblVOICE_S12C
79STAGE12_PHASE01RT12A.wmvpwrt12.prtSUBTITLE_RT12A.tblVOICE_RT12A
80STAGE12_PHASE_END_01RT12B_1.wmvSUBTITLE_RT12B_1.tblVOICE_RT12B_1
81STAGE12_PHASE_END_02RT12B_2.wmvSUBTITLE_RT12B_2.tblVOICE_RT12B_2
82S12_SUPPLY_ACROPOLIShokyu_DS_s07A.wmvSUBTITLE_hokyu_DS_s07A.tblVOICE_D_452
83S12_SUPPLY_TANKERhokyu_DS_s07H.wmvSUBTITLE_hokyu_DS_s07H.tblVOICE_D_454
84MS13AS13A.wmvSUBTITLE_S13A.tblVOICE_S13A
85MS13BS13B.wmvSUBTITLE_S13B.tblVOICE_S13B
86STAGE13_PHASE01RT13A.wmvpwrt13.prtSUBTITLE_RT13A.tblVOICE_RT13A
87STAGE13_PHASE_END_01RT13B_1.wmvSUBTITLE_RT13B_1.tblVOICE_RT13B_1
88STAGE13_PHASE_END_02RT13B_2.wmvSUBTITLE_RT13B_2.tblVOICE_RT13B_2
89S13_SUPPLY_ACROPOLIShokyu_DS_s13A.wmvSUBTITLE_hokyu_DS_s13A.tblVOICE_D_452
90MS14AS14A.wmvSUBTITLE_S14A.tblVOICE_S14A
91STAGE14_PHASE01RT14A.wmvpwrt14.prtSUBTITLE_RT14A.tblVOICE_RT14A
92STAGE14_PHASE02RT14B.wmvSUBTITLE_RT14B.tblVOICE_RT14B
93STAGE14_PHASE_ENDRT14C.wmvSUBTITLE_RT14C.tblVOICE_RT14C
94S14_SUPPLY_TANKERhokyu_DS_s14H.wmvSUBTITLE_hokyu_DS_s14H.tblVOICE_D_454
95MS15AS15A.wmvpwterop_s15a.prtSUBTITLE_S15A.tblVOICE_S15A
96MS15BS15B.wmvSUBTITLE_S15B.tblVOICE_S15B
97MS15CS15C.wmvSUBTITLE_S15C.tblVOICE_S15C
98STAGE15_PHASE01RT15A.wmvpwrt15.prtSUBTITLE_RT15A.tblVOICE_RT15A
99STAGE15_PHASE02RT15B.wmvSUBTITLE_RT15B.tblVOICE_RT15B
100STAGE15_PHASE_ENDRT15C.wmvSUBTITLE_RT15C.tblVOICE_RT15C
101S15_SUPPLY_ACROPOLIShokyu_LS_s15A.wmvSUBTITLE_hokyu_LS_s15A.tblVOICE_D_451
102MS16AS16A.wmvpwterop_s16a.prtSUBTITLE_S16A.tblVOICE_S16A
103STAGE16_PHASE01RT16C.wmvpwrt16.prtSUBTITLE_RT16C.tblVOICE_RT16C
104S24_SUPPLY_ACROPOLIShokyu_LS_s24A.wmvSUBTITLE_hokyu_LS_s11A.tblVOICE_D_451
105S27_SUPPLY_ACROPOLIShokyu_LS_s27A.wmvSUBTITLE_hokyu_LS_s11A.tblVOICE_D_451