diff options
-rw-r--r-- | arm9/arm9.lcf | 1 | ||||
-rw-r--r-- | arm9/asm/unk_02000E0C.s | 114 | ||||
-rw-r--r-- | arm9/src/FUN_02000DF4.c | 12 | ||||
-rw-r--r-- | arm9/src/main.c | 61 | ||||
-rw-r--r-- | include/main.h | 2 |
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; |