diff options
Diffstat (limited to 'arm9/lib/src/FX_mtx33.c')
-rw-r--r-- | arm9/lib/src/FX_mtx33.c | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/arm9/lib/src/FX_mtx33.c b/arm9/lib/src/FX_mtx33.c index 90beddba..86169ea0 100644 --- a/arm9/lib/src/FX_mtx33.c +++ b/arm9/lib/src/FX_mtx33.c @@ -3,15 +3,15 @@ #include "fx.h" ARM_FUNC 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; + dst->_[0] = (fx32)(((fx64)x * mtx->_[0]) >> FX32_INT_SHIFT); + dst->_[1] = (fx32)(((fx64)x * mtx->_[1]) >> FX32_INT_SHIFT); + dst->_[2] = (fx32)(((fx64)x * mtx->_[2]) >> FX32_INT_SHIFT); + dst->_[3] = (fx32)(((fx64)y * mtx->_[3]) >> FX32_INT_SHIFT); + dst->_[4] = (fx32)(((fx64)y * mtx->_[4]) >> FX32_INT_SHIFT); + dst->_[5] = (fx32)(((fx64)y * mtx->_[5]) >> FX32_INT_SHIFT); + dst->_[6] = (fx32)(((fx64)z * mtx->_[6]) >> FX32_INT_SHIFT); + dst->_[7] = (fx32)(((fx64)z * mtx->_[7]) >> FX32_INT_SHIFT); + dst->_[8] = (fx32)(((fx64)z * mtx->_[8]) >> FX32_INT_SHIFT); } ARM_FUNC void MTX_Concat33(struct Mtx33 *a, struct Mtx33 *b, struct Mtx33 *c){ @@ -28,30 +28,30 @@ ARM_FUNC void MTX_Concat33(struct Mtx33 *a, struct Mtx33 *b, struct Mtx33 *c){ a0 = a->_[0]; a1 = a->_[1]; a2 = a->_[2]; - 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); + dst->_[0] = (fx32)(((fx64)a0 * b->_[0] + (fx64)a1 * b->_[3] + (fx64)a2 * b->_[6] ) >> FX32_INT_SHIFT); + dst->_[1] = (fx32)(((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] = (((fx64)a0 * b0 + (fx64)a1 * b1 + (fx64)a2 * b2) >> FX32_INT_SHIFT); + dst->_[2] = (fx32)(((fx64)a0 * b0 + (fx64)a1 * b1 + (fx64)a2 * b2) >> FX32_INT_SHIFT); a0 = a->_[3]; a1 = a->_[4]; a2 = a->_[5]; - 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); + dst->_[5] = (fx32)(((fx64)a0 * b0 + (fx64)a1 * b1 + (fx64)a2 * b2) >> FX32_INT_SHIFT); + dst->_[4] = (fx32)(((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] = (((fx64)a0 * b0 + (fx64)a1 * b1 + (fx64)a2 * b2) >> FX32_INT_SHIFT); + dst->_[3] = (fx32)(((fx64)a0 * b0 + (fx64)a1 * b1 + (fx64)a2 * b2) >> FX32_INT_SHIFT); a0 = a->_[6]; a1 = a->_[7]; a2 = a->_[8]; - 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); + dst->_[6] = (fx32)(((fx64)a0 * b0 + (fx64)a1 * b1 + (fx64)a2 * b2) >> FX32_INT_SHIFT); + dst->_[7] = (fx32)(((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] = (((fx64)a0 * b0 + (fx64)a1 * b1 + (fx64)a2 * b2) >> FX32_INT_SHIFT); + dst->_[8] = (fx32)(((fx64)a0 * b0 + (fx64)a1 * b1 + (fx64)a2 * b2) >> FX32_INT_SHIFT); if (dst == &temp) *c = temp; @@ -62,9 +62,9 @@ ARM_FUNC void MTX_MultVec33(struct Vecx32 *vec, struct Mtx33 *mtx, struct Vecx32 x = vec->x; y = vec->y; z = vec->z; - 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; + dst->x = (fx32)(((fx64)x * mtx->_[0] + (fx64)y * mtx->_[3] + (fx64)z * mtx->_[6]) >> FX32_INT_SHIFT); + dst->y = (fx32)(((fx64)x * mtx->_[1] + (fx64)y * mtx->_[4] + (fx64)z * mtx->_[7]) >> FX32_INT_SHIFT); + dst->z = (fx32)(((fx64)x * mtx->_[2] + (fx64)y * mtx->_[5] + (fx64)z * mtx->_[8]) >> FX32_INT_SHIFT); } ARM_FUNC asm void MTX_Identity33_(struct Mtx33 *mtx){ |