diff options
author | red031000 <rubenru09@aol.com> | 2020-11-04 14:30:38 +0000 |
---|---|---|
committer | red031000 <rubenru09@aol.com> | 2020-11-04 14:31:13 +0000 |
commit | cf5eab9389a246354ea5a2a1f24cb281924e12ec (patch) | |
tree | a2d94a0d58b615813c46285f7b3008b334a64fde | |
parent | 1c1410976dd661f0fffa736c19fe62b54b4f6e4e (diff) |
finish mod05_021E72FC
-rw-r--r-- | arm9/arm9.lsf | 3 | ||||
-rw-r--r-- | arm9/modules/05/asm/mod05_021E72FC_asm.s | 172 | ||||
-rw-r--r-- | arm9/modules/05/include/mod05_021E72FC.h | 6 | ||||
-rw-r--r-- | arm9/modules/05/src/mod05_021E72FC.c | 161 | ||||
-rw-r--r-- | arm9/modules/05/src/mod05_021E72FC_src.c | 70 |
5 files changed, 167 insertions, 245 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index fd44aa0d..6eab7a85 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -554,8 +554,7 @@ Overlay MODULE_05 Object mod05_021E5C8C.o Object mod05_021E5E10.o Object mod05_021E5FD8.o - Object mod05_021E72FC_src.o - Object mod05_021E72FC_asm.o + Object mod05_021E72FC.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 deleted file mode 100644 index 2bfcbe12..00000000 --- a/arm9/modules/05/asm/mod05_021E72FC_asm.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 3aba6c4d..6c61c913 100644 --- a/arm9/modules/05/include/mod05_021E72FC.h +++ b/arm9/modules/05/include/mod05_021E72FC.h @@ -6,7 +6,8 @@ typedef struct UnkStruct021E7358 { u32 Unk00; - u8 dummy[8]; + u32 Unk04; + u32 Unk08; u32 Unk0C; u32 Unk10; @@ -15,5 +16,8 @@ typedef struct UnkStruct021E7358 BOOL MOD05_021E72FC(u32 param0, u32 param1); void MOD05_021E7358(u32 param0, u32 param1, u32 param2); u32 MOD05_021E7388(u32 param0); +BOOL MOD05_021E73B4(UnkStruct021E7358 *param0); +UnkStruct021E7358 *MOD05_021E74D4(u32 param0); +void MOD05_021E74F8(UnkStruct021E7358 *param0); #endif //POKEDIAMOND_MOD05_021E72FC_H diff --git a/arm9/modules/05/src/mod05_021E72FC.c b/arm9/modules/05/src/mod05_021E72FC.c new file mode 100644 index 00000000..2039e113 --- /dev/null +++ b/arm9/modules/05/src/mod05_021E72FC.c @@ -0,0 +1,161 @@ +#include "global.h" +#include "mod05_021E72FC.h" +#include "heap.h" + +extern void FUN_020054C8(u32 param0); +extern void FUN_020463CC(u32 param0, void *func, UnkStruct021E7358 *param2); +extern u32 FUN_020553A0(u32 param0); +extern u32 FUN_02058720(u32 param0); +extern BOOL FUN_02054B30(u8 param0); +extern BOOL FUN_02054B3C(u8 param0); +extern BOOL FUN_02054B48(u8 param0); +extern BOOL FUN_02054B54(u8 param0); +extern UnkStruct021E7358 *FUN_0204652C(UnkStruct021E7358 *param0); +extern void FUN_02058410(u32 param0, u32 param1); +extern BOOL FUN_02057254(u32 param0); +extern u32 FUN_0205AFDC(u32 param0, u32 param1); +extern void FUN_02057260(u32 param0, u32 param1); +extern void FUN_02055304(u32 param0, u32 param1); +extern BOOL FUN_02056B74(u32 param0, u32 param1, u32 param2); +extern void FUN_02058418(u32 param0, u32 param1); +extern void MOD05_021E74F8(UnkStruct021E7358 *param0); +extern void FUN_020054F0(u32 param0, u32 param1); +extern void FUN_02016A8C(u32 param0, void *param1); + +THUMB_FUNC BOOL MOD05_021E72FC(u32 param0, u32 param1) +{ + u8 res = (u8)FUN_02058720(FUN_020553A0(param1)); + 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) +{ + UnkStruct021E7358 *res = MOD05_021E74D4(24); + res->Unk0C = param0; + res->Unk10 = param1; + res->Unk00 = param2; + FUN_020054C8(1624); + FUN_020463CC(param0, MOD05_021E73B4, res); +} + +THUMB_FUNC u32 MOD05_021E7388(u32 param0) +{ + switch (param0) + { + case 0: + return 2; + case 2: + return 1; + case 1: + return 3; + case 3: + return 0; + } + return 0; +} + +THUMB_FUNC BOOL MOD05_021E73B4(UnkStruct021E7358 *param0) +{ + UnkStruct021E7358 *strct = FUN_0204652C(param0); + u32 res = FUN_020553A0(strct->Unk10); + u8 res2 = (u8)FUN_02058720(res); + switch (strct->Unk08) //Unk08, u32? + { + case 0: + FUN_02058410(res, 1 << 8); + strct->Unk08++; + break; + case 1: + if (!FUN_02057254(strct->Unk10)) + { + break; + } + FUN_02057260(strct->Unk10, FUN_0205AFDC(strct->Unk00, 12)); + FUN_02055304(strct->Unk10, strct->Unk00); + strct->Unk08++; + strct->Unk04 = 7; + break; + case 2: + if (strct->Unk04 == 2 || strct->Unk04 == 4 || strct->Unk04 == 6) + { + strct->Unk00 = MOD05_021E7388(strct->Unk00); + FUN_02055304(strct->Unk10, strct->Unk00); + } + if (--(strct->Unk04)) + { + break; + } + if (FUN_02054B30(res2) == TRUE) + { + strct->Unk00 = 3; + } + else if (FUN_02054B3C(res2) == TRUE) + { + strct->Unk00 = 2; + } + else if (FUN_02054B48(res2) == TRUE) + { + strct->Unk00 = 0; + } + else if (FUN_02054B54(res2) == TRUE) + { + strct->Unk00 = 1; + } + else + { + strct->Unk00 = MOD05_021E7388(strct->Unk00); + } + if (FUN_02056B74(strct->Unk10, res, strct->Unk00) == FALSE) + { + strct->Unk08 = 1; + break; + } + FUN_02058418(res, 0x80); + FUN_02058418(res, 1 << 8); + FUN_02055304(strct->Unk10, strct->Unk00); + MOD05_021E74F8(strct); + FUN_020054F0(1624, 0); + return TRUE; + } + return FALSE; +} + +THUMB_FUNC UnkStruct021E7358 *MOD05_021E74D4(u32 param0) +{ + UnkStruct021E7358 *res = (UnkStruct021E7358 *)AllocFromHeapAtEnd(4, param0); + if (res == NULL) + { + ErrorHandling(); + } + memset((void *)res, 0, param0); + return res; +} + +THUMB_FUNC void MOD05_021E74F8(UnkStruct021E7358 *param0) +{ + FUN_02016A8C(4, param0); +} diff --git a/arm9/modules/05/src/mod05_021E72FC_src.c b/arm9/modules/05/src/mod05_021E72FC_src.c deleted file mode 100644 index 63dc6a7c..00000000 --- a/arm9/modules/05/src/mod05_021E72FC_src.c +++ /dev/null @@ -1,70 +0,0 @@ -#include "global.h" -#include "mod05_021E72FC.h" - -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) -{ - UnkStruct021E7358 *res = MOD05_021E74D4(24); - res->Unk0C = param0; - res->Unk10 = param1; - res->Unk00 = param2; - FUN_020054C8(1624); - FUN_020463CC(param0, MOD05_021E73B4, res); -} - -THUMB_FUNC u32 MOD05_021E7388(u32 param0) -{ - switch (param0) - { - case 0: - return 2; - case 2: - return 1; - case 1: - return 3; - case 3: - return 0; - } - return 0; -} |