docs/re: the title paint order is build 4's, carries no depth, and is not in the file

Three findings and two corrections, all against the same capture.

Corrections first, because one of them invalidates numbers already written down:

* **the running screen is build 4, not build 7.** `screen info` defaults to the
  largest build; the game runs a different one, and the two disagree on sprite
  sizes (ptlogo1 822x100 vs 919x113 — the capture says 915x115). Every
  declaration index in the previous entry was against the wrong table. The
  conclusions survive unchanged; the indices are restated.
* **the ship capture does NOT skip these UI draws.** This entry justified a new
  hook partly on "it requires an f32x3 position stream, which a 2D quad does not
  have". These quads have one: armed on the title, xenia_ship_capture_01.log
  holds 1150 records of which 965 are the UI sprite shader. The new hook is
  still the right tool — frame brackets, submission order, texture identity —
  but it was justified with a wrong reason.

Findings:

* **no depth in the geometry.** Attribute 0 is k_32_32_32_FLOAT, so every quad
  carries a Z, and every Z is 0.00000. Submission order is the whole ordering.
* **no ordering field in the bundle.** Every word of build 4's declaration table
  dumped (committed as evidence): the unknowns are constant. The placement
  region's per-group lead word — never read before — is 0 for all 24 groups, and
  the region is followed straight by the RATC child stream, so no table hides
  behind it.
* **the batching rule**, which is what makes the order readable: a draw holds
  one or two quads, and a two-quad draw always holds two elements adjacent in
  paint order that share a texture page. The engine flushes when the page
  changes; it does not sort by page (pages alternate).

Reproduced in an independent run — same order, same rects — which is the second
observation the CONFIRMED bar asks for.
This commit is contained in:
Sylpheed RE agent
2026-08-18 20:16:05 +00:00
parent ceb8c8b572
commit 102cc344b3
4 changed files with 214 additions and 79 deletions

View File

@@ -0,0 +1,54 @@
count=24 header words: ['52415443', '003c0000', '0000012c', '00ed010e', '00008000', '00000018', '00000500', '000002d0']
0 ptlogo1.t32 00000000 ffffffff ffffffff 00000000 ffffffff 000001c3 00000032 00000000
1 ptlogo2.t32 00000000 ffffffff ffffffff 00000000 ffffffff 000001c1 0000002e 00000000
2 ptlogo1.t32 00000000 ffffffff 00000000 00000004 ffffffff 000001c3 00000032 00000000
3 ptlogo2.t32 00000000 ffffffff 00000001 00000004 ffffffff 000001c1 0000002e 00000000
4 ptlogo1.t32 00000000 ffffffff 00000000 00000004 ffffffff 000001c3 00000032 00000000
5 ptlogo2.t32 00000000 ffffffff 00000001 00000004 ffffffff 000001c1 0000002e 00000000
6 pteff01.t32 00000000 ffffffff ffffffff 00000000 ffffffff 00000140 000000a0 00000000
7 ptlogo_tm.t32 00000000 ffffffff ffffffff 00000000 ffffffff 00000016 0000000e 00000000
8 pteff00.prm 00000000 ffffffff ffffffff 00000010 ffffffff 00000280 00000168 00000000
9 ptbase2.t32 00000000 ffffffff ffffffff 00000000 ffffffff 00000140 000000b4 00000000
10 pteff04.t32 00000000 ffffffff ffffffff 00000000 ffffffff 00000280 00000168 00000000
11 ptloop01.rat 00000000 ffffffff ffffffff 00000000 ffffffff 000000c8 0000005a 00000000
12 ptloop02.rat 00000000 ffffffff ffffffff 00000000 ffffffff 000000c8 0000005a 00000000
13 pteff02.prm 00000000 ffffffff ffffffff 00000010 ffffffff 00000280 00000168 00000000
14 ptlogo_back2eff1.t32 00000000 ffffffff ffffffff 00000000 ffffffff 0000004e 0000003c 00000000
15 ptlogo_back2eff2.t32 00000000 ffffffff ffffffff 00000000 ffffffff 00000074 0000005b 00000000
16 ptlogo_back2eff3.t32 00000000 ffffffff ffffffff 00000000 ffffffff 000000aa 0000005b 00000000
17 ptlogo_back2eff4.t32 00000000 ffffffff ffffffff 00000000 ffffffff 00000149 0000005b 00000000
18 ptlogo_back2eff5.t32 00000000 ffffffff ffffffff 00000000 ffffffff 000001fb 0000007e 00000000
19 ptlogo_back2.t32 00000000 ffffffff ffffffff 00000000 ffffffff 000001f4 00000075 00000000
20 ptlogo_back2eff.t32 00000000 ffffffff ffffffff 00000000 ffffffff 000001fb 0000007e 00000000
21 ptcopyright.t32 00000000 ffffffff ffffffff 00000000 ffffffff 00000135 0000000a 00000000
22 ptlogoall_eff.t32 00000000 ffffffff ffffffff 00003000 ffffffff 00000102 00000042 00000000
23 ptlogoall_eff2.t32 00000000 ffffffff ffffffff 00003000 ffffffff 00000076 0000005a 00000000
placement region starts at 0x5c0
group 0: element 0 frames= 8 lead=0x00000000 @0x5c0
group 1: element 1 frames= 8 lead=0x00000000 @0x708
group 2: element 2 frames= 7 lead=0x00000000 @0x850
group 3: element 3 frames= 7 lead=0x00000000 @0x970
group 4: element 4 frames= 7 lead=0x00000000 @0xa90
group 5: element 5 frames= 7 lead=0x00000000 @0xbb0
group 6: element 6 frames= 4 lead=0x00000000 @0xcd0
group 7: element 7 frames= 5 lead=0x00000000 @0xd78
group 8: element 8 frames= 4 lead=0x00000000 @0xe48
group 9: element 9 frames= 1 lead=0x00000000 @0xef0
group 10: element 10 frames= 1 lead=0x00000000 @0xf20
group 11: element 11 frames= 5 lead=0x00000000 @0xf50
group 12: element 12 frames= 5 lead=0x00000000 @0x1020
group 13: element 13 frames= 6 lead=0x00000000 @0x10f0
group 14: element 14 frames= 5 lead=0x00000000 @0x11e8
group 15: element 15 frames= 5 lead=0x00000000 @0x12b8
group 16: element 16 frames= 5 lead=0x00000000 @0x1388
group 17: element 17 frames= 5 lead=0x00000000 @0x1458
group 18: element 18 frames= 6 lead=0x00000000 @0x1528
group 19: element 19 frames= 5 lead=0x00000000 @0x1620
group 20: element 20 frames= 5 lead=0x00000000 @0x16f0
group 21: element 21 frames= 5 lead=0x00000000 @0x17c0
group 22: element 22 frames= 6 lead=0x00000000 @0x1890
group 23: element 23 frames= 5 lead=0x00000000 @0x1988
tail at 0x1a58, 12271922 bytes left
next 48 words: 6f707420 0000000b 70746c6f 676f312e 74333200 06571854 38614400 00883000 0080a000 0000b800 0000c100 00039700 00007100 00000400 00000000 00050000 0002d000 00003c00 01c44c00 03885c00 054c6c00 00000000 00000000 00010000 00007100 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

