diff --git a/docs/port/DECISIONS.md b/docs/port/DECISIONS.md index a14c8941..37ebc068 100644 --- a/docs/port/DECISIONS.md +++ b/docs/port/DECISIONS.md @@ -5502,3 +5502,57 @@ additive, which is why those screens came out **solid black** rather than It is the reason the port can stop waiting on it. `pbafc.prm` remains the sole additive candidate and is outside the rule at 17×18 px; the port draws no additive quad either way. + +## P7 gate — the new-game intro plays and returns, and a defect I nearly invented + +`--menu=main_menu --script=accept` walks the P7 path: Ⓐ on NEW GAME announces the +two measured screens this export skips, opens `S00A`, plays it to its natural end +at **93.33 s** against the manifest's 93.9, and returns to the title. Nine film +frames across the movie are distinct and non-black (mean 10 → 140). The gate asks +for "plays, then returns to a defined state"; that is both halves. + +### The near-miss, which is the part worth keeping + +Checking that the movie's audio actually reached the Master bus, I correlated the +recording against the exported `S00A.ogv` audio and got **r = −0.0068 at the +movie's known start**, with the correlator passing its own positive control at +**r = 1.0000**. A working instrument returning zero at the right place. I was one +step from filing *"the movie's own audio never reaches the bus"* — which would +have been a serious P4/P7 defect, and the inverse of the human's original report +that the intro "plays music but no voice". + +It is false. Re-run on the **boot** path, where no menu bed is playing: + +| against the bed-free recording | r | at | +|---|---|---| +| `ADV` voice | **0.8855** | movie start 7.6 s | +| `ADV` movie audio | **0.4178** | movie start 7.6 s | + +Both present, at the same start. The movie's audio is simply quieter than the +voice mixed on top of it, and in the P7 run the **menu bed masked it below +detection** while the louder voice survived. The bed carries across into the +movie — `play_bed` is documented as carrying across submenus — so the P7 run was +never a clean measurement. + +🔴 **The lesson is about the control, not the bed.** I validated the correlator on +clean data and then ran it on masked data. A positive control proves the +instrument works *on the material it was given*; it says nothing about whether +the instrument can see through an interferer that was not in the control. **A +negative result needs its own positive control under the same masking**, and this +is the third time in this corpus that an unvalidated negative nearly became a +finding — after "10 of 18 elements transparent at rest" and the burst counter that +read 4 cues on one run and 0 on the next. + +`tools/port/verify-video-audio`'s header already warned that a fidelity +comparison needs cross-correlation alignment *and* an agreed downmix. It was +right, and I would add the third condition it did not know to state. + +⚠️ What is **not** settled: whether the bed *should* carry into the movie and on +to the title after it. It does, it is authored that way, and nobody has watched +the game do either. That is a separate question from this one and is not filed as +a defect — only as unmeasured. + +✅ Also checked, from their `compose` finding: `GP_TITLE` declares **115 `.t32`, +45 `.rat`, 18 `.prm` and no `.tbm` at all**, and every non-primitive element has a +resolvable sprite. The "draws no pixels for an unresolvable element" hazard — +the shape that hid `pteff05` from both renderers — does not reach this archive.