summaryrefslogtreecommitdiff
path: root/arm9/modules/21/src/mod21_02254854.c
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/modules/21/src/mod21_02254854.c')
-rw-r--r--arm9/modules/21/src/mod21_02254854.c199
1 files changed, 199 insertions, 0 deletions
diff --git a/arm9/modules/21/src/mod21_02254854.c b/arm9/modules/21/src/mod21_02254854.c
new file mode 100644
index 00000000..a9a7599d
--- /dev/null
+++ b/arm9/modules/21/src/mod21_02254854.c
@@ -0,0 +1,199 @@
+#include "global.h"
+#include "heap.h"
+#include "unk_0200CA44.h"
+#include "mod21_02254854.h"
+
+extern void GF_RTC_CopyTime(Time *param0);
+
+u8 const MOD21_02254D80[] = { 0x10, 0xAF, 0x10, 0xCF };
+extern BOOL MOD20_02254130(void *param0, BOOL param1, void *param2, UnkStruct02254854 *param3, u32 param4);
+extern void MOD20_02252C14(u32 param0, BOOL param1);
+
+extern void MOD20_02254198(BOOL param0);
+extern void MOD20_022529A0(u32 param0);
+
+extern void MOD20_0225298C(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((void (*)(u32, void *))MOD21_02254930, alloced, (void *)1))
+ {
+ *param0 = alloced;
+ return TRUE;
+ }
+ FreeToHeap(alloced);
+ }
+ return FALSE;
+}
+
+THUMB_FUNC BOOL MOD21_0225489C(UnkStruct02254854 *param0, u32 param1, u32 param2, u32 param3)
+{
+#pragma unused (param2, param3) //not sure, please check
+ if (MOD21_02254A6C((UnkStruct02254A6C *)&param0->Unk24, &param0->time)) //todo fix
+ {
+ param0->bytearray[0] = 0;
+ param0->bytearray[1] = 0;
+ param0->bytearray[2] = 0;
+ param0->bytearray[3] = 1;
+ param0->bytearray[6] = 0;
+ param0->Unk20 = 0;
+ GF_RTC_CopyTime(&param0->time);
+ if (param0->time.hour >= 0x18)
+ {
+ param0->time.hour = param0->time.hour % 0x18;
+ }
+ if (param0->time.minute >= 0x3c)
+ {
+ param0->time.hour = param0->time.hour % 0x3c;
+ }
+ param0->bytearray[5] = (u8)param0->time.minute;
+ param0->Unk10 = MOD20_02254130((void *)MOD21_02254D80, TRUE, MOD21_02254974, param0, 8);
+ if (param0->Unk10 == FALSE)
+ {
+ return FALSE;
+ }
+ param0->Unk28 = param1;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+BOOL (* 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;
+ }
+}
+
+THUMB_FUNC void MOD21_02254990(UnkStruct02254854 * param0, u8 param1)
+{
+ if (param0->bytearray[2] == 0)
+ {
+ param0->bytearray[0] = param1;
+ }
+ else
+ {
+ param0->bytearray[0] = 2;
+ }
+ param0->bytearray[1] = 0;
+}
+
+THUMB_FUNC BOOL MOD21_022549A4(UnkStruct02254854 * param0)
+{
+ switch (param0->bytearray[1])
+ {
+ case 0:
+ MOD21_02254B10(param0->Unk24, 0);
+ param0->bytearray[1]++;
+ break;
+ case 1:
+ if (MOD21_02254B34(param0->Unk24, 0) == FALSE)
+ {
+ break;
+ }
+ MOD20_0225298C(param0->Unk28);
+ MOD21_02254990(param0, 1);
+ break;
+ default:
+ break;
+ }
+ return FALSE;
+}
+
+THUMB_FUNC BOOL MOD21_022549E4(UnkStruct02254854 * param0)
+{
+ if (param0->bytearray[2])
+ {
+ MOD21_02254990(param0, 2);
+ return FALSE;
+ }
+ if (param0->bytearray[6])
+ {
+ param0->bytearray[6] = 0;
+ MOD21_02254B10(param0->Unk24, 2);
+ }
+ if (MOD21_02254B34(param0->Unk24, 1))
+ {
+ param0->bytearray[5] = (u8)param0->time.minute;
+ GF_RTC_CopyTime(&param0->time);
+ if (param0->bytearray[5] != param0->time.minute)
+ {
+ MOD21_02254B10(param0->Unk24, 1);
+ }
+ }
+ return FALSE;
+}
+
+THUMB_FUNC BOOL MOD21_02254A38(UnkStruct02254854 * param0)
+{
+ switch (param0->bytearray[1])
+ {
+ case 0:
+ MOD21_02254B10(param0->Unk24, 3);
+ param0->bytearray[1]++;
+ break;
+ case 1:
+ if (MOD21_02254B40(param0->Unk24))
+ {
+ return TRUE;
+ }
+ break;
+ default:
+ break;
+ }
+ return FALSE;
+}