mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-23 11:19:03 +02:00
Add a unit test that decodes every vertex format through both the step functions and the JIT and requires identical output, side effects included. Only skinning may differ by rounding, since arm64 accumulates the bone matrices with fused multiply-adds. What it found, and fixed: - x86 morph colors rounded to nearest where the steps truncate, and applied the scale before the weight, which rounds differently. - x86 through-mode u16 UV bounds compared signed, so texcoords above 32767 scrambled the bounds for everyone running the x86 JIT. - x86 morph sums could produce -0 where the steps produce +0. - Step_NormalS16Morph scaled by 1/32768 twice, giving near-zero normals. - Step_PosFloatThrough lost the truncation of Z to an integer that the JITs and the vertex reader did before it moved into the decoder. - SetVertexType never reset skinInDecode. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>