diff options
-rw-r--r-- | arm9/arm9.lsf | 3 | ||||
-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.h | 17 | ||||
-rw-r--r-- | arm9/modules/21/src/mod21_02254A6C_src.c | 31 |
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 |