summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/arm9.lcf1
-rw-r--r--arm9/asm/unk_02000E0C.s114
-rw-r--r--arm9/src/FUN_02000DF4.c12
-rw-r--r--arm9/src/main.c61
-rw-r--r--include/main.h2
5 files changed, 62 insertions, 128 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf
index cf2bdfb8..4969000e 100644
--- a/arm9/arm9.lcf
+++ b/arm9/arm9.lcf
@@ -120,7 +120,6 @@ SECTIONS {
crt0.o (.rodata)
* (.version)
main.o (.text)
- FUN_02000DF4.o (.text)
unk_02000E0C.o (.text)
string_util.o (.text)
unk_020023C0.o (.text)
diff --git a/arm9/asm/unk_02000E0C.s b/arm9/asm/unk_02000E0C.s
index 9c67c9fd..c4ed472b 100644
--- a/arm9/asm/unk_02000E0C.s
+++ b/arm9/asm/unk_02000E0C.s
@@ -2,118 +2,8 @@
.include "global.inc"
.text
-
- thumb_func_start FUN_02000E0C
-FUN_02000E0C: ; 0x02000E0C
- push {r3, lr}
- ldr r0, _02000E74 ; =0x02106FA0
- ldr r1, [r0, #0xc]
- cmp r1, #0x0
- bne _02000E4A
- ldr r1, [r0, #0x14]
- cmp r1, #0x0
- beq _02000E70
- mov r1, #0x0
- ldr r0, [r0, #0x10]
- mvn r1, r1
- cmp r0, r1
- beq _02000E2C
- mov r1, #0x0
- bl HandleLoadOverlay
-_02000E2C:
- ldr r0, _02000E74 ; =0x02106FA0
- mov r2, #0x0
- ldr r1, [r0, #0x10]
- str r1, [r0, #0x8]
- ldr r0, [r0, #0x14]
- ldr r1, _02000E78 ; =0x02106FB8
- bl FUN_02006234
- ldr r1, _02000E74 ; =0x02106FA0
- str r0, [r1, #0xc]
- mov r0, #0x0
- mvn r0, r0
- str r0, [r1, #0x10]
- mov r0, #0x0
- str r0, [r1, #0x14]
-_02000E4A:
- ldr r0, _02000E74 ; =0x02106FA0
- ldr r0, [r0, #0xc]
- bl FUN_02006290
- cmp r0, #0x0
- beq _02000E70
- ldr r0, _02000E74 ; =0x02106FA0
- ldr r0, [r0, #0xc]
- bl FUN_02006260
- ldr r0, _02000E74 ; =0x02106FA0
- mov r1, #0x0
- str r1, [r0, #0xc]
- ldr r0, [r0, #0x8]
- sub r1, r1, #0x1
- cmp r0, r1
- beq _02000E70
- bl UnloadOverlayByID
-_02000E70:
- pop {r3, pc}
- nop
-_02000E74: .word 0x02106FA0
-_02000E78: .word 0x02106FB8
-
- thumb_func_start FUN_02000E7C
-FUN_02000E7C: ; 0x02000E7C
- push {r3-r5, lr}
- add r5, r0, #0x0
- ldr r0, _02000E98 ; =0x02106FA0
- add r4, r1, #0x0
- ldr r0, [r0, #0x14]
- cmp r0, #0x0
- beq _02000E8E
- bl ErrorHandling
-_02000E8E:
- ldr r0, _02000E98 ; =0x02106FA0
- str r5, [r0, #0x10]
- str r4, [r0, #0x14]
- pop {r3-r5, pc}
- nop
-_02000E98: .word 0x02106FA0
-
- thumb_func_start FUN_02000E9C
-FUN_02000E9C: ; 0x02000E9C
- push {r3, lr}
- bl FUN_0202FB80
- mov r0, #0x1
- add r1, r0, #0x0
- blx OS_WaitIrq
- ldr r0, _02000EC4 ; =0x021C48B8
- ldr r1, [r0, #0x2c]
- add r1, r1, #0x1
- str r1, [r0, #0x2c]
- mov r1, #0x0
- str r1, [r0, #0x30]
- ldr r1, [r0, #0x0]
- cmp r1, #0x0
- beq _02000EC0
- ldr r0, [r0, #0x4]
- blx r1
-_02000EC0:
- pop {r3, pc}
- nop
-_02000EC4: .word 0x021C48B8
-
- thumb_func_start FUN_02000EC8
-FUN_02000EC8: ; 0x02000EC8
- push {r4, lr}
- add r4, r0, #0x0
- bl FUN_02033678
- cmp r0, #0x0
- beq _02000EE2
- blx CARD_TryWaitBackupAsync
- cmp r0, #0x1
- bne _02000EE2
- add r0, r4, #0x0
- blx OS_ResetSystem
-_02000EE2:
- bl FUN_02000E9C
- pop {r4, pc}
+ .extern FUN_02000E9C
+ .extern FUN_02000EC8
thumb_func_start FUN_02000EE8
FUN_02000EE8: ; 0x02000EE8
diff --git a/arm9/src/FUN_02000DF4.c b/arm9/src/FUN_02000DF4.c
deleted file mode 100644
index 80e80b30..00000000
--- a/arm9/src/FUN_02000DF4.c
+++ /dev/null
@@ -1,12 +0,0 @@
-#include "global.h"
-#include "main.h"
-
-extern struct Unk2106FA0 gBacklightTop;
-
-THUMB_FUNC void FUN_02000DF4(void)
-{
- gBacklightTop.unk8 = -1;
- gBacklightTop.unkC = 0;
- gBacklightTop.unk10 = -1;
- gBacklightTop.unk14 = 0;
-}
diff --git a/arm9/src/main.c b/arm9/src/main.c
index 527cd97e..eb02186e 100644
--- a/arm9/src/main.c
+++ b/arm9/src/main.c
@@ -34,7 +34,7 @@ extern int FUN_020337E8(int);
extern void FUN_02034188(int, int);
extern int FUN_020227FC(int);
extern void FUN_02089D90(int);
-extern void FUN_02000E7C(int, struct Unk21DBE18 *);
+extern void FUN_02000E7C(FSOverlayID, struct Unk21DBE18 *);
extern void ErrorHandling(void);
extern void FUN_02000FA4(void);
extern void FUN_0200A2AC(void);
@@ -140,4 +140,61 @@ THUMB_FUNC void NitroMain(void)
FUN_02003C10();
FUN_0201B5CC(gUnknown21C48B8.unk20);
}
-} \ No newline at end of file
+}
+
+THUMB_FUNC void FUN_02000DF4(void)
+{
+ gBacklightTop.unk8 = -1;
+ gBacklightTop.unkC = 0;
+ gBacklightTop.unk10 = -1; // overlay invalid
+ gBacklightTop.unk14 = NULL;
+}
+
+THUMB_FUNC void FUN_02000E0C(void)
+{
+ if (!gBacklightTop.unkC)
+ {
+ if (gBacklightTop.unk14 == NULL)
+ return;
+ if (gBacklightTop.unk10 != -1u)
+ HandleLoadOverlay(gBacklightTop.unk10, 0);
+ gBacklightTop.unk8 = gBacklightTop.unk10;
+ gBacklightTop.unkC = FUN_02006234(gBacklightTop.unk14, &gBacklightTop.unk18, 0);
+ gBacklightTop.unk10 = -1u;
+ gBacklightTop.unk14 = NULL;
+ }
+ if (FUN_02006290(gBacklightTop.unkC))
+ {
+ FUN_02006260(gBacklightTop.unkC);
+ gBacklightTop.unkC = 0;
+ if (gBacklightTop.unk8 != -1u)
+ UnloadOverlayByID(gBacklightTop.unk8);
+ }
+}
+
+THUMB_FUNC void FUN_02000E7C(FSOverlayID id, struct Unk21DBE18 * arg1)
+{
+ if (gBacklightTop.unk14 != NULL)
+ ErrorHandling();
+ gBacklightTop.unk10 = id;
+ gBacklightTop.unk14 = arg1;
+}
+
+THUMB_FUNC void FUN_02000E9C(void)
+{
+ FUN_0202FB80();
+ OS_WaitIrq(1, 1);
+ gUnknown21C48B8.unk2C++;
+ gUnknown21C48B8.unk30 = 0;
+ if (gUnknown21C48B8.unk0 != NULL)
+ gUnknown21C48B8.unk0(gUnknown21C48B8.unk4);
+}
+
+void FUN_02000EC8(u32 parameter)
+{
+ if (FUN_02033678() && CARD_TryWaitBackupAsync() == 1)
+ {
+ OS_ResetSystem(parameter);
+ }
+ FUN_02000E9C();
+}
diff --git a/include/main.h b/include/main.h
index da8d7921..e2a5a937 100644
--- a/include/main.h
+++ b/include/main.h
@@ -13,7 +13,7 @@ struct Unk2106FA0
{
PMBackLightSwitch unk0;
s32 unk4;
- s32 unk8;
+ FSOverlayID unk8;
s32 unkC;
FSOverlayID unk10;
struct Unk21DBE18 * unk14;