re(media): the disc ships movies in TWO audio profiles, and 28 of them are 5.1

Probed all 97 movies. 28 are wmapro 48 kHz 6-channel 5.1 -- ADV.wmv and every
S*.wmv story cutscene; the other 69 are wmav2 48 kHz stereo, every RT*.wmv and
hokyu_*.wmv. The split is cinematics vs in-mission radio chatter.

Both movies the menu milestone needs, ADV.wmv (the boot/attract intro) and
S00A.wmv (the new-game intro), are in the SURROUND group.

Why it matters: one ffmpeg command over dat/movie/ produces two different kinds
of result and records neither. The 69 stereo files pass through unchanged; the 28
surround files get downmixed 5.1 -> stereo by ffmpeg's DEFAULT matrix, folding
centre-channel dialogue into L/R at a weighting nobody chose and which is not
stable across ffmpeg versions. That is a content decision inherited by accident,
so it should be stated explicitly and recorded beside the command.

Credit where due: found by the human while checking a transcode, verified
independently here and widened from one file to the whole disc.

Two METHOD entries from the same episode, both about measurement rather than
format: don't probe a file another process is still writing (a half-written
transcode reported 33 s against a 137 s source, no error, nearly a filed bug),
and a difference-signal RMS is meaningless before cross-correlation alignment
(-34.2 dB against a -25.3 dB source looks like failure and is inconclusive).
This commit is contained in:
Sylpheed RE agent
2026-08-29 08:57:56 +00:00
parent 7eeae3006a
commit 3491d30066
3 changed files with 160 additions and 0 deletions

View File

@@ -880,3 +880,19 @@ agent's loop prompt, i.e. nowhere durable. See [`README.md`](README.md) for the
stuck before it was timed. If the change under test is not in the mesh path,
`build-reborn t -p <crate>` scopes around it — note that `build-reborn test`
itself passes `--workspace` and will ignore a `-p`.
* **Never measure a file another process is still writing.** `ffprobe` on a
half-written transcode reported 33 s against a 137 s source — the shape of
catastrophic truncation, with no error and no warning, and it nearly became a
filed bug. The tell was the mtime and a climbing packet count, not anything in
the tool's output. Before comparing an artifact you did not produce, check that
whoever produces it has finished; across two agents sharing a repo this is a
race, not an edge case.
* **A difference-signal RMS means nothing until the two are aligned.** Comparing a
transcode against its source gave source RMS 25.3 dB and difference RMS
34.2 dB — only ~9 dB down, which looks like a failure. It is inconclusive: a
one-sample offset makes the difference nearly as loud as the source. Any such
test needs cross-correlation to align first and an agreed downmix, and only then
is a pass mark like ">40 dB down" meaningful. Reporting the 9 dB as a result
would have been a confident wrong number.

View File

