summaryrefslogtreecommitdiff
path: root/arm9/src
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/src')
-rw-r--r--arm9/src/unk_02008AA4.c46
-rw-r--r--arm9/src/unk_02008DEC.c1118
-rw-r--r--arm9/src/unk_0200BB14.c196
3 files changed, 1218 insertions, 142 deletions
diff --git a/arm9/src/unk_02008AA4.c b/arm9/src/unk_02008AA4.c
index 2d7fb77d..1cabb887 100644
--- a/arm9/src/unk_02008AA4.c
+++ b/arm9/src/unk_02008AA4.c
@@ -3,16 +3,8 @@
#include "GX_vramcnt.h"
#include "heap.h"
#include "unk_0200BB14.h"
+#include "unk_02008DEC.h"
-extern u32 FUN_020094F0(u32 param0, s32 param1);
-extern u32 FUN_02009C80(u32, u32);
-extern u32 FUN_02009544(u32);
-extern u32 FUN_02009E54(u32 param0, u32 param1);
-extern u32 FUN_02009C5C(u32);
-extern u32 FUN_02009574(u32);
-extern u32 FUN_0200958C(u32);
-extern u32 FUN_020095A4(u32);
-extern u32 FUN_020095BC(u32);
extern void FUN_0202134C(void *, u32);
extern void FUN_02009FD8(void *param0, u32 *param1, u32 param2, u32 param3);
extern u32 FUN_0201FCB0(u32 *);
@@ -29,20 +21,20 @@ THUMB_FUNC void FUN_02008AA4(struct UnkStruct_0200BB14_sub *param0,
s32 param6,
u32 param7,
u32 param8,
- u32 param9,
- u32 param10,
- u32 param11,
- u32 param12,
- u32 param13,
- u32 param14)
+ struct UnkStruct_02008DEC_1 *param9,
+ struct UnkStruct_02008DEC_1 *param10,
+ struct UnkStruct_02008DEC_1 *param11,
+ struct UnkStruct_02008DEC_1 *param12,
+ struct UnkStruct_02008DEC_1 *param13,
+ struct UnkStruct_02008DEC_1 *param14)
{
- u32 r7;
- u32 st14;
- u32 st10;
+ struct UnkStruct_02008DEC_sub *r7;
+ struct UnkStruct_02008DEC_sub *st14;
+ struct UnkStruct_02008DEC_sub *st10;
- u32 stc = 0;
- u32 r4 = 0;
- u32 st8 = 0;
+ struct UnkStruct_02008DEC_sub *stc = NULL;
+ struct UnkStruct_02008DEC_sub *r4 = NULL;
+ struct UnkStruct_02008DEC_sub *st8 = NULL;
GF_ASSERT(param9);
GF_ASSERT(param10);
@@ -124,12 +116,12 @@ THUMB_FUNC void FUN_02008AA4(struct UnkStruct_0200BB14_sub *param0,
THUMB_FUNC struct UnkStruct_02008AA4_1 *FUN_02008BE0(struct UnkStruct_02008AA4_2 *param0,
u32 param1,
- u32 param2,
- u32 param3,
- u32 param4,
- u32 param5,
- u32 param6,
- u32 param7)
+ struct UnkStruct_02008DEC_1 *param2,
+ struct UnkStruct_02008DEC_1 *param3,
+ struct UnkStruct_02008DEC_1 *param4,
+ struct UnkStruct_02008DEC_1 *param5,
+ struct UnkStruct_02008DEC_1 *param6,
+ struct UnkStruct_02008DEC_1 *param7)
{
s32 r4 = 0;
diff --git a/arm9/src/unk_02008DEC.c b/arm9/src/unk_02008DEC.c
new file mode 100644
index 00000000..2238b920
--- /dev/null
+++ b/arm9/src/unk_02008DEC.c
@@ -0,0 +1,1118 @@
+#include "global.h"
+#include "unk_02008DEC.h"
+#include "NNS_g2d.h"
+#include "gf_gfx_loader.h"
+#include "heap.h"
+
+extern u32 FUN_02020C44(u32, u32);
+extern void FUN_02020C90(u32);
+extern u32 FUN_02020CB0(u32 param0, s32 param1);
+extern void FUN_02020E1C(u32 param0, u32 param1);
+extern void FUN_02020D68(u32 param0, u32 param1);
+extern s32 FUN_02020E38(u32);
+extern void *FUN_02020E0C(u32);
+extern BOOL NNS_G2dGetUnpackedMultiCellBank(void *, void *);
+extern BOOL NNS_G2dGetUnpackedMCAnimBank(void *, void *);
+extern u32 FUN_02020D10(u32, void *, s32, u32);
+extern u32 FUN_02020CD4(u32, void *, s32);
+extern u32 FUN_0201D1F8(u32 *param0);
+extern u32 FUN_0201D250(u32 *param0);
+extern void FUN_0201D2DC(s32, u32);
+extern void FUN_0201D324(s32 param0);
+extern u32 FUN_0201D3B0(s32);
+extern u32 FUN_0201D3D4(s32, u32);
+extern u32 FUN_0201D458(u32);
+extern void FUN_0201D4F0(u32);
+extern u32 FUN_0201E0E4(u32 *param0);
+extern u32 FUN_0201E128(u32 *param0);
+extern void FUN_0201E168(s32, u32);
+extern void FUN_0201E1C8(s32);
+extern u32 FUN_0201E258(s32, u32);
+extern u32 FUN_0201E230(s32);
+extern s32 NNS_G2dGetImagePaletteLocation(u32, u32);
+
+THUMB_FUNC struct UnkStruct_02008DEC_1 *FUN_02008DEC(u32 param0, s32 param1, u32 heap_id)
+{
+ struct UnkStruct_02008DEC_1 *ptr = AllocFromHeap(heap_id, sizeof(struct UnkStruct_02008DEC_1));
+ ptr->unk00 = FUN_02020C44(param0, heap_id);
+ ptr->unk04 = AllocFromHeap(heap_id, param0 * sizeof(struct UnkStruct_02008DEC_sub));
+ memset(ptr->unk04, 0, param0 * sizeof(struct UnkStruct_02008DEC_sub));
+ ptr->unk08 = (s32)param0;
+ ptr->unk0C = 0;
+ ptr->unk10 = param1;
+
+ return ptr;
+}
+
+THUMB_FUNC void FUN_02008E2C(struct UnkStruct_02008DEC_1 *param0)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk00);
+ GF_ASSERT(param0->unk04);
+
+ FUN_020094C4(param0);
+
+ FUN_02020C90(param0->unk00);
+ param0->unk00 = 0;
+
+ FreeToHeap(param0->unk04);
+ param0->unk04 = NULL;
+
+ FreeToHeap(param0);
+}
+
+THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_02008E6C(
+ struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_2 *param1, s32 param2, u32 param3)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param1);
+ GF_ASSERT(param1->unk04 > param2);
+ GF_ASSERT(param0->unk10 == param1->unk08);
+
+ struct UnkStruct_02008DEC_sub *st1c = FUN_020097D0(param0);
+ GF_ASSERT(st1c);
+
+ if (param1->unk0C == 0)
+ {
+ struct UnkStruct_02008DEC_3 *r6 = &param1->unk00_3[param2];
+ GF_ASSERT(FUN_0200945C(param0, r6->unk00) == 1);
+
+ FUN_0200994C(
+ param0, st1c, r6->unk04, r6->unk00, r6->unk44, r6->unk48, param1->unk08, param3);
+ }
+ else
+ {
+ struct UnkStruct_02008DEC_4 *r6 = &param1->unk00_4[param2];
+ GF_ASSERT(FUN_0200945C(param0, r6->unk0C) == 1);
+
+ FUN_02009978(param0,
+ st1c,
+ r6->unk00,
+ r6->unk04,
+ r6->unk08,
+ r6->unk0C,
+ r6->unk10,
+ r6->unk14,
+ param1->unk08,
+ param3,
+ FALSE);
+ }
+
+ param0->unk0C++;
+
+ return st1c;
+}
+
+THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_02008F34(struct UnkStruct_02008DEC_1 *param0,
+ NarcId param1,
+ s32 param2,
+ BOOL param3,
+ s32 param4,
+ u32 param5,
+ u32 param6)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk10 == 0);
+
+ struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0);
+ GF_ASSERT(r6);
+
+ FUN_02009978(param0, r6, param1, param2, param3, param4, param5, 0, 0, param6, FALSE);
+ param0->unk0C++;
+
+ return r6;
+}
+
+THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_02008F90(struct UnkStruct_02008DEC_1 *param0,
+ NarcId param1,
+ s32 param2,
+ BOOL param3,
+ s32 param4,
+ u32 param5,
+ u32 param6,
+ BOOL param7)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk10 == 0);
+
+ struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0);
+ GF_ASSERT(r6);
+
+ FUN_02009978(param0, r6, param1, param2, param3, param4, param5, 0, 0, param6, param7);
+ param0->unk0C++;
+
+ return r6;
+}
+
+THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_02008FEC(struct UnkStruct_02008DEC_1 *param0,
+ NarcId param1,
+ s32 param2,
+ BOOL param3,
+ s32 param4,
+ u32 param5,
+ u32 param6,
+ u32 param7)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk10 == 1);
+
+ struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0);
+ GF_ASSERT(r6);
+
+ FUN_02009978(param0, r6, param1, param2, param3, param4, param5, param6, 1, param7, FALSE);
+ param0->unk0C++;
+
+ return r6;
+}
+
+THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_0200904C(struct UnkStruct_02008DEC_1 *param0,
+ NarcId param1,
+ s32 param2,
+ BOOL param3,
+ s32 param4,
+ u32 param5,
+ u32 param6,
+ u32 param7,
+ BOOL param8)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk10 == 1);
+
+ struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0);
+ GF_ASSERT(r6);
+
+ FUN_02009978(param0, r6, param1, param2, param3, param4, param5, param6, 1, param7, param8);
+ param0->unk0C++;
+
+ return r6;
+}
+
+THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_020090AC(struct UnkStruct_02008DEC_1 *param0,
+ NarcId param1,
+ s32 param2,
+ BOOL param3,
+ s32 param4,
+ u32 param5,
+ u32 param6)
+{
+ GF_ASSERT(param0);
+
+ struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0);
+ GF_ASSERT(r6);
+
+ FUN_02009978(param0, r6, param1, param2, param3, param4, 0, 0, param5, param6, FALSE);
+ param0->unk0C++;
+
+ return r6;
+}
+
+THUMB_FUNC void FUN_020090FC(struct UnkStruct_02008DEC_1 *param0,
+ struct UnkStruct_02008DEC_sub *param1,
+ NarcId param2,
+ s32 param3,
+ BOOL param4,
+ u32 param5)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk10 == 0);
+ GF_ASSERT(param1);
+ GF_ASSERT(param1->unk04 == 0);
+
+ s32 r6 = FUN_02009530(param1);
+ u32 r7 = FUN_020095E4(param1);
+ FUN_02009490(param0, param1);
+
+ FUN_02009978(param0, param1, param2, param3, param4, r6, r7, 0, 0, param5, FALSE);
+}
+
+THUMB_FUNC void FUN_02009168(struct UnkStruct_02008DEC_1 *param0,
+ struct UnkStruct_02008DEC_sub *param1,
+ NarcId param2,
+ s32 param3,
+ BOOL param4,
+ u32 param5)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk10 == 1);
+ GF_ASSERT(param1);
+ GF_ASSERT(param1->unk04 == 1);
+
+ s32 r6 = FUN_02009530(param1);
+ u32 r7 = FUN_020095E4(param1);
+ u32 st24 = FUN_02009610(param1);
+ FUN_02009490(param0, param1);
+
+ FUN_02009978(param0, param1, param2, param3, param4, r6, r7, st24, 1, param5, 0);
+}
+
+THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_020091E0(struct UnkStruct_02008DEC_1 *param0,
+ NARC *param1,
+ u32 param2,
+ u32 param3,
+ s32 param4,
+ u32 param5,
+ u32 param6)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk10 == 0);
+
+ struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0);
+ GF_ASSERT(r6);
+
+ FUN_020099B0(param0, r6, param1, param2, param3, param4, param5, 0, 0, param6, 0);
+ param0->unk0C++;
+
+ return r6;
+}
+
+THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_0200923C(struct UnkStruct_02008DEC_1 *param0,
+ NARC *param1,
+ u32 param2,
+ u32 param3,
+ s32 param4,
+ u32 param5,
+ u32 param6,
+ u32 param7)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk10 == 0);
+
+ struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0);
+ GF_ASSERT(r6);
+
+ FUN_020099B0(param0, r6, param1, param2, param3, param4, param5, 0, 0, param6, param7);
+ param0->unk0C++;
+
+ return r6;
+}
+
+THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_02009298(struct UnkStruct_02008DEC_1 *param0,
+ NARC *param1,
+ u32 param2,
+ u32 param3,
+ s32 param4,
+ u32 param5,
+ u32 param6,
+ u32 param7)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk10 == 1);
+
+ struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0);
+ GF_ASSERT(r6);
+
+ FUN_020099B0(param0, r6, param1, param2, param3, param4, param5, param6, 1, param7, 0);
+ param0->unk0C++;
+
+ return r6;
+}
+
+THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_020092F8(struct UnkStruct_02008DEC_1 *param0,
+ NARC *param1,
+ u32 param2,
+ u32 param3,
+ s32 param4,
+ u32 param5,
+ u32 param6,
+ u32 param7,
+ u32 param8)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk10 == 1);
+
+ struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0);
+ GF_ASSERT(r6);
+
+ FUN_020099B0(param0, r6, param1, param2, param3, param4, param5, param6, 1, param7, param8);
+ param0->unk0C++;
+
+ return r6;
+}
+
+THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_02009358(struct UnkStruct_02008DEC_1 *param0,
+ NARC *param1,
+ u32 param2,
+ u32 param3,
+ s32 param4,
+ u32 param5,
+ u32 param6)
+{
+ GF_ASSERT(param0);
+
+ struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0);
+ GF_ASSERT(r6);
+
+ FUN_020099B0(param0, r6, param1, param2, param3, param4, 0, 0, param5, param6, 0);
+ param0->unk0C++;
+
+ return r6;
+}
+
+THUMB_FUNC s32 FUN_020093A8(
+ struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_2 *param1, struct UnkStruct_02008DEC_5 *param2, u32 param3)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param1);
+
+ FUN_020093DC(param0, param1, 0, param1->unk04, param2, param3);
+
+ return param1->unk04;
+}
+
+THUMB_FUNC void FUN_020093DC(struct UnkStruct_02008DEC_1 *param0,
+ struct UnkStruct_02008DEC_2 *param1,
+ s32 param2,
+ s32 param3,
+ struct UnkStruct_02008DEC_5 *param4,
+ u32 param5)
+{
+ for (int r5 = param2; r5 < param2 + param3; r5++)
+ {
+ struct UnkStruct_02008DEC_sub *r0 = FUN_02008E6C(param0, param1, r5, param5);
+
+ if (param4 != NULL && param4->unk04 > param4->unk08)
+ {
+ param4->unk00[param4->unk08] = r0;
+ param4->unk08++;
+ }
+ }
+}
+
+THUMB_FUNC struct UnkStruct_02008DEC_5 *FUN_02009424(s32 param0, u32 param1)
+{
+ struct UnkStruct_02008DEC_5 *r4 = AllocFromHeap(param1, sizeof(struct UnkStruct_02008DEC_5));
+ r4->unk00 = AllocFromHeap(param1, param0 * sizeof(struct UnkStruct_02008DEC_sub *));
+ r4->unk04 = param0;
+ r4->unk08 = 0;
+
+ return r4;
+}
+
+THUMB_FUNC void FUN_02009448(struct UnkStruct_02008DEC_5 *param0)
+{
+ FreeToHeap(param0->unk00);
+ FreeToHeap(param0);
+}
+
+THUMB_FUNC u32 FUN_0200945C(struct UnkStruct_02008DEC_1 *param0, s32 param1)
+{
+ GF_ASSERT(param0);
+ return FUN_02020CB0(param0->unk00, param1);
+}
+
+THUMB_FUNC void FUN_02009474(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+
+ FUN_02009920(param0);
+ FUN_02020E1C(param0->unk00, 0);
+}
+
+THUMB_FUNC void FUN_02009490(struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_sub *param1)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk04);
+
+ FUN_02009920(param1);
+ FUN_02020D68(param0->unk00, param1->unk00);
+ param1->unk00 = 0;
+ param0->unk0C--;
+}
+
+THUMB_FUNC void FUN_020094C4(struct UnkStruct_02008DEC_1 *param0)
+{
+ for (int i = 0; i < param0->unk08; i++)
+ {
+ if (param0->unk04[i].unk00 != 0)
+ {
+ FUN_02009490(param0, &param0->unk04[i]);
+ }
+ }
+}
+
+THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_020094F0(struct UnkStruct_02008DEC_1 *param0, s32 param1)
+{
+ GF_ASSERT(param0);
+
+ for (int i = 0; i < param0->unk08; i++)
+ {
+ if (param0->unk04[i].unk00 != 0)
+ {
+ s32 r0 = FUN_02020E38(param0->unk04[i].unk00);
+ if (r0 == param1)
+ {
+ return &param0->unk04[i];
+ }
+ }
+ }
+
+ return NULL;
+}
+
+THUMB_FUNC s32 FUN_02009530(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+ return FUN_02020E38(param0->unk00);
+}
+
+THUMB_FUNC u32 FUN_02009544(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0->unk04 == 0);
+ return *FUN_02009934(param0);
+}
+
+THUMB_FUNC u32 FUN_0200955C(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0->unk04 == 1);
+ return *FUN_02009934(param0);
+}
+
+THUMB_FUNC u32 FUN_02009574(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0->unk04 == 2);
+ return *FUN_02009934(param0);
+}
+
+THUMB_FUNC u32 FUN_0200958C(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0->unk04 == 3);
+ return *FUN_02009934(param0);
+}
+
+THUMB_FUNC u32 FUN_020095A4(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0->unk04 == 4);
+ return *FUN_02009934(param0);
+}
+
+THUMB_FUNC u32 FUN_020095BC(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0->unk04 == 5);
+ return *FUN_02009934(param0);
+}
+
+THUMB_FUNC u32 FUN_020095D4(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+
+ return param0->unk04;
+}
+
+THUMB_FUNC u32 FUN_020095E4(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+
+ if (param0->unk04 == 0)
+ {
+ return FUN_02009934(param0)[1];
+ }
+ if (param0->unk04 == 1)
+ {
+ return FUN_02009934(param0)[1];
+ }
+
+ return 0;
+}
+
+THUMB_FUNC u32 FUN_02009610(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+
+ if (param0->unk04 == 1)
+ {
+ return FUN_02009934(param0)[2];
+ }
+
+ return 0;
+}
+
+THUMB_FUNC void FUN_02009630(struct UnkStruct_02008DEC_sub *param0, u32 param1)
+{
+ GF_ASSERT(param0);
+
+ if (param0->unk04 == 0)
+ {
+ FUN_02009934(param0)[1] = param1;
+ }
+ if (param0->unk04 == 1)
+ {
+ FUN_02009934(param0)[1] = param1;
+ }
+}
+
+THUMB_FUNC u32 FUN_0200965C(void)
+{
+ return 16;
+}
+
+THUMB_FUNC struct UnkStruct_02008DEC_2 *FUN_02009660(struct UnkStruct_02008DEC_2 *param0, s32 param1)
+{
+ return &param0[param1];
+}
+
+THUMB_FUNC void FUN_02009668(u32 *param0, struct UnkStruct_02008DEC_2 *param1, u32 param2)
+{
+ GF_ASSERT(param1);
+
+ param1->unk08 = param0[0];
+ param1->unk0C = 1;
+
+ param1->unk04 = FUN_020099E8((struct UnkStruct_02008DEC_4 *)(param0 + 1));
+
+ if (param1->unk04 > 0)
+ {
+ param1->unk00_4 = AllocFromHeap(param2, param1->unk04 * sizeof(struct UnkStruct_02008DEC_4));
+ }
+ else
+ {
+ param1->unk00_4 = NULL;
+ }
+
+ if (param1->unk00_4 != NULL)
+ {
+ memcpy(param1->unk00_4, param0 + 1, param1->unk04 * sizeof(struct UnkStruct_02008DEC_4));
+ }
+}
+
+THUMB_FUNC void FUN_020096B4(struct UnkStruct_02008DEC_2 *param0)
+{
+ if (param0->unk00_4)
+ {
+ FreeToHeap(param0->unk00_4);
+ }
+ param0->unk00_4 = NULL;
+ param0->unk04 = 0;
+}
+
+THUMB_FUNC s32 FUN_020096CC(struct UnkStruct_02008DEC_2 *param0)
+{
+ GF_ASSERT(param0);
+
+ return param0->unk04;
+}
+
+THUMB_FUNC s32 FUN_020096DC(struct UnkStruct_02008DEC_2 *param0, s32 param1)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk04 > param1);
+
+ if (param0->unk0C == 0)
+ {
+ return param0->unk00_3[param1].unk00;
+ }
+
+ return param0->unk00_4[param1].unk0C;
+}
+
+THUMB_FUNC s32 FUN_02009710(struct UnkStruct_02008DEC_2 *param0, s32 param1)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk04 > param1);
+
+ s32 r6;
+ if (param0->unk0C == 1)
+ {
+ r6 = param0->unk00_4[param1].unk04;
+ }
+
+ // oops, UB here
+ return r6;
+}
+
+THUMB_FUNC BOOL FUN_0200973C(struct UnkStruct_02008DEC_2 *param0, s32 param1)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk04 > param1);
+
+ BOOL r6;
+ if (param0->unk0C == 1)
+ {
+ r6 = param0->unk00_4[param1].unk08;
+ }
+
+ // oops, UB here
+ return r6;
+}
+
+THUMB_FUNC u32 FUN_02009768(struct UnkStruct_02008DEC_2 *param0, s32 param1)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk04 > param1);
+
+ if (param0->unk0C == 0)
+ {
+ return param0->unk00_3[param1].unk44;
+ }
+
+ return param0->unk00_4[param1].unk10;
+}
+
+THUMB_FUNC u32 FUN_0200979C(struct UnkStruct_02008DEC_2 *param0, s32 param1)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk04 > param1);
+
+ if (param0->unk0C == 0)
+ {
+ return param0->unk00_3[param1].unk48;
+ }
+
+ return param0->unk00_4[param1].unk14;
+}
+
+THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_020097D0(struct UnkStruct_02008DEC_1 *param0)
+{
+ for (int i = 0; i < param0->unk08; i++)
+ {
+ if (param0->unk04[i].unk00 == 0)
+ {
+ return &param0->unk04[i];
+ }
+ }
+
+ return NULL;
+}
+
+THUMB_FUNC void FUN_020097FC(
+ struct UnkStruct_02008DEC_sub *param0, u32 param1, u32 param2, u32 param3, u32 param4)
+{
+ void *r0 = FUN_02020E0C(param0->unk00);
+
+ switch (param1)
+ {
+ case 0:
+ param0->unk08 = FUN_0200986C(r0, param2, param4);
+ break;
+ case 1:
+ param0->unk08 = FUN_0200988C(r0, param2, param3, param4);
+ break;
+ case 2:
+ param0->unk08 = FUN_020098B0(r0, param4);
+ break;
+ case 3:
+ param0->unk08 = FUN_020098CC(r0, param4);
+ break;
+ case 4:
+ param0->unk08 = FUN_020098E8(r0, param4);
+ break;
+ case 5:
+ param0->unk08 = FUN_02009904(r0, param4);
+ break;
+ }
+}
+
+THUMB_FUNC struct CharacterData_02008DEC *FUN_0200986C(void *param0, u32 param1, u32 param2)
+{
+ struct CharacterData_02008DEC *ptr =
+ AllocFromHeap(param2, sizeof(struct CharacterData_02008DEC));
+
+ NNS_G2dGetUnpackedCharacterData(param0, &ptr->chData);
+ ptr->unk04 = param1;
+
+ return ptr;
+}
+
+THUMB_FUNC struct PaletteData_02008DEC *FUN_0200988C(
+ void *param0, u32 param1, u32 param2, u32 param3)
+{
+ struct PaletteData_02008DEC *ptr = AllocFromHeap(param3, sizeof(struct PaletteData_02008DEC));
+
+ NNS_G2dGetUnpackedPaletteData(param0, &ptr->plttData);
+ ptr->unk04 = param1;
+ ptr->unk08 = param2;
+
+ return ptr;
+}
+
+THUMB_FUNC struct CellDataBank_02008DEC *FUN_020098B0(void *param0, u32 param1)
+{
+ struct CellDataBank_02008DEC *ptr = AllocFromHeap(param1, sizeof(struct CellDataBank_02008DEC));
+
+ NNS_G2dGetUnpackedCellBank(param0, &ptr->cellBank);
+
+ return ptr;
+}
+
+THUMB_FUNC struct AnimBank_02008DEC *FUN_020098CC(void *param0, u32 param1)
+{
+ struct AnimBank_02008DEC *ptr = AllocFromHeap(param1, sizeof(struct AnimBank_02008DEC));
+
+ NNS_G2dGetUnpackedAnimBank(param0, &ptr->bankData);
+
+ return ptr;
+}
+
+THUMB_FUNC void *FUN_020098E8(void *param0, u32 param1)
+{
+ void *ptr = AllocFromHeap(param1, 4);
+
+ NNS_G2dGetUnpackedMultiCellBank(param0, ptr);
+
+ return ptr;
+}
+
+THUMB_FUNC void *FUN_02009904(void *param0, u32 param1)
+{
+ void *ptr = AllocFromHeap(param1, 4);
+
+ NNS_G2dGetUnpackedMCAnimBank(param0, ptr);
+
+ return ptr;
+}
+
+THUMB_FUNC void FUN_02009920(struct UnkStruct_02008DEC_sub *param0)
+{
+ if (param0->unk08 != NULL)
+ {
+ FreeToHeap(param0->unk08);
+ }
+
+ param0->unk08 = NULL;
+}
+
+THUMB_FUNC u32 *FUN_02009934(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk08);
+
+ return param0->unk08;
+}
+
+THUMB_FUNC void FUN_0200994C(struct UnkStruct_02008DEC_1 *param0,
+ struct UnkStruct_02008DEC_sub *param1,
+ void *param2,
+ s32 param3,
+ u32 param4,
+ u32 param5,
+ u32 param6,
+ u32 param7)
+{
+ param1->unk00 = FUN_02020D10(param0->unk00, param2, param3, param7);
+ param1->unk04 = param6;
+ FUN_020097FC(param1, param6, param4, param5, param7);
+}
+
+THUMB_FUNC void FUN_02009978(struct UnkStruct_02008DEC_1 *param0,
+ struct UnkStruct_02008DEC_sub *param1,
+ NarcId param2,
+ s32 param3,
+ BOOL param4,
+ s32 param5,
+ u32 param6,
+ u32 param7,
+ u32 param8,
+ u32 param9,
+ BOOL param10)
+{
+ void *r1 = GfGfxLoader_LoadFromNarc(param2, param3, param4, param9, param10);
+ param1->unk00 = FUN_02020CD4(param0->unk00, r1, param5);
+ param1->unk04 = param8;
+
+ FUN_020097FC(param1, param8, param6, param7, param9);
+}
+
+THUMB_FUNC void FUN_020099B0(struct UnkStruct_02008DEC_1 *param0,
+ struct UnkStruct_02008DEC_sub *param1,
+ NARC *param2,
+ u32 param3,
+ u32 param4,
+ s32 param5,
+ u32 param6,
+ u32 param7,
+ u32 param8,
+ u32 param9,
+ u32 param10)
+{
+ param1->unk00 =
+ FUN_02020CD4(param0->unk00, FUN_02009A04(param2, param3, param4, param9, param10), param5);
+ param1->unk04 = param8;
+
+ FUN_020097FC(param1, param8, param6, param7, param9);
+}
+
+THUMB_FUNC s32 FUN_020099E8(struct UnkStruct_02008DEC_4 *param0)
+{
+ s32 r3 = 0;
+ while (param0[r3].unk00 != -2)
+ {
+ r3++;
+ }
+
+ return r3;
+}
+
+THUMB_FUNC void *FUN_02009A04(NARC *param0, u32 param1, u32 param2, u32 param3, u32 param4)
+{
+ void *r4 = NARC_AllocAndReadWholeMember(param0, param1, param3);
+
+ if (r4 != NULL && param2 != 0)
+ {
+ void *ptr;
+ if (param4 == 0)
+ {
+ ptr = AllocFromHeap(param3, (*(u32 *)r4) >> 8);
+ }
+ else
+ {
+ ptr = AllocFromHeapAtEnd(param3, (*(u32 *)r4) >> 8);
+ }
+
+ if (ptr != NULL)
+ {
+ MI_UncompressLZ8(r4, ptr);
+ FreeToHeap(r4);
+ }
+
+ r4 = ptr;
+ }
+
+ return r4;
+}
+
+THUMB_FUNC u32 FUN_02009A50(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(FUN_020095D4(param0) == 0);
+
+ u32 st0[4];
+ st0[0] = FUN_02009544(param0);
+ st0[1] = FUN_020095E4(param0);
+ st0[2] = (u32)FUN_02009530(param0);
+ st0[3] = 0;
+
+ return FUN_0201D1F8(st0);
+}
+
+THUMB_FUNC void FUN_02009A90(struct UnkStruct_02008DEC_5 *param0)
+{
+ GF_ASSERT(param0);
+
+ for (int i = 0; i < param0->unk04; i++)
+ {
+ GF_ASSERT(param0->unk00[i] == NULL || FUN_02009A50(param0->unk00[i]) != 0);
+ }
+}
+
+THUMB_FUNC u32 FUN_02009AC4(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(FUN_020095D4(param0) == 0);
+
+ u32 st0[4];
+ st0[0] = FUN_02009544(param0);
+ st0[1] = FUN_020095E4(param0);
+ st0[2] = (u32)FUN_02009530(param0);
+ st0[3] = 0;
+
+ return FUN_0201D250(st0);
+}
+
+THUMB_FUNC u32 FUN_02009B04(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(FUN_020095D4(param0) == 0);
+
+ u32 st0[4];
+ st0[0] = FUN_02009544(param0);
+ st0[1] = FUN_020095E4(param0);
+ st0[2] = (u32)FUN_02009530(param0);
+ st0[3] = 1;
+
+ return FUN_0201D1F8(st0);
+}
+
+THUMB_FUNC void FUN_02009B44(struct UnkStruct_02008DEC_5 *param0)
+{
+ GF_ASSERT(param0);
+
+ for (int i = 0; i < param0->unk04; i++)
+ {
+ GF_ASSERT(param0->unk00[i] == NULL || FUN_02009B04(param0->unk00[i]) != 0);
+ }
+}
+
+THUMB_FUNC u32 FUN_02009B78(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(FUN_020095D4(param0) == 0);
+
+ u32 st0[4];
+ st0[0] = FUN_02009544(param0);
+ st0[1] = FUN_020095E4(param0);
+ st0[2] = (u32)FUN_02009530(param0);
+ st0[3] = 1;
+
+ return FUN_0201D250(st0);
+}
+
+THUMB_FUNC void FUN_02009BB8(struct UnkStruct_02008DEC_sub *param0, struct UnkStruct_02008DEC_sub *param1)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(param1);
+
+ FUN_0201D2DC(FUN_02009530(param0), FUN_02009544(param1));
+}
+
+THUMB_FUNC void FUN_02009BE8(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+
+ FUN_0201D2DC(FUN_02009530(param0), FUN_02009544(param0));
+}
+
+THUMB_FUNC void FUN_02009C0C(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(FUN_020095D4(param0) == 0);
+
+ FUN_0201D324(FUN_02009530(param0));
+}
+
+THUMB_FUNC void FUN_02009C30(struct UnkStruct_02008DEC_5 *param0)
+{
+ GF_ASSERT(param0);
+ for (int i = 0; i < param0->unk04; i++)
+ {
+ if (param0->unk00[i] != NULL)
+ {
+ FUN_02009C0C(param0->unk00[i]);
+ }
+ }
+}
+
+THUMB_FUNC u32 FUN_02009C5C(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(FUN_020095D4(param0) == 0);
+
+ return FUN_0201D3B0(FUN_02009530(param0));
+}
+
+THUMB_FUNC u32 FUN_02009C80(struct UnkStruct_02008DEC_sub *param0, struct UnkStruct_02008DEC_sub *param1)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(FUN_020095D4(param0) == 0);
+ GF_ASSERT(param1);
+ GF_ASSERT(FUN_020095D4(param1) == 2);
+
+ s32 r4 = FUN_02009530(param0);
+
+ u32 r0 = FUN_0201D3D4(r4, ((u32 **)FUN_02009574(param1))[3][0]);
+ if (r0 == 0)
+ {
+ return FUN_0201D458(FUN_0201D3B0(r4));
+ }
+
+ return r0;
+}
+
+THUMB_FUNC void FUN_02009CDC(u32 param0)
+{
+ GF_ASSERT(param0);
+
+ FUN_0201D4F0(param0);
+}
+
+THUMB_FUNC u32 FUN_02009CF0(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(FUN_020095D4(param0) == 1);
+
+ u32 st0[4];
+ st0[0] = FUN_0200955C(param0);
+ st0[1] = FUN_020095E4(param0);
+ st0[3] = (u32)FUN_02009530(param0);
+ st0[2] = FUN_02009610(param0);
+
+ return FUN_0201E0E4(st0);
+}
+
+THUMB_FUNC void FUN_02009D34(struct UnkStruct_02008DEC_5 *param0)
+{
+ GF_ASSERT(param0);
+ for (int i = 0; i < param0->unk04; i++)
+ {
+ if (param0->unk00[i] != NULL)
+ {
+ GF_ASSERT(FUN_02009CF0(param0->unk00[i]) != 0);
+ }
+ }
+}
+
+THUMB_FUNC u32 FUN_02009D68(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(FUN_020095D4(param0) == 1);
+
+ u32 st0[4];
+ st0[0] = FUN_0200955C(param0);
+ st0[1] = FUN_020095E4(param0);
+ st0[3] = (u32)FUN_02009530(param0);
+ st0[2] = FUN_02009610(param0);
+
+ return FUN_0201E128(st0);
+}
+
+THUMB_FUNC void FUN_02009DAC(struct UnkStruct_02008DEC_5 *param0)
+{
+ GF_ASSERT(param0);
+ for (int i = 0; i < param0->unk04; i++)
+ {
+ if (param0->unk00[i] != NULL)
+ {
+ GF_ASSERT(FUN_02009D68(param0->unk00[i]) != 0);
+ }
+ }
+}
+
+THUMB_FUNC void FUN_02009DE0(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+
+ FUN_0201E168(FUN_02009530(param0), FUN_0200955C(param0));
+}
+
+THUMB_FUNC void FUN_02009E04(struct UnkStruct_02008DEC_sub *param0)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(FUN_020095D4(param0) == 1);
+
+ FUN_0201E1C8(FUN_02009530(param0));
+}
+
+THUMB_FUNC void FUN_02009E28(struct UnkStruct_02008DEC_5 *param0)
+{
+ GF_ASSERT(param0);
+ for (int i = 0; i < param0->unk04; i++)
+ {
+ if (param0->unk00[i] != NULL)
+ {
+ FUN_02009E04(param0->unk00[i]);
+ }
+ }
+}
+
+THUMB_FUNC u32 FUN_02009E54(struct UnkStruct_02008DEC_sub *param0, u32 param1)
+{
+ GF_ASSERT(param0);
+ GF_ASSERT(FUN_020095D4(param0) == 1);
+
+ s32 r0 = FUN_02009530(param0);
+ if (param1 != 0)
+ {
+ return FUN_0201E258(r0, param1);
+ }
+
+ return FUN_0201E230(r0);
+}
+
+THUMB_FUNC s32 FUN_02009E88(struct UnkStruct_02008DEC_sub *param0, u32 param1)
+{
+ s32 ret = NNS_G2dGetImagePaletteLocation(FUN_02009E54(param0, 0), param1);
+ if (ret != -1)
+ {
+ return ret / 32;
+ }
+
+ return ret;
+}
diff --git a/arm9/src/unk_0200BB14.c b/arm9/src/unk_0200BB14.c
index ac8d048e..95a854d7 100644
--- a/arm9/src/unk_0200BB14.c
+++ b/arm9/src/unk_0200BB14.c
@@ -3,6 +3,7 @@
#include "game_init.h"
#include "heap.h"
#include "unk_02008AA4.h"
+#include "unk_02008DEC.h"
extern void FUN_0201D060(u32 *param0, u32 param1, u32 param2);
extern void FUN_0201E00C(u32 param0, u32 param1);
@@ -24,44 +25,15 @@ extern void FUN_0201FDEC(u32 param0);
extern void FUN_02009F80();
extern void FUN_0201C348();
extern void FUN_0201FD58(u32 param0);
-extern u32 FUN_02009660(u32 *param0, s32 param1);
-extern void FUN_020096B4(u32 param0);
-extern void FUN_02009C30(u32 *param0);
-extern void FUN_02009E28(u32 *param0);
-extern void FUN_02009448(u32 *param0);
-extern void FUN_02008E2C(u32 param0);
extern void FUN_0201C350(u32 param0);
extern void FUN_0201D12C();
extern void FUN_0201E08C();
extern void FUN_02009FA0();
-extern u32 FUN_0200965C(s32 param0);
-extern void FUN_02009668(void *param0, u32 param1, u32 param2);
-extern u32 FUN_020096CC(u32 param0);
-extern u32 FUN_02008DEC(u32 param0, s32 param1, u32 param2);
-extern u32 *FUN_02009424(u32 param0, u32 param1);
-extern u32 FUN_020093A8(u32 param0, u32 param1, u32 *param2, u32 param3);
-extern void FUN_02009A90(u32 *param0);
-extern void FUN_02009D34(u32 *param0);
extern u32 FUN_0201FE94(struct UnkStruct_0200BB14_4 *param0);
extern void FUN_02020130(u32 param0, u32 param1);
extern void FUN_02020248(u32 param0, u32 param1);
-extern u32 FUN_0200945C(u32 param0, s32 param1);
-extern u32 FUN_02008F34(
- u32 param0, u32 param1, u32 param2, u32 param3, s32 param4, u32 param5, u32 param6);
-extern void FUN_02009B04(u32 param0);
-extern u32 FUN_02008FEC(
- u32 param0, u32 param1, u32 param2, u32 param3, s32 param4, u32 param5, u32 param6, u32 param7);
-extern u32 FUN_02009D68(u32 param0);
-extern u32 FUN_02009E88(u32 param0, u32 param1);
extern void FUN_02003108(u32 param0, u32 param1, u16 param2, u32 param3);
extern u8 FUN_020202A0(u32 param0);
-extern u32 FUN_020094F0(u32 param0, u32 param1);
-extern u32 FUN_02009E54(u32 param0, u32 param1);
-extern void FUN_02009CDC(u32 param0);
-extern u32 FUN_020090AC(
- u32 param0, u32 param1, u32 param2, u32 param3, s32 param4, u32 param5, u32 param6);
-extern u32 FUN_02009530(u32 param0);
-extern void FUN_02009490(u32 param0, u32 param1);
extern void FUN_0201D324(u32 param0);
extern void FUN_0201E1C8(u32 param0);
extern void FUN_020201E4(u32 param0, u32 param1);
@@ -91,12 +63,6 @@ extern void FUN_02020100(u32 param0, u32 param1);
extern void FUN_02020054(u32 param0, u32 *param1);
extern void FUN_02020358(u32 param0, u32 param1);
extern void FUN_02020398(u32 param0, u32 param1);
-extern void FUN_02009AC4(u32 param0);
-extern void FUN_02009B78(u32 param0);
-extern void FUN_020090FC(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5);
-extern void FUN_02009BE8(u32 param0);
-extern void FUN_02009168(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5);
-extern void FUN_02009DE0(u32 param0);
THUMB_FUNC struct UnkStruct_0200BB14_1 *FUN_0200BB14(u32 heap_id)
{
@@ -293,12 +259,12 @@ THUMB_FUNC BOOL FUN_0200BD20(
}
param1->unk54 = st14;
- u32 r2 = FUN_0200965C(st14);
+ u32 r2 = FUN_0200965C();
param1->unk08 = AllocFromHeap(param0->unk000, r2 * st14);
for (s32 i = 0; i < st14; i++)
{
- u32 st18 = FUN_02009660(param1->unk08, i);
+ struct UnkStruct_02008DEC_2 *st18 = FUN_02009660(param1->unk08, i);
void *st1c = AllocAndReadFile(param0->unk000, st10[i]);
FUN_02009668(st1c, st18, param0->unk000);
@@ -313,7 +279,7 @@ THUMB_FUNC BOOL FUN_0200BD20(
for (s32 i = 0; i < st14; i++)
{
- u32 st20 = FUN_02009660(param1->unk08, i);
+ struct UnkStruct_02008DEC_2 *st20 = FUN_02009660(param1->unk08, i);
param1->unk24[i] = FUN_02009424(FUN_020096CC(st20), param0->unk000);
param1->unk3c[i] = FUN_020093A8(param1->unk0c[i], st20, param1->unk24[i], param0->unk000);
}
@@ -432,7 +398,7 @@ THUMB_FUNC u32 FUN_0200BE74(u32 *param0,
}
THUMB_FUNC BOOL FUN_0200BF60(
- struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, u32 *param2)
+ struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, s32 *param2)
{
struct UnkStruct_0200BB14_1 *st0 = param0;
s32 i;
@@ -462,9 +428,9 @@ THUMB_FUNC BOOL FUN_0200BF60(
param1->unk24[i] = FUN_02009424(param2[i], st0->unk000);
param1->unk3c[i] = 0;
- for (s32 j = 0; j < (s32)param1->unk24[i][1]; j++)
+ for (s32 j = 0; j < param1->unk24[i]->unk04; j++)
{
- ((u32 *)param1->unk24[i][0])[j] = 0;
+ param1->unk24[i]->unk00[j] = NULL;
}
}
}
@@ -474,9 +440,9 @@ THUMB_FUNC BOOL FUN_0200BF60(
THUMB_FUNC BOOL FUN_0200C00C(u32 *param0,
struct UnkStruct_0200BB14_2 *param1,
- u32 param2,
- u32 param3,
- u32 param4,
+ NarcId param2,
+ s32 param3,
+ BOOL param4,
u32 param5,
s32 param6)
{
@@ -485,8 +451,8 @@ THUMB_FUNC BOOL FUN_0200C00C(u32 *param0,
return FALSE;
}
- u32 r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]);
- if (r5 != 0)
+ struct UnkStruct_02008DEC_sub *r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]);
+ if (r5 != NULL)
{
FUN_02009B04(r5);
FUN_0200C474(param1->unk24[0], r5);
@@ -494,14 +460,14 @@ THUMB_FUNC BOOL FUN_0200C00C(u32 *param0,
}
GF_ASSERT(0);
- return r5 != 0 ? TRUE : FALSE;
+ return r5 != NULL ? TRUE : FALSE;
}
THUMB_FUNC s32 FUN_0200C06C(u32 *param0,
struct UnkStruct_0200BB14_2 *param1,
- u32 param2,
- u32 param3,
- u32 param4,
+ NarcId param2,
+ s32 param3,
+ BOOL param4,
u32 param5,
u32 param6,
s32 param7)
@@ -511,16 +477,16 @@ THUMB_FUNC s32 FUN_0200C06C(u32 *param0,
return -1;
}
- u32 r5 =
+ struct UnkStruct_02008DEC_sub * r5 =
FUN_02008FEC(param1->unk0c[1], param2, param3, param4, param7, param6, param5, param0[0]);
- if (r5 != 0)
+ if (r5 != NULL)
{
GF_ASSERT(FUN_02009D68(r5) == 1);
FUN_0200C474(param1->unk24[1], r5);
return (s8)FUN_02009E88(r5, param6);
}
- GF_ASSERT(0);
+ GF_ASSERT(FALSE);
return -1;
}
@@ -528,9 +494,9 @@ THUMB_FUNC u8 FUN_0200C0DC(u32 param0,
u32 param1,
u32 *param2,
struct UnkStruct_0200BB14_2 *param3,
- u32 param4,
- u32 param5,
- u32 param6,
+ NarcId param4,
+ s32 param5,
+ BOOL param6,
u32 param7,
u32 param8,
s32 param9)
@@ -546,9 +512,9 @@ THUMB_FUNC u8 FUN_0200C0DC(u32 param0,
THUMB_FUNC BOOL FUN_0200C124(u32 *param0,
struct UnkStruct_0200BB14_2 *param1,
- u32 param2,
- u32 param3,
- u32 param4,
+ NarcId param2,
+ s32 param3,
+ BOOL param4,
s32 param5)
{
return FUN_0200C404(param0, param1, param2, param3, param4, 2, param5);
@@ -556,9 +522,9 @@ THUMB_FUNC BOOL FUN_0200C124(u32 *param0,
THUMB_FUNC BOOL FUN_0200C13C(u32 *param0,
struct UnkStruct_0200BB14_2 *param1,
- u32 param2,
- u32 param3,
- u32 param4,
+ NarcId param2,
+ s32 param3,
+ BOOL param4,
s32 param5)
{
return FUN_0200C404(param0, param1, param2, param3, param4, 3, param5);
@@ -698,12 +664,12 @@ THUMB_FUNC struct UnkStruct_0200BB14_5 *FUN_0200C154(
return ptr;
}
-THUMB_FUNC u32 FUN_0200C334(u32 *param0, u32 param1)
+THUMB_FUNC u32 FUN_0200C334(struct UnkStruct_02008DEC_1 **param0, s32 param1)
{
return FUN_02009E54(FUN_020094F0(param0[4], param1), 0);
}
-THUMB_FUNC u32 FUN_0200C344(u32 *param0, u32 param1, u32 param2)
+THUMB_FUNC s32 FUN_0200C344(struct UnkStruct_02008DEC_1 **param0, s32 param1, u32 param2)
{
return FUN_02009E88(FUN_020094F0(param0[4], param1), param2);
}
@@ -752,15 +718,15 @@ THUMB_FUNC void FUN_0200C3DC(u32 *param0)
}
FUN_0201FFC8(param0[0]);
- FUN_02008C80(param0[2]);
+ FUN_02008C80((struct UnkStruct_02008AA4_1 *)param0[2]);
FreeToHeap(param0);
}
THUMB_FUNC BOOL FUN_0200C404(u32 *param0,
struct UnkStruct_0200BB14_2 *param1,
- u32 param2,
- u32 param3,
- u32 param4,
+ NarcId param2,
+ s32 param3,
+ BOOL param4,
u32 param5,
s32 param6)
{
@@ -769,25 +735,25 @@ THUMB_FUNC BOOL FUN_0200C404(u32 *param0,
return FALSE;
}
- u32 r5 = FUN_020090AC(param1->unk0c[param5], param2, param3, param4, param6, param5, param0[0]);
- if (r5 != 0)
+ struct UnkStruct_02008DEC_sub *r5 = FUN_020090AC(param1->unk0c[param5], param2, param3, param4, param6, param5, param0[0]);
+ if (r5 != NULL)
{
BOOL r4 = FUN_0200C474(param1->unk24[param5], r5);
GF_ASSERT(r4 == TRUE);
return r4;
}
GF_ASSERT(0);
- return r5 != 0 ? TRUE : FALSE;
+ return r5 != NULL ? TRUE : FALSE;
}
-THUMB_FUNC BOOL FUN_0200C474(u32 *param0, u32 param1)
+THUMB_FUNC BOOL FUN_0200C474(struct UnkStruct_02008DEC_5 *param0, struct UnkStruct_02008DEC_sub *param1)
{
- for (s32 i = 0; i < (s32)param0[1]; i++)
+ for (s32 i = 0; i < param0->unk04; i++)
{
- if (((u32 *)param0[0])[i] == 0)
+ if (param0->unk00[i] == NULL)
{
- ((u32 *)param0[0])[i] = param1;
- param0[2]++;
+ param0->unk00[i] = param1;
+ param0->unk08++;
return TRUE;
}
}
@@ -795,19 +761,19 @@ THUMB_FUNC BOOL FUN_0200C474(u32 *param0, u32 param1)
return FALSE;
}
-THUMB_FUNC BOOL FUN_0200C4A8(u32 param0, u32 *param1, u32 param2)
+THUMB_FUNC BOOL FUN_0200C4A8(struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_5 *param1, u32 param2)
{
- for (s32 i = 0; i < (s32)param1[1]; i++)
+ for (s32 i = 0; i < param1->unk04; i++)
{
- if (((u32 *)param1[0])[i] != 0)
+ if (param1->unk00[i] != 0)
{
- u32 r0 = FUN_02009530(((u32 *)param1[0])[i]);
+ s32 r0 = FUN_02009530(param1->unk00[i]);
if (r0 == param2)
{
- FUN_02009490(param0, ((u32 *)param1[0])[i]);
- ((u32 *)param1[0])[i] = 0;
- param1[2]--;
+ FUN_02009490(param0, param1->unk00[i]);
+ param1->unk00[i] = NULL;
+ param1->unk08--;
return TRUE;
}
@@ -817,20 +783,20 @@ THUMB_FUNC BOOL FUN_0200C4A8(u32 param0, u32 *param1, u32 param2)
return FALSE;
}
-THUMB_FUNC BOOL FUN_0200C4F4(u32 param0, u32 *param1, u32 param2)
+THUMB_FUNC BOOL FUN_0200C4F4(struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_5 *param1, u32 param2)
{
- for (s32 i = 0; i < (s32)param1[1]; i++)
+ for (s32 i = 0; i < param1->unk04; i++)
{
- if (((u32 *)param1[0])[i] != 0)
+ if (param1->unk00[i] != NULL)
{
- u32 r0 = FUN_02009530(((u32 *)param1[0])[i]);
+ s32 r0 = FUN_02009530(param1->unk00[i]);
if (r0 == param2)
{
FUN_0201D324(param2);
- FUN_02009490(param0, ((u32 *)param1[0])[i]);
- ((u32 *)param1[0])[i] = 0;
- param1[2]--;
+ FUN_02009490(param0, param1->unk00[i]);
+ param1->unk00[i] = NULL;
+ param1->unk08--;
return TRUE;
}
@@ -840,20 +806,20 @@ THUMB_FUNC BOOL FUN_0200C4F4(u32 param0, u32 *param1, u32 param2)
return FALSE;
}
-THUMB_FUNC BOOL FUN_0200C548(u32 param0, u32 *param1, u32 param2)
+THUMB_FUNC BOOL FUN_0200C548(struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_5 *param1, u32 param2)
{
- for (s32 i = 0; i < (s32)param1[1]; i++)
+ for (s32 i = 0; i < param1->unk04; i++)
{
- if (((u32 *)param1[0])[i] != 0)
+ if (param1->unk00[i] != 0)
{
- u32 r0 = FUN_02009530(((u32 *)param1[0])[i]);
+ s32 r0 = FUN_02009530(param1->unk00[i]);
if (r0 == param2)
{
FUN_0201E1C8(param2);
- FUN_02009490(param0, ((u32 *)param1[0])[i]);
- ((u32 *)param1[0])[i] = 0;
- param1[2]--;
+ FUN_02009490(param0, param1->unk00[i]);
+ param1->unk00[i] = NULL;
+ param1->unk08--;
return TRUE;
}
@@ -1205,9 +1171,9 @@ THUMB_FUNC void FUN_0200C90C(u32 *param0, u32 param1)
THUMB_FUNC BOOL FUN_0200C918(u32 *param0,
struct UnkStruct_0200BB14_2 *param1,
- u32 param2,
- u32 param3,
- u32 param4,
+ NarcId param2,
+ s32 param3,
+ BOOL param4,
u32 param5,
s32 param6)
{
@@ -1216,8 +1182,8 @@ THUMB_FUNC BOOL FUN_0200C918(u32 *param0,
return FALSE;
}
- u32 r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]);
- if (r5 != 0)
+ struct UnkStruct_02008DEC_sub *r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]);
+ if (r5 != NULL)
{
FUN_02009AC4(r5);
FUN_0200C474(param1->unk24[0], r5);
@@ -1225,15 +1191,15 @@ THUMB_FUNC BOOL FUN_0200C918(u32 *param0,
return TRUE;
}
- GF_ASSERT(0);
- return r5 != 0 ? TRUE : FALSE;
+ GF_ASSERT(FALSE);
+ return r5 != NULL ? TRUE : FALSE;
}
THUMB_FUNC BOOL FUN_0200C978(u32 *param0,
struct UnkStruct_0200BB14_2 *param1,
- u32 param2,
- u32 param3,
- u32 param4,
+ NarcId param2,
+ s32 param3,
+ BOOL param4,
u32 param5,
s32 param6)
{
@@ -1242,8 +1208,8 @@ THUMB_FUNC BOOL FUN_0200C978(u32 *param0,
return FALSE;
}
- u32 r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]);
- if (r5 != 0)
+ struct UnkStruct_02008DEC_sub *r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]);
+ if (r5 != NULL)
{
FUN_02009B78(r5);
FUN_0200C474(param1->unk24[0], r5);
@@ -1251,23 +1217,23 @@ THUMB_FUNC BOOL FUN_0200C978(u32 *param0,
return TRUE;
}
- GF_ASSERT(0);
- return r5 != 0 ? TRUE : FALSE;
+ GF_ASSERT(FALSE);
+ return r5 != NULL ? TRUE : FALSE;
}
THUMB_FUNC void FUN_0200C9D8(
- u32 *param0, u32 *param1, u32 param2, u32 param3, u32 param4, u32 param5)
+ u32 *param0, struct UnkStruct_02008DEC_1 **param1, NarcId param2, s32 param3, BOOL param4, s32 param5)
{
- u32 r6 = FUN_020094F0(param1[3], param5);
+ struct UnkStruct_02008DEC_sub *r6 = FUN_020094F0(param1[3], param5);
FUN_020090FC(param1[3], r6, param2, param3, param4, param0[0]);
FUN_02009BE8(r6);
}
THUMB_FUNC void FUN_0200CA0C(
- u32 *param0, u32 *param1, u32 param2, u32 param3, u32 param4, u32 param5)
+ u32 *param0, struct UnkStruct_02008DEC_1 **param1, NarcId param2, s32 param3, BOOL param4, s32 param5)
{
- u32 r6 = FUN_020094F0(param1[4], param5);
+ struct UnkStruct_02008DEC_sub *r6 = FUN_020094F0(param1[4], param5);
FUN_02009168(param1[4], r6, param2, param3, param4, param0[0]);
FUN_02009DE0(r6);