Files
Sylpheed/docs/re/data/splash-declared-timeline.txt
sylph-decoder 43a57379f1 re: the declared timeline DOES reproduce the splash -- and the unit rate is per-GamePart
Two results, one of which corrects me.

1. The R1-re-opened 'declared keyframe timeline reproduces the captured
splash' resolves in FAVOUR of the declared timeline. Instrument is a disc
keyframe table against the guest's vertex stream -- no renderer in the chain,
which is what the 'our-reader' tag demanded. Calibration-free test: is each
captured alpha an exact member of the declared piecewise-linear value set at
integer t? 39/50 exact under truncation, 30/50 under rounding, and the worst
error under either rule is ONE alpha level in 255. All 11 non-exact samples
are low by exactly 1 and all are on falling segments. The old refutation
rested on 'still at a=255 nine frames after its declared a=32' -- under the
fixed layout a=32 is at t=206, four units from the end of a 210-unit
timeline. That was the off-by-one association.

2. The unit->seconds rate is PER-GAMEPART, which corrects what I told the
port an hour ago. Title ~57 units/guest-second; splash ~35-40. The splash
figure is confirmed two ways that share no algebra: a 15-unit ramp (T read
off the disc, not borrowed) and a 160-unit HOLD, which is a declared
duration with no T, no alpha slope and no interpolation in it.

And my 'the borrowed T=15 does not apply' was wrong in the other direction:
the disc says T=15 plainly. What failed was the premise of a single global
rate, not the T. Noted at the foot of that page rather than by editing it.

The trap worth recording: all four elements give 650-679 alpha/s, agreeing
to 2%, which reads exactly like one clock. It is a coincidence -- T differs
22 vs 15 and the rates differ 57 vs 37, and the ratios nearly cancel. A
quantity that looks constant across screens is not evidence of one clock
when the thing that would vary is inside it. The hold breaks the tie.

For the port: a single keyframe_units_per_second cannot be right, and a
splash played at 60 runs 1.5-1.7x too fast -- shorter, sharper fades than
the game's, which is the direction the play-test reported.
2026-09-01 17:19:59 +00:00

58 lines
5.4 KiB
Plaintext

