3.7 KiB
Bump reaction crash, 2026-09-06
The user's logs/game-20260906-041143.stderr.log stops at animation tick 4159,
MotionGraph behaviors 3623 and 3624. B_BUMP was rejected as unsupported tree
type 6, followed by unsupported SetBumpCoefficients. Map loading and character
initialization had already succeeded.
The implementation now reads and evaluates Andale BlendSpace records and binds the missing Begin behavior. It retains the stock children, authored simplex planes, coefficients, attribute operations and phase-coupled clip clocks. It does not suppress either error by skipping the reaction or change movement, collision, difficulty, or map settings.
Evidence
Static analysis used the TU3 community IDA database copied into ignored
logs/bump-analysis.i64; the source database was not modified. Generated PPC
instructions were cross-checked in the local SK8R15/Source/generated recomp.
82BC7318, vtable823200C8: constructor reads X/Y FastStrings; Begin at slot +48 is82BB0660, Update/End are empty82B61BB8.82BB0660: takes conditioned PhysOutAnimation +112, scales X, computes direction and magnitude, maps the stock min/max bump magnitude into the stock minimum blend value through 1, and reverses both coefficients for live ISkaterAnim virtual +28 (mirrored stance). Emits X and Z as X/Y parameters. All four settings come fromanim_motion/bumps. The normalization threshold at830BD350is initialized by82F826F8to1e-6, not its on-disk BSS zero.82D22DA0,82D23898: type 6 layout, serialized simplex vertices, normals, inverse heights and child indices. StockB_BUMPhas 26 children, 48 tetrahedra and parametersDISTTOCOG,BUMPX,BUMPY.82D23080,82D23530,82D23A50: original scalar solver, including ordered plane slicing and clamped barycentric reprojection outside the authored hull. The host uses this scalar path for three dimensions as well. It does not recreate the original accelerated job submission.82D24240,82D24580,82D16370,82D16428: weighted attribute intersection, scale and accumulation. The native single-attribute query's different child indexing is retained.82D246A8,82D24730,82D24AB0,82D24B28: weighted length and synchronized child advance/time/speed operations.82D23EF8, immediate ACS828CBF68..828CC0B4: accumulate weighted SQT poses in source order, then normalize rotation once. The original multi-pose path does not use the two-pose shortest-arc hemisphere decision.
Rust scalar/VMX-style arithmetic follows the recovered instruction order where represented; native reciprocal-square-root estimate helpers are not a claim of bit-exact Xenon execution. No console trace or visual parity claim is made.
Verification
Focused core tests cover coefficient thresholds, axis scaling, mirrored stance, plane projection, clip synchronization and multi-pose quaternion accumulation. The private-stock regression decodes all 26 clips, evaluates all authored simplex vertices and interiors (243 parameter probes including outside-hull points), checks finite weighted poses and reconstructs authored parameter positions. It executes the exact logged graph behaviors 3623/3624 in both mirrored states through parameter application, pose generation and attribute publication.
Run the stock regression with SKATE3_ASSET_ROOT pointing to this repository's
assets directory:
cargo test -p skate-game stock_bump_crash_regression --locked --offline -- --ignored --nocapture
Gameplay and visual testing remain with the user. The earlier separately logged
AddRunoutAttribs behavior 86 remains unsupported; this patch repairs the later
bump crash and does not claim every imported controller path is complete.