summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/arm9.lsf3
-rw-r--r--arm9/modules/21/asm/mod21_02254A6C_asm.s (renamed from arm9/modules/21/asm/mod21_02254A6C.s)51
-rw-r--r--arm9/modules/21/include/mod21_02254A6C.h17
-rw-r--r--arm9/modules/21/src/mod21_02254A6C_src.c31
4 files changed, 50 insertions, 52 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index d77a4c21..2085fcbe 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -664,7 +664,8 @@ Overlay MODULE_21
##Pokétch Clock##
After MODULE_20
Object mod21_02254854.o
- Object mod21_02254A6C.o
+ Object mod21_02254A6C_src.o
+ Object mod21_02254A6C_asm.o
}
Overlay MODULE_22
diff --git a/arm9/modules/21/asm/mod21_02254A6C.s b/arm9/modules/21/asm/mod21_02254A6C_asm.s
index 88dcb27c..a5a2d7ae 100644
--- a/arm9/modules/21/asm/mod21_02254A6C.s
+++ b/arm9/modules/21/asm/mod21_02254A6C_asm.s
@@ -3,57 +3,6 @@
.section .text
.balign 4, 0
- thumb_func_start MOD21_02254A6C
-MOD21_02254A6C: ; 0x02254A6C
- push {r4, r5, r6, lr}
- sub sp, #8
- add r6, r1, #0
- mov r1, #3
- add r5, r0, #0
- mov r0, #8
- lsl r1, r1, #8
- bl AllocFromHeap
- add r4, r0, #0
- beq _02254ACC
- add r0, #8
- mov r1, #8
- bl MOD20_022536F4
- str r6, [r4]
- bl MOD20_02252D34
- str r0, [r4, #4]
- mov r0, #8
- str r0, [sp]
- mov r0, #0xc
- mov r1, #0x19
- mov r2, #1
- add r3, sp, #4
- bl FUN_02006BDC
- add r6, r0, #0
- bne _02254AB2
- add r0, r4, #0
- bl FreeToHeap
- add sp, #8
- mov r0, #0
- pop {r4, r5, r6, pc}
-_02254AB2:
- ldr r0, [sp, #4]
- add r1, r4, #0
- add r0, #0xc
- add r1, #0x30
- bl MOD21_02254AD4
- add r0, r6, #0
- bl FreeToHeap
- add sp, #8
- str r4, [r5]
- mov r0, #1
- pop {r4, r5, r6, pc}
-_02254ACC:
- mov r0, #0
- add sp, #8
- pop {r4, r5, r6, pc}
- .align 2, 0
- thumb_func_end MOD21_02254A6C
-
thumb_func_start MOD21_02254AD4
MOD21_02254AD4: ; 0x02254AD4
push {r3, r4, r5, r6, r7, lr}
diff --git a/arm9/modules/21/include/mod21_02254A6C.h b/arm9/modules/21/include/mod21_02254A6C.h
new file mode 100644
index 00000000..9c37ecc5
--- /dev/null
+++ b/arm9/modules/21/include/mod21_02254A6C.h
@@ -0,0 +1,17 @@
+#ifndef POKEDIAMOND_MOD21_02254A6C_H
+#define POKEDIAMOND_MOD21_02254A6C_H
+
+#include "nitro/types.h"
+
+typedef struct UnkStruct02254A6C
+{
+ void *Unk00;
+ u32 Unk04;
+ u32 Unk08[1];
+ u8 padding0[0x24];
+ u32 Unk30[1];
+} UnkStruct02254A6C;
+
+BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1);
+
+#endif //POKEDIAMOND_MOD21_02254A6C_H
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