fix(anim): hold the last frame at a cyclic seam instead of blending into frame 0 (Holtburg windmill flap-back); register AP-233
The Holtburg windmill (Setup 0x020003E5, cycle 0x0300061B) is a 60-frame quarter turn that loops by 4-blade symmetry: frame 59 and frame 0 are the same picture but 88.5 deg apart. BuildBlendedFrame wrapped the cyclic node's next-frame index to frame 0, so the seam slerped 88.5 deg backwards inside one 33 ms interval - the blades visibly flapped back every two seconds. Retail never blends animation frames at all: CPartArray::UpdateParts (0x005190F0) applies get_part_frame(floor(frame_number)), holding every authored frame for its interval and hard-cutting at the wrap. The render-side blend now holds the boundary frame at BOTH ends of a node's window - the same rule the #61 link-tail fix already applied to one-shot nodes - so every seam is retail's cut while interior frames stay smooth (the owner's choice over dropping the blend, 2026-08-23). Register row AP-233 records the blend as the deviation it has been since the R1-P5 cutover. Test: Advance_CyclicSeamHoldsLastFrameInsteadOfBlendingIntoFrame0 (fails on the previous code at ~45 deg, passes held at 90 deg). Core 4,696/0, App 6,068/0 hermetic (Release). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
2c2d57b25a
commit
51a5fe99ef
3 changed files with 82 additions and 12 deletions
File diff suppressed because one or more lines are too long
Loading…
Add table
Add a link
Reference in a new issue