re: the paint-order tie-break costs 24 overlapping pairs, not one element
The port challenged HANDOFF's "costs one element's blend on one screen" with a census of 105 elements sharing a layer key across 12 of 16 screens. The two numbers count different things -- elements vs overlapping pairs -- so it is not the contradiction it looked like, but the objection stands and the line was wrong. paint_order_audit already reports overlapping ties per entry, and over all 16 GP_TITLE entries: 5 use a measured order and carry no tie risk; of the 11 that fall back to the derived order, 7 have overlapping ties, 24 pairs in total. The Japanese title (entry 7) alone has 16, because it is the twin of the one build whose measured order exists and has none of its own. Overlap bounds where a wrong tie-break COULD show, not what it costs; nobody has measured how many of the 24 change a pixel, and the port is right about that too. The rule itself is unaffected: the layer key is still decoded and the derived order still reproduces every measured order exactly except the title's eight tied pairs. Census committed at docs/re/data/paint-order-ties-gp_title.txt. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Nsxw1A9JseUw99Yw1ZRQzY
This commit is contained in:
@@ -1180,7 +1180,7 @@ here until 2026-08-28 and is now settled.)
|
||||
|---|---|---|
|
||||
| 🟡 | **cue NAME → event binding** (Q8) | event→**wave** is measured for move/confirm/back; that the cursor's wave is the cue *named* `SE_UI_CURSOR` is still read off the authors' identifiers |
|
||||
| ❔ | **the other ~319 SE cues** (Q8) | located one at a time by triggering them; only the three the menu needs have been done |
|
||||
| 🟡 | **the paint-order tie-break** (Q3) | eight candidates refuted; costs one element's blend on one screen |
|
||||
| 🟡 | **the paint-order tie-break** (Q3) | eight candidates refuted. 🔴 **The cost was understated and is corrected 2026-08-29** — the port challenged it and was right. Over all 16 `GP_TITLE` entries: 5 use a **measured** order and carry no tie risk; the other 11 fall back to the derived order and **7 of them have overlapping ties, 24 pairs in total** — 16 of those on the **Japanese title** (entry 7) alone, 2 each on `EXTRAS` EN/JP, 1 each on the four loading bundles. ⚠️ Overlap bounds *where* a wrong tie-break could show; nobody has measured how many actually change a pixel — [`ui-paint-order-derived-check.md`](../re/structures/ui-paint-order-derived-check.md) · [census](../re/data/paint-order-ties-gp_title.txt) |
|
||||
| 🟡 | **GamePart ids behind the buttons** (Q4) | the *screens* are measured; the ids are a name match onto the executable's class names |
|
||||
| 🟡 | **the boot transitions in code** (Q6) | both levels decoded — phase at `this+132` (`entry→2`, `2→0`, `2→3`, `3→4`, `4→2`) and state at `this+136` inside phase 4. Phase 0 = splash (`LOGO`), phase 2 = title + `PRESS Ⓐ`, phase 4 = menu. Unknown: what the event *numbers* mean |
|
||||
| 🟡 | **Ⓑ leaving the main menu** (Q5) | **upgraded 2026-08-29 (later).** The idle half of this objection is **refuted**: the main menu does not self-return for **≥ 60 s** untouched, and the ~8–10 s idle belongs to the **title**. Ⓑ is delivered (Canary logs `vk=5801`) and is the only input in ≥ 100 s before the return, so the **ordering is measured**; the latency is not (a backlogged probe void). The footer point stands — the main menu is still the only screen not advertising Ⓑ — [`menu-navigation-semantics.md`](../re/menu-navigation-semantics.md#-refutation-attempt-2026-08-29--the-main-menus-own-footer-does-not-advertise-ⓑ) |
|
||||
|
||||
73
docs/re/data/paint-order-ties-gp_title.txt
Normal file
73
docs/re/data/paint-order-ties-gp_title.txt
Normal file
@@ -0,0 +1,73 @@
|
||||
warning: unused variable: `decl`
|
||||
--> crates/sylpheed-formats/src/mesh.rs:1682:9
|
||||
|
|
||||
1682 | let decl = &decls[0];
|
||||
| ^^^^ help: if this is intentional, prefix it with an underscore: `_decl`
|
||||
|
|
||||
= note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
|
||||
|
||||
warning: variable does not need to be mutable
|
||||
--> crates/sylpheed-formats/src/ship_capture.rs:290:9
|
||||
|
|
||||
290 | let mut flush = |base: u32,
|
||||
| ----^^^^^
|
||||
| |
|
||||
| help: remove this `mut`
|
||||
|
|
||||
= note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
|
||||
|
||||
entry 0 (no measured order) 7 elements, 2 tied pairs, 1 of them OVERLAPPING
|
||||
overlapping tie: [5] pgloading_eff01.t32 x [6] pgloading_eff02.t32 key 49408 rect (202, 528, 332, 144) / (74, 518, 188, 186) overlap 60x144
|
||||
entry 1 (no measured order) 7 elements, 2 tied pairs, 1 of them OVERLAPPING
|
||||
overlapping tie: [5] pgloading_eff01.t32 x [6] pgloading_eff02.t32 key 49408 rect (202, 528, 332, 144) / (74, 518, 188, 186) overlap 60x144
|
||||
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, 32800, 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
|
||||
overlapping tie: [0] ptframe3.t32 x [1] ptframe4.t32 key 32848 rect (440, 230, 246, 220) / (584, 318, 256, 210) overlap 102x132
|
||||
overlapping tie: [14] ptloop01.rat x [15] ptloop02.rat key 32784 rect (441, 270, 400, 180) / (441, 270, 400, 180) overlap 400x180
|
||||
entry 7 (no measured order) 30 elements, 37 tied pairs, 16 of them OVERLAPPING
|
||||
overlapping tie: [1] ptlogo2.t32 x [11] ptlogo_tm.t32 key 32928 rect (193, 335, 898, 92) / (1073, 392, 44, 28) overlap 18x28
|
||||
overlapping tie: [2] ptlogo1.t32 x [4] ptlogo1.t32 key 32928 rect (-65, 33, 902, 100) / (-65, 33, 902, 100) overlap 902x100
|
||||
overlapping tie: [3] ptlogo2.t32 x [5] ptlogo2.t32 key 32928 rect (493, 535, 898, 92) / (493, 535, 898, 92) overlap 898x92
|
||||
overlapping tie: [7] ptlogo_eff2.rat x [23] ptlogo_back2.t32 key 32898 rect (412, 96, 338, 338) / (134, 173, 1000, 234) overlap 338x234
|
||||
overlapping tie: [8] ptlogo_eff3.t32 x [24] ptlogo_back2eff.t32 key 32897 rect (98, 42, 946, 386) / (127, 164, 1014, 252) overlap 917x252
|
||||
overlapping tie: [15] ptloop01.rat x [16] ptloop02.rat key 32784 rect (441, 270, 400, 180) / (441, 270, 400, 180) overlap 400x180
|
||||
overlapping tie: [18] ptlogo_back2eff1.t32 x [19] ptlogo_back2eff2.t32 key 32899 rect (910, 227, 156, 120) / (910, 164, 232, 182) overlap 156x119
|
||||
overlapping tie: [18] ptlogo_back2eff1.t32 x [20] ptlogo_back2eff3.t32 key 32899 rect (910, 227, 156, 120) / (802, 164, 340, 182) overlap 156x119
|
||||
overlapping tie: [18] ptlogo_back2eff1.t32 x [21] ptlogo_back2eff4.t32 key 32899 rect (910, 227, 156, 120) / (483, 164, 658, 182) overlap 156x119
|
||||
overlapping tie: [18] ptlogo_back2eff1.t32 x [22] ptlogo_back2eff5.t32 key 32899 rect (910, 227, 156, 120) / (127, 164, 1014, 252) overlap 156x120
|
||||
overlapping tie: [19] ptlogo_back2eff2.t32 x [20] ptlogo_back2eff3.t32 key 32899 rect (910, 164, 232, 182) / (802, 164, 340, 182) overlap 232x182
|
||||
overlapping tie: [19] ptlogo_back2eff2.t32 x [21] ptlogo_back2eff4.t32 key 32899 rect (910, 164, 232, 182) / (483, 164, 658, 182) overlap 231x182
|
||||
overlapping tie: [19] ptlogo_back2eff2.t32 x [22] ptlogo_back2eff5.t32 key 32899 rect (910, 164, 232, 182) / (127, 164, 1014, 252) overlap 231x182
|
||||
overlapping tie: [20] ptlogo_back2eff3.t32 x [21] ptlogo_back2eff4.t32 key 32899 rect (802, 164, 340, 182) / (483, 164, 658, 182) overlap 339x182
|
||||
overlapping tie: [20] ptlogo_back2eff3.t32 x [22] ptlogo_back2eff5.t32 key 32899 rect (802, 164, 340, 182) / (127, 164, 1014, 252) overlap 339x182
|
||||
overlapping tie: [21] ptlogo_back2eff4.t32 x [22] ptlogo_back2eff5.t32 key 32899 rect (483, 164, 658, 182) / (127, 164, 1014, 252) overlap 658x182
|
||||
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
|
||||
overlapping tie: [0] ptframe3.t32 x [1] ptframe4.t32 key 32848 rect (440, 230, 246, 220) / (584, 318, 256, 210) overlap 102x132
|
||||
overlapping tie: [14] ptloop01.rat x [15] ptloop02.rat key 32784 rect (441, 270, 400, 180) / (441, 270, 400, 180) overlap 400x180
|
||||
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
|
||||
overlapping tie: [8] pgloading_eff01.t32 x [9] pgloading_eff02.t32 key 49408 rect (202, 528, 332, 144) / (74, 518, 188, 186) overlap 60x144
|
||||
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
|
||||
overlapping tie: [8] pgloading_eff01.t32 x [9] pgloading_eff02.t32 key 49408 rect (202, 528, 332, 144) / (74, 518, 188, 186) overlap 60x144
|
||||
|
||||
5 build(s) with a measured order were checked
|
||||
@@ -10,6 +10,44 @@ there are **three** measured orders now, not two.
|
||||
Tool: `cargo run -p sylpheed-formats --example paint_order_audit -- dat/GP_TITLE.pak`.
|
||||
Output committed at [`data/paint-order-audit.txt`](../data/paint-order-audit.txt).
|
||||
|
||||
## 🔴 Refutation, 2026-08-29 — the published COST of the tie-break was understated
|
||||
|
||||
The port challenged HANDOFF's line *"eight candidates refuted; costs one
|
||||
element's blend on one screen"* against its own census of 105 elements sharing a
|
||||
key across 12 of 16 screens. Those two numbers are not comparable — the port
|
||||
counts *elements*, this page counts overlapping *pairs*, and "one screen" was
|
||||
scoped to five English menu screens without saying so. **So the objection is not
|
||||
the contradiction it looked like. It is still right, and the line is corrected.**
|
||||
|
||||
`paint_order_audit` already reports overlapping ties per entry. Run over all 16
|
||||
`GP_TITLE` entries — committed at
|
||||
[`data/paint-order-ties-gp_title.txt`](../data/paint-order-ties-gp_title.txt):
|
||||
|
||||
| entry | screen | tied pairs | **overlapping** |
|
||||
|---|---|---|---|
|
||||
| 4, 5, 8, 11, 14 | title EN, main menu ×2, splash ×2 | — | **measured order is used; no tie risk** |
|
||||
| 0, 1 | loading, plain | 2 | **1** each |
|
||||
| 12, 15 | loading, dressed | 2 | **1** each |
|
||||
| 6, 9 | `EXTRAS` EN / JP | 15 | **2** each |
|
||||
| **7** | **title, Japanese** | **37** | **16** |
|
||||
| 2, 3, 10, 13 | `PRESS Ⓐ` plate, `palogo_sqex` | 0 | 0 |
|
||||
|
||||
**24 overlapping tied pairs across 7 of the 11 entries that fall back to the
|
||||
derived order** — not one element on one screen. The Japanese title alone carries
|
||||
16, because it is the twin of the one build whose measured order exists and it
|
||||
has no measured order of its own.
|
||||
|
||||
⚠️ **Overlap is an upper bound on the cost, not the cost.** Two elements that
|
||||
overlap still show nothing if either is transparent at rest or one is opaque
|
||||
where they meet. What the pair count bounds is *where a wrong tie-break could
|
||||
show*, and the port is right that nobody has measured how many of those actually
|
||||
change a pixel.
|
||||
|
||||
⚠️ This does not weaken the **rule**. The layer key is decoded and the derived
|
||||
order reproduces every measured order it can be checked against, exactly, except
|
||||
the title's eight tied pairs. What is corrected is only the advertised blast
|
||||
radius of the unknown tie-break.
|
||||
|
||||
## The claim holds, and the exception is all ties
|
||||
|
||||
| build | derived == measured | inverted pairs | of which same-key ties |
|
||||
|
||||
Reference in New Issue
Block a user