diff --git a/docs/port/HANDOFF.md b/docs/port/HANDOFF.md index f69de877..0553af83 100644 --- a/docs/port/HANDOFF.md +++ b/docs/port/HANDOFF.md @@ -61,19 +61,25 @@ authored version can be deleted. this milestone changes — every screen in scope is `GP_TITLE` — but do not ship `kind == 0x3002` as a general button test. (The kind is the 4th `u32` of the 60-byte declaration entry, at `+40`.) -* **The title screen loops — it is not a still.** After building in, mean - luminance oscillates continuously at **≈ 2.2 s ± 0.4** (measured, 7 intervals - over a 22 s capture). Build 4 declares `ptloop01.rat`/`ptloop02.rat`, and - `loop*.rat` is a decoded **looping sprite animation**. Drawing the resting - pose and stopping will look wrong. - ✅ **The loop records are decoded**: `ptloop01.rat` (an `opt `-linked `RATC` at - `0xbb5966`) sweeps `pteff03.t32` left→right over **450 units = 7.5 s**; - `ptloop02.rat` sweeps `pteff03a.t32` right→left over **570 units = 9.5 s**. - Ordinary 40-byte keyframe blocks from `+0x68`, three keyframes each. - ❔ **But those are not the ≈ 2.2 s oscillation** — a 7.5 s cycle gives ~3 peaks - in a 22 s capture and it showed 8. The 2.2 s period is real and its **source is - unidentified**, so expect the title to carry *both* the decoded sweeps and - something else. +* **The title's motion, decoded and attributed.** After building in, the *title + art* is essentially static — a 22 s capture measures the wordmark region at + sd 0.06 and the bottom-right corner at sd 0.003. Two things do move: + * ✅ **Two slow light sweeps in build 4.** `ptloop01.rat` (an `opt `-linked + `RATC` at `0xbb5966`) sweeps `pteff03.t32` left→right over **450 units = + 7.5 s**; `ptloop02.rat` sweeps `pteff03a.t32` right→left over **570 units = + 9.5 s**. Ordinary 40-byte keyframe blocks from `+0x68`, three keyframes each. + * ✅ **The `PRESS Ⓐ BUTTON` plate pulses**, and it is the loudest thing on + screen — a capture's per-tile amplitude map puts **sd 7.65** in the band + x ≈ 318–954, y ≈ 560–672 against **0.06** on the wordmark. It is + `ptbtn00f.rat`, the plate's highlight variant (build **2**, not build 4), + whose alpha ramps **`0x00 → 0x06 → 0x4a → 0x50` (hold) `→ 0x4a → 0x06`** + across `t = 6 … 105` — a glow that fades in and back out. + 🟡 Its full cycle is **not** readable: the keyframe group's last block carries no + time (that slot belongs to the next group), so the declared span is **≥ 105 + units = 1.75 s** against a measured **≈ 2.3 s**. Consistent, not confirmed. + ⚠️ An earlier version of this bullet said "the title screen loops at ≈ 2.2 s" + and attributed it to `ptloop01/02`. Both halves were wrong: it is the **plate**, + and it is a different build. * **Menu order is geometric.** Buttons sorted top-to-bottom by resting Y. This is ✅ correct for a vertical menu and is **not** a decoded neighbour graph — the disc's real navigation structure is unknown, and `opt ` is *not* a focus link diff --git a/docs/re/REFUTED.md b/docs/re/REFUTED.md index 9315ccfe..bec151e0 100644 --- a/docs/re/REFUTED.md +++ b/docs/re/REFUTED.md @@ -35,6 +35,11 @@ neighbourhood, not just the line. ## Screens, classes and RTTI +* "the title screen loops at ≈ 2.2 s" → **mine, and doubly wrong.** The title + *art* is near-static (wordmark sd 0.06); the 2.3 s pulse is the + **`PRESS Ⓐ BUTTON` plate**, which is a *different build* (2, not 4). Localised + by a per-tile amplitude map and decoded in `ptbtn00f.rat`. + [`ui-title-build-map.md`](ui-title-build-map.md) * ~~"a `.rat` leaf record's keyframes use the build's 40-byte layout" → they do not~~ — **withdrawn.** They do. The scan that "found nothing" required 29 increasing times; the records hold **three**. Decoded in diff --git a/docs/re/ui-title-build-map.md b/docs/re/ui-title-build-map.md index e35c81c6..8bc60a2c 100644 --- a/docs/re/ui-title-build-map.md +++ b/docs/re/ui-title-build-map.md @@ -255,9 +255,39 @@ The decoded sweeps run **7.5 s and 9.5 s**. A 22 s capture would show ~3 peaks from a 7.5 s cycle; it showed **8**. So the loops are *not* what the oscillation measured. -❔ **What the ≈ 2.2 s period actually is remains unidentified.** Candidates not -checked: `pteff01.t32` (`[50 71 118]`), the five `ptlogo_back2eff*` glows, or a -combination. The measurement stands; only its attribution is withdrawn. +### ✅ Identified: it is the `PRESS Ⓐ BUTTON` plate pulsing + +A per-tile amplitude map over the capture (8 × 6 grid, 18 s after build-in) +localises the 2.3 s period precisely: + +| region | sd | dominant lag | +|---|---|---| +| band x ≈ 318–954, y ≈ 560–672 | **7.65** | **2.3 s** | +| wordmark centre | 0.06 | — | +| bottom-right corner | 0.003 | — | + +That band is the `PRESS Ⓐ BUTTON` plate's rest position (`ptbtn00.rat`, rest +`(383,550)`, pivot `(256,25)`). It is **build 2**, composited over the title — not +build 4. + +Decoding `ptbtn00f.rat`, the plate's highlight variant, gives the pulse directly: + +| kf | t | alpha | +|---|---|---| +| 0 | 6 | `0x00` | +| 1 | 29 | `0x06` | +| 2 | 35 | `0x4a` | +| 3 | 50 | `0x50` | +| 4 | 58 | `0x50` (hold) | +| 5 | 97 | `0x4a` | +| 6 | 105 | `0x06` | + +A glow that fades in to `0x50` and back out — exactly a "press start" pulse. + +🟡 **The cycle length is still not readable.** The group's last block has no time +(that slot belongs to the next group), so the declared span is **≥ 105 units = +1.75 s** against the measured **≈ 2.3 s** (138 units). Consistent with a final +block extending the tail; not confirmed. ### ❔ The declared 4.08 s build-in was not tested