mirror of
https://github.com/pret/pokeplatinum.git
synced 2026-04-26 00:22:05 -05:00
473 lines
8.8 KiB
ArmAsm
473 lines
8.8 KiB
ArmAsm
.include "macros/function.inc"
|
|
.include "include/dwc_nd.inc"
|
|
|
|
|
|
|
|
.text
|
|
|
|
|
|
arm_func_start ov4_021D83A4
|
|
ov4_021D83A4: ; 0x021D83A4
|
|
ldr ip, _021D83B8 ; =DWC_AllocEx
|
|
mov r2, r1
|
|
mov r1, r0
|
|
mov r0, #6
|
|
bx ip
|
|
; .align 2, 0
|
|
_021D83B8: .word DWC_AllocEx
|
|
arm_func_end ov4_021D83A4
|
|
|
|
arm_func_start ov4_021D83BC
|
|
ov4_021D83BC: ; 0x021D83BC
|
|
ldr ip, _021D83D0 ; =DWC_Free
|
|
mov r1, r0
|
|
mov r0, #6
|
|
mov r2, #0
|
|
bx ip
|
|
; .align 2, 0
|
|
_021D83D0: .word DWC_Free
|
|
arm_func_end ov4_021D83BC
|
|
|
|
arm_func_start ov4_021D83D4
|
|
ov4_021D83D4: ; 0x021D83D4
|
|
stmfd sp!, {r4, r5, r6, lr}
|
|
movs r5, r1
|
|
mov r6, r0
|
|
mov r4, r2
|
|
bne _021D83FC
|
|
ldr r3, _021D84B4 ; =0x0221A4E8
|
|
ldr r3, [r3, #0]
|
|
ldr r3, [r3, #0]
|
|
blx r3
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
_021D83FC:
|
|
cmp r5, #8
|
|
addls pc, pc, r5, lsl #2
|
|
b _021D8490
|
|
_021D8408: ; jump table
|
|
b _021D8490 ; case 0
|
|
b _021D842C ; case 1
|
|
b _021D843C ; case 2
|
|
b _021D8444 ; case 3
|
|
b _021D8454 ; case 4
|
|
b _021D8464 ; case 5
|
|
b _021D8494 ; case 6
|
|
b _021D8478 ; case 7
|
|
b _021D8480 ; case 8
|
|
_021D842C:
|
|
ldr r1, _021D84B8 ; =0xFFFF86E7
|
|
mov r0, #9
|
|
bl ov4_021D7724
|
|
b _021D8494
|
|
_021D843C:
|
|
bl OS_Terminate
|
|
b _021D8494
|
|
_021D8444:
|
|
ldr r1, _021D84BC ; =0xFFFF86D4
|
|
mov r0, #0xf
|
|
bl ov4_021D7724
|
|
b _021D8494
|
|
_021D8454:
|
|
ldr r1, _021D84C0 ; =0xFFFF86CA
|
|
mov r0, #0xe
|
|
bl ov4_021D7724
|
|
b _021D8494
|
|
_021D8464:
|
|
ldr r1, _021D84C4 ; =0xFFFF86E8
|
|
mov r0, #0xe
|
|
sub r1, r1, r4
|
|
bl ov4_021D7724
|
|
b _021D8494
|
|
_021D8478:
|
|
bl OS_Terminate
|
|
b _021D8494
|
|
_021D8480:
|
|
ldr r1, _021D84C8 ; =0xFFFF86DF
|
|
mov r0, #9
|
|
bl ov4_021D7724
|
|
b _021D8494
|
|
_021D8490:
|
|
bl OS_Terminate
|
|
_021D8494:
|
|
ldr r1, _021D84B4 ; =0x0221A4E8
|
|
mov r0, r6
|
|
ldr r2, [r1, #0]
|
|
mov r1, r5
|
|
ldr r3, [r2, #0]
|
|
mov r2, r4
|
|
blx r3
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
; .align 2, 0
|
|
_021D84B4: .word Unk_ov4_0221A4E8
|
|
_021D84B8: .word 0xFFFF86E7
|
|
_021D84BC: .word 0xFFFF86D4
|
|
_021D84C0: .word 0xFFFF86CA
|
|
_021D84C4: .word 0xFFFF86E8
|
|
_021D84C8: .word 0xFFFF86DF
|
|
arm_func_end ov4_021D83D4
|
|
|
|
arm_func_start ov4_021D84CC
|
|
ov4_021D84CC: ; 0x021D84CC
|
|
stmfd sp!, {r4, lr}
|
|
ldr r0, _021D850C ; =0x0221A4E8
|
|
ldr r0, [r0, #0]
|
|
add r0, r0, #0x9c0
|
|
bl OS_JoinThread
|
|
ldr r0, _021D850C ; =0x0221A4E8
|
|
ldr r0, [r0, #0]
|
|
ldr r4, [r0, #4]
|
|
bl ov4_021D83BC
|
|
ldr r0, _021D850C ; =0x0221A4E8
|
|
mov r1, #0
|
|
str r1, [r0, #0]
|
|
cmp r4, #0
|
|
ldmeqia sp!, {r4, pc}
|
|
blx r4
|
|
ldmia sp!, {r4, pc}
|
|
; .align 2, 0
|
|
_021D850C: .word Unk_ov4_0221A4E8
|
|
arm_func_end ov4_021D84CC
|
|
|
|
arm_func_start ov4_021D8510
|
|
ov4_021D8510: ; 0x021D8510
|
|
stmfd sp!, {r3, r4, r5, r6, r7, lr}
|
|
sub sp, sp, #0x2a0
|
|
mov r7, #0
|
|
mov r6, #6
|
|
mvn r5, #0
|
|
mov r4, #0x64
|
|
_021D8528:
|
|
bl DWC_SVLProcess
|
|
cmp r0, #3
|
|
bne _021D8644
|
|
ldr r0, _021D86B0 ; =0x0221A4E8
|
|
ldr r5, [r0, #0]
|
|
add r0, r5, #0x50
|
|
bl strlen
|
|
mov r4, r0
|
|
ldr r0, _021D86B4 ; =0x02217430
|
|
bl strlen
|
|
add r0, r4, r0
|
|
cmp r0, #0xff
|
|
bls _021D8574
|
|
mov r1, #8
|
|
sub r2, r1, #9
|
|
mov r0, #0
|
|
bl ov4_021D83D4
|
|
add sp, sp, #0x2a0
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
_021D8574:
|
|
ldr r2, _021D86B8 ; =0x02217444
|
|
add r0, sp, #0x1a0
|
|
add r3, r5, #0x50
|
|
mov r1, #0x100
|
|
bl OS_SNPrintf
|
|
ldr r0, _021D86B0 ; =0x0221A4E8
|
|
ldr r4, [r0, #0]
|
|
add r0, r4, #0x91
|
|
bl strlen
|
|
mov r1, r0
|
|
add r2, sp, #0x10
|
|
add r0, r4, #0x91
|
|
mov r3, #0x190
|
|
bl DWC_Auth_Base64Encode
|
|
cmp r0, #0
|
|
bge _021D85CC
|
|
mov r1, #8
|
|
sub r2, r1, #9
|
|
mov r0, #0
|
|
bl ov4_021D83D4
|
|
add sp, sp, #0x2a0
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
_021D85CC:
|
|
ldr r0, _021D86B0 ; =0x0221A4E8
|
|
ldr r4, _021D86BC ; =ov4_021D83D4
|
|
ldr r2, [r0, #0]
|
|
ldr r0, _021D86C0 ; =ov4_021D83A4
|
|
add r1, r2, #8
|
|
str r1, [sp]
|
|
add r1, r2, #0x28
|
|
str r1, [sp, #4]
|
|
ldr r1, _021D86C4 ; =ov4_021D83BC
|
|
add r2, sp, #0x1a0
|
|
add r3, sp, #0x10
|
|
str r4, [sp, #8]
|
|
bl ov60_02224234
|
|
cmp r0, #0
|
|
mov r0, #0
|
|
bne _021D8620
|
|
mov r1, #8
|
|
sub r2, r1, #9
|
|
bl ov4_021D83D4
|
|
add sp, sp, #0x2a0
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
_021D8620:
|
|
ldr r1, _021D86B0 ; =0x0221A4E8
|
|
mov r4, #1
|
|
ldr r3, [r1, #0]
|
|
mov r1, r0
|
|
sub r2, r0, #1
|
|
str r4, [r3, #0x48]
|
|
bl ov4_021D83D4
|
|
add sp, sp, #0x2a0
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
_021D8644:
|
|
cmp r0, #4
|
|
bne _021D8684
|
|
add r0, sp, #0xc
|
|
bl DWC_GetLastError
|
|
ldr r1, [sp, #0xc]
|
|
mov r0, #0xe
|
|
bl ov4_021D7724
|
|
ldr r0, _021D86B0 ; =0x0221A4E8
|
|
mov r1, #3
|
|
ldr r0, [r0, #0]
|
|
sub r2, r1, #4
|
|
ldr r3, [r0, #0]
|
|
mov r0, #0
|
|
blx r3
|
|
add sp, sp, #0x2a0
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
_021D8684:
|
|
cmp r0, #5
|
|
bne _021D869C
|
|
mov r0, r7
|
|
mov r1, r6
|
|
mov r2, r5
|
|
bl ov4_021D83D4
|
|
_021D869C:
|
|
mov r0, r4
|
|
bl OS_Sleep
|
|
b _021D8528
|
|
_021D86A8:
|
|
.byte 0x2A, 0xDE, 0x8D, 0xE2, 0xF8, 0x80, 0xBD, 0xE8
|
|
_021D86B0: .word Unk_ov4_0221A4E8
|
|
_021D86B4: .word Unk_ov4_02217430
|
|
_021D86B8: .word Unk_ov4_02217444
|
|
_021D86BC: .word ov4_021D83D4
|
|
_021D86C0: .word ov4_021D83A4
|
|
_021D86C4: .word ov4_021D83BC
|
|
arm_func_end ov4_021D8510
|
|
|
|
arm_func_start DWC_NdInitAsync
|
|
DWC_NdInitAsync: ; 0x021D86C8
|
|
stmfd sp!, {r4, r5, r6, lr}
|
|
sub sp, sp, #8
|
|
mov r6, r0
|
|
mov r5, r1
|
|
mov r4, r2
|
|
bl ov4_021D7708
|
|
cmp r0, #0
|
|
addne sp, sp, #8
|
|
movne r0, #0
|
|
ldmneia sp!, {r4, r5, r6, pc}
|
|
mov r0, #0xa80
|
|
mov r1, #0x20
|
|
bl ov4_021D83A4
|
|
ldr r2, _021D87D4 ; =0x0221A4E8
|
|
mov r1, #0
|
|
str r0, [r2, #0]
|
|
str r1, [r0, #0x48]
|
|
ldr r0, [r2, #0]
|
|
mov r2, #0xa80
|
|
bl MI_CpuFill8
|
|
ldr r0, _021D87D4 ; =0x0221A4E8
|
|
mov r1, r5
|
|
ldr r3, [r0, #0]
|
|
mov r2, #0x1f
|
|
str r6, [r3, #0]
|
|
ldr r0, [r0, #0]
|
|
add r0, r0, #8
|
|
bl strncpy
|
|
ldr r0, _021D87D4 ; =0x0221A4E8
|
|
mov r1, r4
|
|
ldr r0, [r0, #0]
|
|
mov r2, #0x1f
|
|
add r0, r0, #0x28
|
|
bl strncpy
|
|
ldr r1, _021D87D4 ; =0x0221A4E8
|
|
ldr r0, _021D87D8 ; =0x02217458
|
|
ldr r1, [r1, #0]
|
|
add r1, r1, #0x4c
|
|
bl DWC_SVLGetTokenAsync
|
|
cmp r0, #0
|
|
bne _021D878C
|
|
ldr r0, _021D87D4 ; =0x0221A4E8
|
|
ldr r0, [r0, #0]
|
|
bl ov4_021D83BC
|
|
ldr r1, _021D87D4 ; =0x0221A4E8
|
|
mov r0, #0
|
|
str r0, [r1, #0]
|
|
add sp, sp, #8
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
_021D878C:
|
|
ldr r0, _021D87D4 ; =0x0221A4E8
|
|
mov r2, #0x800
|
|
ldr r3, [r0, #0]
|
|
ldr r1, _021D87DC ; =ov4_021D8510
|
|
str r2, [sp]
|
|
mov ip, #0x10
|
|
add r0, r3, #0x9c0
|
|
add r3, r3, #0x9c0
|
|
mov r2, #0
|
|
str ip, [sp, #4]
|
|
bl OS_CreateThread
|
|
ldr r0, _021D87D4 ; =0x0221A4E8
|
|
ldr r0, [r0, #0]
|
|
add r0, r0, #0x9c0
|
|
bl OS_WakeupThreadDirect
|
|
mov r0, #1
|
|
add sp, sp, #8
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
; .align 2, 0
|
|
_021D87D4: .word Unk_ov4_0221A4E8
|
|
_021D87D8: .word Unk_ov4_02217458
|
|
_021D87DC: .word ov4_021D8510
|
|
arm_func_end DWC_NdInitAsync
|
|
|
|
arm_func_start DWC_NdCleanupAsync
|
|
DWC_NdCleanupAsync: ; 0x021D87E0
|
|
stmfd sp!, {r3, lr}
|
|
ldr r1, _021D8824 ; =0x0221A4E8
|
|
ldr r2, [r1, #0]
|
|
cmp r2, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
str r0, [r2, #4]
|
|
ldr r0, [r1, #0]
|
|
ldr r0, [r0, #0x48]
|
|
cmp r0, #0
|
|
bne _021D8814
|
|
bl ov4_021D84CC
|
|
b _021D881C
|
|
_021D8814:
|
|
ldr r0, _021D8828 ; =ov4_021D84CC
|
|
bl ov60_02224420
|
|
_021D881C:
|
|
mov r0, #1
|
|
ldmia sp!, {r3, pc}
|
|
; .align 2, 0
|
|
_021D8824: .word Unk_ov4_0221A4E8
|
|
_021D8828: .word ov4_021D84CC
|
|
arm_func_end DWC_NdCleanupAsync
|
|
|
|
arm_func_start DWC_NdSetAttr
|
|
DWC_NdSetAttr: ; 0x021D882C
|
|
stmfd sp!, {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
mov r5, r1
|
|
mov r4, r2
|
|
bl ov4_021D7708
|
|
cmp r0, #0
|
|
movne r0, #0
|
|
ldmneia sp!, {r4, r5, r6, pc}
|
|
mov r0, r6
|
|
mov r1, r5
|
|
mov r2, r4
|
|
bl ov60_02223E90
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end DWC_NdSetAttr
|
|
|
|
arm_func_start DWC_NdGetFileListNumAsync
|
|
DWC_NdGetFileListNumAsync: ; 0x021D8860
|
|
stmfd sp!, {r4, lr}
|
|
mov r4, r0
|
|
bl ov4_021D7708
|
|
cmp r0, #0
|
|
movne r0, #0
|
|
ldmneia sp!, {r4, pc}
|
|
mov r0, r4
|
|
bl ov60_02224D18
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end DWC_NdGetFileListNumAsync
|
|
|
|
arm_func_start DWC_NdGetFileListAsync
|
|
DWC_NdGetFileListAsync: ; 0x021D8884
|
|
stmfd sp!, {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
mov r5, r1
|
|
mov r4, r2
|
|
bl ov4_021D7708
|
|
cmp r0, #0
|
|
movne r0, #0
|
|
ldmneia sp!, {r4, r5, r6, pc}
|
|
mov r0, #0xb0
|
|
mul r2, r4, r0
|
|
mov r0, r6
|
|
mov r1, #0
|
|
bl MI_CpuFill8
|
|
mov r0, r6
|
|
mov r1, r5
|
|
mov r2, r4
|
|
bl ov60_02224D8C
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end DWC_NdGetFileListAsync
|
|
|
|
arm_func_start DWC_NdGetFileAsync
|
|
DWC_NdGetFileAsync: ; 0x021D88CC
|
|
stmfd sp!, {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
mov r5, r1
|
|
mov r4, r2
|
|
bl ov4_021D7708
|
|
cmp r0, #0
|
|
movne r0, #0
|
|
ldmneia sp!, {r4, r5, r6, pc}
|
|
mov r0, r6
|
|
mov r1, r5
|
|
mov r2, r4
|
|
bl ov60_0222504C
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end DWC_NdGetFileAsync
|
|
|
|
arm_func_start DWC_NdCancelAsync
|
|
DWC_NdCancelAsync: ; 0x021D8900
|
|
stmfd sp!, {r3, lr}
|
|
bl ov4_021D7708
|
|
cmp r0, #0
|
|
movne r0, #0
|
|
ldmneia sp!, {r3, pc}
|
|
bl ov60_02224448
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end DWC_NdCancelAsync
|
|
|
|
arm_func_start DWC_NdGetProgress
|
|
DWC_NdGetProgress: ; 0x021D891C
|
|
stmfd sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
mov r4, r1
|
|
bl ov4_021D7708
|
|
cmp r0, #0
|
|
movne r0, #0
|
|
ldmneia sp!, {r3, r4, r5, pc}
|
|
mov r0, r5
|
|
mov r1, r4
|
|
bl ov60_02225208
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end DWC_NdGetProgress
|
|
|
|
.data
|
|
|
|
|
|
.global Unk_ov4_02217430
|
|
Unk_ov4_02217430: ; 0x02217430
|
|
.incbin "incbin/overlay4_data.bin", 0x15B0, 0x15C4 - 0x15B0
|
|
|
|
.global Unk_ov4_02217444
|
|
Unk_ov4_02217444: ; 0x02217444
|
|
.incbin "incbin/overlay4_data.bin", 0x15C4, 0x15D8 - 0x15C4
|
|
|
|
.global Unk_ov4_02217458
|
|
Unk_ov4_02217458: ; 0x02217458
|
|
.incbin "incbin/overlay4_data.bin", 0x15D8, 0x5
|
|
|
|
|
|
|
|
.bss
|
|
|
|
|
|
.global Unk_ov4_0221A4E8
|
|
Unk_ov4_0221A4E8: ; 0x0221A4E8
|
|
.space 0x4
|
|
|