summaryrefslogtreecommitdiff
path: root/arm9/lib/src
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/lib/src')
-rw-r--r--arm9/lib/src/FX_mtx33.c42
-rw-r--r--arm9/lib/src/GX_g3x.c38
2 files changed, 41 insertions, 39 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){
diff --git a/arm9/lib/src/GX_g3x.c b/arm9/lib/src/GX_g3x.c
index 31508e06..ed84f58b 100644
--- a/arm9/lib/src/GX_g3x.c
+++ b/arm9/lib/src/GX_g3x.c
@@ -4,6 +4,8 @@
extern u32 GXi_DmaId;
+void MI_Copy36B(void *src, void *dst);
+
ARM_FUNC asm void GXi_NopClearFifo128_(void *reg){
mov r1, #0x0
mov r2, #0x0
@@ -47,15 +49,15 @@ ARM_FUNC asm void GXi_NopClearFifo128_(void *reg){
ARM_FUNC void G3X_Init(){
G3X_ClearFifo();
reg_G3_END_VTXS = 0x0;
- while (reg_G3X_GXSTAT & 0x8000000); //wait for geometry engine to not be busy
+ while (reg_G3X_GXSTAT & 0x8000000) {} //wait for geometry engine to not be busy
reg_G3X_DISP3DCNT = 0x0;
reg_G3X_GXSTAT = 0x0;
reg_G2_BG0OFS = 0x0;
reg_G3X_DISP3DCNT |= 0x2000;
reg_G3X_DISP3DCNT |= 0x1000;
reg_G3X_DISP3DCNT &= ~0x3002;
- reg_G3X_DISP3DCNT = reg_G3X_DISP3DCNT & ~0x3000 | 0x10;
- reg_G3X_DISP3DCNT = reg_G3X_DISP3DCNT & (u16)~0x3004;
+ reg_G3X_DISP3DCNT = (u16)(reg_G3X_DISP3DCNT & ~0x3000 | 0x10);
+ reg_G3X_DISP3DCNT = (u16)(reg_G3X_DISP3DCNT & (u16)~0x3004);
reg_G3X_GXSTAT |= 0x8000;
reg_G3X_GXSTAT = reg_G3X_GXSTAT & ~0xC0000000 | 0x80000000;
G3X_InitMtxStack();
@@ -72,7 +74,7 @@ ARM_FUNC void G3X_Init(){
}
ARM_FUNC void G3X_ResetMtxStack(){
- while (reg_G3X_GXSTAT & 0x8000000);
+ while (reg_G3X_GXSTAT & 0x8000000) {}
reg_G3X_GXSTAT |= 0x8000;
reg_G3X_DISP3DCNT |= 0x2000;
reg_G3X_DISP3DCNT |= 0x1000;
@@ -84,14 +86,14 @@ ARM_FUNC void G3X_ResetMtxStack(){
ARM_FUNC void G3X_ClearFifo(){
GXi_NopClearFifo128_((void *)&reg_G3X_GXFIFO);
- while (reg_G3X_GXSTAT & 0x8000000);
+ while (reg_G3X_GXSTAT & 0x8000000) {}
}
ARM_FUNC void G3X_InitMtxStack(){
u32 PV_level, PJ_level;
reg_G3X_GXSTAT |= 0x8000;
- while (G3X_GetMtxStackLevelPV(&PV_level));
- while (G3X_GetMtxStackLevelPJ(&PJ_level));
+ while (G3X_GetMtxStackLevelPV(&PV_level)) {}
+ while (G3X_GetMtxStackLevelPJ(&PJ_level)) {}
reg_G3_MTX_MODE = 0x3;
reg_G3_MTX_IDENTITY = 0x0;
reg_G3_MTX_MODE = 0x0;
@@ -108,8 +110,8 @@ ARM_FUNC void G3X_InitMtxStack(){
ARM_FUNC void G3X_ResetMtxStack_2(){
u32 PV_level, PJ_level;
reg_G3X_GXSTAT |= 0x8000;
- while (G3X_GetMtxStackLevelPV(&PV_level));
- while (G3X_GetMtxStackLevelPJ(&PJ_level));
+ while (G3X_GetMtxStackLevelPV(&PV_level)) {}
+ while (G3X_GetMtxStackLevelPJ(&PJ_level)) {}
reg_G3_MTX_MODE = 0x3;
reg_G3_MTX_IDENTITY = 0x0;
reg_G3_MTX_MODE = 0x0;
@@ -127,20 +129,20 @@ ARM_FUNC void G3X_ResetMtxStack_2(){
ARM_FUNC void G3X_SetFog(u32 enable, u32 alphamode, u32 depth, s32 offset){
if (enable)
{
- reg_G3X_FOG_OFFSET = offset;
- reg_G3X_DISP3DCNT = (reg_G3X_DISP3DCNT &~0x3f40) | (((depth << 0x8)| (alphamode << 0x6)|0x80 ));
+ reg_G3X_FOG_OFFSET = (u16)offset;
+ reg_G3X_DISP3DCNT = (u16)((reg_G3X_DISP3DCNT &~0x3f40) | (((depth << 0x8)| (alphamode << 0x6)|0x80 )));
}
else
{
- reg_G3X_DISP3DCNT = reg_G3X_DISP3DCNT & (u16)~0x3080;
+ reg_G3X_DISP3DCNT = (u16)(reg_G3X_DISP3DCNT & (u16)~0x3080);
}
}
ARM_FUNC u32 G3X_GetClipMtx(struct Mtx44 *dst){
if (reg_G3X_GXSTAT & 0x8000000)
{
- return -1;
+ return (u32)-1;
}
else
{
@@ -152,7 +154,7 @@ ARM_FUNC u32 G3X_GetClipMtx(struct Mtx44 *dst){
ARM_FUNC u32 G3X_GetVectorMtx(struct Mtx33 *dst){
if (reg_G3X_GXSTAT & 0x8000000)
{
- return -1;
+ return (u32)-1;
}
else
{
@@ -174,7 +176,7 @@ ARM_FUNC void G3X_SetClearColor(u32 col, u32 alpha, u32 depth, u32 polygon_id, u
if (enable_fog)
temp |= 0x8000;
reg_G3X_CLEAR_COLOR = temp;
- reg_G3X_CLEAR_DEPTH = depth;
+ reg_G3X_CLEAR_DEPTH = (u16)depth;
}
ARM_FUNC void G3X_InitTable(){
@@ -197,7 +199,7 @@ ARM_FUNC void G3X_InitTable(){
ARM_FUNC u32 G3X_GetMtxStackLevelPV(u32 *level){
if (reg_G3X_GXSTAT & 0x4000)
{
- return -1;
+ return (u32)-1;
}
else
{
@@ -209,7 +211,7 @@ ARM_FUNC u32 G3X_GetMtxStackLevelPV(u32 *level){
ARM_FUNC u32 G3X_GetMtxStackLevelPJ(u32 *level){
if (reg_G3X_GXSTAT & 0x4000)
{
- return -1;
+ return (u32)-1;
}
else
{
@@ -221,7 +223,7 @@ ARM_FUNC u32 G3X_GetMtxStackLevelPJ(u32 *level){
ARM_FUNC u32 G3X_GetBoxTestResult(u32 *result){
if (reg_G3X_GXSTAT & 0x1)
{
- return -1;
+ return (u32)-1;
}
else
{