re(ui): settle 8AX vs ptbase statically -- the game draws the full-res one

I had parked this as "needs a per-draw capture recording texture base
addresses". It did not. 8AX (1280x720) and ptbase (640x360 at 200%) are
the SAME artwork at two resolutions, which is exactly why comparing
either against a capture is inconclusive -- and why comparing their
DIFFERENCE is not. Compute 8AX - upscale(ptbase), the detail only 8AX
has, and ask whether the capture contains it.

Both candidates are first mapped into the capture's tone domain with the
measured gamma; without that the residual is dominated by the tone
difference and the test is blind.

  main menu  corr +0.0475   controls +0.0032 shift, -0.0075 flip   68% of ceiling
  title      corr +0.0634   controls +0.0095 shift, +0.0086 flip   68% of ceiling

Two independent screens, both at 68% of the theoretical ceiling
(sd of the 8AX-only detail over sd of the capture residual), 7-15x their
matched controls. The controls preserve spatial correlation and destroy
only alignment, so they are what "no signal" looks like.

So the recommendation changes: resolve the name and draw 8AX at 1:1.
Upscaling ptbase 2x is wrong, not merely softer. Still do not draw both --
an opaque layer over an identical one costs fill and hides later changes,
and ptbase's element is the one carrying the keyframes, so a consumer
needs its timing with 8AX's pixels.

Also recorded and withdrawn: a cruder pixel-pair test gave 0.00-0.72 for
upscales, 0.98 native and 1.01 for the capture -- apparently decisive.
Additive noise raises both terms of that ratio equally and drives any
value toward 1; fitting a noise term, both "native + noise" and "bilinear
+ noise" reproduce the observed numbers. The conclusion is right, that
test does not establish it, and it is in REFUTED because the number looks
conclusive and is not.

Not shown: whether ptbase is also drawn underneath. 8AX is ~86% opaque
and carries the same art, so it would hide it either way.
This commit is contained in:
Sylpheed RE agent
2026-08-29 02:40:53 +00:00
parent aaaa08b164
commit 3490fba9e3
6 changed files with 140 additions and 15 deletions

View File

@@ -598,3 +598,16 @@ agent's loop prompt, i.e. nowhere durable. See [`README.md`](README.md) for the
checker went from 1 038 resolving / 16 missing to 1 049 / 5. +11 and 11
against 11 edits is the confirmation that the pass did what it said and touched
nothing else. A bulk edit without that arithmetic is a hope.
* **When two candidates carry the same content, compare their DIFFERENCE against
the oracle, not themselves.** `8AX` (1280×720) and `ptbase` (640×360 at 200 %)
are the same artwork, so no comparison of either against a capture can separate
them — every such test had been read as "inconclusive, needs a per-draw
capture". What separates them is `8AX upscale(ptbase)`: the detail only one
of them has. Correlating the capture's residual against *that* answered it
statically, on two screens, with matched controls.
* **A ratio that saturates at 1 under noise is not a discriminator.** A pixel-pair
test cleanly separated upscales (0.000.72) from native (0.98) and put the
capture at 1.01 — apparently decisive. Additive noise raises both terms of the
ratio equally and drives *any* value toward 1, and fitting a noise term showed
both hypotheses reproduce the observed numbers. Before believing a ratio, ask
what it does as noise grows.