summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/asm/GX_g3imm.s37
-rw-r--r--arm9/asm/GX_state.s40
-rw-r--r--arm9/lib/include/gx.h8
-rw-r--r--arm9/lib/src/GX_g3imm.c18
-rw-r--r--arm9/lib/src/GX_state.c26
5 files changed, 51 insertions, 78 deletions
diff --git a/arm9/asm/GX_g3imm.s b/arm9/asm/GX_g3imm.s
deleted file mode 100644
index 34ba9328..00000000
--- a/arm9/asm/GX_g3imm.s
+++ /dev/null
@@ -1,37 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- arm_func_start G3_MultMtx33
-G3_MultMtx33: ; 0x020C791C
- ldr r1, _020C7930 ; =0x04000400
- mov r2, #0x1a
- ldr ip, _020C7934 ; =MI_Copy36B
- str r2, [r1, #0x0]
- bx r12
- .balign 4
-_020C7930: .word 0x04000400
-_020C7934: .word MI_Copy36B
-
- arm_func_start G3_MultMtx43
-G3_MultMtx43:
- ldr r1, _020C794C ; =0x04000400
- mov r2, #0x19
- ldr ip, _020C7950 ; =GX_SendFifo48B
- str r2, [r1, #0x0]
- bx r12
- .balign 4
-_020C794C: .word 0x04000400
-_020C7950: .word GX_SendFifo48B
-
- arm_func_start G3_LoadMtx43
-G3_LoadMtx43: ; 0x020C7954
- ldr r1, _020C7968 ; =0x04000400
- mov r2, #0x17
- ldr ip, _020C796C ; =GX_SendFifo48B
- str r2, [r1, #0x0]
- bx r12
- .balign 4
-_020C7968: .word 0x04000400
-_020C796C: .word GX_SendFifo48B
diff --git a/arm9/asm/GX_state.s b/arm9/asm/GX_state.s
deleted file mode 100644
index 42089a09..00000000
--- a/arm9/asm/GX_state.s
+++ /dev/null
@@ -1,40 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- arm_func_start GX_InitGXState
-GX_InitGXState: ; 0x020C5CAC
- ldr r0, _020C5D14 ; =0x021D33C4
- mov r3, #0x0
- ldr r2, _020C5D18 ; =0x04000240
- strh r3, [r0, #0x0]
- strh r3, [r0, #0x2]
- strh r3, [r0, #0x4]
- strh r3, [r0, #0x6]
- strh r3, [r0, #0x8]
- strh r3, [r0, #0xa]
- strh r3, [r0, #0xc]
- strh r3, [r0, #0xe]
- strh r3, [r0, #0x10]
- strh r3, [r0, #0x12]
- strh r3, [r0, #0x14]
- strh r3, [r0, #0x16]
- strh r3, [r0, #0x18]
- ldr r1, _020C5D1C ; =0x04000244
- str r3, [r2, #0x0]
- ldr r0, _020C5D20 ; =0x04000245
- strb r3, [r1, #0x0]
- ldr r1, _020C5D24 ; =0x04000246
- strb r3, [r0, #0x0]
- ldr r0, _020C5D28 ; =0x04000248
- strb r3, [r1, #0x0]
- strh r3, [r0, #0x0]
- bx lr
- .balign 4
-_020C5D14: .word 0x021D33C4
-_020C5D18: .word 0x04000240
-_020C5D1C: .word 0x04000244
-_020C5D20: .word 0x04000245
-_020C5D24: .word 0x04000246
-_020C5D28: .word 0x04000248
diff --git a/arm9/lib/include/gx.h b/arm9/lib/include/gx.h
index a17132ed..c542f560 100644
--- a/arm9/lib/include/gx.h
+++ b/arm9/lib/include/gx.h
@@ -307,6 +307,12 @@ void G2x_SetBlendBrightness_(u16 *ptr, fx32 a, fx32 brightness);
void G2x_SetBlendBrightnessExt_(u16 *ptr, fx32 a, fx32 b, fx32 c, fx32 d, fx32 brightness);
void *G2x_ChangeBlendBrightness_(u16 *ptr, fx32 brightness);
-//GXi_NopClearFifo128_ probably asm
+//GX_state
+void GX_InitGXState();
+
+//GX_g3imm
+void G3_LoadMtx43(struct Mtx43 *mtx);
+void G3_MultMtx43(struct Mtx43 *mtx);
+void G3_MultMtx33(struct Mtx33 *mtx);
#endif //GUARD_GX_H
diff --git a/arm9/lib/src/GX_g3imm.c b/arm9/lib/src/GX_g3imm.c
new file mode 100644
index 00000000..f41b5cbf
--- /dev/null
+++ b/arm9/lib/src/GX_g3imm.c
@@ -0,0 +1,18 @@
+#include "global.h"
+#include "main.h"
+#include "gx.h"
+
+void G3_LoadMtx43(struct Mtx43 *mtx){
+ SETREG32(HW_REG_GXFIFO, 0x17);
+ GX_SendFifo48B(mtx, (void *)HW_REG_GXFIFO);
+}
+
+void G3_MultMtx43(struct Mtx43 *mtx){
+ SETREG32(HW_REG_GXFIFO, 0x19);
+ GX_SendFifo48B(mtx, (void *)HW_REG_GXFIFO);
+}
+
+void G3_MultMtx33(struct Mtx33 *mtx){
+ SETREG32(HW_REG_GXFIFO, 0x1A);
+ MI_Copy36B(mtx, (void *)HW_REG_GXFIFO);
+}
diff --git a/arm9/lib/src/GX_state.c b/arm9/lib/src/GX_state.c
new file mode 100644
index 00000000..52d3c6f5
--- /dev/null
+++ b/arm9/lib/src/GX_state.c
@@ -0,0 +1,26 @@
+#include "global.h"
+#include "main.h"
+#include "gx.h"
+
+extern struct VRAM_banks gUnk021D33C4;
+
+void GX_InitGXState(){
+ gUnk021D33C4.var00 = 0x0;
+ gUnk021D33C4.var02 = 0x0;
+ gUnk021D33C4.var04 = 0x0;
+ gUnk021D33C4.var06 = 0x0;
+ gUnk021D33C4.var08 = 0x0;
+ gUnk021D33C4.var0A = 0x0;
+ gUnk021D33C4.var0C = 0x0;
+ gUnk021D33C4.var0E = 0x0;
+ gUnk021D33C4.var10 = 0x0;
+ gUnk021D33C4.var12 = 0x0;
+ gUnk021D33C4.var14 = 0x0;
+ gUnk021D33C4.var16 = 0x0;
+ gUnk021D33C4.var18 = 0x0;
+ SETREG32(HW_REG_VRAMCNT_A, 0x0);
+ SETREG8(HW_REG_VRAMCNT_E, 0x0);
+ SETREG8(HW_REG_VRAMCNT_F, 0x0);
+ SETREG8(HW_REG_VRAMCNT_G, 0x0);
+ SETREG16(HW_REG_VRAMCNT_H, 0x0);
+}