This repository has been archived on 2026-09-16. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
Syplheed-Reborn/docs/re/five-screens-acceptance.md
Sylpheed RE agent fb6376a548 docs: one page saying how good the five screens actually are
The answers for the port's five screens were spread across a dozen
documents and none of them said how good the result IS. Measured:

  screen              build  drawn   corr vs capture  alignment
  title                 4    15/24      +0.9500       dy=0 dx=0
  main menu             5    11/16      +0.9460       dy=0 dx=0
  EXTRAS                6    13/18      +0.9440       dy=0 dx=0
  publisher splash     10     2/3       +0.9600       dy=0 dx=0
  developer splash     11     6/7       +0.9643       dy=0 dx=0

Every one aligns at exactly zero offset over a +/-2 px search in both
axes, so placement and scale are right and the residual is tone and
detail rather than geometry.

The drawn/total counts are not slack. Each undrawn element has a reason
already documented: kind & 0x4 ghost instances (4 on the title), .prm
primitives off by default (2 per menu, 1 per splash), loop* animations
off by default and off-screen at rest (2 per menu screen), and the 8AX
name mismatch (1 per menu screen) whose art reaches the screen anyway via
ptbase. 4+2+2+1 = 9, 2+2+1 = 5, 1. Nothing unexplained.

The residual is ranked for a consumer: tone first (gamma 1.34-1.49, the
game's own display ramp), then 8AX resolution, then one drawable
paint-order tie on EXTRAS alone, then rotation-decoded-but-not-rendered
which does not affect these five at rest.

Reach stated: these are static composites at the resting pose against
single frames, so nothing here speaks to animation, and a whole-frame
correlation is a sanity figure rather than a per-element check.
2026-08-29 04:04:15 +00:00

64 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ✅ The five screens, end to end — what each one is actually worth
**Status:** ✅ measured, 2026-08-29. One page, because the answers for these five
screens are otherwise spread across a dozen documents and none of them says how
good the result *is*.
Rendered with `sylpheed-cli screen render` (adding `--all --black` for the two
splash halves) and correlated against the committed live captures.
| screen | build | elements drawn | corr vs capture | alignment |
|---|---|---|---|---|
| title | 4 | 15 / 24 | **+0.9500** | dy=0 dx=0 |
| main menu | 5 | 11 / 16 | **+0.9460** | dy=0 dx=0 |
| `EXTRAS` | 6 | 13 / 18 | **+0.9440** | dy=0 dx=0 |
| publisher splash | 10 | 2 / 3 | **+0.9600** | dy=0 dx=0 |
| developer splash | 11 | 6 / 7 | **+0.9643** | dy=0 dx=0 |
Every one aligns at **exactly zero offset** — searched ±2 px in both axes — so
placement and scale are right and the residual is tone and detail, not geometry.
## Every omission is accounted for
The counts are not slack; each undrawn element has a reason already documented:
| screen | not drawn | why |
|---|---|---|
| title | `ptlogo1`×2, `ptlogo2`×2 | `kind & 0x4` **ghost instances** — the draw capture shows one quad per wordmark |
| | `pteff00.prm`, `pteff02.prm` | `.prm` primitives, off without `--primitives` |
| | `ptloop01.rat`, `ptloop02.rat` | `loop*` animations, off without `--animated`; at rest both sit off-screen |
| | `pteff04.t32` | the **`8AX` name mismatch** — the art *is* on screen, drawn via `ptbase2` ([8AX](structures/ui-8ax-fullres-background.md)) |
| main menu, `EXTRAS` | 2 `.prm` + 2 `loop*` + `pteff05.t32` | same three reasons |
| both splashes | `palogo_eff0.prm` | `.prm` primitive |
4 + 2 + 2 + 1 = 9 on the title; 2 + 2 + 1 = 5 on each menu; 1 on each splash.
**Nothing is unexplained.**
## What the residual is, per screen
Ranked by what a port would notice:
1. **Tone.** The capture is darker than the composite by a gamma of ≈1.341.49
([tone curve](structures/ui-render-tone-curve.md)) — the game's own display
ramp, not an emulator artefact. This is the largest single contributor to the
0.940.96 rather than higher.
2. **`8AX` resolution.** The background is drawn from the 640×360 `ptbase`
upscaled 2×, where the game uses the native 1280×720 `8AX`
([measured](structures/ui-8ax-fullres-background.md), two screens at 68 % of
ceiling).
3. **Paint-order ties on `EXTRAS` only.** One drawable overlapping tie
(`ptframe3`×`ptframe4`), and the capture is consistent with our order
([check](structures/ui-paint-order-derived-check.md)). The other four screens
use orders measured from the game.
4. **Rotation is decoded but not rendered** — and does not affect any of these
five at rest ([rotation](structures/ui-keyframe-rotation.md)).
## Reach
* These are **static composites at the resting pose** against **single frames**.
Nothing here says the animation is right; Q1's interpolation law is settled but
a multi-keyframe group's absolute timing is not
([time unit](ui-keyframe-time-unit.md)).
* Correlation on a whole frame is dominated by large areas. It is a sanity figure,
not a per-element check — the per-element work is in the documents linked above.