re: the TITLE's blend states, the menu replicated twice, and the sweeps are on screen
Two more emulator runs close two of the three reach limits on the blend page. THE TITLE (entries 4 + 2 composited). Everything alpha-over except the two rotated sweep strips and -- the finding -- ptbtn00f, the PRESS (A) plate's focused variant, which is ADDITIVE while its own base ptbtn00 is not. That is what the documented plate pulse is made of, and a port drawing both alpha-over cannot reach the pulse's peak by any pacing. And ptlogo_back2 / ptlogo_back2eff are ALPHA-OVER. They are frame-shaped, large, dark and 94 %/87 % transparent -- every surface property the menu's ptframe* have -- so 'frame-shaped and mostly transparent implies additive' is refuted on the one screen that could test it. THE MENU replicates draw for draw in two further sessions; the one-session caveat is retired. THE VERTEX CAP was 8 = two quads, so a batched draw reported its first two elements and dropped the rest. Raised to 64. This is why ptframe4, pteff21, pteff22 and pteff23 looked like elements the game never draws: EXTRAS' 24-index additive draw holds six quads and the log printed two. THE SWEEPS are on screen on the main menu in every captured frame, stepping ~0.03 NDC per frame in opposite directions with their vertex alpha ramping, at different phases in two sessions. The leaf group runs on the menu. What that does not say is how much they contribute. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wuu56cE8vJGTBtn1ppsk8v
This commit is contained in:
@@ -111,3 +111,90 @@ neither is guessed at here.
|
||||
screens the port ships is in the table except the two above and `pteff10`, which
|
||||
did not appear as an identifiable quad. The title screen (build 4) was **not**
|
||||
captured.
|
||||
|
||||
---
|
||||
|
||||
## 2026-08-31 (later) — the TITLE, and the reach closed on two of its three limits
|
||||
|
||||
The section above ended: *"two screens, one session ... The title screen (build 4)
|
||||
was **not** captured."* Two more emulator runs close both.
|
||||
|
||||
[`data/ui-blend-title-and-replication.txt`](../data/ui-blend-title-and-replication.txt) ·
|
||||
[`captures/ui-draws/blend-title-2026-08-31.log`](../captures/ui-draws/blend-title-2026-08-31.log) ·
|
||||
[run 2](../captures/ui-draws/blend-main-menu-run2-2026-08-31.log) ·
|
||||
[run 3](../captures/ui-draws/blend-main-menu-run3-2026-08-31.log)
|
||||
|
||||
### The title — 33 draws, 4 frames. The live title is entries **4 + 2** composited.
|
||||
|
||||
| element | quad px | disc | blend |
|
||||
|---|---|---|---|
|
||||
| `ptbase2` | 1280 × 720 @2× | 640×360 | alpha-over |
|
||||
| the two rotated sweep strips | 883×1134, 1299×1303 | rotated AABBs | **ADDITIVE** |
|
||||
| `ptlogo_back2eff` | 1132.8 × 280.8 | 1133×280 | **alpha-over** |
|
||||
| `ptlogo_back2` | 1120.0 × 262.8 | 1118×262 | **alpha-over** |
|
||||
| `ptlogo1` | 915.2 × 115.2 | 919×113 | alpha-over |
|
||||
| `ptlogo2` | 992.0 × 104.4 | 992×104 | alpha-over |
|
||||
| `ptlogo_tm` | 38.4 × 18.0 | 37×17 | alpha-over |
|
||||
| `ptcopyright` | 691.2 × 18.0 | 694×20 | alpha-over |
|
||||
| `ptbtn00` — the `PRESS Ⓐ` plate | 512.0 × 50.4 | 513×50 | alpha-over |
|
||||
| **`ptbtn00f`** — its focused variant | 537.6 × 75.6 | 537×76 | **ADDITIVE** |
|
||||
|
||||
📌 **Two things here matter more than the rest.**
|
||||
|
||||
**`ptbtn00f` is additive and `ptbtn00` is not.** The plate's highlight variant is
|
||||
composited additively over its own base — which is what the documented **pulse**
|
||||
is made of, and it means a port that draws both alpha-over cannot reproduce the
|
||||
pulse's peak no matter how it paces the ramp.
|
||||
|
||||
🔴 **`ptlogo_back2` and `ptlogo_back2eff` are ALPHA-OVER.** They are the title's
|
||||
frame-shaped elements, they are large, dark and 94 %/87 % transparent — every
|
||||
surface property the menu's `ptframe*` have — and the game does **not** draw them
|
||||
additive. So *"frame-shaped and mostly transparent ⇒ additive"* is refuted on the
|
||||
one screen where it could be tested, and the per-element table remains the only
|
||||
safe reading.
|
||||
|
||||
### The main menu, replicated in **two more sessions**
|
||||
|
||||
Runs 2 and 3, separate boots hours apart, reproduce the menu's blend assignment
|
||||
**draw for draw**: same states, same quad sizes, same identifications. The
|
||||
"one session" caveat is retired.
|
||||
|
||||
Run 3 also carries a Canary fix worth its own line: the vertex dump was capped at
|
||||
**8 vertices = two quads**, so a batched draw reported its first two elements and
|
||||
silently dropped the rest. Raised to 64. The menu's 24-index button draw now
|
||||
resolves as **six** quads — the focus ring plus all five buttons, all alpha-over —
|
||||
where before it showed two.
|
||||
|
||||
⚠️ **The cap was not a display bug.** It is why `ptframe4`, `pteff21`, `pteff22`
|
||||
and `pteff23` were reported as appearing in **no** captured draw on `EXTRAS`: that
|
||||
screen's 24-index additive draw holds six quads and the log printed two.
|
||||
|
||||
## ✅ The sweep strips are ON SCREEN on the main menu, and they move
|
||||
|
||||
`sylpheed-port` flagged a real conflation in the section above: a quad's size
|
||||
identifies an element and says nothing about whether it is visible, and the blend
|
||||
and the visibility arrived in the same artefact. Their `authored/rendering.json`
|
||||
scopes the leaf loop to the **title** only.
|
||||
|
||||
The draw log does retain NDC positions, so this is answerable from the artefact
|
||||
already committed ([`tools/re-capture/sweep_positions.py`](../../../tools/re-capture/sweep_positions.py),
|
||||
[`data/sweep-strips-on-the-menu.txt`](../data/sweep-strips-on-the-menu.txt)):
|
||||
|
||||
| session | frame | strip A x-range | strip B x-range | vertex alpha |
|
||||
|---|---|---|---|---|
|
||||
| 1 | 0 | `0.69 … 2.08` | `−0.61 … 1.42` | `EF` / `9A` |
|
||||
| 1 | 4 | `0.72 … 2.11` | `−0.64 … 1.39` | `F0` / `9C` |
|
||||
| 1 | 5 | `0.76 … 2.15` | `−0.68 … 1.35` | `F2` / `9D` |
|
||||
| 2 | — | `0.24 … 1.62` | `−1.67 … 0.36` | `D7` / `C7` |
|
||||
|
||||
NDC spans `[−1, +1]`, so **both strips overlap the screen in every captured
|
||||
frame**, they **step ~0.03 NDC (~19 px) per frame in opposite directions**, and
|
||||
their per-vertex alpha ramps with them. Two sessions catch them at different
|
||||
phases, so they free-run. **The leaf group runs on the main menu.**
|
||||
|
||||
⚠️ **What this does not say.** That they *contribute* much. They are additive with
|
||||
vertex alpha 0.60–0.95 over a texture that is overwhelmingly low-alpha, and this
|
||||
measures submission and geometry, not the light they add. A port whose render
|
||||
looks worse with them visible has either a placement, a phase or a magnitude
|
||||
problem — but "the game does not draw them here" is not available as an
|
||||
explanation any more.
|
||||
|
||||
Reference in New Issue
Block a user