port: the PRESS (A) plate pulses -- authored per element, because 82 of 212 share its shape

The human listed pulsation as first-class and the port drew nothing: the plate's
focus record `ptbtn00f` was never reached, because press_start has no `buttons`
and nothing is focused. That it LOOPS is measured -- the corpus timed the period
four times (2.12 / 2.19 / 2.34 / 2.31 s) and you cannot measure a period unless
the thing repeats.

THE RULE I WAS GOING TO WRITE DIED IN THE CENSUS. The spinning ring is a rule in
the renderer because it has a disc-wide check: 16 of 212 elements match its shape
and all 16 are focus rings. The analogous shape for a pulse -- keyframes varying
only in alpha, first alpha equal to last -- matches 82 OF 212, including
ptcopyright, palogo_sqex, ptmsg and every _eff fade. A renderer rule on it would
make the copyright notice pulse. Narrowed to focus records it matches exactly one
distinct element, and a rule justified by n=1 is a special case wearing a rule's
clothes.

So it is a LOOKUP in authored/timing.json keyed <screen>/<element>, with the
census recorded beside it so nobody widens it later.

The period is 129 units -- the element's own group under the port's existing
model: last timed keyframe t=105 plus the authored exit_ramp_units of 24. No new
constant. 2.150 s at 60 units/s, 2.295 s at the ~28.1 fps the emulator presents,
against measurements of 2.12-2.34.

IT IS A CHOICE AND THE ALTERNATIVE IS STATED: restarting at the group's first
keyframe (t=6) instead of 0 gives 123 units = 2.050 / 2.189 s, also inside the
measured spread. Nothing separates them. t=0 is taken because it is where every
other group starts -- consistency, not evidence.

Verified the way the ring was, by bit-identity one period apart. 20 periods is
43.00 s = exactly 172 film frames: frames N and N+172 differ by 0-1/255, while
the control a quarter-second off (43.25 s) differs by 58.7/255. On the held boot
title the glow-box mean swings 26.0 <-> 37.7.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N7FiFFFwbvG2uxdcEh8HyF
This commit is contained in:
Sylpheed port agent
2026-08-29 16:51:36 +00:00
parent ba364dba5a
commit af1d69ed4b
4 changed files with 233 additions and 54 deletions

View File

@@ -3498,3 +3498,66 @@ the tool reporting its own resolution honestly rather than hiding it.
**The oracle's numbers are quoted in the script as a test fixture and labelled as
the oracle's**, with the RE document they come from. Nothing in the port derives
them and nothing may.
## The `PRESS Ⓐ` plate pulses — authored per element, because the census forbids a rule
The human listed pulsation as first-class and the port drew nothing at all: the
plate's focus record `ptbtn00f` was never reached, because `press_start` has no
`buttons` and nothing is focused.
**That it loops is measured**, not assumed. The corpus timed the pulse four times
— 2.12 / 2.19 / 2.34 / 2.31 s — and you cannot measure a period unless the thing
repeats.
### The rule I was going to write, and the census that forbade it
The spinning ring is a **rule** in the renderer (`spin_period_units`) and it
earns that: 16 of 212 elements match its shape and **all 16 are focus rings**,
zero false positives. So I looked for the analogous shape for a pulse — a group
whose keyframes vary **only** in alpha, whose first and last alpha are equal, a
closed cycle. `ptbtn00f` fits it exactly: `0 → 6 → 74 → 80 → 80 → 74 → 6 → 0`.
**Censused before writing it: 82 of 212 elements match.** `ptcopyright`,
`palogo_sqex`, `ptmsg`, `ptlogo_back2`, and every `_eff` fade-in-hold-fade-out on
every screen. **A renderer rule on that shape would make the copyright notice
pulse.**
Narrowing to focus records leaves exactly **one** distinct element (plus its JP
twin). A rule justified by n = 1 is a special case wearing a rule's clothes. So
the pulse is a **lookup** in `authored/timing.json`, keyed `<screen>/<element>`,
and the census is recorded beside it so nobody widens it later.
### The period is the element's own group — and the alternative is stated
**129 units**: its last timed keyframe is t=105, and the final untimed keyframe
is reached `exit_ramp_units` (24) later. **No new constant** — 24 is the same
authored value every other element's exit already uses. That is 2.150 s at
60 units/s, or 2.295 s at the ~28.1 fps the emulator presents, against
measurements of 2.122.34 s. It sits inside the spread at either rate.
⚠️ **It is a choice, and the alternative cannot be ruled out**: the cycle could
restart at the group's first keyframe (t=6) rather than at 0, giving 123 units =
2.050 / 2.189 s — **also inside the measured spread**. Nothing available
separates them. t=0 is taken because it is where every other group in this port
starts, which is consistency and not evidence, and `authored/timing.json` says so.
A fifth reading is recorded and **not averaged in**: the Decoder re-picked its
troughs and got 2.628 s having previously reported 2.369 from the same run, then
withdrew the estimate as too weak to resolve better than ~7 %.
### Verified the way the ring was — bit-identity one period apart
20 authored periods is 2.15 × 20 = **43.00 s = exactly 172 film frames**, so
frames N and N+172 must be the same frame:
| | max difference |
|---|---|
| f_055 vs f_227 (43.00 s) | **0/255** |
| f_060 vs f_232 (43.00 s) | **1/255** |
| f_070 vs f_242 (43.00 s) | **1/255** |
| f_079 vs f_251 (43.00 s) | **0/255** |
| **control** — f_070 vs f_243 (43.25 s) | **58.7/255** |
The control is what makes the rest mean anything: a quarter-second off the period
differs by 58.7, on the period by 01. Measured on the held boot title, where the
glow-box mean swings **26.0 ↔ 37.7** — a real pulse, not a static glow.