From 0b3c15a399b456bffcd65aa5d100371ce69fa8eb Mon Sep 17 00:00:00 2001 From: Made Date: Fri, 15 May 2020 00:22:52 +0200 Subject: Decompile GX_load3d.s --- arm9/lib/src/GX_load3d.c | 157 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 arm9/lib/src/GX_load3d.c (limited to 'arm9/lib/src/GX_load3d.c') diff --git a/arm9/lib/src/GX_load3d.c b/arm9/lib/src/GX_load3d.c new file mode 100644 index 00000000..9ae7427a --- /dev/null +++ b/arm9/lib/src/GX_load3d.c @@ -0,0 +1,157 @@ +#include "global.h" +#include "main.h" +#include "gx.h" + +extern u32 gUnk02106814; + +extern u32 gUnk021D3410; +extern u32 gUnk021D3400; +extern u32 gUnk021D3414; +extern u32 gUnk021D3418; + +//probably structs of length 0x6 +extern u16 gUnk02103B4C[]; +extern u16 gUnk02103B4E[]; +extern u16 gUnk02103B50[]; + +extern u32 gUnk021D3408; +extern u32 gUnk021D3404; +extern u16 gUnk02103B3C[]; + +extern s32 gUnk021D33FC; +extern u32 gUnk021D340C; + +static inline void _GX_Load_16(void *src, void *dst, u32 size){ + if (gUnk02106814 != -1 && size > 0x1C) + { + MI_DmaCopy16(gUnk02106814, src, dst, size); + } + else + { + MIi_CpuCopy16(src, dst, size); + } +} + +static inline void _GX_Load_32(void *src, void *dst, u32 size){ + if (gUnk02106814 != -1 && size > 0x30) + { + MI_DmaCopy32(gUnk02106814, src, dst, size); + } + else + { + MIi_CpuCopy32(src, dst, size); + } +} + +static inline void _GX_Load_32_Async(void *src, void *dst, u32 size, void *func, void *ptr){ + if (gUnk02106814 != -1) + { + MI_DmaCopy32Async(gUnk02106814, src, dst, size, func, ptr); + } + else + { + MIi_CpuCopy32(src, dst, size); + } +} + +void GX_BeginLoadTex(){ + u32 temp = GX_ResetBankForTex(); + gUnk021D3410 = temp; + gUnk021D3400 = gUnk02103B4C[temp * 3] << 0xC; + gUnk021D3414 = gUnk02103B4E[temp * 3] << 0xC; + gUnk021D3418 = gUnk02103B50[temp * 3] << 0xC; +} + +void GX_LoadTex(void *src, u32 offset, u32 size){ + void *temp; + if (!gUnk021D3414) + { + temp = (void *)(gUnk021D3400 + offset); + } + else + { + if ((offset + size) < gUnk021D3418) + { + temp = (void *)(gUnk021D3400 + offset); + } + else if (offset >= gUnk021D3418) + { + temp = (void *)(gUnk021D3414 + offset - gUnk021D3418); + } + else + { + void *temp2 = (void *)gUnk021D3414; + u32 temp1 = gUnk021D3418 - offset; + temp = (void *)(gUnk021D3400 + offset); + _GX_Load_32(src, temp, temp1); + _GX_Load_32_Async((void *)((u8 *)src + temp1), temp2, (size - temp1), NULL, NULL); + return; + } + } + _GX_Load_32_Async(src, temp, size, NULL, NULL); +} + +void GX_EndLoadTex(){ + if (gUnk02106814 != -1) + MI_WaitDma(gUnk02106814); + GX_SetBankForTex(gUnk021D3410); + gUnk021D3418 = 0x0; + gUnk021D3414 = 0x0; + gUnk021D3400 = 0x0; + gUnk021D3410 = 0x0; +} + +void GX_BeginLoadTexPltt(){ + s32 temp = GX_ResetBankForTexPltt(); + gUnk021D3408 = temp; + gUnk021D3404 = gUnk02103B3C[temp >> 4] << 0xC; +} + +void GX_LoadTexPltt(void *src, u32 offset, u32 size){ + _GX_Load_32_Async(src, (void *)(gUnk021D3404 + offset), size, NULL, NULL); +} + +void GX_EndLoadTexPltt(){ + if (gUnk02106814 != -1) + MI_WaitDma(gUnk02106814); + GX_SetBankForTexPltt(gUnk021D3408); + gUnk021D3408 = 0x0; + gUnk021D3404 = 0x0; +} + +void GX_BeginLoadClearImage(){ + s32 temp = GX_ResetBankForClearImage(); + gUnk021D33FC = temp; + switch (temp) + { + case 2: + case 3: + gUnk021D340C = 0x6800000; + return; + case 8: + case 12: + gUnk021D340C = 0x6840000; + return; + case 1: + gUnk021D340C = 0x67E0000; + return; + case 4: + gUnk021D340C = 0x6820000; + } +} + +void GX_LoadClearImageColor(void *src, u32 size){ + _GX_Load_32_Async(src, (void *)(gUnk021D340C), size, NULL, NULL); +} + +void GX_LoadClearImageDepth(void *src, u32 size){ + _GX_Load_32_Async(src, (void *)(gUnk021D340C + 0x20000), size, NULL, NULL); +} + +void GX_EndLoadClearImage(){ + if (gUnk02106814 != -1) + MI_WaitDma(gUnk02106814); + GX_SetBankForClearImage(gUnk021D33FC); + gUnk021D33FC = 0x0; + gUnk021D340C = 0x0; +} -- cgit v1.2.3 From 08e4b4f6657bac9d361a9f6948ae6d2bfe50eebf Mon Sep 17 00:00:00 2001 From: Made Date: Fri, 15 May 2020 04:03:35 +0200 Subject: Cleanup --- arm9/lib/src/GX_load3d.c | 45 ++++++--------------------------------------- 1 file changed, 6 insertions(+), 39 deletions(-) (limited to 'arm9/lib/src/GX_load3d.c') diff --git a/arm9/lib/src/GX_load3d.c b/arm9/lib/src/GX_load3d.c index 9ae7427a..bad119fd 100644 --- a/arm9/lib/src/GX_load3d.c +++ b/arm9/lib/src/GX_load3d.c @@ -21,39 +21,6 @@ extern u16 gUnk02103B3C[]; extern s32 gUnk021D33FC; extern u32 gUnk021D340C; -static inline void _GX_Load_16(void *src, void *dst, u32 size){ - if (gUnk02106814 != -1 && size > 0x1C) - { - MI_DmaCopy16(gUnk02106814, src, dst, size); - } - else - { - MIi_CpuCopy16(src, dst, size); - } -} - -static inline void _GX_Load_32(void *src, void *dst, u32 size){ - if (gUnk02106814 != -1 && size > 0x30) - { - MI_DmaCopy32(gUnk02106814, src, dst, size); - } - else - { - MIi_CpuCopy32(src, dst, size); - } -} - -static inline void _GX_Load_32_Async(void *src, void *dst, u32 size, void *func, void *ptr){ - if (gUnk02106814 != -1) - { - MI_DmaCopy32Async(gUnk02106814, src, dst, size, func, ptr); - } - else - { - MIi_CpuCopy32(src, dst, size); - } -} - void GX_BeginLoadTex(){ u32 temp = GX_ResetBankForTex(); gUnk021D3410 = temp; @@ -83,12 +50,12 @@ void GX_LoadTex(void *src, u32 offset, u32 size){ void *temp2 = (void *)gUnk021D3414; u32 temp1 = gUnk021D3418 - offset; temp = (void *)(gUnk021D3400 + offset); - _GX_Load_32(src, temp, temp1); - _GX_Load_32_Async((void *)((u8 *)src + temp1), temp2, (size - temp1), NULL, NULL); + _GX_Load_32(gUnk02106814, src, temp, temp1); + _GX_Load_32_Async(gUnk02106814, (void *)((u8 *)src + temp1), temp2, (size - temp1), NULL, NULL); return; } } - _GX_Load_32_Async(src, temp, size, NULL, NULL); + _GX_Load_32_Async(gUnk02106814, src, temp, size, NULL, NULL); } void GX_EndLoadTex(){ @@ -108,7 +75,7 @@ void GX_BeginLoadTexPltt(){ } void GX_LoadTexPltt(void *src, u32 offset, u32 size){ - _GX_Load_32_Async(src, (void *)(gUnk021D3404 + offset), size, NULL, NULL); + _GX_Load_32_Async(gUnk02106814, src, (void *)(gUnk021D3404 + offset), size, NULL, NULL); } void GX_EndLoadTexPltt(){ @@ -141,11 +108,11 @@ void GX_BeginLoadClearImage(){ } void GX_LoadClearImageColor(void *src, u32 size){ - _GX_Load_32_Async(src, (void *)(gUnk021D340C), size, NULL, NULL); + _GX_Load_32_Async(gUnk02106814, src, (void *)(gUnk021D340C), size, NULL, NULL); } void GX_LoadClearImageDepth(void *src, u32 size){ - _GX_Load_32_Async(src, (void *)(gUnk021D340C + 0x20000), size, NULL, NULL); + _GX_Load_32_Async(gUnk02106814, src, (void *)(gUnk021D340C + 0x20000), size, NULL, NULL); } void GX_EndLoadClearImage(){ -- cgit v1.2.3 From a92d77224c8ec645752a56aa35cc8a8457cd4cd3 Mon Sep 17 00:00:00 2001 From: Made Date: Fri, 15 May 2020 04:14:48 +0200 Subject: Add ARM_FUNC to GX --- arm9/lib/src/GX_load3d.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'arm9/lib/src/GX_load3d.c') diff --git a/arm9/lib/src/GX_load3d.c b/arm9/lib/src/GX_load3d.c index bad119fd..ee7502db 100644 --- a/arm9/lib/src/GX_load3d.c +++ b/arm9/lib/src/GX_load3d.c @@ -21,7 +21,7 @@ extern u16 gUnk02103B3C[]; extern s32 gUnk021D33FC; extern u32 gUnk021D340C; -void GX_BeginLoadTex(){ +ARM_FUNC void GX_BeginLoadTex(){ u32 temp = GX_ResetBankForTex(); gUnk021D3410 = temp; gUnk021D3400 = gUnk02103B4C[temp * 3] << 0xC; @@ -29,7 +29,7 @@ void GX_BeginLoadTex(){ gUnk021D3418 = gUnk02103B50[temp * 3] << 0xC; } -void GX_LoadTex(void *src, u32 offset, u32 size){ +ARM_FUNC void GX_LoadTex(void *src, u32 offset, u32 size){ void *temp; if (!gUnk021D3414) { @@ -58,7 +58,7 @@ void GX_LoadTex(void *src, u32 offset, u32 size){ _GX_Load_32_Async(gUnk02106814, src, temp, size, NULL, NULL); } -void GX_EndLoadTex(){ +ARM_FUNC void GX_EndLoadTex(){ if (gUnk02106814 != -1) MI_WaitDma(gUnk02106814); GX_SetBankForTex(gUnk021D3410); @@ -68,17 +68,17 @@ void GX_EndLoadTex(){ gUnk021D3410 = 0x0; } -void GX_BeginLoadTexPltt(){ +ARM_FUNC void GX_BeginLoadTexPltt(){ s32 temp = GX_ResetBankForTexPltt(); gUnk021D3408 = temp; gUnk021D3404 = gUnk02103B3C[temp >> 4] << 0xC; } -void GX_LoadTexPltt(void *src, u32 offset, u32 size){ +ARM_FUNC void GX_LoadTexPltt(void *src, u32 offset, u32 size){ _GX_Load_32_Async(gUnk02106814, src, (void *)(gUnk021D3404 + offset), size, NULL, NULL); } -void GX_EndLoadTexPltt(){ +ARM_FUNC void GX_EndLoadTexPltt(){ if (gUnk02106814 != -1) MI_WaitDma(gUnk02106814); GX_SetBankForTexPltt(gUnk021D3408); @@ -86,7 +86,7 @@ void GX_EndLoadTexPltt(){ gUnk021D3404 = 0x0; } -void GX_BeginLoadClearImage(){ +ARM_FUNC void GX_BeginLoadClearImage(){ s32 temp = GX_ResetBankForClearImage(); gUnk021D33FC = temp; switch (temp) @@ -107,15 +107,15 @@ void GX_BeginLoadClearImage(){ } } -void GX_LoadClearImageColor(void *src, u32 size){ +ARM_FUNC void GX_LoadClearImageColor(void *src, u32 size){ _GX_Load_32_Async(gUnk02106814, src, (void *)(gUnk021D340C), size, NULL, NULL); } -void GX_LoadClearImageDepth(void *src, u32 size){ +ARM_FUNC void GX_LoadClearImageDepth(void *src, u32 size){ _GX_Load_32_Async(gUnk02106814, src, (void *)(gUnk021D340C + 0x20000), size, NULL, NULL); } -void GX_EndLoadClearImage(){ +ARM_FUNC void GX_EndLoadClearImage(){ if (gUnk02106814 != -1) MI_WaitDma(gUnk02106814); GX_SetBankForClearImage(gUnk021D33FC); -- cgit v1.2.3 From f34db9ec15de8a39989afc722286844ac5fe252b Mon Sep 17 00:00:00 2001 From: Made Date: Fri, 15 May 2020 04:54:46 +0200 Subject: Correct global symbol names --- arm9/lib/src/GX_load3d.c | 112 +++++++++++++++++++++++------------------------ 1 file changed, 56 insertions(+), 56 deletions(-) (limited to 'arm9/lib/src/GX_load3d.c') diff --git a/arm9/lib/src/GX_load3d.c b/arm9/lib/src/GX_load3d.c index ee7502db..3a8a8c1d 100644 --- a/arm9/lib/src/GX_load3d.c +++ b/arm9/lib/src/GX_load3d.c @@ -2,123 +2,123 @@ #include "main.h" #include "gx.h" -extern u32 gUnk02106814; +extern u32 UNK_02106814; -extern u32 gUnk021D3410; -extern u32 gUnk021D3400; -extern u32 gUnk021D3414; -extern u32 gUnk021D3418; +extern u32 UNK_021D3410; +extern u32 UNK_021D3400; +extern u32 UNK_021D3414; +extern u32 UNK_021D3418; //probably structs of length 0x6 -extern u16 gUnk02103B4C[]; -extern u16 gUnk02103B4E[]; -extern u16 gUnk02103B50[]; +extern u16 UNK_02103B4C[]; +extern u16 UNK_02103B4E[]; +extern u16 UNK_02103B50[]; -extern u32 gUnk021D3408; -extern u32 gUnk021D3404; -extern u16 gUnk02103B3C[]; +extern u32 UNK_021D3408; +extern u32 UNK_021D3404; +extern u16 UNK_02103B3C[]; -extern s32 gUnk021D33FC; -extern u32 gUnk021D340C; +extern s32 UNK_021D33FC; +extern u32 UNK_021D340C; ARM_FUNC void GX_BeginLoadTex(){ u32 temp = GX_ResetBankForTex(); - gUnk021D3410 = temp; - gUnk021D3400 = gUnk02103B4C[temp * 3] << 0xC; - gUnk021D3414 = gUnk02103B4E[temp * 3] << 0xC; - gUnk021D3418 = gUnk02103B50[temp * 3] << 0xC; + UNK_021D3410 = temp; + UNK_021D3400 = UNK_02103B4C[temp * 3] << 0xC; + UNK_021D3414 = UNK_02103B4E[temp * 3] << 0xC; + UNK_021D3418 = UNK_02103B50[temp * 3] << 0xC; } ARM_FUNC void GX_LoadTex(void *src, u32 offset, u32 size){ void *temp; - if (!gUnk021D3414) + if (!UNK_021D3414) { - temp = (void *)(gUnk021D3400 + offset); + temp = (void *)(UNK_021D3400 + offset); } else { - if ((offset + size) < gUnk021D3418) + if ((offset + size) < UNK_021D3418) { - temp = (void *)(gUnk021D3400 + offset); + temp = (void *)(UNK_021D3400 + offset); } - else if (offset >= gUnk021D3418) + else if (offset >= UNK_021D3418) { - temp = (void *)(gUnk021D3414 + offset - gUnk021D3418); + temp = (void *)(UNK_021D3414 + offset - UNK_021D3418); } else { - void *temp2 = (void *)gUnk021D3414; - u32 temp1 = gUnk021D3418 - offset; - temp = (void *)(gUnk021D3400 + offset); - _GX_Load_32(gUnk02106814, src, temp, temp1); - _GX_Load_32_Async(gUnk02106814, (void *)((u8 *)src + temp1), temp2, (size - temp1), NULL, NULL); + void *temp2 = (void *)UNK_021D3414; + u32 temp1 = UNK_021D3418 - offset; + temp = (void *)(UNK_021D3400 + offset); + _GX_Load_32(UNK_02106814, src, temp, temp1); + _GX_Load_32_Async(UNK_02106814, (void *)((u8 *)src + temp1), temp2, (size - temp1), NULL, NULL); return; } } - _GX_Load_32_Async(gUnk02106814, src, temp, size, NULL, NULL); + _GX_Load_32_Async(UNK_02106814, src, temp, size, NULL, NULL); } ARM_FUNC void GX_EndLoadTex(){ - if (gUnk02106814 != -1) - MI_WaitDma(gUnk02106814); - GX_SetBankForTex(gUnk021D3410); - gUnk021D3418 = 0x0; - gUnk021D3414 = 0x0; - gUnk021D3400 = 0x0; - gUnk021D3410 = 0x0; + if (UNK_02106814 != -1) + MI_WaitDma(UNK_02106814); + GX_SetBankForTex(UNK_021D3410); + UNK_021D3418 = 0x0; + UNK_021D3414 = 0x0; + UNK_021D3400 = 0x0; + UNK_021D3410 = 0x0; } ARM_FUNC void GX_BeginLoadTexPltt(){ s32 temp = GX_ResetBankForTexPltt(); - gUnk021D3408 = temp; - gUnk021D3404 = gUnk02103B3C[temp >> 4] << 0xC; + UNK_021D3408 = temp; + UNK_021D3404 = UNK_02103B3C[temp >> 4] << 0xC; } ARM_FUNC void GX_LoadTexPltt(void *src, u32 offset, u32 size){ - _GX_Load_32_Async(gUnk02106814, src, (void *)(gUnk021D3404 + offset), size, NULL, NULL); + _GX_Load_32_Async(UNK_02106814, src, (void *)(UNK_021D3404 + offset), size, NULL, NULL); } ARM_FUNC void GX_EndLoadTexPltt(){ - if (gUnk02106814 != -1) - MI_WaitDma(gUnk02106814); - GX_SetBankForTexPltt(gUnk021D3408); - gUnk021D3408 = 0x0; - gUnk021D3404 = 0x0; + if (UNK_02106814 != -1) + MI_WaitDma(UNK_02106814); + GX_SetBankForTexPltt(UNK_021D3408); + UNK_021D3408 = 0x0; + UNK_021D3404 = 0x0; } ARM_FUNC void GX_BeginLoadClearImage(){ s32 temp = GX_ResetBankForClearImage(); - gUnk021D33FC = temp; + UNK_021D33FC = temp; switch (temp) { case 2: case 3: - gUnk021D340C = 0x6800000; + UNK_021D340C = 0x6800000; return; case 8: case 12: - gUnk021D340C = 0x6840000; + UNK_021D340C = 0x6840000; return; case 1: - gUnk021D340C = 0x67E0000; + UNK_021D340C = 0x67E0000; return; case 4: - gUnk021D340C = 0x6820000; + UNK_021D340C = 0x6820000; } } ARM_FUNC void GX_LoadClearImageColor(void *src, u32 size){ - _GX_Load_32_Async(gUnk02106814, src, (void *)(gUnk021D340C), size, NULL, NULL); + _GX_Load_32_Async(UNK_02106814, src, (void *)(UNK_021D340C), size, NULL, NULL); } ARM_FUNC void GX_LoadClearImageDepth(void *src, u32 size){ - _GX_Load_32_Async(gUnk02106814, src, (void *)(gUnk021D340C + 0x20000), size, NULL, NULL); + _GX_Load_32_Async(UNK_02106814, src, (void *)(UNK_021D340C + 0x20000), size, NULL, NULL); } ARM_FUNC void GX_EndLoadClearImage(){ - if (gUnk02106814 != -1) - MI_WaitDma(gUnk02106814); - GX_SetBankForClearImage(gUnk021D33FC); - gUnk021D33FC = 0x0; - gUnk021D340C = 0x0; + if (UNK_02106814 != -1) + MI_WaitDma(UNK_02106814); + GX_SetBankForClearImage(UNK_021D33FC); + UNK_021D33FC = 0x0; + UNK_021D340C = 0x0; } -- cgit v1.2.3 From 648c9421d8ecbd8642f4ae393ab8add89fb3dc00 Mon Sep 17 00:00:00 2001 From: Made Date: Mon, 18 May 2020 02:10:36 +0200 Subject: Add enums and some other stuff and split header --- arm9/lib/src/GX_load3d.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) (limited to 'arm9/lib/src/GX_load3d.c') diff --git a/arm9/lib/src/GX_load3d.c b/arm9/lib/src/GX_load3d.c index 3a8a8c1d..31ddffc3 100644 --- a/arm9/lib/src/GX_load3d.c +++ b/arm9/lib/src/GX_load3d.c @@ -50,17 +50,16 @@ ARM_FUNC void GX_LoadTex(void *src, u32 offset, u32 size){ void *temp2 = (void *)UNK_021D3414; u32 temp1 = UNK_021D3418 - offset; temp = (void *)(UNK_021D3400 + offset); - _GX_Load_32(UNK_02106814, src, temp, temp1); - _GX_Load_32_Async(UNK_02106814, (void *)((u8 *)src + temp1), temp2, (size - temp1), NULL, NULL); + GXi_DmaCopy32(UNK_02106814, src, temp, temp1); + GXi_DmaCopy32Async(UNK_02106814, (void *)((u8 *)src + temp1), temp2, (size - temp1), NULL, NULL); return; } } - _GX_Load_32_Async(UNK_02106814, src, temp, size, NULL, NULL); + GXi_DmaCopy32Async(UNK_02106814, src, temp, size, NULL, NULL); } ARM_FUNC void GX_EndLoadTex(){ - if (UNK_02106814 != -1) - MI_WaitDma(UNK_02106814); + GXi_WaitDma(UNK_02106814); GX_SetBankForTex(UNK_021D3410); UNK_021D3418 = 0x0; UNK_021D3414 = 0x0; @@ -75,12 +74,11 @@ ARM_FUNC void GX_BeginLoadTexPltt(){ } ARM_FUNC void GX_LoadTexPltt(void *src, u32 offset, u32 size){ - _GX_Load_32_Async(UNK_02106814, src, (void *)(UNK_021D3404 + offset), size, NULL, NULL); + GXi_DmaCopy32Async(UNK_02106814, src, (void *)(UNK_021D3404 + offset), size, NULL, NULL); } ARM_FUNC void GX_EndLoadTexPltt(){ - if (UNK_02106814 != -1) - MI_WaitDma(UNK_02106814); + GXi_WaitDma(UNK_02106814); GX_SetBankForTexPltt(UNK_021D3408); UNK_021D3408 = 0x0; UNK_021D3404 = 0x0; @@ -108,16 +106,15 @@ ARM_FUNC void GX_BeginLoadClearImage(){ } ARM_FUNC void GX_LoadClearImageColor(void *src, u32 size){ - _GX_Load_32_Async(UNK_02106814, src, (void *)(UNK_021D340C), size, NULL, NULL); + GXi_DmaCopy32Async(UNK_02106814, src, (void *)(UNK_021D340C), size, NULL, NULL); } ARM_FUNC void GX_LoadClearImageDepth(void *src, u32 size){ - _GX_Load_32_Async(UNK_02106814, src, (void *)(UNK_021D340C + 0x20000), size, NULL, NULL); + GXi_DmaCopy32Async(UNK_02106814, src, (void *)(UNK_021D340C + 0x20000), size, NULL, NULL); } ARM_FUNC void GX_EndLoadClearImage(){ - if (UNK_02106814 != -1) - MI_WaitDma(UNK_02106814); + GXi_WaitDma(UNK_02106814); GX_SetBankForClearImage(UNK_021D33FC); UNK_021D33FC = 0x0; UNK_021D340C = 0x0; -- cgit v1.2.3 From 8ac22ef273a2863591f7e382d2d8781cc434e8a5 Mon Sep 17 00:00:00 2001 From: Made Date: Mon, 18 May 2020 02:32:07 +0200 Subject: Rename globals --- arm9/lib/src/GX_load3d.c | 106 +++++++++++++++++++++++------------------------ 1 file changed, 53 insertions(+), 53 deletions(-) (limited to 'arm9/lib/src/GX_load3d.c') diff --git a/arm9/lib/src/GX_load3d.c b/arm9/lib/src/GX_load3d.c index 31ddffc3..db947ec9 100644 --- a/arm9/lib/src/GX_load3d.c +++ b/arm9/lib/src/GX_load3d.c @@ -2,120 +2,120 @@ #include "main.h" #include "gx.h" -extern u32 UNK_02106814; +extern u32 GXi_DmaId; -extern u32 UNK_021D3410; -extern u32 UNK_021D3400; -extern u32 UNK_021D3414; -extern u32 UNK_021D3418; +extern u32 sTex; +extern u32 sTexLCDCBlk1; +extern u32 sTexLCDCBlk2; +extern u32 sSzTexBlk1; //probably structs of length 0x6 -extern u16 UNK_02103B4C[]; -extern u16 UNK_02103B4E[]; -extern u16 UNK_02103B50[]; +extern u16 sTexStartAddrTable[]; +extern u16 sTexStartAddrTable[]; +extern u16 sTexStartAddrTable[]; -extern u32 UNK_021D3408; -extern u32 UNK_021D3404; -extern u16 UNK_02103B3C[]; +extern u32 sTexPltt; +extern u32 sTexPlttLCDCBlk; +extern u16 sTexPlttStartAddrTable[]; -extern s32 UNK_021D33FC; -extern u32 UNK_021D340C; +extern s32 sClrImg; +extern u32 sClrImgLCDCBlk; ARM_FUNC void GX_BeginLoadTex(){ u32 temp = GX_ResetBankForTex(); - UNK_021D3410 = temp; - UNK_021D3400 = UNK_02103B4C[temp * 3] << 0xC; - UNK_021D3414 = UNK_02103B4E[temp * 3] << 0xC; - UNK_021D3418 = UNK_02103B50[temp * 3] << 0xC; + sTex = temp; + sTexLCDCBlk1 = sTexStartAddrTable[temp * 3] << 0xC; + sTexLCDCBlk2 = sTexStartAddrTable[temp * 3] << 0xC; + sSzTexBlk1 = sTexStartAddrTable[temp * 3] << 0xC; } ARM_FUNC void GX_LoadTex(void *src, u32 offset, u32 size){ void *temp; - if (!UNK_021D3414) + if (!sTexLCDCBlk2) { - temp = (void *)(UNK_021D3400 + offset); + temp = (void *)(sTexLCDCBlk1 + offset); } else { - if ((offset + size) < UNK_021D3418) + if ((offset + size) < sSzTexBlk1) { - temp = (void *)(UNK_021D3400 + offset); + temp = (void *)(sTexLCDCBlk1 + offset); } - else if (offset >= UNK_021D3418) + else if (offset >= sSzTexBlk1) { - temp = (void *)(UNK_021D3414 + offset - UNK_021D3418); + temp = (void *)(sTexLCDCBlk2 + offset - sSzTexBlk1); } else { - void *temp2 = (void *)UNK_021D3414; - u32 temp1 = UNK_021D3418 - offset; - temp = (void *)(UNK_021D3400 + offset); - GXi_DmaCopy32(UNK_02106814, src, temp, temp1); - GXi_DmaCopy32Async(UNK_02106814, (void *)((u8 *)src + temp1), temp2, (size - temp1), NULL, NULL); + void *temp2 = (void *)sTexLCDCBlk2; + u32 temp1 = sSzTexBlk1 - offset; + temp = (void *)(sTexLCDCBlk1 + offset); + GXi_DmaCopy32(GXi_DmaId, src, temp, temp1); + GXi_DmaCopy32Async(GXi_DmaId, (void *)((u8 *)src + temp1), temp2, (size - temp1), NULL, NULL); return; } } - GXi_DmaCopy32Async(UNK_02106814, src, temp, size, NULL, NULL); + GXi_DmaCopy32Async(GXi_DmaId, src, temp, size, NULL, NULL); } ARM_FUNC void GX_EndLoadTex(){ - GXi_WaitDma(UNK_02106814); - GX_SetBankForTex(UNK_021D3410); - UNK_021D3418 = 0x0; - UNK_021D3414 = 0x0; - UNK_021D3400 = 0x0; - UNK_021D3410 = 0x0; + GXi_WaitDma(GXi_DmaId); + GX_SetBankForTex(sTex); + sSzTexBlk1 = 0x0; + sTexLCDCBlk2 = 0x0; + sTexLCDCBlk1 = 0x0; + sTex = 0x0; } ARM_FUNC void GX_BeginLoadTexPltt(){ s32 temp = GX_ResetBankForTexPltt(); - UNK_021D3408 = temp; - UNK_021D3404 = UNK_02103B3C[temp >> 4] << 0xC; + sTexPltt = temp; + sTexPlttLCDCBlk = sTexPlttStartAddrTable[temp >> 4] << 0xC; } ARM_FUNC void GX_LoadTexPltt(void *src, u32 offset, u32 size){ - GXi_DmaCopy32Async(UNK_02106814, src, (void *)(UNK_021D3404 + offset), size, NULL, NULL); + GXi_DmaCopy32Async(GXi_DmaId, src, (void *)(sTexPlttLCDCBlk + offset), size, NULL, NULL); } ARM_FUNC void GX_EndLoadTexPltt(){ - GXi_WaitDma(UNK_02106814); - GX_SetBankForTexPltt(UNK_021D3408); - UNK_021D3408 = 0x0; - UNK_021D3404 = 0x0; + GXi_WaitDma(GXi_DmaId); + GX_SetBankForTexPltt(sTexPltt); + sTexPltt = 0x0; + sTexPlttLCDCBlk = 0x0; } ARM_FUNC void GX_BeginLoadClearImage(){ s32 temp = GX_ResetBankForClearImage(); - UNK_021D33FC = temp; + sClrImg = temp; switch (temp) { case 2: case 3: - UNK_021D340C = 0x6800000; + sClrImgLCDCBlk = 0x6800000; return; case 8: case 12: - UNK_021D340C = 0x6840000; + sClrImgLCDCBlk = 0x6840000; return; case 1: - UNK_021D340C = 0x67E0000; + sClrImgLCDCBlk = 0x67E0000; return; case 4: - UNK_021D340C = 0x6820000; + sClrImgLCDCBlk = 0x6820000; } } ARM_FUNC void GX_LoadClearImageColor(void *src, u32 size){ - GXi_DmaCopy32Async(UNK_02106814, src, (void *)(UNK_021D340C), size, NULL, NULL); + GXi_DmaCopy32Async(GXi_DmaId, src, (void *)(sClrImgLCDCBlk), size, NULL, NULL); } ARM_FUNC void GX_LoadClearImageDepth(void *src, u32 size){ - GXi_DmaCopy32Async(UNK_02106814, src, (void *)(UNK_021D340C + 0x20000), size, NULL, NULL); + GXi_DmaCopy32Async(GXi_DmaId, src, (void *)(sClrImgLCDCBlk + 0x20000), size, NULL, NULL); } ARM_FUNC void GX_EndLoadClearImage(){ - GXi_WaitDma(UNK_02106814); - GX_SetBankForClearImage(UNK_021D33FC); - UNK_021D33FC = 0x0; - UNK_021D340C = 0x0; + GXi_WaitDma(GXi_DmaId); + GX_SetBankForClearImage(sClrImg); + sClrImg = 0x0; + sClrImgLCDCBlk = 0x0; } -- cgit v1.2.3 From 88e486100e449d8960894c9e30c4f21489ccbc31 Mon Sep 17 00:00:00 2001 From: Made Date: Mon, 18 May 2020 02:33:11 +0200 Subject: rename main GX header --- arm9/lib/src/GX_load3d.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'arm9/lib/src/GX_load3d.c') diff --git a/arm9/lib/src/GX_load3d.c b/arm9/lib/src/GX_load3d.c index db947ec9..5f13deda 100644 --- a/arm9/lib/src/GX_load3d.c +++ b/arm9/lib/src/GX_load3d.c @@ -1,6 +1,6 @@ #include "global.h" #include "main.h" -#include "gx.h" +#include "GX.h" extern u32 GXi_DmaId; -- cgit v1.2.3 From 02abe0000a06299e32557591fa9e3396a6135242 Mon Sep 17 00:00:00 2001 From: Made Date: Mon, 18 May 2020 02:58:04 +0200 Subject: Add proper struct for static data --- arm9/lib/src/GX_load3d.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'arm9/lib/src/GX_load3d.c') diff --git a/arm9/lib/src/GX_load3d.c b/arm9/lib/src/GX_load3d.c index 5f13deda..5aa15581 100644 --- a/arm9/lib/src/GX_load3d.c +++ b/arm9/lib/src/GX_load3d.c @@ -9,14 +9,18 @@ extern u32 sTexLCDCBlk1; extern u32 sTexLCDCBlk2; extern u32 sSzTexBlk1; -//probably structs of length 0x6 -extern u16 sTexStartAddrTable[]; -extern u16 sTexStartAddrTable[]; -extern u16 sTexStartAddrTable[]; +static const struct _TexStartAddrTable +{ + u16 blk1; // 12 bit shift + u16 blk2; // 12 bit shift + u16 szBlk1; // 12 bit shift +}; +extern struct _TexStartAddrTable sTexStartAddrTable[16]; + extern u32 sTexPltt; extern u32 sTexPlttLCDCBlk; -extern u16 sTexPlttStartAddrTable[]; +extern u16 sTexPlttStartAddrTable[8]; extern s32 sClrImg; extern u32 sClrImgLCDCBlk; @@ -24,9 +28,9 @@ extern u32 sClrImgLCDCBlk; ARM_FUNC void GX_BeginLoadTex(){ u32 temp = GX_ResetBankForTex(); sTex = temp; - sTexLCDCBlk1 = sTexStartAddrTable[temp * 3] << 0xC; - sTexLCDCBlk2 = sTexStartAddrTable[temp * 3] << 0xC; - sSzTexBlk1 = sTexStartAddrTable[temp * 3] << 0xC; + sTexLCDCBlk1 = sTexStartAddrTable[temp].blk1 << 0xC; + sTexLCDCBlk2 = sTexStartAddrTable[temp].blk2 << 0xC; + sSzTexBlk1 = sTexStartAddrTable[temp].szBlk1 << 0xC; } ARM_FUNC void GX_LoadTex(void *src, u32 offset, u32 size){ -- cgit v1.2.3