summaryrefslogtreecommitdiff
path: root/arm9/src
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/src')
-rw-r--r--arm9/src/unk_0202F150.c4
-rw-r--r--arm9/src/unk_02031480.c213
-rw-r--r--arm9/src/unk_0205FA2C.c12
3 files changed, 219 insertions, 10 deletions
diff --git a/arm9/src/unk_0202F150.c b/arm9/src/unk_0202F150.c
index d36c5794..c728ddf1 100644
--- a/arm9/src/unk_0202F150.c
+++ b/arm9/src/unk_0202F150.c
@@ -1,4 +1,5 @@
#include "unk_0202F150.h"
+#include "unk_02031480.h"
struct
{
u8 unk00;
@@ -9,7 +10,6 @@ vu8 UNK_02105D58 = 4;
vu8 UNK_02105D59 = 4;
extern int FUN_02033534();
-extern void FUN_02031480(u32 param0);
extern void FUN_0202D7D8(u8 *param0, u32 param1, struct UnkStruct0202F150_sub1 *param2);
extern u32 FUN_0200CA60(void (*param0)(), u32 param1, u32 param2);
extern void FUN_0202D394(struct UnkStruct0202F150_sub1 *param0, u8 *param1, u32 param2);
@@ -19,7 +19,6 @@ extern void FUN_0202D330(void (*param0)(int));
extern u32 FUN_0202E66C(u32 param0, u32 param1);
extern void MOD04_021D83C0();
extern u32 FUN_0202E784();
-extern void FUN_020314D0();
extern void FUN_0202DBA4();
extern void FUN_0200CAB4(u32 param0);
extern void FUN_0202D824(u8 *param0);
@@ -30,7 +29,6 @@ extern void FUN_02031CDC();
extern void FUN_0202EBD0(u16 param0);
extern void FUN_0202ED70(u32 param0);
extern void FUN_020335F4(u32 param0);
-extern void FUN_020315A4();
extern void FUN_0202E538();
extern u32 MOD04_021D78FC(void *param0, u32 param1);
extern u32 FUN_0202CBD4();
diff --git a/arm9/src/unk_02031480.c b/arm9/src/unk_02031480.c
new file mode 100644
index 00000000..9639cd74
--- /dev/null
+++ b/arm9/src/unk_02031480.c
@@ -0,0 +1,213 @@
+#include "unk_02031480.h"
+
+struct UnkStruct_02031480
+{
+ u8 unk000[8][2];
+ u8 unk010[8];
+ u8 unk018[8][70];
+ u8 unk248[8];
+ u8 unk250;
+ u8 unk251;
+ u8 unk252;
+};
+
+static struct UnkStruct_02031480 *UNK_021C59FC;
+
+THUMB_FUNC void FUN_02031480(u32 heap_id)
+{
+ if (UNK_021C59FC == NULL)
+ {
+ UNK_021C59FC = AllocFromHeap(heap_id, sizeof(struct UnkStruct_02031480));
+ MI_CpuFill8(UNK_021C59FC, 0, sizeof(struct UnkStruct_02031480));
+ }
+
+ for (int i = 0; i < 8; i++)
+ {
+ UNK_021C59FC->unk010[i] = 0xff;
+ }
+ UNK_021C59FC->unk250 = 0xff;
+ UNK_021C59FC->unk251 = 0xff;
+ UNK_021C59FC->unk252 = 0x00;
+}
+
+THUMB_FUNC void FUN_020314D0()
+{
+ FreeToHeap(UNK_021C59FC);
+ UNK_021C59FC = NULL;
+}
+
+THUMB_FUNC BOOL FUN_020314E8()
+{
+ if (UNK_021C59FC != NULL)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_020314FC(u8 param0, u32 unused, u8 *param2)
+{
+#pragma unused(unused)
+ u8 st0[3];
+
+ st0[0] = param2[0];
+
+ if (FUN_02031190() == 0)
+ {
+
+ st0[1] = param0;
+ st0[2] = st0[0];
+
+ FUN_02030C4C(0x12, &st0[1]);
+
+ UNK_021C59FC->unk010[param0] = st0[0];
+
+ for (int i = 0; i < 8; i++)
+ {
+ if (FUN_02030E7C((u16)i) != 0)
+ {
+ if (st0[0] != UNK_021C59FC->unk010[i])
+ {
+ return;
+ }
+ }
+ }
+
+ FUN_02030C4C(0x11, &st0[0]);
+ }
+}
+
+THUMB_FUNC void FUN_02031560(u32 unused1, u32 unused2, u8 *param2)
+{
+#pragma unused(unused1)
+#pragma unused(unused2)
+ UNK_021C59FC->unk010[param2[0]] = param2[1];
+}
+
+THUMB_FUNC void FUN_02031574(u32 unused1, u32 unused2, u8 *param2)
+{
+#pragma unused(unused1)
+#pragma unused(unused2)
+ UNK_021C59FC->unk250 = *param2;
+}
+
+THUMB_FUNC void FUN_02031588(u8 param0)
+{
+ UNK_021C59FC->unk251 = param0;
+ UNK_021C59FC->unk252 = 1;
+}
+
+THUMB_FUNC void FUN_020315A4()
+{
+ if (UNK_021C59FC != NULL && UNK_021C59FC->unk252 != 0 &&
+ FUN_020311D0(0x10, &UNK_021C59FC->unk251))
+ {
+ UNK_021C59FC->unk252 = 0;
+ }
+}
+
+THUMB_FUNC BOOL FUN_020315D8(u8 param0)
+{
+ if (UNK_021C59FC == NULL)
+ {
+ return TRUE;
+ }
+
+ if (UNK_021C59FC->unk250 == param0)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC u8 FUN_020315FC(u8 index)
+{
+ return UNK_021C59FC->unk010[index];
+}
+
+THUMB_FUNC void FUN_0203160C(u32 param0, u32 unused, u8 *param2)
+{
+#pragma unused(unused)
+ UNK_021C59FC->unk000[param0][0] = param2[0];
+ UNK_021C59FC->unk000[param0][1] = param2[1];
+}
+
+THUMB_FUNC u32 FUN_02031628()
+{
+ return 2;
+}
+
+THUMB_FUNC void FUN_0203162C(u8 param0, u8 param1)
+{
+ u8 st0[2] = { param0, param1 };
+
+ FUN_020311D0(0x13, st0);
+}
+
+THUMB_FUNC int FUN_02031640(u32 param0, u8 param1)
+{
+ if (UNK_021C59FC == NULL)
+ {
+ return -1;
+ }
+
+ if (UNK_021C59FC->unk000[param0][0] == param1)
+ {
+ return UNK_021C59FC->unk000[param0][1];
+ }
+
+ return -1;
+}
+
+THUMB_FUNC void FUN_02031668()
+{
+ for (int i = 0; i < 8; i++)
+ {
+ MI_CpuFill8(UNK_021C59FC->unk000[i], 0, 2);
+ }
+}
+
+THUMB_FUNC void FUN_0203168C()
+{
+ for (int i = 0; i < 8; i++)
+ {
+ UNK_021C59FC->unk248[i] = 0;
+ }
+}
+
+THUMB_FUNC BOOL FUN_020316AC(u32 param0, void *param1)
+{
+ if (UNK_021C59FC != NULL)
+ {
+ MI_CpuCopy8(param1, UNK_021C59FC->unk018[param0], 0x46);
+ FUN_020311D0(0x14, UNK_021C59FC->unk018[param0]);
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC u8 *FUN_020316E0(int param0)
+{
+ if (UNK_021C59FC->unk248[param0] != 0)
+ {
+ return UNK_021C59FC->unk018[param0];
+ }
+
+ return NULL;
+}
+
+THUMB_FUNC void FUN_02031704(u32 param0, u32 unused, void *param2)
+{
+#pragma unused(unused)
+ UNK_021C59FC->unk248[param0] = 1;
+ MI_CpuCopy8(param2, UNK_021C59FC->unk018[param0], 0x46);
+}
+
+THUMB_FUNC u32 FUN_02031730()
+{
+ return 0x46;
+}
diff --git a/arm9/src/unk_0205FA2C.c b/arm9/src/unk_0205FA2C.c
index 7bcdf950..9c4d7c8f 100644
--- a/arm9/src/unk_0205FA2C.c
+++ b/arm9/src/unk_0205FA2C.c
@@ -8,11 +8,9 @@ extern void FUN_0207C2A4(struct UnkPlayerStruct2_0205FA2C *ptr, struct PlayerDat
extern u32 FUN_0203384C(u32 *param0);
extern u32 *FUN_02038790(struct UnkStruct_0204639C *param0, u16 param1, u16 param2);
extern u16 *GetVarPointer(struct UnkSavStruct80 *arg, u16);
-extern u32 FUN_02031190();
-extern u32 FUN_020316E0(u32 param0);
-extern u16 MOD06_02244660(struct UnkStruct_0204639C *param0, u32 param1);
-extern u16 MOD06_022446BC(struct UnkStruct_0204639C *param0, u32 param1);
-extern u16 MOD06_022446E0(struct UnkStruct_0204639C *param0, u32 param1);
+extern u16 MOD06_02244660(struct UnkStruct_0204639C *param0, u8 *param1);
+extern u16 MOD06_022446BC(struct UnkStruct_0204639C *param0, u8 *param1);
+extern u16 MOD06_022446E0(struct UnkStruct_0204639C *param0, u8 *param1);
extern void FUN_0202A5CC(u32 param0, u32 param1);
extern u32 FUN_0202A5D0(u32 param0);
extern u32 FUN_0202A150(struct UnkStruct_02029FB0 *param0, u32 param1);
@@ -282,8 +280,8 @@ THUMB_FUNC int FUN_0205FD70(struct UnkStruct_0204639C *param0)
{
struct UnkStruct_0204639C *res = FUN_02046528(param0);
u16 *res2 = (u16 *)FUN_0204652C(param0);
- u32 res3 = FUN_020316E0(1 - FUN_02031190());
- if (res3 == 0)
+ u8 *res3 = FUN_020316E0(1 - FUN_02031190());
+ if (res3 == NULL)
{
return 0;
}