diff options
Diffstat (limited to 'arm9/asm/libcard.s')
-rw-r--r-- | arm9/asm/libcard.s | 1784 |
1 files changed, 0 insertions, 1784 deletions
diff --git a/arm9/asm/libcard.s b/arm9/asm/libcard.s deleted file mode 100644 index 1eb74e0d..00000000 --- a/arm9/asm/libcard.s +++ /dev/null @@ -1,1784 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - arm_func_start CARD_UnlockBackup -CARD_UnlockBackup: ; 0x020D66A0 - ldr ip, _020D66AC ; =CARDi_UnlockResource - mov r1, #0x2 - bx r12 - .balign 4 -_020D66AC: .word CARDi_UnlockResource - - arm_func_start CARD_LockBackup -CARD_LockBackup: ; 0x020D66B0 - ldr ip, _020D66BC ; =CARDi_LockResource - mov r1, #0x2 - bx r12 - .balign 4 -_020D66BC: .word CARDi_LockResource - - arm_func_start CARD_UnlockRom -CARD_UnlockRom: ; 0x020D66C0 - stmdb sp!, {r4,lr} - mov r4, r0 - bl OS_UnlockCard - mov r0, r4 - mov r1, #0x1 - bl CARDi_UnlockResource - ldmia sp!, {r4,lr} - bx lr - - arm_func_start CARD_LockRom -CARD_LockRom: ; 0x020D66E0 - stmdb sp!, {r4,lr} - mov r4, r0 - mov r1, #0x1 - bl CARDi_LockResource - mov r0, r4 - bl OS_TryLockCard - ldmia sp!, {r4,lr} - bx lr - - arm_func_start CARD_GetResultCode -CARD_GetResultCode: ; 0x020D6700 - ldr r0, _020D6710 ; =0x021D55C0 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x0] - bx lr - .balign 4 -_020D6710: .word 0x021D55C0 - - arm_func_start FUN_020D6714 -FUN_020D6714: ; 0x020D6714 - ldr r0, _020D672C ; =0x021D55C0 - ldr r0, [r0, #0x114] - ands r0, r0, #0x4 - moveq r0, #0x1 - movne r0, #0x0 - bx lr - .balign 4 -_020D672C: .word 0x021D55C0 - - arm_func_start CARDi_WaitAsync -CARDi_WaitAsync: ; 0x020D6730 - stmdb sp!, {r4-r6,lr} - ldr r6, _020D6788 ; =0x021D55C0 - bl OS_DisableInterrupts - ldr r1, [r6, #0x114] - mov r5, r0 - ands r0, r1, #0x4 - beq _020D6764 - add r4, r6, #0x10c -_020D6750: - mov r0, r4 - bl OS_SleepThread - ldr r0, [r6, #0x114] - ands r0, r0, #0x4 - bne _020D6750 -_020D6764: - mov r0, r5 - bl OS_RestoreInterrupts -_020D676C: ; 0x020D676C - ldr r0, [r6, #0x0] - ldr r0, [r0, #0x0] - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - ldmia sp!, {r4-r6,lr} - bx lr - .balign 4 -_020D6788: .word 0x021D55C0 - - arm_func_start CARD_Enable -CARD_Enable: ; 0x020D678C - ldr r1, _020D6798 ; =0x021D555C - str r0, [r1, #0x0] - bx lr - .balign 4 -_020D6798: .word 0x021D555C - - arm_func_start CARD_CheckEnabled -CARD_CheckEnabled: ; 0x020D679C - stmdb sp!, {lr} - sub sp, sp, #0x4 - bl CARD_IsEnabled -_020D67A8: ; 0x020D67A8 - cmp r0, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {lr} - bxne lr - bl OS_Terminate - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - - arm_func_start CARD_IsEnabled -CARD_IsEnabled: - ldr r0, _020D67D4 ; =0x021D555C - ldr r0, [r0, #0x0] - bx lr - .balign 4 -_020D67D4: .word 0x021D555C - - arm_func_start CARDi_InitCommon -CARDi_InitCommon: ; 0x020D67D8 - stmdb sp!, {r4,lr} - sub sp, sp, #0x8 - ldr r4, _020D68B8 ; =0x021D55C0 - ldr r1, _020D68BC ; =0x021D5560 - mvn r2, #0x2 - mov r0, #0x0 - str r2, [r4, #0x8] - mov r2, #0x60 - str r0, [r4, #0xc] - str r0, [r4, #0x18] - str r1, [r4, #0x0] - bl MIi_CpuClearFast - ldr r0, _020D68BC ; =0x021D5560 - mov r1, #0x60 - bl DC_FlushRange - ldr r0, _020D68C0 ; =0x027FFC40 - ldrh r0, [r0, #0x0] - cmp r0, #0x2 - beq _020D6834 - ldr r0, _020D68C4 ; =0x027FFE00 - ldr r1, _020D68C8 ; =0x027FFA80 - mov r2, #0x160 - bl MI_CpuCopy8 -_020D6834: - mov r2, #0x0 - str r2, [r4, #0x14] - ldr r0, [r4, #0x14] - mov r1, #0x4 - str r0, [r4, #0x10] - str r2, [r4, #0x110] - ldr r3, [r4, #0x110] - mov r0, #0x400 - str r3, [r4, #0x10c] - str r1, [r4, #0x108] - str r0, [sp, #0x0] - ldr r12, [r4, #0x108] - ldr r1, _020D68CC ; =CARDi_TaskThread - ldr r3, _020D68D0 ; =0x021D5BE0 - add r0, r4, #0x44 - str r12, [sp, #0x4] - bl OS_CreateThread - add r0, r4, #0x44 - bl OS_WakeupThreadDirect - ldr r1, _020D68D4 ; =CARDi_OnFifoRecv - mov r0, #0xb - bl PXI_SetFifoRecvCallback - ldr r0, _020D68C0 ; =0x027FFC40 - ldrh r0, [r0, #0x0] - cmp r0, #0x2 - addeq sp, sp, #0x8 - ldmeqia sp!, {r4,lr} - bxeq lr - mov r0, #0x1 - bl CARD_Enable - add sp, sp, #0x8 - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_020D68B8: .word 0x021D55C0 -_020D68BC: .word 0x021D5560 -_020D68C0: .word 0x027FFC40 -_020D68C4: .word 0x027FFE00 -_020D68C8: .word 0x027FFA80 -_020D68CC: .word CARDi_TaskThread -_020D68D0: .word 0x021D5BE0 -_020D68D4: .word CARDi_OnFifoRecv - - arm_func_start CARDi_UnlockResource -CARDi_UnlockResource: ; 0x020D68D8 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr r5, _020D6978 ; =0x021D55C0 - mov r7, r0 - mov r6, r1 - bl OS_DisableInterrupts - mov r1, r5 - mov r4, r0 - ldr r0, [r1, #0x8] - cmp r0, r7 - bne _020D6910 - ldr r0, [r5, #0xc] - cmp r0, #0x0 - bne _020D6918 -_020D6910: - bl OS_Terminate - b _020D6958 -_020D6918: - ldr r0, [r5, #0x18] - cmp r0, r6 - beq _020D6928 - bl OS_Terminate -_020D6928: - ldr r0, [r5, #0xc] - sub r0, r0, #0x1 - str r0, [r5, #0xc] - ldr r0, [r5, #0xc] - cmp r0, #0x0 - bne _020D6958 - mvn r0, #0x2 - str r0, [r5, #0x8] - mov r1, #0x0 - add r0, r5, #0x10 - str r1, [r5, #0x18] - bl OS_WakeupThread -_020D6958: - ldr r1, [r5, #0x0] - mov r2, #0x0 - mov r0, r4 - str r2, [r1, #0x0] - bl OS_RestoreInterrupts - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - .balign 4 -_020D6978: .word 0x021D55C0 - - arm_func_start CARDi_LockResource -CARDi_LockResource: ; 0x020D697C - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - ldr r5, _020D6A14 ; =0x021D55C0 - mov r7, r0 - mov r6, r1 - bl OS_DisableInterrupts - ldr r1, [r5, #0x8] - mov r4, r0 - cmp r1, r7 - bne _020D69B8 - ldr r0, [r5, #0x18] - cmp r0, r6 - beq _020D69E8 - bl OS_Terminate - b _020D69E8 -_020D69B8: - ldr r0, [r5, #0x8] - mvn r8, #0x2 - cmp r0, r8 - beq _020D69E0 - add r9, r5, #0x10 -_020D69CC: - mov r0, r9 - bl OS_SleepThread - ldr r0, [r5, #0x8] - cmp r0, r8 - bne _020D69CC -_020D69E0: - str r7, [r5, #0x8] - str r6, [r5, #0x18] -_020D69E8: - ldr r1, [r5, #0xc] - mov r0, r4 - add r1, r1, #0x1 - str r1, [r5, #0xc] - ldr r1, [r5, #0x0] - mov r2, #0x0 - str r2, [r1, #0x0] - bl OS_RestoreInterrupts - add sp, sp, #0x4 - ldmia sp!, {r4-r9,lr} - bx lr - .balign 4 -_020D6A14: .word 0x021D55C0 - - arm_func_start CARDi_SetTask -CARDi_SetTask: ; 0x020D6A18 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r4, _020D6A5C ; =0x021D55C0 - mov r5, r0 - ldr r1, [r4, #0x108] - add r0, r4, #0x44 - bl OS_SetThreadPriority - add r0, r4, #0x44 - str r0, [r4, #0x104] - str r5, [r4, #0x40] - ldr r1, [r4, #0x114] - orr r1, r1, #0x8 - str r1, [r4, #0x114] - bl OS_WakeupThreadDirect - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - .balign 4 -_020D6A5C: .word 0x021D55C0 - - arm_func_start FUN_020D6A60 -FUN_020D6A60: ; 0x020D6A60 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r1, _020D6D60 ; =0x021D55C0 - mov r5, r0 - ldr r4, [r1, #0x0] - mov r1, #0x0 - add r0, r4, #0x18 - mov r2, #0x48 - bl MI_CpuFill8 -_020D6A84: ; 0x020D6A84 - cmp r5, #0x0 - str r5, [r4, #0x4] - mov r0, #0x3f - addeq sp, sp, #0x4 - str r0, [r4, #0x4c] - ldmeqia sp!, {r4-r5,lr} - bxeq lr - mov r0, r5, asr #0x8 - and r0, r0, #0xff - mov r2, #0x1 - mov r3, r2, lsl r0 - and r1, r5, #0xff - str r3, [r4, #0x18] - mov r0, #0xff - strb r0, [r4, #0x48] - cmp r1, #0x1 - bne _020D6B80 - cmp r3, #0x200 - beq _020D6AE4 - cmp r3, #0x2000 - beq _020D6B04 - cmp r3, #0x10000 - beq _020D6B28 - b _020D6D38 -_020D6AE4: - mov r0, #0x10 - str r0, [r4, #0x20] - str r2, [r4, #0x24] - mov r0, #0x5 - str r0, [r4, #0x28] - mov r0, #0xf0 - strb r0, [r4, #0x48] - b _020D6B48 -_020D6B04: - mov r0, #0x20 - str r0, [r4, #0x20] - mov r0, #0x2 - str r0, [r4, #0x24] - mov r0, #0x5 - str r0, [r4, #0x28] - mov r0, #0x0 - strb r0, [r4, #0x48] - b _020D6B48 -_020D6B28: - mov r0, #0x80 - str r0, [r4, #0x20] - mov r0, #0x2 - str r0, [r4, #0x24] - mov r0, #0xa - str r0, [r4, #0x28] - mov r0, #0x0 - strb r0, [r4, #0x48] -_020D6B48: - ldr r0, [r4, #0x20] - add sp, sp, #0x4 - str r0, [r4, #0x1c] - ldr r0, [r4, #0x4c] - orr r0, r0, #0x40 - str r0, [r4, #0x4c] - ldr r0, [r4, #0x4c] - orr r0, r0, #0x100 - str r0, [r4, #0x4c] - ldr r0, [r4, #0x4c] - orr r0, r0, #0x200 - str r0, [r4, #0x4c] - ldmia sp!, {r4-r5,lr} - bx lr -_020D6B80: - cmp r1, #0x2 - bne _020D6CD8 - cmp r3, #0x100000 - bhi _020D6BB8 - cmp r3, #0x100000 - bhs _020D6BD8 - cmp r3, #0x40000 - bhi _020D6BAC - cmp r3, #0x40000 - beq _020D6BD8 - b _020D6D38 -_020D6BAC: - cmp r3, #0x80000 - beq _020D6BD8 - b _020D6D38 -_020D6BB8: - cmp r3, #0x200000 - bhi _020D6BCC - cmp r3, #0x200000 - beq _020D6C10 - b _020D6D38 -_020D6BCC: - cmp r3, #0x800000 - beq _020D6C48 - b _020D6D38 -_020D6BD8: - mov r0, #0x19 - str r0, [r4, #0x2c] - mov r1, #0x12c - str r1, [r4, #0x30] - ldr r0, _020D6D64 ; =0x00001388 - str r1, [r4, #0x44] - str r0, [r4, #0x3c] - ldr r0, [r4, #0x4c] - orr r0, r0, #0x80 - str r0, [r4, #0x4c] - ldr r0, [r4, #0x4c] - orr r0, r0, #0x400 - str r0, [r4, #0x4c] - b _020D6C7C -_020D6C10: - mov r1, #0x3e8 - ldr r0, _020D6D68 ; =0x00000BB8 - str r1, [r4, #0x3c] - ldr r1, _020D6D6C ; =0x00004268 - str r0, [r4, #0x40] - ldr r0, _020D6D70 ; =0x00009C40 - str r1, [r4, #0x34] - str r0, [r4, #0x38] - mov r0, #0x0 - strb r0, [r4, #0x48] - ldr r0, [r4, #0x4c] - orr r0, r0, #0x1000 - str r0, [r4, #0x4c] - b _020D6C7C -_020D6C48: - mov r1, #0x3e8 - ldr r0, _020D6D68 ; =0x00000BB8 - str r1, [r4, #0x3c] - ldr r1, _020D6D74 ; =0x000109A0 - str r0, [r4, #0x40] - ldr r0, _020D6D78 ; =0x00027100 - str r1, [r4, #0x34] - str r0, [r4, #0x38] - mov r0, #0x0 - strb r0, [r4, #0x48] - ldr r0, [r4, #0x4c] - orr r0, r0, #0x1000 - str r0, [r4, #0x4c] -_020D6C7C: - mov r0, #0x10000 - str r0, [r4, #0x1c] - mov r0, #0x100 - str r0, [r4, #0x20] - mov r0, #0x3 - str r0, [r4, #0x24] - mov r0, #0x5 - str r0, [r4, #0x28] - ldr r0, [r4, #0x4c] - add sp, sp, #0x4 - orr r0, r0, #0x40 - str r0, [r4, #0x4c] - ldr r0, [r4, #0x4c] - orr r0, r0, #0x100 - str r0, [r4, #0x4c] - ldr r0, [r4, #0x4c] - orr r0, r0, #0x200 - str r0, [r4, #0x4c] - ldr r0, [r4, #0x4c] - orr r0, r0, #0x800 - str r0, [r4, #0x4c] - ldmia sp!, {r4-r5,lr} - bx lr -_020D6CD8: - cmp r1, #0x3 - bne _020D6D38 - cmp r3, #0x2000 - beq _020D6CF0 - cmp r3, #0x8000 - bne _020D6D38 -_020D6CF0: - str r3, [r4, #0x20] - str r3, [r4, #0x1c] - mov r0, #0x2 - str r0, [r4, #0x24] - mov r0, #0x0 - strb r0, [r4, #0x48] - ldr r0, [r4, #0x4c] - add sp, sp, #0x4 - orr r0, r0, #0x40 - str r0, [r4, #0x4c] - ldr r0, [r4, #0x4c] - orr r0, r0, #0x100 - str r0, [r4, #0x4c] - ldr r0, [r4, #0x4c] - orr r0, r0, #0x200 - str r0, [r4, #0x4c] - ldmia sp!, {r4-r5,lr} - bx lr -_020D6D38: - mov r1, #0x0 - str r1, [r4, #0x4] - str r1, [r4, #0x18] - ldr r0, _020D6D60 ; =0x021D55C0 - mov r1, #0x3 - ldr r0, [r0, #0x0] - str r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - .balign 4 -_020D6D60: .word 0x021D55C0 -_020D6D64: .word 0x00001388 -_020D6D68: .word 0x00000BB8 -_020D6D6C: .word 0x00004268 -_020D6D70: .word 0x00009C40 -_020D6D74: .word 0x000109A0 -_020D6D78: .word 0x00027100 - - arm_func_start CARD_CancelBackupAsync -CARD_CancelBackupAsync: ; 0x020D6D7C - stmdb sp!, {lr} - sub sp, sp, #0x4 - bl OS_DisableInterrupts - ldr r1, _020D6DA8 ; =0x021D55C0 - ldr r2, [r1, #0x114] - orr r2, r2, #0x40 - str r2, [r1, #0x114] - bl OS_RestoreInterrupts - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_020D6DA8: .word 0x021D55C0 - - arm_func_start CARD_TryWaitBackupAsync -CARD_TryWaitBackupAsync: ; 0x020D6DAC - ldr ip, _020D6DB4 ; =FUN_020D6714 - bx r12 - .balign 4 -_020D6DB4: .word FUN_020D6714 - - arm_func_start CARD_WaitBackupAsync -CARD_WaitBackupAsync: ; 0x020D6DB8 - ldr ip, _020D6DC0 ; =CARDi_WaitAsync - bx r12 - .balign 4 -_020D6DC0: .word CARDi_WaitAsync - - .extern _SDK_NintendoBackup - - arm_func_start CARD_IdentifyBackup -CARD_IdentifyBackup: ; 0x020D6DC4 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r0, _020D6F00 ; =_SDK_NintendoBackup - ldr r7, _020D6F04 ; =0x021D55C0 - bl OSi_ReferSymbol -_020D6DDC: ; 0x020D6DDC - cmp r5, #0x0 - bne _020D6DE8 - bl OS_Terminate -_020D6DE8: - bl CARD_CheckEnabled - bl OS_DisableInterrupts - ldr r1, [r7, #0x114] - mov r4, r0 - ands r0, r1, #0x4 - beq _020D6E18 - add r6, r7, #0x10c -_020D6E04: - mov r0, r6 - bl OS_SleepThread - ldr r0, [r7, #0x114] - ands r0, r0, #0x4 - bne _020D6E04 -_020D6E18: - ldr r0, [r7, #0x114] - mov r1, #0x0 - orr r0, r0, #0x4 - str r0, [r7, #0x114] - str r1, [r7, #0x38] - mov r0, r4 - str r1, [r7, #0x3c] - bl OS_RestoreInterrupts - mov r0, r5 - bl FUN_020D6A60 - ldr r0, _020D6F08 ; =0x021D3498 - ldr r1, _020D6F04 ; =0x021D55C0 - ldr r2, [r0, #0x4] - mov r0, r7 - str r2, [r1, #0x104] - mov r1, #0x2 - mov r2, #0x1 - bl CARDi_Request -_020D6E60: ; 0x020D6E60 - ldr r0, [r7, #0x0] - mov r1, #0x0 - str r1, [r0, #0xc] - ldr r0, [r7, #0x0] - add r1, r7, #0x120 - str r1, [r0, #0x10] - ldr r1, [r7, #0x0] - mov r2, #0x1 - mov r0, r7 - str r2, [r1, #0x14] - mov r1, #0x6 - bl CARDi_Request - ldr r6, [r7, #0x38] - ldr r5, [r7, #0x3c] - bl OS_DisableInterrupts - mov r4, r0 - ldr r1, [r7, #0x114] - add r0, r7, #0x10c - bic r1, r1, #0x4c - str r1, [r7, #0x114] - bl OS_WakeupThread - ldr r0, [r7, #0x114] - ands r0, r0, #0x10 - beq _020D6EC8 - add r0, r7, #0x44 - bl OS_WakeupThreadDirect -_020D6EC8: - mov r0, r4 - bl OS_RestoreInterrupts -_020D6ED0: ; 0x020D6ED0 - cmp r6, #0x0 - beq _020D6EE0 - mov r0, r5 - blx r6 -_020D6EE0: - ldr r0, [r7, #0x0] - ldr r0, [r0, #0x0] - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - .balign 4 -_020D6F00: .word _SDK_NintendoBackup -_020D6F04: .word 0x021D55C0 -_020D6F08: .word 0x021D3498 - - arm_func_start CARD_GetBackupSectorSize -CARD_GetBackupSectorSize: ; 0x020D6F0C - ldr r0, _020D6F1C ; =0x021D55C0 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x1c] - bx lr - .balign 4 -_020D6F1C: .word 0x021D55C0 - - arm_func_start CARDi_RequestStreamCommand -CARDi_RequestStreamCommand: ; 0x020D6F20 - stmdb sp!, {r4-r10,lr} - mov r10, r0 - ldr r6, _020D7004 ; =0x021D55C0 - ldr r0, _020D7008 ; =_SDK_NintendoBackup - mov r9, r1 - mov r8, r2 - mov r7, r3 - bl OSi_ReferSymbol - bl OS_DisableInterrupts - ldr r1, [r6, #0x114] - mov r5, r0 - ands r0, r1, #0x4 - beq _020D6F6C - add r4, r6, #0x10c -_020D6F58: - mov r0, r4 - bl OS_SleepThread - ldr r0, [r6, #0x114] - ands r0, r0, #0x4 - bne _020D6F58 -_020D6F6C: - ldr r0, [r6, #0x114] - ldr r1, [sp, #0x20] - orr r0, r0, #0x4 - str r0, [r6, #0x114] - str r7, [r6, #0x38] - mov r0, r5 - str r1, [r6, #0x3c] - bl OS_RestoreInterrupts - str r10, [r6, #0x1c] - str r9, [r6, #0x20] - ldr r0, [sp, #0x24] - ldr r1, [sp, #0x28] - str r8, [r6, #0x24] - ldr r2, [sp, #0x2c] - str r1, [r6, #0x2c] - ldr r1, [sp, #0x30] - str r2, [r6, #0x30] - str r1, [r6, #0x34] - cmp r0, #0x0 - beq _020D6FD0 - ldr r0, _020D700C ; =CARDi_RequestStreamCommandCore - bl CARDi_SetTask - mov r0, #0x1 - ldmia sp!, {r4-r10,lr} - bx lr -_020D6FD0: - ldr r0, _020D7010 ; =0x021D3498 - ldr r1, _020D7004 ; =0x021D55C0 - ldr r2, [r0, #0x4] - mov r0, r6 - str r2, [r1, #0x104] - bl CARDi_RequestStreamCommandCore -_020D6FE8: ; 0x020D6FE8 - ldr r0, [r6, #0x0] - ldr r0, [r0, #0x0] - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - ldmia sp!, {r4-r10,lr} - bx lr - .balign 4 -_020D7004: .word 0x021D55C0 -_020D7008: .word _SDK_NintendoBackup -_020D700C: .word CARDi_RequestStreamCommandCore -_020D7010: .word 0x021D3498 - - arm_func_start CARDi_RequestStreamCommandCore -CARDi_RequestStreamCommandCore: - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r9, r0 - ldr r8, [r9, #0x2c] - ldr r0, _020D720C ; =_SDK_NintendoBackup - ldr r7, [r9, #0x34] - ldr r10, [r9, #0x30] - mov r6, #0x100 - bl OSi_ReferSymbol - cmp r8, #0xb - bne _020D7048 - bl CARD_GetBackupSectorSize - mov r6, r0 -_020D7048: - mov r0, #0x1 - add r4, r9, #0x120 - mov r11, #0x9 - str r0, [sp, #0x0] -_020D7058: - ldr r5, [r9, #0x24] - ldr r0, [r9, #0x0] - cmp r6, r5 - movcc r5, r6 - str r5, [r0, #0x14] - ldr r0, [r9, #0x114] - ands r0, r0, #0x40 - beq _020D7094 - ldr r0, [r9, #0x114] - mov r1, #0x7 - bic r0, r0, #0x40 - str r0, [r9, #0x114] - ldr r0, [r9, #0x0] - str r1, [r0, #0x0] - b _020D71A8 -_020D7094: - cmp r7, #0x3 - addls pc, pc, r7, lsl #0x2 - b _020D7124 -_020D70A0: - b _020D70B0 -_020D70A4: - b _020D70D4 -_020D70A8: - b _020D70D4 -_020D70AC: - b _020D710C -_020D70B0: - mov r1, r5 - add r0, r9, #0x120 - bl DC_InvalidateRange - ldr r1, [r9, #0x1c] - ldr r0, [r9, #0x0] - str r1, [r0, #0xc] - ldr r0, [r9, #0x0] - str r4, [r0, #0x10] - b _020D7124 -_020D70D4: - ldr r0, [r9, #0x1c] - mov r1, r4 - mov r2, r5 - bl MI_CpuCopy8 - mov r1, r5 - add r0, r9, #0x120 - bl DC_FlushRange - bl DC_WaitWriteBufferEmpty -_020D70F4: ; 0x020D70F4 - ldr r0, [r9, #0x0] - str r4, [r0, #0xc] - ldr r1, [r9, #0x20] - ldr r0, [r9, #0x0] - str r1, [r0, #0x10] - b _020D7124 -_020D710C: - ldr r1, [r9, #0x1c] - ldr r0, [r9, #0x0] - str r1, [r0, #0xc] - ldr r1, [r9, #0x20] - ldr r0, [r9, #0x0] - str r1, [r0, #0x10] -_020D7124: - mov r0, r9 - mov r1, r8 - mov r2, r10 - bl CARDi_Request -_020D7134: ; 0x020D7134 - cmp r0, #0x0 - beq _020D71A8 - cmp r7, #0x2 - bne _020D7160 - ldr r2, [sp, #0x0] - mov r0, r9 - mov r1, r11 - bl CARDi_Request -_020D7154: ; 0x020D7154 - cmp r0, #0x0 - bne _020D7178 - b _020D71A8 -_020D7160: - cmp r7, #0x0 - bne _020D7178 - ldr r1, [r9, #0x20] - mov r2, r5 - add r0, r9, #0x120 - bl MI_CpuCopy8 -_020D7178: - ldr r0, [r9, #0x1c] - add r0, r0, r5 - str r0, [r9, #0x1c] - ldr r0, [r9, #0x20] - add r0, r0, r5 - str r0, [r9, #0x20] - ldr r0, [r9, #0x24] - sub r0, r0, r5 - str r0, [r9, #0x24] - ldr r0, [r9, #0x24] - cmp r0, #0x0 - bne _020D7058 -_020D71A8: - ldr r6, [r9, #0x38] - ldr r5, [r9, #0x3c] - bl OS_DisableInterrupts - ldr r1, [r9, #0x114] - mov r4, r0 - bic r0, r1, #0x4c - str r0, [r9, #0x114] - add r0, r9, #0x10c - bl OS_WakeupThread - ldr r0, [r9, #0x114] - ands r0, r0, #0x10 - beq _020D71E0 - add r0, r9, #0x44 - bl OS_WakeupThreadDirect -_020D71E0: - mov r0, r4 - bl OS_RestoreInterrupts -_020D71E8: ; 0x020D71E8 - cmp r6, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r11,lr} - bxeq lr - mov r0, r5 - blx r6 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,lr} - bx lr - .balign 4 -_020D720C: .word _SDK_NintendoBackup - - arm_func_start CARDi_GetRomAccessor -CARDi_GetRomAccessor: ; 0x020D7210 - ldr r0, _020D7218 ; =CARDi_ReadCard - bx lr - .balign 4 -_020D7218: .word CARDi_ReadCard - - arm_func_start CARD_WaitRomAsync -CARD_WaitRomAsync: ; 0x020D721C - ldr ip, _020D7224 ; =CARDi_WaitAsync - bx r12 - .balign 4 -_020D7224: .word CARDi_WaitAsync - - arm_func_start CARD_Init -CARD_Init: ; 0x020D7228 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr ip, _020D72A0 ; =0x021D55C0 - ldr r0, [r12, #0x114] - cmp r0, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {lr} - bxne lr - mov r0, #0x1 - str r0, [r12, #0x114] - mov r3, #0x0 - str r3, [r12, #0x24] - ldr r0, [r12, #0x24] - mvn r1, #0x0 - str r0, [r12, #0x20] - ldr r2, [r12, #0x20] - ldr r0, _020D72A4 ; =0x021D5BE0 - str r2, [r12, #0x1c] - str r1, [r12, #0x28] - str r3, [r12, #0x38] - str r3, [r12, #0x3c] - str r3, [r0, #0x0] - bl CARDi_InitCommon - bl CARDi_GetRomAccessor - ldr r1, _020D72A8 ; =0x021D5C00 - str r0, [r1, #0x0] - bl CARD_InitPulledOutCallback - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_020D72A0: .word 0x021D55C0 -_020D72A4: .word 0x021D5BE0 -_020D72A8: .word 0x021D5C00 - - arm_func_start CARDi_ReadRom -CARDi_ReadRom: ; 0x020D72AC - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - ldr r6, _020D73C0 ; =0x021D55C0 - mov r10, r0 - mov r9, r1 - mov r8, r2 - mov r7, r3 - ldr fp, _020D73C4 ; =0x021D5C00 - bl CARD_CheckEnabled - bl OS_DisableInterrupts - ldr r1, [r6, #0x114] - mov r5, r0 - ands r0, r1, #0x4 - beq _020D72FC - add r4, r6, #0x10c -_020D72E8: - mov r0, r4 - bl OS_SleepThread - ldr r0, [r6, #0x114] - ands r0, r0, #0x4 - bne _020D72E8 -_020D72FC: - ldr r1, [r6, #0x114] - ldr r0, [sp, #0x28] - orr r1, r1, #0x4 - str r1, [r6, #0x114] - ldr r1, [sp, #0x2c] - str r0, [r6, #0x38] - mov r0, r5 - str r1, [r6, #0x3c] - bl OS_RestoreInterrupts - ldr r0, _020D73C8 ; =0x021D5BE0 - str r10, [r6, #0x28] - ldr r0, [r0, #0x0] - cmp r10, #0x3 - add r0, r9, r0 - str r0, [r6, #0x1c] - str r8, [r6, #0x20] - str r7, [r6, #0x24] - bhi _020D734C - mov r0, r10 - bl MI_StopDma -_020D734C: - mov r0, r11 - bl CARDi_TryReadCardDma -_020D7354: ; 0x020D7354 - cmp r0, #0x0 - beq _020D7380 - ldr r0, [sp, #0x30] - cmp r0, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r11,lr} - bxne lr - bl CARD_WaitRomAsync - add sp, sp, #0x4 - ldmia sp!, {r4-r11,lr} - bx lr -_020D7380: - ldr r0, [sp, #0x30] - cmp r0, #0x0 - beq _020D73A0 - ldr r0, _020D73CC ; =CARDi_ReadRomSyncCore - bl CARDi_SetTask - add sp, sp, #0x4 - ldmia sp!, {r4-r11,lr} - bx lr -_020D73A0: - ldr r1, _020D73D0 ; =0x021D3498 - mov r0, r6 - ldr r1, [r1, #0x4] - str r1, [r6, #0x104] - bl CARDi_ReadRomSyncCore - add sp, sp, #0x4 - ldmia sp!, {r4-r11,lr} - bx lr - .balign 4 -_020D73C0: .word 0x021D55C0 -_020D73C4: .word 0x021D5C00 -_020D73C8: .word 0x021D5BE0 -_020D73CC: .word CARDi_ReadRomSyncCore -_020D73D0: .word 0x021D3498 - - arm_func_start CARDi_ReadRomSyncCore -CARDi_ReadRomSyncCore: ; 0x020D73D4 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr r4, _020D7478 ; =0x021D5C00 - mov r0, r4 - bl CARDi_ReadFromCache -_020D73E8: ; 0x020D73E8 - cmp r0, #0x0 - beq _020D73FC - ldr r1, [r4, #0x0] - mov r0, r4 - blx r1 -_020D73FC: - ldr r7, _020D747C ; =0x021D55C0 - bl CARDi_ReadRomIDCore - bl CARDi_CheckPulledOutCore -_020D7408: ; 0x020D7408 - ldr r0, [r7, #0x0] - mov r1, #0x0 - str r1, [r0, #0x0] - ldr r6, [r7, #0x38] - ldr r5, [r7, #0x3c] - bl OS_DisableInterrupts - ldr r1, [r7, #0x114] - mov r4, r0 - bic r0, r1, #0x4c - str r0, [r7, #0x114] - add r0, r7, #0x10c - bl OS_WakeupThread - ldr r0, [r7, #0x114] - ands r0, r0, #0x10 - beq _020D744C - add r0, r7, #0x44 - bl OS_WakeupThreadDirect -_020D744C: - mov r0, r4 - bl OS_RestoreInterrupts -_020D7454: ; 0x020D7454 - cmp r6, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,lr} - bxeq lr - mov r0, r5 - blx r6 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - .balign 4 -_020D7478: .word 0x021D5C00 -_020D747C: .word 0x021D55C0 - - arm_func_start CARDi_ReadRomIDCore -CARDi_ReadRomIDCore: ; 0x020D7480 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r0, #0xb8000000 - mov r1, #0x0 - bl CARDi_SetRomOp - ldr r1, _020D74DC ; =0x02106A50 - mov r0, #0x2000 - ldr r1, [r1, #0x0] - rsb r0, r0, #0x0 - ldr r2, [r1, #0x60] - ldr r1, _020D74E0 ; =0x040001A4 - bic r2, r2, #0x7000000 - orr r2, r2, #0xa7000000 - and r0, r2, r0 - str r0, [r1, #0x0] -_020D74BC: - ldr r0, [r1, #0x0] - ands r0, r0, #0x800000 - beq _020D74BC - ldr r0, _020D74E4 ; =0x04100010 - ldr r0, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_020D74DC: .word 0x02106A50 -_020D74E0: .word 0x040001A4 -_020D74E4: .word 0x04100010 - - arm_func_start CARDi_ReadCard -CARDi_ReadCard: ; 0x020D74E8 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r10, r0 - ldr sb, _020D75DC ; =0x021D55C0 - add r7, r10, #0x20 - ldr r5, _020D75E0 ; =0x04100010 - ldr r6, _020D75E4 ; =0x040001A4 - mov r11, #0x0 - mov r0, #0x200 - rsb r4, r0, #0x0 -_020D7510: - ldr r0, [r9, #0x1c] - and r1, r0, r4 - cmp r1, r0 - bne _020D7538 - ldr r8, [r9, #0x20] - ands r0, r8, #0x3 - bne _020D7538 - ldr r0, [r9, #0x24] - cmp r0, #0x200 - bhs _020D7540 -_020D7538: - mov r8, r7 - str r1, [r10, #0x8] -_020D7540: - mov r0, r1, lsr #0x8 - orr r0, r0, #0xb7000000 - mov r1, r1, lsl #0x18 - bl CARDi_SetRomOp - ldr r1, [r10, #0x4] - mov r0, r11 - str r1, [r6, #0x0] -_020D755C: - ldr r2, [r6, #0x0] - ands r1, r2, #0x800000 - beq _020D7578 - ldr r1, [r5, #0x0] - cmp r0, #0x200 - strcc r1, [r8, r0, lsl #0x2] - addcc r0, r0, #0x1 -_020D7578: - ands r1, r2, #0x80000000 - bne _020D755C - ldr r0, [r9, #0x20] - cmp r8, r0 - bne _020D75C0 - ldr r2, [r9, #0x1c] - ldr r1, [r9, #0x20] - ldr r0, [r9, #0x24] - add r2, r2, #0x200 - add r1, r1, #0x200 - subs r0, r0, #0x200 - str r2, [r9, #0x1c] - str r1, [r9, #0x20] - str r0, [r9, #0x24] - bne _020D7510 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,lr} - bx lr -_020D75C0: - mov r0, r10 - bl CARDi_ReadFromCache -_020D75C8: ; 0x020D75C8 - cmp r0, #0x0 - bne _020D7510 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,lr} - bx lr - .balign 4 -_020D75DC: .word 0x021D55C0 -_020D75E0: .word 0x04100010 -_020D75E4: .word 0x040001A4 - - arm_func_start CARDi_TryReadCardDma -CARDi_TryReadCardDma: - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - ldr fp, _020D7748 ; =0x021D55C0 - mov r7, #0x0 - ldr r9, [r11, #0x20] - mov r10, r0 - mov r6, r7 - mov r5, r7 - mov r1, r7 - ands r4, r9, #0x1f - ldr r8, [r11, #0x24] - bne _020D7624 - ldr r0, [r11, #0x28] - cmp r0, #0x3 - movls r1, #0x1 -_020D7624: - cmp r1, #0x0 - beq _020D7678 - bl OS_GetDTCMAddress - ldr r1, _020D774C ; =0x01FF8000 - add r2, r9, r8 - cmp r2, r1 - mov r3, #0x1 - mov r1, #0x0 - bls _020D7650 - cmp r9, #0x2000000 - movcc r1, r3 -_020D7650: - cmp r1, #0x0 - bne _020D7670 - cmp r0, r2 - bhs _020D766C - add r0, r0, #0x4000 - cmp r0, r9 - bhi _020D7670 -_020D766C: - mov r3, #0x0 -_020D7670: - cmp r3, #0x0 - moveq r5, #0x1 -_020D7678: - cmp r5, #0x0 - beq _020D7694 - ldr r1, [r11, #0x1c] - ldr r0, _020D7750 ; =0x000001FF - orr r1, r1, r8 - ands r0, r1, r0 - moveq r6, #0x1 -_020D7694: - cmp r6, #0x0 - beq _020D76A4 - cmp r8, #0x0 - movne r7, #0x1 -_020D76A4: - ldr r0, _020D7754 ; =0x02106A50 - cmp r7, #0x0 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x60] - bic r0, r0, #0x7000000 - orr r0, r0, #0xa1000000 - str r0, [r10, #0x4] - beq _020D7738 - bl OS_DisableInterrupts - mov r5, r0 - mov r0, r9 - mov r1, r8 - bl IC_InvalidateRange -_020D76D8: ; 0x020D76D8 - cmp r4, #0x0 - beq _020D7700 - sub r9, r9, r4 - mov r0, r9 - mov r1, #0x20 - bl DC_StoreRange - add r0, r9, r8 - mov r1, #0x20 - bl DC_StoreRange - add r8, r8, #0x20 -_020D7700: - mov r0, r9 - mov r1, r8 - bl DC_InvalidateRange - bl DC_WaitWriteBufferEmpty - ldr r1, _020D7758 ; =CARDi_OnReadCard - mov r0, #0x80000 - bl OS_SetIrqFunction - mov r0, #0x80000 - bl OS_ResetRequestIrqMask - mov r0, #0x80000 - bl OS_EnableIrqMask - mov r0, r5 - bl OS_RestoreInterrupts - bl CARDi_SetCardDma -_020D7738: - mov r0, r7 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,lr} - bx lr - .balign 4 -_020D7748: .word cardi_common -_020D774C: .word 0x01FF8000 -_020D7750: .word 0x000001FF -_020D7754: .word 0x02106A50 -_020D7758: .word CARDi_OnReadCard - - arm_func_start CARDi_OnReadCard -CARDi_OnReadCard: ; 0x020D775C - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr r0, _020D7838 ; =0x021D55C0 - ldr r0, [r0, #0x28] - bl MI_StopDma - ldr r0, _020D7838 ; =0x021D55C0 - ldr r3, [r0, #0x1c] - ldr r2, [r0, #0x20] - ldr r1, [r0, #0x24] - add r3, r3, #0x200 - add r2, r2, #0x200 - subs r1, r1, #0x200 - str r3, [r0, #0x1c] - str r2, [r0, #0x20] - str r1, [r0, #0x24] - bne _020D7828 - mov r0, #0x80000 - bl OS_DisableIrqMask - mov r0, #0x80000 - bl OS_ResetRequestIrqMask - ldr r7, _020D7838 ; =0x021D55C0 - bl CARDi_ReadRomIDCore - bl CARDi_CheckPulledOutCore -_020D77B8: ; 0x020D77B8 - ldr r0, [r7, #0x0] - mov r1, #0x0 - str r1, [r0, #0x0] - ldr r6, [r7, #0x38] - ldr r5, [r7, #0x3c] - bl OS_DisableInterrupts - ldr r1, [r7, #0x114] - mov r4, r0 - bic r0, r1, #0x4c - str r0, [r7, #0x114] - add r0, r7, #0x10c - bl OS_WakeupThread - ldr r0, [r7, #0x114] - ands r0, r0, #0x10 - beq _020D77FC - add r0, r7, #0x44 - bl OS_WakeupThreadDirect -_020D77FC: - mov r0, r4 - bl OS_RestoreInterrupts -_020D7804: ; 0x020D7804 - cmp r6, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,lr} - bxeq lr - mov r0, r5 - blx r6 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr -_020D7828: - bl CARDi_SetCardDma - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - .balign 4 -_020D7838: .word 0x021D55C0 - - arm_func_start CARDi_SetCardDma -CARDi_SetCardDma: ; 0x020D783C - stmdb sp!, {r4,lr} - ldr r4, _020D7884 ; =0x021D55C0 - ldr r1, _020D7888 ; =0x04100010 - ldr r0, [r4, #0x28] - ldr r2, [r4, #0x20] - mov r3, #0x200 - bl MIi_CardDmaCopy32 - ldr r1, [r4, #0x1c] - mov r0, r1, lsr #0x8 - orr r0, r0, #0xb7000000 - mov r1, r1, lsl #0x18 - bl CARDi_SetRomOp - ldr r0, _020D788C ; =0x021D5C00 - ldr r1, _020D7890 ; =0x040001A4 - ldr r0, [r0, #0x4] - str r0, [r1, #0x0] - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_020D7884: .word 0x021D55C0 -_020D7888: .word 0x04100010 -_020D788C: .word 0x021D5C00 -_020D7890: .word 0x040001A4 - - arm_func_start CARDi_SetRomOp -CARDi_SetRomOp: ; 0x020D7894 - ldr r3, _020D790C ; =0x040001A4 -_020D7898: - ldr r2, [r3, #0x0] - ands r2, r2, #0x80000000 - bne _020D7898 - ldr r3, _020D7910 ; =0x040001A1 - mov r12, #0xc0 - ldr r2, _020D7914 ; =0x040001A8 - strb r12, [r3, #0x0] - mov r12, r0, lsr #0x18 - ldr r3, _020D7918 ; =0x040001A9 - strb r12, [r2, #0x0] - mov r12, r0, lsr #0x10 - ldr r2, _020D791C ; =0x040001AA - strb r12, [r3, #0x0] - mov r12, r0, lsr #0x8 - ldr r3, _020D7920 ; =0x040001AB - strb r12, [r2, #0x0] - ldr r2, _020D7924 ; =0x040001AC - strb r0, [r3, #0x0] - mov r3, r1, lsr #0x18 - ldr r0, _020D7928 ; =0x040001AD - strb r3, [r2, #0x0] - mov r3, r1, lsr #0x10 - ldr r2, _020D792C ; =0x040001AE - strb r3, [r0, #0x0] - mov r3, r1, lsr #0x8 - ldr r0, _020D7930 ; =0x040001AF - strb r3, [r2, #0x0] - strb r1, [r0, #0x0] - bx lr - .balign 4 -_020D790C: .word 0x040001A4 -_020D7910: .word 0x040001A1 -_020D7914: .word 0x040001A8 -_020D7918: .word 0x040001A9 -_020D791C: .word 0x040001AA -_020D7920: .word 0x040001AB -_020D7924: .word 0x040001AC -_020D7928: .word 0x040001AD -_020D792C: .word 0x040001AE -_020D7930: .word 0x040001AF - - arm_func_start CARDi_ReadFromCache -CARDi_ReadFromCache: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r5, _020D79C8 ; =0x021D55C0 - mov r1, #0x200 - ldr r3, [r5, #0x1c] - rsb r1, r1, #0x0 - ldr r2, [r0, #0x8] - and r3, r3, r1 - cmp r3, r2 - bne _020D79AC - ldr r2, [r5, #0x1c] - ldr r1, [r5, #0x24] - sub r3, r2, r3 - rsb r4, r3, #0x200 - cmp r4, r1 - movhi r4, r1 - add r0, r0, #0x20 - ldr r1, [r5, #0x20] - mov r2, r4 - add r0, r0, r3 - bl MI_CpuCopy8 - ldr r0, [r5, #0x1c] - add r0, r0, r4 - str r0, [r5, #0x1c] - ldr r0, [r5, #0x20] - add r0, r0, r4 - str r0, [r5, #0x20] - ldr r0, [r5, #0x24] - sub r0, r0, r4 - str r0, [r5, #0x24] -_020D79AC: - ldr r0, [r5, #0x24] - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - .balign 4 -_020D79C8: .word 0x021D55C0 - - arm_func_start CARDi_Request -CARDi_Request: - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r6, r0 - ldr r0, [r6, #0x114] - mov r5, r1 - mov r4, r2 - ands r0, r0, #0x2 - bne _020D7A44 - ldr r1, [r6, #0x114] - mov r0, #0xb - orr r2, r1, #0x2 - mov r1, #0x1 - str r2, [r6, #0x114] - bl PXI_IsCallbackReady -_020D7A04: ; 0x020D7A04 - cmp r0, #0x0 - bne _020D7A34 - mov r9, #0x64 - mov r8, #0xb - mov r7, #0x1 -_020D7A18: - mov r0, r9 - bl OS_SpinWait - mov r0, r8 - mov r1, r7 - bl PXI_IsCallbackReady -_020D7A2C: ; 0x020D7A2C - cmp r0, #0x0 - beq _020D7A18 -_020D7A34: - mov r0, r6 - mov r1, #0x0 - mov r2, #0x1 - bl CARDi_Request -_020D7A44: - ldr r0, [r6, #0x0] - mov r1, #0x60 - bl DC_FlushRange - bl DC_WaitWriteBufferEmpty - mov r9, #0xb - mov r8, #0x1 - mov r7, #0x0 - mov r11, #0x60 -_020D7A64: - str r5, [r6, #0x4] - ldr r0, [r6, #0x114] - orr r0, r0, #0x20 - str r0, [r6, #0x114] -_020D7A74: - mov r0, r9 - mov r1, r5 - mov r2, r8 - bl PXI_SendWordByFifo -_020D7A84: ; 0x020D7A84 - cmp r0, #0x0 - blt _020D7A74 - cmp r5, #0x0 - bne _020D7AB0 - ldr r10, [r6, #0x0] -_020D7A98: - mov r0, r9 - mov r1, r10 - mov r2, r8 - bl PXI_SendWordByFifo -_020D7AA8: ; 0x020D7AA8 - cmp r0, #0x0 - blt _020D7A98 -_020D7AB0: - bl OS_DisableInterrupts - ldr r1, [r6, #0x114] - mov r10, r0 - ands r0, r1, #0x20 - beq _020D7AD8 -_020D7AC4: - mov r0, r7 - bl OS_SleepThread - ldr r0, [r6, #0x114] - ands r0, r0, #0x20 - bne _020D7AC4 -_020D7AD8: - mov r0, r10 - bl OS_RestoreInterrupts -_020D7AE0: ; 0x020D7AE0 - ldr r0, [r6, #0x0] - mov r1, r11 - bl DC_InvalidateRange -_020D7AEC: ; 0x020D7AEC - ldr r0, [r6, #0x0] - ldr r0, [r0, #0x0] - cmp r0, #0x4 - bne _020D7B08 - sub r4, r4, #0x1 - cmp r4, #0x0 - bgt _020D7A64 -_020D7B08: - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,lr} - bx lr - - arm_func_start CARDi_TaskThread -CARDi_TaskThread: ; 0x020D7B20 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr r5, _020D7B78 ; =0x021D55C0 - mov r6, #0x0 - add r7, r5, #0x44 -_020D7B34: - bl OS_DisableInterrupts - ldr r1, [r5, #0x114] - mov r4, r0 - ands r0, r1, #0x8 - bne _020D7B60 -_020D7B48: - mov r0, r6 - str r7, [r5, #0x104] - bl OS_SleepThread - ldr r0, [r5, #0x114] - ands r0, r0, #0x8 - beq _020D7B48 -_020D7B60: - mov r0, r4 - bl OS_RestoreInterrupts - ldr r1, [r5, #0x40] - mov r0, r5 - blx r1 - b _020D7B34 - .balign 4 -_020D7B78: .word 0x021D55C0 - - arm_func_start CARDi_OnFifoRecv -CARDi_OnFifoRecv: ; 0x020D7B7C - stmdb sp!, {lr} - sub sp, sp, #0x4 - cmp r0, #0xb - addne sp, sp, #0x4 - ldmneia sp!, {lr} - bxne lr - cmp r2, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {lr} - bxeq lr - ldr r1, _020D7BC8 ; =0x021D55C0 - ldr r0, [r1, #0x114] - bic r0, r0, #0x20 - str r0, [r1, #0x114] - ldr r0, [r1, #0x104] - bl OS_WakeupThreadDirect - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_020D7BC8: .word 0x021D55C0 - - arm_func_start CARDi_SendtoPxi -CARDi_SendtoPxi: ; 0x020D7BCC - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r6, r1 - mov r1, r7 - mov r0, #0xe - mov r2, #0x0 - bl PXI_SendWordByFifo -_020D7BEC: ; 0x020D7BEC - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,lr} - bxeq lr - mov r5, #0xe - mov r4, #0x0 -_020D7C04: - mov r0, r6 - bl SVC_WaitByLoop - mov r0, r5 - mov r1, r7 - mov r2, r4 - bl PXI_SendWordByFifo -_020D7C1C: ; 0x020D7C1C - cmp r0, #0x0 - bne _020D7C04 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - - arm_func_start CARDi_CheckPulledOutCore -CARDi_CheckPulledOutCore: - stmdb sp!, {r4,lr} - sub sp, sp, #0x8 - ldr r1, _020D7C94 ; =0x027FFC10 - ldrh r1, [r1, #0x0] - cmp r1, #0x0 - ldreq r1, _020D7C98 ; =0x027FF800 - ldrne r1, _020D7C9C ; =0x027FFC00 - ldr r1, [r1, #0x0] - str r1, [sp, #0x0] - ldr r1, [sp, #0x0] - cmp r0, r1 - addeq sp, sp, #0x8 - ldmeqia sp!, {r4,lr} - bxeq lr - bl OS_DisableInterrupts - mov r4, r0 - mov r0, #0xe - mov r1, #0x11 - mov r2, #0x0 - bl CARDi_PulledOutCallback - mov r0, r4 - bl OS_RestoreInterrupts - add sp, sp, #0x8 - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_020D7C94: .word 0x027FFC10 -_020D7C98: .word 0x027FF800 -_020D7C9C: .word 0x027FFC00 - - arm_func_start CARD_TerminateForPulledOut -CARD_TerminateForPulledOut: ; 0x020D7CA0 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r0, _020D7D10 ; =0x027FFFA8 - mov r5, #0x1 - ldrh r0, [r0, #0x0] - and r0, r0, #0x8000 - movs r0, r0, asr #0xf - beq _020D7CEC - bl PM_ForceToPowerOff - cmp r0, #0x4 - bne _020D7CE4 - ldr r4, _020D7D14 ; =0x000A3A47 -_020D7CD0: - mov r0, r4 - bl OS_SpinWait - bl PM_ForceToPowerOff - cmp r0, #0x4 - beq _020D7CD0 -_020D7CE4: - cmp r0, #0x0 - moveq r5, #0x0 -_020D7CEC: - cmp r5, #0x0 - beq _020D7D00 - mov r0, #0x1 - mov r1, r0 - bl CARDi_SendtoPxi -_020D7D00: - bl OS_Terminate - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - .balign 4 -_020D7D10: .word 0x027FFFA8 -_020D7D14: .word 0x000A3A47 - - arm_func_start CARD_IsPulledOut -CARD_IsPulledOut: ; 0x020D7D18 - ldr r0, _020D7D24 ; =0x021D5E20 - ldr r0, [r0, #0x0] - bx lr - .balign 4 -_020D7D24: .word 0x021D5E20 - - arm_func_start CARDi_PulledOutCallback -CARDi_PulledOutCallback: ; 0x020D7D28 - stmdb sp!, {lr} - sub sp, sp, #0x4 - and r0, r1, #0x3f - cmp r0, #0x11 - bne _020D7D90 - ldr r2, _020D7DA0 ; =0x021D5E20 - ldr r0, [r2, #0x0] - cmp r0, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {lr} - bxne lr - ldr r1, _020D7DA4 ; =0x021D5E24 - mov r0, #0x1 - ldr r1, [r1, #0x0] - str r0, [r2, #0x0] - cmp r1, #0x0 - beq _020D7D70 - blx r1 -_020D7D70: - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {lr} - bxeq lr - bl CARD_TerminateForPulledOut - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr -_020D7D90: - bl OS_Terminate - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_020D7DA0: .word 0x021D5E20 -_020D7DA4: .word 0x021D5E24 - - arm_func_start CARD_InitPulledOutCallback -CARD_InitPulledOutCallback: ; 0x020D7DA8 - stmdb sp!, {lr} - sub sp, sp, #0x4 - bl PXI_Init - ldr r1, _020D7DD8 ; =CARDi_PulledOutCallback - mov r0, #0xe - bl PXI_SetFifoRecvCallback - ldr r0, _020D7DDC ; =0x021D5E24 - mov r1, #0x0 - str r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_020D7DD8: .word CARDi_PulledOutCallback -_020D7DDC: .word 0x021D5E24 |