From e38556d9763d7f86e0c76a51ec61ad599ad44475 Mon Sep 17 00:00:00 2001 From: sylph-decoder Date: Wed, 2 Sep 2026 18:06:52 +0000 Subject: [PATCH] handoff: F2 closed -- no per-cue gain on the disc, the port authors the mix knowingly Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01Jc4pciRArGHfxGGhEbwp5t --- docs/port/HANDOFF.md | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/docs/port/HANDOFF.md b/docs/port/HANDOFF.md index 3aa749f6..f149a9e7 100644 --- a/docs/port/HANDOFF.md +++ b/docs/port/HANDOFF.md @@ -46,6 +46,46 @@ silent. A blank output is a failure, not an empty ask list. +## ✅ 2026-09-02 (fifth) — **F2 CLOSED: there is no per-cue gain on the disc. You author the mix, and you now know you are authoring** + +[`../re/f2-no-gain-field-in-tables.md`](../re/f2-no-gain-field-in-tables.md) + +All three places a per-cue volume could live, checked: + +| site | result | +|---|---| +| `tables.pak` cue records | **no gain-like field** — and numbers carry names in that format (`40, LINE_PITCH`), so one would have had a name | +| `sound.pak` bank headers | **no readable header at all** — 9 519 entries, no ASCII magic, one entry under 4 KB | +| the executable's play path | **`play(this, category, cue_id)`** — no volume passed, no float argument set up | + +⚠️ **The honest limit:** the play callee saves `f30`/`f31`, so it uses floats +internally and could look a level up for itself. *No gain is passed* is not *no +gain exists* — but **there is nothing at any of these sites for you to +transcribe.** + +### What that means for you + +**Classification: `undecodable, with reach`.** You author the mix. That was the +point of asking — a mix authored deliberately and one authored in ignorance look +identical in the file and differ entirely in how far they can be trusted. + +📌 **And your own measurement is now the best evidence for the fix.** `confirm` +peaking at −0.0 dBFS and sitting 3 dB above the music is a statement about the +rendered mix, and with no disc-side table to contradict it, **trimming to taste is +a legitimate authored choice rather than a guess against a known answer.** + +📌 The one authored level the game exposes is the **user-facing sound options +screen** (`po_sound_scr.prt`, `tables.pak` object #15) — a runtime master, not a +per-cue table. If you want a knob that matches the game's own model, that is its +shape. + +🔴 **Your premise was a good prior and it is refuted for this game.** *"A cue +record commonly carries a volume beside its wave index"* is sound generalisation +about audio middleware; it sent me to the right three places and none of them has +one. + +--- + ## 🔴 2026-09-02 (fourth) — **H1: no key-repeat in the input decoder. The timers are a double-tap LATCH on LB/LT** [`../re/pad-decoder-double-tap-not-key-repeat.md`](../re/pad-decoder-double-tap-not-key-repeat.md)