re: EXTRAS complete -- ptframe4, pteff21/22/23 and pteff10 are all ADDITIVE

The four elements the port measured as the worst on EXTRAS, and which appeared
in no draw, were in a draw all along: the 24-index additive batch holds six
quads and Canary printed the first two. Cap raised to 64, screen re-captured,
all six named. Same draw as ptframe3, whose state was already measured -- the
one-way implication doing real work.

pteff10 is identified too, and it needed the resting SCALE: it ships as 409x144
and is drawn at 200 % x 500 % = 816x720. The matcher's 'try 1x and 2x' rule
could not name it at any scale and reported a near miss against something else,
which is a failure wearing the clothes of an answer. Candidates are now the
declaration's pivot*2 scaled by the resting keyframe as well as the texture at
1x and 2x, and the tolerance is the log's own NDC print quantisation rather than
a chosen number.

Flagged rather than buried: pteff10 measuring additive is in tension with the
port measuring it nearly exact under alpha-over. Both can be true for a dim
semi-transparent glow over a dark background, and it is the one row a rendering
check does not corroborate.

Also stated: the three full-screen alpha-over draws are NOT individually
identified -- four elements declare 1280x720 -- so the label on those rows is a
candidate, not an identification.

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-31 06:59:11 +00:00
parent f0b4f0ad5f
commit fa887b4e5f
5 changed files with 389 additions and 29 deletions

View File

@@ -0,0 +1,32 @@
//! The resting SCALE of each element, so a drawn quad's size can be predicted.
//!
//! One additive draw on both the main menu and `EXTRAS` measures 819.2 x 720 px
//! and matches no sprite at 1x or 2x. Scale is the missing factor: the keyframe
//! carries scale_x / scale_y in percent, and a sprite drawn at 200 % x 500 % is
//! nothing like its stored size.
//!
//! cargo run -p sylpheed-formats --example rest_scale_of -- 5 6 4
use sylpheed_formats::{pak::PakArchive, ui_layout};
use std::path::PathBuf;
fn main() {
let root = PathBuf::from(std::env::var("SYLPHEED_DISC").expect("SYLPHEED_DISC"));
let ar = PakArchive::open(root.join("dat/GP_TITLE.pak")).expect("GP_TITLE");
let builds: Vec<usize> = std::env::args().skip(1).filter_map(|a| a.parse().ok()).collect();
for build in if builds.is_empty() { vec![5usize, 6] } else { builds } {
let by = ar.read(&ar.entries()[build]).expect("entry");
let b = ui_layout::parse_build(&by).expect("build");
println!("=== GP_TITLE entry {build} ===");
println!("{:<22} {:>10} {:>7} {:>7} {:>12} {}", "element", "pivot(w,h)", "sx%", "sy%", "drawn px", "at 1x/2x of pivot*2");
for e in &b.elements {
let k = match e.rest() { Some(k) => k, None => continue };
let w = e.pivot_x * 2;
let h = e.pivot_y * 2;
let dw = w as f64 * k.scale_x as f64 / 100.0;
let dh = h as f64 * k.scale_y as f64 / 100.0;
println!("{:<22} {:>4},{:<5} {:>7} {:>7} {:>6.1}x{:<5.1} {:>6.1}x{:<5.1}",
e.name, w, h, k.scale_x, k.scale_y, dw, dh, dw * 2.0, dh * 2.0);
}
println!();
}
}

View File

