From ce3a633c5af004dc2d7101d223c95d2a5e1e1471 Mon Sep 17 00:00:00 2001 From: red031000 Date: Sun, 1 Nov 2020 20:11:23 +0000 Subject: decompile MOD05_021E72FC --- arm9/arm9.lsf | 4 +- arm9/modules/05/asm/mod05_021E72FC_asm.s | 172 ++++++++++++++++++++++++++++++ arm9/modules/05/asm/mod05_021E72FC_asm1.s | 55 ---------- arm9/modules/05/asm/mod05_021E72FC_asm2.s | 172 ------------------------------ arm9/modules/05/include/mod05_021E72FC.h | 1 + arm9/modules/05/src/mod05_021E72FC_src.c | 37 +++++++ 6 files changed, 211 insertions(+), 230 deletions(-) create mode 100644 arm9/modules/05/asm/mod05_021E72FC_asm.s delete mode 100644 arm9/modules/05/asm/mod05_021E72FC_asm1.s delete mode 100644 arm9/modules/05/asm/mod05_021E72FC_asm2.s diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index eb4e1fa1..d3eb80a0 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -554,10 +554,8 @@ Overlay MODULE_05 Object mod05_021E5C8C.o Object mod05_021E5E10.o Object mod05_021E5FD8.o - #kinda awkward split, sorry - Object mod05_021E72FC_asm1.o Object mod05_021E72FC_src.o - Object mod05_021E72FC_asm2.o + Object mod05_021E72FC_asm.o Object mod05_021E7504.o Object module_05.o } diff --git a/arm9/modules/05/asm/mod05_021E72FC_asm.s b/arm9/modules/05/asm/mod05_021E72FC_asm.s new file mode 100644 index 00000000..2bfcbe12 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021E72FC_asm.s @@ -0,0 +1,172 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + #in c file + .extern MOD05_021E7388 + + thumb_func_start MOD05_021E73B4 +MOD05_021E73B4: ; 0x021E73B4 + push {r4, r5, r6, lr} + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4, #0x10] + bl FUN_020553A0 + add r6, r0, #0 + bl FUN_02058720 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + ldr r0, [r4, #8] + cmp r0, #0 + beq _021E73DC + cmp r0, #1 + beq _021E73EE + cmp r0, #2 + beq _021E741C + b _021E74CA +_021E73DC: + mov r1, #1 + add r0, r6, #0 + lsl r1, r1, #8 + bl FUN_02058410 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _021E74CA +_021E73EE: + ldr r0, [r4, #0x10] + bl FUN_02057254 + cmp r0, #0 + beq _021E74CA + ldr r0, [r4] + mov r1, #0xc + bl FUN_0205AFDC + add r1, r0, #0 + ldr r0, [r4, #0x10] + bl FUN_02057260 + ldr r0, [r4, #0x10] + ldr r1, [r4] + bl FUN_02055304 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + mov r0, #7 + str r0, [r4, #4] + b _021E74CA +_021E741C: + ldr r0, [r4, #4] + cmp r0, #2 + beq _021E742A + cmp r0, #4 + beq _021E742A + cmp r0, #6 + bne _021E743A +_021E742A: + ldr r0, [r4] + bl MOD05_021E7388 + str r0, [r4] + ldr r0, [r4, #0x10] + ldr r1, [r4] + bl FUN_02055304 +_021E743A: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + bne _021E74CA + add r0, r5, #0 + bl FUN_02054B30 + cmp r0, #1 + bne _021E7452 + mov r0, #3 + str r0, [r4] + b _021E748A +_021E7452: + add r0, r5, #0 + bl FUN_02054B3C + cmp r0, #1 + bne _021E7462 + mov r0, #2 + str r0, [r4] + b _021E748A +_021E7462: + add r0, r5, #0 + bl FUN_02054B48 + cmp r0, #1 + bne _021E7472 + mov r0, #0 + str r0, [r4] + b _021E748A +_021E7472: + add r0, r5, #0 + bl FUN_02054B54 + cmp r0, #1 + bne _021E7482 + mov r0, #1 + str r0, [r4] + b _021E748A +_021E7482: + ldr r0, [r4] + bl MOD05_021E7388 + str r0, [r4] +_021E748A: + ldr r0, [r4, #0x10] + ldr r2, [r4] + add r1, r6, #0 + bl FUN_02056B74 + cmp r0, #0 + bne _021E749E + mov r0, #1 + str r0, [r4, #8] + b _021E74CA +_021E749E: + add r0, r6, #0 + mov r1, #0x80 + bl FUN_02058418 + mov r1, #1 + add r0, r6, #0 + lsl r1, r1, #8 + bl FUN_02058418 + ldr r0, [r4, #0x10] + ldr r1, [r4] + bl FUN_02055304 + add r0, r4, #0 + bl MOD05_021E74F8 + ldr r0, _021E74D0 ; =0x00000658 + mov r1, #0 + bl FUN_020054F0 + mov r0, #1 + pop {r4, r5, r6, pc} +_021E74CA: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_021E74D0: .word 0x00000658 + + thumb_func_start MOD05_021E74D4 +MOD05_021E74D4: ; 0x021E74D4 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #4 + add r1, r5, #0 + bl AllocFromHeapAtEnd + add r4, r0, #0 + bne _021E74E8 + bl ErrorHandling +_021E74E8: + add r0, r4, #0 + mov r1, #0 + add r2, r5, #0 + bl memset + add r0, r4, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E74F8 +MOD05_021E74F8: ; 0x021E74F8 + ldr r3, _021E7500 ; =FUN_02016A8C + add r1, r0, #0 + mov r0, #4 + bx r3 + .balign 4, 0 +_021E7500: .word FUN_02016A8C diff --git a/arm9/modules/05/asm/mod05_021E72FC_asm1.s b/arm9/modules/05/asm/mod05_021E72FC_asm1.s deleted file mode 100644 index 84999c30..00000000 --- a/arm9/modules/05/asm/mod05_021E72FC_asm1.s +++ /dev/null @@ -1,55 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - .section .text - .balign 4, 0 - - #in asm2 - .extern MOD05_021E73B4 - .extern MOD05_021E74D4 - - thumb_func_start MOD05_021E72FC -MOD05_021E72FC: ; 0x021E72FC - push {r4, r5, r6, lr} - add r6, r1, #0 - add r5, r0, #0 - add r0, r6, #0 - bl FUN_020553A0 - bl FUN_02058720 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - add r0, r4, #0 - bl FUN_02054B30 - cmp r0, #1 - bne _021E731E - mov r2, #3 - b _021E734C -_021E731E: - add r0, r4, #0 - bl FUN_02054B3C - cmp r0, #1 - bne _021E732C - mov r2, #2 - b _021E734C -_021E732C: - add r0, r4, #0 - bl FUN_02054B48 - cmp r0, #1 - bne _021E733A - mov r2, #0 - b _021E734C -_021E733A: - add r0, r4, #0 - bl FUN_02054B54 - cmp r0, #1 - bne _021E7348 - mov r2, #1 - b _021E734C -_021E7348: - mov r0, #0 - pop {r4, r5, r6, pc} -_021E734C: - add r0, r5, #0 - add r1, r6, #0 - bl MOD05_021E7358 - mov r0, #1 - pop {r4, r5, r6, pc} diff --git a/arm9/modules/05/asm/mod05_021E72FC_asm2.s b/arm9/modules/05/asm/mod05_021E72FC_asm2.s deleted file mode 100644 index 2bfcbe12..00000000 --- a/arm9/modules/05/asm/mod05_021E72FC_asm2.s +++ /dev/null @@ -1,172 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - .section .text - .balign 4, 0 - - #in c file - .extern MOD05_021E7388 - - thumb_func_start MOD05_021E73B4 -MOD05_021E73B4: ; 0x021E73B4 - push {r4, r5, r6, lr} - bl FUN_0204652C - add r4, r0, #0 - ldr r0, [r4, #0x10] - bl FUN_020553A0 - add r6, r0, #0 - bl FUN_02058720 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - ldr r0, [r4, #8] - cmp r0, #0 - beq _021E73DC - cmp r0, #1 - beq _021E73EE - cmp r0, #2 - beq _021E741C - b _021E74CA -_021E73DC: - mov r1, #1 - add r0, r6, #0 - lsl r1, r1, #8 - bl FUN_02058410 - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - b _021E74CA -_021E73EE: - ldr r0, [r4, #0x10] - bl FUN_02057254 - cmp r0, #0 - beq _021E74CA - ldr r0, [r4] - mov r1, #0xc - bl FUN_0205AFDC - add r1, r0, #0 - ldr r0, [r4, #0x10] - bl FUN_02057260 - ldr r0, [r4, #0x10] - ldr r1, [r4] - bl FUN_02055304 - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - mov r0, #7 - str r0, [r4, #4] - b _021E74CA -_021E741C: - ldr r0, [r4, #4] - cmp r0, #2 - beq _021E742A - cmp r0, #4 - beq _021E742A - cmp r0, #6 - bne _021E743A -_021E742A: - ldr r0, [r4] - bl MOD05_021E7388 - str r0, [r4] - ldr r0, [r4, #0x10] - ldr r1, [r4] - bl FUN_02055304 -_021E743A: - ldr r0, [r4, #4] - sub r0, r0, #1 - str r0, [r4, #4] - bne _021E74CA - add r0, r5, #0 - bl FUN_02054B30 - cmp r0, #1 - bne _021E7452 - mov r0, #3 - str r0, [r4] - b _021E748A -_021E7452: - add r0, r5, #0 - bl FUN_02054B3C - cmp r0, #1 - bne _021E7462 - mov r0, #2 - str r0, [r4] - b _021E748A -_021E7462: - add r0, r5, #0 - bl FUN_02054B48 - cmp r0, #1 - bne _021E7472 - mov r0, #0 - str r0, [r4] - b _021E748A -_021E7472: - add r0, r5, #0 - bl FUN_02054B54 - cmp r0, #1 - bne _021E7482 - mov r0, #1 - str r0, [r4] - b _021E748A -_021E7482: - ldr r0, [r4] - bl MOD05_021E7388 - str r0, [r4] -_021E748A: - ldr r0, [r4, #0x10] - ldr r2, [r4] - add r1, r6, #0 - bl FUN_02056B74 - cmp r0, #0 - bne _021E749E - mov r0, #1 - str r0, [r4, #8] - b _021E74CA -_021E749E: - add r0, r6, #0 - mov r1, #0x80 - bl FUN_02058418 - mov r1, #1 - add r0, r6, #0 - lsl r1, r1, #8 - bl FUN_02058418 - ldr r0, [r4, #0x10] - ldr r1, [r4] - bl FUN_02055304 - add r0, r4, #0 - bl MOD05_021E74F8 - ldr r0, _021E74D0 ; =0x00000658 - mov r1, #0 - bl FUN_020054F0 - mov r0, #1 - pop {r4, r5, r6, pc} -_021E74CA: - mov r0, #0 - pop {r4, r5, r6, pc} - nop -_021E74D0: .word 0x00000658 - - thumb_func_start MOD05_021E74D4 -MOD05_021E74D4: ; 0x021E74D4 - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r0, #4 - add r1, r5, #0 - bl AllocFromHeapAtEnd - add r4, r0, #0 - bne _021E74E8 - bl ErrorHandling -_021E74E8: - add r0, r4, #0 - mov r1, #0 - add r2, r5, #0 - bl memset - add r0, r4, #0 - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E74F8 -MOD05_021E74F8: ; 0x021E74F8 - ldr r3, _021E7500 ; =FUN_02016A8C - add r1, r0, #0 - mov r0, #4 - bx r3 - .balign 4, 0 -_021E7500: .word FUN_02016A8C diff --git a/arm9/modules/05/include/mod05_021E72FC.h b/arm9/modules/05/include/mod05_021E72FC.h index 406d6f6e..3aba6c4d 100644 --- a/arm9/modules/05/include/mod05_021E72FC.h +++ b/arm9/modules/05/include/mod05_021E72FC.h @@ -12,6 +12,7 @@ typedef struct UnkStruct021E7358 } UnkStruct021E7358; +BOOL MOD05_021E72FC(u32 param0, u32 param1); void MOD05_021E7358(u32 param0, u32 param1, u32 param2); u32 MOD05_021E7388(u32 param0); diff --git a/arm9/modules/05/src/mod05_021E72FC_src.c b/arm9/modules/05/src/mod05_021E72FC_src.c index 90b05ce2..63dc6a7c 100644 --- a/arm9/modules/05/src/mod05_021E72FC_src.c +++ b/arm9/modules/05/src/mod05_021E72FC_src.c @@ -5,6 +5,43 @@ extern UnkStruct021E7358 *MOD05_021E74D4(u32 param0); extern void FUN_020054C8(u32 param0); extern MOD05_021E73B4(); extern void FUN_020463CC(u32 param0, void *func, UnkStruct021E7358 *param2); +extern void FUN_020553A0(u32 param0); +extern u32 FUN_02058720(void); +extern BOOL FUN_02054B30(u8 param0); +extern BOOL FUN_02054B3C(u8 param0); +extern BOOL FUN_02054B48(u8 param0); +extern BOOL FUN_02054B54(u8 param0); + +THUMB_FUNC BOOL MOD05_021E72FC(u32 param0, u32 param1) +{ + FUN_020553A0(param1); + u8 res = (u8)FUN_02058720(); + u32 r2; + if (FUN_02054B30(res) == TRUE) + { + r2 = 3; + goto label; + } + else if (FUN_02054B3C(res) == TRUE) + { + r2 = 2; + goto label; + } + else if (FUN_02054B48(res) == TRUE) + { + r2 = 0; + goto label; + } + else if (FUN_02054B54(res) == TRUE) + { + r2 = 1; + goto label; + } + return FALSE; +label: + MOD05_021E7358(param0, param1, r2); + return TRUE; +} THUMB_FUNC void MOD05_021E7358(u32 param0, u32 param1, u32 param2) { -- cgit v1.2.3