From 3f833281144c32ab7452639c060fd4fb01c8d63f Mon Sep 17 00:00:00 2001 From: Made Date: Wed, 6 May 2020 02:02:35 +0200 Subject: Decompile GX_asm and GX_g3 --- arm9/lib/src/GX_asm.c | 16 ++++++++++++++++ arm9/lib/src/GX_g3.c | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 arm9/lib/src/GX_asm.c create mode 100644 arm9/lib/src/GX_g3.c (limited to 'arm9/lib/src') diff --git a/arm9/lib/src/GX_asm.c b/arm9/lib/src/GX_asm.c new file mode 100644 index 00000000..1eb0a011 --- /dev/null +++ b/arm9/lib/src/GX_asm.c @@ -0,0 +1,16 @@ +#include "global.h" +#include "main.h" +#include "gx.h" + +//looks like asm and says asm on the tin... +ARM_FUNC asm void GX_SendFifo48B(void *src, void *dst){ + ldmia r0!, {r2-r3,r12} + stmia r1, {r2-r3,r12} + ldmia r0!, {r2-r3,r12} + stmia r1, {r2-r3,r12} + ldmia r0!, {r2-r3,r12} + stmia r1, {r2-r3,r12} + ldmia r0!, {r2-r3,r12} + stmia r1, {r2-r3,r12} + bx lr +} diff --git a/arm9/lib/src/GX_g3.c b/arm9/lib/src/GX_g3.c new file mode 100644 index 00000000..66e34dc7 --- /dev/null +++ b/arm9/lib/src/GX_g3.c @@ -0,0 +1,36 @@ +#include "global.h" +#include "main.h" +#include "gx.h" + + +void G3_BeginMakeDL(struct DL *displaylist, void *r1, u32 r2){ + displaylist->var0C = r2; + displaylist->var08 = r1; + displaylist->var00 = r1; + displaylist->var04 = (u32 *)r1 + 1; + displaylist->var10 = 0x0; +} + +s32 G3_EndMakeDL(struct DL *displaylist){ + if (displaylist->var08 == displaylist->var00) + return 0; + //pads the buffer with 0 to 4byte alignment if needed + switch((u32)displaylist->var00 & 0x3) + { + case 0: + return displaylist->var00 - displaylist->var08; + case 1: + *displaylist->var00++ = 0x0; + case 2: + *displaylist->var00++ = 0x0; + case 3: + *displaylist->var00++ = 0x0; + } + if (displaylist->var10) + { + *displaylist->var04++ = 0x0; + displaylist->var10 = 0x0; + } + displaylist->var00 = (u8 *)displaylist->var04; + return displaylist->var00 - displaylist->var08; +} -- cgit v1.2.3