View File

@@ -1,70 +1,66 @@
# every draw in SUBMISSION ORDER, undeduplicated, frames 2..7
# every draw in SUBMISSION ORDER, undeduplicated, frames 0..3
# tex dimensions identify the sprite; base is the guest address
0 prim=8 indices=3 vs=0x0A6D1DD7767FDF27 ps=0x2E372EA28CC404B7
vb=0x14FF75B8 stride=28 attrs=[57@0 38@12 ] fmt0=57 v: [BF000000,BF000000=-0.50,-0.50] [449FF000,BF000000=1279.50,-0.50] [449FF000,4433E000=1279.50,719.50]
1 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x0BA60000 1280x768 fmt=6]
vb=0x14FF7610 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [BF80199A,3F802D83=-1.00,1.00] [3F7FCCCC,3F802D83=1.00,1.00] [3F7FCCCC,BF7FA4FA=1.00,-1.00] [BF80199A,BF7FA4FA=-1.00,-1.00]
2 prim=13 indices=8 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x11C30000 1280x768 fmt=6]
vb=0x14FF7670 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [BEC6F6C7,3FCA029D=-0.39,1.58] [3E1AF152,3F8313AE=0.15,1.02] [BF3143AC,BFC97A15=-0.69,-1.57] [BF9DBDB2,BF828B25=-1.23,-1.02] [BE39CFBA,3F82E9FB=-0.18,1.02] [3E84CD83,3FE73A98=0.26,1.81] [3FECD8F3,BF82CF51=1.85,-1.02] [3FB46B9B,BFE71FED=1.41,-1.81]
3 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x0B690000 1280x768 fmt=6]
vb=0x14FF7730 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [BF80199A,3F802D83=-1.00,1.00] [3F7FCCCC,3F802D83=1.00,1.00] [3F7FCCCC,BF7FA4FA=1.00,-1.00] [BF80199A,BF7FA4FA=-1.00,-1.00]
4 prim=13 indices=8 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x0B2C0000 1280x768 fmt=6]
vb=0x14FF7790 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [BF66999A,3F2D27D3=-0.90,0.68] [3F5E999A,3F2D27D3=0.87,0.68] [3F5E999A,BDCFA4F8=0.87,-0.10] [BF66999A,BDCFA4F8=-0.90,-0.10] [BF63CCCD,3F26C16C=-0.89,0.65] [3F5B6667,3F26C16C=0.86,0.65] [3F5B6667,BD9C71C8=0.86,-0.08] [BF63CCCD,BD9C71C8=-0.89,-0.08]
5 prim=13 indices=8 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x11C30000 1280x768 fmt=6]
vb=0x14FF7850 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [BF36999A,3EEE38E4=-0.71,0.47] [3F390000,3EEE38E4=0.72,0.47] [3F390000,3E1B05B0=0.72,0.15] [BF36999A,3E1B05B0=-0.71,0.15] [3F42999A,BD471C72=0.76,-0.05] [3F516667,BD471C72=0.82,-0.05] [3F516667,BDC44444=0.82,-0.10] [3F42999A,BDC44444=0.76,-0.10]
6 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x0BE30000 1280x768 fmt=6]
vb=0x14FF7910 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [BF496667,3E155556=-0.79,0.15] [3F436667,3E155556=0.76,0.15] [3F436667,BE127D28=0.76,-0.14] [BF496667,BE127D28=-0.79,-0.14]
7 prim=13 indices=8 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x11C30000 1280x768 fmt=6]
vb=0x14FF7970 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [BF0B0000,BF516C17=-0.54,-0.82] [3F0A999A,BF516C17=0.54,-0.82] [3F0A999A,BF5FA4FB=0.54,-0.87] [BF0B0000,BF5FA4FB=-0.54,-0.87] [BECE0000,BF06C16C=-0.40,-0.53] [3ECC6666,BF06C16C=0.40,-0.53] [3ECC6666,BF2A4FA5=0.40,-0.67] [BECE0000,BF2A4FA5=-0.40,-0.67]
8 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x0B2C0000 1280x768 fmt=6]
vb=0x14FF7A30 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [BED7999A,BEFB05B1=-0.42,-0.49] [3ED60000,BEFB05B1=0.42,-0.49] [3ED60000,BF338E39=0.42,-0.70] [BED7999A,BF338E39=-0.42,-0.70]
9 prim=8 indices=3 vs=0x72CBCAA6A7984111 ps=0xE59B2B3DA4AA9008 tex[base=0x10000000 1x1 fmt=26]
0 prim=8 indices=3 vs=0x72CBCAA6A7984111 ps=0xE59B2B3DA4AA9008 tex[base=0x10000000 1x1 fmt=26]
--- frame 1 ---
1 prim=8 indices=3 vs=0x0A6D1DD7767FDF27 ps=0x2E372EA28CC404B7
vb=0x15058E58 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]
2 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x0BA60000 1280x768 fmt=6]
vb=0x15058EB0 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-1.00,1.00,z=0.00000] [1.00,1.00,z=0.00000] [1.00,-1.00,z=0.00000] [-1.00,-1.00,z=0.00000]
3 prim=13 indices=8 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x11C30000 1280x768 fmt=6]
vb=0x15058F10 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [1.38,1.58,z=0.00000] [1.92,1.02,z=0.00000] [1.08,-1.57,z=0.00000] [0.54,-1.02,z=0.00000] [-2.74,1.02,z=0.00000] [-2.30,1.81,z=0.00000] [-0.71,-1.02,z=0.00000] [-1.15,-1.81,z=0.00000]
4 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x0B690000 1280x768 fmt=6]
vb=0x15058FD0 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-1.00,1.00,z=0.00000] [1.00,1.00,z=0.00000] [1.00,-1.00,z=0.00000] [-1.00,-1.00,z=0.00000]
5 prim=13 indices=8 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x0B2C0000 1280x768 fmt=6]
vb=0x15059030 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.90,0.68,z=0.00000] [0.87,0.68,z=0.00000] [0.87,-0.10,z=0.00000] [-0.90,-0.10,z=0.00000] [-0.89,0.65,z=0.00000] [0.86,0.65,z=0.00000] [0.86,-0.08,z=0.00000] [-0.89,-0.08,z=0.00000]
6 prim=13 indices=8 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x11C30000 1280x768 fmt=6]
vb=0x150590F0 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.71,0.47,z=0.00000] [0.72,0.47,z=0.00000] [0.72,0.15,z=0.00000] [-0.71,0.15,z=0.00000] [0.76,-0.05,z=0.00000] [0.82,-0.05,z=0.00000] [0.82,-0.10,z=0.00000] [0.76,-0.10,z=0.00000]
7 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x0BE30000 1280x768 fmt=6]
vb=0x150591B0 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.79,0.15,z=0.00000] [0.76,0.15,z=0.00000] [0.76,-0.14,z=0.00000] [-0.79,-0.14,z=0.00000]
8 prim=13 indices=8 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x11C30000 1280x768 fmt=6]
vb=0x15059210 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.54,-0.82,z=0.00000] [0.54,-0.82,z=0.00000] [0.54,-0.87,z=0.00000] [-0.54,-0.87,z=0.00000] [-0.40,-0.53,z=0.00000] [0.40,-0.53,z=0.00000] [0.40,-0.67,z=0.00000] [-0.40,-0.67,z=0.00000]
9 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x0B2C0000 1280x768 fmt=6]
vb=0x150592D0 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.42,-0.49,z=0.00000] [0.42,-0.49,z=0.00000] [0.42,-0.70,z=0.00000] [-0.42,-0.70,z=0.00000]
10 prim=8 indices=3 vs=0x72CBCAA6A7984111 ps=0xE59B2B3DA4AA9008 tex[base=0x10000000 1x1 fmt=26]
--- frame 3 ---
11 prim=8 indices=3 vs=0x0A6D1DD7767FDF27 ps=0x2E372EA28CC404B7
vb=0x15017B38 stride=28 attrs=[57@0 38@12 ] fmt0=57 v: [BF000000,BF000000=-0.50,-0.50] [449FF000,BF000000=1279.50,-0.50] [449FF000,4433E000=1279.50,719.50]
12 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x0BA60000 1280x768 fmt=6]
vb=0x15017B90 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [BF80199A,3F802D83=-1.00,1.00] [3F7FCCCC,3F802D83=1.00,1.00] [3F7FCCCC,BF7FA4FA=1.00,-1.00] [BF80199A,BF7FA4FA=-1.00,-1.00]
13 prim=13 indices=8 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x11C30000 1280x768 fmt=6]
vb=0x15017BF0 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [BEC3C393,3FCA029D=-0.38,1.58] [3E2157BA,3F8313AE=0.16,1.02] [BF2FAA12,BFC97A15=-0.69,-1.57] [BF9CF0E5,BF828B25=-1.23,-1.02] [BE404FBA,3F82E9FB=-0.19,1.02] [3E818D83,3FE73A98=0.25,1.81] [3FEC08F3,BF82CF51=1.84,-1.02] [3FB39B9B,BFE71FED=1.40,-1.81]
14 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x0B690000 1280x768 fmt=6]
vb=0x15017CB0 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [BF80199A,3F802D83=-1.00,1.00] [3F7FCCCC,3F802D83=1.00,1.00] [3F7FCCCC,BF7FA4FA=1.00,-1.00] [BF80199A,BF7FA4FA=-1.00,-1.00]
15 prim=13 indices=8 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x0B2C0000 1280x768 fmt=6]
vb=0x15017D10 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [BF66999A,3F2D27D3=-0.90,0.68] [3F5E999A,3F2D27D3=0.87,0.68] [3F5E999A,BDCFA4F8=0.87,-0.10] [BF66999A,BDCFA4F8=-0.90,-0.10] [BF63CCCD,3F26C16C=-0.89,0.65] [3F5B6667,3F26C16C=0.86,0.65] [3F5B6667,BD9C71C8=0.86,-0.08] [BF63CCCD,BD9C71C8=-0.89,-0.08]
16 prim=13 indices=8 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x11C30000 1280x768 fmt=6]
vb=0x15017DD0 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [BF36999A,3EEE38E4=-0.71,0.47] [3F390000,3EEE38E4=0.72,0.47] [3F390000,3E1B05B0=0.72,0.15] [BF36999A,3E1B05B0=-0.71,0.15] [3F42999A,BD471C72=0.76,-0.05] [3F516667,BD471C72=0.82,-0.05] [3F516667,BDC44444=0.82,-0.10] [3F42999A,BDC44444=0.76,-0.10]
17 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x0BE30000 1280x768 fmt=6]
vb=0x15017E90 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [BF496667,3E155556=-0.79,0.15] [3F436667,3E155556=0.76,0.15] [3F436667,BE127D28=0.76,-0.14] [BF496667,BE127D28=-0.79,-0.14]
18 prim=13 indices=8 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x11C30000 1280x768 fmt=6]
vb=0x15017EF0 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [BF0B0000,BF516C17=-0.54,-0.82] [3F0A999A,BF516C17=0.54,-0.82] [3F0A999A,BF5FA4FB=0.54,-0.87] [BF0B0000,BF5FA4FB=-0.54,-0.87] [BECE0000,BF06C16C=-0.40,-0.53] [3ECC6666,BF06C16C=0.40,-0.53] [3ECC6666,BF2A4FA5=0.40,-0.67] [BECE0000,BF2A4FA5=-0.40,-0.67]
19 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x0B2C0000 1280x768 fmt=6]
vb=0x15017FB0 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [BED7999A,BEFB05B1=-0.42,-0.49] [3ED60000,BEFB05B1=0.42,-0.49] [3ED60000,BF338E39=0.42,-0.70] [BED7999A,BF338E39=-0.42,-0.70]
20 prim=8 indices=3 vs=0x72CBCAA6A7984111 ps=0xE59B2B3DA4AA9008 tex[base=0x10000000 1x1 fmt=26]
11 prim=8 indices=3 vs=0x72CBCAA6A7984111 ps=0xE59B2B3DA4AA9008 tex[base=0x10000000 1x1 fmt=26]
--- frame 2 ---
12 prim=8 indices=3 vs=0x0A6D1DD7767FDF27 ps=0x2E372EA28CC404B7
vb=0x150793D8 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]
13 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x0BA60000 1280x768 fmt=6]
vb=0x15079430 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-1.00,1.00,z=0.00000] [1.00,1.00,z=0.00000] [1.00,-1.00,z=0.00000] [-1.00,-1.00,z=0.00000]
14 prim=13 indices=8 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x11C30000 1280x768 fmt=6]
vb=0x15079490 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [1.39,1.58,z=0.00000] [1.93,1.02,z=0.00000] [1.08,-1.57,z=0.00000] [0.54,-1.02,z=0.00000] [-2.75,1.02,z=0.00000] [-2.31,1.81,z=0.00000] [-0.71,-1.02,z=0.00000] [-1.15,-1.81,z=0.00000]
15 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x0B690000 1280x768 fmt=6]
vb=0x15079550 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-1.00,1.00,z=0.00000] [1.00,1.00,z=0.00000] [1.00,-1.00,z=0.00000] [-1.00,-1.00,z=0.00000]
16 prim=13 indices=8 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x0B2C0000 1280x768 fmt=6]
vb=0x150795B0 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.90,0.68,z=0.00000] [0.87,0.68,z=0.00000] [0.87,-0.10,z=0.00000] [-0.90,-0.10,z=0.00000] [-0.89,0.65,z=0.00000] [0.86,0.65,z=0.00000] [0.86,-0.08,z=0.00000] [-0.89,-0.08,z=0.00000]
17 prim=13 indices=8 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x11C30000 1280x768 fmt=6]
vb=0x15079670 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.71,0.47,z=0.00000] [0.72,0.47,z=0.00000] [0.72,0.15,z=0.00000] [-0.71,0.15,z=0.00000] [0.76,-0.05,z=0.00000] [0.82,-0.05,z=0.00000] [0.82,-0.10,z=0.00000] [0.76,-0.10,z=0.00000]
18 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x0BE30000 1280x768 fmt=6]
vb=0x15079730 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.79,0.15,z=0.00000] [0.76,0.15,z=0.00000] [0.76,-0.14,z=0.00000] [-0.79,-0.14,z=0.00000]
19 prim=13 indices=8 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x11C30000 1280x768 fmt=6]
vb=0x15079790 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.54,-0.82,z=0.00000] [0.54,-0.82,z=0.00000] [0.54,-0.87,z=0.00000] [-0.54,-0.87,z=0.00000] [-0.40,-0.53,z=0.00000] [0.40,-0.53,z=0.00000] [0.40,-0.67,z=0.00000] [-0.40,-0.67,z=0.00000]
20 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x0B2C0000 1280x768 fmt=6]
vb=0x15079850 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.42,-0.49,z=0.00000] [0.42,-0.49,z=0.00000] [0.42,-0.70,z=0.00000] [-0.42,-0.70,z=0.00000]
21 prim=8 indices=3 vs=0x72CBCAA6A7984111 ps=0xE59B2B3DA4AA9008 tex[base=0x10000000 1x1 fmt=26]
--- frame 4 ---
22 prim=8 indices=3 vs=0x0A6D1DD7767FDF27 ps=0x2E372EA28CC404B7
vb=0x150380B8 stride=28 attrs=[57@0 38@12 ] fmt0=57 v: [BF000000,BF000000=-0.50,-0.50] [449FF000,BF000000=1279.50,-0.50] [449FF000,4433E000=1279.50,719.50]
23 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x0BA60000 1280x768 fmt=6]
vb=0x15038110 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [BF80199A,3F802D83=-1.00,1.00] [3F7FCCCC,3F802D83=1.00,1.00] [3F7FCCCC,BF7FA4FA=1.00,-1.00] [BF80199A,BF7FA4FA=-1.00,-1.00]
24 prim=13 indices=8 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x11C30000 1280x768 fmt=6]
vb=0x15038170 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [BEC229FA,3FCA029D=-0.38,1.58] [3E248AEC,3F8313AE=0.16,1.02] [BF2EDD46,BFC97A15=-0.68,-1.57] [BF9C8A7F,BF828B25=-1.22,-1.02] [BE438FBA,3F82E9FB=-0.19,1.02] [3E7FDB06,3FE73A98=0.25,1.81] [3FEBA0F3,BF82CF51=1.84,-1.02] [3FB3339B,BFE71FED=1.40,-1.81]
25 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x0B690000 1280x768 fmt=6]
vb=0x15038230 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [BF80199A,3F802D83=-1.00,1.00] [3F7FCCCC,3F802D83=1.00,1.00] [3F7FCCCC,BF7FA4FA=1.00,-1.00] [BF80199A,BF7FA4FA=-1.00,-1.00]
26 prim=13 indices=8 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x0B2C0000 1280x768 fmt=6]
vb=0x15038290 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [BF66999A,3F2D27D3=-0.90,0.68] [3F5E999A,3F2D27D3=0.87,0.68] [3F5E999A,BDCFA4F8=0.87,-0.10] [BF66999A,BDCFA4F8=-0.90,-0.10] [BF63CCCD,3F26C16C=-0.89,0.65] [3F5B6667,3F26C16C=0.86,0.65] [3F5B6667,BD9C71C8=0.86,-0.08] [BF63CCCD,BD9C71C8=-0.89,-0.08]
27 prim=13 indices=8 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x11C30000 1280x768 fmt=6]
vb=0x15038350 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [BF36999A,3EEE38E4=-0.71,0.47] [3F390000,3EEE38E4=0.72,0.47] [3F390000,3E1B05B0=0.72,0.15] [BF36999A,3E1B05B0=-0.71,0.15] [3F42999A,BD471C72=0.76,-0.05] [3F516667,BD471C72=0.82,-0.05] [3F516667,BDC44444=0.82,-0.10] [3F42999A,BDC44444=0.76,-0.10]
28 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x0BE30000 1280x768 fmt=6]
vb=0x15038410 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [BF496667,3E155556=-0.79,0.15] [3F436667,3E155556=0.76,0.15] [3F436667,BE127D28=0.76,-0.14] [BF496667,BE127D28=-0.79,-0.14]
29 prim=13 indices=8 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x11C30000 1280x768 fmt=6]
vb=0x15038470 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [BF0B0000,BF516C17=-0.54,-0.82] [3F0A999A,BF516C17=0.54,-0.82] [3F0A999A,BF5FA4FB=0.54,-0.87] [BF0B0000,BF5FA4FB=-0.54,-0.87] [BECE0000,BF06C16C=-0.40,-0.53] [3ECC6666,BF06C16C=0.40,-0.53] [3ECC6666,BF2A4FA5=0.40,-0.67] [BECE0000,BF2A4FA5=-0.40,-0.67]
30 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x0B2C0000 1280x768 fmt=6]
vb=0x15038530 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [BED7999A,BEFB05B1=-0.42,-0.49] [3ED60000,BEFB05B1=0.42,-0.49] [3ED60000,BF338E39=0.42,-0.70] [BED7999A,BF338E39=-0.42,-0.70]
31 prim=8 indices=3 vs=0x72CBCAA6A7984111 ps=0xE59B2B3DA4AA9008 tex[base=0x10000000 1x1 fmt=26]
22 prim=8 indices=3 vs=0x72CBCAA6A7984111 ps=0xE59B2B3DA4AA9008 tex[base=0x10000000 1x1 fmt=26]
--- frame 3 ---
23 prim=8 indices=3 vs=0x0A6D1DD7767FDF27 ps=0x2E372EA28CC404B7
vb=0x15099958 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]
24 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x0BA60000 1280x768 fmt=6]
vb=0x150999B0 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-1.00,1.00,z=0.00000] [1.00,1.00,z=0.00000] [1.00,-1.00,z=0.00000] [-1.00,-1.00,z=0.00000]
25 prim=13 indices=8 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x11C30000 1280x768 fmt=6]
vb=0x15099A10 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [1.39,1.58,z=0.00000] [1.93,1.02,z=0.00000] [1.09,-1.57,z=0.00000] [0.55,-1.02,z=0.00000] [-2.75,1.02,z=0.00000] [-2.31,1.81,z=0.00000] [-0.72,-1.02,z=0.00000] [-1.16,-1.81,z=0.00000]
26 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x0B690000 1280x768 fmt=6]
vb=0x15099AD0 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-1.00,1.00,z=0.00000] [1.00,1.00,z=0.00000] [1.00,-1.00,z=0.00000] [-1.00,-1.00,z=0.00000]
27 prim=13 indices=8 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x0B2C0000 1280x768 fmt=6]
vb=0x15099B30 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.90,0.68,z=0.00000] [0.87,0.68,z=0.00000] [0.87,-0.10,z=0.00000] [-0.90,-0.10,z=0.00000] [-0.89,0.65,z=0.00000] [0.86,0.65,z=0.00000] [0.86,-0.08,z=0.00000] [-0.89,-0.08,z=0.00000]
28 prim=13 indices=8 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x11C30000 1280x768 fmt=6]
vb=0x15099BF0 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.71,0.47,z=0.00000] [0.72,0.47,z=0.00000] [0.72,0.15,z=0.00000] [-0.71,0.15,z=0.00000] [0.76,-0.05,z=0.00000] [0.82,-0.05,z=0.00000] [0.82,-0.10,z=0.00000] [0.76,-0.10,z=0.00000]
29 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x0BE30000 1280x768 fmt=6]
vb=0x15099CB0 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.79,0.15,z=0.00000] [0.76,0.15,z=0.00000] [0.76,-0.14,z=0.00000] [-0.79,-0.14,z=0.00000]
30 prim=13 indices=8 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x11C30000 1280x768 fmt=6]
vb=0x15099D10 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.54,-0.82,z=0.00000] [0.54,-0.82,z=0.00000] [0.54,-0.87,z=0.00000] [-0.54,-0.87,z=0.00000] [-0.40,-0.53,z=0.00000] [0.40,-0.53,z=0.00000] [0.40,-0.67,z=0.00000] [-0.40,-0.67,z=0.00000]
31 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x0B2C0000 1280x768 fmt=6]
vb=0x15099DD0 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [-0.42,-0.49,z=0.00000] [0.42,-0.49,z=0.00000] [0.42,-0.70,z=0.00000] [-0.42,-0.70,z=0.00000]
32 prim=8 indices=3 vs=0x72CBCAA6A7984111 ps=0xE59B2B3DA4AA9008 tex[base=0x10000000 1x1 fmt=26]
--- frame 5 ---
33 prim=8 indices=3 vs=0x0A6D1DD7767FDF27 ps=0x2E372EA28CC404B7
vb=0x15058638 stride=28 attrs=[57@0 38@12 ] fmt0=57 v: [BF000000,BF000000=-0.50,-0.50] [449FF000,BF000000=1279.50,-0.50] [449FF000,4433E000=1279.50,719.50]
34 prim=13 indices=4 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x0BA60000 1280x768 fmt=6]
vb=0x15058690 stride=24 attrs=[57@0 6@12 37@16 ] fmt0=57 v: [BF80199A,3F802D83=-1.00,1.00] [3F7FCCCC,3F802D83=1.00,1.00] [3F7FCCCC,BF7FA4FA=1.00,-1.00] [BF80199A,BF7FA4FA=-1.00,-1.00]
35 prim=13 indices=8 vs=0xE0BAFB4F520FE441 ps=0xE59B2B3DA4AA9008 tex[base=0x11C30000 1280x768 fmt=6]
33 prim=8 indices=3 vs=0x72CBCAA6A7984111 ps=0xE59B2B3DA4AA9008 tex[base=0x10000000 1x1 fmt=26]