# The developer splash's DECLARED keyframe timeline, off the disc, under the FIXED
# record layout (ui-keyframe-record-layout.md). Reader: sylpheed-cli screen info
# --all --build 11 --geometry, built from this checkout.
build [11] 1280x720 7 elements 6 sprites
# element parent kind pivot kf rest / keyframes
0 palogo_eff0.prm - 0x10 (640,360) 1 (0,0)
1 palogo_gamearts.t32 - 0x0 (250,36) 7 rest (390,164) t=30 [0:390,164 15:390,164 30:390,164 190:390,164 194:390,164 206:390,164 210:390,164]
2 palogo_gamearts_eff.t32 - 0x0 (260,46) 4 rest (379,154) t=15 [0:379,154 15:379,154 30:379,154 45:379,154]
3 palogo_seta.t32 - 0x0 (120,44) 7 rest (521,316) t=30 [0:521,316 15:521,316 30:521,316 190:521,316 194:521,316 206:521,316 210:521,316]
4 palogo_seta_eff.t32 - 0x0 (130,55) 4 rest (511,305) t=15 [0:511,305 15:511,305 30:511,305 45:511,305]
5 palogo_anima.t32 - 0x0 (194,68) 7 rest (446,449) t=30 [0:446,449 15:446,449 30:446,449 190:446,449 194:446,449 206:446,449 210:446,449]
6 palogo_anima_eff.t32 - 0x0 (204,78) 4 rest (435,440) t=30 [0:435,440 15:435,440 30:435,440 45:435,440]
placement-region group order: [0, 1, 2, 3, 4, 5, 6] (== declaration order)
RATC child order: ["T8aD:palogo_gamearts.t32", "T8aD:palogo_gamearts_eff.t32", "T8aD:palogo_seta.t32", "T8aD:palogo_seta_eff.t32", "T8aD:palogo_anima.t32", "T8aD:palogo_anima_eff.t32"]
geometry — decoded sprite size vs the declared pivot, and every keyframe
# sprite decoded pivot*2 same keyframes t: x,y sx%,sy% a=alpha r=rot°
0 — — 1280x720 - 0: 0,0 100%,100% a=255
1 palogo_gamearts.t32 500x71 500x72 NO 0: 390,164 100%,100% a=0 15: 390,164 100%,100% a=0 30: 390,164 100%,100% a=255 190: 390,164 100%,100% a=255 194: 390,164 100%,100% a=232 206: 390,164 100%,100% a=32 210: 390,164 100%,100% a=0
2 palogo_gamearts_eff.t32 521x91 520x92 NO 0: 379,154 100%,100% a=0 15: 379,154 100%,100% a=255 30: 379,154 100%,100% a=255 45: 379,154 100%,100% a=0
3 palogo_seta.t32 240x89 240x88 NO 0: 521,316 100%,100% a=0 15: 521,316 100%,100% a=0 30: 521,316 100%,100% a=255 190: 521,316 100%,100% a=255 194: 521,316 100%,100% a=232 206: 521,316 100%,100% a=32 210: 521,316 100%,100% a=0
4 palogo_seta_eff.t32 261x110 260x110 NO 0: 511,305 100%,100% a=0 15: 511,305 100%,100% a=255 30: 511,305 100%,100% a=255 45: 511,305 100%,100% a=0
5 palogo_anima.t32 388x136 388x136 yes 0: 446,449 100%,100% a=0 15: 446,449 100%,100% a=0 30: 446,449 100%,100% a=255 190: 446,449 100%,100% a=255 194: 446,449 100%,100% a=232 206: 446,449 100%,100% a=32 210: 446,449 100%,100% a=0
6 palogo_anima_eff.t32 407x156 408x156 NO 0: 435,440 100%,100% a=0 15: 435,440 100%,100% a=255 30: 435,440 100%,100% a=212 45: 435,440 100%,100% a=0
# ---- and the PRESS (A) plate, build 2, for the T=22 the rate rests on ----
build [2] 1280x720 1 elements 2 sprites
# element parent kind pivot kf rest / keyframes
0 ptbtn00.rat - 0x73002 (256,25) 5 rest (383,550) t=236 [0:383,560 214:383,550 236:383,550 238:383,550 244:383,550]
→ focus ptbtn00f.rat
placement-region group order: [0] (== declaration order)
RATC child order: ["T8aD:ptbtn00.t32", "T8aD:ptbtn00f.t32", "RATC:ptbtn00.rat", "RATC:ptbtn00f.rat"]
geometry — decoded sprite size vs the declared pivot, and every keyframe
# sprite decoded pivot*2 same keyframes t: x,y sx%,sy% a=alpha r=rot°
0 ptbtn00.t32 513x50 512x50 NO 0: 383,560 100%,100% a=0 214: 383,550 100%,100% a=0 236: 383,550 100%,100% a=255 238: 383,550 100%,100% a=255 244: 383,550 100%,100% a=0
# ---- publisher splash, build 10 ----
build [10] 1280x720 3 elements 2 sprites
# element parent kind pivot kf rest / keyframes
0 palogo_eff0.prm - 0x10 (640,360) 1 (0,0)
1 palogo_sqex.t32 - 0x0 (330,30) 7 rest (309,330) t=30 [0:309,330 15:309,330 30:309,330 235:309,330 239:309,330 251:309,330 255:309,330]
2 palogo_sqex_eff.t32 1 0x1 (341,41) 4 rest (299,319) t=30 [0:299,319 15:299,319 30:299,319 45:299,319]
placement-region group order: [0, 1, 2] (== declaration order)
RATC child order: ["T8aD:palogo_sqex.t32", "T8aD:palogo_sqex_eff.t32"]
geometry — decoded sprite size vs the declared pivot, and every keyframe
# sprite decoded pivot*2 same keyframes t: x,y sx%,sy% a=alpha r=rot°
0 — — 1280x720 - 0: 0,0 100%,100% a=255
1 palogo_sqex.t32 666x68 660x60 NO 0: 309,330 100%,100% a=0 15: 309,330 100%,100% a=0 30: 309,330 100%,100% a=255 235: 309,330 100%,100% a=255 239: 309,330 100%,100% a=232 251: 309,330 100%,100% a=32 255: 309,330 100%,100% a=0
2 palogo_sqex_eff.t32 686x89 682x82 NO 0: 299,319 100%,100% a=0 15: 299,319 100%,100% a=255 30: 299,319 100%,100% a=212 45: 299,319 100%,100% a=0