diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-20 14:59:56 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-20 14:59:56 -0400 |
commit | d1d3fce4b6be10ed7186a6c36bc27fe575b593db (patch) | |
tree | 4f31107f4446b69106acb0673a383dfdaf88473e /arm9/lib/src/GX_g3.c | |
parent | 6103ab0ca0962682095e58779079cb4c8c054b14 (diff) | |
parent | de389305733545e2b6fac6c8dcb33d76a7446481 (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.c | 36 |
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; +} |