Files
skate-3-rust-engine/docs/360-FLIP.md
T

5.2 KiB
Raw Blame History

360 flip through the stock graphs

The ordinary on-board 360-flip route is wired for user visual testing. PLAY.bat and PLAY-MAP.bat use the staged build. The supplied graphs and animation banks remain the source of animation selection, transitions, postures, timing, and physical animation attributes.

Input and playback

  • Right-stick magnitude and angle publish AnticMag and AnticAngle. The existing anticipation states choose and blend the crouch/scoop poses.
  • The seven supplied joystick .pat files now run through the recovered recognizer. There is no trick hotkey, synthetic launch impulse, or new clip selected outside the graphs.
  • Recognized events pass through the original listener gates, then publish the gesture name, Trick, and GestureSpeed into the ActionGraph.
  • CreateTrickIntentFromGesture uses all 270 recovered mapping records, including native bucket order, mirrored mappings, overrides, dark-catch categories, and the four hold successors. A non-mirrored 360Flip gesture maps to 360Flip; when mirrored, that gesture maps to Laserflip, and the opposite gesture maps to 360Flip, as in the original mapping.
  • The stock ground path selects B_360FLIP_G, then sequences into B_360FLIP_A. SetTrickHeight consumes the preceding animation's AnticStrength, gesture speed, and the stock jumping settings. Its JumpHeightOverride packet enters the existing skeleton-input handler.
  • Trick construction identity, scoring metadata, underflip/dark-catch requests, and nose-weight anticipation now have their original handlers.

The stock scoop coordinates for the non-mirrored 360-flip gesture correspond to left/slightly down, down-left, down/slightly right, then an up-right flick on the physical right stick. The recognizer permits holding the initial point without weakening the eventual gesture. Direction changes with the stock mirrored mapping; this is not an extra control setting.

Evidence

TU3 instruction bytes were checked in a disposable IDA database against the recompiled PPC instruction listings. Relevant boundaries:

Behavior Native source
PAT loading and push-front coordinate storage 82696B18, 82699738
Recognition, competition, strength, refractory frame 82697168, 826972B8, 826974A8
Axis sign and component deadzone 82696030, 826962D8, 82F75F60
Anticipation inputs 82599AD0–82599C4C, 8259AD0C–8259AD40
Pattern/held listeners and intent publication 8259B878, 8259B9D0, 8259B1F0–8259B7D8
Gesture mappings and graph lifecycle 82B98F70, 82BA07F0, 82BA1C30–82BA2228
Trick height 82BAED78, 82BAEE90
Trick construction identity 82BB5C20, 82BB5CA0
Scoring metadata 82BBFA88, 8258FA20
Underflip requests 82BBE098, 82BBE0A8, 82BBE358
Trick stair gate and physical reset 82BA6930, 82DE3F38
Nose-weight anticipation 82BB2670, 82BB26D0, 82B97110

Factory names were verified from registration strings. In particular, the community label on 82BC7848 incorrectly calls it ScoringTrick; the actual registration is SetTrickAttr. Scoring's factory is 82BCC030. Local research outputs and the re-extracted mapping records are under logs/; original private binaries and animation data are not committed.

Verification and user checks

Nonvisual checks pass for 36 core input tests, the PAT parser, the gesture mapping/ActionHost lifecycle, and two private-stock fixtures. Those fixtures recognize the authored scoop through all seven files and exercise the stock crouch, scoop, takeoff, and air-animation handlers in both stances, including finite decoded poses and required attributes. The fixture also checks the ordinary route and ancestor entry/transition conditions for unsupported factories. These are data/code checks, not a claim of visually verified gameplay parity. No gameplay or visual test was automated. The existing game instance was closed to stage the new build; restarting it for the user is separate from these checks.

Please check:

  1. Hold the right stick to crouch while stationary and while rolling.
  2. Perform a 360 flip; check preparation, pop, board flip/spin, and foot motion.
  3. Land and push away, then repeat in the opposite stance.

The first user-input run exposed the missing OkToDoTrickOnStairs gate. It now reads the retained PhysOutAnimation byte166. Native reset82DE3F38 clears this byte; ordinary Ground Fill82D3A388 and common ProcessOutput82DB6EC0 do not override it. This is the original packet lifecycle, not a constant-success condition.

These nonvisual checks cover the ordinary ground route, not every trick in the newly connected catalog. Advanced manual/grind-out branches still contain the known unsupported JumpInto behavior, and the existing separate AddRunoutAttribs gap remains. Those handlers were not bypassed. The current test does not certify dark catches or the rest of the trick catalog visually.

The subsequent user run reached ManualOutTimerIsActive at tick3854. This condition now reads the existing retained timer (>0, native82BA78B0 and8258F978). SetManualOutTimer arms it on End (82BB9158/8258F990), using the authored length; UpdateManualOutTimer already owns decay/reset. The regression fixture covers arming, hold during manuals, expiry, and sibling takeoff preconditions evaluated before FromAntic selection.