summaryrefslogtreecommitdiff
path: root/include/sys_matrix.h
diff options
context:
space:
mode:
authoremilybrooks <emilybrooksemilybrooks@gmail.com>2023-07-29 10:46:30 -0700
committerGitHub <noreply@github.com>2023-07-29 13:46:30 -0400
commitbe09c72d0ca03972fb3c43a858002a41a8e1c474 (patch)
tree1c4fe14a14ebcd45cb4cad113257d6ec8125c498 /include/sys_matrix.h
parentea9f4c68bb2afee5529aa1027b6762542d20bb8f (diff)
TwoHeadArena, THA_GA, sys_matrix OK (#18)
* matched TwoHeadArena and THA_GA * header files * started sys_matrix.c * more functions matched * sys_matrix matching * imported data * imported bss * cleanup * more cleanup * last cleanup * formatting * moved prototypes * add back ultra64.h * remove dlabel jlabel temp fix
Diffstat (limited to 'include/sys_matrix.h')
-rw-r--r--include/sys_matrix.h81
1 files changed, 46 insertions, 35 deletions
diff --git a/include/sys_matrix.h b/include/sys_matrix.h
index 97ae120..f46411f 100644
--- a/include/sys_matrix.h
+++ b/include/sys_matrix.h
@@ -2,41 +2,52 @@
#define SYS_MATRIX_H
#include "ultra64.h"
+#include "z64math.h"
-// void new_Matrix();
-// void Matrix_push();
-// void Matrix_pull();
-// void Matrix_get();
-// void Matrix_put();
-// void get_Matrix_now();
-// void Matrix_mult();
-// void Matrix_translate();
-// void Matrix_scale();
-// void Matrix_RotateX();
-// void Matrix_RotateY();
-// void Matrix_RotateZ();
-// void Matrix_rotateXYZ();
-// void Matrix_softcv3_mult();
-// void Matrix_softcv3_load();
-// void _MtxF_to_Mtx();
-// void _Matrix_to_Mtx();
-// void _Matrix_to_Mtx_new();
-// void _MtxF_to_Mtx_new();
-// void Matrix_Position();
-// void Matrix_Position_Zero();
-// void Matrix_Position_VecX();
-// void Matrix_Position_VecY();
-// void Matrix_Position_VecZ();
-// void Matrix_copy_MtxF();
-// void Matrix_MtxtoMtxF();
-// void Matrix_MtxF_Position2();
-// void Matrix_reverse();
-// void Matrix_rotate_scale_exchange();
-// void Matrix_to_rotate_new();
-// void Matrix_to_rotate2_new();
-// void Matrix_RotateVector();
-// void suMtxMakeTS();
-// void suMtxMakeSRT();
-// void suMtxMakeSRT_ZXY();
+struct GraphicsContext;
+struct GameState;
+
+typedef enum {
+ /* 0 */ MTXMODE_NEW, // generates a new matrix
+ /* 1 */ MTXMODE_APPLY // applies transformation to the current matrix
+} MatrixMode;
+
+void new_Matrix(struct GameState* gameState);
+void Matrix_push(void);
+void Matrix_pull(void);
+void Matrix_get(MtxF* dest);
+void Matrix_put(MtxF* src);
+MtxF* get_Matrix_now(void);
+void Matrix_mult(MtxF* mf, u8 mode);
+void Matrix_translate(f32 x, f32 y, f32 z, u8 mode);
+void Matrix_scale(f32 x, f32 y, f32 z, u8 mode);
+void Matrix_RotateX(s16 x, MatrixMode mode);
+void Matrix_RotateY(s16 y, MatrixMode mode);
+void Matrix_RotateZ(s16 z, MatrixMode mode);
+void Matrix_rotateXYZ(s16 x, s16 y, s16 z, MatrixMode mode);
+void Matrix_softcv3_mult(Vec3f* translation, Vec3s* rot);
+void Matrix_softcv3_load(f32 x, f32 y, f32 z, Vec3s* rot);
+Mtx* _MtxF_to_Mtx(MtxF* src, Mtx* dest);
+Mtx* _Matrix_to_Mtx(Mtx* dest);
+Mtx* _Matrix_to_Mtx_new(struct GraphicsContext* gfxCtx);
+void _MtxF_to_Mtx_new(MtxF* src, struct GraphicsContext* gfxCtx);
+void Matrix_Position(Vec3f* src, Vec3f* dest);
+void Matrix_Position_Zero(Vec3f* dest);
+void Matrix_Position_VecX(f32 x, Vec3f* dest);
+void Matrix_Position_VecY(f32 y, Vec3f* dest);
+void Matrix_Position_VecZ(f32 z, Vec3f* dest);
+void Matrix_copy_MtxF(MtxF* dest, MtxF* src);
+void Matrix_MtxtoMtxF(Mtx* src, MtxF* dest);
+void Matrix_MtxF_Position2(Vec3f* src, Vec3f* dest, MtxF* mf);
+void Matrix_reverse(MtxF* mf);
+void Matrix_rotate_scale_exchange(MtxF* mf);
+void Matrix_to_rotate_new(MtxF* src, Vec3s* dest, s32 nonUniformScale);
+void Matrix_to_rotate2_new(MtxF* src, Vec3s* dest, s32 nonUniformScale);
+void Matrix_RotateVector(s16 angle, Vec3f* axis, u8 mode);
+void suMtxMakeTS(Mtx* mtx, f32 scaleX, f32 scaleY, f32 scaleZ, f32 translateX, f32 translateY, f32 translateZ);
+void suMtxMakeSRT(Mtx* mtx, f32 scaleX, f32 scaleY, f32 scaleZ, s16 rotX, s16 rotY, s16 rotZ, f32 translateX,
+ f32 translateY, f32 translateZ);
+void suMtxMakeSRT_ZXY(Mtx* mtx, f32 scaleX, f32 scaleY, f32 scaleZ, s16 rotX, s16 rotY, s16 rotZ, f32 translateX,
+ f32 translateY, f32 translateZ);
#endif