@@ -0,0 +1,97 @@
ADV.wmv,wmapro,48000,6,5.1
RT01A.wmv,wmav2,48000,2,unknown
RT01B.wmv,wmav2,48000,2,unknown
RT01C_1.wmv,wmav2,48000,2,unknown
RT01C_2.wmv,wmav2,48000,2,unknown
RT02A.wmv,wmav2,48000,2,unknown
RT02B.wmv,wmav2,48000,2,unknown
RT02C.wmv,wmav2,48000,2,unknown
RT02D_1.wmv,wmav2,48000,2,unknown
RT02D_2.wmv,wmav2,48000,2,unknown
RT03A.wmv,wmav2,48000,2,unknown
RT03B.wmv,wmav2,48000,2,unknown
RT03C.wmv,wmav2,48000,2,unknown
RT03D.wmv,wmav2,48000,2,unknown
RT04A.wmv,wmav2,48000,2,unknown
RT04B.wmv,wmav2,48000,2,unknown
RT05A.wmv,wmav2,48000,2,unknown
RT05B.wmv,wmav2,48000,2,unknown
RT05C.wmv,wmav2,48000,2,unknown
RT06A.wmv,wmav2,48000,2,unknown
RT06B.wmv,wmav2,48000,2,unknown
RT06C.wmv,wmav2,48000,2,unknown
RT06D.wmv,wmav2,48000,2,unknown
RT07A.wmv,wmav2,48000,2,unknown
RT07B.wmv,wmav2,48000,2,unknown
RT07C.wmv,wmav2,48000,2,unknown
RT08A.wmv,wmav2,48000,2,unknown
RT08B.wmv,wmav2,48000,2,unknown
RT08C.wmv,wmav2,48000,2,unknown
RT09A.wmv,wmav2,48000,2,unknown
RT09B.wmv,wmav2,48000,2,unknown
RT09C.wmv,wmav2,48000,2,unknown
RT09D.wmv,wmav2,48000,2,unknown
RT10A.wmv,wmav2,48000,2,unknown
RT10B.wmv,wmav2,48000,2,unknown
RT11A.wmv,wmav2,48000,2,unknown
RT11B.wmv,wmav2,48000,2,unknown
RT11C.wmv,wmav2,48000,2,unknown
RT12A.wmv,wmav2,48000,2,unknown
RT12B_1.wmv,wmav2,48000,2,unknown
RT12B_2.wmv,wmav2,48000,2,unknown
RT13A.wmv,wmav2,48000,2,unknown
RT13B_1.wmv,wmav2,48000,2,unknown
RT13B_2.wmv,wmav2,48000,2,unknown
RT14A.wmv,wmav2,48000,2,unknown
RT14B.wmv,wmav2,48000,2,unknown
RT14C.wmv,wmav2,48000,2,unknown
RT15A.wmv,wmav2,48000,2,unknown
RT15B.wmv,wmav2,48000,2,unknown
RT15C.wmv,wmav2,48000,2,unknown
RT16C.wmv,wmav2,48000,2,unknown
S00A.wmv,wmapro,48000,6,5.1
S01A.wmv,wmapro,48000,6,5.1
S02A.wmv,wmapro,48000,6,5.1
S02B.wmv,wmapro,48000,6,5.1
S02C.wmv,wmapro,48000,6,5.1
S03A.wmv,wmapro,48000,6,5.1
S04A.wmv,wmapro,48000,6,5.1
S04B.wmv,wmapro,48000,6,5.1
S05A.wmv,wmapro,48000,6,5.1
S06A.wmv,wmapro,48000,6,5.1
S06B.wmv,wmapro,48000,6,5.1
S07A.wmv,wmapro,48000,6,5.1
S07B.wmv,wmapro,48000,6,5.1
S09B.wmv,wmapro,48000,6,5.1
S10B.wmv,wmapro,48000,6,5.1
S11A.wmv,wmapro,48000,6,5.1
S11C.wmv,wmapro,48000,6,5.1
S12A.wmv,wmapro,48000,6,5.1
S12B.wmv,wmapro,48000,6,5.1
S12C.wmv,wmapro,48000,6,5.1
S13A.wmv,wmapro,48000,6,5.1
S13B.wmv,wmapro,48000,6,5.1
S14A.wmv,wmapro,48000,6,5.1
S15A.wmv,wmapro,48000,6,5.1
S15B.wmv,wmapro,48000,6,5.1
S15C.wmv,wmapro,48000,6,5.1
S16A.wmv,wmapro,48000,6,5.1
hokyu_DS_s02A.wmv,wmav2,48000,2,unknown
hokyu_DS_s07A.wmv,wmav2,48000,2,unknown
hokyu_DS_s07H.wmv,wmav2,48000,2,unknown
hokyu_DS_s08A.wmv,wmav2,48000,2,unknown
hokyu_DS_s13A.wmv,wmav2,48000,2,unknown
hokyu_DS_s14H.wmv,wmav2,48000,2,unknown
hokyu_LS_s02A.wmv,wmav2,48000,2,unknown
hokyu_LS_s02H.wmv,wmav2,48000,2,unknown
hokyu_LS_s03A.wmv,wmav2,48000,2,unknown
hokyu_LS_s03H.wmv,wmav2,48000,2,unknown
hokyu_LS_s06A.wmv,wmav2,48000,2,unknown
hokyu_LS_s06H.wmv,wmav2,48000,2,unknown
hokyu_LS_s09A.wmv,wmav2,48000,2,unknown
hokyu_LS_s09H.wmv,wmav2,48000,2,unknown
hokyu_LS_s11A.wmv,wmav2,48000,2,unknown
hokyu_LS_s14A.wmv,wmav2,48000,2,unknown
hokyu_LS_s15A.wmv,wmav2,48000,2,unknown
hokyu_LS_s24A.wmv,wmav2,48000,2,unknown
hokyu_LS_s27A.wmv,wmav2,48000,2,unknown
1 ADV.wmv wmapro 48000 6 5.1
2 RT01A.wmv wmav2 48000 2 unknown
3 RT01B.wmv wmav2 48000 2 unknown
4 RT01C_1.wmv wmav2 48000 2 unknown
5 RT01C_2.wmv wmav2 48000 2 unknown
6 RT02A.wmv wmav2 48000 2 unknown
7 RT02B.wmv wmav2 48000 2 unknown
8 RT02C.wmv wmav2 48000 2 unknown
9 RT02D_1.wmv wmav2 48000 2 unknown
10 RT02D_2.wmv wmav2 48000 2 unknown
11 RT03A.wmv wmav2 48000 2 unknown
12 RT03B.wmv wmav2 48000 2 unknown
13 RT03C.wmv wmav2 48000 2 unknown
14 RT03D.wmv wmav2 48000 2 unknown
15 RT04A.wmv wmav2 48000 2 unknown
16 RT04B.wmv wmav2 48000 2 unknown
17 RT05A.wmv wmav2 48000 2 unknown
18 RT05B.wmv wmav2 48000 2 unknown
19 RT05C.wmv wmav2 48000 2 unknown
20 RT06A.wmv wmav2 48000 2 unknown
21 RT06B.wmv wmav2 48000 2 unknown
22 RT06C.wmv wmav2 48000 2 unknown
23 RT06D.wmv wmav2 48000 2 unknown
24 RT07A.wmv wmav2 48000 2 unknown
25 RT07B.wmv wmav2 48000 2 unknown
26 RT07C.wmv wmav2 48000 2 unknown
27 RT08A.wmv wmav2 48000 2 unknown
28 RT08B.wmv wmav2 48000 2 unknown
29 RT08C.wmv wmav2 48000 2 unknown
30 RT09A.wmv wmav2 48000 2 unknown
31 RT09B.wmv wmav2 48000 2 unknown
32 RT09C.wmv wmav2 48000 2 unknown
33 RT09D.wmv wmav2 48000 2 unknown
34 RT10A.wmv wmav2 48000 2 unknown
35 RT10B.wmv wmav2 48000 2 unknown
36 RT11A.wmv wmav2 48000 2 unknown
37 RT11B.wmv wmav2 48000 2 unknown
38 RT11C.wmv wmav2 48000 2 unknown
39 RT12A.wmv wmav2 48000 2 unknown
40 RT12B_1.wmv wmav2 48000 2 unknown
41 RT12B_2.wmv wmav2 48000 2 unknown
42 RT13A.wmv wmav2 48000 2 unknown
43 RT13B_1.wmv wmav2 48000 2 unknown
44 RT13B_2.wmv wmav2 48000 2 unknown
45 RT14A.wmv wmav2 48000 2 unknown
46 RT14B.wmv wmav2 48000 2 unknown
47 RT14C.wmv wmav2 48000 2 unknown
48 RT15A.wmv wmav2 48000 2 unknown
49 RT15B.wmv wmav2 48000 2 unknown
50 RT15C.wmv wmav2 48000 2 unknown
51 RT16C.wmv wmav2 48000 2 unknown
52 S00A.wmv wmapro 48000 6 5.1
53 S01A.wmv wmapro 48000 6 5.1
54 S02A.wmv wmapro 48000 6 5.1
55 S02B.wmv wmapro 48000 6 5.1
56 S02C.wmv wmapro 48000 6 5.1
57 S03A.wmv wmapro 48000 6 5.1
58 S04A.wmv wmapro 48000 6 5.1
59 S04B.wmv wmapro 48000 6 5.1
60 S05A.wmv wmapro 48000 6 5.1
61 S06A.wmv wmapro 48000 6 5.1
62 S06B.wmv wmapro 48000 6 5.1
63 S07A.wmv wmapro 48000 6 5.1
64 S07B.wmv wmapro 48000 6 5.1
65 S09B.wmv wmapro 48000 6 5.1
66 S10B.wmv wmapro 48000 6 5.1
67 S11A.wmv wmapro 48000 6 5.1
68 S11C.wmv wmapro 48000 6 5.1
69 S12A.wmv wmapro 48000 6 5.1
70 S12B.wmv wmapro 48000 6 5.1
71 S12C.wmv wmapro 48000 6 5.1
72 S13A.wmv wmapro 48000 6 5.1
73 S13B.wmv wmapro 48000 6 5.1
74 S14A.wmv wmapro 48000 6 5.1
75 S15A.wmv wmapro 48000 6 5.1
76 S15B.wmv wmapro 48000 6 5.1
77 S15C.wmv wmapro 48000 6 5.1
78 S16A.wmv wmapro 48000 6 5.1
79 hokyu_DS_s02A.wmv wmav2 48000 2 unknown
80 hokyu_DS_s07A.wmv wmav2 48000 2 unknown
81 hokyu_DS_s07H.wmv wmav2 48000 2 unknown
82 hokyu_DS_s08A.wmv wmav2 48000 2 unknown
83 hokyu_DS_s13A.wmv wmav2 48000 2 unknown
84 hokyu_DS_s14H.wmv wmav2 48000 2 unknown
85 hokyu_LS_s02A.wmv wmav2 48000 2 unknown
86 hokyu_LS_s02H.wmv wmav2 48000 2 unknown
87 hokyu_LS_s03A.wmv wmav2 48000 2 unknown
88 hokyu_LS_s03H.wmv wmav2 48000 2 unknown
89 hokyu_LS_s06A.wmv wmav2 48000 2 unknown
90 hokyu_LS_s06H.wmv wmav2 48000 2 unknown
91 hokyu_LS_s09A.wmv wmav2 48000 2 unknown
92 hokyu_LS_s09H.wmv wmav2 48000 2 unknown
93 hokyu_LS_s11A.wmv wmav2 48000 2 unknown
94 hokyu_LS_s14A.wmv wmav2 48000 2 unknown
95 hokyu_LS_s15A.wmv wmav2 48000 2 unknown
96 hokyu_LS_s24A.wmv wmav2 48000 2 unknown
97 hokyu_LS_s27A.wmv wmav2 48000 2 unknown

