bone_sse: pure Zig SSE/FMA reimplementation, zero game function calls
Replace bone_sse.zig with a complete pure Zig implementation compiled with SSE4.1 + FMA + AVX. All 18 game function calls replaced: - findInterpIdx (0x713D50): temporal-coherence keyframe search - interpAnimKF (0x713EA0): CompQuat lerp for rotation keyframes - extractByte (0x71AE90): byte keyframe extraction - getInterpolatedFloat (0x71AF20): float track with direct blend read - callFtol (0x40A2B0): @intFromFloat replaces x87 __ftol - callVec3SqMag (0x4549F0): inline FMA dot product - callGetIndexOffset/callSetShortValue (0x71AFF0/0x71B010): direct ri16 - matMul (0x74A7C0): V4 FMA matmul (broadcast + 3 @mulAdd per row) - buildRotFn (0x74B6B5): inline quat→matrix - rotateQuat (0x7BDDB0): quat→matrix then FMA matmul - scaleMat (0x7BDCA0): inline scale from vec3 ptr - applyTrans (0x7BDC40): inline FMA dot product translation Only 2 game calls remain: - 0x409AEF: one-time atexit init (boneKeyframeLoop) - 0x7B5F60: IsParticleBufferEmpty (reads game particle state) Child recursion calls transformMatrix4x4_SSE directly instead of going through the hook at 0x714260. Detour cleaned up: REF is baseline, SSE activates via ab_use_custom toggle. Diagnostic/bisect/FPU-comparison scaffolding removed. build.zig: bone_sse gets dedicated target with sse4_1+fma+avx features.
This commit is contained in:
+752
-1431
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user