port: the off-edge splash residual is not tonal, and I compared it to the wrong floor
Ran the per-level tone correction I said was untested, deriving the curve on one splash and applying it to the other because fitting and scoring on the same pixels succeeds by construction. developer_logos off-edge: uncorrected 2.7512, single gamma 0.85 gives 0.9040, the cross-applied per-level curve gives 1.3795 -- worse than a single exponent. The control settles it: publisher_logo scored with its OWN fitted curve gives 1.4209 against 1.4440 for gamma 0.85. A tone curve fitted on those very pixels improves them by 1.6%. If the residual were a tone-mapping error, fitting the tone mapping on its own training data would collapse it. The residual is not tonal. And it is smaller than I made it sound. I called 0.82-1.42 '15-25x the 0.06 rasterisation floor', but 0.06 is render-to-render reproducibility -- the floor for asking whether the renderer repeats itself. For render-versus-capture the floor includes 8-bit quantisation on both sides: uniform rounding is RMSE 1/sqrt(12) = 0.289, so two independently quantised images differ by ~0.41 before anything is wrong. Against that, 0.90 is ~2.2x, about one level in 255. Same error as comparing an in-box margin to a whole-frame spread, which I flagged in someone else's work two days ago. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N7FiFFFwbvG2uxdcEh8HyF
This commit is contained in:
@@ -9,7 +9,7 @@ dies, which is what this file is for.
|
||||
|
||||
<!-- INDEX: generated by tools/port/index-decisions -- do not hand-edit -->
|
||||
|
||||
185 sections. Search this before re-deriving anything.
|
||||
186 sections. Search this before re-deriving anything.
|
||||
|
||||
* [P0 — the exporter, 2026-08-28](#p0--the-exporter-2026-08-28)
|
||||
* [P1 — Godot draws the screen, 2026-08-28](#p1--godot-draws-the-screen-2026-08-28)
|
||||
@@ -196,6 +196,7 @@ dies, which is what this file is for.
|
||||
* [Their draw-stream result checked against my export — three confirmations and one correction](#their-draw-stream-result-checked-against-my-export--three-confirmations-and-one-correction)
|
||||
* [Nested leaves may advance at half rate — a quantified defect in shipped output](#nested-leaves-may-advance-at-half-rate--a-quantified-defect-in-shipped-output)
|
||||
* [Their Route 1 is closed for the whole archive, not just the title](#their-route-1-is-closed-for-the-whole-archive-not-just-the-title)
|
||||
* [The off-edge splash residual is **not** tonal — and I was comparing it to the wrong floor](#the-off-edge-splash-residual-is-not-tonal--and-i-was-comparing-it-to-the-wrong-floor)
|
||||
|
||||
<!-- /INDEX -->
|
||||
## P0 — the exporter, 2026-08-28
|
||||
@@ -10520,3 +10521,52 @@ screen is worth their time trying.
|
||||
clocks I enumerated — looping focus record, spin, leaf — are all sub-records, and
|
||||
that is now explained rather than observed. Their plate finding is the same shape:
|
||||
`ptbtn00` is a one-shot fade and the repeating pulse comes from its nested `.rat`.
|
||||
|
||||
## The off-edge splash residual is **not** tonal — and I was comparing it to the wrong floor
|
||||
|
||||
I said the remaining 0.82–1.42 off-edge residual was *"consistent with the binned
|
||||
tone table leaving about a level of error"* and that a per-level correction was
|
||||
the test I had not run. Ran it, deriving the curve on one splash and applying it
|
||||
to **the other**, because fitting and scoring on the same pixels succeeds by
|
||||
construction:
|
||||
|
||||
| `developer_logos`, off-edge | RMSE |
|
||||
|---|---|
|
||||
| uncorrected | 2.7512 |
|
||||
| **single gamma 0.85** | **0.9040** |
|
||||
| per-level curve from `publisher_logo` | 1.3795 |
|
||||
|
||||
🔴 **The per-level curve is worse than a single exponent**, cross-applied. And the
|
||||
control that settles it:
|
||||
|
||||
| `publisher_logo`, off-edge | RMSE |
|
||||
|---|---|
|
||||
| single gamma 0.85 | 1.4440 |
|
||||
| **its own fitted curve** | **1.4209** |
|
||||
|
||||
**A tone curve fitted on those very pixels improves them by 1.6 %.** If the
|
||||
residual were a tone-mapping error, fitting the tone mapping on its own training
|
||||
data should collapse it. It does not, so **the residual is not tonal** — my
|
||||
hypothesis is refuted by the strongest test available to it.
|
||||
|
||||
### ⚠️ And the residual is smaller than I made it sound
|
||||
|
||||
I called 0.82–1.42 *"15–25× the 0.06 rasterisation floor"*. That is the wrong
|
||||
comparison: 0.06 is **render-to-render** reproducibility, which is the floor for
|
||||
asking *does my renderer repeat itself*. For **render-versus-capture** the floor
|
||||
includes 8-bit quantisation on both sides — uniform rounding error has RMSE
|
||||
1/√12 ≈ 0.289 per image, so a difference of two independently quantised images
|
||||
sits at **≈ 0.41** before anything is wrong at all.
|
||||
|
||||
Against that floor, 0.90 is **~2.2×**, not 25×. It is roughly **one level in 255**.
|
||||
|
||||
📌 So the honest statement of the splash rows is stronger than what I had:
|
||||
off-edge, after a single gamma, the port differs from the game by about **twice
|
||||
the irreducible quantisation floor**, and the shape of what remains is *not*
|
||||
tonal. I quoted the same number twice this week against a floor chosen for a
|
||||
different question — the same error as comparing an in-box margin to a whole-frame
|
||||
spread, which I flagged in someone else's work two days ago.
|
||||
|
||||
⚠️ What is still unexplained is now a much smaller thing: ~0.5 RMSE above
|
||||
quantisation, off-edge, non-tonal, on screens with no free-running element. I have
|
||||
no candidate for it and I am not going to invent one.
|
||||
|
||||
Reference in New Issue
Block a user