summaryrefslogtreecommitdiff
path: root/arm9/modules/21/src/mod21_02254854_src.c
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/modules/21/src/mod21_02254854_src.c')
-rw-r--r--arm9/modules/21/src/mod21_02254854_src.c66
1 files changed, 60 insertions, 6 deletions
diff --git a/arm9/modules/21/src/mod21_02254854_src.c b/arm9/modules/21/src/mod21_02254854_src.c
index 870efa17..f7fbe221 100644
--- a/arm9/modules/21/src/mod21_02254854_src.c
+++ b/arm9/modules/21/src/mod21_02254854_src.c
@@ -3,24 +3,37 @@
#include "unk_0200CA44.h"
#include "mod21_02254854.h"
-extern void MOD21_02254930(void *, void *);
-
extern void GF_RTC_CopyTime(u32 *param0);
-extern void MOD21_02254D80();
-extern void MOD21_02254974();
+u8 const MOD21_02254D80[] = { 0x10, 0xAF, 0x10, 0xCF };
extern BOOL MOD21_02254A6C(u32 *param0, u32 *param1);
extern BOOL MOD20_02254130(void *param0, BOOL param1, void *param2, UnkStruct02254854 *param3, u32 param4);
+extern void MOD20_02252C14(u32 param0, BOOL param1);
+
+extern u32 MOD21_022549A4(UnkStruct02254854 *);
+extern u32 MOD21_022549E4(UnkStruct02254854 *);
+extern u32 MOD21_02254A38(UnkStruct02254854 *);
extern void MOD21_02254B04(u32 param0);
extern void MOD20_02254198(BOOL param0);
+extern void MOD20_022529A0(u32 param0);
+
+extern void Poketch_InitApp(void *func1, void *func2);
+
+THUMB_FUNC static void MOD21_02254840(void)
+{
+ Poketch_InitApp(MOD21_02254854, MOD21_0225496C);
+}
+
+#define NitroStaticInit MOD21_02254840
+#include "sinit.h"
THUMB_FUNC BOOL MOD21_02254854(UnkStruct02254854 **param0, u32 param1, u32 param2, u32 param3)
{
UnkStruct02254854 *alloced = (UnkStruct02254854 *)AllocFromHeap(8, sizeof(UnkStruct02254854));
if (alloced != NULL)
{
- if (MOD21_0225489C(alloced, param1, param2, param3) && FUN_0200CA44(MOD21_02254930, alloced, (void *)1))
+ if (MOD21_0225489C(alloced, param1, param2, param3) && FUN_0200CA44((void (*)(u32, void *))MOD21_02254930, alloced, (void *)1))
{
*param0 = alloced;
return TRUE;
@@ -51,7 +64,7 @@ THUMB_FUNC BOOL MOD21_0225489C(UnkStruct02254854 *param0, u32 param1, u32 param2
param0->Unk14[0] = param0->Unk14[0] % 0x3c;
}
param0->bytearray[5] = (u8)param0->Unk14[1];
- param0->Unk10 = MOD20_02254130(MOD21_02254D80, TRUE, MOD21_02254974, param0, 8);
+ param0->Unk10 = MOD20_02254130((void *)MOD21_02254D80, TRUE, MOD21_02254974, param0, 8);
if (param0->Unk10 == FALSE)
{
return FALSE;
@@ -62,9 +75,50 @@ THUMB_FUNC BOOL MOD21_0225489C(UnkStruct02254854 *param0, u32 param1, u32 param2
return FALSE;
}
+u32 (* const MOD21_02254D84[])(UnkStruct02254854 *) = { MOD21_022549A4, MOD21_022549E4, MOD21_02254A38 };
+
THUMB_FUNC void MOD21_02254918(UnkStruct02254854 *param0)
{
MOD21_02254B04(param0->Unk24);
MOD20_02254198(param0->Unk10);
FreeToHeap((void *)param0);
}
+
+THUMB_FUNC void MOD21_02254930(u32 param0, UnkStruct02254854 *param1)
+{
+ if (param1->bytearray[0] >= 3)
+ {
+ return;
+ }
+ MOD20_02252C14(param1->Unk28, param1->Unk10);
+ if (!MOD21_02254D84[param1->bytearray[0]](param1))
+ {
+ return;
+ }
+ MOD21_02254918(param1);
+ FUN_0200CAB4((s32)param0);
+ MOD20_022529A0(param1->Unk28);
+}
+
+THUMB_FUNC void MOD21_0225496C(UnkStruct02254854 *param0)
+{
+ param0->bytearray[2] = 1;
+}
+
+THUMB_FUNC void MOD21_02254974(u32 param0, u32 param1, u32 param2, UnkStruct02254854 * param3)
+{
+#pragma unused (param0, param1)
+ switch (param2)
+ {
+ case 1:
+ param3->Unk20 = 1;
+ param3->bytearray[6] = 1;
+ return;
+ case 0:
+ param3->Unk20 = 0;
+ param3->bytearray[6] = 1;
+ return;
+ default:
+ return;
+ }
+}