Files
Sylpheed/docs/agents/PLAYTEST-2026-09-02-menus.md
MechaCat02 18620e99aa
Some checks failed
CI / Native — macos-latest (push) Has been cancelled
CI / Native — windows-latest (push) Has been cancelled
CI / WASM — Web (push) Has been cancelled
CI / Formatting (push) Has been cancelled
CI / Native — ubuntu-latest (push) Has been cancelled
agents: P5's gate is MET, and four findings from the same walk
"Menu walk and navigation is fine. Video skips too. Extras open. New Game
   shows new game intro video."  -- 2026-09-02

P5 is done. Its gate was "a human clicks through it", the retro said it had been
waiting on that and not on code for the whole milestone, and it has happened.
PORT-MISSION.md updated. The NEW GAME gap is accepted as-is.

Four findings, three of them the Decoder's:

F1 THE MENU REPEATS ON A HELD DIRECTION AND OURS DOES NOT. One step per
   deflection was authored as the conservative choice because nobody knew; a
   human has now watched the real game and it repeats, "at a medium pace... slow
   enough to see which item is selected". That settles the existence half of H1
   against us. The RATE is still unmeasured and must not be guessed -- the
   description bounds it and supplies no number. Decoder measures initial delay
   and repeat interval as frame counts; the port implements the mechanism and
   waits for the numbers.

F2 THE SFX ARE TOO LOUD BECAUSE THERE IS NO MIX AT ALL. Measured: confirm
   -17.7 dB mean / -0.0 dB peak, 3 dB hotter in mean than the music and 6.4 dB
   above move. No volume or gain value exists anywhere in export/ or authored/,
   so every clip plays at unity on one bus. Decoder: is per-cue or per-bus gain
   on the disc -- the cue table is the obvious place and cue 1103 is already
   decoded. Port: gains at PLAYBACK as data, and explicitly NOT normalisation in
   the exporter, which destroys the relationship between clips and cannot be
   undone by a modder.

F3 SOMETHING IS MISSING ON THE TITLE SCREEN. The export carries one music file
   and the port plays nothing on the title. Which cue does the title play, and
   is there a sting on the plate or on accept? A negative needs a positive
   control: find the menu's cue by the same method first.

F4 (A) SKIPS FORWARD THROUGH THE BOOT AND WE IMPLEMENT TWO OF THREE PRESSES.
   In the game: skip video, reveal plate immediately, accept plate. The middle
   one is missing here. Whether the game snaps both clocks forward or only
   reveals the plate is a question, not a detail -- and it is a cheap second
   route to the plate-arrival question, since a press that skips to the plate
   says where the game thinks the plate belongs.

H3, the plate delay, is ACCEPTED -- "feels the same... sufficient". Left
unattributed rather than closed green.
2026-09-02 18:32:38 +02:00

6.1 KiB
Raw Blame History

Play-test, 2026-09-02 (second) — P5 IS MET, and four findings

P5's gate is MET — the human clicked through it

"Menu walk and navigation is fine. Video skips too. Extras open. New Game shows new game intro video."

P5 is done. Its gate was "a human clicks through it", the retro said it had been waiting on that and not on code for the whole milestone, and it has now happened. PORT-MISSION.md is updated.

The human also confirmed the NEW GAME gap is understood and acceptable: "Deliberate AFAIK, in actual game the difficulty select comes first." The port announces the two screens it skips; that stays as it is.


F1 — 🔴 The menu DOES repeat on a held direction. Ours does not.

"Moving stick up/down and holding only moves one item. In game it actually continues to move when holding up/down, just at a medium pace so player does not need to move pad middle↔up/down, but also slow enough to see which item is selected and move to target."

This settles the existence half of H1, and it settles it against us. One step per deflection was authored as the conservative choice precisely because nobody knew. Now somebody has watched the real game: it repeats.

