diff options
-rw-r--r-- | arm9/asm/unk_02000E0C.s | 92 | ||||
-rw-r--r-- | arm9/src/main.c | 64 | ||||
-rw-r--r-- | include/main.h | 15 |
3 files changed, 77 insertions, 94 deletions
diff --git a/arm9/asm/unk_02000E0C.s b/arm9/asm/unk_02000E0C.s index c4ed472b..71700146 100644 --- a/arm9/asm/unk_02000E0C.s +++ b/arm9/asm/unk_02000E0C.s @@ -5,98 +5,6 @@ .extern FUN_02000E9C .extern FUN_02000EC8 - thumb_func_start FUN_02000EE8 -FUN_02000EE8: ; 0x02000EE8 - push {r3, lr} - bl FUN_020335B8 - add r1, r0, #0x0 - cmp r1, #0x1 - beq _02000EFE - cmp r1, #0x2 - beq _02000F06 - cmp r1, #0x3 - beq _02000F0E - pop {r3, pc} -_02000EFE: - mov r0, #0x1 - bl FUN_02000F4C - pop {r3, pc} -_02000F06: - mov r0, #0x0 - bl FUN_02000F4C - pop {r3, pc} -_02000F0E: - mov r0, #0x1 - bl FUN_02000F4C - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02000F18 -FUN_02000F18: ; 0x02000F18 - push {r4, lr} - ldr r1, _02000F48 ; =0x00007FFF - add r4, r0, #0x0 - mov r0, #0x0 - bl FUN_0200E3A0 - ldr r1, _02000F48 ; =0x00007FFF - mov r0, #0x1 - bl FUN_0200E3A0 - bl FUN_02032DAC - cmp r0, #0x0 - beq _02000F3C - bl FUN_020225F8 - bl FUN_0202287C -_02000F3C: - bl FUN_02000FE8 - add r0, r4, #0x0 - bl FUN_02000EC8 - b _02000F3C - .balign 4 -_02000F48: .word 0x00007FFF - - thumb_func_start FUN_02000F4C -FUN_02000F4C: ; 0x02000F4C - push {r4-r6, lr} - add r6, r0, #0x0 - cmp r1, #0x3 - bne _02000F60 - mov r0, #0x0 - mov r1, #0x3 - add r2, r0, #0x0 - bl FUN_02033F70 - b _02000F7A -_02000F60: - cmp r6, #0x0 - bne _02000F70 - mov r0, #0x0 - mov r1, #0x2 - add r2, r0, #0x0 - bl FUN_02033F70 - b _02000F7A -_02000F70: - mov r0, #0x0 - add r1, r0, #0x0 - add r2, r0, #0x0 - bl FUN_02033F70 -_02000F7A: - bl FUN_02032DAC - ldr r5, _02000FA0 ; =0x021C48B8 - mov r4, #0x1 -_02000F82: - bl FUN_02000FE8 - bl FUN_02016464 - ldr r0, [r5, #0x48] - tst r0, r4 - bne _02000F96 - bl FUN_02000E9C - b _02000F82 -_02000F96: - add r0, r6, #0x0 - bl FUN_02000F18 - pop {r4-r6, pc} - nop -_02000FA0: .word 0x021C48B8 - thumb_func_start FUN_02000FA4 FUN_02000FA4: ; 0x02000FA4 push {r4-r5, lr} diff --git a/arm9/src/main.c b/arm9/src/main.c index eb02186e..3236fdaa 100644 --- a/arm9/src/main.c +++ b/arm9/src/main.c @@ -42,7 +42,7 @@ extern void FUN_02015E30(void); extern void FUN_02000EE8(void); extern void FUN_02000FE8(void); extern void FUN_02016464(void); -extern void FUN_02000F18(int); +extern void FUN_02000F18(u32 parameter); extern BOOL FUN_0202FB80(void); extern void FUN_02000E0C(void); extern void FUN_0201B5CC(int); @@ -52,6 +52,7 @@ extern void FUN_020222C4(void); extern void FUN_0200A318(void); extern void FUN_0200E2D8(void); extern void FUN_02003C10(void); +void FUN_02000F4C(int arg0, int arg1); extern struct Unk21DBE18 gUnk021DBE18; extern struct Unk21DBE18 gUnk021D76C8; @@ -190,7 +191,7 @@ THUMB_FUNC void FUN_02000E9C(void) gUnknown21C48B8.unk0(gUnknown21C48B8.unk4); } -void FUN_02000EC8(u32 parameter) +THUMB_FUNC void FUN_02000EC8(u32 parameter) { if (FUN_02033678() && CARD_TryWaitBackupAsync() == 1) { @@ -198,3 +199,62 @@ void FUN_02000EC8(u32 parameter) } FUN_02000E9C(); } + +THUMB_FUNC void FUN_02000EE8(void) +{ + int r1 = FUN_020335B8(); + switch (r1) + { + case 1: + FUN_02000F4C(1, r1); + break; + case 2: + FUN_02000F4C(0, r1); + break; + case 3: + FUN_02000F4C(1, r1); + break; + } +} + +THUMB_FUNC void FUN_02000F18(u32 parameter) +{ + FUN_0200E3A0(0, 0x7FFF); + FUN_0200E3A0(1, 0x7FFF); + if (FUN_02032DAC()) + { + FUN_020225F8(); + FUN_0202287C(); + } + do + { + FUN_02000FE8(); + FUN_02000EC8(parameter); + } while (1); +} + +THUMB_FUNC void FUN_02000F4C(int arg0, int arg1) +{ + if (arg1 == 3) + { + FUN_02033F70(0, 3, 0); + } + else if (arg0 == 0) + { + FUN_02033F70(0, 2, 0); + } + else + { + FUN_02033F70(0, 0, 0); + } + FUN_02032DAC(); + while (1) + { + FUN_02000FE8(); + FUN_02016464(); + if (gUnknown21C48B8.unk48 & 1) + break; + FUN_02000E9C(); + } + FUN_02000F18(arg0); +} diff --git a/include/main.h b/include/main.h index e2a5a937..23059702 100644 --- a/include/main.h +++ b/include/main.h @@ -22,6 +22,21 @@ struct Unk2106FA0 s32 unk20; }; +struct Unk21C4818 +{ + u32 unk0; + u32 unk4; + u32 unk8; + u32 unkC; +}; + +struct Unk21C4828 +{ + u32 unk0; + u32 unk4; + u32 unk8; +}; + struct Unk21C48B8 { void (*unk0)(s32); |