From eb61368d23a19866f498cabf12893c3f9f94fa56 Mon Sep 17 00:00:00 2001 From: Sylpheed RE agent Date: Wed, 19 Aug 2026 06:30:23 +0000 Subject: [PATCH] =?UTF-8?q?docs:=20backlog=20=E2=80=94=20.prm=20decoded;?= =?UTF-8?q?=20the=20resting=20rule=20is=20the=20new=20blocker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/re/BACKLOG.md | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/docs/re/BACKLOG.md b/docs/re/BACKLOG.md index f9779d1..e06b276 100644 --- a/docs/re/BACKLOG.md +++ b/docs/re/BACKLOG.md @@ -78,10 +78,25 @@ See [`structures/ui-composable-bundles.md`](structures/ui-composable-bundles.md) **Opened by those two:** -* ❔ **`.prm` primitives are not decoded.** Every composite is missing them. On - the splash the measured order puts `palogo_eff0.prm` **first** — it is the - backdrop. Cheapest first step: dump the `.prm` child bytes of a bundle that has - exactly one and see whether it is a solid quad with a colour. +* ✅ **`.prm` primitives are decoded** (2026-08-19). Untextured full-screen + colour quads: 0 of 369 has a payload child, `kind & 0x10` ⟺ `.prm` with zero + exceptions in either direction, 361/369 are exactly 1280×720 at 100 % in the + corner, and the fill colour is the keyframe's `fade` ARGB — mostly black at + some alpha, i.e. the fade-to-black / dim / flash layers. + See [`structures/ui-prm-primitives.md`](structures/ui-prm-primitives.md). + **Still not composited**, for the reason below. +* ❔ **`Element::rest()` picks the wrong pose for a fade group.** This is now the + blocker on drawing `.prm`. The title's `pteff00.prm` is opaque → transparent → + transparent → opaque, a screen transition; the screen sits at the transparent + plateau, but `rest()`'s longest-dwell rule lands on the opaque endpoint — and + that element paints **last**, so drawing it blacks out the title. Candidate + rule: the resting pose is the longest run of *consecutive keyframes with equal + values*, not the longest gap. It is **not** `.prm`-specific — it would change + `rest()` for every element on the disc — so the first step is to A/B it against + the title framebuffer capture and the two verified screens before it lands. +* ❔ **Blend mode for the primitives.** Straight alpha is the assumption for the + black dim quads; the near-white flash (`0xf0ffffff`) and the coloured ones + (`0x60ff0000`, `0x0000ffd4`) may be additive. Nothing measured. * ❔ **What marks a focused state in the file.** The pairing rule that shipped is a naming convention, not a decoded field. `kind = 0x3002` is a button record; whether a bit of `kind` marks the focused variant is the cheapest probe.