summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/asm/unk_02000E0C.s92
-rw-r--r--arm9/src/main.c64
-rw-r--r--include/main.h15
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);