Decompile through FUN_02000F4C

This commit is contained in:
PikalaxALT 2020-05-10 16:15:39 -04:00
parent c38f30451b
commit ee0060c513
3 changed files with 77 additions and 94 deletions

View File

@ -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}

View File

@ -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);
}

View File

@ -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);