summaryrefslogtreecommitdiff
path: root/arm9/lib/src/FX_mtx33.c
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/lib/src/FX_mtx33.c')
-rw-r--r--arm9/lib/src/FX_mtx33.c56
1 files changed, 28 insertions, 28 deletions
diff --git a/arm9/lib/src/FX_mtx33.c b/arm9/lib/src/FX_mtx33.c
index 32b1ad2e..391a6104 100644
--- a/arm9/lib/src/FX_mtx33.c
+++ b/arm9/lib/src/FX_mtx33.c
@@ -2,23 +2,23 @@
#include "main.h"
#include "fx.h"
-void MTX_ScaleApply33(struct Mtx33 *mtx, struct Mtx33 *dst, s32 x, s32 y, s32 z){
- dst->_[0] = ((s64)x * mtx->_[0]) >> FX32_INT_SHIFT;
- dst->_[1] = ((s64)x * mtx->_[1]) >> FX32_INT_SHIFT;
- dst->_[2] = ((s64)x * mtx->_[2]) >> FX32_INT_SHIFT;
- dst->_[3] = ((s64)y * mtx->_[3]) >> FX32_INT_SHIFT;
- dst->_[4] = ((s64)y * mtx->_[4]) >> FX32_INT_SHIFT;
- dst->_[5] = ((s64)y * mtx->_[5]) >> FX32_INT_SHIFT;
- dst->_[6] = ((s64)z * mtx->_[6]) >> FX32_INT_SHIFT;
- dst->_[7] = ((s64)z * mtx->_[7]) >> FX32_INT_SHIFT;
- dst->_[8] = ((s64)z * mtx->_[8]) >> FX32_INT_SHIFT;
+void MTX_ScaleApply33(struct Mtx33 *mtx, struct Mtx33 *dst, fx32 x, fx32 y, fx32 z){
+ dst->_[0] = ((fx64)x * mtx->_[0]) >> FX32_INT_SHIFT;
+ dst->_[1] = ((fx64)x * mtx->_[1]) >> FX32_INT_SHIFT;
+ dst->_[2] = ((fx64)x * mtx->_[2]) >> FX32_INT_SHIFT;
+ dst->_[3] = ((fx64)y * mtx->_[3]) >> FX32_INT_SHIFT;
+ dst->_[4] = ((fx64)y * mtx->_[4]) >> FX32_INT_SHIFT;
+ dst->_[5] = ((fx64)y * mtx->_[5]) >> FX32_INT_SHIFT;
+ dst->_[6] = ((fx64)z * mtx->_[6]) >> FX32_INT_SHIFT;
+ dst->_[7] = ((fx64)z * mtx->_[7]) >> FX32_INT_SHIFT;
+ dst->_[8] = ((fx64)z * mtx->_[8]) >> FX32_INT_SHIFT;
}
void MTX_Concat33(struct Mtx33 *a, struct Mtx33 *b, struct Mtx33 *c){
struct Mtx33 temp;
struct Mtx33 *dst;
- s32 a0, a1, a2;
- s32 b0, b1, b2;
+ fx32 a0, a1, a2;
+ fx32 b0, b1, b2;
if (c == b)
dst = &temp;
@@ -28,43 +28,43 @@ void MTX_Concat33(struct Mtx33 *a, struct Mtx33 *b, struct Mtx33 *c){
a0 = a->_[0];
a1 = a->_[1];
a2 = a->_[2];
- dst->_[0] = (((s64)a0 * b->_[0] + (s64)a1 * b->_[3] + (s64)a2 * b->_[6] ) >> FX32_INT_SHIFT);
- dst->_[1] = (((s64)a0 * b->_[1] + (s64)a1 * b->_[4] + (s64)a2 * b->_[7] ) >> FX32_INT_SHIFT);
+ dst->_[0] = (((fx64)a0 * b->_[0] + (fx64)a1 * b->_[3] + (fx64)a2 * b->_[6] ) >> FX32_INT_SHIFT);
+ dst->_[1] = (((fx64)a0 * b->_[1] + (fx64)a1 * b->_[4] + (fx64)a2 * b->_[7] ) >> FX32_INT_SHIFT);
b0 = b->_[2];
b1 = b->_[5];
b2 = b->_[8];
- dst->_[2] = (((s64)a0 * b0 + (s64)a1 * b1 + (s64)a2 * b2) >> FX32_INT_SHIFT);
+ dst->_[2] = (((fx64)a0 * b0 + (fx64)a1 * b1 + (fx64)a2 * b2) >> FX32_INT_SHIFT);
a0 = a->_[3];
a1 = a->_[4];
a2 = a->_[5];
- dst->_[5] = (((s64)a0 * b0 + (s64)a1 * b1 + (s64)a2 * b2) >> FX32_INT_SHIFT);
- dst->_[4] = (((s64)a0 * b->_[1] + (s64)a1 * b->_[4] + (s64)a2 * b->_[7] ) >> FX32_INT_SHIFT);
+ dst->_[5] = (((fx64)a0 * b0 + (fx64)a1 * b1 + (fx64)a2 * b2) >> FX32_INT_SHIFT);
+ dst->_[4] = (((fx64)a0 * b->_[1] + (fx64)a1 * b->_[4] + (fx64)a2 * b->_[7] ) >> FX32_INT_SHIFT);
b0 = b->_[0];
b1 = b->_[3];
b2 = b->_[6];
- dst->_[3] = (((s64)a0 * b0 + (s64)a1 * b1 + (s64)a2 * b2) >> FX32_INT_SHIFT);
+ dst->_[3] = (((fx64)a0 * b0 + (fx64)a1 * b1 + (fx64)a2 * b2) >> FX32_INT_SHIFT);
a0 = a->_[6];
a1 = a->_[7];
a2 = a->_[8];
- dst->_[6] = (((s64)a0 * b0 + (s64)a1 * b1 + (s64)a2 * b2) >> FX32_INT_SHIFT);
- dst->_[7] = (((s64)a0 * b->_[1] + (s64)a1 * b->_[4] + (s64)a2 * b->_[7] ) >> FX32_INT_SHIFT);
+ dst->_[6] = (((fx64)a0 * b0 + (fx64)a1 * b1 + (fx64)a2 * b2) >> FX32_INT_SHIFT);
+ dst->_[7] = (((fx64)a0 * b->_[1] + (fx64)a1 * b->_[4] + (fx64)a2 * b->_[7] ) >> FX32_INT_SHIFT);
b0 = b->_[2];
b1 = b->_[5];
b2 = b->_[8];
- dst->_[8] = (((s64)a0 * b0 + (s64)a1 * b1 + (s64)a2 * b2) >> FX32_INT_SHIFT);
+ dst->_[8] = (((fx64)a0 * b0 + (fx64)a1 * b1 + (fx64)a2 * b2) >> FX32_INT_SHIFT);
if (dst == &temp)
*c = temp;
}
void MTX_MultVec33(struct Vecx32 *vec, struct Mtx33 *mtx, struct Vecx32 *dst){
- s32 x, y, z;
+ fx32 x, y, z;
x = vec->x;
y = vec->y;
z = vec->z;
- dst->x = ((s64)x * mtx->_[0] + (s64)y * mtx->_[3] + (s64)z * mtx->_[6]) >> FX32_INT_SHIFT;
- dst->y = ((s64)x * mtx->_[1] + (s64)y * mtx->_[4] + (s64)z * mtx->_[7]) >> FX32_INT_SHIFT;
- dst->z = ((s64)x * mtx->_[2] + (s64)y * mtx->_[5] + (s64)z * mtx->_[8]) >> FX32_INT_SHIFT;
+ dst->x = ((fx64)x * mtx->_[0] + (fx64)y * mtx->_[3] + (fx64)z * mtx->_[6]) >> FX32_INT_SHIFT;
+ dst->y = ((fx64)x * mtx->_[1] + (fx64)y * mtx->_[4] + (fx64)z * mtx->_[7]) >> FX32_INT_SHIFT;
+ dst->z = ((fx64)x * mtx->_[2] + (fx64)y * mtx->_[5] + (fx64)z * mtx->_[8]) >> FX32_INT_SHIFT;
}
asm void MTX_Identity33_(struct Mtx33 *mtx){
@@ -80,7 +80,7 @@ asm void MTX_Identity33_(struct Mtx33 *mtx){
}
#pragma thumb on
-asm void MTX_RotX33_(struct Mtx33 *mtx, s32 sinphi, s32 cosphi){
+asm void MTX_RotX33_(struct Mtx33 *mtx, fx32 sinphi, fx32 cosphi){
mov r3, #0x1
lsl r3, r3, #0xc
str r3, [r0, #0x0]
@@ -99,7 +99,7 @@ asm void MTX_RotX33_(struct Mtx33 *mtx, s32 sinphi, s32 cosphi){
#pragma thumb off
#pragma thumb on
-asm void MTX_RotY33_(struct Mtx33 *mtx, s32 sinphi, s32 cosphi){
+asm void MTX_RotY33_(struct Mtx33 *mtx, fx32 sinphi, fx32 cosphi){
str r2, [r0, #0x0]
str r2, [r0, #0x20]
mov r3, #0x0
@@ -118,7 +118,7 @@ asm void MTX_RotY33_(struct Mtx33 *mtx, s32 sinphi, s32 cosphi){
#pragma thumb off
#pragma thumb on
-asm void MTX_RotZ33_(struct Mtx33 *mtx, s32 sinphi, s32 cosphi){
+asm void MTX_RotZ33_(struct Mtx33 *mtx, fx32 sinphi, fx32 cosphi){
stmia r0!, {r2}
mov r3, #0x0
stmia r0!, {r1,r3}