@@ -0,0 +1,106 @@
# every draw in SUBMISSION ORDER, undeduplicated, frames 2..7
# tex dimensions identify the sprite; base is the guest address
0 prim=8 indices=3 vs=0x0A6D1DD7767FDF27 ps=0x2E372EA28CC404B7 blend=0x00010001[c:src=1 op=0 dst=0 a:src=1 op=0 dst=0] cc=0x00000000 mask=0xFFFF
vb=0x14EF66F8 stride=28 attrs=[57@0 38@12 ] fmt0=57 v: [-0.50,-0.50,z=0.00000] [1279.50,-0.50,z=0.00000] [1279.50,719.50,z=0.00000]
1 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x07010701[c:src=1 op=0 dst=7 a:src=1 op=0 dst=7] cc=0x8700000C mask=0xF tex[base=0x11C30000 1280x768 fmt=6]
vb=0x14EF6750 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-1.00,1.00,z=0.00000,col=FFFFFFFF] [1.00,1.00,z=0.00000,col=FFFFFFFF] [1.00,-1.00,z=0.00000,col=FFFFFFFF] [-1.00,-1.00,z=0.00000,col=FFFFFFFF]
2 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x01010101[c:src=1 op=0 dst=1 a:src=1 op=0 dst=1] cc=0x8700000C mask=0xF tex[base=0x11C30000 1280x768 fmt=6]
vb=0x14EF67B0 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [0.10,1.58,z=0.00000,col=A4FFFFFF] [0.64,1.02,z=0.00000,col=A4FFFFFF] [-0.20,-1.57,z=0.00000,col=A4FFFFFF] [-0.74,-1.02,z=0.00000,col=A4FFFFFF]
3 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x01010101[c:src=1 op=0 dst=1 a:src=1 op=0 dst=1] cc=0x8700000C mask=0xF tex[base=0x0BFE0000 1280x768 fmt=6]
vb=0x14EF6810 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.68,1.02,z=0.00000,col=9DFFFFFF] [-0.24,1.81,z=0.00000,col=9DFFFFFF] [1.35,-1.02,z=0.00000,col=9DFFFFFF] [0.91,-1.81,z=0.00000,col=9DFFFFFF]
4 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x07010701[c:src=1 op=0 dst=7 a:src=1 op=0 dst=7] cc=0x8700000C mask=0xF tex[base=0x0C3B0000 1280x768 fmt=6]
vb=0x14EF6870 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-1.00,1.00,z=0.00000,col=FFFFFFFF] [1.00,1.00,z=0.00000,col=FFFFFFFF] [1.00,-1.00,z=0.00000,col=FFFFFFFF] [-1.00,-1.00,z=0.00000,col=FFFFFFFF]
5 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0x5773DC18083C4C20 blend=0x07010701[c:src=1 op=0 dst=7 a:src=1 op=0 dst=7] cc=0x8700000C mask=0xF
vb=0x14EF68D0 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-1.00,1.00,z=0.00000,col=40000000] [1.00,1.00,z=0.00000,col=40000000] [1.00,-1.00,z=0.00000,col=40000000] [-1.00,-1.00,z=0.00000,col=40000000]
6 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x01010101[c:src=1 op=0 dst=1 a:src=1 op=0 dst=1] cc=0x8700000C mask=0xF tex[base=0x0BFE0000 1280x768 fmt=6]
vb=0x14EF6930 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.64,1.00,z=0.00000,col=FFFFFFFF] [0.64,1.00,z=0.00000,col=FFFFFFFF] [0.64,-1.00,z=0.00000,col=FFFFFFFF] [-0.64,-1.00,z=0.00000,col=FFFFFFFF]
7 prim=13 indices=24 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x01010101[c:src=1 op=0 dst=1 a:src=1 op=0 dst=1] cc=0x8700000C mask=0xF tex[base=0x11C30000 1280x768 fmt=6]
vb=0x14EF6990 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.48,0.67,z=0.00000,col=80FFFFFF] [0.48,0.67,z=0.00000,col=80FFFFFF] [0.48,-0.77,z=0.00000,col=80FFFFFF] [-0.48,-0.77,z=0.00000,col=80FFFFFF] [-0.31,0.36,z=0.00000,col=FFFFFFFF] [0.07,0.36,z=0.00000,col=FFFFFFFF] [0.07,-0.25,z=0.00000,col=FFFFFFFF] [-0.31,-0.25,z=0.00000,col=FFFFFFFF] [-0.09,0.12,z=0.00000,col=FFFFFFFF] [0.31,0.12,z=0.00000,col=FFFFFFFF] [0.31,-0.47,z=0.00000,col=FFFFFFFF] [-0.09,-0.47,z=0.00000,col=FFFFFFFF] [-0.32,0.60,z=0.00000,col=FFFFFFFF] [0.31,0.60,z=0.00000,col=FFFFFFFF] [0.31,0.59,z=0.00000,col=FFFFFFFF] [-0.32,0.59,z=0.00000,col=FFFFFFFF] [-0.33,0.63,z=0.00000,col=FFFFFFFF] [0.33,0.63,z=0.00000,col=FFFFFFFF] [0.33,0.61,z=0.00000,col=FFFFFFFF] [-0.33,0.61,z=0.00000,col=FFFFFFFF] [-0.34,0.66,z=0.00000,col=FFFFFFFF] [0.34,0.66,z=0.00000,col=FFFFFFFF] [0.34,0.64,z=0.00000,col=FFFFFFFF] [-0.34,0.64,z=0.00000,col=FFFFFFFF]
8 prim=13 indices=24 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x07010701[c:src=1 op=0 dst=7 a:src=1 op=0 dst=7] cc=0x8700000C mask=0xF tex[base=0x11C30000 1280x768 fmt=6]
vb=0x14EF6BD0 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.27,-0.51,z=0.00000,col=FFFFFFFF] [0.28,-0.51,z=0.00000,col=FFFFFFFF] [0.28,-0.62,z=0.00000,col=FFFFFFFF] [-0.27,-0.62,z=0.00000,col=FFFFFFFF] [-0.14,0.72,z=0.00000,col=FFFFFFFF] [0.14,0.72,z=0.00000,col=FFFFFFFF] [0.14,0.63,z=0.00000,col=FFFFFFFF] [-0.14,0.63,z=0.00000,col=FFFFFFFF] [-0.18,0.24,z=0.00000,col=FFFFFFFF] [0.24,0.24,z=0.00000,col=FFFFFFFF] [0.24,0.08,z=0.00000,col=FFFFFFFF] [-0.18,0.08,z=0.00000,col=FFFFFFFF] [-0.15,0.16,z=0.00000,col=FFFFFFFF] [-0.20,0.08,z=0.00000,col=FFFFFFFF] [-0.25,0.16,z=0.00000,col=FFFFFFFF] [-0.20,0.25,z=0.00000,col=FFFFFFFF] [-0.17,-0.00,z=0.00000,col=FFFFFFFF] [0.22,-0.00,z=0.00000,col=FFFFFFFF] [0.22,-0.12,z=0.00000,col=FFFFFFFF] [-0.17,-0.12,z=0.00000,col=FFFFFFFF] [-0.17,-0.23,z=0.00000,col=FFFFFFFF] [0.00,-0.23,z=0.00000,col=FFFFFFFF] [0.00,-0.35,z=0.00000,col=FFFFFFFF] [-0.17,-0.35,z=0.00000,col=FFFFFFFF]
9 prim=8 indices=3 vs=0x72CBCAA6A7984111 ps=0xE59B2B3DA4AA9008 blend=0x07010701[c:src=1 op=0 dst=7 a:src=1 op=0 dst=7] cc=0x8700000C mask=0xF tex[base=0x10000000 1x1 fmt=26]
10 prim=8 indices=3 vs=0x72CBCAA6A7984111 ps=0xE59B2B3DA4AA9008 blend=0x07010701[c:src=1 op=0 dst=7 a:src=1 op=0 dst=7] cc=0x8700000C mask=0xF tex[base=0x10000000 1x1 fmt=26]
--- frame 3 ---
11 prim=8 indices=3 vs=0x0A6D1DD7767FDF27 ps=0x2E372EA28CC404B7 blend=0x00010001[c:src=1 op=0 dst=0 a:src=1 op=0 dst=0] cc=0x00000000 mask=0xFFFF
vb=0x14F16EB8 stride=28 attrs=[57@0 38@12 ] fmt0=57 v: [-0.50,-0.50,z=0.00000] [1279.50,-0.50,z=0.00000] [1279.50,719.50,z=0.00000]
12 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x07010701[c:src=1 op=0 dst=7 a:src=1 op=0 dst=7] cc=0x8700000C mask=0xF tex[base=0x11C30000 1280x768 fmt=6]
vb=0x14F16F10 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-1.00,1.00,z=0.00000,col=FFFFFFFF] [1.00,1.00,z=0.00000,col=FFFFFFFF] [1.00,-1.00,z=0.00000,col=FFFFFFFF] [-1.00,-1.00,z=0.00000,col=FFFFFFFF]
13 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x01010101[c:src=1 op=0 dst=1 a:src=1 op=0 dst=1] cc=0x8700000C mask=0xF tex[base=0x11C30000 1280x768 fmt=6]
vb=0x14F16F70 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [0.11,1.58,z=0.00000,col=A4FFFFFF] [0.65,1.02,z=0.00000,col=A4FFFFFF] [-0.20,-1.57,z=0.00000,col=A4FFFFFF] [-0.74,-1.02,z=0.00000,col=A4FFFFFF]
14 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x01010101[c:src=1 op=0 dst=1 a:src=1 op=0 dst=1] cc=0x8700000C mask=0xF tex[base=0x0BFE0000 1280x768 fmt=6]
vb=0x14F16FD0 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.69,1.02,z=0.00000,col=9DFFFFFF] [-0.25,1.81,z=0.00000,col=9DFFFFFF] [1.35,-1.02,z=0.00000,col=9DFFFFFF] [0.90,-1.81,z=0.00000,col=9DFFFFFF]
15 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x07010701[c:src=1 op=0 dst=7 a:src=1 op=0 dst=7] cc=0x8700000C mask=0xF tex[base=0x0C3B0000 1280x768 fmt=6]
vb=0x14F17030 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-1.00,1.00,z=0.00000,col=FFFFFFFF] [1.00,1.00,z=0.00000,col=FFFFFFFF] [1.00,-1.00,z=0.00000,col=FFFFFFFF] [-1.00,-1.00,z=0.00000,col=FFFFFFFF]
16 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0x5773DC18083C4C20 blend=0x07010701[c:src=1 op=0 dst=7 a:src=1 op=0 dst=7] cc=0x8700000C mask=0xF
vb=0x14F17090 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-1.00,1.00,z=0.00000,col=40000000] [1.00,1.00,z=0.00000,col=40000000] [1.00,-1.00,z=0.00000,col=40000000] [-1.00,-1.00,z=0.00000,col=40000000]
17 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x01010101[c:src=1 op=0 dst=1 a:src=1 op=0 dst=1] cc=0x8700000C mask=0xF tex[base=0x0BFE0000 1280x768 fmt=6]
vb=0x14F170F0 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.64,1.00,z=0.00000,col=FFFFFFFF] [0.64,1.00,z=0.00000,col=FFFFFFFF] [0.64,-1.00,z=0.00000,col=FFFFFFFF] [-0.64,-1.00,z=0.00000,col=FFFFFFFF]
18 prim=13 indices=24 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x01010101[c:src=1 op=0 dst=1 a:src=1 op=0 dst=1] cc=0x8700000C mask=0xF tex[base=0x11C30000 1280x768 fmt=6]
vb=0x14F17150 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.48,0.67,z=0.00000,col=80FFFFFF] [0.48,0.67,z=0.00000,col=80FFFFFF] [0.48,-0.77,z=0.00000,col=80FFFFFF] [-0.48,-0.77,z=0.00000,col=80FFFFFF] [-0.31,0.36,z=0.00000,col=FFFFFFFF] [0.07,0.36,z=0.00000,col=FFFFFFFF] [0.07,-0.25,z=0.00000,col=FFFFFFFF] [-0.31,-0.25,z=0.00000,col=FFFFFFFF] [-0.09,0.12,z=0.00000,col=FFFFFFFF] [0.31,0.12,z=0.00000,col=FFFFFFFF] [0.31,-0.47,z=0.00000,col=FFFFFFFF] [-0.09,-0.47,z=0.00000,col=FFFFFFFF] [-0.32,0.60,z=0.00000,col=FFFFFFFF] [0.31,0.60,z=0.00000,col=FFFFFFFF] [0.31,0.59,z=0.00000,col=FFFFFFFF] [-0.32,0.59,z=0.00000,col=FFFFFFFF] [-0.33,0.63,z=0.00000,col=FFFFFFFF] [0.33,0.63,z=0.00000,col=FFFFFFFF] [0.33,0.61,z=0.00000,col=FFFFFFFF] [-0.33,0.61,z=0.00000,col=FFFFFFFF] [-0.34,0.66,z=0.00000,col=FFFFFFFF] [0.34,0.66,z=0.00000,col=FFFFFFFF] [0.34,0.64,z=0.00000,col=FFFFFFFF] [-0.34,0.64,z=0.00000,col=FFFFFFFF]
19 prim=13 indices=24 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x07010701[c:src=1 op=0 dst=7 a:src=1 op=0 dst=7] cc=0x8700000C mask=0xF tex[base=0x11C30000 1280x768 fmt=6]
vb=0x14F17390 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.27,-0.51,z=0.00000,col=FFFFFFFF] [0.28,-0.51,z=0.00000,col=FFFFFFFF] [0.28,-0.62,z=0.00000,col=FFFFFFFF] [-0.27,-0.62,z=0.00000,col=FFFFFFFF] [-0.14,0.72,z=0.00000,col=FFFFFFFF] [0.14,0.72,z=0.00000,col=FFFFFFFF] [0.14,0.63,z=0.00000,col=FFFFFFFF] [-0.14,0.63,z=0.00000,col=FFFFFFFF] [-0.18,0.24,z=0.00000,col=FFFFFFFF] [0.24,0.24,z=0.00000,col=FFFFFFFF] [0.24,0.08,z=0.00000,col=FFFFFFFF] [-0.18,0.08,z=0.00000,col=FFFFFFFF] [-0.15,0.15,z=0.00000,col=FFFFFFFF] [-0.20,0.07,z=0.00000,col=FFFFFFFF] [-0.25,0.17,z=0.00000,col=FFFFFFFF] [-0.20,0.25,z=0.00000,col=FFFFFFFF] [-0.17,-0.00,z=0.00000,col=FFFFFFFF] [0.22,-0.00,z=0.00000,col=FFFFFFFF] [0.22,-0.12,z=0.00000,col=FFFFFFFF] [-0.17,-0.12,z=0.00000,col=FFFFFFFF] [-0.17,-0.23,z=0.00000,col=FFFFFFFF] [0.00,-0.23,z=0.00000,col=FFFFFFFF] [0.00,-0.35,z=0.00000,col=FFFFFFFF] [-0.17,-0.35,z=0.00000,col=FFFFFFFF]
20 prim=8 indices=3 vs=0x72CBCAA6A7984111 ps=0xE59B2B3DA4AA9008 blend=0x07010701[c:src=1 op=0 dst=7 a:src=1 op=0 dst=7] cc=0x8700000C mask=0xF tex[base=0x10000000 1x1 fmt=26]
21 prim=8 indices=3 vs=0x72CBCAA6A7984111 ps=0xE59B2B3DA4AA9008 blend=0x07010701[c:src=1 op=0 dst=7 a:src=1 op=0 dst=7] cc=0x8700000C mask=0xF tex[base=0x10000000 1x1 fmt=26]
--- frame 4 ---
22 prim=8 indices=3 vs=0x0A6D1DD7767FDF27 ps=0x2E372EA28CC404B7 blend=0x00010001[c:src=1 op=0 dst=0 a:src=1 op=0 dst=0] cc=0x00000000 mask=0xFFFF
vb=0x14F37678 stride=28 attrs=[57@0 38@12 ] fmt0=57 v: [-0.50,-0.50,z=0.00000] [1279.50,-0.50,z=0.00000] [1279.50,719.50,z=0.00000]
23 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x07010701[c:src=1 op=0 dst=7 a:src=1 op=0 dst=7] cc=0x8700000C mask=0xF tex[base=0x11C30000 1280x768 fmt=6]
vb=0x14F376D0 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-1.00,1.00,z=0.00000,col=FFFFFFFF] [1.00,1.00,z=0.00000,col=FFFFFFFF] [1.00,-1.00,z=0.00000,col=FFFFFFFF] [-1.00,-1.00,z=0.00000,col=FFFFFFFF]
24 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x01010101[c:src=1 op=0 dst=1 a:src=1 op=0 dst=1] cc=0x8700000C mask=0xF tex[base=0x11C30000 1280x768 fmt=6]
vb=0x14F37730 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [0.11,1.58,z=0.00000,col=A4FFFFFF] [0.65,1.02,z=0.00000,col=A4FFFFFF] [-0.19,-1.57,z=0.00000,col=A4FFFFFF] [-0.73,-1.02,z=0.00000,col=A4FFFFFF]
25 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x01010101[c:src=1 op=0 dst=1 a:src=1 op=0 dst=1] cc=0x8700000C mask=0xF tex[base=0x0BFE0000 1280x768 fmt=6]
vb=0x14F37790 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.69,1.02,z=0.00000,col=9EFFFFFF] [-0.25,1.81,z=0.00000,col=9EFFFFFF] [1.34,-1.02,z=0.00000,col=9EFFFFFF] [0.90,-1.81,z=0.00000,col=9EFFFFFF]
26 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x07010701[c:src=1 op=0 dst=7 a:src=1 op=0 dst=7] cc=0x8700000C mask=0xF tex[base=0x0C3B0000 1280x768 fmt=6]
vb=0x14F377F0 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-1.00,1.00,z=0.00000,col=FFFFFFFF] [1.00,1.00,z=0.00000,col=FFFFFFFF] [1.00,-1.00,z=0.00000,col=FFFFFFFF] [-1.00,-1.00,z=0.00000,col=FFFFFFFF]
27 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0x5773DC18083C4C20 blend=0x07010701[c:src=1 op=0 dst=7 a:src=1 op=0 dst=7] cc=0x8700000C mask=0xF
vb=0x14F37850 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-1.00,1.00,z=0.00000,col=40000000] [1.00,1.00,z=0.00000,col=40000000] [1.00,-1.00,z=0.00000,col=40000000] [-1.00,-1.00,z=0.00000,col=40000000]
28 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x01010101[c:src=1 op=0 dst=1 a:src=1 op=0 dst=1] cc=0x8700000C mask=0xF tex[base=0x0BFE0000 1280x768 fmt=6]
vb=0x14F378B0 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.64,1.00,z=0.00000,col=FFFFFFFF] [0.64,1.00,z=0.00000,col=FFFFFFFF] [0.64,-1.00,z=0.00000,col=FFFFFFFF] [-0.64,-1.00,z=0.00000,col=FFFFFFFF]
29 prim=13 indices=24 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x01010101[c:src=1 op=0 dst=1 a:src=1 op=0 dst=1] cc=0x8700000C mask=0xF tex[base=0x11C30000 1280x768 fmt=6]
vb=0x14F37910 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.48,0.67,z=0.00000,col=80FFFFFF] [0.48,0.67,z=0.00000,col=80FFFFFF] [0.48,-0.77,z=0.00000,col=80FFFFFF] [-0.48,-0.77,z=0.00000,col=80FFFFFF] [-0.31,0.36,z=0.00000,col=FFFFFFFF] [0.07,0.36,z=0.00000,col=FFFFFFFF] [0.07,-0.25,z=0.00000,col=FFFFFFFF] [-0.31,-0.25,z=0.00000,col=FFFFFFFF] [-0.09,0.12,z=0.00000,col=FFFFFFFF] [0.31,0.12,z=0.00000,col=FFFFFFFF] [0.31,-0.47,z=0.00000,col=FFFFFFFF] [-0.09,-0.47,z=0.00000,col=FFFFFFFF] [-0.32,0.60,z=0.00000,col=FFFFFFFF] [0.31,0.60,z=0.00000,col=FFFFFFFF] [0.31,0.59,z=0.00000,col=FFFFFFFF] [-0.32,0.59,z=0.00000,col=FFFFFFFF] [-0.33,0.63,z=0.00000,col=FFFFFFFF] [0.33,0.63,z=0.00000,col=FFFFFFFF] [0.33,0.61,z=0.00000,col=FFFFFFFF] [-0.33,0.61,z=0.00000,col=FFFFFFFF] [-0.34,0.66,z=0.00000,col=FFFFFFFF] [0.34,0.66,z=0.00000,col=FFFFFFFF] [0.34,0.64,z=0.00000,col=FFFFFFFF] [-0.34,0.64,z=0.00000,col=FFFFFFFF]
30 prim=13 indices=24 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x07010701[c:src=1 op=0 dst=7 a:src=1 op=0 dst=7] cc=0x8700000C mask=0xF tex[base=0x11C30000 1280x768 fmt=6]
vb=0x14F37B50 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.27,-0.51,z=0.00000,col=FFFFFFFF] [0.28,-0.51,z=0.00000,col=FFFFFFFF] [0.28,-0.62,z=0.00000,col=FFFFFFFF] [-0.27,-0.62,z=0.00000,col=FFFFFFFF] [-0.14,0.72,z=0.00000,col=FFFFFFFF] [0.14,0.72,z=0.00000,col=FFFFFFFF] [0.14,0.63,z=0.00000,col=FFFFFFFF] [-0.14,0.63,z=0.00000,col=FFFFFFFF] [-0.18,0.24,z=0.00000,col=FFFFFFFF] [0.24,0.24,z=0.00000,col=FFFFFFFF] [0.24,0.08,z=0.00000,col=FFFFFFFF] [-0.18,0.08,z=0.00000,col=FFFFFFFF] [-0.15,0.15,z=0.00000,col=FFFFFFFF] [-0.20,0.07,z=0.00000,col=FFFFFFFF] [-0.25,0.17,z=0.00000,col=FFFFFFFF] [-0.20,0.25,z=0.00000,col=FFFFFFFF] [-0.17,-0.00,z=0.00000,col=FFFFFFFF] [0.22,-0.00,z=0.00000,col=FFFFFFFF] [0.22,-0.12,z=0.00000,col=FFFFFFFF] [-0.17,-0.12,z=0.00000,col=FFFFFFFF] [-0.17,-0.23,z=0.00000,col=FFFFFFFF] [0.00,-0.23,z=0.00000,col=FFFFFFFF] [0.00,-0.35,z=0.00000,col=FFFFFFFF] [-0.17,-0.35,z=0.00000,col=FFFFFFFF]
31 prim=8 indices=3 vs=0x72CBCAA6A7984111 ps=0xE59B2B3DA4AA9008 blend=0x07010701[c:src=1 op=0 dst=7 a:src=1 op=0 dst=7] cc=0x8700000C mask=0xF tex[base=0x10000000 1x1 fmt=26]
32 prim=8 indices=3 vs=0x72CBCAA6A7984111 ps=0xE59B2B3DA4AA9008 blend=0x07010701[c:src=1 op=0 dst=7 a:src=1 op=0 dst=7] cc=0x8700000C mask=0xF tex[base=0x10000000 1x1 fmt=26]
--- frame 5 ---
33 prim=8 indices=3 vs=0x0A6D1DD7767FDF27 ps=0x2E372EA28CC404B7 blend=0x00010001[c:src=1 op=0 dst=0 a:src=1 op=0 dst=0] cc=0x00000000 mask=0xFFFF
vb=0x14F57E38 stride=28 attrs=[57@0 38@12 ] fmt0=57 v: [-0.50,-0.50,z=0.00000] [1279.50,-0.50,z=0.00000] [1279.50,719.50,z=0.00000]
34 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x07010701[c:src=1 op=0 dst=7 a:src=1 op=0 dst=7] cc=0x8700000C mask=0xF tex[base=0x11C30000 1280x768 fmt=6]
vb=0x14F57E90 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-1.00,1.00,z=0.00000,col=FFFFFFFF] [1.00,1.00,z=0.00000,col=FFFFFFFF] [1.00,-1.00,z=0.00000,col=FFFFFFFF] [-1.00,-1.00,z=0.00000,col=FFFFFFFF]
35 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x01010101[c:src=1 op=0 dst=1 a:src=1 op=0 dst=1] cc=0x8700000C mask=0xF tex[base=0x11C30000 1280x768 fmt=6]
vb=0x14F57EF0 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [0.12,1.58,z=0.00000,col=A5FFFFFF] [0.66,1.02,z=0.00000,col=A5FFFFFF] [-0.19,-1.57,z=0.00000,col=A5FFFFFF] [-0.73,-1.02,z=0.00000,col=A5FFFFFF]
36 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x01010101[c:src=1 op=0 dst=1 a:src=1 op=0 dst=1] cc=0x8700000C mask=0xF tex[base=0x0BFE0000 1280x768 fmt=6]
vb=0x14F57F50 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.70,1.02,z=0.00000,col=9EFFFFFF] [-0.25,1.81,z=0.00000,col=9EFFFFFF] [1.34,-1.02,z=0.00000,col=9EFFFFFF] [0.90,-1.81,z=0.00000,col=9EFFFFFF]
37 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x07010701[c:src=1 op=0 dst=7 a:src=1 op=0 dst=7] cc=0x8700000C mask=0xF tex[base=0x0C3B0000 1280x768 fmt=6]
vb=0x14F57FB0 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-1.00,1.00,z=0.00000,col=FFFFFFFF] [1.00,1.00,z=0.00000,col=FFFFFFFF] [1.00,-1.00,z=0.00000,col=FFFFFFFF] [-1.00,-1.00,z=0.00000,col=FFFFFFFF]
38 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0x5773DC18083C4C20 blend=0x07010701[c:src=1 op=0 dst=7 a:src=1 op=0 dst=7] cc=0x8700000C mask=0xF
vb=0x14F58010 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-1.00,1.00,z=0.00000,col=40000000] [1.00,1.00,z=0.00000,col=40000000] [1.00,-1.00,z=0.00000,col=40000000] [-1.00,-1.00,z=0.00000,col=40000000]
39 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x01010101[c:src=1 op=0 dst=1 a:src=1 op=0 dst=1] cc=0x8700000C mask=0xF tex[base=0x0BFE0000 1280x768 fmt=6]
vb=0x14F58070 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.64,1.00,z=0.00000,col=FFFFFFFF] [0.64,1.00,z=0.00000,col=FFFFFFFF] [0.64,-1.00,z=0.00000,col=FFFFFFFF] [-0.64,-1.00,z=0.00000,col=FFFFFFFF]
40 prim=13 indices=24 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x01010101[c:src=1 op=0 dst=1 a:src=1 op=0 dst=1] cc=0x8700000C mask=0xF tex[base=0x11C30000 1280x768 fmt=6]
vb=0x14F580D0 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.48,0.67,z=0.00000,col=80FFFFFF] [0.48,0.67,z=0.00000,col=80FFFFFF] [0.48,-0.77,z=0.00000,col=80FFFFFF] [-0.48,-0.77,z=0.00000,col=80FFFFFF] [-0.31,0.36,z=0.00000,col=FFFFFFFF] [0.07,0.36,z=0.00000,col=FFFFFFFF] [0.07,-0.25,z=0.00000,col=FFFFFFFF] [-0.31,-0.25,z=0.00000,col=FFFFFFFF] [-0.09,0.12,z=0.00000,col=FFFFFFFF] [0.31,0.12,z=0.00000,col=FFFFFFFF] [0.31,-0.47,z=0.00000,col=FFFFFFFF] [-0.09,-0.47,z=0.00000,col=FFFFFFFF] [-0.32,0.60,z=0.00000,col=FFFFFFFF] [0.31,0.60,z=0.00000,col=FFFFFFFF] [0.31,0.59,z=0.00000,col=FFFFFFFF] [-0.32,0.59,z=0.00000,col=FFFFFFFF] [-0.33,0.63,z=0.00000,col=FFFFFFFF] [0.33,0.63,z=0.00000,col=FFFFFFFF] [0.33,0.61,z=0.00000,col=FFFFFFFF] [-0.33,0.61,z=0.00000,col=FFFFFFFF] [-0.34,0.66,z=0.00000,col=FFFFFFFF] [0.34,0.66,z=0.00000,col=FFFFFFFF] [0.34,0.64,z=0.00000,col=FFFFFFFF] [-0.34,0.64,z=0.00000,col=FFFFFFFF]
41 prim=13 indices=24 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x07010701[c:src=1 op=0 dst=7 a:src=1 op=0 dst=7] cc=0x8700000C mask=0xF tex[base=0x11C30000 1280x768 fmt=6]
vb=0x14F58310 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.27,-0.51,z=0.00000,col=FFFFFFFF] [0.28,-0.51,z=0.00000,col=FFFFFFFF] [0.28,-0.62,z=0.00000,col=FFFFFFFF] [-0.27,-0.62,z=0.00000,col=FFFFFFFF] [-0.14,0.72,z=0.00000,col=FFFFFFFF] [0.14,0.72,z=0.00000,col=FFFFFFFF] [0.14,0.63,z=0.00000,col=FFFFFFFF] [-0.14,0.63,z=0.00000,col=FFFFFFFF] [-0.18,0.24,z=0.00000,col=FFFFFFFF] [0.24,0.24,z=0.00000,col=FFFFFFFF] [0.24,0.08,z=0.00000,col=FFFFFFFF] [-0.18,0.08,z=0.00000,col=FFFFFFFF] [-0.15,0.14,z=0.00000,col=FFFFFFFF] [-0.21,0.08,z=0.00000,col=FFFFFFFF] [-0.25,0.18,z=0.00000,col=FFFFFFFF] [-0.19,0.25,z=0.00000,col=FFFFFFFF] [-0.17,-0.00,z=0.00000,col=FFFFFFFF] [0.22,-0.00,z=0.00000,col=FFFFFFFF] [0.22,-0.12,z=0.00000,col=FFFFFFFF] [-0.17,-0.12,z=0.00000,col=FFFFFFFF] [-0.17,-0.23,z=0.00000,col=FFFFFFFF] [0.00,-0.23,z=0.00000,col=FFFFFFFF] [0.00,-0.35,z=0.00000,col=FFFFFFFF] [-0.17,-0.35,z=0.00000,col=FFFFFFFF]
42 prim=8 indices=3 vs=0x72CBCAA6A7984111 ps=0xE59B2B3DA4AA9008 blend=0x07010701[c:src=1 op=0 dst=7 a:src=1 op=0 dst=7] cc=0x8700000C mask=0xF tex[base=0x10000000 1x1 fmt=26]
43 prim=8 indices=3 vs=0x72CBCAA6A7984111 ps=0xE59B2B3DA4AA9008 blend=0x07010701[c:src=1 op=0 dst=7 a:src=1 op=0 dst=7] cc=0x8700000C mask=0xF tex[base=0x10000000 1x1 fmt=26]
--- frame 7 ---
44 prim=8 indices=3 vs=0x0A6D1DD7767FDF27 ps=0x2E372EA28CC404B7 blend=0x00010001[c:src=1 op=0 dst=0 a:src=1 op=0 dst=0] cc=0x00000000 mask=0xFFFF
vb=0x14F98678 stride=28 attrs=[57@0 38@12 ] fmt0=57 v: [-0.50,-0.50,z=0.00000] [1279.50,-0.50,z=0.00000] [1279.50,719.50,z=0.00000]
45 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x07010701[c:src=1 op=0 dst=7 a:src=1 op=0 dst=7] cc=0x8700000C mask=0xF tex[base=0x11C30000 1280x768 fmt=6]
vb=0x14F986D0 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-1.00,1.00,z=0.00000,col=FFFFFFFF] [1.00,1.00,z=0.00000,col=FFFFFFFF] [1.00,-1.00,z=0.00000,col=FFFFFFFF] [-1.00,-1.00,z=0.00000,col=FFFFFFFF]
46 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x01010101[c:src=1 op=0 dst=1 a:src=1 op=0 dst=1] cc=0x8700000C mask=0xF tex[base=0x11C30000 1280x768 fmt=6]
vb=0x14F98730 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [0.13,1.58,z=0.00000,col=A5FFFFFF] [0.67,1.02,z=0.00000,col=A5FFFFFF] [-0.17,-1.57,z=0.00000,col=A5FFFFFF] [-0.71,-1.02,z=0.00000,col=A5FFFFFF]
47 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x01010101[c:src=1 op=0 dst=1 a:src=1 op=0 dst=1] cc=0x8700000C mask=0xF tex[base=0x0BFE0000 1280x768 fmt=6]
vb=0x14F98790 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.71,1.02,z=0.00000,col=9EFFFFFF] [-0.27,1.81,z=0.00000,col=9EFFFFFF] [1.32,-1.02,z=0.00000,col=9EFFFFFF] [0.88,-1.81,z=0.00000,col=9EFFFFFF]
48 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x07010701[c:src=1 op=0 dst=7 a:src=1 op=0 dst=7] cc=0x8700000C mask=0xF tex[base=0x0C3B0000 1280x768 fmt=6]
vb=0x14F987F0 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-1.00,1.00,z=0.00000,col=FFFFFFFF] [1.00,1.00,z=0.00000,col=FFFFFFFF] [1.00,-1.00,z=0.00000,col=FFFFFFFF] [-1.00,-1.00,z=0.00000,col=FFFFFFFF]
49 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0x5773DC18083C4C20 blend=0x07010701[c:src=1 op=0 dst=7 a:src=1 op=0 dst=7] cc=0x8700000C mask=0xF
vb=0x14F98850 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-1.00,1.00,z=0.00000,col=40000000] [1.00,1.00,z=0.00000,col=40000000] [1.00,-1.00,z=0.00000,col=40000000] [-1.00,-1.00,z=0.00000,col=40000000]
50 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x01010101[c:src=1 op=0 dst=1 a:src=1 op=0 dst=1] cc=0x8700000C mask=0xF tex[base=0x0BFE0000 1280x768 fmt=6]
vb=0x14F988B0 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.64,1.00,z=0.00000,col=FFFFFFFF] [0.64,1.00,z=0.00000,col=FFFFFFFF] [0.64,-1.00,z=0.00000,col=FFFFFFFF] [-0.64,-1.00,z=0.00000,col=FFFFFFFF]
51 prim=13 indices=24 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x01010101[c:src=1 op=0 dst=1 a:src=1 op=0 dst=1] cc=0x8700000C mask=0xF tex[base=0x11C30000 1280x768 fmt=6]
vb=0x14F98910 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.48,0.67,z=0.00000,col=80FFFFFF] [0.48,0.67,z=0.00000,col=80FFFFFF] [0.48,-0.77,z=0.00000,col=80FFFFFF] [-0.48,-0.77,z=0.00000,col=80FFFFFF] [-0.31,0.36,z=0.00000,col=FFFFFFFF] [0.07,0.36,z=0.00000,col=FFFFFFFF] [0.07,-0.25,z=0.00000,col=FFFFFFFF] [-0.31,-0.25,z=0.00000,col=FFFFFFFF] [-0.09,0.12,z=0.00000,col=FFFFFFFF] [0.31,0.12,z=0.00000,col=FFFFFFFF] [0.31,-0.47,z=0.00000,col=FFFFFFFF] [-0.09,-0.47,z=0.00000,col=FFFFFFFF] [-0.32,0.60,z=0.00000,col=FFFFFFFF] [0.31,0.60,z=0.00000,col=FFFFFFFF] [0.31,0.59,z=0.00000,col=FFFFFFFF] [-0.32,0.59,z=0.00000,col=FFFFFFFF] [-0.33,0.63,z=0.00000,col=FFFFFFFF] [0.33,0.63,z=0.00000,col=FFFFFFFF] [0.33,0.61,z=0.00000,col=FFFFFFFF] [-0.33,0.61,z=0.00000,col=FFFFFFFF] [-0.34,0.66,z=0.00000,col=FFFFFFFF] [0.34,0.66,z=0.00000,col=FFFFFFFF] [0.34,0.64,z=0.00000,col=FFFFFFFF] [-0.34,0.64,z=0.00000,col=FFFFFFFF]
52 prim=13 indices=24 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 blend=0x07010701[c:src=1 op=0 dst=7 a:src=1 op=0 dst=7] cc=0x8700000C mask=0xF tex[base=0x11C30000 1280x768 fmt=6]
vb=0x14F98B50 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.27,-0.51,z=0.00000,col=FFFFFFFF] [0.28,-0.51,z=0.00000,col=FFFFFFFF] [0.28,-0.62,z=0.00000,col=FFFFFFFF] [-0.27,-0.62,z=0.00000,col=FFFFFFFF] [-0.14,0.72,z=0.00000,col=FFFFFFFF] [0.14,0.72,z=0.00000,col=FFFFFFFF] [0.14,0.63,z=0.00000,col=FFFFFFFF] [-0.14,0.63,z=0.00000,col=FFFFFFFF] [-0.18,0.24,z=0.00000,col=FFFFFFFF] [0.24,0.24,z=0.00000,col=FFFFFFFF] [0.24,0.08,z=0.00000,col=FFFFFFFF] [-0.18,0.08,z=0.00000,col=FFFFFFFF] [-0.16,0.12,z=0.00000,col=FFFFFFFF] [-0.22,0.08,z=0.00000,col=FFFFFFFF] [-0.24,0.20,z=0.00000,col=FFFFFFFF] [-0.18,0.24,z=0.00000,col=FFFFFFFF] [-0.17,-0.00,z=0.00000,col=FFFFFFFF] [0.22,-0.00,z=0.00000,col=FFFFFFFF] [0.22,-0.12,z=0.00000,col=FFFFFFFF] [-0.17,-0.12,z=0.00000,col=FFFFFFFF] [-0.17,-0.23,z=0.00000,col=FFFFFFFF] [0.00,-0.23,z=0.00000,col=FFFFFFFF] [0.00,-0.35,z=0.00000,col=FFFFFFFF] [-0.17,-0.35,z=0.00000,col=FFFFFFFF]
53 prim=8 indices=3 vs=0x72CBCAA6A7984111 ps=0xE59B2B3DA4AA9008 blend=0x07010701[c:src=1 op=0 dst=7 a:src=1 op=0 dst=7] cc=0x8700000C mask=0xF tex[base=0x10000000 1x1 fmt=26]
54 prim=8 indices=3 vs=0x72CBCAA6A7984111 ps=0xE59B2B3DA4AA9008 blend=0x07010701[c:src=1 op=0 dst=7 a:src=1 op=0 dst=7] cc=0x8700000C mask=0xF tex[base=0x10000000 1x1 fmt=26]

