re: test the port's black-backdrop predicate disc-wide -- exact locally, rare globally

sylpheed-port proposed that a screen declaring a full-screen .prm at t=0 with
fade == 0xff000000 is standalone, and one without it is composited: 12/4 across
their sixteen exported screens, every exception independently known to be
composited. They asked for it against archives they do not have. That is my lane.

CONTROL: the predicate reproduces their split exactly. GP_TITLE's sixteen bundles
give 12 with and 4 without, the four without being entries 0, 1, 2, 3 --
build_00, build_01, press_start, press_start_jp -- and the element names match
(pteff00.prm, palogo_eff0.prm, pgloading_eff00.prm). Independent derivation from
the disc, not a re-run of their tool.

DISC-WIDE it is rare: 76 of 965 screen builds, 7.9 %. GP_STAGE_CLEAR 4/4,
GP_SYSTEM 2/2 and GP_TUTORIAL 2/2 are all-yes; GP_HANGAR_ARSENAL is 0 of 390, and
GP_READY_ROOM, GP_OPTIONS, GP_PAUSE_MENU and GP_GAMEOVER are all zero.

So it is not a general standalone/composited test. GP_OPTIONS and GP_PAUSE_MENU
are screens a player plainly sees as screens and declare no backdrop; read as
"composited" the rule would make 92 % of the game's screens composited, which the
archives do not support. What it appears to separate is narrower: screens that
BEGIN FROM BLACK from everything else. A pause menu over gameplay, a hangar over a
3D scene and a plate over a title all lack a backdrop without being the same kind
of thing -- the negative class is heterogeneous, which is what a two-way rule
cannot express.

For the port: exact within GP_TITLE, so --black for those twelve is justified from
the file rather than assumed; do not carry it into the four archives they have yet
to export, where in three of them it classifies every screen alike.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wuu56cE8vJGTBtn1ppsk8v
This commit is contained in:
sylph-decoder
2026-08-30 17:36:10 +00:00
parent a1af583725
commit 82b20bc51d
3 changed files with 175 additions and 0 deletions

View File

@@ -472,3 +472,45 @@ cargo run -p sylpheed-formats --example prm_forced_first
cargo run -p sylpheed-formats --example prm_occlusion_check
SYLPHEED_DISC=/disc cargo test -p sylpheed-formats --test ui_forced_backdrop_disc
```
## 🟡 The opaque-black backdrop as a PREDICATE — sound where it is used, not general
`sylpheed-port` turned the splash's `palogo_eff0` into a candidate rule: *a screen
declaring a full-screen `.prm` at `t=0` with `fade == 0xff000000` is **standalone**;
one without it is **composited***. On their sixteen exported screens it splits 12/4
with every exception independently known to be composited. They asked for it
against archives they do not have. Tested:
[`data/black-backdrop-predicate.txt`](../data/black-backdrop-predicate.txt).
**The control reproduces their split exactly**`GP_TITLE`'s sixteen bundles
give 12 with and 4 without, and the four without are entries **0, 1, 2, 3**:
`build_00`, `build_01`, `press_start`, `press_start_jp`. Element names match too
(`pteff00.prm`, `palogo_eff0.prm`, `pgloading_eff00.prm`).
🔴 **Disc-wide it is rare: 76 of 965 screen builds, 7.9 %.**
| archive | with / total |
|---|---|
| `GP_STAGE_CLEAR`, `GP_SYSTEM`, `GP_TUTORIAL` | 4/4, 2/2, 2/2 — **all** |
| `GP_SAVE_LOAD` | 10/18 |
| `GP_DIALOG` | 34/105 |
| `GP_HANGAR_ARSENAL` | **0 / 390** |
| `GP_READY_ROOM` | 0/60 · `GP_OPTIONS` 0/14 · `GP_PAUSE_MENU` 0/6 · `GP_GAMEOVER` 0/10 |
⚠️ **So it is not a general standalone/composited test.** `GP_OPTIONS` and
`GP_PAUSE_MENU` are screens a player plainly sees as screens, and they declare no
backdrop; `GP_HANGAR_ARSENAL` declares none across **390** builds. Read as
"composited", that would make 92 % of the game's screens composited, which the
archives do not support.
🟡 **What it does appear to separate is narrower and still useful: screens that
begin from BLACK from everything else.** A pause menu over gameplay, a hangar over
a 3D scene and a plate over a title all legitimately lack a black backdrop, but
they are not the same kind of thing — the negative class is **heterogeneous**, and
that is exactly what a two-way rule cannot express.
📌 **For the port: keep using it where you found it.** Within `GP_TITLE` it is
exact, and `--black` for those twelve is justified from the file rather than
assumed. Do **not** carry it into the four archives you have yet to export — in
three of them it would classify every screen the same way.