diff options
Diffstat (limited to 'arm9/modules/21/src/mod21_02254854_src.c')
-rw-r--r-- | arm9/modules/21/src/mod21_02254854_src.c | 66 |
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; + } +} |