summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorred031000 <rubenru09@aol.com>2020-11-04 14:30:38 +0000
committerred031000 <rubenru09@aol.com>2020-11-04 14:31:13 +0000
commitcf5eab9389a246354ea5a2a1f24cb281924e12ec (patch)
treea2d94a0d58b615813c46285f7b3008b334a64fde
parent1c1410976dd661f0fffa736c19fe62b54b4f6e4e (diff)
finish mod05_021E72FC
-rw-r--r--arm9/arm9.lsf3
-rw-r--r--arm9/modules/05/asm/mod05_021E72FC_asm.s172
-rw-r--r--arm9/modules/05/include/mod05_021E72FC.h6
-rw-r--r--arm9/modules/05/src/mod05_021E72FC.c161
-rw-r--r--arm9/modules/05/src/mod05_021E72FC_src.c70
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;
-}