This commit is contained in:
Caroline Madsen
2024-10-15 16:59:31 -04:00
committed by GitHub
parent 9895999b7b
commit 9f58034704
26 changed files with 1502 additions and 1647 deletions
+24 -1
View File
@@ -13,7 +13,10 @@ struct TAngleConstant_;
*/
template<>
struct TAngleConstant_<f32> {
static inline f32 RADIAN_DEG360() { return 6.2831855f; }
static f32 RADIAN_DEG090() { return 1.5707964f; }
static f32 RADIAN_DEG180() { return 3.1415927f; }
static f32 RADIAN_DEG360() { return 6.2831855f; }
static f32 RADIAN_TO_DEGREE_FACTOR() { return 180.0f / RADIAN_DEG180(); }
};
/**
@@ -72,12 +75,32 @@ struct TAtanTable {
struct TAsinAcosTable {
f32 table[1025];
u8 pad[0x1C];
f32 acos_(f32 x) {
if (x >= 1.0f) {
return 0.0f;
} else if (x <= -1.0f) {
return TAngleConstant_<f32>::RADIAN_DEG180();
} else if (x < 0.0f) {
return table[(u32)(-x * 1023.5f)] + TAngleConstant_<f32>::RADIAN_DEG090();
} else {
return TAngleConstant_<f32>::RADIAN_DEG090() - table[(u32)(x * 1023.5f)];
}
}
f32 acosDegree(f32 x) {
return acos_(x) * TAngleConstant_<f32>::RADIAN_TO_DEGREE_FACTOR();
}
};
namespace JMath {
extern TSinCosTable<13, f32> sincosTable_;
extern TAtanTable atanTable_;
extern TAsinAcosTable asinAcosTable_;
inline f32 acosDegree(f32 x) {
return asinAcosTable_.acosDegree(x);
}
}; // namespace JMath
inline f32 JMASCosShort(s16 v) {
+31
View File
@@ -34,6 +34,37 @@ inline f32 JMAFastSqrt(register f32 input) {
}
}
inline f32 JMAHermiteInterpolation(register f32 p1, register f32 p2, register f32 p3,
register f32 p4, register f32 p5, register f32 p6,
register f32 p7) {
register f32 ff25;
register f32 ff31;
register f32 ff30;
register f32 ff29;
register f32 ff28;
register f32 ff27;
register f32 ff26;
// clang-format off
asm {
fsubs ff31, p1, p2
fsubs ff30, p5, p2
fdivs ff29, ff31, ff30
fmuls ff28,ff29,ff29
fadds ff25,ff29,ff29
fsubs ff27,ff28,ff29
fsubs ff30, p3, p6
fmsubs ff26,ff25,ff27,ff28
fmadds ff25,p4,ff27,p4
fmadds ff26,ff26,ff30,p3
fmadds ff25,p7,ff27,ff25
fmsubs ff25,ff29,p4,ff25
fnmsubs ff25,ff31,ff25,ff26
}
// clang-format on
return ff25;
}
namespace JMath {
inline f32 fastReciprocal(f32 value) {