re: RETRACT "the game never draws eff3" -- a batched draw merged two quads
The console draws all five title flashes. My claim that ptlogo_back2eff3 is never drawn was an instrument artefact, and I had reported it to the port with three alternative explanations "ruled out". A GPU draw can batch several quads -- indices=4 is one, indices=8 two, indices=24 six -- and the UI draw log dumps only the first 8 vertices. Taking min/max over a line's whole vertex list merges quads into one box. eff3 is batched with eff4, and because the wipe family is right-aligned, eff3 (788..1196) lies ENTIRELY INSIDE eff4 (447..1196). The union is exactly eff4's own extent, so the merged box matched eff4 to 1 px, eff3 vanished, and nothing looked wrong. Parsed per quad, all five fire in both title entries in the declared stagger: eff1 130-131, eff2 133, eff3 133-134, eff4 133-135, eff/eff5 134+, back2 136+; and 5953-5955 / 5955-5957 / 5957-5958 / 5957-5959 / 5958+ / 5962+ in entry 2. Frames 133 and 134 are t=60.1 and 62.3, inside eff3's declared t in (58,64). Also retracts "the developer splash is one composited quad" -- the same bug, which the port refuted by arithmetic first (a 259-tall box cannot contain three logos spanning y 164..585). It draws three logos and three glows as separate quads in one indices=24 call; the 525x259 was gamearts_eff merged with seta_eff. The 9-unit black hold is unaffected: those glows are the developer splash's first draw. The three "ruled out" explanations were all aimed at the wrong failure. In particular the invisible-draw check counted draws with NO geometry line, when the hiding place was draws with PARTIAL geometry. Refuting three wrong hypotheses is not evidence for a fourth, and a list of failure modes written by whoever built the instrument is the least likely to contain its blind spot. Recorded in METHOD.md, along with the tell that was present and explained away: a merged box carries the first quad's colour, which made one element's alpha read 255/127/254 on consecutive frames. New tool: tools/re-capture/quads_per_frame.py parses vertices in groups of four and warns when the logged quad count falls short of indices/4. Also guards a double-A-tap in ui_draw_capture.sh: the movie branch ignored that TARGET=menu had already tapped, so a run tapped A on the title at t=23s and again at t=27s on the transition; the guest faulted and Xenia dumped registers to stdout until the file reached 519 MB. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QsEPXWVaEpyfudtR6re1Pd
This commit is contained in:
@@ -2028,8 +2028,9 @@ decoded rule about vertex colour.
|
||||
|
||||
## 2026-08-29 — `ptlogo_back2eff3` is declared on the disc and never drawn by the game
|
||||
|
||||
✅ **measured**, and this one is actionable: **you draw `eff3` at t=60–62 and the
|
||||
console does not.**
|
||||
🔴 ~~**measured**, and this one is actionable: **you draw `eff3` at t=60–62 and the
|
||||
console does not.**~~ **RETRACTED — see the correction at the end of this file.
|
||||
The console DOES draw it. You were right to keep drawing all five.**
|
||||
|
||||
Last time I called `eff3`'s absence unexplained and withdrew a bad explanation for
|
||||
it. Re-examined against the **second** title build-in in the same capture — the
|
||||
@@ -2142,3 +2143,63 @@ differing pixels, not the difference.
|
||||
|
||||
Detail: [`docs/re/structures/boot-splash-gap-measured.md`](../re/structures/boot-splash-gap-measured.md).
|
||||
|
||||
## 2026-08-29 — RETRACTION: the console draws all five flashes, including `eff3`
|
||||
|
||||
🔴🔴 **My "the game never draws `ptlogo_back2eff3`" was wrong.** You declined to act
|
||||
on it — *"I will not stop drawing an element on a claim whose own identification
|
||||
excludes that element from its bounding box"* — and that judgement was correct
|
||||
twice over: the identification was broken, and so was the finding built on the
|
||||
same instrument.
|
||||
|
||||
Parsed properly, **all five flashes fire in both title entries in the declared
|
||||
stagger**:
|
||||
|
||||
| element | entry 1 | entry 2 | declared |
|
||||
|---|---|---|---|
|
||||
| `eff1` | 130–131 | 5953–5955 | flash t54–58 |
|
||||
| `eff2` | 133 | 5955–5957 | flash t58–62 |
|
||||
| **`eff3`** | **133–134** | **5957–5958** | **flash t60–64** |
|
||||
| `eff4` | 133–135 | 5957–5959 | flash t62–66 |
|
||||
| `eff`/`eff5` | 134 → | 5958 → | holds |
|
||||
| `ptlogo_back2` | 136 → | 5962 → | holds |
|
||||
|
||||
Frames 133/134 are t = 60.1 and 62.3 — inside `eff3`'s declared window. **The disc
|
||||
was right about every element; my reading of the oracle was wrong.**
|
||||
|
||||
### The mechanism, because it invalidated your developer-splash correction's twin
|
||||
|
||||
A draw **batches several quads** — `indices=4` is one, `indices=8` two,
|
||||
`indices=24` six — and the log dumps only the first **8 vertices**. Min/max over a
|
||||
line's vertex list therefore *merges* quads.
|
||||
|
||||
`eff3` is batched with `eff4`, and because the wipe family is right-aligned, `eff3`
|
||||
(788…1196) lies **entirely inside** `eff4` (447…1196). The union is **exactly
|
||||
`eff4`'s extent** — the merged box matched `eff4` to 1 px and `eff3` simply
|
||||
disappeared, with nothing anomalous to notice.
|
||||
|
||||
🔴 **And your developer-splash refutation was the same bug**, which you found by
|
||||
arithmetic before I found it by measurement. `525×259` was `gamearts_eff` merged
|
||||
with `seta_eff`. The splash draws three logos and three glows as separate quads.
|
||||
⚠️ The **9-unit black hold is unaffected** — those glows are the developer
|
||||
splash's first draw, so frame 130 is still its first drawn frame.
|
||||
|
||||
### The part worth keeping
|
||||
|
||||
I reported three alternative explanations "ruled out". All three were aimed at the
|
||||
wrong failure — in particular, my "a draw the log cannot see" check counted draws
|
||||
with **no** geometry line, when the hiding place was draws with **partial**
|
||||
geometry. **Refuting three wrong hypotheses is not evidence for a fourth**, and a
|
||||
list of failure modes written by whoever built the instrument is the least likely
|
||||
to contain that instrument's blind spot.
|
||||
|
||||
`tools/re-capture/quads_per_frame.py` now parses vertices in groups of four and
|
||||
warns whenever the logged quad count falls short of `indices / 4`.
|
||||
|
||||
✅ Your independent derivation of **239.816** from the exported keyframes, against
|
||||
my 239.8 from the draw stream, is the check that conversion needed — it is the
|
||||
denominator of the 9-unit hold you now ship.
|
||||
|
||||
❔ **Still not settled: the main-menu sweeps.** Two capture attempts failed — one
|
||||
crashed the guest (a double Ⓐ tap, now guarded), one drifted to a flight screen.
|
||||
The title answer stands; the menu is unmeasured.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user