Files
Sylpheed/docs/agents/PLAYTEST-2026-09-02-menus.md
MechaCat02 de5f04038d agents: correct "both clocks" -- there is ONE, and F4 tests whether it is right
I wrote "whether the game snaps both clocks forward" into yesterday's F4 and the
human asked which clocks. There are none: authored/flow.json sets
`clock: "shared"`, so the title's two composited builds -- build 4 the artwork
(finishes t~=118) and build 2/3 the plate (full alpha t=236) -- run on ONE clock
started together. Left standing, that phrasing sends an agent hunting for a
second clock this corpus says does not exist.

Corrected in both briefs and in the playtest page, marked as a correction rather
than silently edited.

And the question is better than I first framed it. `clock: "shared"` is
AUTHORED, and the port's own plate-arrival-halves.md calls it "not falsified...
not confirmed to better than ~20 % either", with an unresolved anchor
disagreement inside one binary: the reconciliation picked t=118 while
settle_time() returns 160 and the boot prints "settles at t=160".

So F4 is a TEST OF THAT PREMISE, and the discriminator is observable -- press (A)
early, while the wordmark is still building in, and watch the ARTWORK rather
than the plate:

  advances the shared clock   -> the artwork SNAPS to finished
  only forces the plate       -> the artwork KEEPS ANIMATING its build-in

Both briefs now say to answer F4 before building on `shared`, and tell the port
not to choose what "jump" means.
2026-09-02 18:39:13 +02:00

7.5 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, and do not choose it. See below — it is a test of an authored premise, not a detail.
  • Decoder: what does Ⓐ do to the clock? 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.

🔴 F4 is a TEST OF clock: "shared", which is authored and only ~20 % confirmed

Correction, by the human who wrote this page: an earlier draft said "both clocks". There is only ONE. authored/flow.json sets "clock": "shared": the title is two composited builds — build 4 the artwork, build 2/3 the plate — and they run on one clock started together. Build 4's artwork finishes at t ≈ 118; the plate reaches full alpha at t = 236. Saying "both clocks" would send someone hunting for a second one that this corpus says does not exist.

With that fixed, the question is sharp and observable:

if Ⓐ … then pressing EARLY looks like
advances the shared clock the title artwork snaps to finished, and the plate appears
only forces the plate visible the artwork keeps animating its remaining build-in while the plate appears over it

So film a boot, press Ⓐ while the wordmark is still building in, and watch the artwork, not the plate.

📌 Why this matters beyond the feature. clock: "shared" is authored, and plate-arrival-halves.md says in its own words that it is "not falsified… not confirmed to better than ~20 % either". There is also an unresolved anchor disagreement inside one binary: the reconciliation picked t=118, while settle_time() returns 160 and the boot prints settles at t=160.

If Ⓐ snaps the artwork, that is evidence for one shared clock. If the artwork carries on while the plate appears, the plate has a timeline of its own and the authored premise is in trouble. Answer F4 before building on shared.

  • 📌 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.