summaryrefslogtreecommitdiff
path: root/arm9/lib/src/GX_g3.c
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-05-20 14:59:56 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2020-05-20 14:59:56 -0400
commitd1d3fce4b6be10ed7186a6c36bc27fe575b593db (patch)
tree4f31107f4446b69106acb0673a383dfdaf88473e /arm9/lib/src/GX_g3.c
parent6103ab0ca0962682095e58779079cb4c8c054b14 (diff)
parentde389305733545e2b6fac6c8dcb33d76a7446481 (diff)
Merge branch 'master' of github.com:martmists/pokediamond into pikalax_work
Diffstat (limited to 'arm9/lib/src/GX_g3.c')
-rw-r--r--arm9/lib/src/GX_g3.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/arm9/lib/src/GX_g3.c b/arm9/lib/src/GX_g3.c
new file mode 100644
index 00000000..2b5f2941
--- /dev/null
+++ b/arm9/lib/src/GX_g3.c
@@ -0,0 +1,36 @@
+#include "global.h"
+#include "main.h"
+#include "GX.h"
+
+
+ARM_FUNC void G3_BeginMakeDL(struct GXDLInfo *displaylist, void *r1, u32 r2){
+ displaylist->length = r2;
+ displaylist->bottom = r1;
+ displaylist->curr_cmd = r1;
+ displaylist->curr_param = (u32 *)r1 + 1;
+ displaylist->param0_cmd_flg = 0x0;
+}
+
+ARM_FUNC s32 G3_EndMakeDL(struct GXDLInfo *displaylist){
+ if (displaylist->bottom == (u32 *)displaylist->curr_cmd)
+ return 0;
+ //pads the buffer with 0 to 4byte alignment if needed
+ switch((u32)displaylist->curr_cmd & 0x3)
+ {
+ case 0:
+ return displaylist->curr_cmd - (u8 *)displaylist->bottom;
+ case 1:
+ *displaylist->curr_cmd++ = 0x0;
+ case 2:
+ *displaylist->curr_cmd++ = 0x0;
+ case 3:
+ *displaylist->curr_cmd++ = 0x0;
+ }
+ if (displaylist->param0_cmd_flg)
+ {
+ *displaylist->curr_param++ = 0x0;
+ displaylist->param0_cmd_flg = 0x0;
+ }
+ displaylist->curr_cmd = (u8 *)displaylist->curr_param;
+ return displaylist->curr_cmd - (u8 *)displaylist->bottom;
+}