View File

@@ -1,13 +1,13 @@
frame 2 draw 0 ( 0, 0) 1280x720 → 8AX 1280x720
frame 2 draw 1 ( 0, 0) 1280x720 → 8AX 1280x720
frame 2 draw 2 (-147,-209) 883x1134 ROT → ?
frame 2 draw 2 ( 525,-292) 1299x1303 ROT → ?
frame 2 draw 3 ( 0, 0) 1280x720 → 8AX 1280x720
frame 2 draw 4 ( 64, 115) 1133x281 → ptlogo_back2eff.t32 1133x280 (±1), ptlogo_back2eff5.t32 1133x280 (±1)
frame 2 draw 4 ( 70, 126) 1120x263 → ptlogo_back2.t32 1118x262 (±2)
frame 2 draw 5 ( 186, 191) 915x115 → ptlogo1.t32 919x113 (±4)
frame 2 draw 5 (1126, 378) 38x18 → ptlogo_tm.t32 37x17 (±1)
frame 2 draw 6 ( 134, 306) 992x104 → ptlogo2.t32 992x104
frame 2 draw 7 ( 294, 655) 691x18 → ptcopyright.t32 694x20 (±3)
frame 2 draw 7 ( 384, 551) 512x50 → ptbtn00.t32 513x50 (±1)
frame 2 draw 8 ( 371, 536) 538x76 → ptbtn00f.t32 537x76 (±1)
frame 1 draw 1 ( 0, 0) 1280x720 → 8AX 1280x720
frame 1 draw 2 ( 0, 0) 1280x720 → 8AX 1280x720
frame 1 draw 3 ( 986,-209) 883x1134 ROT → ?
frame 1 draw 3 (-1114,-292) 1299x1303 ROT → ?
frame 1 draw 4 ( 0, 0) 1280x720 → 8AX 1280x720
frame 1 draw 5 ( 64, 115) 1133x281 → ptlogo_back2eff.t32 1133x280 (±1), ptlogo_back2eff5.t32 1133x280 (±1)
frame 1 draw 5 ( 70, 126) 1120x263 → ptlogo_back2.t32 1118x262 (±2)
frame 1 draw 6 ( 186, 191) 915x115 → ptlogo1.t32 919x113 (±4)
frame 1 draw 6 (1126, 378) 38x18 → ptlogo_tm.t32 37x17 (±1)
frame 1 draw 7 ( 134, 306) 992x104 → ptlogo2.t32 992x104
frame 1 draw 8 ( 294, 655) 691x18 → ptcopyright.t32 694x20 (±3)
frame 1 draw 8 ( 384, 551) 512x50 → ptbtn00.t32 513x50 (±1)
frame 1 draw 9 ( 371, 536) 538x76 → ptbtn00f.t32 537x76 (±1)

