port: the game decodes all three voice streams at once, and two baseline rows were comparing blank frames
TWO FINDINGS, one mine and one handed to me, and the second retires a premise I built on twice. THE P1 BASELINE HAD ROWS THAT PROVED NOTHING. `build_12` and `build_15` render pure black in BOTH renderers -- mean 0, max 0 -- so the difference is zero and `verify-screen` scored them `max 0 over3 0 OK`, the strongest verdict it has. Two of sixteen rows were comparing nothing against nothing. Worse than a missing test, because a missing test is visible in the count. Cause isolated by a control, not by reading: `build_00`/`build_01` are the same loading screen minus three elements and render fine (mean 1.913, max 214.5). The dressed variants add `pgloading_eff00`, a 1280x720 primitive resting OPAQUE BLACK at t=38 inside its own opening black hold, with no layer key so paint order puts it last. The rule I was about to write -- "rest.t before the last timed keyframe is the pathology" -- was killed by running the census first: 152 of 212 elements in this export have rest.t earlier than their last timed keyframe. It is the norm. What is actually unusual is the CONTENT, and its reach is one: `pgloading_eff00` is the only element in the export whose resting pose is a fully opaque full-frame quad. One instance is not a rule, so the renderer is unchanged and the HARNESS is fixed: a blank pair now reports BLANK -- both renderers drew nothing; this row proves nothing. `status` is untouched, so an unrelated DIFFERS still fails. THE VOICE EXPORT IS KNOWN INCOMPLETE. The Decoder booted Canary with --xma_param_probe and the game decodes ALL THREE streams CONCURRENTLY, in three XMA contexts whose byte sizes match the disc payloads exactly. So "three presentations of one take, pick one" is refuted by the running game and the question I had been arguing -- WHICH presentation -- has no answer. This one no census could have caught. Every measurement was right: the streams are equal-duration, one is silence, one is 0.60x another with the residual 26.8 dB down. The frame around them was wrong, and the file says ChannelMask 0x0002 on all three. It took the running game -- which is the mission's own sentence arriving in practice. BEHAVIOUR HELD DELIBERATELY. An equal-gain 1/n sum of channel pairs is not a downmix either -- MISSION section 6 pins an explicit matrix for exactly that reason -- and summing cost S00A 6.02 dB when one stream was silence. Swapping one guess for another on a message is what produced this entry twice. What changed is that the wrongness is now LOUD, because this failure sounds like success: one stream is clean audible dialogue. A top-level manifest warning per movie, the console line, and the authored entry all say `1 of 3 streams`. "They are 5.1" is recorded as the Decoder's HYPOTHESIS with its own counter-evidence attached, and nothing builds on it. What settles it is asked: a recording of the game's own output over ADV through the null sink, which turns channel roles into a fit against an oracle. Refutation attempt, survived: the Decoder's loading-screen variant map. Entries 0/1 carry 7 elements and 12/15 carry those seven plus baseeff, eff00 and loop5 -- exact in count and identity, and it is what made build_00 a control. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N7FiFFFwbvG2uxdcEh8HyF
This commit is contained in:
@@ -110,54 +110,66 @@
|
||||
},
|
||||
"voice": {
|
||||
"_": [
|
||||
"WHICH PRESENTATION of a cutscene's voice to export. CHOSEN, not measured and",
|
||||
"not decoded -- delete this the day a capture says which one the game plays.",
|
||||
"🔴 KNOWN WRONG, HELD DELIBERATELY. Which of a voice region's streams to",
|
||||
"export. The premise this entry was built on has been REFUTED BY THE RUNNING",
|
||||
"GAME and the entry is kept, escalated, rather than swapped for another guess.",
|
||||
"",
|
||||
"A voice region carries THREE PRESENTATIONS OF ONE TAKE (decoded disc-wide by",
|
||||
"the Decoder: 258 inter-descriptor spans hold one stream, 28 hold three, none",
|
||||
"holds two). The exporter drops the leading one, which this port measured to",
|
||||
"be the tail of the others, and must then pick between the two full-length",
|
||||
"ones. Nothing on the disc ranks them: wEncodeOptions, channel count and",
|
||||
"channel mask are byte-identical across them.",
|
||||
"The premise was: a region carries THREE PRESENTATIONS OF ONE TAKE, so the",
|
||||
"exporter picks one. The Decoder booted with `--xma_param_probe=true` -- the",
|
||||
"cvar that reports which sub-wave the game decodes -- and the game decodes",
|
||||
"ALL THREE, CONCURRENTLY, in three separate XMA contexts, with byte sizes",
|
||||
"matching the three disc payloads exactly (1294336 / 1118208 / 1171456",
|
||||
"against RIFF size - 60 of 1294396 / 1118268 / 1171516).",
|
||||
"",
|
||||
"This lives here rather than in the exporter because MISSION section 3 puts a",
|
||||
"value we chose in authored/ with a why. A selection rule compiled into Rust",
|
||||
"reads like something the exporter derived, and nobody deletes what nobody",
|
||||
"can see."
|
||||
"SO THERE IS NO 'WHICH ONE' TO ANSWER. `presentation` below discards two of",
|
||||
"three streams the game plays. It is not a preference between rules any more;",
|
||||
"it is a known-incomplete export.",
|
||||
"",
|
||||
"WHY IT IS NOT CHANGED TODAY. Reverting to the 1/n sum is not obviously less",
|
||||
"wrong: an equal-gain sum of channel pairs is not a downmix -- MISSION",
|
||||
"section 6 makes exactly that point when it pins an explicit matrix for the",
|
||||
"movies' 5.1 fold rather than letting ffmpeg default -- and the 6.02 dB the",
|
||||
"sum cost S00A was a real defect. Swapping one guess for another on a message",
|
||||
"is what produced this entry twice already.",
|
||||
"",
|
||||
"🟡 HYPOTHESIS, NOT A RESULT, and it is the Decoder's: three concurrent stereo",
|
||||
"streams is six channels, and N stereo streams is how XMA carries",
|
||||
"multichannel on the 360, so 5.1 would explain the differing byte rates, the",
|
||||
"near-silent stream and why cues are 1-stream or 3-stream and never 2. AGAINST",
|
||||
"IT: all three declare ChannelMask = 0x0002 identically, which is odd for",
|
||||
"distinct channel roles. Do not build on it.",
|
||||
"",
|
||||
"WHAT SETTLES IT: a recording of the game's own output over the intro,",
|
||||
"through the PulseAudio null sink (AUDIO-VERIFICATION section 3). Candidate",
|
||||
"combinations of the three decoded streams can then be correlated against",
|
||||
"what the game actually played. Asked 2026-08-29."
|
||||
],
|
||||
"presentation": "loudest",
|
||||
"presentation_why": [
|
||||
"`loudest` = the full-length stream whose peak is nearest full scale.",
|
||||
"",
|
||||
"IT USED TO BE `highest_rate`, on the Decoder's recommendation, and that",
|
||||
"recommendation was WITHDRAWN as self-contradictory -- it read 'the",
|
||||
"highest-rate, highest-gain one is chunk 1', and those two criteria select",
|
||||
"different streams: ADV chunk 1 is 1118268 B at 0.0 dBFS, chunk 2 is",
|
||||
"1171516 B at -8.3 dBFS.",
|
||||
"🔴 READ THE BLOCK ABOVE FIRST. This selects one of three streams the game",
|
||||
"decodes concurrently, so whatever it selects, two are missing. The",
|
||||
"paragraphs below are the history of how the value was arrived at, kept",
|
||||
"because the reasoning is what makes the error checkable -- NOT because the",
|
||||
"choice is defensible on its own terms any more.",
|
||||
"",
|
||||
"WHY `loudest` AND NOT `highest_rate`: this is a PER-ASSET CONTENT choice,",
|
||||
"and that is the whole of its justification. The disc masters its other audio",
|
||||
"near full scale -- the SE cues decode to +0.18 dBFS -- and S00A's only",
|
||||
"surviving full-length stream is its louder one at -4.2 dBFS, so `loudest`",
|
||||
"makes the two cutscenes' dialogue sit at comparable levels instead of 4.4 dB",
|
||||
"apart. Neither half is strong alone; together they are what there is.",
|
||||
"It was `highest_rate`, on a recommendation withdrawn as self-contradictory:",
|
||||
"'the highest-rate, highest-gain one is chunk 1' selects different streams --",
|
||||
"ADV stream 2 is 1118268 B at 0.0 dBFS, stream 3 is 1171516 B at -8.3.",
|
||||
"",
|
||||
"⚠️ A STRUCTURAL ARGUMENT WAS OFFERED HERE AND IS WITHDRAWN. It said ADV",
|
||||
"chunk 1 is mono-in-stereo (channel 2 digitally silent) while chunk 2 is",
|
||||
"dual-mono (channels identical at -8.318574), therefore the extra bytes",
|
||||
"encode a duplicated channel rather than fidelity, therefore the rate",
|
||||
"argument collapses. The CHANNEL MEASUREMENT stands -- it is ADV's, and it is",
|
||||
"this port's own. THE GENERALISATION DOES NOT. The Decoder tested it",
|
||||
"disc-wide over the 28 three-stream cues: the stream-3/stream-2 size ratio",
|
||||
"runs min 0.0778, median 1.2565, max 2.9163, sd 0.5057, with only 12 of 28",
|
||||
"within 15% of 1.0, and declared rates scatter with them (S06A: 5661 against",
|
||||
"16513 B/s). A 37x spread is not a duplicated channel.",
|
||||
"A structural argument for `loudest` was offered and withdrawn too: ADV",
|
||||
"stream 2 is mono-in-stereo and stream 3 is dual-mono, so the extra bytes",
|
||||
"looked like a duplicated channel rather than fidelity. The CHANNEL",
|
||||
"MEASUREMENT stands and now reads differently -- these are channel pairs, and",
|
||||
"0.60x with the residual 26.8 dB down is what a correlated pair at a lower",
|
||||
"level looks like. The GENERALISATION was refuted by census: the stream-3 /",
|
||||
"stream-2 size ratio over the 28 three-stream cues runs 0.0778 to 2.9163.",
|
||||
"",
|
||||
"So `highest_rate` was not refuted as a rule; it was simply never argued for,",
|
||||
"and neither was this. That is why the entry is CHOSEN and why it says so.",
|
||||
"",
|
||||
"STILL A CHOICE. One capture of the intro with dialogue audible settles it,",
|
||||
"and it is the last unforced decision in the voice pipeline."
|
||||
"⚠️ THE FAILURE MODE HERE IS THAT IT SOUNDS FINE. A single stream decodes to",
|
||||
"clean audible dialogue, so nothing in the output reveals that two streams",
|
||||
"are missing. That is why the manifest says it in words on every voice entry",
|
||||
"rather than leaving it to this file."
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user