summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/arm9.lsf1
-rw-r--r--arm9/modules/21/asm/mod21_02254854_asm.s71
-rw-r--r--arm9/modules/21/include/mod21_02254854.h3
-rw-r--r--arm9/modules/21/src/mod21_02254854_src.c66
-rw-r--r--arm9/modules/21/src/module_21_sinit.c13
-rw-r--r--arm9/src/unk_0200CA44.c10
-rw-r--r--include/unk_0200CA44.h8
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