⚠️ The RATE is still not measured, and it must not be guessed. The human's description bounds it usefully and does not supply a number: fast enough that a player need not return the stick to centre, slow enough to read the selection as it passes. That is a range, not a value.

  • Decoder — measure it. Hold a direction in Canary and count. Two numbers: the initial delay before the first repeat, and the repeat interval after it. Frames between cursor moves, at a stated present rate — a count, not a stopwatch reading (TEMPORAL-VERIFICATION.md). Also: does the d-pad differ from the stick? Does the rate accelerate while held, or stay flat?
  • Port — implement the mechanism, take the number from the Decoder. Do not ship a placeholder rate: an invented interval here is indistinguishable from a measured one a month from now, and this is the exact field where that has already cost us once.

F2 — 🔴 The sound effects are too loud. There is no mix at all.

"Largely OK. Biggest notice is the volume, many effects are too loud."

Measured, and the human is right. Every clip plays at unity gain, because no volume or gain value exists anywhere — not in export/, not in authored/, not in the manifest:

mean max
se/confirm 17.7 dB 0.0 dB — at full scale
se/move 24.1 1.4
se/back 21.0 5.7
bgm/main_menu 20.7 4.2

confirm is the loudest thing in the export: 3 dB hotter in mean than the music and 6.4 dB above move. A game mixes SE against BGM on separate buses; this port has one bus and no gains.

  • Decoder — is the mix ON THE DISC? The obvious place is the cue table: a cue record commonly carries volume alongside the wave index, and sub_821C5580 is already known to play cue 1103. If per-cue or per-bus gain is there, it is decoded and nobody has to choose. If it is provably not, say so with reach and it becomes an authored mix.
  • Port — do not normalise in the exporter to fix this. Re-levelling the file destroys the relationship between clips and cannot be undone by a modder. Gains belong at playback, as data, where a measured value can replace a chosen one without re-exporting.

F3 — Something is missing on the title screen

"I also think that there is a sound track or effect missing at the title screen."

The export carries exactly one music track, bgm/main_menu.ogg, and the port plays nothing on the title. Whether the game does is unestablished.

  • Decoder: which cue, if any, does the title play? The menu's is decoded (cue 1103 = BGM_103 via sub_821C5580); the same route should answer the title. And is there a one-shot sting when the plate appears, or when Ⓐ is accepted? Either would read as "something missing" to a player.
  • ⚠️ A negative here needs a positive control (R4): show the method finding the menu's cue before concluding the title has none.

F4 — 🔴 Ⓐ SKIPS FORWARD through the boot. We only implement one of the three.

"In the game one can get the plate to immediately show by pressing Ⓐ, essentially skip to it. So after the logos one can immediately skip to the main menu by pressing Ⓐ three times: 1. skip intro video, 2. show plate, 3. the plate itself."

A measured behaviour of the real game, and a good one — it is how a returning player gets past the boot.

press in the game in the port
Ⓐ #1 skips the intro video implemented
Ⓐ #2 completes the title build-in and shows the plate immediately missing
Ⓐ #3 activates the plate → main menu implemented
  • Port: Ⓐ during the title build-in should jump the sequence to the plate's arrival rather than being swallowed. ⚠️ Careful what "jump" means — the plate has a declared arrival at t=238 and the title a build-in ending at t≈118. Whether the game snaps both clocks forward, or only reveals the plate and leaves the title where it is, is a question, not a detail. Ask if the capture does not say.
  • Decoder: what does Ⓐ do to the clocks? This is also a second, cheap route to the plate-arrival question — a press that skips to the plate tells you where the game thinks the plate belongs.
  • 📌 And it bears on REFUTED.md: "any title after the first one refuses input" is already narrowed to the attract-returned title. This is a third input the boot title accepts.

H3 — the plate delay is ACCEPTED

"Delay feels the same. Cannot verify it is exact same, but is sufficient."

Good enough to stop working on, not established as correct. Leave the row as unattributed rather than closing it green; if the duration question is ever settled by the pipeline work, check it against this rather than re-opening it from scratch.