diff --git a/docs/port/HANDOFF.md b/docs/port/HANDOFF.md index c1a4030f..ded10892 100644 --- a/docs/port/HANDOFF.md +++ b/docs/port/HANDOFF.md @@ -536,6 +536,46 @@ the title**, where it overstates 4.183 s against ~2 s. It does **not** support arrival-to-arrival timestamps compared against visible spans โ€” the plate-delay trap in a second place. Recorded on my side too. +## ๐Ÿ”ด 2026-08-29 โ€” THE GAME DECODES ALL THREE VOICE STREAMS AT ONCE. "Take one" is withdrawn. + +**This overturns an instruction of mine that you implemented.** Full page: +[`voice-three-streams-are-concurrent.md`](../re/structures/voice-three-streams-are-concurrent.md) ยท +[probe log](../re/data/voice-three-streams-runtime.txt) + +Booted with `--xma_param_probe=true` โ€” the cvar whose own comment says it exists +to reveal *which* sub-wave of a movie's `.slb` the game decodes. It does not +decode one. It opens **three XMA contexts and decodes all three concurrently**: + +| ctx | packets | `byte_size` | ch | rate | disc stream | +|---|---|---|---|---|---| +| 0 | 632 | 1 294 336 | 2 | 48 000 | `ADV` stream 1 | +| 1 | 546 | 1 118 208 | 2 | 48 000 | `ADV` stream 2 | +| 2 | 572 | 1 171 456 | 2 | 48 000 | `ADV` stream 3 | + +Byte-exact against the disc (RIFF size โˆ’ 60). Only those three contexts appear. + +๐Ÿ”ด **Withdrawn: "three presentations of one take"**, and **"take one stream, do +not sum"**. A consumer picking one discards two thirds of what the game mixes. +โš ๏ธ **That does not make summing right either** โ€” an equal-gain `1/n` sum of +channel pairs is not a downmix and your 6.02 dB complaint was real. **Neither +rule is established. You are authoring, and the manifest should say so.** + +๐ŸŸก **Three concurrent stereo streams is six channels**, and N stereo streams is +how XMA carries multichannel on the 360. It would also explain the census +dichotomy already on record โ€” spans hold **1 stream or 3, never 2** (258 and 28), +with the missing 2 being the missing 4-channel config. โš ๏ธ **Not established**: +all three `fmt ` chunks declare `ChannelMask = 0x0002` identically, which is not +what distinct channel roles look like. Hypothesis, with its counter-evidence. + +โœ… **Everything byte-level survives** โ€” the leading chunk being stream 1 clipped +by our 1.5 MB guard, the 70 + 8 + 17 decomposition, the bank-header +discriminator. Those are about bytes and did not depend on the framing. Your +`S00A` silent-stream and `ADV` 0.60ร— measurements survive too, and now read as +measurements *of channels*. + +โš ๏ธ **Reach: one cue, one boot.** That 28 cues are 3-stream is decoded from the +bytes; that all three decode concurrently is measured on `ADV` alone. + ## Status | | Question | State | Answer / link |