pmd-sky/asm/main_020082C4.s
2025-09-19 18:11:31 -04:00

679 lines
12 KiB
ArmAsm

.include "asm/macros.inc"
.include "main_020082C4.inc"
.text
arm_func_start FileClose
FileClose: ; 0x020082C4
stmdb sp!, {r3, lr}
bl sub_0207F70C
cmp r0, #0
ldmneia sp!, {r3, pc}
mov r0, #1
bl CardPullOutWithStatus
ldmia sp!, {r3, pc}
arm_func_end FileClose
arm_func_start sub_020082E0
sub_020082E0: ; 0x020082E0
ldr r0, _020082F0 ; =_020AF360
mov r1, #2
str r1, [r0]
bx lr
.align 2, 0
_020082F0: .word _020AF360
arm_func_end sub_020082E0
arm_func_start sub_020082F4
sub_020082F4: ; 0x020082F4
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r8, r0
ldr r0, _02008410 ; =_022A369C
mov r1, #8
bl sub_02002F34
ldr r0, _02008414 ; =_020AF3E4
bl sub_02002C40
ldr r0, _02008414 ; =_020AF3E4
mov r1, #8
bl sub_02002CAC
ldr r0, _02008414 ; =_020AF3E4
bl sub_02002E98
mov r1, #8
ldr r0, _02008418 ; =_020AF490
mov r2, r1
bl sub_02002A9C
ldr r0, _0200841C ; =_020AF53C
mov r1, #8
mov r2, #0
bl sub_02002A9C
ldr r0, _02008420 ; =_020AF42C
bl sub_02002950
ldr r0, _02008424 ; =_020AF408
bl sub_02002C40
ldr r0, _02008428 ; =_020AF5E8
mov r1, #1
mov r2, #0
bl sub_02002A9C
mov r0, #0x800
sub r1, r0, #0xf3
bl MemAlloc
mov r6, r0
ldr r0, _0200842C ; =_022A3698
mov r7, #0
ldr r4, _02008430 ; =_02092978
str r6, [r0]
mov r5, r7
_02008388:
mov r0, r6
mov r1, r5
mov r2, r5
mov r3, r4
bl sub_02008980
add r7, r7, #1
cmp r7, #8
add r6, r6, #0x100
blt _02008388
mov r0, r8
bl sub_02007004
bl DebugPrintSystemClock
bl sub_02007380
bl sub_02007384
ldr r0, _02008434 ; =_0209297C
bl Debug_Print0
bl sub_020073D8
ldr r0, _02008438 ; =_0209299C
bl Debug_Print0
ldr r0, _0200843C ; =_020AF3D0
ldr r1, _02008440 ; =0x0000070D
ldr r0, [r0, #8]
bl MemAlloc
ldr r2, _0200843C ; =_020AF3D0
ldr r1, _02008444 ; =_020AF3D0
str r0, [r2, #4]
ldr r0, _02008448 ; =_022A36C4
mov r2, #0
bl sub_02002778
ldr r0, _02008424 ; =_020AF408
bl sub_02002E98
ldr r0, _02008448 ; =_022A36C4
bl sub_020027E8
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_02008410: .word _022A369C
_02008414: .word _020AF3E4
_02008418: .word _020AF490
_0200841C: .word _020AF53C
_02008420: .word _020AF42C
_02008424: .word _020AF408
_02008428: .word _020AF5E8
_0200842C: .word _022A3698
_02008430: .word _02092978
_02008434: .word _0209297C
_02008438: .word _0209299C
_0200843C: .word _020AF3D0
_02008440: .word 0x0000070D
_02008444: .word _020AF3D0
_02008448: .word _022A36C4
arm_func_end sub_020082F4
arm_func_start sub_0200844C
sub_0200844C: ; 0x0200844C
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_02006ED4
mov r0, #0
str r0, [r4, #0x1c]
str r0, [r4, #0x20]
str r0, [r4, #0x24]
ldmia sp!, {r4, pc}
arm_func_end sub_0200844C
arm_func_start sub_0200846C
sub_0200846C: ; 0x0200846C
mov r2, #0
str r2, [r0]
sub r1, r2, #1
stmib r0, {r1, r2}
str r1, [r0, #0xc]
str r1, [r0, #0x10]
mov r1, #4
str r1, [r0, #0x14]
bx lr
arm_func_end sub_0200846C
arm_func_start sub_02008490
sub_02008490: ; 0x02008490
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xb0
ldr r0, _02008928 ; =_020AF408
bl sub_02002CB4
ldr r0, _0200892C ; =_02092908
ldr r1, [r0]
ldr r0, [r0, #4]
str r1, [sp, #0x10]
str r0, [sp, #0x14]
_020084B4:
ldr r0, _02008930 ; =_022A369C
add r1, sp, #0x20
mov r2, #1
bl sub_02002F98
ldr r0, _02008934 ; =_020AF3E4
bl sub_02002CB4
ldr r1, [sp, #0x20]
ldr r0, [r1]
cmp r0, #1
beq _020088F8
ldr sb, [r1, #4]
mov r1, #5
add r0, sp, #0x24
str r1, [sb, #0x24]
bl sub_020075E8
mov r6, #0
add r1, sp, #0x24
ldr r0, _02008934 ; =_020AF3E4
str r1, [sb, #0x1c]
mov r7, r6
mov r8, r6
bl sub_02002E98
ldr r0, [sb, #0x20]
cmp r0, #0xe
addls pc, pc, r0, lsl #2
b _02008894
_0200851C: ; jump table
b _02008894 ; case 0
b _02008894 ; case 1
b _02008558 ; case 2
b _020085BC ; case 3
b _020085E0 ; case 4
b _02008670 ; case 5
b _0200868C ; case 6
b _020086DC ; case 7
b _02008724 ; case 8
b _0200876C ; case 9
b _020087B4 ; case 10
b _020087F0 ; case 11
b _02008834 ; case 12
b _02008860 ; case 13
b _02008880 ; case 14
_02008558:
add r0, sp, #0x24
mov r1, sb
bl sub_020075F4
movs r6, r0
beq _02008894
mov r1, r7
ldr r0, _02008928 ; =_020AF408
str r1, [sb, #0x24]
bl sub_02002E98
ldr r0, [sp, #0x20]
bl sub_02008B78
ldr r0, _02008938 ; =_020AF5E8
bl sub_02002B7C
add r0, sp, #0x24
mov r1, sb
bl sub_02007624
cmp r0, #0
beq _020085B4
mov r1, r7
str r1, [sb, #0x1c]
ldr r0, _02008938 ; =_020AF5E8
str r1, [sb, #0x24]
bl sub_02002B20
_020085B4:
mov sb, #0
b _02008894
_020085BC:
ldr r1, [sp, #0x20]
mov r0, sb
ldr r2, [r1, #0x10]
ldr r3, [r1, #0xc]
add r1, r1, #0x28
mov r8, #1
blx r3
mov r6, r0
b _02008894
_020085E0:
ldr r5, [sp, #0x10]
ldr r4, [sp, #0x14]
add sl, sp, #0x18
add fp, sp, #0x24
_020085F0:
ldr r2, [sp, #0x20]
mov r0, fp
mov r1, sb
mov r3, sl
add r2, r2, #0x28
str r5, [sp, #0x18]
str r4, [sp, #0x1c]
bl sub_020076E4
movs r6, r0
beq _020085F0
cmp r6, #0
beq _02008894
mov r1, #0
ldr r0, _02008928 ; =_020AF408
str r1, [sb, #0x24]
bl sub_02002E98
ldr r0, [sp, #0x20]
bl sub_02008B78
ldr r0, _02008938 ; =_020AF5E8
bl sub_02002B7C
add r0, sp, #0x24
mov r1, sb
bl sub_02007774
cmp r0, #0
beq _02008668
mov r1, #0
str r1, [sb, #0x1c]
ldr r0, _02008938 ; =_020AF5E8
str r1, [sb, #0x24]
bl sub_02002B20
_02008668:
mov sb, #0
b _02008894
_02008670:
ldr r0, [sp, #0x20]
ldr r4, [r0, #0x10]
add r0, r0, #0x28
bl sub_02007578
str r0, [r4]
mov r6, #1
b _02008894
_0200868C:
ldr r3, [sp, #0x20]
add r0, sp, #0x24
mov r1, sb
add r2, r3, #0x28
ldr r4, [r3, #0x10]
bl sub_02007654
cmp r0, #0
beq _020086C4
ldr r1, [sb]
mov r0, r6
str r1, [r4]
ldr r1, [sb, #0x10]
str r1, [r4, #0xc]
b _020086D0
_020086C4:
mov r0, r4
bl sub_0200846C
mov r0, #2
_020086D0:
str r0, [r4, #0x14]
mov r6, #1
b _02008894
_020086DC:
mov r4, r6
mov r5, #1
add r7, sp, #0x24
_020086E8:
ldr r3, [sp, #0x20]
mov r0, r7
add r1, r3, #0x28
str r1, [sp]
ldr r2, [r3, #0xc]
ldr r3, [r3, #0x14]
mov r1, sb
bl sub_02007A70
cmp r0, #0
movge r0, r5
movlt r0, r4
ands r6, r0, #0xff
beq _020086E8
ldrb r7, [sp, #0x30]
b _02008894
_02008724:
mov r4, r6
mov r5, #1
add r7, sp, #0x24
_02008730:
ldr r3, [sp, #0x20]
mov r0, r7
add r1, r3, #0x28
str r1, [sp]
ldr r2, [r3, #0xc]
ldr r3, [r3, #0x14]
mov r1, sb
bl sub_020079D8
cmp r0, #0
movge r0, r5
movlt r0, r4
ands r6, r0, #0xff
beq _02008730
ldrb r7, [sp, #0x30]
b _02008894
_0200876C:
ldr r3, [sp, #0x20]
add r0, sp, #0x24
add r1, r3, #0x28
str r1, [sp]
ldr r2, [r3, #0x1c]
mov r1, sb
str r2, [sp, #4]
ldr r2, [r3, #0x18]
str r2, [sp, #8]
ldr r2, [r3, #0xc]
ldr r3, [r3, #0x14]
bl sub_02007B14
cmp r0, #0
movge r0, #1
movlt r0, r6
and r6, r0, #0xff
ldrb r7, [sp, #0x30]
b _02008894
_020087B4:
add r4, sp, #0x24
_020087B8:
ldr r2, [sp, #0x20]
mov r0, r4
ldr r1, [r2, #0x20]
add r3, r2, #0x28
str r1, [sp]
ldr r1, [r2, #0x24]
str r1, [sp, #4]
ldr r1, [r2, #4]
ldr r2, [r2, #0x10]
bl sub_02007BCC
movs r6, r0
beq _020087B8
ldrb r7, [sp, #0x30]
b _02008894
_020087F0:
ldr r2, [sp, #0x20]
add r0, sp, #0x24
ldr r1, [r2, #0x20]
add r3, r2, #0x28
str r1, [sp]
ldr r1, [r2, #0x24]
str r1, [sp, #4]
ldr r1, [r2, #0x1c]
str r1, [sp, #8]
ldr r1, [r2, #0x14]
str r1, [sp, #0xc]
ldr r1, [r2, #4]
ldr r2, [r2, #0x10]
bl sub_02007CA0
mov r6, r0
ldrb r7, [sp, #0x30]
b _02008894
_02008834:
ldr r3, [sp, #0x20]
add r0, sp, #0x24
ldr r1, [r3, #0x14]
add r2, r3, #0x28
str r1, [sp]
ldr r1, [r3, #4]
ldr r3, [r3, #0x10]
bl sub_02007D94
mov r6, r0
mov r8, #1
b _02008894
_02008860:
ldr r2, [sp, #0x20]
add r0, sp, #0x24
ldr r1, [r2, #4]
add r2, r2, #0x28
bl sub_02007E2C
mov r6, r0
mov r8, #1
b _02008894
_02008880:
ldr r0, [sp, #0x20]
add r0, r0, #0x28
bl sub_020075B0
mov r6, r0
mov r8, #1
_02008894:
ldr r0, _02008934 ; =_020AF3E4
bl sub_02002CB4
cmp sb, #0
beq _020088DC
mov r0, #0
str r0, [sb, #0x1c]
cmp r7, #0
movne r0, #1
strne r0, [sb, #0x24]
bne _020088DC
cmp r6, #0
strne r0, [sb, #0x24]
bne _020088DC
cmp r8, #0
movne r0, #2
strne r0, [sb, #0x24]
moveq r0, #3
streq r0, [sb, #0x24]
_020088DC:
ldr r0, [sp, #0x20]
ldr r0, [r0, #0x1c]
cmp r0, #0
beq _020088F0
bl sub_02002B50
_020088F0:
ldr r0, [sp, #0x20]
bl sub_02008B78
_020088F8:
mov r1, #0
ldr r0, [sp, #0x20]
ldr r3, _0200893C ; =_02092978
mov r2, r1
bl sub_02008980
ldr r0, _02008934 ; =_020AF3E4
bl sub_02002E98
ldr r0, _02008940 ; =_020AF42C
bl sub_020029B8
ldr r0, _02008944 ; =_020AF490
bl sub_02002B20
b _020084B4
.align 2, 0
_02008928: .word _020AF408
_0200892C: .word _02092908
_02008930: .word _022A369C
_02008934: .word _020AF3E4
_02008938: .word _020AF5E8
_0200893C: .word _02092978
_02008940: .word _020AF42C
_02008944: .word _020AF490
arm_func_end sub_02008490
arm_func_start sub_02008948
sub_02008948: ; 0x02008948
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, _0200897C ; =_020AF3E4
bl sub_02002CB4
ldr r0, [r4, #0x24]
cmp r0, #4
cmpne r0, #5
moveq r4, #1
ldr r0, _0200897C ; =_020AF3E4
movne r4, #0
bl sub_02002E98
and r0, r4, #0xff
ldmia sp!, {r4, pc}
.align 2, 0
_0200897C: .word _020AF3E4
arm_func_end sub_02008948
arm_func_start sub_02008980
sub_02008980: ; 0x02008980
stmdb sp!, {r4, lr}
mov r4, r0
str r2, [r4]
cmp r3, #0
str r1, [r4, #4]
moveq r0, #0
streqb r0, [r4, #0x28]
beq _020089AC
mov r1, r3
add r0, r4, #0x28
bl strcpy
_020089AC:
mov r0, #0
strb r0, [r4, #9]
strb r0, [r4, #8]
str r0, [r4, #0xc]
str r0, [r4, #0x10]
str r0, [r4, #0x14]
str r0, [r4, #0x18]
str r0, [r4, #0x1c]
str r0, [r4, #0x20]
str r0, [r4, #0x24]
ldmia sp!, {r4, pc}
arm_func_end sub_02008980
arm_func_start sub_020089D8
sub_020089D8: ; 0x020089D8
stmdb sp!, {r3, r4, r5, lr}
mov r4, r0
ldr r0, _02008A78 ; =_020AF3E4
ldr r1, _02008A7C ; =_020AF490
bl sub_02002D80
cmp r0, #0
bne _02008A00
ldr r0, _02008A78 ; =_020AF3E4
ldr r1, _02008A7C ; =_020AF490
bl sub_02002D14
_02008A00:
ldr r0, _02008A80 ; =_022A3698
mov r3, #0
ldr r5, [r0]
mov r0, r3
mov r1, #1
b _02008A60
_02008A18:
ldr r2, [r5]
cmp r2, #0
moveq r2, r1
movne r2, r0
tst r2, #0xff
beq _02008A58
mov lr, r5
mov ip, #0x10
_02008A38:
ldmia r4!, {r0, r1, r2, r3}
stmia lr!, {r0, r1, r2, r3}
subs ip, ip, #1
bne _02008A38
ldr r0, _02008A78 ; =_020AF3E4
bl sub_02002E98
mov r0, r5
ldmia sp!, {r3, r4, r5, pc}
_02008A58:
add r3, r3, #1
add r5, r5, #0x100
_02008A60:
cmp r3, #8
blt _02008A18
ldr r0, _02008A78 ; =_020AF3E4
bl sub_02002E98
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02008A78: .word _020AF3E4
_02008A7C: .word _020AF490
_02008A80: .word _022A3698
arm_func_end sub_020089D8
arm_func_start sub_02008A84
sub_02008A84: ; 0x02008A84
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #0x24
mov r5, r0
ldr r4, [r5, #4]
mov r0, r4
bl sub_02008948
cmp r0, #0
bne _02008B00
ldr r1, [r5]
mov r0, r5
str r1, [r4, #0x20]
mov r1, #4
str r1, [r4, #0x24]
bl sub_020089D8
mov r1, r0
mov r2, #1
ldr r0, _02008B64 ; =_022A369C
strb r2, [r1, #8]
bl sub_02002F7C
ldr r6, _02008B68 ; =_020AF53C
_02008AD4:
mov r0, r6
bl sub_02002B7C
ldr r3, [r4, #0x24]
cmp r3, #4
bne _02008AF4
mov r0, r6
bl sub_02002B20
b _02008AD4
_02008AF4:
cmp r3, #2
bhi _02008B04
b _02008B5C
_02008B00:
mov r3, #5
_02008B04:
ldr r0, _02008B6C ; =_02092908
ldr r2, _02008B70 ; =_020AF454
ldr r1, [r0, #0x24]
ldr r0, [r0, #0x20]
str r1, [sp, #0x20]
str r0, [sp, #0x1c]
ldr ip, [r5]
ldr r1, _02008B74 ; =_020929B8
stmia sp, {r3, ip}
ldr r3, [r4, #0x20]
add r0, sp, #0x1c
str r3, [sp, #8]
str r4, [sp, #0xc]
ldr r4, [r5, #0xc]
add r3, r5, #0x28
str r4, [sp, #0x10]
ldr r4, [r5, #0x10]
str r4, [sp, #0x14]
ldr r4, [r5, #0x14]
str r4, [sp, #0x18]
ldr r2, [r2, ip, lsl #2]
bl Debug_FatalError
_02008B5C:
add sp, sp, #0x24
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_02008B64: .word _022A369C
_02008B68: .word _020AF53C
_02008B6C: .word _02092908
_02008B70: .word _020AF454
_02008B74: .word _020929B8
arm_func_end sub_02008A84
arm_func_start sub_02008B78
sub_02008B78: ; 0x02008B78
stmdb sp!, {r3, lr}
ldrb r1, [r0, #8]
cmp r1, #0
moveq r0, #0
ldmeqia sp!, {r3, pc}
mov r1, #0
strb r1, [r0, #8]
ldr r0, _02008BA4 ; =_020AF53C
bl sub_02002B20
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_02008BA4: .word _020AF53C
arm_func_end sub_02008B78
arm_func_start sub_02008BA8
sub_02008BA8: ; 0x02008BA8
stmdb sp!, {r3, lr}
sub sp, sp, #0x40
mov r2, r0
add r0, sp, #0
add r1, sp, #0x28
bl sub_02008C68
cmp r0, #0
ldrne r0, [sp, #0x34]
mvneq r0, #0
add sp, sp, #0x40
ldmia sp!, {r3, pc}
arm_func_end sub_02008BA8