View File

@@ -0,0 +1,147 @@
# EXTRAS, COMPLETE. Every element named, every blend measured. 2026-08-31, run 2.
#
# The first EXTRAS capture reported four of this screen's elements as appearing in
# NO draw. They were in a draw all along: the 24-index additive batch holds SIX
# quads and Canary's vertex dump was capped at 8 vertices = two. Cap raised to 64.
#
# Two changes to the matcher, both because it had been dressing a failure up as a
# near miss:
#
# * a candidate size is now the declaration's `pivot * 2` scaled by the RESTING
# keyframe's scale, as well as the texture's own size at 1x and 2x. That is
# the only thing that names `pteff10` -- it ships as 409x144 and is drawn at
# 200 % x 500 % = 816x720. Scale-guessing could not name it at all and offered
# a near miss against something else.
# * the tolerance is the NDC PRINT QUANTISATION, not a fudge factor. The log
# prints NDC to two decimals, so a width is quantised to 6.4 px and a height to
# 3.6 px, and a match is reported in units of that.
#
# CONTROL: the two rotated sweep strips, measured independently at 1134 and 1303
# px in data/title-sweep-drawn-at-rest.txt, reproduce on every screen.
#
# ⚠️ The three full-screen 1280x720 alpha-over draws are NOT individually
# identified: ptbase, pteff05, pteff02.prm and pteff00.prm all declare 1280x720,
# so size cannot separate them. Two of the three carry a bound texture and one
# does not, which narrows it and does not close it. All four are alpha-over, so
# nothing in the answer turns on it -- but the label the tool prints for those
# rows is A candidate, not an identification.
=== EXTRAS (GP_TITLE entry 6), 55 draws over 6 frames, vertex cap 64 ===
draw prim idx blend state quad px (w x h) best name match
1 13 4 0x07010701 alpha-over(premul) 1280.0 x 720.0 ptbase.t32 [declared]
2 13 4 0x01010101 ADDITIVE 883.2 x 1134.0 (no match, nearest pteff10.t32 [declared] off 125.5 quanta)
3 13 4 0x01010101 ADDITIVE 1299.2 x 1303.2 (no match, nearest ptbase.t32 [declared] off 165.0 quanta)
4 13 4 0x07010701 alpha-over(premul) 1280.0 x 720.0 ptbase.t32 [declared]
5 13 4 0x07010701 alpha-over(premul) 1280.0 x 720.0 ptbase.t32 [declared]
6 13 4 0x01010101 ADDITIVE 819.2 x 720.0 pteff10.t32 [declared]
7 13 24 0x01010101 ADDITIVE 614.4 x 518.4 pteff20.t32 [texture@2x]
7 13 24 0x01010101 ADDITIVE 243.2 x 219.6 ptframe3.t32 [declared]
7 13 24 0x01010101 ADDITIVE 256.0 x 212.4 ptframe4.t32 [declared]
7 13 24 0x01010101 ADDITIVE 403.2 x 3.6 pteff21.t32 [texture]
7 13 24 0x01010101 ADDITIVE 422.4 x 7.2 pteff22.t32 [texture]
7 13 24 0x01010101 ADDITIVE 435.2 x 7.2 pteff23.t32 [texture]
8 13 24 0x07010701 alpha-over(premul) 352.0 x 39.6 ptmsg2.t32 [texture]
8 13 24 0x07010701 alpha-over(premul) 179.2 x 32.4 pttitle.t32 [texture]
8 13 24 0x07010701 alpha-over(premul) 268.8 x 57.6 ptbtn11f.t32 [texture]
8 13 24 0x07010701 alpha-over(premul) 64.0 x 61.2 (no match, nearest ptbtn13.rat [declared] off 7.6 quanta)
8 13 24 0x07010701 alpha-over(premul) 249.6 x 43.2 ptbtn12.t32 [texture]
8 13 24 0x07010701 alpha-over(premul) 108.8 x 43.2 ptbtn13.t32 [texture]
12 13 4 0x07010701 alpha-over(premul) 1280.0 x 720.0 ptbase.t32 [declared]
13 13 4 0x01010101 ADDITIVE 889.6 x 1134.0 (no match, nearest pteff10.t32 [declared] off 126.5 quanta)
14 13 4 0x01010101 ADDITIVE 1305.6 x 1303.2 (no match, nearest ptbase.t32 [declared] off 166.0 quanta)
15 13 4 0x07010701 alpha-over(premul) 1280.0 x 720.0 ptbase.t32 [declared]
16 13 4 0x07010701 alpha-over(premul) 1280.0 x 720.0 ptbase.t32 [declared]
17 13 4 0x01010101 ADDITIVE 819.2 x 720.0 pteff10.t32 [declared]
18 13 24 0x01010101 ADDITIVE 614.4 x 518.4 pteff20.t32 [texture@2x]
18 13 24 0x01010101 ADDITIVE 243.2 x 219.6 ptframe3.t32 [declared]
18 13 24 0x01010101 ADDITIVE 256.0 x 212.4 ptframe4.t32 [declared]
18 13 24 0x01010101 ADDITIVE 403.2 x 3.6 pteff21.t32 [texture]
18 13 24 0x01010101 ADDITIVE 422.4 x 7.2 pteff22.t32 [texture]
18 13 24 0x01010101 ADDITIVE 435.2 x 7.2 pteff23.t32 [texture]
19 13 24 0x07010701 alpha-over(premul) 352.0 x 39.6 ptmsg2.t32 [texture]
19 13 24 0x07010701 alpha-over(premul) 179.2 x 32.4 pttitle.t32 [texture]
19 13 24 0x07010701 alpha-over(premul) 268.8 x 57.6 ptbtn11f.t32 [texture]
19 13 24 0x07010701 alpha-over(premul) 64.0 x 64.8 (no match, nearest ptbtn13.rat [declared] off 8.6 quanta)
19 13 24 0x07010701 alpha-over(premul) 249.6 x 43.2 ptbtn12.t32 [texture]
19 13 24 0x07010701 alpha-over(premul) 108.8 x 43.2 ptbtn13.t32 [texture]
23 13 4 0x07010701 alpha-over(premul) 1280.0 x 720.0 ptbase.t32 [declared]
24 13 4 0x01010101 ADDITIVE 883.2 x 1134.0 (no match, nearest pteff10.t32 [declared] off 125.5 quanta)
25 13 4 0x01010101 ADDITIVE 1299.2 x 1303.2 (no match, nearest ptbase.t32 [declared] off 165.0 quanta)
26 13 4 0x07010701 alpha-over(premul) 1280.0 x 720.0 ptbase.t32 [declared]
27 13 4 0x07010701 alpha-over(premul) 1280.0 x 720.0 ptbase.t32 [declared]
28 13 4 0x01010101 ADDITIVE 819.2 x 720.0 pteff10.t32 [declared]
29 13 24 0x01010101 ADDITIVE 614.4 x 518.4 pteff20.t32 [texture@2x]
29 13 24 0x01010101 ADDITIVE 243.2 x 219.6 ptframe3.t32 [declared]
29 13 24 0x01010101 ADDITIVE 256.0 x 212.4 ptframe4.t32 [declared]
29 13 24 0x01010101 ADDITIVE 403.2 x 3.6 pteff21.t32 [texture]
29 13 24 0x01010101 ADDITIVE 422.4 x 7.2 pteff22.t32 [texture]
29 13 24 0x01010101 ADDITIVE 435.2 x 7.2 pteff23.t32 [texture]
30 13 24 0x07010701 alpha-over(premul) 352.0 x 39.6 ptmsg2.t32 [texture]
30 13 24 0x07010701 alpha-over(premul) 179.2 x 32.4 pttitle.t32 [texture]
30 13 24 0x07010701 alpha-over(premul) 268.8 x 57.6 ptbtn11f.t32 [texture]
30 13 24 0x07010701 alpha-over(premul) 64.0 x 64.8 (no match, nearest ptbtn13.rat [declared] off 8.6 quanta)
30 13 24 0x07010701 alpha-over(premul) 249.6 x 43.2 ptbtn12.t32 [texture]
30 13 24 0x07010701 alpha-over(premul) 108.8 x 43.2 ptbtn13.t32 [texture]
34 13 4 0x07010701 alpha-over(premul) 1280.0 x 720.0 ptbase.t32 [declared]
35 13 4 0x01010101 ADDITIVE 889.6 x 1134.0 (no match, nearest pteff10.t32 [declared] off 126.5 quanta)
36 13 4 0x01010101 ADDITIVE 1305.6 x 1303.2 (no match, nearest ptbase.t32 [declared] off 166.0 quanta)
37 13 4 0x07010701 alpha-over(premul) 1280.0 x 720.0 ptbase.t32 [declared]
38 13 4 0x07010701 alpha-over(premul) 1280.0 x 720.0 ptbase.t32 [declared]
39 13 4 0x01010101 ADDITIVE 819.2 x 720.0 pteff10.t32 [declared]
40 13 24 0x01010101 ADDITIVE 614.4 x 518.4 pteff20.t32 [texture@2x]
40 13 24 0x01010101 ADDITIVE 243.2 x 219.6 ptframe3.t32 [declared]
40 13 24 0x01010101 ADDITIVE 256.0 x 212.4 ptframe4.t32 [declared]
40 13 24 0x01010101 ADDITIVE 403.2 x 3.6 pteff21.t32 [texture]
40 13 24 0x01010101 ADDITIVE 422.4 x 7.2 pteff22.t32 [texture]
40 13 24 0x01010101 ADDITIVE 435.2 x 7.2 pteff23.t32 [texture]
41 13 24 0x07010701 alpha-over(premul) 352.0 x 39.6 ptmsg2.t32 [texture]
41 13 24 0x07010701 alpha-over(premul) 179.2 x 32.4 pttitle.t32 [texture]
41 13 24 0x07010701 alpha-over(premul) 268.8 x 57.6 ptbtn11f.t32 [texture]
41 13 24 0x07010701 alpha-over(premul) 64.0 x 61.2 (no match, nearest ptbtn13.rat [declared] off 7.6 quanta)
41 13 24 0x07010701 alpha-over(premul) 249.6 x 43.2 ptbtn12.t32 [texture]
41 13 24 0x07010701 alpha-over(premul) 108.8 x 43.2 ptbtn13.t32 [texture]
45 13 4 0x07010701 alpha-over(premul) 1280.0 x 720.0 ptbase.t32 [declared]
46 13 4 0x01010101 ADDITIVE 883.2 x 1134.0 (no match, nearest pteff10.t32 [declared] off 125.5 quanta)
47 13 4 0x01010101 ADDITIVE 1299.2 x 1303.2 (no match, nearest ptbase.t32 [declared] off 165.0 quanta)
48 13 4 0x07010701 alpha-over(premul) 1280.0 x 720.0 ptbase.t32 [declared]
49 13 4 0x07010701 alpha-over(premul) 1280.0 x 720.0 ptbase.t32 [declared]
50 13 4 0x01010101 ADDITIVE 819.2 x 720.0 pteff10.t32 [declared]
51 13 24 0x01010101 ADDITIVE 614.4 x 518.4 pteff20.t32 [texture@2x]
51 13 24 0x01010101 ADDITIVE 243.2 x 219.6 ptframe3.t32 [declared]
51 13 24 0x01010101 ADDITIVE 256.0 x 212.4 ptframe4.t32 [declared]
51 13 24 0x01010101 ADDITIVE 403.2 x 3.6 pteff21.t32 [texture]
51 13 24 0x01010101 ADDITIVE 422.4 x 7.2 pteff22.t32 [texture]
51 13 24 0x01010101 ADDITIVE 435.2 x 7.2 pteff23.t32 [texture]
52 13 24 0x07010701 alpha-over(premul) 352.0 x 39.6 ptmsg2.t32 [texture]
52 13 24 0x07010701 alpha-over(premul) 179.2 x 32.4 pttitle.t32 [texture]
52 13 24 0x07010701 alpha-over(premul) 268.8 x 57.6 ptbtn11f.t32 [texture]
52 13 24 0x07010701 alpha-over(premul) 51.2 x 57.6 (no match, nearest ptbtneff02.t32 [texture] off 4.7 quanta)
52 13 24 0x07010701 alpha-over(premul) 249.6 x 43.2 ptbtn12.t32 [texture]
52 13 24 0x07010701 alpha-over(premul) 108.8 x 43.2 ptbtn13.t32 [texture]
CONTROL — the two rotated sweep strips measured independently at 1134 and 1303 px:
tall quads found: ['1134', '1303']
PASS
=== the resting scale that makes pteff10 identifiable ===
=== GP_TITLE entry 6 ===
element pivot(w,h) sx% sy% drawn px at 1x/2x of pivot*2
ptframe3.t32 246,220 100 100 246.0x220.0 492.0x440.0
ptframe4.t32 256,210 100 100 256.0x210.0 512.0x420.0
ptbtn11.rat 256,44 100 100 256.0x44.0 512.0x88.0
ptbtn12.rat 252,44 100 100 252.0x44.0 504.0x88.0
ptbtn13.rat 82,44 100 100 82.0x44.0 164.0x88.0
ptmsg2.t32 384,38 100 100 384.0x38.0 768.0x76.0
pteff20.t32 308,260 200 200 616.0x520.0 1232.0x1040.0
pteff21.t32 404,6 100 100 404.0x6.0 808.0x12.0
pteff22.t32 424,8 100 100 424.0x8.0 848.0x16.0
pteff23.t32 440,8 100 100 440.0x8.0 880.0x16.0
pttitle.t32 194,36 100 100 194.0x36.0 388.0x72.0
ptbase.t32 640,360 200 200 1280.0x720.0 2560.0x1440.0
pteff05.t32 1280,720 100 100 1280.0x720.0 2560.0x1440.0
pteff02.prm 1280,720 100 100 1280.0x720.0 2560.0x1440.0
ptloop01.rat 400,180 100 100 400.0x180.0 800.0x360.0
ptloop02.rat 400,180 100 100 400.0x180.0 800.0x360.0
pteff10.t32 408,144 200 500 816.0x720.0 1632.0x1440.0
pteff00.prm 1280,720 100 100 1280.0x720.0 2560.0x1440.0

