From 697c2313123690ebb4af45629cbc337d19941d04 Mon Sep 17 00:00:00 2001 From: red031000 Date: Mon, 9 Nov 2020 19:49:19 +0000 Subject: start decompiling mod21_02254854 --- arm9/modules/21/src/mod21_02254854_src.c | 21 +++++++++++++++++++++ arm9/modules/21/src/module_21_sinit.c | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 arm9/modules/21/src/mod21_02254854_src.c (limited to 'arm9/modules/21/src') diff --git a/arm9/modules/21/src/mod21_02254854_src.c b/arm9/modules/21/src/mod21_02254854_src.c new file mode 100644 index 00000000..8a0c4146 --- /dev/null +++ b/arm9/modules/21/src/mod21_02254854_src.c @@ -0,0 +1,21 @@ +#include "global.h" +#include "heap.h" +#include "unk_0200CA44.h" + +extern BOOL MOD21_0225489C(void *param0, u32 param1, u32 param2, u32 param3); +extern void MOD21_02254930(void *, void *); + +THUMB_FUNC BOOL MOD21_02254854(u32 *param0, u32 param1, u32 param2, u32 param3) //param0 is likely actually a struct +{ + void * alloced = AllocFromHeap(8, 0x2c); + if (alloced != NULL) + { + if (MOD21_0225489C(alloced, param1, param2, param3) && FUN_0200CA44(MOD21_02254930, alloced, (void *)1)) + { + *param0 = (u32)alloced; + return TRUE; + } + FreeToHeap(alloced); + } + return FALSE; +} \ No newline at end of file diff --git a/arm9/modules/21/src/module_21_sinit.c b/arm9/modules/21/src/module_21_sinit.c index 2af569ec..c4b2ac5a 100644 --- a/arm9/modules/21/src/module_21_sinit.c +++ b/arm9/modules/21/src/module_21_sinit.c @@ -1,7 +1,7 @@ #include "global.h" +#include "mod21_02254854.h" extern void Poketch_InitApp(void *func1, void *func2); -extern void MOD21_02254854(); extern void MOD21_0225496C(); THUMB_FUNC static void MOD21_02254840(void) -- cgit v1.2.3 From b65d56bc44308503f4da143fd9a014926020450c Mon Sep 17 00:00:00 2001 From: red031000 Date: Tue, 10 Nov 2020 15:52:15 +0000 Subject: fix a few small issues --- arm9/modules/21/src/mod21_02254854_src.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'arm9/modules/21/src') diff --git a/arm9/modules/21/src/mod21_02254854_src.c b/arm9/modules/21/src/mod21_02254854_src.c index 8a0c4146..fcb34247 100644 --- a/arm9/modules/21/src/mod21_02254854_src.c +++ b/arm9/modules/21/src/mod21_02254854_src.c @@ -1,6 +1,7 @@ #include "global.h" #include "heap.h" #include "unk_0200CA44.h" +#include "mod21_02254854.h" extern BOOL MOD21_0225489C(void *param0, u32 param1, u32 param2, u32 param3); extern void MOD21_02254930(void *, void *); @@ -18,4 +19,4 @@ THUMB_FUNC BOOL MOD21_02254854(u32 *param0, u32 param1, u32 param2, u32 param3) FreeToHeap(alloced); } return FALSE; -} \ No newline at end of file +} -- cgit v1.2.3 From ebbcd4c9d985bd3c66e45fee6cf201525d501633 Mon Sep 17 00:00:00 2001 From: red031000 Date: Tue, 10 Nov 2020 16:38:39 +0000 Subject: mod21_0225489C --- arm9/modules/21/src/mod21_02254854_src.c | 46 +++++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 4 deletions(-) (limited to 'arm9/modules/21/src') diff --git a/arm9/modules/21/src/mod21_02254854_src.c b/arm9/modules/21/src/mod21_02254854_src.c index fcb34247..5e808856 100644 --- a/arm9/modules/21/src/mod21_02254854_src.c +++ b/arm9/modules/21/src/mod21_02254854_src.c @@ -3,20 +3,58 @@ #include "unk_0200CA44.h" #include "mod21_02254854.h" -extern BOOL MOD21_0225489C(void *param0, u32 param1, u32 param2, u32 param3); extern void MOD21_02254930(void *, void *); -THUMB_FUNC BOOL MOD21_02254854(u32 *param0, u32 param1, u32 param2, u32 param3) //param0 is likely actually a struct +extern void GF_RTC_CopyTime(u32 *param0); + +extern void MOD21_02254D80(); +extern void MOD21_02254974(); +extern BOOL MOD21_02254A6C(u32 *param0, u32 *param1); +extern BOOL MOD20_02254130(void *param0, BOOL param1, void *param2, UnkStruct02254854 *param3, u32 param4); + +THUMB_FUNC BOOL MOD21_02254854(UnkStruct02254854 **param0, u32 param1, u32 param2, u32 param3) { - void * alloced = AllocFromHeap(8, 0x2c); + UnkStruct02254854 *alloced = (UnkStruct02254854 *)AllocFromHeap(8, sizeof(UnkStruct02254854)); if (alloced != NULL) { if (MOD21_0225489C(alloced, param1, param2, param3) && FUN_0200CA44(MOD21_02254930, alloced, (void *)1)) { - *param0 = (u32)alloced; + *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(¶m0->Unk24, param0->Unk14)) + { + 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->Unk14); + if (param0->Unk14[0] >= 0x18) + { + param0->Unk14[0] = param0->Unk14[0] % 0x18; + } + if (param0->Unk14[1] >= 0x3c) + { + 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); + if (param0->Unk10 == FALSE) + { + return FALSE; + } + param0->Unk28 = param1; + return TRUE; + } + return FALSE; +} -- cgit v1.2.3 From 32fbb72519542c49ac8c33cdc8f4ebf7d808871c Mon Sep 17 00:00:00 2001 From: red031000 Date: Thu, 12 Nov 2020 18:15:46 +0000 Subject: mod21_02254918 --- arm9/modules/21/src/mod21_02254854_src.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'arm9/modules/21/src') diff --git a/arm9/modules/21/src/mod21_02254854_src.c b/arm9/modules/21/src/mod21_02254854_src.c index 5e808856..870efa17 100644 --- a/arm9/modules/21/src/mod21_02254854_src.c +++ b/arm9/modules/21/src/mod21_02254854_src.c @@ -12,6 +12,9 @@ extern void MOD21_02254974(); extern BOOL MOD21_02254A6C(u32 *param0, u32 *param1); extern BOOL MOD20_02254130(void *param0, BOOL param1, void *param2, UnkStruct02254854 *param3, u32 param4); +extern void MOD21_02254B04(u32 param0); +extern void MOD20_02254198(BOOL param0); + THUMB_FUNC BOOL MOD21_02254854(UnkStruct02254854 **param0, u32 param1, u32 param2, u32 param3) { UnkStruct02254854 *alloced = (UnkStruct02254854 *)AllocFromHeap(8, sizeof(UnkStruct02254854)); @@ -58,3 +61,10 @@ THUMB_FUNC BOOL MOD21_0225489C(UnkStruct02254854 *param0, u32 param1, u32 param2 } return FALSE; } + +THUMB_FUNC void MOD21_02254918(UnkStruct02254854 *param0) +{ + MOD21_02254B04(param0->Unk24); + MOD20_02254198(param0->Unk10); + FreeToHeap((void *)param0); +} -- cgit v1.2.3 From bc3be40047d1b9ec45e7b355dff2280e7c5faa0a Mon Sep 17 00:00:00 2001 From: red031000 Date: Sat, 14 Nov 2020 00:07:14 +0000 Subject: more mod 21 --- arm9/modules/21/src/mod21_02254854_src.c | 66 +++++++++++++++++++++++++++++--- arm9/modules/21/src/module_21_sinit.c | 13 ------- 2 files changed, 60 insertions(+), 19 deletions(-) delete mode 100644 arm9/modules/21/src/module_21_sinit.c (limited to 'arm9/modules/21/src') 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; + } +} diff --git a/arm9/modules/21/src/module_21_sinit.c b/arm9/modules/21/src/module_21_sinit.c deleted file mode 100644 index c4b2ac5a..00000000 --- a/arm9/modules/21/src/module_21_sinit.c +++ /dev/null @@ -1,13 +0,0 @@ -#include "global.h" -#include "mod21_02254854.h" - -extern void Poketch_InitApp(void *func1, void *func2); -extern void MOD21_0225496C(); - -THUMB_FUNC static void MOD21_02254840(void) -{ - Poketch_InitApp(MOD21_02254854, MOD21_0225496C); -} - -#define NitroStaticInit MOD21_02254840 -#include "sinit.h" -- cgit v1.2.3 From 89476f60f8b7bdef718c566252421922c1ace7a2 Mon Sep 17 00:00:00 2001 From: red031000 Date: Wed, 18 Nov 2020 14:22:17 +0000 Subject: mod21_02254990 --- arm9/modules/21/src/mod21_02254854_src.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'arm9/modules/21/src') diff --git a/arm9/modules/21/src/mod21_02254854_src.c b/arm9/modules/21/src/mod21_02254854_src.c index f7fbe221..eaa8d7ad 100644 --- a/arm9/modules/21/src/mod21_02254854_src.c +++ b/arm9/modules/21/src/mod21_02254854_src.c @@ -122,3 +122,17 @@ THUMB_FUNC void MOD21_02254974(u32 param0, u32 param1, u32 param2, UnkStruct0225 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; +} + -- cgit v1.2.3 From 18795a69f067096ce79e9aa3ca8bfa41ca0e400c Mon Sep 17 00:00:00 2001 From: red031000 Date: Wed, 18 Nov 2020 14:39:57 +0000 Subject: mod21_022549A4 --- arm9/modules/21/src/mod21_02254854_src.c | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) (limited to 'arm9/modules/21/src') diff --git a/arm9/modules/21/src/mod21_02254854_src.c b/arm9/modules/21/src/mod21_02254854_src.c index eaa8d7ad..db8769af 100644 --- a/arm9/modules/21/src/mod21_02254854_src.c +++ b/arm9/modules/21/src/mod21_02254854_src.c @@ -10,14 +10,17 @@ 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 BOOL MOD21_022549E4(UnkStruct02254854 *); +extern BOOL MOD21_02254A38(UnkStruct02254854 *); extern void MOD21_02254B04(u32 param0); extern void MOD20_02254198(BOOL param0); extern void MOD20_022529A0(u32 param0); +extern void MOD21_02254B10(u32 param0, u32 param1); +extern BOOL MOD21_02254B34(u32 param0, u32 param1); +extern void MOD20_0225298C(u32 param0); + extern void Poketch_InitApp(void *func1, void *func2); THUMB_FUNC static void MOD21_02254840(void) @@ -75,7 +78,7 @@ THUMB_FUNC BOOL MOD21_0225489C(UnkStruct02254854 *param0, u32 param1, u32 param2 return FALSE; } -u32 (* const MOD21_02254D84[])(UnkStruct02254854 *) = { MOD21_022549A4, MOD21_022549E4, MOD21_02254A38 }; +BOOL (* const MOD21_02254D84[])(UnkStruct02254854 *) = { MOD21_022549A4, MOD21_022549E4, MOD21_02254A38 }; THUMB_FUNC void MOD21_02254918(UnkStruct02254854 *param0) { @@ -136,3 +139,24 @@ THUMB_FUNC void MOD21_02254990(UnkStruct02254854 * param0, u8 param1) 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; +} -- cgit v1.2.3 From c3419a42429718f57f3de5d19e2cd44a18e53033 Mon Sep 17 00:00:00 2001 From: red031000 Date: Wed, 18 Nov 2020 18:19:26 +0000 Subject: fully decomp mod21_02254854.o --- arm9/modules/21/src/mod21_02254854.c | 204 +++++++++++++++++++++++++++++++ arm9/modules/21/src/mod21_02254854_src.c | 162 ------------------------ 2 files changed, 204 insertions(+), 162 deletions(-) create mode 100644 arm9/modules/21/src/mod21_02254854.c delete mode 100644 arm9/modules/21/src/mod21_02254854_src.c (limited to 'arm9/modules/21/src') diff --git a/arm9/modules/21/src/mod21_02254854.c b/arm9/modules/21/src/mod21_02254854.c new file mode 100644 index 00000000..44c97b8e --- /dev/null +++ b/arm9/modules/21/src/mod21_02254854.c @@ -0,0 +1,204 @@ +#include "global.h" +#include "heap.h" +#include "unk_0200CA44.h" +#include "mod21_02254854.h" + +extern void GF_RTC_CopyTime(u32 *param0); + +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 void MOD21_02254B04(u32 param0); +extern void MOD20_02254198(BOOL param0); +extern void MOD20_022529A0(u32 param0); + +extern void MOD21_02254B10(u32 param0, u32 param1); +extern BOOL MOD21_02254B34(u32 param0, u32 param1); +extern BOOL MOD21_02254B40(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(¶m0->Unk24, param0->Unk14)) + { + 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->Unk14); + if (param0->Unk14[0] >= 0x18) + { + param0->Unk14[0] = param0->Unk14[0] % 0x18; + } + if (param0->Unk14[1] >= 0x3c) + { + param0->Unk14[0] = param0->Unk14[0] % 0x3c; + } + param0->bytearray[5] = (u8)param0->Unk14[1]; + 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->Unk14[1]; + GF_RTC_CopyTime(param0->Unk14); + if (param0->bytearray[5] != param0->Unk14[1]) + { + 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; +} diff --git a/arm9/modules/21/src/mod21_02254854_src.c b/arm9/modules/21/src/mod21_02254854_src.c deleted file mode 100644 index db8769af..00000000 --- a/arm9/modules/21/src/mod21_02254854_src.c +++ /dev/null @@ -1,162 +0,0 @@ -#include "global.h" -#include "heap.h" -#include "unk_0200CA44.h" -#include "mod21_02254854.h" - -extern void GF_RTC_CopyTime(u32 *param0); - -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 BOOL MOD21_022549E4(UnkStruct02254854 *); -extern BOOL MOD21_02254A38(UnkStruct02254854 *); - -extern void MOD21_02254B04(u32 param0); -extern void MOD20_02254198(BOOL param0); -extern void MOD20_022529A0(u32 param0); - -extern void MOD21_02254B10(u32 param0, u32 param1); -extern BOOL MOD21_02254B34(u32 param0, u32 param1); -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(¶m0->Unk24, param0->Unk14)) - { - 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->Unk14); - if (param0->Unk14[0] >= 0x18) - { - param0->Unk14[0] = param0->Unk14[0] % 0x18; - } - if (param0->Unk14[1] >= 0x3c) - { - param0->Unk14[0] = param0->Unk14[0] % 0x3c; - } - param0->bytearray[5] = (u8)param0->Unk14[1]; - 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; -} -- cgit v1.2.3 From b929414450ac7ee42268815a4a6c913a955476e4 Mon Sep 17 00:00:00 2001 From: red031000 Date: Thu, 19 Nov 2020 18:57:14 +0000 Subject: start decompiling mod21_02254A6C --- arm9/modules/21/src/mod21_02254A6C_src.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 arm9/modules/21/src/mod21_02254A6C_src.c (limited to 'arm9/modules/21/src') diff --git a/arm9/modules/21/src/mod21_02254A6C_src.c b/arm9/modules/21/src/mod21_02254A6C_src.c new file mode 100644 index 00000000..ee664f13 --- /dev/null +++ b/arm9/modules/21/src/mod21_02254A6C_src.c @@ -0,0 +1,31 @@ +#include "global.h" +#include "heap.h" +#include "mod21_02254A6C.h" + +extern void MOD20_022536F4(u32 *param0, u32 param1); +extern u32 MOD20_02252D34(void); +extern void *FUN_02006BDC(u32 param0, u32 param1, u32 param2, void *param3, u32 param4); +extern void MOD21_02254AD4(u32 param0, u32 *param1); + +THUMB_FUNC BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1) +{ + UnkStruct02254A6C *strct = (UnkStruct02254A6C *)AllocFromHeap(8, 3 << 8); + u32 sp4; + if (strct != NULL) + { + MOD20_022536F4(strct->Unk08, 8); + strct->Unk00 = param1; + strct->Unk04 = MOD20_02252D34(); + void *res = FUN_02006BDC(12, 0x19, 1, &sp4, 8); + if (res == 0) + { + FreeToHeap(strct); + return FALSE; + } + MOD21_02254AD4(sp4 + 0xc, strct->Unk30); + FreeToHeap(res); + param0->Unk00 = strct; + return TRUE; + } + return FALSE; +} \ No newline at end of file -- cgit v1.2.3 From 0a7108543bb346f86b6688b11e45cd478df3d890 Mon Sep 17 00:00:00 2001 From: red031000 Date: Thu, 19 Nov 2020 21:10:49 +0000 Subject: mod21_02254AD4 --- arm9/modules/21/src/mod21_02254A6C_src.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'arm9/modules/21/src') diff --git a/arm9/modules/21/src/mod21_02254A6C_src.c b/arm9/modules/21/src/mod21_02254A6C_src.c index ee664f13..4bd810d4 100644 --- a/arm9/modules/21/src/mod21_02254A6C_src.c +++ b/arm9/modules/21/src/mod21_02254A6C_src.c @@ -1,11 +1,11 @@ #include "global.h" #include "heap.h" #include "mod21_02254A6C.h" +#include "MI_memory.h" extern void MOD20_022536F4(u32 *param0, u32 param1); extern u32 MOD20_02252D34(void); extern void *FUN_02006BDC(u32 param0, u32 param1, u32 param2, void *param3, u32 param4); -extern void MOD21_02254AD4(u32 param0, u32 *param1); THUMB_FUNC BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1) { @@ -22,10 +22,23 @@ THUMB_FUNC BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1) FreeToHeap(strct); return FALSE; } - MOD21_02254AD4(sp4 + 0xc, strct->Unk30); + MOD21_02254AD4((void *)(sp4 + 0xc), strct->Unk30); FreeToHeap(res); param0->Unk00 = strct; return TRUE; } return FALSE; -} \ No newline at end of file +} + +THUMB_FUNC void MOD21_02254AD4(void *param0, void *param1) +{ + s32 i = 0; + for (u32 r6 = 9 << 6; i < 9; r6 -= 0x30) + { + MI_CpuCopy16(param0, param1, 0x40); + MI_CpuCopy16((void *)((u32)param0 + r6), (void *)((u32)param1 + 0x40), 0x10); + i++; + param0 = (void *)((u32)param0 + 0x40); + param1 = (void *)((u32)param1 + 0x50); + } +} -- cgit v1.2.3 From 2e10bebe00a1c459c13854230a3014881d02e312 Mon Sep 17 00:00:00 2001 From: red031000 Date: Thu, 19 Nov 2020 22:16:42 +0000 Subject: a bit of cleanup --- arm9/modules/21/src/mod21_02254854.c | 10 ++++------ arm9/modules/21/src/mod21_02254A6C_src.c | 8 ++++++++ 2 files changed, 12 insertions(+), 6 deletions(-) (limited to 'arm9/modules/21/src') diff --git a/arm9/modules/21/src/mod21_02254854.c b/arm9/modules/21/src/mod21_02254854.c index 44c97b8e..0cdb0c32 100644 --- a/arm9/modules/21/src/mod21_02254854.c +++ b/arm9/modules/21/src/mod21_02254854.c @@ -6,17 +6,15 @@ extern void GF_RTC_CopyTime(u32 *param0); 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 void MOD21_02254B04(u32 param0); extern void MOD20_02254198(BOOL param0); extern void MOD20_022529A0(u32 param0); -extern void MOD21_02254B10(u32 param0, u32 param1); -extern BOOL MOD21_02254B34(u32 param0, u32 param1); -extern BOOL MOD21_02254B40(u32 param0); +extern void MOD21_02254B10(void *param0, u32 param1); +extern BOOL MOD21_02254B34(void *param0, u32 param1); +extern BOOL MOD21_02254B40(void *param0); extern void MOD20_0225298C(u32 param0); extern void Poketch_InitApp(void *func1, void *func2); @@ -47,7 +45,7 @@ THUMB_FUNC BOOL MOD21_02254854(UnkStruct02254854 **param0, u32 param1, u32 param THUMB_FUNC BOOL MOD21_0225489C(UnkStruct02254854 *param0, u32 param1, u32 param2, u32 param3) { #pragma unused (param2, param3) //not sure, please check - if (MOD21_02254A6C(¶m0->Unk24, param0->Unk14)) + if (MOD21_02254A6C((UnkStruct02254A6C *)¶m0->Unk24, param0->Unk14)) //todo fix { param0->bytearray[0] = 0; param0->bytearray[1] = 0; diff --git a/arm9/modules/21/src/mod21_02254A6C_src.c b/arm9/modules/21/src/mod21_02254A6C_src.c index 4bd810d4..a37b5728 100644 --- a/arm9/modules/21/src/mod21_02254A6C_src.c +++ b/arm9/modules/21/src/mod21_02254A6C_src.c @@ -42,3 +42,11 @@ THUMB_FUNC void MOD21_02254AD4(void *param0, void *param1) param1 = (void *)((u32)param1 + 0x50); } } + +THUMB_FUNC void MOD21_02254B04(void *param0) +{ + if (param0 != NULL) + { + FreeToHeap(param0); + } +} -- cgit v1.2.3 From 408f6b2f49ab9bfd4523c373f2342af7d2fe63cf Mon Sep 17 00:00:00 2001 From: red031000 Date: Wed, 2 Dec 2020 21:30:04 +0000 Subject: MOD21_02254B10 --- arm9/modules/21/src/mod21_02254854.c | 1 - arm9/modules/21/src/mod21_02254A6C_src.c | 7 +++++++ 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'arm9/modules/21/src') diff --git a/arm9/modules/21/src/mod21_02254854.c b/arm9/modules/21/src/mod21_02254854.c index 0cdb0c32..0f706f4d 100644 --- a/arm9/modules/21/src/mod21_02254854.c +++ b/arm9/modules/21/src/mod21_02254854.c @@ -12,7 +12,6 @@ extern void MOD20_02252C14(u32 param0, BOOL param1); extern void MOD20_02254198(BOOL param0); extern void MOD20_022529A0(u32 param0); -extern void MOD21_02254B10(void *param0, u32 param1); extern BOOL MOD21_02254B34(void *param0, u32 param1); extern BOOL MOD21_02254B40(void *param0); extern void MOD20_0225298C(u32 param0); diff --git a/arm9/modules/21/src/mod21_02254A6C_src.c b/arm9/modules/21/src/mod21_02254A6C_src.c index a37b5728..7a792c50 100644 --- a/arm9/modules/21/src/mod21_02254A6C_src.c +++ b/arm9/modules/21/src/mod21_02254A6C_src.c @@ -6,6 +6,8 @@ extern void MOD20_022536F4(u32 *param0, u32 param1); extern u32 MOD20_02252D34(void); extern void *FUN_02006BDC(u32 param0, u32 param1, u32 param2, void *param3, u32 param4); +extern void MOD20_022537E0(void *param0, u32 param1, void *param2, u32 param3, void *param4, u32 param5, u32 param6); +extern void MOD21_02254DAC(void); THUMB_FUNC BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1) { @@ -50,3 +52,8 @@ THUMB_FUNC void MOD21_02254B04(void *param0) FreeToHeap(param0); } } + +THUMB_FUNC void MOD21_02254B10(u32 *param0, u32 param1) +{ + MOD20_022537E0(MOD21_02254DAC, param1, param0, *param0, (void *)(param0 + 2), 2, 8); +} -- cgit v1.2.3 From 21ff3852f8fd49e9f491a2a12fb81d43e5147727 Mon Sep 17 00:00:00 2001 From: red031000 Date: Wed, 2 Dec 2020 22:14:27 +0000 Subject: 2 more funcs --- arm9/modules/21/src/mod21_02254854.c | 2 -- arm9/modules/21/src/mod21_02254A6C_src.c | 12 ++++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) (limited to 'arm9/modules/21/src') diff --git a/arm9/modules/21/src/mod21_02254854.c b/arm9/modules/21/src/mod21_02254854.c index 0f706f4d..fe285936 100644 --- a/arm9/modules/21/src/mod21_02254854.c +++ b/arm9/modules/21/src/mod21_02254854.c @@ -12,8 +12,6 @@ extern void MOD20_02252C14(u32 param0, BOOL param1); extern void MOD20_02254198(BOOL param0); extern void MOD20_022529A0(u32 param0); -extern BOOL MOD21_02254B34(void *param0, u32 param1); -extern BOOL MOD21_02254B40(void *param0); extern void MOD20_0225298C(u32 param0); extern void Poketch_InitApp(void *func1, void *func2); diff --git a/arm9/modules/21/src/mod21_02254A6C_src.c b/arm9/modules/21/src/mod21_02254A6C_src.c index 7a792c50..b36baa2a 100644 --- a/arm9/modules/21/src/mod21_02254A6C_src.c +++ b/arm9/modules/21/src/mod21_02254A6C_src.c @@ -8,6 +8,8 @@ extern u32 MOD20_02252D34(void); extern void *FUN_02006BDC(u32 param0, u32 param1, u32 param2, void *param3, u32 param4); extern void MOD20_022537E0(void *param0, u32 param1, void *param2, u32 param3, void *param4, u32 param5, u32 param6); extern void MOD21_02254DAC(void); +extern BOOL MOD20_02253794(void *param0, u32 param1); +extern BOOL MOD20_022537B8(void *param0); THUMB_FUNC BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1) { @@ -57,3 +59,13 @@ THUMB_FUNC void MOD21_02254B10(u32 *param0, u32 param1) { MOD20_022537E0(MOD21_02254DAC, param1, param0, *param0, (void *)(param0 + 2), 2, 8); } + +THUMB_FUNC BOOL MOD21_02254B34(void *param0, u32 param1) +{ + return MOD20_02253794((void *)((u32)param0 + 8), param1); +} + +THUMB_FUNC BOOL MOD21_02254B40(void *param0) +{ + return MOD20_022537B8((void *)((u32)param0 + 8)); +} -- cgit v1.2.3 From 8c4c85d47a2457e524eb63f91ef32f2c8cd8c38d Mon Sep 17 00:00:00 2001 From: red031000 Date: Sat, 5 Dec 2020 21:19:20 +0000 Subject: two mod 21 funcs --- arm9/modules/21/src/mod21_02254A6C_src.c | 39 ++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'arm9/modules/21/src') diff --git a/arm9/modules/21/src/mod21_02254A6C_src.c b/arm9/modules/21/src/mod21_02254A6C_src.c index b36baa2a..44c2515a 100644 --- a/arm9/modules/21/src/mod21_02254A6C_src.c +++ b/arm9/modules/21/src/mod21_02254A6C_src.c @@ -10,6 +10,17 @@ extern void MOD20_022537E0(void *param0, u32 param1, void *param2, u32 param3, v extern void MOD21_02254DAC(void); extern BOOL MOD20_02253794(void *param0, u32 param1); extern BOOL MOD20_022537B8(void *param0); +extern UnkStruct02254B60 *MOD20_022538A0(void *param0); +extern BOOL MOD20_02253888(void *param0, void *param1); + +extern void MOD21_02254D90(void); + +extern void FUN_02016C18(u32 param0, u32 param1, void *param2, u32 param3); +extern void FUN_0200687C(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7); +extern void FUN_020068C8(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7); +extern void MOD20_02252D7C(u32 param0, u32 param1); +extern void MOD21_02254C5C(UnkStruct02254B60 *param0); +extern void FUN_02017CD0(u32 param0, u32 param1); THUMB_FUNC BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1) { @@ -69,3 +80,31 @@ THUMB_FUNC BOOL MOD21_02254B40(void *param0) { return MOD20_022537B8((void *)((u32)param0 + 8)); } + +THUMB_FUNC BOOL MOD21_02254B4C(void *param0) +{ + return MOD20_02253888((void *)((u32)MOD20_022538A0(param0) + 8), param0); +} + +THUMB_FUNC BOOL MOD21_02254B60(u32 param0, void *param1) +{ +#pragma unused (param0) + UnkStruct02254B60 *strct = MOD20_022538A0(param1); + FUN_02016C18(strct->Unk04, 6, MOD21_02254D90, 0); + FUN_0200687C(12, 23, strct->Unk04, 6, 0, 0, 1, 8); + FUN_020068C8(12, 24, strct->Unk04, 6, 0, 0, 1, 8); + MOD20_02252D7C(0, 0); + MOD21_02254C5C(strct); + FUN_02017CD0(strct->Unk04, 6); + u32 r3 = reg_GXS_DB_DISPCNT; + u32 r2 = reg_GXS_DB_DISPCNT; + vu32 tmp = r3; //unused? wtf + u32 r0 = ~0x1F00 & r2; + r2 = r3 << 0x13; + r3 = r2 >> 0x1b; + r2 = 4 | r3; + r2 <<= 8; + r0 |= r2; + reg_GXS_DB_DISPCNT = r0; + return MOD21_02254B4C(param1); +} -- cgit v1.2.3 From 87be48c985eeb0c1c8faf2817898f4cef3d4830f Mon Sep 17 00:00:00 2001 From: red031000 Date: Sat, 5 Dec 2020 22:31:04 +0000 Subject: small cleanup + another func --- arm9/modules/21/src/mod21_02254A6C_src.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'arm9/modules/21/src') diff --git a/arm9/modules/21/src/mod21_02254A6C_src.c b/arm9/modules/21/src/mod21_02254A6C_src.c index 44c2515a..25a8548b 100644 --- a/arm9/modules/21/src/mod21_02254A6C_src.c +++ b/arm9/modules/21/src/mod21_02254A6C_src.c @@ -100,11 +100,20 @@ THUMB_FUNC BOOL MOD21_02254B60(u32 param0, void *param1) u32 r2 = reg_GXS_DB_DISPCNT; vu32 tmp = r3; //unused? wtf u32 r0 = ~0x1F00 & r2; - r2 = r3 << 0x13; - r3 = r2 >> 0x1b; + r2 = r3 << 19; //cast with shift? can't replicate both though + r3 = r2 >> 27; r2 = 4 | r3; r2 <<= 8; r0 |= r2; reg_GXS_DB_DISPCNT = r0; return MOD21_02254B4C(param1); } + +THUMB_FUNC BOOL MOD21_02254BF4(u32 param0, void *param1) +{ +#pragma unused (param0) + UnkStruct02254B60 *strct = MOD20_022538A0(param1); + MOD21_02254C5C(strct); + FUN_02017CD0(strct->Unk04, 6); + return MOD21_02254B4C(param1); +} -- cgit v1.2.3 From a3060d816a528bdef9f5b6da7246c423a46fce61 Mon Sep 17 00:00:00 2001 From: red031000 Date: Sun, 6 Dec 2020 19:50:02 +0000 Subject: almost finished --- arm9/modules/21/src/mod21_02254A6C_src.c | 34 ++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) (limited to 'arm9/modules/21/src') diff --git a/arm9/modules/21/src/mod21_02254A6C_src.c b/arm9/modules/21/src/mod21_02254A6C_src.c index 25a8548b..ef422905 100644 --- a/arm9/modules/21/src/mod21_02254A6C_src.c +++ b/arm9/modules/21/src/mod21_02254A6C_src.c @@ -10,7 +10,7 @@ extern void MOD20_022537E0(void *param0, u32 param1, void *param2, u32 param3, v extern void MOD21_02254DAC(void); extern BOOL MOD20_02253794(void *param0, u32 param1); extern BOOL MOD20_022537B8(void *param0); -extern UnkStruct02254B60 *MOD20_022538A0(void *param0); +extern UnkStruct02254A6C *MOD20_022538A0(void *param0); extern BOOL MOD20_02253888(void *param0, void *param1); extern void MOD21_02254D90(void); @@ -19,8 +19,11 @@ extern void FUN_02016C18(u32 param0, u32 param1, void *param2, u32 param3); extern void FUN_0200687C(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7); extern void FUN_020068C8(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7); extern void MOD20_02252D7C(u32 param0, u32 param1); -extern void MOD21_02254C5C(UnkStruct02254B60 *param0); +extern void MOD21_02254C5C(UnkStruct02254A6C *param0); extern void FUN_02017CD0(u32 param0, u32 param1); +extern void FUN_020178A0(u32 param0, u32 param1); + +extern void MOD11_02252DB4(u32 param0, u32 param1); THUMB_FUNC BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1) { @@ -89,7 +92,7 @@ THUMB_FUNC BOOL MOD21_02254B4C(void *param0) THUMB_FUNC BOOL MOD21_02254B60(u32 param0, void *param1) { #pragma unused (param0) - UnkStruct02254B60 *strct = MOD20_022538A0(param1); + UnkStruct02254A6C *strct = MOD20_022538A0(param1); FUN_02016C18(strct->Unk04, 6, MOD21_02254D90, 0); FUN_0200687C(12, 23, strct->Unk04, 6, 0, 0, 1, 8); FUN_020068C8(12, 24, strct->Unk04, 6, 0, 0, 1, 8); @@ -112,8 +115,31 @@ THUMB_FUNC BOOL MOD21_02254B60(u32 param0, void *param1) THUMB_FUNC BOOL MOD21_02254BF4(u32 param0, void *param1) { #pragma unused (param0) - UnkStruct02254B60 *strct = MOD20_022538A0(param1); + UnkStruct02254A6C *strct = MOD20_022538A0(param1); MOD21_02254C5C(strct); FUN_02017CD0(strct->Unk04, 6); return MOD21_02254B4C(param1); } + +THUMB_FUNC BOOL MOD21_02254C14(u32 param0, void *param1) +{ +#pragma unused (param0) + UnkStruct02254A6C *strct = MOD20_022538A0(param1); + if (strct->Unk00->Unk0C) + { + MOD11_02252DB4(0, 0); + } + else + { + MOD20_02252D7C(0, 0); + } + return MOD21_02254B4C(param1); +} + +THUMB_FUNC BOOL MOD21_02254C40(u32 param0, void *param1) +{ +#pragma unused (param0) + UnkStruct02254A6C *strct = MOD20_022538A0(param1); + FUN_020178A0(strct->Unk04, 6); + return MOD21_02254B4C(param1); +} -- cgit v1.2.3 From 12c64ee79eabced2a1cc1fc83209be37142bc44c Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 11 Dec 2020 21:07:34 +0000 Subject: match all of module 21 --- arm9/modules/21/src/mod21_02254A6C.c | 187 +++++++++++++++++++++++++++++++ arm9/modules/21/src/mod21_02254A6C_src.c | 145 ------------------------ 2 files changed, 187 insertions(+), 145 deletions(-) create mode 100644 arm9/modules/21/src/mod21_02254A6C.c delete mode 100644 arm9/modules/21/src/mod21_02254A6C_src.c (limited to 'arm9/modules/21/src') diff --git a/arm9/modules/21/src/mod21_02254A6C.c b/arm9/modules/21/src/mod21_02254A6C.c new file mode 100644 index 00000000..1dcbe4b8 --- /dev/null +++ b/arm9/modules/21/src/mod21_02254A6C.c @@ -0,0 +1,187 @@ +#include "global.h" +#include "heap.h" +#include "mod21_02254A6C.h" +#include "MI_memory.h" + +extern void MOD20_022536F4(u32 *param0, u32 param1); +extern u32 MOD20_02252D34(void); +extern void *FUN_02006BDC(u32 param0, u32 param1, u32 param2, void *param3, u32 param4); +extern void MOD20_022537E0(void *param0, u32 param1, void *param2, u32 param3, void *param4, u32 param5, u32 param6); + +UnkOverlayStruct1 const MOD21_02254DAC[] = { + { 0, MOD21_02254B60, 0 }, + { 1, MOD21_02254BF4, 0 }, + { 2, MOD21_02254C14, 0 }, + { 3, MOD21_02254C40, 0 }, + { 0, NULL, 0 } +}; + +extern BOOL MOD20_02253794(void *param0, u32 param1); +extern BOOL MOD20_022537B8(void *param0); +extern UnkStruct02254A6C *MOD20_022538A0(void *param0); +extern BOOL MOD20_02253888(void *param0, void *param1); + +//todo datatype +u8 const MOD21_02254D90[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x0E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +extern void FUN_02016C18(u32 param0, u32 param1, void *param2, u32 param3); +extern void FUN_0200687C(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7); +extern void FUN_020068C8(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7); +extern void MOD20_02252D7C(u32 param0, u32 param1); +extern void FUN_02017CD0(u32 param0, u32 param1); +extern void FUN_020178A0(u32 param0, u32 param1); + +extern void FUN_02018170(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 *param6, u8 param7, u32 param8, u32 param9, u32 param10); + +extern void MOD11_02252DB4(u32 param0, u32 param1); + +THUMB_FUNC BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1) +{ + UnkStruct02254A6C *strct = (UnkStruct02254A6C *)AllocFromHeap(8, 3 << 8); + u32 sp4; + if (strct != NULL) + { + MOD20_022536F4(strct->Unk08, 8); + strct->Unk00 = param1; + strct->Unk04 = MOD20_02252D34(); + void *res = FUN_02006BDC(12, 0x19, 1, &sp4, 8); + if (res == 0) + { + FreeToHeap(strct); + return FALSE; + } + MOD21_02254AD4((void *)(sp4 + 0xc), strct->Unk30); + FreeToHeap(res); + param0->Unk00 = strct; + return TRUE; + } + return FALSE; +} + +THUMB_FUNC void MOD21_02254AD4(void *param0, void *param1) +{ + s32 i = 0; + for (u32 r6 = 9 << 6; i < 9; r6 -= 0x30) + { + MI_CpuCopy16(param0, param1, 0x40); + MI_CpuCopy16((void *)((u32)param0 + r6), (void *)((u32)param1 + 0x40), 0x10); + i++; + param0 = (void *)((u32)param0 + 0x40); + param1 = (void *)((u32)param1 + 0x50); + } +} + +THUMB_FUNC void MOD21_02254B04(void *param0) +{ + if (param0 != NULL) + { + FreeToHeap(param0); + } +} + +THUMB_FUNC void MOD21_02254B10(u32 *param0, u32 param1) +{ + MOD20_022537E0(MOD21_02254DAC, param1, param0, *param0, (void *)(param0 + 2), 2, 8); +} + +THUMB_FUNC BOOL MOD21_02254B34(void *param0, u32 param1) +{ + return MOD20_02253794((void *)((u32)param0 + 8), param1); +} + +THUMB_FUNC BOOL MOD21_02254B40(void *param0) +{ + return MOD20_022537B8((void *)((u32)param0 + 8)); +} + +THUMB_FUNC BOOL MOD21_02254B4C(void *param0) +{ + return MOD20_02253888((void *)((u32)MOD20_022538A0(param0) + 8), param0); +} + +THUMB_FUNC BOOL MOD21_02254B60(u32 param0, void *param1) +{ +#pragma unused (param0) + UnkStruct02254A6C *strct = MOD20_022538A0(param1); + FUN_02016C18(strct->Unk04, 6, MOD21_02254D90, 0); + FUN_0200687C(12, 23, strct->Unk04, 6, 0, 0, 1, 8); + FUN_020068C8(12, 24, strct->Unk04, 6, 0, 0, 1, 8); + MOD20_02252D7C(0, 0); + MOD21_02254C5C(strct); + FUN_02017CD0(strct->Unk04, 6); + u32 r3 = reg_GXS_DB_DISPCNT; + u32 r2 = reg_GXS_DB_DISPCNT; + vu32 tmp = r3; //unused? wtf + u32 r0 = ~0x1F00 & r2; + r2 = r3 << 19; //cast with shift? can't replicate both though + r3 = r2 >> 27; + r2 = 4 | r3; + r2 <<= 8; + r0 |= r2; + reg_GXS_DB_DISPCNT = r0; + return MOD21_02254B4C(param1); +} + +THUMB_FUNC BOOL MOD21_02254BF4(u32 param0, void *param1) +{ +#pragma unused (param0) + UnkStruct02254A6C *strct = MOD20_022538A0(param1); + MOD21_02254C5C(strct); + FUN_02017CD0(strct->Unk04, 6); + return MOD21_02254B4C(param1); +} + +THUMB_FUNC BOOL MOD21_02254C14(u32 param0, void *param1) +{ +#pragma unused (param0) + UnkStruct02254A6C *strct = MOD20_022538A0(param1); + if (strct->Unk00->Unk0C) + { + MOD11_02252DB4(0, 0); + } + else + { + MOD20_02252D7C(0, 0); + } + return MOD21_02254B4C(param1); +} + +THUMB_FUNC BOOL MOD21_02254C40(u32 param0, void *param1) +{ +#pragma unused (param0) + UnkStruct02254A6C *strct = MOD20_022538A0(param1); + FUN_020178A0(strct->Unk04, 6); + return MOD21_02254B4C(param1); +} + +THUMB_FUNC void MOD21_02254C5C(UnkStruct02254A6C *param0) +{ + u32 tmp = (u32)param0->Unk00->Unk00; + reg_CP_DIVCNT = 0; + (*(vu32 *)REG_DIV_NUMER_ADDR) = tmp; + reg_CP_DIV_DENOM = 10; + while (reg_CP_DIVCNT & ((u32)®_CP_DIVCNT >> 0xb)) { } + + u32 regaddr = (u32)®_CP_DIV_RESULT_L; + u32 divResult = *(u32 *)regaddr; + while (reg_CP_DIVCNT & (regaddr >> 0xb)) { } + + u32 divRemRes = reg_CP_DIVREM_RESULT_L; + FUN_02018170(param0->Unk04, 6, 3, 7, 4, 9, param0->Unk30, (u8)(divResult << 2), 0, 40, 9); + FUN_02018170(param0->Unk04, 6, 8, 7, 4, 9, param0->Unk30, (u8)(divRemRes << 2), 0, 40, 9); + + tmp = param0->Unk00->Unk04; + reg_CP_DIVCNT = 0; + (*(vu32 *)REG_DIV_NUMER_ADDR) = tmp; + reg_CP_DIV_DENOM = 10; + + while (reg_CP_DIVCNT & ((u32)®_CP_DIVCNT >> 0xb)) { } + + divResult = *(u32 *)regaddr; + while (reg_CP_DIVCNT & (regaddr >> 0xb)) { } + + divRemRes = reg_CP_DIVREM_RESULT_L; + FUN_02018170(param0->Unk04, 6, 15, 7, 4, 9, param0->Unk30, (u8)(divResult << 2), 0, 40, 9); + FUN_02018170(param0->Unk04, 6, 20, 7, 4, 9, param0->Unk30, (u8)(divRemRes << 2), 0, 40, 9); +} diff --git a/arm9/modules/21/src/mod21_02254A6C_src.c b/arm9/modules/21/src/mod21_02254A6C_src.c deleted file mode 100644 index ef422905..00000000 --- a/arm9/modules/21/src/mod21_02254A6C_src.c +++ /dev/null @@ -1,145 +0,0 @@ -#include "global.h" -#include "heap.h" -#include "mod21_02254A6C.h" -#include "MI_memory.h" - -extern void MOD20_022536F4(u32 *param0, u32 param1); -extern u32 MOD20_02252D34(void); -extern void *FUN_02006BDC(u32 param0, u32 param1, u32 param2, void *param3, u32 param4); -extern void MOD20_022537E0(void *param0, u32 param1, void *param2, u32 param3, void *param4, u32 param5, u32 param6); -extern void MOD21_02254DAC(void); -extern BOOL MOD20_02253794(void *param0, u32 param1); -extern BOOL MOD20_022537B8(void *param0); -extern UnkStruct02254A6C *MOD20_022538A0(void *param0); -extern BOOL MOD20_02253888(void *param0, void *param1); - -extern void MOD21_02254D90(void); - -extern void FUN_02016C18(u32 param0, u32 param1, void *param2, u32 param3); -extern void FUN_0200687C(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7); -extern void FUN_020068C8(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7); -extern void MOD20_02252D7C(u32 param0, u32 param1); -extern void MOD21_02254C5C(UnkStruct02254A6C *param0); -extern void FUN_02017CD0(u32 param0, u32 param1); -extern void FUN_020178A0(u32 param0, u32 param1); - -extern void MOD11_02252DB4(u32 param0, u32 param1); - -THUMB_FUNC BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1) -{ - UnkStruct02254A6C *strct = (UnkStruct02254A6C *)AllocFromHeap(8, 3 << 8); - u32 sp4; - if (strct != NULL) - { - MOD20_022536F4(strct->Unk08, 8); - strct->Unk00 = param1; - strct->Unk04 = MOD20_02252D34(); - void *res = FUN_02006BDC(12, 0x19, 1, &sp4, 8); - if (res == 0) - { - FreeToHeap(strct); - return FALSE; - } - MOD21_02254AD4((void *)(sp4 + 0xc), strct->Unk30); - FreeToHeap(res); - param0->Unk00 = strct; - return TRUE; - } - return FALSE; -} - -THUMB_FUNC void MOD21_02254AD4(void *param0, void *param1) -{ - s32 i = 0; - for (u32 r6 = 9 << 6; i < 9; r6 -= 0x30) - { - MI_CpuCopy16(param0, param1, 0x40); - MI_CpuCopy16((void *)((u32)param0 + r6), (void *)((u32)param1 + 0x40), 0x10); - i++; - param0 = (void *)((u32)param0 + 0x40); - param1 = (void *)((u32)param1 + 0x50); - } -} - -THUMB_FUNC void MOD21_02254B04(void *param0) -{ - if (param0 != NULL) - { - FreeToHeap(param0); - } -} - -THUMB_FUNC void MOD21_02254B10(u32 *param0, u32 param1) -{ - MOD20_022537E0(MOD21_02254DAC, param1, param0, *param0, (void *)(param0 + 2), 2, 8); -} - -THUMB_FUNC BOOL MOD21_02254B34(void *param0, u32 param1) -{ - return MOD20_02253794((void *)((u32)param0 + 8), param1); -} - -THUMB_FUNC BOOL MOD21_02254B40(void *param0) -{ - return MOD20_022537B8((void *)((u32)param0 + 8)); -} - -THUMB_FUNC BOOL MOD21_02254B4C(void *param0) -{ - return MOD20_02253888((void *)((u32)MOD20_022538A0(param0) + 8), param0); -} - -THUMB_FUNC BOOL MOD21_02254B60(u32 param0, void *param1) -{ -#pragma unused (param0) - UnkStruct02254A6C *strct = MOD20_022538A0(param1); - FUN_02016C18(strct->Unk04, 6, MOD21_02254D90, 0); - FUN_0200687C(12, 23, strct->Unk04, 6, 0, 0, 1, 8); - FUN_020068C8(12, 24, strct->Unk04, 6, 0, 0, 1, 8); - MOD20_02252D7C(0, 0); - MOD21_02254C5C(strct); - FUN_02017CD0(strct->Unk04, 6); - u32 r3 = reg_GXS_DB_DISPCNT; - u32 r2 = reg_GXS_DB_DISPCNT; - vu32 tmp = r3; //unused? wtf - u32 r0 = ~0x1F00 & r2; - r2 = r3 << 19; //cast with shift? can't replicate both though - r3 = r2 >> 27; - r2 = 4 | r3; - r2 <<= 8; - r0 |= r2; - reg_GXS_DB_DISPCNT = r0; - return MOD21_02254B4C(param1); -} - -THUMB_FUNC BOOL MOD21_02254BF4(u32 param0, void *param1) -{ -#pragma unused (param0) - UnkStruct02254A6C *strct = MOD20_022538A0(param1); - MOD21_02254C5C(strct); - FUN_02017CD0(strct->Unk04, 6); - return MOD21_02254B4C(param1); -} - -THUMB_FUNC BOOL MOD21_02254C14(u32 param0, void *param1) -{ -#pragma unused (param0) - UnkStruct02254A6C *strct = MOD20_022538A0(param1); - if (strct->Unk00->Unk0C) - { - MOD11_02252DB4(0, 0); - } - else - { - MOD20_02252D7C(0, 0); - } - return MOD21_02254B4C(param1); -} - -THUMB_FUNC BOOL MOD21_02254C40(u32 param0, void *param1) -{ -#pragma unused (param0) - UnkStruct02254A6C *strct = MOD20_022538A0(param1); - FUN_020178A0(strct->Unk04, 6); - return MOD21_02254B4C(param1); -} -- cgit v1.2.3