summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/arm9.lcf4
-rw-r--r--arm9/asm/unk_020010A8.s (renamed from arm9/asm/unk_02000E0C.s)917
-rw-r--r--arm9/asm/unk_02001B80.s919
-rw-r--r--arm9/lib/include/OS_system.h1
-rw-r--r--arm9/lib/include/syscall.h6
-rw-r--r--arm9/lib/src/OS_system.c1
-rw-r--r--arm9/src/FUN_02000DE4.c220
-rw-r--r--arm9/src/main.c214
-rw-r--r--include/main.h11
9 files changed, 1163 insertions, 1130 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf
index 9ae0d28a..c2d8dd2d 100644
--- a/arm9/arm9.lcf
+++ b/arm9/arm9.lcf
@@ -122,7 +122,9 @@ SECTIONS {
crt0.o (.rodata)
* (.version)
main.o (.text)
- unk_02000E0C.o (.text)
+ FUN_02000DE4.o (.text)
+ unk_020010A8.o (.text)
+ unk_02001B80.o (.text)
string_util.o (.text)
unk_020023C0.o (.text)
poke_overlay.o (.text)
diff --git a/arm9/asm/unk_02000E0C.s b/arm9/asm/unk_020010A8.s
index 15275ac8..56145306 100644
--- a/arm9/asm/unk_02000E0C.s
+++ b/arm9/asm/unk_020010A8.s
@@ -2,8 +2,6 @@
.include "global.inc"
.text
- .extern FUN_02000E9C
- .extern FUN_02000EC8
thumb_func_start FUN_020010A8
FUN_020010A8: ; 0x020010A8
@@ -1512,918 +1510,3 @@ FUN_02001B64: ; 0x02001B64
blx r3
_02001B7E:
pop {r3-r5, pc}
-
- thumb_func_start FUN_02001B80
-FUN_02001B80: ; 0x02001B80
- ldr r3, _02001B88 ; =FUN_020191D0
- ldr r0, [r0, #0xc]
- bx r3
- nop
-_02001B88: .word FUN_020191D0
-
- thumb_func_start FUN_02001B8C
-FUN_02001B8C: ; 0x02001B8C
- push {r3-r7, lr}
- sub sp, #0x8
- add r5, r0, #0x0
- str r3, [sp, #0x0]
- add r0, sp, #0x10
- ldrb r0, [r0, #0x10]
- add r6, r1, #0x0
- mov r1, #0x20
- add r7, r2, #0x0
- str r0, [sp, #0x4]
- bl FUN_02016998
- add r4, r0, #0x0
- add r3, r5, #0x0
- ldmia r3!, {r0-r1}
- add r2, r4, #0x0
- stmia r2!, {r0-r1}
- ldr r0, [r3, #0x0]
- str r0, [r2, #0x0]
- ldr r0, [sp, #0x4]
- bl FUN_02013690
- str r0, [r4, #0xc]
- ldr r0, [sp, #0x24]
- str r0, [r4, #0x10]
- ldr r0, [sp, #0x0]
- strb r0, [r4, #0x15]
- add r0, r4, #0x0
- bl FUN_02001FB4
- strb r0, [r4, #0x16]
- add r0, sp, #0x10
- ldrb r0, [r0, #0x10]
- mov r1, #0x0
- strb r0, [r4, #0x1c]
- strb r6, [r4, #0x17]
- strb r7, [r4, #0x18]
- ldrb r0, [r5, #0x8]
- bl FUN_02002E4C
- add r6, r0, #0x0
- ldrb r0, [r5, #0x8]
- mov r1, #0x2
- bl FUN_02002E4C
- add r0, r6, r0
- strb r0, [r4, #0x19]
- ldrb r0, [r5, #0x8]
- mov r1, #0x1
- bl FUN_02002E4C
- add r6, r0, #0x0
- ldrb r0, [r5, #0x8]
- mov r1, #0x3
- bl FUN_02002E4C
- add r0, r6, r0
- strb r0, [r4, #0x1a]
- add r0, r4, #0x0
- bl FUN_02001FF4
- add r0, r4, #0x0
- bl FUN_02002080
- add r0, r4, #0x0
- add sp, #0x8
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_02001C14
-FUN_02001C14: ; 0x02001C14
- push {r4, lr}
- sub sp, #0x8
- add r4, sp, #0x0
- ldrb r4, [r4, #0x10]
- str r4, [sp, #0x0]
- ldr r4, [sp, #0x14]
- str r4, [sp, #0x4]
- bl FUN_02001B8C
- add r4, r0, #0x0
- ldr r0, [r4, #0x4]
- bl FUN_020191D0
- add r0, r4, #0x0
- add sp, #0x8
- pop {r4, pc}
-
- thumb_func_start FUN_02001C34
-FUN_02001C34: ; 0x02001C34
- push {r4-r6, lr}
- sub sp, #0x8
- add r5, r0, #0x0
- ldrb r0, [r5, #0x8]
- add r6, r1, #0x0
- add r4, r2, #0x0
- mov r1, #0x0
- bl FUN_02002E4C
- add r1, r0, #0x0
- str r4, [sp, #0x0]
- mov r0, #0x2
- str r0, [sp, #0x4]
- add r0, r5, #0x0
- mov r2, #0x0
- add r3, r6, #0x0
- bl FUN_02001C14
- add sp, #0x8
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02001C5C
-FUN_02001C5C: ; 0x02001C5C
- push {r4, lr}
- add r4, r0, #0x0
- cmp r1, #0x0
- beq _02001C68
- ldrb r0, [r4, #0x15]
- strb r0, [r1, #0x0]
-_02001C68:
- ldr r0, [r4, #0xc]
- bl FUN_020136C0
- ldrb r0, [r4, #0x1c]
- add r1, r4, #0x0
- bl FUN_02016A8C
- pop {r4, pc}
-
- thumb_func_start FUN_02001C78
-FUN_02001C78: ; 0x02001C78
- push {r3-r5, lr}
- add r4, r0, #0x0
- mov r1, #0x0
- ldr r2, _02001D24 ; =0x021C48B8
- strb r1, [r4, #0x1b]
- ldr r2, [r2, #0x48]
- mov r5, #0x1
- add r3, r2, #0x0
- tst r3, r5
- beq _02001C9E
- ldr r0, _02001D28 ; =0x000005DC
- bl FUN_020054C8
- ldrb r0, [r4, #0x15]
- ldr r1, [r4, #0x0]
- lsl r0, r0, #0x3
- add r0, r1, r0
- ldr r0, [r0, #0x4]
- pop {r3-r5, pc}
-_02001C9E:
- ldr r3, [r4, #0x10]
- tst r3, r2
- beq _02001CAE
- ldr r0, _02001D28 ; =0x000005DC
- bl FUN_020054C8
- sub r0, r5, #0x3
- pop {r3-r5, pc}
-_02001CAE:
- mov r3, #0x40
- tst r3, r2
- beq _02001CC8
- ldr r2, _02001D28 ; =0x000005DC
- bl FUN_02001E64
- cmp r0, #0x1
- bne _02001CC2
- add r0, r5, #0x0
- strb r0, [r4, #0x1b]
-_02001CC2:
- mov r0, #0x0
- mvn r0, r0
- pop {r3-r5, pc}
-_02001CC8:
- mov r1, #0x80
- tst r1, r2
- beq _02001CE4
- ldr r2, _02001D28 ; =0x000005DC
- add r1, r5, #0x0
- bl FUN_02001E64
- cmp r0, #0x1
- bne _02001CDE
- mov r0, #0x2
- strb r0, [r4, #0x1b]
-_02001CDE:
- mov r0, #0x0
- mvn r0, r0
- pop {r3-r5, pc}
-_02001CE4:
- mov r1, #0x20
- tst r1, r2
- beq _02001D00
- ldr r2, _02001D28 ; =0x000005DC
- mov r1, #0x2
- bl FUN_02001E64
- cmp r0, #0x1
- bne _02001CFA
- mov r0, #0x3
- strb r0, [r4, #0x1b]
-_02001CFA:
- mov r0, #0x0
- mvn r0, r0
- pop {r3-r5, pc}
-_02001D00:
- mov r1, #0x10
- tst r2, r1
- beq _02001D1C
- ldr r2, _02001D28 ; =0x000005DC
- mov r1, #0x3
- bl FUN_02001E64
- cmp r0, #0x1
- bne _02001D16
- mov r0, #0x4
- strb r0, [r4, #0x1b]
-_02001D16:
- mov r0, #0x0
- mvn r0, r0
- pop {r3-r5, pc}
-_02001D1C:
- sub r1, #0x11
- add r0, r1, #0x0
- pop {r3-r5, pc}
- nop
-_02001D24: .word 0x021C48B8
-_02001D28: .word 0x000005DC
-
- thumb_func_start FUN_02001D2C
-FUN_02001D2C: ; 0x02001D2C
- push {r4-r6, lr}
- add r2, r1, #0x0
- add r4, r0, #0x0
- mov r1, #0x0
- ldr r3, _02001DD4 ; =0x021C48B8
- strb r1, [r4, #0x1b]
- ldr r5, [r3, #0x48]
- mov r3, #0x1
- add r6, r5, #0x0
- tst r6, r3
- beq _02001D54
- ldr r0, _02001DD8 ; =0x000005DC
- bl FUN_020054C8
- ldrb r0, [r4, #0x15]
- ldr r1, [r4, #0x0]
- lsl r0, r0, #0x3
- add r0, r1, r0
- ldr r0, [r0, #0x4]
- pop {r4-r6, pc}
-_02001D54:
- ldr r6, [r4, #0x10]
- tst r6, r5
- beq _02001D66
- ldr r0, _02001DD8 ; =0x000005DC
- bl FUN_020054C8
- mov r0, #0x1
- mvn r0, r0
- pop {r4-r6, pc}
-_02001D66:
- mov r6, #0x40
- tst r6, r5
- beq _02001D7E
- bl FUN_02001E64
- cmp r0, #0x1
- bne _02001D78
- mov r0, #0x1
- strb r0, [r4, #0x1b]
-_02001D78:
- mov r0, #0x0
- mvn r0, r0
- pop {r4-r6, pc}
-_02001D7E:
- mov r1, #0x80
- tst r1, r5
- beq _02001D98
- add r1, r3, #0x0
- bl FUN_02001E64
- cmp r0, #0x1
- bne _02001D92
- mov r0, #0x2
- strb r0, [r4, #0x1b]
-_02001D92:
- mov r0, #0x0
- mvn r0, r0
- pop {r4-r6, pc}
-_02001D98:
- mov r1, #0x20
- tst r1, r5
- beq _02001DB2
- mov r1, #0x2
- bl FUN_02001E64
- cmp r0, #0x1
- bne _02001DAC
- mov r0, #0x3
- strb r0, [r4, #0x1b]
-_02001DAC:
- mov r0, #0x0
- mvn r0, r0
- pop {r4-r6, pc}
-_02001DB2:
- mov r1, #0x10
- add r3, r5, #0x0
- tst r3, r1
- beq _02001DCE
- mov r1, #0x3
- bl FUN_02001E64
- cmp r0, #0x1
- bne _02001DC8
- mov r0, #0x4
- strb r0, [r4, #0x1b]
-_02001DC8:
- mov r0, #0x0
- mvn r0, r0
- pop {r4-r6, pc}
-_02001DCE:
- sub r1, #0x11
- add r0, r1, #0x0
- pop {r4-r6, pc}
- .balign 4
-_02001DD4: .word 0x021C48B8
-_02001DD8: .word 0x000005DC
-
- thumb_func_start FUN_02001DDC
-FUN_02001DDC: ; 0x02001DDC
- push {r4, lr}
- add r4, r0, #0x0
- cmp r1, #0x5
- bhi _02001E52
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #0x6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_02001DF0: ; jump table (using 16-bit offset)
- .short _02001DFC - _02001DF0 - 2; case 0
- .short _02001E0E - _02001DF0 - 2; case 1
- .short _02001E1A - _02001DF0 - 2; case 2
- .short _02001E28 - _02001DF0 - 2; case 3
- .short _02001E36 - _02001DF0 - 2; case 4
- .short _02001E44 - _02001DF0 - 2; case 5
-_02001DFC:
- ldr r0, _02001E58 ; =0x000005DC
- bl FUN_020054C8
- ldrb r0, [r4, #0x15]
- ldr r1, [r4, #0x0]
- lsl r0, r0, #0x3
- add r0, r1, r0
- ldr r0, [r0, #0x4]
- pop {r4, pc}
-_02001E0E:
- ldr r0, _02001E58 ; =0x000005DC
- bl FUN_020054C8
- mov r0, #0x1
- mvn r0, r0
- pop {r4, pc}
-_02001E1A:
- ldr r2, _02001E58 ; =0x000005DC
- mov r1, #0x0
- bl FUN_02001E64
- mov r0, #0x0
- mvn r0, r0
- pop {r4, pc}
-_02001E28:
- ldr r2, _02001E58 ; =0x000005DC
- mov r1, #0x1
- bl FUN_02001E64
- mov r0, #0x0
- mvn r0, r0
- pop {r4, pc}
-_02001E36:
- ldr r2, _02001E58 ; =0x000005DC
- mov r1, #0x2
- bl FUN_02001E64
- mov r0, #0x0
- mvn r0, r0
- pop {r4, pc}
-_02001E44:
- ldr r2, _02001E58 ; =0x000005DC
- mov r1, #0x3
- bl FUN_02001E64
- mov r0, #0x0
- mvn r0, r0
- pop {r4, pc}
-_02001E52:
- mov r0, #0x0
- mvn r0, r0
- pop {r4, pc}
- .balign 4
-_02001E58: .word 0x000005DC
-
- thumb_func_start FUN_02001E5C
-FUN_02001E5C: ; 0x02001E5C
- ldrb r0, [r0, #0x15]
- bx lr
-
- thumb_func_start FUN_02001E60
-FUN_02001E60: ; 0x02001E60
- ldrb r0, [r0, #0x1b]
- bx lr
-
- thumb_func_start FUN_02001E64
-FUN_02001E64: ; 0x02001E64
- push {r4-r7, lr}
- sub sp, #0xc
- add r5, r0, #0x0
- add r6, r2, #0x0
- ldrb r4, [r5, #0x15]
- bl FUN_02001EBC
- cmp r0, #0x0
- bne _02001E7C
- add sp, #0xc
- mov r0, #0x0
- pop {r4-r7, pc}
-_02001E7C:
- ldrb r0, [r5, #0x8]
- mov r1, #0x6
- bl FUN_02002E4C
- add r1, sp, #0x8
- add r7, r0, #0x0
- add r0, r5, #0x0
- add r1, #0x1
- add r2, sp, #0x8
- add r3, r4, #0x0
- bl FUN_020020B0
- mov r0, #0x8
- str r0, [sp, #0x0]
- ldrb r0, [r5, #0x1a]
- add r3, sp, #0x8
- add r1, r7, #0x0
- str r0, [sp, #0x4]
- ldrb r2, [r3, #0x1]
- ldrb r3, [r3, #0x0]
- ldr r0, [r5, #0x4]
- bl FUN_020196F4
- add r0, r5, #0x0
- bl FUN_02002080
- add r0, r6, #0x0
- bl FUN_020054C8
- mov r0, #0x1
- add sp, #0xc
- pop {r4-r7, pc}
-
- thumb_func_start FUN_02001EBC
-FUN_02001EBC: ; 0x02001EBC
- push {r4-r6, lr}
- add r5, r0, #0x0
- cmp r1, #0x0
- bne _02001EFA
- ldrb r6, [r5, #0xa]
- cmp r6, #0x1
- bhi _02001ECE
- mov r0, #0x0
- pop {r4-r6, pc}
-_02001ECE:
- ldrb r4, [r5, #0x15]
- add r1, r6, #0x0
- add r0, r4, #0x0
- bl _s32_div_f
- cmp r1, #0x0
- bne _02001EF2
- ldrb r0, [r5, #0xb]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x1e
- bne _02001EE8
- mov r0, #0x0
- pop {r4-r6, pc}
-_02001EE8:
- sub r0, r6, #0x1
- add r0, r4, r0
- lsl r0, r0, #0x18
- asr r2, r0, #0x18
- b _02001F9A
-_02001EF2:
- sub r0, r4, #0x1
- lsl r0, r0, #0x18
- asr r2, r0, #0x18
- b _02001F9A
-_02001EFA:
- cmp r1, #0x1
- bne _02001F32
- ldrb r1, [r5, #0xa]
- cmp r1, #0x1
- bhi _02001F08
- mov r0, #0x0
- pop {r4-r6, pc}
-_02001F08:
- ldrb r6, [r5, #0x15]
- sub r4, r1, #0x1
- add r0, r6, #0x0
- bl _s32_div_f
- cmp r4, r1
- bne _02001F2A
- ldrb r0, [r5, #0xb]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x1e
- bne _02001F22
- mov r0, #0x0
- pop {r4-r6, pc}
-_02001F22:
- sub r0, r6, r4
- lsl r0, r0, #0x18
- asr r2, r0, #0x18
- b _02001F9A
-_02001F2A:
- add r0, r6, #0x1
- lsl r0, r0, #0x18
- asr r2, r0, #0x18
- b _02001F9A
-_02001F32:
- cmp r1, #0x2
- bne _02001F68
- ldrb r3, [r5, #0x9]
- cmp r3, #0x1
- bhi _02001F40
- mov r0, #0x0
- pop {r4-r6, pc}
-_02001F40:
- ldrb r2, [r5, #0xa]
- ldrb r1, [r5, #0x15]
- cmp r1, r2
- bhs _02001F60
- ldrb r0, [r5, #0xb]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x1e
- bne _02001F54
- mov r0, #0x0
- pop {r4-r6, pc}
-_02001F54:
- sub r0, r3, #0x1
- mul r0, r2
- add r0, r1, r0
- lsl r0, r0, #0x18
- asr r2, r0, #0x18
- b _02001F9A
-_02001F60:
- sub r0, r1, r2
- lsl r0, r0, #0x18
- asr r2, r0, #0x18
- b _02001F9A
-_02001F68:
- ldrb r2, [r5, #0x9]
- cmp r2, #0x1
- bhi _02001F72
- mov r0, #0x0
- pop {r4-r6, pc}
-_02001F72:
- ldrb r1, [r5, #0xa]
- ldrb r0, [r5, #0x15]
- sub r2, r2, #0x1
- mul r2, r1
- cmp r0, r2
- blt _02001F94
- ldrb r2, [r5, #0xb]
- lsl r2, r2, #0x18
- lsr r2, r2, #0x1e
- bne _02001F8A
- mov r0, #0x0
- pop {r4-r6, pc}
-_02001F8A:
- bl _s32_div_f
- lsl r0, r1, #0x18
- asr r2, r0, #0x18
- b _02001F9A
-_02001F94:
- add r0, r0, r1
- lsl r0, r0, #0x18
- asr r2, r0, #0x18
-_02001F9A:
- ldr r1, [r5, #0x0]
- lsl r0, r2, #0x3
- add r0, r1, r0
- ldr r1, [r0, #0x4]
- mov r0, #0x2
- mvn r0, r0
- cmp r1, r0
- bne _02001FAE
- mov r0, #0x0
- pop {r4-r6, pc}
-_02001FAE:
- strb r2, [r5, #0x15]
- mov r0, #0x1
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02001FB4
-FUN_02001FB4: ; 0x02001FB4
- push {r3-r7, lr}
- add r5, r0, #0x0
- ldrb r1, [r5, #0x9]
- ldrb r0, [r5, #0xa]
- mov r6, #0x0
- add r4, r6, #0x0
- mul r0, r1
- cmp r0, #0x0
- ble _02001FF0
- add r7, r6, #0x0
-_02001FC8:
- ldr r2, [r5, #0x0]
- lsl r1, r4, #0x3
- ldr r1, [r2, r1]
- ldrb r0, [r5, #0x8]
- add r2, r7, #0x0
- bl FUN_02002E14
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- cmp r6, r0
- bhs _02001FE0
- add r6, r0, #0x0
-_02001FE0:
- add r0, r4, #0x1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
- ldrb r1, [r5, #0x9]
- ldrb r0, [r5, #0xa]
- mul r0, r1
- cmp r4, r0
- blt _02001FC8
-_02001FF0:
- add r0, r6, #0x0
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02001FF4
-FUN_02001FF4: ; 0x02001FF4
- push {r3-r7, lr}
- sub sp, #0x10
- add r5, r0, #0x0
- ldrb r0, [r5, #0x8]
- mov r1, #0x6
- bl FUN_02002E4C
- add r1, r0, #0x0
- ldr r0, [r5, #0x4]
- bl FUN_02019620
- ldrb r0, [r5, #0x19]
- ldrb r1, [r5, #0x16]
- ldrb r7, [r5, #0x17]
- lsl r0, r0, #0x1
- add r0, r1, r0
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0xc]
- ldrb r0, [r5, #0x9]
- mov r6, #0x0
- cmp r0, #0x0
- bls _0200207C
-_02002022:
- ldrb r2, [r5, #0xa]
- mov r4, #0x0
- cmp r2, #0x0
- bls _02002068
-_0200202A:
- ldrb r3, [r5, #0xb]
- mul r2, r6
- ldrb r0, [r5, #0x1a]
- lsl r3, r3, #0x1c
- lsr r3, r3, #0x1c
- add r0, r0, r3
- ldrb r1, [r5, #0x18]
- mul r0, r4
- add r2, r4, r2
- add r0, r1, r0
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0xff
- str r0, [sp, #0x4]
- mov r0, #0x0
- str r0, [sp, #0x8]
- ldr r3, [r5, #0x0]
- lsl r2, r2, #0x3
- ldr r2, [r3, r2]
- ldrb r1, [r5, #0x8]
- ldr r0, [r5, #0x4]
- add r3, r7, #0x0
- bl FUN_0201BD84
- add r0, r4, #0x1
- lsl r0, r0, #0x18
- ldrb r2, [r5, #0xa]
- lsr r4, r0, #0x18
- cmp r4, r2
- blo _0200202A
-_02002068:
- ldr r0, [sp, #0xc]
- add r0, r7, r0
- lsl r0, r0, #0x18
- lsr r7, r0, #0x18
- add r0, r6, #0x1
- lsl r0, r0, #0x18
- lsr r6, r0, #0x18
- ldrb r0, [r5, #0x9]
- cmp r6, r0
- blo _02002022
-_0200207C:
- add sp, #0x10
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02002080
-FUN_02002080: ; 0x02002080
- push {r3-r4, lr}
- sub sp, #0x4
- add r4, r0, #0x0
- ldrb r1, [r4, #0xb]
- lsl r1, r1, #0x1a
- lsr r1, r1, #0x1e
- cmp r1, #0x1
- beq _020020AA
- ldrb r3, [r4, #0x15]
- add r1, sp, #0x0
- add r1, #0x1
- add r2, sp, #0x0
- bl FUN_020020B0
- add r3, sp, #0x0
- ldrb r2, [r3, #0x1]
- ldrb r3, [r3, #0x0]
- ldr r0, [r4, #0xc]
- ldr r1, [r4, #0x4]
- bl FUN_020136F8
-_020020AA:
- add sp, #0x4
- pop {r3-r4, pc}
- .balign 4
-
- thumb_func_start FUN_020020B0
-FUN_020020B0: ; 0x020020B0
- push {r3-r7, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- add r7, r3, #0x0
- ldrb r1, [r5, #0xa]
- add r0, r7, #0x0
- add r6, r2, #0x0
- bl _s32_div_f
- ldrb r2, [r5, #0x19]
- ldrb r1, [r5, #0x16]
- lsl r2, r2, #0x1
- add r1, r1, r2
- mul r1, r0
- strb r1, [r4, #0x0]
- ldrb r1, [r5, #0xa]
- add r0, r7, #0x0
- bl _s32_div_f
- ldrb r2, [r5, #0xb]
- ldrb r3, [r5, #0x1a]
- ldrb r0, [r5, #0x18]
- lsl r2, r2, #0x1c
- lsr r2, r2, #0x1c
- add r2, r3, r2
- mul r2, r1
- add r0, r0, r2
- strb r0, [r6, #0x0]
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_020020EC
-FUN_020020EC: ; 0x020020EC
- push {r3-r7, lr}
- sub sp, #0x20
- ldr r5, [sp, #0x3c]
- str r2, [sp, #0xc]
- add r7, r0, #0x0
- str r1, [sp, #0x8]
- str r3, [sp, #0x10]
- ldr r2, _02002194 ; =0x00000141
- mov r0, #0x1
- mov r1, #0x1a
- add r3, r5, #0x0
- bl FUN_0200A86C
- add r4, r0, #0x0
- mov r0, #0x2
- add r1, r5, #0x0
- bl FUN_02012838
- add r1, r4, #0x0
- mov r2, #0x29
- mov r3, #0x0
- add r6, r0, #0x0
- bl FUN_02012880
- mov r3, #0x2a
- add r2, r3, #0x0
- add r0, r6, #0x0
- add r1, r4, #0x0
- sub r3, #0x2c
- bl FUN_02012880
- add r0, r4, #0x0
- bl FUN_0200A8B8
- add r0, r5, #0x0
- mov r1, #0x1
- str r6, [sp, #0x14]
- bl FUN_02018FF4
- add r1, r0, #0x0
- str r1, [sp, #0x18]
- mov r0, #0x0
- add r3, sp, #0x14
- strb r0, [r3, #0x8]
- mov r0, #0x1
- strb r0, [r3, #0x9]
- mov r0, #0x2
- strb r0, [r3, #0xa]
- ldrb r0, [r3, #0xb]
- mov r2, #0xf
- bic r0, r2
- strb r0, [r3, #0xb]
- ldrb r4, [r3, #0xb]
- mov r0, #0x30
- bic r4, r0
- strb r4, [r3, #0xb]
- ldrb r0, [r3, #0xb]
- bic r0, r2
- strb r0, [r3, #0xb]
- ldr r2, [sp, #0x8]
- add r0, r7, #0x0
- bl FUN_02019150
- ldr r0, [sp, #0x18]
- ldr r2, [sp, #0xc]
- ldr r3, [sp, #0x10]
- mov r1, #0x1
- bl FUN_0200CCA4
- lsl r0, r5, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x2
- str r0, [sp, #0x4]
- add r3, sp, #0x28
- ldrb r3, [r3, #0x10]
- add r0, sp, #0x14
- mov r1, #0x8
- mov r2, #0x0
- bl FUN_02001C14
- add sp, #0x20
- pop {r3-r7, pc}
- nop
-_02002194: .word 0x00000141
-
- thumb_func_start FUN_02002198
-FUN_02002198: ; 0x02002198
- push {r4, lr}
- sub sp, #0x8
- mov r4, #0x0
- str r4, [sp, #0x0]
- ldr r4, [sp, #0x10]
- str r4, [sp, #0x4]
- bl FUN_020020EC
- add sp, #0x8
- pop {r4, pc}
-
- thumb_func_start FUN_020021AC
-FUN_020021AC: ; 0x020021AC
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- bl FUN_02001C78
- add r6, r0, #0x0
- mov r0, #0x0
- mvn r0, r0
- cmp r6, r0
- beq _020021C8
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_020021EC
-_020021C8:
- add r0, r6, #0x0
- pop {r4-r6, pc}
-
- thumb_func_start FUN_020021CC
-FUN_020021CC: ; 0x020021CC
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r4, r2, #0x0
- bl FUN_02001DDC
- add r6, r0, #0x0
- mov r0, #0x0
- mvn r0, r0
- cmp r6, r0
- beq _020021E8
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_020021EC
-_020021E8:
- add r0, r6, #0x0
- pop {r4-r6, pc}
-
- thumb_func_start FUN_020021EC
-FUN_020021EC: ; 0x020021EC
- push {r3-r5, lr}
- add r5, r0, #0x0
- ldr r0, [r5, #0x4]
- add r4, r1, #0x0
- mov r1, #0x0
- bl FUN_0200CCF8
- ldr r0, [r5, #0x4]
- bl FUN_02019178
- ldr r1, [r5, #0x4]
- add r0, r4, #0x0
- bl FUN_02016A8C
- ldr r0, [r5, #0x0]
- bl FUN_02012870
- add r0, r5, #0x0
- mov r1, #0x0
- bl FUN_02001C5C
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02002218
-FUN_02002218: ; 0x02002218
- push {r4, lr}
- sub sp, #0x18
- mov r4, #0x8
- lsl r1, r1, #0x10
- str r4, [sp, #0x0]
- mov r3, #0x10
- str r3, [sp, #0x4]
- lsr r1, r1, #0x10
- str r1, [sp, #0x8]
- lsl r1, r2, #0x10
- lsr r1, r1, #0x10
- str r1, [sp, #0xc]
- str r4, [sp, #0x10]
- ldr r1, _02002244 ; =0x020ECAC8
- mov r2, #0x0
- str r3, [sp, #0x14]
- add r3, r2, #0x0
- bl FUN_02019658
- add sp, #0x18
- pop {r4, pc}
- nop
-_02002244: .word 0x020ECAC8
diff --git a/arm9/asm/unk_02001B80.s b/arm9/asm/unk_02001B80.s
new file mode 100644
index 00000000..0402fb69
--- /dev/null
+++ b/arm9/asm/unk_02001B80.s
@@ -0,0 +1,919 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ thumb_func_start FUN_02001B80
+FUN_02001B80: ; 0x02001B80
+ ldr r3, _02001B88 ; =FUN_020191D0
+ ldr r0, [r0, #0xc]
+ bx r3
+ nop
+_02001B88: .word FUN_020191D0
+
+ thumb_func_start FUN_02001B8C
+FUN_02001B8C: ; 0x02001B8C
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ str r3, [sp, #0x0]
+ add r0, sp, #0x10
+ ldrb r0, [r0, #0x10]
+ add r6, r1, #0x0
+ mov r1, #0x20
+ add r7, r2, #0x0
+ str r0, [sp, #0x4]
+ bl FUN_02016998
+ add r4, r0, #0x0
+ add r3, r5, #0x0
+ ldmia r3!, {r0-r1}
+ add r2, r4, #0x0
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ str r0, [r2, #0x0]
+ ldr r0, [sp, #0x4]
+ bl FUN_02013690
+ str r0, [r4, #0xc]
+ ldr r0, [sp, #0x24]
+ str r0, [r4, #0x10]
+ ldr r0, [sp, #0x0]
+ strb r0, [r4, #0x15]
+ add r0, r4, #0x0
+ bl FUN_02001FB4
+ strb r0, [r4, #0x16]
+ add r0, sp, #0x10
+ ldrb r0, [r0, #0x10]
+ mov r1, #0x0
+ strb r0, [r4, #0x1c]
+ strb r6, [r4, #0x17]
+ strb r7, [r4, #0x18]
+ ldrb r0, [r5, #0x8]
+ bl FUN_02002E4C
+ add r6, r0, #0x0
+ ldrb r0, [r5, #0x8]
+ mov r1, #0x2
+ bl FUN_02002E4C
+ add r0, r6, r0
+ strb r0, [r4, #0x19]
+ ldrb r0, [r5, #0x8]
+ mov r1, #0x1
+ bl FUN_02002E4C
+ add r6, r0, #0x0
+ ldrb r0, [r5, #0x8]
+ mov r1, #0x3
+ bl FUN_02002E4C
+ add r0, r6, r0
+ strb r0, [r4, #0x1a]
+ add r0, r4, #0x0
+ bl FUN_02001FF4
+ add r0, r4, #0x0
+ bl FUN_02002080
+ add r0, r4, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02001C14
+FUN_02001C14: ; 0x02001C14
+ push {r4, lr}
+ sub sp, #0x8
+ add r4, sp, #0x0
+ ldrb r4, [r4, #0x10]
+ str r4, [sp, #0x0]
+ ldr r4, [sp, #0x14]
+ str r4, [sp, #0x4]
+ bl FUN_02001B8C
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ bl FUN_020191D0
+ add r0, r4, #0x0
+ add sp, #0x8
+ pop {r4, pc}
+
+ thumb_func_start FUN_02001C34
+FUN_02001C34: ; 0x02001C34
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ ldrb r0, [r5, #0x8]
+ add r6, r1, #0x0
+ add r4, r2, #0x0
+ mov r1, #0x0
+ bl FUN_02002E4C
+ add r1, r0, #0x0
+ str r4, [sp, #0x0]
+ mov r0, #0x2
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ mov r2, #0x0
+ add r3, r6, #0x0
+ bl FUN_02001C14
+ add sp, #0x8
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02001C5C
+FUN_02001C5C: ; 0x02001C5C
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r1, #0x0
+ beq _02001C68
+ ldrb r0, [r4, #0x15]
+ strb r0, [r1, #0x0]
+_02001C68:
+ ldr r0, [r4, #0xc]
+ bl FUN_020136C0
+ ldrb r0, [r4, #0x1c]
+ add r1, r4, #0x0
+ bl FUN_02016A8C
+ pop {r4, pc}
+
+ thumb_func_start FUN_02001C78
+FUN_02001C78: ; 0x02001C78
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ mov r1, #0x0
+ ldr r2, _02001D24 ; =0x021C48B8
+ strb r1, [r4, #0x1b]
+ ldr r2, [r2, #0x48]
+ mov r5, #0x1
+ add r3, r2, #0x0
+ tst r3, r5
+ beq _02001C9E
+ ldr r0, _02001D28 ; =0x000005DC
+ bl FUN_020054C8
+ ldrb r0, [r4, #0x15]
+ ldr r1, [r4, #0x0]
+ lsl r0, r0, #0x3
+ add r0, r1, r0
+ ldr r0, [r0, #0x4]
+ pop {r3-r5, pc}
+_02001C9E:
+ ldr r3, [r4, #0x10]
+ tst r3, r2
+ beq _02001CAE
+ ldr r0, _02001D28 ; =0x000005DC
+ bl FUN_020054C8
+ sub r0, r5, #0x3
+ pop {r3-r5, pc}
+_02001CAE:
+ mov r3, #0x40
+ tst r3, r2
+ beq _02001CC8
+ ldr r2, _02001D28 ; =0x000005DC
+ bl FUN_02001E64
+ cmp r0, #0x1
+ bne _02001CC2
+ add r0, r5, #0x0
+ strb r0, [r4, #0x1b]
+_02001CC2:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r5, pc}
+_02001CC8:
+ mov r1, #0x80
+ tst r1, r2
+ beq _02001CE4
+ ldr r2, _02001D28 ; =0x000005DC
+ add r1, r5, #0x0
+ bl FUN_02001E64
+ cmp r0, #0x1
+ bne _02001CDE
+ mov r0, #0x2
+ strb r0, [r4, #0x1b]
+_02001CDE:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r5, pc}
+_02001CE4:
+ mov r1, #0x20
+ tst r1, r2
+ beq _02001D00
+ ldr r2, _02001D28 ; =0x000005DC
+ mov r1, #0x2
+ bl FUN_02001E64
+ cmp r0, #0x1
+ bne _02001CFA
+ mov r0, #0x3
+ strb r0, [r4, #0x1b]
+_02001CFA:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r5, pc}
+_02001D00:
+ mov r1, #0x10
+ tst r2, r1
+ beq _02001D1C
+ ldr r2, _02001D28 ; =0x000005DC
+ mov r1, #0x3
+ bl FUN_02001E64
+ cmp r0, #0x1
+ bne _02001D16
+ mov r0, #0x4
+ strb r0, [r4, #0x1b]
+_02001D16:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r5, pc}
+_02001D1C:
+ sub r1, #0x11
+ add r0, r1, #0x0
+ pop {r3-r5, pc}
+ nop
+_02001D24: .word 0x021C48B8
+_02001D28: .word 0x000005DC
+
+ thumb_func_start FUN_02001D2C
+FUN_02001D2C: ; 0x02001D2C
+ push {r4-r6, lr}
+ add r2, r1, #0x0
+ add r4, r0, #0x0
+ mov r1, #0x0
+ ldr r3, _02001DD4 ; =0x021C48B8
+ strb r1, [r4, #0x1b]
+ ldr r5, [r3, #0x48]
+ mov r3, #0x1
+ add r6, r5, #0x0
+ tst r6, r3
+ beq _02001D54
+ ldr r0, _02001DD8 ; =0x000005DC
+ bl FUN_020054C8
+ ldrb r0, [r4, #0x15]
+ ldr r1, [r4, #0x0]
+ lsl r0, r0, #0x3
+ add r0, r1, r0
+ ldr r0, [r0, #0x4]
+ pop {r4-r6, pc}
+_02001D54:
+ ldr r6, [r4, #0x10]
+ tst r6, r5
+ beq _02001D66
+ ldr r0, _02001DD8 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0x1
+ mvn r0, r0
+ pop {r4-r6, pc}
+_02001D66:
+ mov r6, #0x40
+ tst r6, r5
+ beq _02001D7E
+ bl FUN_02001E64
+ cmp r0, #0x1
+ bne _02001D78
+ mov r0, #0x1
+ strb r0, [r4, #0x1b]
+_02001D78:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r6, pc}
+_02001D7E:
+ mov r1, #0x80
+ tst r1, r5
+ beq _02001D98
+ add r1, r3, #0x0
+ bl FUN_02001E64
+ cmp r0, #0x1
+ bne _02001D92
+ mov r0, #0x2
+ strb r0, [r4, #0x1b]
+_02001D92:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r6, pc}
+_02001D98:
+ mov r1, #0x20
+ tst r1, r5
+ beq _02001DB2
+ mov r1, #0x2
+ bl FUN_02001E64
+ cmp r0, #0x1
+ bne _02001DAC
+ mov r0, #0x3
+ strb r0, [r4, #0x1b]
+_02001DAC:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r6, pc}
+_02001DB2:
+ mov r1, #0x10
+ add r3, r5, #0x0
+ tst r3, r1
+ beq _02001DCE
+ mov r1, #0x3
+ bl FUN_02001E64
+ cmp r0, #0x1
+ bne _02001DC8
+ mov r0, #0x4
+ strb r0, [r4, #0x1b]
+_02001DC8:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r6, pc}
+_02001DCE:
+ sub r1, #0x11
+ add r0, r1, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+_02001DD4: .word 0x021C48B8
+_02001DD8: .word 0x000005DC
+
+ thumb_func_start FUN_02001DDC
+FUN_02001DDC: ; 0x02001DDC
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r1, #0x5
+ bhi _02001E52
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02001DF0: ; jump table (using 16-bit offset)
+ .short _02001DFC - _02001DF0 - 2; case 0
+ .short _02001E0E - _02001DF0 - 2; case 1
+ .short _02001E1A - _02001DF0 - 2; case 2
+ .short _02001E28 - _02001DF0 - 2; case 3
+ .short _02001E36 - _02001DF0 - 2; case 4
+ .short _02001E44 - _02001DF0 - 2; case 5
+_02001DFC:
+ ldr r0, _02001E58 ; =0x000005DC
+ bl FUN_020054C8
+ ldrb r0, [r4, #0x15]
+ ldr r1, [r4, #0x0]
+ lsl r0, r0, #0x3
+ add r0, r1, r0
+ ldr r0, [r0, #0x4]
+ pop {r4, pc}
+_02001E0E:
+ ldr r0, _02001E58 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0x1
+ mvn r0, r0
+ pop {r4, pc}
+_02001E1A:
+ ldr r2, _02001E58 ; =0x000005DC
+ mov r1, #0x0
+ bl FUN_02001E64
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4, pc}
+_02001E28:
+ ldr r2, _02001E58 ; =0x000005DC
+ mov r1, #0x1
+ bl FUN_02001E64
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4, pc}
+_02001E36:
+ ldr r2, _02001E58 ; =0x000005DC
+ mov r1, #0x2
+ bl FUN_02001E64
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4, pc}
+_02001E44:
+ ldr r2, _02001E58 ; =0x000005DC
+ mov r1, #0x3
+ bl FUN_02001E64
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4, pc}
+_02001E52:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4, pc}
+ .balign 4
+_02001E58: .word 0x000005DC
+
+ thumb_func_start FUN_02001E5C
+FUN_02001E5C: ; 0x02001E5C
+ ldrb r0, [r0, #0x15]
+ bx lr
+
+ thumb_func_start FUN_02001E60
+FUN_02001E60: ; 0x02001E60
+ ldrb r0, [r0, #0x1b]
+ bx lr
+
+ thumb_func_start FUN_02001E64
+FUN_02001E64: ; 0x02001E64
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ ldrb r4, [r5, #0x15]
+ bl FUN_02001EBC
+ cmp r0, #0x0
+ bne _02001E7C
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_02001E7C:
+ ldrb r0, [r5, #0x8]
+ mov r1, #0x6
+ bl FUN_02002E4C
+ add r1, sp, #0x8
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ add r1, #0x1
+ add r2, sp, #0x8
+ add r3, r4, #0x0
+ bl FUN_020020B0
+ mov r0, #0x8
+ str r0, [sp, #0x0]
+ ldrb r0, [r5, #0x1a]
+ add r3, sp, #0x8
+ add r1, r7, #0x0
+ str r0, [sp, #0x4]
+ ldrb r2, [r3, #0x1]
+ ldrb r3, [r3, #0x0]
+ ldr r0, [r5, #0x4]
+ bl FUN_020196F4
+ add r0, r5, #0x0
+ bl FUN_02002080
+ add r0, r6, #0x0
+ bl FUN_020054C8
+ mov r0, #0x1
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_02001EBC
+FUN_02001EBC: ; 0x02001EBC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ cmp r1, #0x0
+ bne _02001EFA
+ ldrb r6, [r5, #0xa]
+ cmp r6, #0x1
+ bhi _02001ECE
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02001ECE:
+ ldrb r4, [r5, #0x15]
+ add r1, r6, #0x0
+ add r0, r4, #0x0
+ bl _s32_div_f
+ cmp r1, #0x0
+ bne _02001EF2
+ ldrb r0, [r5, #0xb]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1e
+ bne _02001EE8
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02001EE8:
+ sub r0, r6, #0x1
+ add r0, r4, r0
+ lsl r0, r0, #0x18
+ asr r2, r0, #0x18
+ b _02001F9A
+_02001EF2:
+ sub r0, r4, #0x1
+ lsl r0, r0, #0x18
+ asr r2, r0, #0x18
+ b _02001F9A
+_02001EFA:
+ cmp r1, #0x1
+ bne _02001F32
+ ldrb r1, [r5, #0xa]
+ cmp r1, #0x1
+ bhi _02001F08
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02001F08:
+ ldrb r6, [r5, #0x15]
+ sub r4, r1, #0x1
+ add r0, r6, #0x0
+ bl _s32_div_f
+ cmp r4, r1
+ bne _02001F2A
+ ldrb r0, [r5, #0xb]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1e
+ bne _02001F22
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02001F22:
+ sub r0, r6, r4
+ lsl r0, r0, #0x18
+ asr r2, r0, #0x18
+ b _02001F9A
+_02001F2A:
+ add r0, r6, #0x1
+ lsl r0, r0, #0x18
+ asr r2, r0, #0x18
+ b _02001F9A
+_02001F32:
+ cmp r1, #0x2
+ bne _02001F68
+ ldrb r3, [r5, #0x9]
+ cmp r3, #0x1
+ bhi _02001F40
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02001F40:
+ ldrb r2, [r5, #0xa]
+ ldrb r1, [r5, #0x15]
+ cmp r1, r2
+ bhs _02001F60
+ ldrb r0, [r5, #0xb]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1e
+ bne _02001F54
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02001F54:
+ sub r0, r3, #0x1
+ mul r0, r2
+ add r0, r1, r0
+ lsl r0, r0, #0x18
+ asr r2, r0, #0x18
+ b _02001F9A
+_02001F60:
+ sub r0, r1, r2
+ lsl r0, r0, #0x18
+ asr r2, r0, #0x18
+ b _02001F9A
+_02001F68:
+ ldrb r2, [r5, #0x9]
+ cmp r2, #0x1
+ bhi _02001F72
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02001F72:
+ ldrb r1, [r5, #0xa]
+ ldrb r0, [r5, #0x15]
+ sub r2, r2, #0x1
+ mul r2, r1
+ cmp r0, r2
+ blt _02001F94
+ ldrb r2, [r5, #0xb]
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x1e
+ bne _02001F8A
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02001F8A:
+ bl _s32_div_f
+ lsl r0, r1, #0x18
+ asr r2, r0, #0x18
+ b _02001F9A
+_02001F94:
+ add r0, r0, r1
+ lsl r0, r0, #0x18
+ asr r2, r0, #0x18
+_02001F9A:
+ ldr r1, [r5, #0x0]
+ lsl r0, r2, #0x3
+ add r0, r1, r0
+ ldr r1, [r0, #0x4]
+ mov r0, #0x2
+ mvn r0, r0
+ cmp r1, r0
+ bne _02001FAE
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02001FAE:
+ strb r2, [r5, #0x15]
+ mov r0, #0x1
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02001FB4
+FUN_02001FB4: ; 0x02001FB4
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldrb r1, [r5, #0x9]
+ ldrb r0, [r5, #0xa]
+ mov r6, #0x0
+ add r4, r6, #0x0
+ mul r0, r1
+ cmp r0, #0x0
+ ble _02001FF0
+ add r7, r6, #0x0
+_02001FC8:
+ ldr r2, [r5, #0x0]
+ lsl r1, r4, #0x3
+ ldr r1, [r2, r1]
+ ldrb r0, [r5, #0x8]
+ add r2, r7, #0x0
+ bl FUN_02002E14
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r6, r0
+ bhs _02001FE0
+ add r6, r0, #0x0
+_02001FE0:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ ldrb r1, [r5, #0x9]
+ ldrb r0, [r5, #0xa]
+ mul r0, r1
+ cmp r4, r0
+ blt _02001FC8
+_02001FF0:
+ add r0, r6, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02001FF4
+FUN_02001FF4: ; 0x02001FF4
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ ldrb r0, [r5, #0x8]
+ mov r1, #0x6
+ bl FUN_02002E4C
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x4]
+ bl FUN_02019620
+ ldrb r0, [r5, #0x19]
+ ldrb r1, [r5, #0x16]
+ ldrb r7, [r5, #0x17]
+ lsl r0, r0, #0x1
+ add r0, r1, r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0xc]
+ ldrb r0, [r5, #0x9]
+ mov r6, #0x0
+ cmp r0, #0x0
+ bls _0200207C
+_02002022:
+ ldrb r2, [r5, #0xa]
+ mov r4, #0x0
+ cmp r2, #0x0
+ bls _02002068
+_0200202A:
+ ldrb r3, [r5, #0xb]
+ mul r2, r6
+ ldrb r0, [r5, #0x1a]
+ lsl r3, r3, #0x1c
+ lsr r3, r3, #0x1c
+ add r0, r0, r3
+ ldrb r1, [r5, #0x18]
+ mul r0, r4
+ add r2, r4, r2
+ add r0, r1, r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ ldr r3, [r5, #0x0]
+ lsl r2, r2, #0x3
+ ldr r2, [r3, r2]
+ ldrb r1, [r5, #0x8]
+ ldr r0, [r5, #0x4]
+ add r3, r7, #0x0
+ bl FUN_0201BD84
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ ldrb r2, [r5, #0xa]
+ lsr r4, r0, #0x18
+ cmp r4, r2
+ blo _0200202A
+_02002068:
+ ldr r0, [sp, #0xc]
+ add r0, r7, r0
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ add r0, r6, #0x1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ ldrb r0, [r5, #0x9]
+ cmp r6, r0
+ blo _02002022
+_0200207C:
+ add sp, #0x10
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02002080
+FUN_02002080: ; 0x02002080
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ ldrb r1, [r4, #0xb]
+ lsl r1, r1, #0x1a
+ lsr r1, r1, #0x1e
+ cmp r1, #0x1
+ beq _020020AA
+ ldrb r3, [r4, #0x15]
+ add r1, sp, #0x0
+ add r1, #0x1
+ add r2, sp, #0x0
+ bl FUN_020020B0
+ add r3, sp, #0x0
+ ldrb r2, [r3, #0x1]
+ ldrb r3, [r3, #0x0]
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #0x4]
+ bl FUN_020136F8
+_020020AA:
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020020B0
+FUN_020020B0: ; 0x020020B0
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r7, r3, #0x0
+ ldrb r1, [r5, #0xa]
+ add r0, r7, #0x0
+ add r6, r2, #0x0
+ bl _s32_div_f
+ ldrb r2, [r5, #0x19]
+ ldrb r1, [r5, #0x16]
+ lsl r2, r2, #0x1
+ add r1, r1, r2
+ mul r1, r0
+ strb r1, [r4, #0x0]
+ ldrb r1, [r5, #0xa]
+ add r0, r7, #0x0
+ bl _s32_div_f
+ ldrb r2, [r5, #0xb]
+ ldrb r3, [r5, #0x1a]
+ ldrb r0, [r5, #0x18]
+ lsl r2, r2, #0x1c
+ lsr r2, r2, #0x1c
+ add r2, r3, r2
+ mul r2, r1
+ add r0, r0, r2
+ strb r0, [r6, #0x0]
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020020EC
+FUN_020020EC: ; 0x020020EC
+ push {r3-r7, lr}
+ sub sp, #0x20
+ ldr r5, [sp, #0x3c]
+ str r2, [sp, #0xc]
+ add r7, r0, #0x0
+ str r1, [sp, #0x8]
+ str r3, [sp, #0x10]
+ ldr r2, _02002194 ; =0x00000141
+ mov r0, #0x1
+ mov r1, #0x1a
+ add r3, r5, #0x0
+ bl FUN_0200A86C
+ add r4, r0, #0x0
+ mov r0, #0x2
+ add r1, r5, #0x0
+ bl FUN_02012838
+ add r1, r4, #0x0
+ mov r2, #0x29
+ mov r3, #0x0
+ add r6, r0, #0x0
+ bl FUN_02012880
+ mov r3, #0x2a
+ add r2, r3, #0x0
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ sub r3, #0x2c
+ bl FUN_02012880
+ add r0, r4, #0x0
+ bl FUN_0200A8B8
+ add r0, r5, #0x0
+ mov r1, #0x1
+ str r6, [sp, #0x14]
+ bl FUN_02018FF4
+ add r1, r0, #0x0
+ str r1, [sp, #0x18]
+ mov r0, #0x0
+ add r3, sp, #0x14
+ strb r0, [r3, #0x8]
+ mov r0, #0x1
+ strb r0, [r3, #0x9]
+ mov r0, #0x2
+ strb r0, [r3, #0xa]
+ ldrb r0, [r3, #0xb]
+ mov r2, #0xf
+ bic r0, r2
+ strb r0, [r3, #0xb]
+ ldrb r4, [r3, #0xb]
+ mov r0, #0x30
+ bic r4, r0
+ strb r4, [r3, #0xb]
+ ldrb r0, [r3, #0xb]
+ bic r0, r2
+ strb r0, [r3, #0xb]
+ ldr r2, [sp, #0x8]
+ add r0, r7, #0x0
+ bl FUN_02019150
+ ldr r0, [sp, #0x18]
+ ldr r2, [sp, #0xc]
+ ldr r3, [sp, #0x10]
+ mov r1, #0x1
+ bl FUN_0200CCA4
+ lsl r0, r5, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x2
+ str r0, [sp, #0x4]
+ add r3, sp, #0x28
+ ldrb r3, [r3, #0x10]
+ add r0, sp, #0x14
+ mov r1, #0x8
+ mov r2, #0x0
+ bl FUN_02001C14
+ add sp, #0x20
+ pop {r3-r7, pc}
+ nop
+_02002194: .word 0x00000141
+
+ thumb_func_start FUN_02002198
+FUN_02002198: ; 0x02002198
+ push {r4, lr}
+ sub sp, #0x8
+ mov r4, #0x0
+ str r4, [sp, #0x0]
+ ldr r4, [sp, #0x10]
+ str r4, [sp, #0x4]
+ bl FUN_020020EC
+ add sp, #0x8
+ pop {r4, pc}
+
+ thumb_func_start FUN_020021AC
+FUN_020021AC: ; 0x020021AC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02001C78
+ add r6, r0, #0x0
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r6, r0
+ beq _020021C8
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020021EC
+_020021C8:
+ add r0, r6, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020021CC
+FUN_020021CC: ; 0x020021CC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r2, #0x0
+ bl FUN_02001DDC
+ add r6, r0, #0x0
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r6, r0
+ beq _020021E8
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020021EC
+_020021E8:
+ add r0, r6, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020021EC
+FUN_020021EC: ; 0x020021EC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x4]
+ add r4, r1, #0x0
+ mov r1, #0x0
+ bl FUN_0200CCF8
+ ldr r0, [r5, #0x4]
+ bl FUN_02019178
+ ldr r1, [r5, #0x4]
+ add r0, r4, #0x0
+ bl FUN_02016A8C
+ ldr r0, [r5, #0x0]
+ bl FUN_02012870
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02001C5C
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02002218
+FUN_02002218: ; 0x02002218
+ push {r4, lr}
+ sub sp, #0x18
+ mov r4, #0x8
+ lsl r1, r1, #0x10
+ str r4, [sp, #0x0]
+ mov r3, #0x10
+ str r3, [sp, #0x4]
+ lsr r1, r1, #0x10
+ str r1, [sp, #0x8]
+ lsl r1, r2, #0x10
+ lsr r1, r1, #0x10
+ str r1, [sp, #0xc]
+ str r4, [sp, #0x10]
+ ldr r1, _02002244 ; =0x020ECAC8
+ mov r2, #0x0
+ str r3, [sp, #0x14]
+ add r3, r2, #0x0
+ bl FUN_02019658
+ add sp, #0x18
+ pop {r4, pc}
+ nop
+_02002244: .word 0x020ECAC8
diff --git a/arm9/lib/include/OS_system.h b/arm9/lib/include/OS_system.h
index 794e16d2..6ce585dc 100644
--- a/arm9/lib/include/OS_system.h
+++ b/arm9/lib/include/OS_system.h
@@ -35,5 +35,6 @@ OSIntrMode OS_GetCpsrIrq();
OSProcMode OS_GetProcMode();
void OS_SpinWait();
void OS_WaitVBlankIntr();
+void OS_WaitIrq(BOOL, u32);
#endif //POKEDIAMOND_OS_SYSTEM_H
diff --git a/arm9/lib/include/syscall.h b/arm9/lib/include/syscall.h
new file mode 100644
index 00000000..8561cabe
--- /dev/null
+++ b/arm9/lib/include/syscall.h
@@ -0,0 +1,6 @@
+#ifndef NITRO_SYSCALL_H_
+#define NITRO_SYSCALL_H_
+
+void SVC_WaitByLoop(u32 ct);
+
+#endif //NITRO_SYSCALL_H_
diff --git a/arm9/lib/src/OS_system.c b/arm9/lib/src/OS_system.c
index e5dfcb47..5379433b 100644
--- a/arm9/lib/src/OS_system.c
+++ b/arm9/lib/src/OS_system.c
@@ -3,6 +3,7 @@
//
#include "OS_system.h"
+#include "syscall.h"
ARM_FUNC asm OSIntrMode OS_EnableInterrupts() {
mrs r0, cpsr
diff --git a/arm9/src/FUN_02000DE4.c b/arm9/src/FUN_02000DE4.c
new file mode 100644
index 00000000..033ef4ce
--- /dev/null
+++ b/arm9/src/FUN_02000DE4.c
@@ -0,0 +1,220 @@
+#include "global.h"
+#include "SPI_pm.h"
+#include "OS_interrupt.h"
+#include "OS_system.h"
+#include "CARD_backup.h"
+#include "CARD_pullOut.h"
+#include "CTRDG_common.h"
+#include "PAD_pad.h"
+#include "main.h"
+#include "poke_overlay.h"
+
+extern struct Unk21C48B8 gUnknown21C48B8;
+
+extern BOOL FUN_02006234(struct Unk21DBE18 *, s32 *, int);
+extern BOOL FUN_02006290(int);
+extern void FUN_02006260(int);
+extern BOOL FUN_02033678(void);
+extern int FUN_020335B8(void);
+extern BOOL FUN_0202FB80(void);
+extern void ErrorHandling(void);
+extern void FUN_02000FE8(void);
+extern void FUN_02016464(void);
+
+void FUN_02000F4C(int arg0, int arg1);
+void FUN_02000FE8(void);
+
+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(TRUE, OS_IE_V_BLANK);
+ gUnknown21C48B8.unk2C++;
+ gUnknown21C48B8.unk30 = 0;
+ if (gUnknown21C48B8.unk0 != NULL)
+ gUnknown21C48B8.unk0(gUnknown21C48B8.unk4);
+}
+
+THUMB_FUNC void FUN_02000EC8(u32 parameter)
+{
+ if (FUN_02033678() && CARD_TryWaitBackupAsync() == TRUE)
+ {
+ OS_ResetSystem(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;
+ }
+}
+
+extern void FUN_0200E3A0(int, int);
+extern BOOL FUN_02032DAC(void);
+extern void FUN_020225F8(void);
+extern void FUN_0202287C(void);
+
+// No Return
+THUMB_FUNC void DoSoftReset(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);
+}
+
+extern void FUN_02033F70(int, int, int);
+
+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();
+ }
+ DoSoftReset(arg0);
+}
+
+extern void FUN_0201265C(struct Unk21C4818 *, struct Unk21C4828 *);
+extern void FUN_0201BA1C(int);
+extern void FUN_0201B9E0(int);
+
+void FUN_02000FA4(void)
+{
+ struct Unk21C4818 spC;
+ struct Unk21C4828 sp0;
+ FUN_0201265C(&spC, &sp0);
+ {
+ int r4 = gUnknown21C48B8.unk2C;
+ int r5 = ((sp0.unk4 + sp0.unk8) << 24) + (spC.unk0 + ((256 * spC.unk4 * spC.unk8) << 16) + (sp0.unk0 << 16));
+ FUN_0201BA1C(r4 + r5);
+ FUN_0201B9E0(r4 + r5);
+ }
+}
+
+extern void FUN_0201CE04(void);
+extern void FUN_0201CDD0(void);
+
+void FUN_02000FE8(void)
+{
+ PMBackLightSwitch top, bottom;
+ if (PAD_DetectFold())
+ {
+ if (!gUnk021C4918.unk7)
+ {
+ FUN_0201CE04();
+ if (CTRDG_IsPulledOut() == TRUE)
+ {
+ gBacklightTop.unk4 = 1;
+ }
+ {
+ int r1 = gBacklightTop.unk4;
+ while (1)
+ {
+ PMWakeUpTrigger trigger = PM_TRIGGER_COVER_OPEN | PM_TRIGGER_CARD;
+ if (gUnk021C4918.unk6 && !r1)
+ trigger |= PM_TRIGGER_CARTRIDGE;
+ PM_GoSleepMode(trigger, PM_PAD_LOGIC_OR, 0);
+ if (CARD_IsPulledOut())
+ {
+ PM_ForceToPowerOff();
+ break;
+ }
+ else if (PAD_DetectFold())
+ {
+ r1 = gBacklightTop.unk4 = 1;
+ }
+ else
+ break;
+ }
+ FUN_0201CDD0();
+ return;
+ }
+ }
+ else
+ {
+ PM_GetBackLight(&top, &bottom);
+ if (top == PM_BACKLIGHT_ON)
+ PM_SetBackLight(PM_LCD_ALL, PM_BACKLIGHT_OFF);
+ }
+ }
+ else
+ {
+ PM_GetBackLight(&top, &bottom);
+ if (top == PM_BACKLIGHT_OFF)
+ PM_SetBackLight(PM_LCD_ALL, gBacklightTop.unk0);
+ }
+}
diff --git a/arm9/src/main.c b/arm9/src/main.c
index 8c80d686..f6c09fa1 100644
--- a/arm9/src/main.c
+++ b/arm9/src/main.c
@@ -13,15 +13,6 @@ FS_EXTERN_OVERLAY(MODULE_63);
extern struct Unk21C48B8 gUnknown21C48B8;
-extern struct {
- s32 unk0;
- u8 unk4;
- u8 unk5;
- u8 unk6;
- u8 unk7;
- u8 unk8;
-} gUnk021C4918;
-
extern void OS_WaitIrq();
extern void FUN_02016438(s32);
extern void InitSystemForTheGame(void);
@@ -47,8 +38,6 @@ extern void FUN_02000FA4(void);
extern void FUN_0200A2AC(void);
extern void FUN_02015E30(void);
extern void FUN_02000EE8(void);
-extern void FUN_02000FE8(void);
-extern void FUN_02016464(void);
void DoSoftReset(u32 parameter);
extern BOOL FUN_0202FB80(void);
extern void FUN_02000E0C(void);
@@ -59,12 +48,8 @@ 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 BOOL FUN_02006234(struct Unk21DBE18 *, s32 *, int);
-extern BOOL FUN_02006290(int);
-extern void FUN_02006260(int);
-extern BOOL FUN_02033678(void);
-extern int FUN_020335B8(void);
+extern void FUN_02000FE8(void);
+extern void FUN_02016464(void);
extern struct Unk21DBE18 MOD63_UNK_021DBE18;
extern struct Unk21DBE18 MOD52_UNK_021D76C8;
@@ -154,198 +139,3 @@ THUMB_FUNC void NitroMain(void)
FUN_0201B5CC(gUnknown21C48B8.unk20);
}
}
-
-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);
-}
-
-THUMB_FUNC void FUN_02000EC8(u32 parameter)
-{
- if (FUN_02033678() && CARD_TryWaitBackupAsync() == TRUE)
- {
- OS_ResetSystem(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;
- }
-}
-
-extern void FUN_0200E3A0(int, int);
-extern BOOL FUN_02032DAC(void);
-extern void FUN_020225F8(void);
-extern void FUN_0202287C(void);
-
-// No Return
-THUMB_FUNC void DoSoftReset(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);
-}
-
-extern void FUN_02033F70(int, int, int);
-
-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();
- }
- DoSoftReset(arg0);
-}
-
-extern void FUN_0201265C(struct Unk21C4818 *, struct Unk21C4828 *);
-extern void FUN_0201BA1C(int);
-extern void FUN_0201B9E0(int);
-
-void FUN_02000FA4(void)
-{
- struct Unk21C4818 spC;
- struct Unk21C4828 sp0;
- FUN_0201265C(&spC, &sp0);
- {
- int r4 = gUnknown21C48B8.unk2C;
- int r5 = ((sp0.unk4 + sp0.unk8) << 24) + (spC.unk0 + ((256 * spC.unk4 * spC.unk8) << 16) + (sp0.unk0 << 16));
- FUN_0201BA1C(r4 + r5);
- FUN_0201B9E0(r4 + r5);
- }
-}
-
-extern void FUN_0201CE04(void);
-extern void FUN_0201CDD0(void);
-
-void FUN_02000FE8(void)
-{
- PMBackLightSwitch top, bottom;
- if (PAD_DetectFold())
- {
- if (!gUnk021C4918.unk7)
- {
- FUN_0201CE04();
- if (CTRDG_IsPulledOut() == TRUE)
- {
- gBacklightTop.unk4 = 1;
- }
- {
- int r1 = gBacklightTop.unk4;
- while (1)
- {
- PMWakeUpTrigger trigger = PM_TRIGGER_COVER_OPEN | PM_TRIGGER_CARD;
- if (gUnk021C4918.unk6 && !r1)
- trigger |= PM_TRIGGER_CARTRIDGE;
- PM_GoSleepMode(trigger, PM_PAD_LOGIC_OR, 0);
- if (CARD_IsPulledOut())
- {
- PM_ForceToPowerOff();
- break;
- }
- else if (PAD_DetectFold())
- {
- r1 = gBacklightTop.unk4 = 1;
- }
- else
- break;
- }
- FUN_0201CDD0();
- return;
- }
- }
- else
- {
- PM_GetBackLight(&top, &bottom);
- if (top == PM_BACKLIGHT_ON)
- PM_SetBackLight(PM_LCD_ALL, PM_BACKLIGHT_OFF);
- }
- }
- else
- {
- PM_GetBackLight(&top, &bottom);
- if (top == PM_BACKLIGHT_OFF)
- PM_SetBackLight(PM_LCD_ALL, gBacklightTop.unk0);
- }
-}
diff --git a/include/main.h b/include/main.h
index 23059702..93f0fc2a 100644
--- a/include/main.h
+++ b/include/main.h
@@ -60,6 +60,17 @@ struct Unk21C48B8
s32 unk6C;
};
+struct UnkStruct_021C4918 {
+ s32 unk0;
+ u8 unk4;
+ u8 unk5;
+ u8 unk6;
+ u8 unk7;
+ u8 unk8;
+};
+
+extern struct UnkStruct_021C4918 gUnk021C4918;
+
extern struct Unk2106FA0 gBacklightTop;
extern struct Unk2106FA0 gBacklightTop_2; // same as the first one, it's referenced twice in the constant pool...