View File

@@ -0,0 +1,47 @@
# ✅ The disc ships movies in **two** audio profiles — and one of them is 5.1
**Status:**`DECODED`, disc-wide (97 of 97 movies probed). Found while checking
a transcode, not while looking for it.
## The split
```
$ ffprobe -select_streams a -show_entries stream=codec_name,sample_rate,channels,channel_layout
```
| profile | count | codec | rate | channels | which |
|---|---|---|---|---|---|
| **surround** | **28** | `wmapro` | 48 kHz | **6 (5.1)** | `ADV.wmv` + every `S*.wmv` story cutscene |
| stereo | 69 | `wmav2` | 48 kHz | 2 | every `RT*.wmv` and `hokyu_*.wmv` |
Full list in [`data/movie-audio-layouts.csv`](../data/movie-audio-layouts.csv).
The split is not arbitrary: the **cinematics** are 5.1 and the **in-mission radio
chatter** is stereo. `ADV.wmv` (137.714 s) and `S00A.wmv` — the boot/attract intro
and the new-game intro, i.e. **both movies the menu milestone needs** — are in the
surround group.
## ⚠️ Why this matters to anything that transcodes
A single `ffmpeg` command over `dat/movie/` produces **two different kinds of
result** and records neither:
* the 69 stereo files pass through channel-wise unchanged;
* the 28 surround files are **downmixed 5.1 → stereo by ffmpeg's default matrix**,
folding centre-channel dialogue into L/R at a weighting nobody chose.
That default is a *content* decision — it sets how loud the dialogue is against
the music — and it is **not stable across ffmpeg versions**. A pipeline that wants
a reproducible result has to state the downmix explicitly rather than inherit it,
and record it beside the command.
🟡 Whether the game itself plays these in surround, and with what downmix when the
console is set to stereo, is **not established here**. This page is about what is
on the disc.
## How it was found, and the trap next to it
Checking a transcode against its source, `ffprobe` reported the output as 33 s
against the source's 137 s — which reads as catastrophic truncation and is not:
the file was **being written at that moment**. Measuring a live write produces a
confident wrong answer with no error. See [`../METHOD.md`](../METHOD.md).