`compose` claimed the derived paint order "reproduces both measured orders up to ties". That sentence was never measured and was stale by one: there are three measured orders, not two. examples/paint_order_audit.rs checks it. main menu (entries 5, 8) derived == measured 0 inverted pairs developer splash (11, 14) derived == measured 0 inverted pairs title (entry 4) DIFFERS 8, all same-key ties So the claim holds and the exception is entirely ties -- but two of those ties are total occlusions, not near-misses. The tied family is the five ptlogo_back2eff glows (key 32899); back2eff5 is 1133x280 and FULLY CONTAINS back2eff3 (82,824 px^2 = 100% of the smaller) and back2eff4 (152,047 px^2 = 100%). Derived paints it on top of two glows it entirely covers; the game paints it underneath. A tie-break by declaration index can therefore be wrong by a whole layer. The title itself is unaffected -- it has a measured order. The port's actual exposure, per screen: title, main menu and developer splash all use MEASURED orders; the publisher splash is derived but has ZERO ties, so it is fully determined; EXTRAS is derived with 15 tied pairs of which only 2 OVERLAP. Two element pairs on one screen is the whole risk, and that is what HANDOFF now says -- not the raw 15, which would have overstated it 7x. Reach stated: this compares the derived order against orders measured from the game, not an independent derivation, so where no measured order exists only the tie exposure can be checked. Overlap uses pivot*2 as the element size at its resting placement. Stale comment in compose corrected. METHOD: a hedge in a code comment is an unmeasured claim; and count the cases that can bite, not the ones that match the pattern.
36 lines
2.1 KiB
Plaintext
36 lines
2.1 KiB
Plaintext
# cargo run -p sylpheed-formats --example paint_order_audit -- dat/GP_TITLE.pak
|
|
# 2026-08-29
|
|
|
|
1682 | let decl = &decls[0];
|
|
290 | let mut flush = |base: u32,
|
|
entry 0 (no measured order) 7 elements, 2 tied pairs, 1 of them OVERLAPPING
|
|
entry 1 (no measured order) 7 elements, 2 tied pairs, 1 of them OVERLAPPING
|
|
entry 2 (no measured order) 1 elements, 0 tied pairs, 0 of them OVERLAPPING
|
|
entry 3 (no measured order) 1 elements, 0 tied pairs, 0 of them OVERLAPPING
|
|
entry 4 title 24 elements
|
|
derived == measured : NO
|
|
inverted pairs : 8 (of which same-layer-key ties: 8)
|
|
measured: [9, 11, 12, 10, 13, 6, 20, 19, 14, 15, 18, 16, 17, 0, 2, 4, 7, 1, 3, 5, 22, 23, 21, 8]
|
|
derived : [9, 11, 12, 10, 13, 6, 20, 19, 14, 15, 16, 17, 18, 0, 1, 2, 3, 4, 5, 7, 22, 23, 21, 8]
|
|
keys : [32928, 32928, 32928, 32928, 32928, 32928, 32832, 32928, 4294967295, 32768, 4294967295, 32784, 32784, 4294967295, 32899, 32899, 32899, 32899, 32899, 32898, 32897, 33024, 32936, 32937]
|
|
entry 5 main menu 16 elements
|
|
derived == measured : YES
|
|
inverted pairs : 0 (of which same-layer-key ties: 0)
|
|
entry 6 (no measured order) 18 elements, 15 tied pairs, 2 of them OVERLAPPING
|
|
entry 7 (no measured order) 30 elements, 37 tied pairs, 16 of them OVERLAPPING
|
|
entry 8 main menu 16 elements
|
|
derived == measured : YES
|
|
inverted pairs : 0 (of which same-layer-key ties: 0)
|
|
entry 9 (no measured order) 18 elements, 15 tied pairs, 2 of them OVERLAPPING
|
|
entry 10 (no measured order) 3 elements, 0 tied pairs, 0 of them OVERLAPPING
|
|
entry 11 splash 7 elements
|
|
derived == measured : YES
|
|
inverted pairs : 0 (of which same-layer-key ties: 0)
|
|
entry 12 (no measured order) 10 elements, 2 tied pairs, 1 of them OVERLAPPING
|
|
entry 13 (no measured order) 3 elements, 0 tied pairs, 0 of them OVERLAPPING
|
|
entry 14 splash 7 elements
|
|
derived == measured : YES
|
|
inverted pairs : 0 (of which same-layer-key ties: 0)
|
|
entry 15 (no measured order) 10 elements, 2 tied pairs, 1 of them OVERLAPPING
|
|
5 build(s) with a measured order were checked
|