View File

@@ -223,3 +223,63 @@ 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.
## ✅ 2026-08-31 (final) — `EXTRAS` is COMPLETE, and the four missing elements are ADDITIVE
The four elements the port measured as the worst on `EXTRAS`, and which appeared
in no draw, were in a draw all along. `EXTRAS`' 24-index additive batch holds
**six** quads; Canary's vertex dump printed the first **two**.
[`data/ui-blend-extras-complete.txt`](../data/ui-blend-extras-complete.txt) ·
[`captures/ui-draws/blend-extras-run2-2026-08-31.log`](../captures/ui-draws/blend-extras-run2-2026-08-31.log)
| draw | quad px | element | blend |
|---|---|---|---|
| 7 | 614.4 × 518.4 | `pteff20` | **ADDITIVE** |
| 7 | 243.2 × 219.6 | `ptframe3` | **ADDITIVE** |
| 7 | 256.0 × 212.4 | **`ptframe4`** | **ADDITIVE** |
| 7 | 403.2 × 3.6 | **`pteff21`** | **ADDITIVE** |
| 7 | 422.4 × 7.2 | **`pteff22`** | **ADDITIVE** |
| 7 | 435.2 × 7.2 | **`pteff23`** | **ADDITIVE** |
| 6 | 819.2 × 720 | **`pteff10`** | **ADDITIVE** |
| 8 | 352.0 × 39.6 | `ptmsg2` | alpha-over |
| 8 | 179.2 × 32.4 | `pttitle` | alpha-over |
| 8 | 268.8 × 57.6 | `ptbtn11f` | alpha-over |
| 8 | 249.6 × 43.2 | `ptbtn12` | alpha-over |
| 8 | 108.8 × 43.2 | `ptbtn13` | alpha-over |
**All six are in one draw with `ptframe3`, whose state was already measured**, so
this is the one-way implication doing real work: same draw ⇒ same state.
### `pteff10` is identified, and it needs the resting SCALE
`pteff10` ships as **409 × 144** and is drawn at **200 % × 500 % = 816 × 720**.
The matcher's old "try 1× and 2×" rule could not name it at any scale, and
reported a near miss against something else instead — a failure wearing the
clothes of an answer. Candidates are now the declaration's `pivot × 2` scaled by
the **resting keyframe**, as well as the texture at 1× and 2×, and the tolerance
is the log's own **NDC print quantisation** (two decimals → 6.4 px in x, 3.6 px
in y) rather than a chosen number.
🟡 **And `pteff10` being additive is a live tension worth stating.** The port
measures it as **nearly exact** rendered alpha-over. Both can be true — it is a
dim, wholly semi-transparent glow (max alpha 130) over a dark background, where
additive and alpha-over nearly coincide — but it is the one row of this table
that a rendering check does *not* independently corroborate, and it should be
adopted knowing that.
### What is still not identified, on any screen
* **the two rotated sweep strips** — matched by their AABB, not by a declared
size, because they are rotated nested leaves. The control pins them at 1134 and
1303 px on every screen and the port has an independent 884 px footprint for
the width, so they are identified; the matcher simply cannot do it by size.
* **the focus ring** — drawn at 64.0 × 61.2 against `ptbtneff01`/`02`'s 42 × 46.
It spins and scales, so its AABB is not its sprite size. Alpha-over on both
screens.
* **the three full-screen 1280 × 720 alpha-over draws** — `ptbase`, `pteff05`,
`pteff02.prm` and `pteff00.prm` all declare 1280 × 720, so size cannot separate
them. Two of the three carry a bound texture and one does not, which narrows it
and does not close it. All four candidates are alpha-over, so nothing turns on
it — but the label the tool prints on those rows is **a candidate, not an
identification**.

