summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkira Akashi <rubenru09@aol.com>2021-07-05 23:23:46 +0100
committerGitHub <noreply@github.com>2021-07-05 23:23:46 +0100
commitf71d98bf2843eb8f4c0a140184a6ffa30ed1f1e5 (patch)
tree16cd4b1783be2a37bf10a41ecbad8a86b0bbbf9d
parent7a2362a15aade4fde583b6612cff3d6613a5eaa4 (diff)
parent724330a3f418b4471bc6ec0784a860012d3bfe18 (diff)
Merge pull request #427 from GliMusings/master
decompile unk_0204AF24
-rw-r--r--arm9/asm/unk_0204AF24.s248
-rw-r--r--arm9/src/unk_0204AF24.c135
-rw-r--r--arm9/src/unk_0206015C.c49
-rw-r--r--include/unk_0204AF24.h19
4 files changed, 176 insertions, 275 deletions
diff --git a/arm9/asm/unk_0204AF24.s b/arm9/asm/unk_0204AF24.s
deleted file mode 100644
index e0a88f0f..00000000
--- a/arm9/asm/unk_0204AF24.s
+++ /dev/null
@@ -1,248 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_0204AF24
-FUN_0204AF24: ; 0x0204AF24
- push {r3, lr}
- bl FUN_02046528
- bl FUN_0203739C
- cmp r0, #0x0
- bne _0204AF36
- mov r0, #0x1
- pop {r3, pc}
-_0204AF36:
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_0204AF3C
-FUN_0204AF3C: ; 0x0204AF3C
- push {r3-r5, lr}
- add r5, r0, #0x0
- bl FUN_02046528
- add r4, r0, #0x0
- bl FUN_0203739C
- cmp r0, #0x0
- bne _0204AF54
- bl GF_AssertFail
- pop {r3-r5, pc}
-_0204AF54:
- add r0, r4, #0x0
- bl FUN_02037394
- ldr r1, _0204AF68 ; =FUN_0204AF24
- add r0, r5, #0x0
- mov r2, #0x0
- bl FUN_0204640C
- pop {r3-r5, pc}
- nop
-_0204AF68: .word FUN_0204AF24
-
- thumb_func_start FUN_0204AF6C
-FUN_0204AF6C: ; 0x0204AF6C
- push {r3, lr}
- bl FUN_02046528
- bl FUN_020464A4
- cmp r0, #0x0
- beq _0204AF7E
- mov r0, #0x1
- pop {r3, pc}
-_0204AF7E:
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_0204AF84
-FUN_0204AF84: ; 0x0204AF84
- push {r3-r5, lr}
- add r5, r0, #0x0
- bl FUN_02046528
- add r4, r0, #0x0
- bl FUN_0203739C
- cmp r0, #0x0
- beq _0204AF9C
- bl GF_AssertFail
- pop {r3-r5, pc}
-_0204AF9C:
- add r0, r4, #0x0
- bl FUN_0204649C
- ldr r1, _0204AFB0 ; =FUN_0204AF6C
- add r0, r5, #0x0
- mov r2, #0x0
- bl FUN_0204640C
- pop {r3-r5, pc}
- nop
-_0204AFB0: .word FUN_0204AF6C
-
- thumb_func_start FUN_0204AFB4
-FUN_0204AFB4: ; 0x0204AFB4
- push {r3, lr}
- bl FUN_0200E308
- cmp r0, #0x0
- beq _0204AFC2
- mov r0, #0x1
- pop {r3, pc}
-_0204AFC2:
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_0204AFC8
-FUN_0204AFC8: ; 0x0204AFC8
- push {r3-r4, lr}
- sub sp, #0xc
- add r4, r0, #0x0
- bl FUN_02046528
- bl FUN_0203739C
- cmp r0, #0x0
- bne _0204AFE2
- bl GF_AssertFail
- add sp, #0xc
- pop {r3-r4, pc}
-_0204AFE2:
- mov r0, #0x6
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- mov r0, #0x4
- str r0, [sp, #0x8]
- mov r0, #0x0
- add r1, r0, #0x0
- add r2, r0, #0x0
- add r3, r0, #0x0
- bl FUN_0200E1D0
- ldr r1, _0204B008 ; =FUN_0204AFB4
- add r0, r4, #0x0
- mov r2, #0x0
- bl FUN_0204640C
- add sp, #0xc
- pop {r3-r4, pc}
- .balign 4
-_0204B008: .word FUN_0204AFB4
-
- thumb_func_start FUN_0204B00C
-FUN_0204B00C: ; 0x0204B00C
- push {r3-r4, lr}
- sub sp, #0xc
- add r4, r0, #0x0
- bl FUN_02046528
- bl FUN_0203739C
- cmp r0, #0x0
- bne _0204B026
- bl GF_AssertFail
- add sp, #0xc
- pop {r3-r4, pc}
-_0204B026:
- mov r0, #0x6
- str r0, [sp, #0x0]
- mov r1, #0x1
- str r1, [sp, #0x4]
- mov r0, #0x4
- str r0, [sp, #0x8]
- mov r0, #0x0
- add r2, r1, #0x0
- add r3, r0, #0x0
- bl FUN_0200E1D0
- ldr r1, _0204B04C ; =FUN_0204AFB4
- add r0, r4, #0x0
- mov r2, #0x0
- bl FUN_0204640C
- add sp, #0xc
- pop {r3-r4, pc}
- nop
-_0204B04C: .word FUN_0204AFB4
-
- thumb_func_start FUN_0204B050
-FUN_0204B050: ; 0x0204B050
- push {r3-r5, lr}
- add r5, r0, #0x0
- bl FUN_02046530
- add r4, r0, #0x0
- ldr r0, [r4, #0x0]
- cmp r0, #0x0
- beq _0204B06A
- cmp r0, #0x1
- beq _0204B078
- cmp r0, #0x2
- beq _0204B086
- b _0204B08A
-_0204B06A:
- add r0, r5, #0x0
- bl FUN_0204AFC8
- ldr r0, [r4, #0x0]
- add r0, r0, #0x1
- str r0, [r4, #0x0]
- b _0204B08A
-_0204B078:
- add r0, r5, #0x0
- bl FUN_0204AF3C
- ldr r0, [r4, #0x0]
- add r0, r0, #0x1
- str r0, [r4, #0x0]
- b _0204B08A
-_0204B086:
- mov r0, #0x1
- pop {r3-r5, pc}
-_0204B08A:
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_0204B090
-FUN_0204B090: ; 0x0204B090
- ldr r3, _0204B098 ; =FUN_0204640C
- ldr r1, _0204B09C ; =FUN_0204B050
- mov r2, #0x0
- bx r3
- .balign 4
-_0204B098: .word FUN_0204640C
-_0204B09C: .word FUN_0204B050
-
- thumb_func_start FUN_0204B0A0
-FUN_0204B0A0: ; 0x0204B0A0
- push {r3-r5, lr}
- add r5, r0, #0x0
- bl FUN_02046530
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl FUN_02046528
- ldr r1, [r4, #0x0]
- cmp r1, #0x0
- beq _0204B0C0
- cmp r1, #0x1
- beq _0204B0CE
- cmp r1, #0x2
- beq _0204B0E0
- b _0204B0E4
-_0204B0C0:
- add r0, r5, #0x0
- bl FUN_0204AF84
- ldr r0, [r4, #0x0]
- add r0, r0, #0x1
- str r0, [r4, #0x0]
- b _0204B0E4
-_0204B0CE:
- bl MOD05_021E331C
- add r0, r5, #0x0
- bl FUN_0204B00C
- ldr r0, [r4, #0x0]
- add r0, r0, #0x1
- str r0, [r4, #0x0]
- b _0204B0E4
-_0204B0E0:
- mov r0, #0x1
- pop {r3-r5, pc}
-_0204B0E4:
- mov r0, #0x0
- pop {r3-r5, pc}
-
- thumb_func_start FUN_0204B0E8
-FUN_0204B0E8: ; 0x0204B0E8
- ldr r3, _0204B0F0 ; =FUN_0204640C
- ldr r1, _0204B0F4 ; =FUN_0204B0A0
- mov r2, #0x0
- bx r3
- .balign 4
-_0204B0F0: .word FUN_0204640C
-_0204B0F4: .word FUN_0204B0A0
diff --git a/arm9/src/unk_0204AF24.c b/arm9/src/unk_0204AF24.c
new file mode 100644
index 00000000..31b3ffb0
--- /dev/null
+++ b/arm9/src/unk_0204AF24.c
@@ -0,0 +1,135 @@
+#include "global.h"
+#include "unk_0204AF24.h"
+
+extern void FUN_02037394(struct UnkSavStruct80 *);
+extern u32 FUN_0200E308(void);
+extern void FUN_0200E1D0(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 heap_id);
+extern void MOD05_021E331C(struct UnkSavStruct80 *);
+
+THUMB_FUNC BOOL FUN_0204AF24(struct UnkStruct_0204639C * arg0)
+{
+ if(!FUN_0203739C(FUN_02046528(arg0)))
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_0204AF3C(struct UnkStruct_0204639C * r5)
+{
+ struct UnkSavStruct80 * r4 = FUN_02046528(r5);
+ if(!FUN_0203739C(r4))
+ {
+ GF_ASSERT(0);
+ return;
+ }
+ FUN_02037394(r4);
+ FUN_0204640C(r5, &FUN_0204AF24, NULL);
+}
+
+THUMB_FUNC BOOL FUN_0204AF6C(struct UnkStruct_0204639C * arg0)
+{
+ if(FUN_020464A4(FUN_02046528(arg0)))
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_0204AF84(struct UnkStruct_0204639C * r5)
+{
+ struct UnkSavStruct80 * r4 = FUN_02046528(r5);
+ if(FUN_0203739C(r4))
+ {
+ GF_ASSERT(0);
+ return;
+ }
+ FUN_0204649C(r4);
+ FUN_0204640C(r5, &FUN_0204AF6C, NULL);
+}
+
+THUMB_FUNC BOOL FUN_0204AFB4(struct UnkStruct_0204639C * arg0)
+{
+#pragma unused(arg0)
+ if(FUN_0200E308())
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_0204AFC8(struct UnkStruct_0204639C * r4)
+{
+ if(!FUN_0203739C(FUN_02046528(r4)))
+ {
+ GF_ASSERT(0);
+ return;
+ }
+ FUN_0200E1D0(0, 0, 0, 0, 6, 1, 4);
+ FUN_0204640C(r4, &FUN_0204AFB4, 0);
+}
+
+THUMB_FUNC void FUN_0204B00C(struct UnkStruct_0204639C * r4)
+{
+ if(!FUN_0203739C(FUN_02046528(r4)))
+ {
+ GF_ASSERT(0);
+ return;
+ }
+ FUN_0200E1D0(0, 1, 1, 0, 6, 1, 4);
+ FUN_0204640C(r4, FUN_0204AFB4, 0);
+}
+
+THUMB_FUNC BOOL FUN_0204B050(struct UnkStruct_0204639C * r5)
+{
+ u32 * r4 = FUN_02046530(r5);
+ switch(r4[0])
+ {
+ case 0:
+ FUN_0204AFC8(r5);
+ r4[0]++;
+ break;
+ case 1:
+ FUN_0204AF3C(r5);
+ r4[0]++;
+ break;
+ case 2:
+ return TRUE;
+ default:
+ break;
+ }
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_0204B090(struct UnkStruct_0204639C * r0)
+{
+ FUN_0204640C(r0, &FUN_0204B050, 0);
+}
+
+THUMB_FUNC BOOL FUN_0204B0A0(struct UnkStruct_0204639C * r5)
+{
+ u32 * r4 = FUN_02046530(r5);
+ struct UnkSavStruct80 * r0 = FUN_02046528(r5);
+ switch(r4[0])
+ {
+ case 0:
+ FUN_0204AF84(r5);
+ r4[0]++;
+ break;
+ case 1:
+ MOD05_021E331C(r0);
+ FUN_0204B00C(r5);
+ r4[0]++;
+ break;
+ case 2:
+ return TRUE;
+ default:
+ break;
+ }
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_0204B0E8(struct UnkStruct_0204639C * r0)
+{
+ FUN_0204640C(r0, &FUN_0204B0A0, 0);
+}
diff --git a/arm9/src/unk_0206015C.c b/arm9/src/unk_0206015C.c
index 0bf3a15a..752a9970 100644
--- a/arm9/src/unk_0206015C.c
+++ b/arm9/src/unk_0206015C.c
@@ -3,38 +3,33 @@
#include "heap.h"
#include "event_data.h"
#include "main.h"
+#include "unk_0204AF24.h"
/* Note to future reader, there might be some errors
in the return type / parameters. They are right for this code
but they might not be for every code, please do not blindly
trust these prototypes if you are decompiling these functions. */
-extern THUMB_FUNC u32 MOD06_02244DB0(u32);
-extern THUMB_FUNC void MOD06_02244DBC(void*);
-extern THUMB_FUNC void MOD06_02244DC4(void*, void*);
-extern THUMB_FUNC void MOD06_02244EF8(void*);
-extern THUMB_FUNC void MOD06_02244F18(void*);
-extern THUMB_FUNC BOOL MOD06_02244F24(void*);
-extern THUMB_FUNC void MOD06_02244F2C(void*);
-extern THUMB_FUNC void* MOD06_02245088(struct UnkSavStruct80 * savStruct);
-extern THUMB_FUNC u32 MOD06_02245114(u32, struct UnkSavStruct80*);
-extern THUMB_FUNC void MOD06_02245190(u32);
-extern THUMB_FUNC void MOD06_02245198(u8, u32);
-extern THUMB_FUNC u32 MOD06_022451F0(u32);
-
-extern THUMB_FUNC void PlaySE(u32);
-extern THUMB_FUNC void FUN_02049160(struct UnkStruct_0204639C*, u32);
-extern THUMB_FUNC void FUN_0204AF84(struct UnkStruct_0204639C*);
-extern THUMB_FUNC void FUN_0204AF3C(struct UnkStruct_0204639C *);
-extern THUMB_FUNC void FUN_0204AFC8(struct UnkStruct_0204639C *);
-extern THUMB_FUNC void FUN_0204B00C(struct UnkStruct_0204639C *);
-extern THUMB_FUNC void FUN_0204C1B4(struct UnkStruct_0204639C*, u32,u32,u32,u32,u32,u32,u32);
-extern THUMB_FUNC u32 FUN_020553A0(u32);
-extern THUMB_FUNC void FUN_0205889C(u32, u32);
-extern THUMB_FUNC void FUN_0205F1C4(struct ScriptState *);
-extern THUMB_FUNC void FUN_0205F1D4(struct ScriptState *);
-extern THUMB_FUNC void FUN_0206367C(struct UnkSavStruct80 *, u32);
-
-
+extern u32 MOD06_02244DB0(u32);
+extern void MOD06_02244DBC(void*);
+extern void MOD06_02244DC4(void*, void*);
+extern void MOD06_02244EF8(void*);
+extern void MOD06_02244F18(void*);
+extern BOOL MOD06_02244F24(void*);
+extern void MOD06_02244F2C(void*);
+extern void * MOD06_02245088(struct UnkSavStruct80 * savStruct);
+extern u32 MOD06_02245114(u32, struct UnkSavStruct80*);
+extern void MOD06_02245190(u32);
+extern void MOD06_02245198(u8, u32);
+extern u32 MOD06_022451F0(u32);
+
+extern void PlaySE(u32);
+extern void FUN_02049160(struct UnkStruct_0204639C*, u32);
+extern void FUN_0204C1B4(struct UnkStruct_0204639C*, u32,u32,u32,u32,u32,u32,u32);
+extern u32 FUN_020553A0(u32);
+extern void FUN_0205889C(u32, u32);
+extern void FUN_0205F1C4(struct ScriptState *);
+extern void FUN_0205F1D4(struct ScriptState *);
+extern void FUN_0206367C(struct UnkSavStruct80 *, u32);
THUMB_FUNC void FUN_0206015C(struct UnkSavStruct80 *savStruct)
{
diff --git a/include/unk_0204AF24.h b/include/unk_0204AF24.h
new file mode 100644
index 00000000..e77bcc35
--- /dev/null
+++ b/include/unk_0204AF24.h
@@ -0,0 +1,19 @@
+#ifndef POKEDIAMOND_UNK_0204AF24_H
+#define POKEDIAMOND_UNK_0204AF24_H
+
+#include "nitro/types.h"
+#include "unk_0204639C.h"
+
+BOOL FUN_0204AF24(struct UnkStruct_0204639C * arg0);
+void FUN_0204AF3C(struct UnkStruct_0204639C * r5);
+BOOL FUN_0204AF6C(struct UnkStruct_0204639C * arg0);
+void FUN_0204AF84(struct UnkStruct_0204639C * r5);
+BOOL FUN_0204AFB4(struct UnkStruct_0204639C * arg0);
+void FUN_0204AFC8(struct UnkStruct_0204639C * r4);
+void FUN_0204B00C(struct UnkStruct_0204639C * r4);
+BOOL FUN_0204B050(struct UnkStruct_0204639C * r5);
+void FUN_0204B090(struct UnkStruct_0204639C * r0);
+BOOL FUN_0204B0A0(struct UnkStruct_0204639C * r5);
+void FUN_0204B0E8(struct UnkStruct_0204639C * r0);
+
+#endif // POKEDIAMOND_UNK_0204AF24_H