summaryrefslogtreecommitdiff
path: root/src/JSystem/J3DGraphBase/J3DTransform.cpp
diff options
context:
space:
mode:
authorJasper St. Pierre <jstpierre@mecheye.net>2023-09-12 19:39:54 -0700
committerJasper St. Pierre <jstpierre@mecheye.net>2023-09-12 19:39:54 -0700
commit286c30129ffdef6afb4178f33bba469d7431cc58 (patch)
treea907e86e2da23915e4e29a9d19387dbdb8fa720b /src/JSystem/J3DGraphBase/J3DTransform.cpp
parent109b2f299d1873a8eb9714d657f5b1a1a27b37d1 (diff)
J3DDrawBuffer yeah
Diffstat (limited to 'src/JSystem/J3DGraphBase/J3DTransform.cpp')
-rw-r--r--src/JSystem/J3DGraphBase/J3DTransform.cpp25
1 files changed, 23 insertions, 2 deletions
diff --git a/src/JSystem/J3DGraphBase/J3DTransform.cpp b/src/JSystem/J3DGraphBase/J3DTransform.cpp
index e9160d51..b231a337 100644
--- a/src/JSystem/J3DGraphBase/J3DTransform.cpp
+++ b/src/JSystem/J3DGraphBase/J3DTransform.cpp
@@ -17,8 +17,29 @@ void J3DGQRSetup7(unsigned long, unsigned long, unsigned long, unsigned long) {
}
/* 802DA0E8-802DA120 .text J3DCalcZValue__FPA4_f3Vec */
-void J3DCalcZValue(float(*)[4], Vec) {
- /* Nonmatching */
+
+// matches debug
+f32 J3DCalcZValue(register MtxP m, register Vec v) {
+ register f32 temp_f4;
+ register f32 out;
+ register f32 temp_f0;
+ register f32 temp_f2;
+ register f32 temp_f1 = 1.0f;
+
+ // clang-format off
+ asm {
+ psq_l temp_f0, 0(v), 0, 0 /* qr0 */
+ lfs temp_f2, 8(v)
+ psq_l temp_f4, 32(m), 0, 0 /* qr0 */
+ psq_l out, 40(m), 0, 0 /* qr0 */
+ ps_merge00 temp_f2, temp_f2, temp_f1
+ ps_mul temp_f4, temp_f0, temp_f4
+ ps_madd out, temp_f2, out, temp_f4
+ ps_sum0 out, out, out, out
+ }
+ // clang-format on
+
+ return out;
}
/* 802DA120-802DA2E0 .text J3DCalcBBoardMtx__FPA4_f */