diff --git a/docs/port/HANDOFF.md b/docs/port/HANDOFF.md index 1e079aa8..b4300a41 100644 --- a/docs/port/HANDOFF.md +++ b/docs/port/HANDOFF.md @@ -61,6 +61,20 @@ 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's settled pose is `rest` — and always pass `--primitives`.** + Against a plate-free capture of the real screen, `screen render --build 4 + --black` edge-correlates **0.9163 at (0,0)**, so the geometry of `rest` is the + arrived pose; the timeline is not needed for the title. + ⚠️ **But without `--primitives` the whole frame is +13.14 too bright** (R +12.35, + G +13.58, B +13.48); with them, **+0.55**. The missing element is + **`pteff02.prm`**, the 25 % dim, and `--primitives` is off by default. **That is + the "washed-out cyan slab"** — a dim that should be there and isn't, not a glow + that shouldn't. Because the art is blue-dominant, the shortfall reads cyan. + 🟡 With the dim drawn the mean is right but per-pixel agreement is slightly + worse (edge-corr 0.9066, >20 diff px 108 051 → 162 636), so the blend is not + exactly the game's. 🟡 A separate hot spot of +25…+38 sits on the upper-right + `Z` swoosh, which a capture shows pink in the game and white in our render. + * **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: diff --git a/docs/re/ui-title-build-map.md b/docs/re/ui-title-build-map.md index 2f9b5b67..5dc0a8fd 100644 --- a/docs/re/ui-title-build-map.md +++ b/docs/re/ui-title-build-map.md @@ -351,3 +351,54 @@ This follows from the decoded sweeps plus a measurement, and the two agree: So the name `loop*.rat` is misleading — in this build the records animate **once** during the build-in and then rest off-screen. 🟡 This is about *these* groups on *this* screen; nothing here says no group anywhere loops. + +## ✅ The title's settled pose is `rest`, and the "washed-out slab" is a MISSING dim + +The port agent could not decide whether `rest` or its played-out timeline is the +title's arrived pose (they disagree by 142–247/255), and separately reported a +*"washed-out cyan glow slab over the title logo that the running game doesn't +have"*. The plate-free capture settles both. + +`sylpheed-cli screen render --build 4 --black`, edge-correlated against +[`live-title-build4-no-plate.png`](captures/title-builds/live-title-build4-no-plate.png) +— a capture of the real screen, so this is an independent oracle and not one +renderer checking another: + +> **0.9163 at shift (0,0)**, and per band 0.92 / 0.78 / 0.93. + +**Geometry is right**, so `rest` is the arrived pose for the title. + +### The slab is the 25 % dim, absent — not a glow, present + +`rest` alone is **uniformly too bright**, and the excess leans cyan: + +| render | mean (render − capture) | R | G | B | +|---|---|---|---|---| +| `--black` | **+13.14** | +12.35 | +13.58 | +13.48 | +| `--black --primitives` | **+0.55** | +1.30 | +0.89 | −0.54 | + +Drawing the `.prm` primitives collapses the excess to nothing. The element is +**`pteff02.prm`**, the 25 % dim quad (build 4, rest at `t=46`, fade `0x40` = 64 = +25 %) — and `--primitives` is **off by default**. + +So the "washed-out cyan slab" is not something being drawn that shouldn't be. It +is the **dim that should be drawn and isn't**: without it every pixel sits ~13 +high, and because the title art is blue-dominant the shortfall reads as a cyan +wash. ⚠️ Any consumer of `screen render` that omits `--primitives` on this screen +gets it. + +### 🟡 The residual: right on average, not right per pixel + +With primitives the *mean* is essentially exact (+0.55) but pixel agreement is +slightly **worse** — edge-correlation 0.9163 → **0.9066**, and pixels differing by +> 20 rise 108 051 → 162 636. So the dim's average contribution is right while its +application is not exactly the game's (blend mode or per-region alpha). Not +diagnosed. + +### 🟡 And a second, localised excess + +The per-tile map shows a hot spot in the **upper right** — tiles at +x ≈ 800–1279, y ≈ 112–225 run **+24.8 / +37.8 / +33.3** against ~+12 elsewhere. +That is where the title's `Z` swoosh sits, which a capture from the first +iteration of this work already showed **pink-tinted in the game and white in our +render**. Same region, still undiagnosed.