View File

@@ -45,32 +45,49 @@ def blend_name(raw):
return "%s+%s" % (FACTOR.get(src, src), FACTOR.get(dst, dst))
def sprite_sizes(builds):
"""name -> (w, h), straight off the disc via the formats crate.
def candidates(builds):
"""Every size a UI draw could legitimately have, with a label and a basis.
`builds` is a list because the live title is TWO builds composited -- 4 draws
the art and 2 draws the `PRESS (A)` plate over it -- so a capture of the
title contains elements from both and a one-build size table cannot name
them all.
Two bases, because neither alone names every element:
declared the declaration's `pivot * 2` scaled by the RESTING keyframe's
scale_x/scale_y. This is the only thing that names `pteff10`,
which ships as 409x144 and is drawn at 200 % x 500 % = 816x720 --
a scale-guessing matcher called it "no match" and offered a near
miss against something else instead.
texture the decoded `.t32`'s own pixel size, at 1x and 2x. Needed because
the pivot is NOT always half the texture (`ptmsg2` declares
384x38 for a 354x38 sprite) and because a button's focused `f`
variant has a texture and no declaration of its own.
`builds` is a list: the live title is TWO builds composited, 4 for the art
and 2 for the `PRESS (A)` plate.
"""
out = subprocess.run(
["cargo", "run", "--release", "-q", "-p", "sylpheed-formats",
"--example", "frame_alpha_census", "--"] + [str(b) for b in builds],
capture_output=True, text=True, cwd="/work",
env={**__import__("os").environ, "SYLPHEED_DISC": "/disc"}).stdout
sizes = {}
for line in out.splitlines():
env = {**__import__("os").environ, "SYLPHEED_DISC": "/disc"}
def run(example):
return subprocess.run(
["cargo", "run", "--release", "-q", "-p", "sylpheed-formats",
"--example", example, "--"] + [str(b) for b in builds],
capture_output=True, text=True, cwd="/work", env=env).stdout
out = []
for line in run("rest_scale_of").splitlines():
m = re.match(r"(\S+\.(?:t32|prm|rat))\s+\d+,\d+\s+\d+\s+\d+\s+([\d.]+)x([\d.]+)", line)
if m:
out.append((m.group(1), "declared", float(m.group(2)), float(m.group(3))))
for line in run("frame_alpha_census").splitlines():
m = re.match(r"(\S+\.t32)\s+(\d+)x(\d+)", line)
if m:
sizes[m.group(1)] = (int(m.group(2)), int(m.group(3)))
return sizes
w, h = float(m.group(2)), float(m.group(3))
out.append((m.group(1), "texture", w, h))
out.append((m.group(1), "texture@2x", w * 2, h * 2))
return out
def main():
path = sys.argv[1]
spec = sys.argv[sys.argv.index("--build") + 1] if "--build" in sys.argv else "5"
builds = [int(b) for b in spec.split(",")]
sizes = sprite_sizes(builds)
cands = candidates(builds)
lines = open(path).read().splitlines()
rows = []
for i, line in enumerate(lines):
@@ -95,19 +112,17 @@ def main():
w = (max(xs) - min(xs)) / 2 * W
h = (max(ys) - min(ys)) / 2 * H
heights.append(h)
# A sprite is drawn at its native size or at 2x: the screen is
# 1280x720 and the design space is 640x360, so `ptbase` (640x360)
# covers the screen while `pteff05` (1280x720) is 1:1. Both are
# tried and the scale is reported, because guessing one would
# silently mis-name half the draws.
best, bd, bs = "-", 1e9, 1
for n, (sw, sh) in sizes.items():
for sc in (1, 2):
d = abs(sw * sc - w) + abs(sh * sc - h)
if d < bd:
best, bd, bs = n, d, sc
tag = ("%s @%dx" % (best, bs)) if bd <= 8 else \
"(no match, nearest %s @%dx off %.0f)" % (best, bs, bd)
# The log prints NDC to TWO DECIMALS, so a width is quantised to
# 0.01 * 1280 / 2 = 6.4 px and a height to 3.6 px. The tolerance
# below is that quantisation, not a fudge factor: a match inside it
# is as close as this instrument can report.
best, bd, bb = "-", 1e9, ""
for n, basis, sw, sh in cands:
d = abs(sw - w) / 6.4 + abs(sh - h) / 3.6
if d < bd:
best, bd, bb = n, d, basis
tag = ("%s [%s]" % (best, bb)) if bd <= 2.0 else \
"(no match, nearest %s [%s] off %.1f quanta)" % (best, bb, bd)
print("%4d %4d %4d 0x%08X %-20s %7.1f x %7.1f %s"
% (idx, prim, nidx, raw, blend_name(raw), w, h, tag))
tall = sorted(h for h in heights if h > 900)