View File

@@ -128,3 +128,88 @@ scaling puts it.
* **One screen only.** This is `GP_TITLE`. A rule needs a second screen with a
background and overlapping foreground; the same hook now makes that a
ten-minute run rather than a static argument.
---
## Correction (same day, next iteration): the running screen is build **4**, not build 7
Everything above was matched against `GP_TITLE.pak` **build 7**, because that is
the largest build and what `screen info` defaults to. The game does not run it.
`screen info --geometry` prints each element's *decoded sprite size*, and the two
builds disagree:
| sprite | build 7 | build 4 (`a60fcb85`) | captured quad |
|---|---|---|---|
| `ptlogo1.t32` | 822×100 | **919×113** | 915×115 |
| `ptlogo2.t32` | 888×93 | **992×104** | 992×104 |
| `ptlogo_back2.t32` | 1000×234 | **1118×262** | 1120×263 |
So the quads come from build 4 — a 24-element build — and the earlier index
mapping was against the wrong table. **The conclusion does not change**, only the
numbers: the paint order in build 4's declaration indices is
```
draw 1,2,4 full-screen layers 9 ptbase2 / 10 pteff04 (not separable — see below)
draw 3 two rotated effect quads ?
draw 5 ptlogo_back2eff(5) 18|20, then ptlogo_back2 19
draw 6 ptlogo1 0, then ptlogo_tm 7
draw 7 ptlogo2 1
draw 8 ptcopyright 21, then ptbtn00 ← ptbtn00 is build 2
draw 9 ptbtn00f ← build 2
```
Declaration order is still refuted (`9` first; `0`/`1` after `18`/`19`), reverse
order still refuted (`21` second-to-last), and the two-bundle finding is
unchanged — build 2 is a one-element bundle holding `ptbtn00.rat` at rest
(383,550), against a captured (384,551).
**Reproduced in an independent run** (fresh boot, a signed-in profile, different
frame numbers): byte-for-byte the same order and the same rects. That is the
second observation the `CONFIRMED` bar asks for.
### The batching rule, which is what makes the order readable
Draws carry one or two quads, and a two-quad draw always holds two elements that
are **adjacent in paint order and share a texture page**. Pages alternate
(`0B2C, 11C3, 0BE3, 11C3, 0B2C`), so this is not a sort by page: the engine
accumulates quads while the bound page stays the same and flushes when it
changes. The paint order is therefore the concatenation of the draws' quads, in
vertex order within each draw.
## Two more orderings refuted, and one non-place to look
**There is no depth in the geometry.** Attribute 0 of a UI quad is
`k_32_32_32_FLOAT` — a float3 — so the stream carries a Z. Every Z in the capture
is **0.00000**, on every vertex of every quad of every frame. The submission
order is the whole of the ordering; nothing is left to a depth test.
**There is no ordering field in the bundle either.** Dumping build 4's whole
declaration table word by word (`docs/re/captures/title-build4-decl-words.txt`):
`+28` is 0 on all 24 entries, `+32` is `0xffffffff` (no parent) on all 24, `+36`
is `0xffffffff` except on the three `kind = 0x4` repeat instances where it is
0/1, `+44` is `0xffffffff` on all 24, `+56` is 0 on all 24. The placement
region's per-group lead word — the one word of that header this project had never
read — is **0 for every group**. And the region is followed immediately by the
RATC child stream (`opt ` + `ptlogo1.t32` + `T8aD`), so there is no table after
it to hold a draw order.
So the paint order is not carried by the file. It is produced by the guest's
screen code, and settling it means reading that code (the splash path noted in
the emulator-era work — `sub_821CC7A0`, item vtable `0x820b30b4` — draws with
exactly the PS hash `E59B2B3D` this capture sees).
## A correction to this entry's own premise
It says the F10 ship capture "explicitly drops UI draws … it requires an `f32x3`
position attribute, which a 2D quad stream does not have". **These quads have
one.** Armed on the title screen, `xenia_ship_capture_01.log` holds 1 150 draw
records of which **965 are the UI sprite shader** (`stride=24 prim=13`,
VS `E0BAFB4F`).
The new hook is still the right tool, for reasons that are about the record and
not the filter: the ship capture writes no frame boundaries, no submission
sequence across frames, no bound-texture identity, and de-dups on a key that
happens not to collide here only because the game rebuilds its UI vertex buffer
every frame. But "it cannot see UI draws" was wrong, and the cost of the new hook
was justified with a wrong reason.