mirror of
https://github.com/zeldaret/tp
synced 2026-07-11 15:28:38 -04:00
J3D work (#2212)
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user