summaryrefslogtreecommitdiff
path: root/arm9/asm/CTRDG.s
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/asm/CTRDG.s')
-rw-r--r--arm9/asm/CTRDG.s670
1 files changed, 0 insertions, 670 deletions
diff --git a/arm9/asm/CTRDG.s b/arm9/asm/CTRDG.s
deleted file mode 100644
index dc60582b..00000000
--- a/arm9/asm/CTRDG.s
+++ /dev/null
@@ -1,670 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .bss
-
- .global UNK_021D6940
-UNK_021D6940: ; 0x021D6940
- .space 0x4
-
- .global UNK_021D6944
-UNK_021D6944: ; 0x021D6944
- .space 0x4
-
- .text
-
- arm_func_start CTRDG_CheckEnabled
-CTRDG_CheckEnabled:
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- bl CTRDG_IsOptionCartridge
- cmp r0, #0x0
- addne sp, sp, #0x4
- ldmneia sp!, {lr}
- bxne lr
- bl CTRDG_IsEnabled
- 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 CTRDG_Enable
-CTRDG_Enable: ; 0x020DB15C
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r0
- bl OS_DisableInterrupts
- ldr r1, _020DB1AC ; =UNK_021D6940
- mov r4, r0
- str r5, [r1, #0x0]
- bl CTRDG_IsOptionCartridge
- cmp r0, #0x0
- bne _020DB198
- cmp r5, #0x0
- movne r1, #0x1000
- moveq r1, #0x5000
- mov r0, #0xf000
- bl OS_SetDPermissionsForProtectionRegion
-_020DB198:
- mov r0, r4
- bl OS_RestoreInterrupts
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,lr}
- bx lr
- .balign 4
-_020DB1AC: .word UNK_021D6940
-
- arm_func_start CTRDG_IsEnabled
-CTRDG_IsEnabled:
- ldr r0, _020DB1BC ; =UNK_021D6940
- ldr r0, [r0, #0x0]
- bx lr
- .balign 4
-_020DB1BC: .word UNK_021D6940
-
- arm_func_start CTRDGi_AccessCommon
-CTRDGi_AccessCommon: ; 0x020DB1C0
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r7, r0
- mov r6, r1
- mov r5, r2
- mov r4, r3
- bl CTRDG_IsExisting
- cmp r0, #0x0
- addeq sp, sp, #0x4
- moveq r0, #0x0
- ldmeqia sp!, {r4-r7,lr}
- bxeq lr
- bl CTRDG_CheckEnabled
- ldr r0, _020DB2BC ; =UNK_021D6944
- ldrh r0, [r0, #0x2]
- bl OS_LockCartridge
- cmp r4, #0x21
- bhi _020DB240
- cmp r4, #0x21
- bhs _020DB270
- cmp r4, #0x11
- bhi _020DB234
- cmp r4, #0x10
- blo _020DB294
- cmp r4, #0x10
- beq _020DB290
- cmp r4, #0x11
- beq _020DB260
- b _020DB294
-_020DB234:
- cmp r4, #0x20
- streqh r6, [r7, #0x0]
- b _020DB294
-_020DB240:
- cmp r4, #0x40
- bhi _020DB254
- cmp r4, #0x40
- streq r6, [r7, #0x0]
- b _020DB294
-_020DB254:
- cmp r4, #0x41
- beq _020DB280
- b _020DB294
-_020DB260:
- cmp r5, #0x0
- ldrneb r0, [r7, #0x0]
- strneb r0, [r5, #0x0]
- b _020DB294
-_020DB270:
- cmp r5, #0x0
- ldrneh r0, [r7, #0x0]
- strneh r0, [r5, #0x0]
- b _020DB294
-_020DB280:
- cmp r5, #0x0
- ldrne r0, [r7, #0x0]
- strne r0, [r5, #0x0]
- b _020DB294
-_020DB290:
- strb r6, [r7, #0x0]
-_020DB294:
- ldr r0, _020DB2BC ; =UNK_021D6944
- ldrh r0, [r0, #0x2]
- bl OS_UnLockCartridge
- bl CTRDG_IsExisting
- cmp r0, #0x0
- movne r0, #0x1
- moveq r0, #0x0
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,lr}
- bx lr
- .balign 4
-_020DB2BC: .word UNK_021D6944
-
- arm_func_start CTRDG_Read32
-CTRDG_Read32: ; 0x020DB2C0
- ldr ip, _020DB2D4 ; =CTRDGi_AccessCommon
- mov r2, r1
- mov r1, #0x0
- mov r3, #0x41
- bx r12
- .balign 4
-_020DB2D4: .word CTRDGi_AccessCommon
-
- arm_func_start CTRDGi_CopyCommon
-CTRDGi_CopyCommon: ; 0x020DB2D8
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r7, r0
- mov r6, r1
- mov r5, r2
- mov r4, r3
- bl CTRDG_IsExisting
- cmp r0, #0x0
- addeq sp, sp, #0x4
- moveq r0, #0x0
- ldmeqia sp!, {r4-r7,lr}
- bxeq lr
- bl CTRDG_CheckEnabled
- ldr r0, _020DB42C ; =UNK_021D6944
- ldrh r0, [r0, #0x2]
- bl OS_LockCartridge
- ldr r0, [sp, #0x18]
- ands r0, r0, #0x1
- bne _020DB338
- mov r0, r7
- bl MI_StopDma
- mov r0, r5
- mov r1, r4
- bl DC_FlushRange
-_020DB338:
- ldr r0, [sp, #0x18]
- cmp r0, #0x11
- bhi _020DB36C
- cmp r0, #0x10
- blo _020DB360
- cmp r0, #0x10
- beq _020DB38C
- cmp r0, #0x11
- beq _020DB3BC
- b _020DB404
-_020DB360:
- cmp r0, #0x1
- beq _020DB3E4
- b _020DB404
-_020DB36C:
- cmp r0, #0x20
- bhi _020DB380
- cmp r0, #0x20
- beq _020DB3A4
- b _020DB404
-_020DB380:
- cmp r0, #0x21
- beq _020DB3D0
- b _020DB404
-_020DB38C:
- mov r0, r7
- mov r1, r6
- mov r2, r5
- mov r3, r4
- bl MI_DmaCopy16
- b _020DB404
-_020DB3A4:
- mov r0, r7
- mov r1, r6
- mov r2, r5
- mov r3, r4
- bl MI_DmaCopy32
- b _020DB404
-_020DB3BC:
- mov r0, r6
- mov r1, r5
- mov r2, r4
- bl MIi_CpuCopy16
- b _020DB404
-_020DB3D0:
- mov r0, r6
- mov r1, r5
- mov r2, r4
- bl MIi_CpuCopy32
- b _020DB404
-_020DB3E4:
- cmp r4, #0x0
- mov r1, #0x0
- bls _020DB404
-_020DB3F0:
- ldrb r0, [r6], #0x1
- add r1, r1, #0x1
- cmp r1, r4
- strb r0, [r5], #0x1
- blo _020DB3F0
-_020DB404:
- ldr r0, _020DB42C ; =UNK_021D6944
- ldrh r0, [r0, #0x2]
- bl OS_UnLockCartridge
- bl CTRDG_IsExisting
- cmp r0, #0x0
- movne r0, #0x1
- moveq r0, #0x0
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,lr}
- bx lr
- .balign 4
-_020DB42C: .word UNK_021D6944
-
- arm_func_start CTRDG_CpuCopy32
-CTRDG_CpuCopy32: ; 0x020DB430
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- mov lr, r1
- mov r3, r2
- mov r12, #0x21
- mov r1, r0
- mov r2, lr
- mov r0, #0x0
- str r12, [sp, #0x0]
- bl CTRDGi_CopyCommon
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start CTRDG_CpuCopy16
-CTRDG_CpuCopy16: ; 0x020DB464
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- mov lr, r1
- mov r3, r2
- mov r12, #0x11
- mov r1, r0
- mov r2, lr
- mov r0, #0x0
- str r12, [sp, #0x0]
- bl CTRDGi_CopyCommon
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start CTRDG_CpuCopy8
-CTRDG_CpuCopy8: ; 0x020DB498
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- mov lr, r1
- mov r3, r2
- cmp lr, #0x8000000
- blo _020DB4DC
- ldr r2, _020DB500 ; =0x0A010000
- cmp lr, r2
- bhs _020DB4DC
- mov r12, #0x1
- mov r2, r0
- mov r0, #0x0
- str r12, [sp, #0x0]
- bl CTRDGi_CopyCommon
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
-_020DB4DC:
- mov r12, #0x1
- mov r1, r0
- mov r2, lr
- mov r0, #0x0
- str r12, [sp, #0x0]
- bl CTRDGi_CopyCommon
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020DB500: .word 0x0A010000
-
- arm_func_start CTRDGi_SendtoPxi
-CTRDGi_SendtoPxi: ; 0x020DB504
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r7, r0
- mov r1, r7
- mov r0, #0xd
- mov r2, #0x0
- bl PXI_SendWordByFifo
- cmp r0, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r7,lr}
- bxeq lr
- mov r6, #0x1
- mov r5, #0xd
- mov r4, #0x0
-_020DB53C:
- mov r0, r6
- bl SVC_WaitByLoop
- mov r0, r5
- mov r1, r7
- mov r2, r4
- bl PXI_SendWordByFifo
- cmp r0, #0x0
- bne _020DB53C
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,lr}
- bx lr
-
- arm_func_start CTRDGi_UnlockByProcessor
-CTRDGi_UnlockByProcessor: ; 0x020DB568
- stmdb sp!, {r4,lr}
- mov r4, r1
- ldr r1, [r4, #0x0]
- cmp r1, #0x0
- bne _020DB580
- bl OS_UnLockCartridge
-_020DB580:
- ldr r0, [r4, #0x4]
- bl OS_RestoreInterrupts
- ldmia sp!, {r4,lr}
- bx lr
-
- arm_func_start CTRDGi_LockByProcessor
-CTRDGi_LockByProcessor: ; 0x020DB590
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r7, r0
- mov r6, r1
- ldr r5, _020DB60C ; =0x027FFFE8
- mov r4, #0x1
-_020DB5A8:
- bl OS_DisableInterrupts
- str r0, [r6, #0x4]
- mov r0, r5
- bl OS_ReadOwnerOfLockWord
- and r0, r0, #0x40
- str r0, [r6, #0x0]
- ldr r0, [r6, #0x0]
- cmp r0, #0x0
- addne sp, sp, #0x4
- ldmneia sp!, {r4-r7,lr}
- bxne lr
- mov r0, r7
- bl OS_TryLockCartridge
- cmp r0, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r7,lr}
- bxeq lr
- ldr r0, [r6, #0x4]
- bl OS_RestoreInterrupts
- mov r0, r4
- bl SVC_WaitByLoop
- b _020DB5A8
-_020DB600: ; 0x020DB600
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,lr}
- bx lr
- .balign 4
-_020DB60C: .word 0x027FFFE8
-
- arm_func_start CTRDGi_RestoreAccessCycle
-CTRDGi_RestoreAccessCycle: ; 0x020DB610
- ldr r3, _020DB640 ; =0x04000204
- ldr r2, [r0, #0x0]
- ldrh r1, [r3, #0x0]
- bic r1, r1, #0xc
- orr r1, r1, r2, lsl #0x2
- strh r1, [r3, #0x0]
- ldrh r1, [r3, #0x0]
- ldr r2, [r0, #0x4]
- bic r0, r1, #0x10
- orr r0, r0, r2, lsl #0x4
- strh r0, [r3, #0x0]
- bx lr
- .balign 4
-_020DB640: .word 0x04000204
-
- arm_func_start CTRDGi_ChangeLatestAccessCycle
-CTRDGi_ChangeLatestAccessCycle: ; 0x020DB644
- ldr r2, _020DB688 ; =0x04000204
- ldrh r1, [r2, #0x0]
- and r1, r1, #0xc
- mov r1, r1, asr #0x2
- str r1, [r0, #0x0]
- ldrh r1, [r2, #0x0]
- and r1, r1, #0x10
- mov r1, r1, asr #0x4
- str r1, [r0, #0x4]
- ldrh r0, [r2, #0x0]
- bic r0, r0, #0xc
- orr r0, r0, #0xc
- strh r0, [r2, #0x0]
- ldrh r0, [r2, #0x0]
- bic r0, r0, #0x10
- strh r0, [r2, #0x0]
- bx lr
- .balign 4
-_020DB688: .word 0x04000204
-
- arm_func_start CTRDG_IsExisting
-CTRDG_IsExisting:
- stmdb sp!, {r4,lr}
- sub sp, sp, #0x10
- ldr r2, _020DB798 ; =0x027FFC30
- ldr r0, _020DB79C ; =0x0000FFFF
- ldrh r1, [r2, #0x0]
- mov r4, #0x1
- cmp r1, r0
- addeq sp, sp, #0x10
- moveq r0, #0x0
- ldmeqia sp!, {r4,lr}
- bxeq lr
- ldrb r0, [r2, #0x5]
- mov r0, r0, lsl #0x1e
- mov r0, r0, lsr #0x1f
- cmp r0, #0x1
- addeq sp, sp, #0x10
- moveq r0, #0x0
- ldmeqia sp!, {r4,lr}
- bxeq lr
- ldr r0, _020DB7A0 ; =UNK_021D6944
- add r1, sp, #0x0
- ldrh r0, [r0, #0x2]
- bl CTRDGi_LockByProcessor
- add r0, sp, #0x8
- bl CTRDGi_ChangeLatestAccessCycle
- mov r0, #0x8000000
- ldrb r2, [r0, #0xb2]
- cmp r2, #0x96
- bne _020DB714
- ldr r1, _020DB798 ; =0x027FFC30
- ldrh r0, [r0, #0xbe]
- ldrh r1, [r1, #0x0]
- cmp r1, r0
- bne _020DB75C
-_020DB714:
- cmp r2, #0x96
- beq _020DB734
- ldr r1, _020DB798 ; =0x027FFC30
- ldr r0, _020DB7A4 ; =0x0801FFFE
- ldrh r1, [r1, #0x0]
- ldrh r0, [r0, #0x0]
- cmp r1, r0
- bne _020DB75C
-_020DB734:
- ldr r2, _020DB798 ; =0x027FFC30
- mov r0, #0x8000000
- ldr r1, [r2, #0x8]
- ldr r0, [r0, #0xac]
- cmp r1, r0
- beq _020DB770
- ldrb r0, [r2, #0x5]
- mov r0, r0, lsl #0x1f
- movs r0, r0, lsr #0x1f
- beq _020DB770
-_020DB75C:
- ldr r1, _020DB798 ; =0x027FFC30
- mov r4, #0x0
- ldrb r0, [r1, #0x5]
- orr r0, r0, #0x2
- strb r0, [r1, #0x5]
-_020DB770:
- add r0, sp, #0x8
- bl CTRDGi_RestoreAccessCycle
- ldr r0, _020DB7A0 ; =UNK_021D6944
- add r1, sp, #0x0
- ldrh r0, [r0, #0x2]
- bl CTRDGi_UnlockByProcessor
- mov r0, r4
- add sp, sp, #0x10
- ldmia sp!, {r4,lr}
- bx lr
- .balign 4
-_020DB798: .word 0x027FFC30
-_020DB79C: .word 0x0000FFFF
-_020DB7A0: .word UNK_021D6944
-_020DB7A4: .word 0x0801FFFE
-
- arm_func_start CTRDG_IsPulledOut
-CTRDG_IsPulledOut: ; 0x020DB7A8
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r2, _020DB800 ; =0x027FFC30
- ldr r0, _020DB804 ; =0x0000FFFF
- ldrh r1, [r2, #0x0]
- cmp r1, r0
- addeq sp, sp, #0x4
- moveq r0, #0x0
- ldmeqia sp!, {lr}
- bxeq lr
- ldrb r0, [r2, #0x5]
- mov r0, r0, lsl #0x1e
- movs r0, r0, lsr #0x1f
- bne _020DB7E4
- bl CTRDG_IsExisting
-_020DB7E4:
- ldr r0, _020DB800 ; =0x027FFC30
- ldrb r0, [r0, #0x5]
- mov r0, r0, lsl #0x1e
- mov r0, r0, lsr #0x1f
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020DB800: .word 0x027FFC30
-_020DB804: .word 0x0000FFFF
-
- arm_func_start CTRDGi_GetAgbMakerCodeAtInit
-CTRDGi_GetAgbMakerCodeAtInit: ; 0x020DB808
- stmdb sp!, {r4,lr}
- mov r4, #0x0
- bl CTRDGi_IsAgbCartridgeAtInit
- cmp r0, #0x0
- ldrne r0, _020DB82C ; =0x027FFC30
- ldrneh r4, [r0, #0x6]
- mov r0, r4
- ldmia sp!, {r4,lr}
- bx lr
- .balign 4
-_020DB82C: .word 0x027FFC30
-
- arm_func_start CTRDG_GetAgbMakerCode
-CTRDG_GetAgbMakerCode: ; 0x020DB830
- stmdb sp!, {r4,lr}
- mov r4, #0x0
- bl CTRDG_IsExisting
- cmp r0, #0x0
- beq _020DB84C
- bl CTRDGi_GetAgbMakerCodeAtInit
- mov r4, r0
-_020DB84C:
- mov r0, r4
- ldmia sp!, {r4,lr}
- bx lr
-
- arm_func_start CTRDGi_GetAgbGameCodeAtInit
-CTRDGi_GetAgbGameCodeAtInit: ; 0x020DB858
- stmdb sp!, {r4,lr}
- mov r4, #0x0
- bl CTRDGi_IsAgbCartridgeAtInit
- cmp r0, #0x0
- ldrne r0, _020DB87C ; =0x027FFC30
- ldrne r4, [r0, #0x8]
- mov r0, r4
- ldmia sp!, {r4,lr}
- bx lr
- .balign 4
-_020DB87C: .word 0x027FFC30
-
- arm_func_start CTRDG_GetAgbGameCode
-CTRDG_GetAgbGameCode: ; 0x020DB880
- stmdb sp!, {r4,lr}
- mov r4, #0x0
- bl CTRDG_IsExisting
- cmp r0, #0x0
- beq _020DB89C
- bl CTRDGi_GetAgbGameCodeAtInit
- mov r4, r0
-_020DB89C:
- mov r0, r4
- ldmia sp!, {r4,lr}
- bx lr
-
- arm_func_start CTRDGi_IsAgbCartridgeAtInit
-CTRDGi_IsAgbCartridgeAtInit:
- ldr r0, _020DB8BC ; =0x027FFC30
- ldrb r0, [r0, #0x5]
- mov r0, r0, lsl #0x1f
- mov r0, r0, lsr #0x1f
- bx lr
- .balign 4
-_020DB8BC: .word 0x027FFC30
-
- arm_func_start CTRDG_IsOptionCartridge
-CTRDG_IsOptionCartridge:
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- bl CTRDG_IsExisting
- cmp r0, #0x0
- beq _020DB8EC
- bl CTRDGi_IsAgbCartridgeAtInit
- cmp r0, #0x0
- addeq sp, sp, #0x4
- moveq r0, #0x1
- ldmeqia sp!, {lr}
- bxeq lr
-_020DB8EC:
- mov r0, #0x0
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start CTRDG_IsAgbCartridge
-CTRDG_IsAgbCartridge: ; 0x020DB8FC
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- bl CTRDG_IsExisting
- cmp r0, #0x0
- beq _020DB928
- bl CTRDGi_IsAgbCartridgeAtInit
- cmp r0, #0x0
- addne sp, sp, #0x4
- movne r0, #0x1
- ldmneia sp!, {lr}
- bxne lr
-_020DB928:
- mov r0, #0x0
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start CTRDGi_InitCommon
-CTRDGi_InitCommon: ; 0x020DB938
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r1, _020DB970 ; =UNK_021D6944
- mov r3, #0x0
- ldr r2, _020DB974 ; =0x05000001
- add r0, sp, #0x0
- str r3, [sp, #0x0]
- bl SVC_CpuSet
- bl OS_GetLockID
- ldr r1, _020DB970 ; =UNK_021D6944
- strh r0, [r1, #0x2]
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020DB970: .word UNK_021D6944
-_020DB974: .word 0x05000001