summaryrefslogtreecommitdiff
path: root/arm9/modules/05/src
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/modules/05/src')
-rw-r--r--arm9/modules/05/src/mod05_021E72FC.c161
-rw-r--r--arm9/modules/05/src/mod05_021E72FC_src.c70
2 files changed, 161 insertions, 70 deletions
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;
-}