diff options
author | Akira Akashi <rubenru09@aol.com> | 2021-07-05 23:23:46 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-05 23:23:46 +0100 |
commit | f71d98bf2843eb8f4c0a140184a6ffa30ed1f1e5 (patch) | |
tree | 16cd4b1783be2a37bf10a41ecbad8a86b0bbbf9d | |
parent | 7a2362a15aade4fde583b6612cff3d6613a5eaa4 (diff) | |
parent | 724330a3f418b4471bc6ec0784a860012d3bfe18 (diff) |
Merge pull request #427 from GliMusings/master
decompile unk_0204AF24
-rw-r--r-- | arm9/asm/unk_0204AF24.s | 248 | ||||
-rw-r--r-- | arm9/src/unk_0204AF24.c | 135 | ||||
-rw-r--r-- | arm9/src/unk_0206015C.c | 49 | ||||
-rw-r--r-- | include/unk_0204AF24.h | 19 |
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
|