Entry 147

The ground follows each animation's root curve

Filescrates/rugrats/src/actors/player.rscrates/rugrats/tests/play.rs

Mentioned incrates/rugrats/src/actors/animator.rs:1031

After a climb the oracle's Tommy goes from -55 over the floor to the floor in about seven frames. Worklog 145 left that open. The oracle's table states (0x800e2bf0) through it:

VSyncystate
2734-1250
2736-1113
2738-1153
2740-1103
2742-933
2744-883
2746-803
2748-694

The floor is -70. Against it, from 2738 on, that is -45, -40, -23, -18, -10, +1: the run's own curve from the floor, the same as in a run that began there (worklog 138: -40, -23, -18, -10, +1). Only state 3's first frame differs (-41 for -33). It starts from where the body was and blends that away, as 0x80055904 sets +0xde from the frame's start. The landing's return to the floor (868, 845, 822, 799, 779) is the same thing, through the idle's first frame.

So the ground offset root_y is now each animation's root curve so far plus root_base: where the body was as the animation began, scaled away over its first frame. A new animation or a loop's next round takes the base from where the last left the body, including the rest of one that ran to its end. The fixed 23-a-frame return is gone.

Against the oracle:

  • after the climb, port -125, -120, -110, -93, -88, -80, -69, -99, oracle -125, -111, -115, -110, -93, -88, -80, -69, -98;
  • after the landing, port 893, 886, 864, 843, 821, 800, 779, oracle 894, 868, 845, 822, 799, 779.

The jump, running, climb and Chuckie tests still hold.

The campaign by play (worklog 146) now also plays training (16) first.

Still unknown
  1. The oracle spends a frame in state 0 between the climb and the run, and the port does not; that shifts the phase by one.