diff --git a/docs/port/HANDOFF.md b/docs/port/HANDOFF.md index 7a6eddb1..cb528a12 100644 --- a/docs/port/HANDOFF.md +++ b/docs/port/HANDOFF.md @@ -386,6 +386,21 @@ authored version can be deleted. that settles, and it is not a timeline. [`structures/ui-group-start-time.md`](../re/structures/ui-group-start-time.md) +* ✅ **The splash's backdrop is an opaque black `.prm` from the bundle, painted + first.** Measured: every frame opens with the clear and then an **untextured + 1280×720 quad, vertex colour `FF000000` in all 212 frames** — matching + `palogo_eff0.prm`'s declaration (`kind 0x10`, pivot 640×360, one keyframe, + `a=255`). That is why a splash render needs `--black` rather than the default + backdrop. ⚠️ Not a general rule: the main menu's measured order puts one `.prm` + at position 4 and the other **last** (the transition fade). + ⚠️ **And the splash's recorded paint order `[0,2,4,6,1,3,5]` is a temporal + sequence, not a depth order.** Its glows and logos never share a frame, so + their relative depth was never observable — the vector records the order they + were *seen in*. Element 0 (the `.prm`) is a genuine depth observation because it + co-occurs with everything. **Do not read the rest as depth and composite all + seven at once** — that is precisely what fails to reproduce the screen. + [`structures/ui-prm-primitives.md`](../re/structures/ui-prm-primitives.md) + * **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/METHOD.md b/docs/re/METHOD.md index 9f2456a1..0e408a53 100644 --- a/docs/re/METHOD.md +++ b/docs/re/METHOD.md @@ -826,3 +826,11 @@ agent's loop prompt, i.e. nowhere durable. See [`README.md`](README.md) for the four-entry enumeration showed none exists, and the question closed statically. A hypothesis that predicts an artefact can be killed by looking for the artefact, which is often far cheaper than measuring the behaviour. +* **Two things that never co-occur have no observable relative order.** A + "measured paint order" recorded from a running game looks like depth + information throughout, but between elements that never share a frame it can + only be the sequence they were *seen in*. The splash's vector mixes both kinds + — element 0 is real depth (it co-occurs with everything), the glow/logo split + is not — and the difference matters, because reading it as depth invites + compositing every element at once. When recording an order, note which pairs + actually appeared together. diff --git a/docs/re/REFUTED.md b/docs/re/REFUTED.md index 48dba6bb..e8937ec8 100644 --- a/docs/re/REFUTED.md +++ b/docs/re/REFUTED.md @@ -595,3 +595,9 @@ neighbourhood, not just the line. glows — so whichever was active, a subset of its elements was drawn at a time. Selective activation is reinstated on evidence. [`ui-group-start-time.md`](structures/ui-group-start-time.md) +* "the splash's `measured_paint_order` records a front-to-back depth order" → + **mis-typed.** Its glows and logos never share a frame (0 overlap in 235), so + their relative depth was never observable — between those halves the vector + records the *temporal* order they were seen in. Element 0 (`palogo_eff0.prm`) + is a genuine depth observation, because it co-occurs with everything. + [`ui-prm-primitives.md`](structures/ui-prm-primitives.md) diff --git a/docs/re/structures/ui-prm-primitives.md b/docs/re/structures/ui-prm-primitives.md index b6a29cae..36fae6e4 100644 --- a/docs/re/structures/ui-prm-primitives.md +++ b/docs/re/structures/ui-prm-primitives.md @@ -174,3 +174,54 @@ have never been measured, so they are not in the table. * ❔ **The 8 non-full-screen ones**, including two with a zero dimension. * 🟡 `kind = 0x3010` (38 elements) is `0x10` plus `0x3000`, the button-record bits — a primitive that is part of a button. Unexamined. + +--- + +## ✅ Measured on the splash: the `.prm` paints FIRST, full-screen, opaque black + +**2026-08-29.** This page recorded that where a `.prm` paints "on a screen +without a measured order is unsolved". For the developer splash it is now +measured, from the 235-frame draw capture. + +Every frame begins with two full-screen draws before any sprite: + +``` +f120: [1280x720] [1280x720] [499x241] … + ^clear ^this one +``` + +The second is **untextured** in all **212** frames, with a constant vertex colour +of **`FF000000`** — opaque black. That matches `palogo_eff0.prm`'s declaration +exactly: + +| declared | observed | +|---|---| +| `kind = 0x10` (the primitive marker) | untextured draw | +| pivot (640,360) → **1280×720** | 1280×720 quad | +| **one** keyframe, `a = 255` | constant across 212 frames | +| — | vertex colour `FF000000` | + +So the splash's backdrop is an **opaque black full-screen quad from the bundle +itself**, painted behind every sprite — not a clear colour, which is why our +splash renders need `--black` to match. + +⚠️ **Not a general rule.** The measured *main menu* order puts `pteff02.prm` at +position 4 and `pteff00.prm` **last** — that one is the screen-transition fade. +A `.prm` paints where its screen's order says; the splash's happens to be first. + +## ⚠️ And the splash's "measured paint order" is a SEQUENCE, not a depth order + +`measured_paint_order` returns `[0, 2, 4, 6, 1, 3, 5]` for the splash, commented +*"the full-screen `.prm`, then all three glows, then the three logos"*. + +The draw capture shows the glows and the logos **never appear in the same frame** +— 0 overlapping frames in 235 ([group start time](ui-group-start-time.md)). Two +elements that never co-occur have **no observable relative depth**. What that +vector records between its glow half and its logo half is the *temporal* order +they were seen in, not a front-to-back relationship. + +🟡 This does not make the render wrong — compositing them in that order is +harmless, and the ✅ for element 0 (the `.prm` first) *is* a real depth +observation, since it co-occurs with everything. But the type of the claim +matters for a consumer: **treating the vector as depth invites compositing all +seven elements at once, which is exactly what does not reproduce the screen.**