Files
Sylpheed/docs/re/data/ptloop-leaf-sweep-positions.txt
sylph-decoder 59f3ac6846 re: ask #2 -- t=357.7 came from a GPU draw capture, and a sweep cannot date a frame
The port asked whether the refined sweep fit t=357.7 was measured against
live-title-build4-no-plate.png, because if so one of us is 42 units out.

It was not. 357.7 was solved against title-draw-capture-vertex-colours.log, a
GPU per-draw capture of the submitted vertex buffer -- four observables at once,
two quad centres and two vertex alphas. No framebuffer, no PNG.

The gap is not a fitting error either. Posing the leaves directly, t=400 misses
the captured quads by +169.0 and -172.2 px. Probe control: it reproduces the
page's published t=355 centres, 981 and 478, exactly.

Refutation attempted and FAILED: I expected the port's fit to be minimised by
the quad leaving the screen -- 'best fit' meaning 'draws least', the same shape
as the .tbm control that could not fail. At t=400 quad B is fully on screen and
quad A is 319 of 400 px. Their number is fitting something present and it
survives.

The real reason the two must differ is better than 'different frames'. The
sweeps are nested records on a free-running loop and their cycles differ -- 600
and 720, read from the record header +0x08 -- while the top-level clock stops at
settle. So two captures of the same settled title share a screen time and not a
sweep phase, by construction.

Consequence for the port: a sweep position does not date a frame; it gives a
phase on a 600- or 720-unit loop. And 357.7 is a joint fit over both leaves
while the port's ~400 poses one, so the two are not comparable in kind -- the
phases coincide only every LCM 3 600 units.

Discriminator handed to the port rather than taken: if its ~400 is pteff03 and
the frame is in the first cycle, pteff03a must be at centre 295 in that same
frame. The fit is against its renderer, so it owns the check.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wuu56cE8vJGTBtn1ppsk8v
2026-08-30 07:15:45 +00:00

63 lines
2.7 KiB
Plaintext

# The title's two light-sweep leaves: position, alpha and on-screen extent
# across the window where the draw-capture fit (t=357.7) and the port's
# PNG fit (~400) disagree.
#
# Produced by: cargo run -p sylpheed-formats --example ptloop_leaf_sweep_at
# 2026-08-30, SYLPHEED_DISC=/disc, GP_TITLE entry 4.
#
# CONTROL: at t=355 this reproduces ui-leaf-vs-parent-alpha.md's published
# centres exactly -- 981 and 478. The probe is reading the same leaves.
#
# centre = keyframe x + pivot_x. The keyframe x is the quad's LEFT edge;
# the draw-capture fit is quoted in centres.
#
# At t=357.7: A centre 991.8, B centre 467.2 (measured: 992.0 / 467.2)
# At t=400: A centre 1161, B centre 295 -- +169.0 and -172.2 px off
#
# The two nested records cycle at DIFFERENT lengths, 600 and 720.
#
-- ptloop01.rat nested record: loop length (+0x08) = 600
== ptloop01.rat -> leaf pteff03.t32 (sprite None, pivot 200x90, 4 keyframes, last t=Some(Some(600)))
t | x | centre | a | on-screen px of a 400px-wide quad
340 | 721 | 921 | 190 | 400 px
350 | 761 | 961 | 193 | 400 px
355 | 781 | 981 | 195 | 400 px
357 | 789 | 989 | 195 | 400 px
358 | 793 | 993 | 196 | 400 px
360 | 801 | 1001 | 196 | 400 px
370 | 841 | 1041 | 200 | 400 px
380 | 881 | 1081 | 203 | 399 px
390 | 921 | 1121 | 206 | 359 px
395 | 941 | 1141 | 208 | 339 px
400 | 961 | 1161 | 209 | 319 px
405 | 981 | 1181 | 211 | 299 px
410 | 1001 | 1201 | 213 | 279 px
420 | 1041 | 1241 | 216 | 239 px
440 | 1121 | 1321 | 222 | 159 px
480 | 1281 | 1481 | 235 | 0 px *** ENTIRELY OFF SCREEN ***
540 | 1521 | 1721 | 255 | 0 px *** ENTIRELY OFF SCREEN ***
-- ptloop02.rat nested record: loop length (+0x08) = 720
== ptloop02.rat -> leaf pteff03a.t32 (sprite None, pivot 200x90, 4 keyframes, last t=Some(Some(720)))
t | x | centre | a | on-screen px of a 400px-wide quad
340 | 339 | 539 | 178 | 400 px
350 | 298 | 498 | 181 | 400 px
355 | 278 | 478 | 182 | 400 px
357 | 270 | 470 | 183 | 400 px
358 | 266 | 466 | 183 | 400 px
360 | 258 | 458 | 184 | 400 px
370 | 217 | 417 | 186 | 400 px
380 | 177 | 377 | 189 | 400 px
390 | 136 | 336 | 192 | 400 px
395 | 116 | 316 | 193 | 400 px
400 | 95 | 295 | 194 | 400 px
405 | 75 | 275 | 195 | 400 px
410 | 55 | 255 | 197 | 400 px
420 | 14 | 214 | 199 | 400 px
440 | -67 | 133 | 205 | 333 px
480 | -230 | -30 | 215 | 170 px
540 | -473 | -273 | 231 | 0 px *** ENTIRELY OFF SCREEN ***