re: the splash blur is a TEXTURE -- palogo_*_eff is a baked 10-px glow

Play-test finding 4, answered as a mechanism and from the disc, so it
generalises instead of describing one boot.

ui-splash-draw-pass.md excluded a post-process from GPU state and closed
with "that softness is in the texture or in which quads are drawn, not in
a pass", leaving the two unseparated. It is both, and they are one fact:
each logo ships a second texture that IS the blur -- the same artwork
outset by exactly 10 px per side, concentric to <=1.5 px, drawn as its
own alpha-over quad.

Three results, each with its control:

* The capture's eight anonymous quads are NAMED from the disc. Predicting
  each NDC rect from declared position + decoded sprite size matches all
  eight bijectively; every match <=0.0061, every runner-up >=0.0272, a
  4.5-8.9x margin. That margin is the control -- eight similar boxes
  would match anything.

* REFUTES splash-quad-timeline.txt's "the same three rects scaled
  slightly larger" (my own earlier wording). The x and y scale factors
  differ by up to 0.28; a uniform scale cannot do that, a fixed 10-px
  border can. The conclusion it supported (draw all six quads) stands;
  the model was wrong, and the wrong model tells a port to scale a
  sprite.

* The T8aD blend bit tested OUT of sample on entries 10/11, which were
  not in its 35-row fit and are the screens under complaint.
  Pre-registered additive=false for all eight against 0 additive draws in
  1048; held 8/8, with the control still reporting 9 additive on entry 6.

Also resolves a REFUTED.md 🟡 <our-reader> in the reader's favour: the
prediction is ours and the target is the oracle, so the agreement is
evidence about the reader rather than a claim resting on it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jc4pciRArGHfxGGhEbwp5t
This commit is contained in:
sylph-decoder
2026-09-01 18:24:14 +00:00
parent 958eca6b6b
commit e263041337
5 changed files with 448 additions and 0 deletions

View File

@@ -499,6 +499,74 @@ constructed in `sub_8220B610` and released in `sub_821A6470`. A *decoder* betwee
`wButtons` and the menus is where repeat timing, edge detection and remapping
live. That is the next read.
---
## ✅✅ 2026-09-01 (sixth) — **THE BLUR IS A TEXTURE.** `palogo_*_eff.t32` is a baked 10-px glow
Play-test finding 4 is **answered as a mechanism**, and the answer is on the disc,
so it generalises rather than describing one boot.
[`../re/splash-glow-is-a-baked-texture.md`](../re/splash-glow-is-a-baked-texture.md)
> **Each logo ships a SECOND texture that IS the blur** — the same artwork outset
> by exactly **10 pixels on every side** — drawn as its own alpha-over quad,
> concentric with the logo. There is no blur pass, no filter, and nothing to
> compute. Draw the logo alone and you lose the glow completely.
**Your four missing sprites**, by name:
```
palogo_sqex_eff.t32 palogo_gamearts_eff.t32 palogo_seta_eff.t32 palogo_anima_eff.t32
```
### The capture's Q0…Q7 now have names
I predicted each quad's NDC rect from the DECLARED position and the DECODED
sprite size and matched it against the vertex stream. **8 named, 0 unmatched**,
every match ≤ 0.0061 and every runner-up ≥ 0.0272 — a 4.58.9× margin, which is
the control that stops eight similar boxes matching anything.
| quad | is | | quad | is |
|---|---|---|---|---|
| Q0 | `palogo_sqex.t32` | | Q4 | `palogo_gamearts_eff.t32` |
| Q7 | `palogo_sqex_eff.t32` | | Q5 | `palogo_seta_eff.t32` |
| Q1 | `palogo_gamearts.t32` | | Q6 | `palogo_anima_eff.t32` |
| Q2 | `palogo_seta.t32` | | Q3 | `palogo_anima.t32` |
### 🔴 I told you the companions were "the same rects scaled slightly larger". WRONG — do not scale
That was an inference off four rounded NDC numbers. The disc says they are
**concentric 10-px outsets**, and their x/y scale factors differ by up to **0.28**:
| | logo | `_eff` | Δ | scale x / y |
|---|---|---|---|---|
| `sqex` | 666×68 @ (309,330) | 686×89 @ (299,319) | +20×+21 px | 1.030 / **1.309** |
| `gamearts` | 500×71 @ (390,164) | 521×91 @ (379,154) | +21×+20 px | 1.042 / **1.282** |
| `seta` | 240×89 @ (521,316) | 261×110 @ (511,305) | +21×+21 px | 1.087 / **1.236** |
| `anima` | 388×136 @ (446,449) | 407×156 @ (435,440) | +19×+20 px | 1.049 / **1.147** |
A scaled copy has a border that grows with the sprite. The real one is 10 px
whatever the sprite. **Load the `_eff` texture; do not transform the logo.**
### And they are source-over, not additive — tested OUT of sample
The blend bit was fitted on entries 2/4/5/6. Entries **10 and 11 were not in that
sample**. Pre-registered: the census finds additive in **0 of 1 048** splash
draws, so all eight must read `additive = false`. **They do — 8/8**, with a
control showing the same accessor still reports 9 additive on entry 6.
**So do not "add a glow" by switching these to additive.** That would be wrong in
a new way. The softness is entirely the texture's own alpha.
### Timing of the halo
Declared `0@0 → 255@15 → (255 or 212)@30 → 0@45`, against the logo's
`0@15 → 255@30 → … → 0@210` (developer) / `0@255` (publisher). **The halo flashes
during the entry and is gone for the whole hold** — ~45 units — which is exactly
the moment the play-test describes as too soft in your build.
Also new on the formats API and pinned below: `sprite_blend_additive`,
`blend_additive_by_name`, `sprite_header_word_04`, `header_word_04_by_name`, so
you can stop keying a blend map by screen name.
---
## ✅✅ 2026-09-01 — **THE SPLASHES HAVE NO POST-PROCESS.** One pass, source-over, alpha in the vertex stream