diff options
author | red031000 <rubenru09@aol.com> | 2020-11-14 00:07:14 +0000 |
---|---|---|
committer | red031000 <rubenru09@aol.com> | 2020-11-14 00:07:14 +0000 |
commit | bc3be40047d1b9ec45e7b355dff2280e7c5faa0a (patch) | |
tree | 516b778202382ddc6964266f3ef71e79c1cafddf | |
parent | 32fbb72519542c49ac8c33cdc8f4ebf7d808871c (diff) |
more mod 21
-rw-r--r-- | arm9/arm9.lsf | 1 | ||||
-rw-r--r-- | arm9/modules/21/asm/mod21_02254854_asm.s | 71 | ||||
-rw-r--r-- | arm9/modules/21/include/mod21_02254854.h | 3 | ||||
-rw-r--r-- | arm9/modules/21/src/mod21_02254854_src.c | 66 | ||||
-rw-r--r-- | arm9/modules/21/src/module_21_sinit.c | 13 | ||||
-rw-r--r-- | arm9/src/unk_0200CA44.c | 10 | ||||
-rw-r--r-- | include/unk_0200CA44.h | 8 |
7 files changed, 72 insertions, 100 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 20c1b64c..e0073d87 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -663,7 +663,6 @@ Overlay MODULE_21 { ##Pokétch Clock## After MODULE_20 - Object module_21_sinit.o Object mod21_02254854_src.o Object mod21_02254854_asm.o Object mod21_02254A6C.o diff --git a/arm9/modules/21/asm/mod21_02254854_asm.s b/arm9/modules/21/asm/mod21_02254854_asm.s index 2081400a..8da8777f 100644 --- a/arm9/modules/21/asm/mod21_02254854_asm.s +++ b/arm9/modules/21/asm/mod21_02254854_asm.s @@ -3,67 +3,6 @@ .section .text .balign 4, 0 - .extern MOD21_02254918 - - thumb_func_start MOD21_02254930 -MOD21_02254930: ; 0x02254930 - push {r3, r4, r5, lr} - add r4, r1, #0 - add r5, r0, #0 - ldrb r0, [r4] - cmp r0, #3 - bhs _02254966 - ldr r0, [r4, #0x28] - ldr r1, [r4, #0x10] - bl MOD20_02252C14 - ldrb r1, [r4] - add r0, r4, #0 - lsl r2, r1, #2 - ldr r1, _02254968 ; =MOD21_02254D84 - ldr r1, [r1, r2] - blx r1 - cmp r0, #0 - beq _02254966 - add r0, r4, #0 - bl MOD21_02254918 - add r0, r5, #0 - bl FUN_0200CAB4 - ldr r0, [r4, #0x28] - bl MOD20_022529A0 -_02254966: - pop {r3, r4, r5, pc} - .align 2, 0 -_02254968: .word MOD21_02254D84 - thumb_func_end MOD21_02254930 - - thumb_func_start MOD21_0225496C -MOD21_0225496C: ; 0x0225496C - mov r1, #1 - strb r1, [r0, #2] - bx lr - .align 2, 0 - thumb_func_end MOD21_0225496C - - thumb_func_start MOD21_02254974 -MOD21_02254974: ; 0x02254974 - cmp r2, #0 - beq _02254984 - cmp r2, #1 - bne _0225498C - mov r0, #1 - str r0, [r3, #0x20] - strb r0, [r3, #6] - bx lr -_02254984: - mov r0, #0 - str r0, [r3, #0x20] - mov r0, #1 - strb r0, [r3, #6] -_0225498C: - bx lr - .align 2, 0 - thumb_func_end MOD21_02254974 - thumb_func_start MOD21_02254990 MOD21_02254990: ; 0x02254990 ldrb r2, [r0, #2] @@ -189,13 +128,3 @@ _02254A66: pop {r4, pc} .align 2, 0 thumb_func_end MOD21_02254A38 - - .section .rodata - - .global MOD21_02254D80 -MOD21_02254D80: ; 0x02254D80 - .byte 0x10, 0xAF, 0x10, 0xCF - - .global MOD21_02254D84 -MOD21_02254D84: ; 0x02254D84 - .word MOD21_022549A4, MOD21_022549E4, MOD21_02254A38 diff --git a/arm9/modules/21/include/mod21_02254854.h b/arm9/modules/21/include/mod21_02254854.h index c04959b3..dabacf1c 100644 --- a/arm9/modules/21/include/mod21_02254854.h +++ b/arm9/modules/21/include/mod21_02254854.h @@ -18,5 +18,8 @@ typedef struct UnkStruct02254854 BOOL MOD21_02254854(UnkStruct02254854 **param0, u32 param1, u32 param2, u32 param3); BOOL MOD21_0225489C(UnkStruct02254854 *param0, u32 param1, u32 param2, u32 param3); void MOD21_02254918(UnkStruct02254854 *param0); +void MOD21_02254930(u32 param0, UnkStruct02254854 *param1); +void MOD21_0225496C(UnkStruct02254854 *param0); +void MOD21_02254974(u32 param0, u32 param1, u32 param2, UnkStruct02254854 * param3); #endif //POKEDIAMOND_MOD21_02254854_H 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" diff --git a/arm9/src/unk_0200CA44.c b/arm9/src/unk_0200CA44.c index 1a572a89..fd703cd3 100644 --- a/arm9/src/unk_0200CA44.c +++ b/arm9/src/unk_0200CA44.c @@ -2,25 +2,25 @@ #include "main.h" #include "unk_0200CA44.h" -extern BOOL FUN_0201B60C(void *, void (*)(void *, void *), void *, void *); +extern BOOL FUN_0201B60C(void *, void (*)(u32, void *), void *, void *); extern void FUN_0201B6A0(s32); -THUMB_FUNC BOOL FUN_0200CA44(void (*r0)(void *, void *), void * r1, void * r2) +THUMB_FUNC BOOL FUN_0200CA44(void (*r0)(u32, void *), void * r1, void * r2) { return FUN_0201B60C(gMain.unk18, r0, r1, r2); } -THUMB_FUNC BOOL FUN_0200CA60(void (*r0)(void *, void *), void * r1, void * r2) +THUMB_FUNC BOOL FUN_0200CA60(void (*r0)(u32, void *), void * r1, void * r2) { return FUN_0201B60C(gMain.unk1C, r0, r1, r2); } -THUMB_FUNC BOOL FUN_0200CA7C(void (*r0)(void *, void *), void * r1, void * r2) +THUMB_FUNC BOOL FUN_0200CA7C(void (*r0)(u32, void *), void * r1, void * r2) { return FUN_0201B60C(gMain.unk24, r0, r1, r2); } -THUMB_FUNC BOOL FUN_0200CA98(void (*r0)(void *, void *), void * r1, void * r2) +THUMB_FUNC BOOL FUN_0200CA98(void (*r0)(u32, void *), void * r1, void * r2) { return FUN_0201B60C(gMain.unk20, r0, r1, r2); } diff --git a/include/unk_0200CA44.h b/include/unk_0200CA44.h index 3a3be022..2e479ab8 100644 --- a/include/unk_0200CA44.h +++ b/include/unk_0200CA44.h @@ -1,10 +1,10 @@ #ifndef POKEDIAMOND_UNK_0200CA44_H #define POKEDIAMOND_UNK_0200CA44_H -BOOL FUN_0200CA44(void (*r0)(void *, void *), void * r1, void * r2); -BOOL FUN_0200CA60(void (*r0)(void *, void *), void * r1, void * r2); -BOOL FUN_0200CA7C(void (*r0)(void *, void *), void * r1, void * r2); -BOOL FUN_0200CA98(void (*r0)(void *, void *), void * r1, void * r2); +BOOL FUN_0200CA44(void (*r0)(u32, void *), void * r1, void * r2); +BOOL FUN_0200CA60(void (*r0)(u32, void *), void * r1, void * r2); +BOOL FUN_0200CA7C(void (*r0)(u32, void *), void * r1, void * r2); +BOOL FUN_0200CA98(void (*r0)(u32, void *), void * r1, void * r2); void FUN_0200CAB4(s32 unk1); #endif //POKEDIAMOND_UNK_0200CA44_H |