sylpheed-port's BLOCKED ask #2. The gap was the one quantity in the transition with no rule: measured at 0, 3 and 2 frames across three transitions, and I had proposed it might be a load, which would make it emulator- and storage-dependent and unauthorable. Leg 1, bundle size runs the wrong way. If the gap were the incoming bundle arriving, the biggest bundle would gap longest. Build 4 is 12 278 666 B and gaps ZERO frames; build 5 is 6 977 437 B and gaps 3 and 2. Leg 2, ran title->menu a second time from cold. The outgoing ramp is byte-identical (63, 127, 191, 255) and the gap is 3 frames in BOTH runs. Leg 3, and the two runs are not a null comparison -- which is the objection leg 2 invites. The captures refute it themselves: press-to-first-change differs by ~12 frames between them (~25 against ~10). Something in this transition really is cache-sensitive and moved by 0.4 s, while the gap did not move at all. The control comes from inside the measurement rather than from an assumption that conditions differed. So the gap is deterministic to the frame and not a load. It is also not constant across transitions (0, 3, 2, 3) and not in the fade group -- the port reports 866 keyframes across 16 screens with 0 untimed. A deterministic game quantity with no rule found; black_hold_units stays 0, and "not a load" must not become a reason to author a constant. The load proposal in screen-transitions.md is marked refuted rather than deleted. Also fills in docs/game/navigation.md, which the standing brief asks me to keep and which I had not touched while measuring four transitions: a player-side section on what a screen change looks like, and three scripting traps -- that `pkill -f xenia_canary` kills the shell that ran it (cost a launch today, and the same trap is already in METHOD for pgrep), that screen_id.py reports `menu` during the attract loop, and that it cannot tell EXTRAS from the main menu. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wuu56cE8vJGTBtn1ppsk8v
113 lines
6.9 KiB
Plaintext
113 lines
6.9 KiB
Plaintext
# FOUR screen changes, per frame, from the running game. 2026-08-30.
|
|
# tools/re-capture/fade_decompose.sh (WHERE=menu | title | extras)
|
|
#
|
|
# Captures 2 and 4 are the SAME transition, title -> menu via (A), run twice.
|
|
# They are the hold-vs-load test: a load varies with cache and contention,
|
|
# a deterministic hold does not. The pair carries its own control -- the
|
|
# press-to-first-change latency DIFFERS by ~12 frames between the two runs,
|
|
# so conditions demonstrably were not identical, while the black gap is
|
|
# exactly 3 frames in both.
|
|
#
|
|
# quantity run 1 (cap 2) run 2 (cap 4)
|
|
# outgoing quad rise 67-70: 63,127,191,255 64-67: 63,127,191,255
|
|
# frames black ([255] alone) 70,71,72 = 3 67,68,69 = 3
|
|
# incoming appears frame 73 frame 70
|
|
# incoming decay 255,-,127,84,63 255,169,127,84,42
|
|
# press -> first change ~25 frames ~10 frames
|
|
|
|
############ CAPTURE 1 -- menu -> title, via (B) ############
|
|
frame untextured full-screen textured (distinct) draws tex
|
|
28 [64] [142, 146, 192, 255] 12 10
|
|
29 [64] [143, 146, 192, 255] 12 10
|
|
30 [64] [143, 147, 192, 255] 12 10
|
|
31 [64] [143, 147, 192, 255] 12 10
|
|
32 [64] [144, 148, 192, 255] 12 10
|
|
34 [64, 255, 64] [144, 148, 169, 191, 254, 255] 15 12
|
|
35 [64, 223, 64] [84, 143, 145, 149, 191, 255] 15 12
|
|
36 [64, 207, 64] [42, 119, 145, 149, 159, 255] 15 12
|
|
37 [64, 175, 64] [71, 95, 145, 149, 191, 255] 14 11
|
|
39 [64, 95, 64] [146, 150, 255] 11 8
|
|
40 [64, 31, 64, 102] [146, 151, 255] 12 6
|
|
41 [64, 15, 64, 127] [146, 151, 255] 12 6
|
|
43 [64, 64, 255] [147, 152, 255] 12 6
|
|
44 [64, 64, 255] [147, 152, 255] 12 6
|
|
45 [64, 64, 255] [148, 152, 255] 12 6
|
|
46 [64] [255] 6 2
|
|
47 [64] [32, 255] 8 6
|
|
49 [64] [32, 96, 255] 8 6
|
|
50 [64] [48, 128, 255] 8 6
|
|
|
|
############ CAPTURE 2 -- title -> menu, via (A), run 1 ############
|
|
frame untextured full-screen textured (distinct) draws tex
|
|
60 [] [42, 50, 55, 84, 255] 9 8
|
|
61 [] [16, 18, 255] 8 7
|
|
62 [] [235, 255] 7 6
|
|
63 [] [196, 255] 7 6
|
|
64 [] [156, 255] 7 6
|
|
65 [] [117, 255] 7 6
|
|
66 [] [78, 255] 7 6
|
|
67 [63] [19, 255] 8 4
|
|
68 [127] [255] 6 2
|
|
69 [191] [255] 6 2
|
|
70 [255] [255] 6 2
|
|
71 [255] [255] 6 2
|
|
72 [255] [255] 6 2
|
|
73 [64, 255] [255] 7 3
|
|
75 [64, 127] [2, 252, 255] 7 3
|
|
76 [64, 84] [3, 251, 255] 7 3
|
|
77 [64, 63] [3, 251, 255] 7 3
|
|
78 [64] [5, 249, 255] 7 3
|
|
79 [64] [5, 249, 255] 7 3
|
|
80 [64] [7, 32, 247, 255] 8 6
|
|
81 [64] [8, 96, 246, 255] 8 6
|
|
82 [64] [8, 160, 246, 255] 8 6
|
|
|
|
############ CAPTURE 3 -- EXTRAS -> menu, via (B) ############
|
|
frame untextured full-screen textured (distinct) draws tex
|
|
28 [64] [128, 171, 181, 255] 11 9
|
|
29 [64] [128, 172, 182, 255] 11 9
|
|
30 [64] [111, 127, 172, 182, 185, 255] 11 9
|
|
31 [64] [42, 79, 139, 172, 183, 223, 255] 11 9
|
|
32 [64] [31, 69, 127, 173, 183, 255] 10 8
|
|
33 [64] [31, 173, 184, 255] 9 7
|
|
34 [64, 51] [174, 184, 255] 8 4
|
|
35 [64, 102] [174, 184, 255] 8 4
|
|
36 [64, 178] [174, 185, 255] 8 4
|
|
37 [64, 229] [174, 185, 255] 8 4
|
|
38 [64, 255] [175, 186, 255] 8 4
|
|
39 [] [] 3 0
|
|
40 [] [] 3 0
|
|
41 [64, 169] [1, 253, 255] 7 3
|
|
42 [64, 148] [2, 252, 255] 7 3
|
|
43 [64, 106] [2, 252, 255] 7 3
|
|
44 [64, 63] [3, 251, 255] 7 3
|
|
45 [64, 21] [4, 250, 255] 7 3
|
|
46 [64] [5, 249, 255] 7 3
|
|
47 [64] [6, 248, 255] 7 3
|
|
48 [64] [7, 32, 247, 255] 8 6
|
|
49 [64] [8, 96, 246, 255] 8 6
|
|
50 [64] [9, 192, 245, 255] 8 6
|
|
|
|
############ CAPTURE 4 -- title -> menu, via (A), run 2 ############
|
|
frame untextured full-screen textured (distinct) draws tex
|
|
61 [] [137, 255] 7 6
|
|
62 [] [98, 255] 7 6
|
|
63 [] [78, 255] 7 6
|
|
64 [63] [19, 255] 8 4
|
|
65 [127] [255] 6 2
|
|
66 [191] [255] 6 2
|
|
67 [255] [255] 6 2
|
|
68 [255] [255] 6 2
|
|
69 [255] [255] 6 2
|
|
70 [64, 255] [255] 7 3
|
|
71 [64, 169] [1, 253, 255] 7 3
|
|
72 [64, 127] [2, 252, 255] 7 3
|
|
73 [64, 84] [3, 251, 255] 7 3
|
|
74 [64, 42] [4, 250, 255] 7 3
|
|
75 [64] [5, 249, 255] 7 3
|
|
76 [64] [6, 248, 255] 7 3
|
|
77 [64] [7, 32, 247, 255] 8 6
|
|
78 [64] [8, 96, 246, 255] 8 6
|
|
79 [64] [9, 192, 245, 255] 8 6
|
|
80 [64] [10, 244, 255] 8 6
|