summaryrefslogtreecommitdiff
path: root/asm/rom2dism.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/rom2dism.s')
-rw-r--r--asm/rom2dism.s3105
1 files changed, 0 insertions, 3105 deletions
diff --git a/asm/rom2dism.s b/asm/rom2dism.s
index 051a235d..7994c2ed 100644
--- a/asm/rom2dism.s
+++ b/asm/rom2dism.s
@@ -5,3111 +5,6 @@
.text
- arm_func_start CTRDG_CheckEnabled
-CTRDG_CheckEnabled: ; 0x020DB11C
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- bl CTRDG_IsOptionCartridge
-_020DB128:
- .byte 0x00, 0x00, 0x50, 0xE3, 0x04, 0xD0, 0x8D, 0x12
- .byte 0x00, 0x40, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11, 0x1C, 0x00, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3
- .byte 0x04, 0xD0, 0x8D, 0x12, 0x00, 0x40, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11, 0xBF, 0xC9, 0xFF, 0xEB
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
-
- 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 ; =0x021D6940
- mov r4, r0
- str r5, [r1, #0x0]
- bl CTRDG_IsOptionCartridge
-_020DB17C:
- .byte 0x00, 0x00, 0x50, 0xE3
- .byte 0x04, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x55, 0xE3, 0x01, 0x1A, 0xA0, 0x13, 0x05, 0x1A, 0xA0, 0x03
- .byte 0x0F, 0x0A, 0xA0, 0xE3, 0x0F, 0xC6, 0xFF, 0xEB, 0x04, 0x00, 0xA0, 0xE1, 0x60, 0xC8, 0xFF, 0xEB
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
-_020DB1AC: .word 0x021D6940
-
- arm_func_start CTRDG_IsEnabled
-CTRDG_IsEnabled: ; 0x020DB1B0
- ldr r0, _020DB1BC ; =0x021D6940
- ldr r0, [r0, #0x0]
- bx lr
- .balign 4
-_020DB1BC: .word 0x021D6940
-
- 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
-_020DB1DC:
- .byte 0x00, 0x00, 0x50, 0xE3
- .byte 0x04, 0xD0, 0x8D, 0x02, 0x00, 0x00, 0xA0, 0x03, 0xF0, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01
- .byte 0xC9, 0xFF, 0xFF, 0xEB, 0xC0, 0x00, 0x9F, 0xE5, 0xB2, 0x00, 0xD0, 0xE1, 0x01, 0xBC, 0xFF, 0xEB
- .byte 0x21, 0x00, 0x54, 0xE3, 0x0D, 0x00, 0x00, 0x8A, 0x21, 0x00, 0x54, 0xE3, 0x17, 0x00, 0x00, 0x2A
- .byte 0x11, 0x00, 0x54, 0xE3, 0x06, 0x00, 0x00, 0x8A, 0x10, 0x00, 0x54, 0xE3, 0x1C, 0x00, 0x00, 0x3A
- .byte 0x10, 0x00, 0x54, 0xE3, 0x19, 0x00, 0x00, 0x0A, 0x11, 0x00, 0x54, 0xE3, 0x0B, 0x00, 0x00, 0x0A
- .byte 0x17, 0x00, 0x00, 0xEA, 0x20, 0x00, 0x54, 0xE3, 0xB0, 0x60, 0xC7, 0x01, 0x14, 0x00, 0x00, 0xEA
- .byte 0x40, 0x00, 0x54, 0xE3, 0x02, 0x00, 0x00, 0x8A, 0x40, 0x00, 0x54, 0xE3, 0x00, 0x60, 0x87, 0x05
- .byte 0x0F, 0x00, 0x00, 0xEA, 0x41, 0x00, 0x54, 0xE3, 0x08, 0x00, 0x00, 0x0A, 0x0C, 0x00, 0x00, 0xEA
- .byte 0x00, 0x00, 0x55, 0xE3, 0x00, 0x00, 0xD7, 0x15, 0x00, 0x00, 0xC5, 0x15, 0x08, 0x00, 0x00, 0xEA
- .byte 0x00, 0x00, 0x55, 0xE3, 0xB0, 0x00, 0xD7, 0x11, 0xB0, 0x00, 0xC5, 0x11, 0x04, 0x00, 0x00, 0xEA
- .byte 0x00, 0x00, 0x55, 0xE3, 0x00, 0x00, 0x97, 0x15, 0x00, 0x00, 0x85, 0x15, 0x00, 0x00, 0x00, 0xEA
- .byte 0x00, 0x60, 0xC7, 0xE5, 0x20, 0x00, 0x9F, 0xE5, 0xB2, 0x00, 0xD0, 0xE1, 0x7C, 0xBB, 0xFF, 0xEB
- .byte 0xF9, 0x00, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x01, 0x00, 0xA0, 0x13, 0x00, 0x00, 0xA0, 0x03
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x44, 0x69, 0x1D, 0x02
-
- 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
-_020DB2F4:
- .byte 0x00, 0x00, 0x50, 0xE3, 0x04, 0xD0, 0x8D, 0x02, 0x00, 0x00, 0xA0, 0x03
- .byte 0xF0, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x83, 0xFF, 0xFF, 0xEB, 0x18, 0x01, 0x9F, 0xE5
- .byte 0xB2, 0x00, 0xD0, 0xE1, 0xBB, 0xBB, 0xFF, 0xEB, 0x18, 0x00, 0x9D, 0xE5, 0x01, 0x00, 0x10, 0xE2
- .byte 0x04, 0x00, 0x00, 0x1A, 0x07, 0x00, 0xA0, 0xE1, 0x9A, 0xC9, 0xFF, 0xEB, 0x05, 0x00, 0xA0, 0xE1
- .byte 0x04, 0x10, 0xA0, 0xE1, 0x88, 0xC3, 0xFF, 0xEB, 0x18, 0x00, 0x9D, 0xE5, 0x11, 0x00, 0x50, 0xE3
- .byte 0x09, 0x00, 0x00, 0x8A, 0x10, 0x00, 0x50, 0xE3, 0x04, 0x00, 0x00, 0x3A, 0x10, 0x00, 0x50, 0xE3
- .byte 0x0D, 0x00, 0x00, 0x0A, 0x11, 0x00, 0x50, 0xE3, 0x17, 0x00, 0x00, 0x0A, 0x28, 0x00, 0x00, 0xEA
- .byte 0x01, 0x00, 0x50, 0xE3, 0x1E, 0x00, 0x00, 0x0A, 0x25, 0x00, 0x00, 0xEA, 0x20, 0x00, 0x50, 0xE3
- .byte 0x02, 0x00, 0x00, 0x8A, 0x20, 0x00, 0x50, 0xE3, 0x09, 0x00, 0x00, 0x0A, 0x20, 0x00, 0x00, 0xEA
- .byte 0x21, 0x00, 0x50, 0xE3, 0x11, 0x00, 0x00, 0x0A, 0x1D, 0x00, 0x00, 0xEA, 0x07, 0x00, 0xA0, 0xE1
- .byte 0x06, 0x10, 0xA0, 0xE1, 0x05, 0x20, 0xA0, 0xE1, 0x04, 0x30, 0xA0, 0xE1, 0x1A, 0xCA, 0xFF, 0xEB
- .byte 0x17, 0x00, 0x00, 0xEA, 0x07, 0x00, 0xA0, 0xE1, 0x06, 0x10, 0xA0, 0xE1, 0x05, 0x20, 0xA0, 0xE1
- .byte 0x04, 0x30, 0xA0, 0xE1, 0x32, 0xCA, 0xFF, 0xEB, 0x11, 0x00, 0x00, 0xEA, 0x06, 0x00, 0xA0, 0xE1
- .byte 0x05, 0x10, 0xA0, 0xE1, 0x04, 0x20, 0xA0, 0xE1, 0x84, 0xCB, 0xFF, 0xEB, 0x0C, 0x00, 0x00, 0xEA
- .byte 0x06, 0x00, 0xA0, 0xE1, 0x05, 0x10, 0xA0, 0xE1, 0x04, 0x20, 0xA0, 0xE1, 0x8B, 0xCB, 0xFF, 0xEB
- .byte 0x07, 0x00, 0x00, 0xEA, 0x00, 0x00, 0x54, 0xE3, 0x00, 0x10, 0xA0, 0xE3, 0x04, 0x00, 0x00, 0x9A
- .byte 0x01, 0x00, 0xD6, 0xE4, 0x01, 0x10, 0x81, 0xE2, 0x04, 0x00, 0x51, 0xE1, 0x01, 0x00, 0xC5, 0xE4
- .byte 0xFA, 0xFF, 0xFF, 0x3A, 0x20, 0x00, 0x9F, 0xE5, 0xB2, 0x00, 0xD0, 0xE1, 0x20, 0xBB, 0xFF, 0xEB
- .byte 0x9D, 0x00, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x01, 0x00, 0xA0, 0x13, 0x00, 0x00, 0xA0, 0x03
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x44, 0x69, 0x1D, 0x02
-
- 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
-_020DB520:
- .byte 0x00, 0x00, 0x50, 0xE3, 0x04, 0xD0, 0x8D, 0x02, 0xF0, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01
- .byte 0x01, 0x60, 0xA0, 0xE3, 0x0D, 0x50, 0xA0, 0xE3, 0x00, 0x40, 0xA0, 0xE3, 0x06, 0x00, 0xA0, 0xE1
- .byte 0x2A, 0x94, 0xFC, 0xFB, 0x05, 0x00, 0xA0, 0xE1, 0x07, 0x10, 0xA0, 0xE1, 0x04, 0x20, 0xA0, 0xE1
- .byte 0xE2, 0xD1, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0xF7, 0xFF, 0xFF, 0x1A, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
-
- 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
- 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
-_020DB5DC:
- .byte 0x00, 0x00, 0x50, 0xE3
- .byte 0x04, 0xD0, 0x8D, 0x02, 0xF0, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x04, 0x00, 0x96, 0xE5
- .byte 0x4B, 0xC7, 0xFF, 0xEB, 0x04, 0x00, 0xA0, 0xE1, 0xFC, 0x93, 0xFC, 0xFB, 0xE9, 0xFF, 0xFF, 0xEA
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
-_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 ; =0x021D6944
- 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 ; =0x021D6944
- 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 0x021D6944
-_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
-_020DB814:
- .byte 0x00, 0x00, 0x50, 0xE3, 0x0C, 0x00, 0x9F, 0x15, 0xB6, 0x40, 0xD0, 0x11
- .byte 0x04, 0x00, 0xA0, 0xE1, 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x30, 0xFC, 0x7F, 0x02
-
- arm_func_start CTRDG_GetAgbMakerCode
-CTRDG_GetAgbMakerCode: ; 0x020DB830
- stmdb sp!, {r4,lr}
- mov r4, #0x0
- bl CTRDG_IsExisting
-_020DB83C:
- .byte 0x00, 0x00, 0x50, 0xE3
- .byte 0x01, 0x00, 0x00, 0x0A, 0xEF, 0xFF, 0xFF, 0xEB, 0x00, 0x40, 0xA0, 0xE1, 0x04, 0x00, 0xA0, 0xE1
- .byte 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
-
- arm_func_start CTRDGi_GetAgbGameCodeAtInit
-CTRDGi_GetAgbGameCodeAtInit: ; 0x020DB858
- stmdb sp!, {r4,lr}
- mov r4, #0x0
- bl CTRDGi_IsAgbCartridgeAtInit
-_020DB864:
- .byte 0x00, 0x00, 0x50, 0xE3, 0x0C, 0x00, 0x9F, 0x15, 0x08, 0x40, 0x90, 0x15
- .byte 0x04, 0x00, 0xA0, 0xE1, 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x30, 0xFC, 0x7F, 0x02
-
- arm_func_start CTRDG_GetAgbGameCode
-CTRDG_GetAgbGameCode: ; 0x020DB880
- stmdb sp!, {r4,lr}
- mov r4, #0x0
- bl CTRDG_IsExisting
-_020DB88C:
- .byte 0x00, 0x00, 0x50, 0xE3
- .byte 0x01, 0x00, 0x00, 0x0A, 0xEF, 0xFF, 0xFF, 0xEB, 0x00, 0x40, 0xA0, 0xE1, 0x04, 0x00, 0xA0, 0xE1
- .byte 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
-
- 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
-_020DB8CC:
- .byte 0x00, 0x00, 0x50, 0xE3
- .byte 0x05, 0x00, 0x00, 0x0A, 0xF3, 0xFF, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x04, 0xD0, 0x8D, 0x02
- .byte 0x01, 0x00, 0xA0, 0x03, 0x00, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x00, 0x00, 0xA0, 0xE3
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
-
- arm_func_start CTRDG_IsAgbCartridge
-CTRDG_IsAgbCartridge: ; 0x020DB8FC
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- bl CTRDG_IsExisting
-_020DB908:
- .byte 0x00, 0x00, 0x50, 0xE3, 0x05, 0x00, 0x00, 0x0A
- .byte 0xE4, 0xFF, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x04, 0xD0, 0x8D, 0x12, 0x01, 0x00, 0xA0, 0x13
- .byte 0x00, 0x40, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11, 0x00, 0x00, 0xA0, 0xE3, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
-
- arm_func_start CTRDGi_InitCommon
-CTRDGi_InitCommon: ; 0x020DB938
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r1, _020DB970 ; =0x021D6944
- mov r3, #0x0
- ldr r2, _020DB974 ; =0x05000001
- add r0, sp, #0x0
- str r3, [sp, #0x0]
- blx FUN_020002FE
- bl OS_GetLockID
- ldr r1, _020DB970 ; =0x021D6944
- strh r0, [r1, #0x2]
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020DB970: .word 0x021D6944
-_020DB974: .word 0x05000001
-
- arm_func_start CTRDGi_CallbackForSetPhi
-CTRDGi_CallbackForSetPhi: ; 0x020DB978
- ldr r0, _020DB988 ; =0x021D694C
- mov r1, #0x0
- str r1, [r0, #0x0]
- bx lr
- .balign 4
-_020DB988: .word 0x021D694C
-
- arm_func_start CTRDG_TerminateForPulledOut
-CTRDG_TerminateForPulledOut: ; 0x020DB98C
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- mov r0, #0x2
- bl CTRDGi_SendtoPxi
- bl OS_Terminate
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start CTRDGi_PulledOutCallback
-CTRDGi_PulledOutCallback: ; 0x020DB9AC
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- and r0, r1, #0x3f
- cmp r0, #0x11
- bne _020DBA14
- ldr r0, _020DBA24 ; =0x021D6954
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- addne sp, sp, #0x4
- ldmneia sp!, {lr}
- bxne lr
- ldr r1, _020DBA28 ; =0x021D6958
- mov r0, #0x0
- ldr r1, [r1, #0x0]
- cmp r1, #0x0
- beq _020DB9F0
- blx r1
-_020DB9F0:
- cmp r0, #0x0
- beq _020DB9FC
- bl CTRDG_TerminateForPulledOut
-_020DB9FC:
- ldr r0, _020DBA24 ; =0x021D6954
- mov r1, #0x1
- str r1, [r0, #0x0]
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
-_020DBA14:
- bl OS_Terminate
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020DBA24: .word 0x021D6954
-_020DBA28: .word 0x021D6958
-
- arm_func_start CTRDGi_CallbackForInitModuleInfo
-CTRDGi_CallbackForInitModuleInfo: ; 0x020DBA2C
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- and r0, r1, #0x3f
- cmp r0, #0x1
- ldreq r0, _020DBA64 ; =0x021D6944
- moveq r1, #0x1
- streqh r1, [r0, #0x0]
- addeq sp, sp, #0x4
- ldmeqia sp!, {lr}
- bxeq lr
- bl OS_Terminate
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020DBA64: .word 0x021D6944
-
- arm_func_start CTRDGi_InitModuleInfo
-CTRDGi_InitModuleInfo: ; 0x020DBA68
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x14
- ldr r0, _020DBC50 ; =0x021D6948
- ldr r1, [r0, #0x0]
- cmp r1, #0x0
- addne sp, sp, #0x14
- ldmneia sp!, {r4-r7,lr}
- bxne lr
- ldr r1, _020DBC54 ; =0x04000300
- mov r2, #0x1
- str r2, [r0, #0x0]
- ldrh r0, [r1, #0x0]
- ands r0, r0, #0x1
- addeq sp, sp, #0x14
- ldmeqia sp!, {r4-r7,lr}
- bxeq lr
- mov r0, #0x40000
- bl OS_SetIrqMask
- ldr r3, _020DBC58 ; =0x04000208
- mov r2, #0x1
- ldrh r4, [r3, #0x0]
- ldr r1, _020DBC5C ; =0x021D6944
- mov r6, r0
- strh r2, [r3, #0x0]
- ldrh r0, [r1, #0x2]
- add r1, sp, #0x0
- bl CTRDGi_LockByProcessor
- ldr r1, _020DBC60 ; =0x04000204
- add r0, sp, #0x8
- ldrh r1, [r1, #0x0]
- and r1, r1, #0x8000
- mov r5, r1, asr #0xf
- bl CTRDGi_ChangeLatestAccessCycle
- ldr r3, _020DBC60 ; =0x04000204
- ldr r0, _020DBC64 ; =0x021D6960
- ldrh r2, [r3, #0x0]
- add r0, r0, #0x80
- mov r1, #0x40
- bic r2, r2, #0x8000
- strh r2, [r3, #0x0]
- bl DC_InvalidateRange
- ldr r2, _020DBC64 ; =0x021D6960
- ldr r1, _020DBC68 ; =0x08000080
- mov r0, #0x1
- mov r3, #0x40
- add r2, r2, #0x80
- bl MI_DmaCopy16
- ldr r2, _020DBC60 ; =0x04000204
- add r0, sp, #0x8
- ldrh r1, [r2, #0x0]
- bic r1, r1, #0x8000
- orr r1, r1, r5, lsl #0xf
- strh r1, [r2, #0x0]
- bl CTRDGi_RestoreAccessCycle
- ldr r0, _020DBC5C ; =0x021D6944
- add r1, sp, #0x0
- ldrh r0, [r0, #0x2]
- bl CTRDGi_UnlockByProcessor
- ldr r0, _020DBC6C ; =0x027FFF9B
- ldrb r0, [r0, #0x0]
- cmp r0, #0x0
- bne _020DBB70
- ldr r0, _020DBC70 ; =0x027FFF9A
- ldrb r0, [r0, #0x0]
- cmp r0, #0x0
- bne _020DBBDC
-_020DBB70:
- ldr r2, _020DBC64 ; =0x021D6960
- ldr r0, _020DBC74 ; =0x027FFC30
- ldrh r1, [r2, #0xbe]
- mov r3, #0x0
- strh r1, [r0, #0x0]
-_020DBB84:
- add r0, r2, r3
- ldrb r1, [r0, #0xb5]
- add r0, r3, #0x2700000
- add r0, r0, #0xff000
- add r3, r3, #0x1
- strb r1, [r0, #0xC32]
- cmp r3, #0x3
- blt _020DBB84
- ldrh r0, [r2, #0xb0]
- ldr r1, _020DBC74 ; =0x027FFC30
- strh r0, [r1, #0x6]
- ldr r0, [r2, #0xac]
- str r0, [r1, #0x8]
- bl CTRDG_IsExisting
-_020DBBBC:
- .byte 0x00, 0x00, 0x50, 0xE3
- .byte 0x01, 0x20, 0xA0, 0x13, 0xA0, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0xA0, 0x03, 0x00, 0x20, 0xC1, 0xE5
- .byte 0x98, 0x00, 0x9F, 0xE5, 0x01, 0x10, 0xA0, 0xE3, 0x00, 0x10, 0xC0, 0xE5
-_020DBBDC:
- ldr r0, _020DBC78 ; =0xFFFF0020
- ldr r1, _020DBC7C ; =0x021D6964
- mov r2, #0x9c
- bl MIi_CpuCopy32
- bl DC_FlushAll
- ldr r0, _020DBC64 ; =0x021D6960
- add r0, r0, #0xfe000000
- mov r0, r0, lsr #0x5
- mov r0, r0, lsl #0x6
- orr r0, r0, #0x1
- bl CTRDGi_SendtoPxi
- ldr r5, _020DBC5C ; =0x021D6944
- ldrh r0, [r5, #0x0]
- cmp r0, #0x1
- beq _020DBC30
- mov r7, #0x1
-_020DBC1C:
- mov r0, r7
- blx FUN_020005F2
- ldrh r0, [r5, #0x0]
- cmp r0, #0x1
- bne _020DBC1C
-_020DBC30:
- ldr r2, _020DBC58 ; =0x04000208
- mov r0, r6
- ldrh r1, [r2, #0x0]
- strh r4, [r2, #0x0]
- bl OS_SetIrqMask
- add sp, sp, #0x14
- ldmia sp!, {r4-r7,lr}
- bx lr
- .balign 4
-_020DBC50: .word 0x021D6948
-_020DBC54: .word 0x04000300
-_020DBC58: .word 0x04000208
-_020DBC5C: .word 0x021D6944
-_020DBC60: .word 0x04000204
-_020DBC64: .word 0x021D6960
-_020DBC68: .word 0x08000080
-_020DBC6C: .word 0x027FFF9B
-_020DBC70: .word 0x027FFF9A
-_020DBC74: .word 0x027FFC30
-_020DBC78: .word 0xFFFF0020
-_020DBC7C: .word 0x021D6964
-
- arm_func_start CTRDG_Init
-CTRDG_Init: ; 0x020DBC80
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- ldr r0, _020DBD34 ; =0x021D6950
- ldr r1, [r0, #0x0]
- cmp r1, #0x0
- addne sp, sp, #0x4
- ldmneia sp!, {r4-r5,lr}
- bxne lr
- mov r1, #0x1
- str r1, [r0, #0x0]
- bl CTRDGi_InitCommon
- ldr r0, _020DBD38 ; =0x021D6954
- mov r1, #0x0
- str r1, [r0, #0x0]
- bl PXI_Init
- mov r5, #0xd
- mov r4, #0x1
- mov r0, r5
- mov r1, r4
- bl PXI_IsCallbackReady
-_020DBCD0:
- .byte 0x00, 0x00, 0x50, 0xE3, 0xFA, 0xFF, 0xFF, 0x0A, 0x5C, 0x10, 0x9F, 0xE5, 0x0D, 0x00, 0xA0, 0xE3
- .byte 0x35, 0xD0, 0xFF, 0xEB, 0x5F, 0xFF, 0xFF, 0xEB, 0x0D, 0x00, 0xA0, 0xE3, 0x00, 0x10, 0xA0, 0xE3
- .byte 0x31, 0xD0, 0xFF, 0xEB, 0x44, 0x10, 0x9F, 0xE5, 0x0D, 0x00, 0xA0, 0xE3, 0x2E, 0xD0, 0xFF, 0xEB
- .byte 0x3C, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0xA0, 0xE3, 0x38, 0x00, 0x9F, 0xE5, 0x00, 0x20, 0x81, 0xE5
- .byte 0xAD, 0x07, 0x00, 0xEB, 0x30, 0x10, 0x9F, 0xE5, 0x11, 0x00, 0xA0, 0xE3, 0x26, 0xD0, 0xFF, 0xEB
- .byte 0x00, 0x00, 0xA0, 0xE3, 0x0C, 0xFD, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1
-_020DBD34: .word 0x021D6950
-_020DBD38: .word 0x021D6954
-_020DBD3C:
- .byte 0x2C, 0xBA, 0x0D, 0x02
- .byte 0xAC, 0xB9, 0x0D, 0x02, 0x58, 0x69, 0x1D, 0x02, 0x20, 0x6A, 0x1D, 0x02, 0x78, 0xB9, 0x0D, 0x02
-
- arm_func_start CTRDG_IdentifyAgbBackup
-CTRDG_IdentifyAgbBackup: ; 0x020DBD50
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r7, r0
- cmp r7, #0x1
- mov r0, #0x1
- bhi _020DBEAC
- bl OS_GetLockID
- ldr r1, _020DBED8 ; =0x021D6B0C
- strh r0, [r1, #0x0]
- ldrh r0, [r1, #0x0]
- bl OS_LockCartridge
- ldr r6, _020DBEDC ; =0x04000204
- ldr r1, _020DBEE0 ; =0x02103FE4
- ldrh r3, [r6, #0x0]
- ldrh r2, [r6, #0x0]
- ldr r0, _020DBEE4 ; =0x021D6B28
- and r4, r3, #0x3
- bic r2, r2, #0x3
- orr r2, r2, #0x3
- strh r2, [r6, #0x0]
- str r1, [r0, #0x0]
- bl CTRDGi_ReadFlashID
- ldr r2, _020DBEDC ; =0x04000204
- mov r6, r0
- ldrh r1, [r2, #0x0]
- cmp r7, #0x0
- ldreq r5, _020DBEE8 ; =0x02103FF4
- bic r1, r1, #0x3
- orr r1, r1, r4
- cmp r7, #0x1
- ldr r0, _020DBED8 ; =0x021D6B0C
- strh r1, [r2, #0x0]
- ldrh r0, [r0, #0x0]
- ldreq r5, _020DBEEC ; =0x02103FE8
- bl OS_UnlockCartridge2
- ldr r2, [r5, #0x0]
- mov r0, #0x1
- ldrh r1, [r2, #0x38]
- cmp r1, #0x0
- beq _020DBE14
- and r3, r6, #0xff
-_020DBDF4:
- ldrh r1, [r2, #0x38]
- cmp r3, r1
- moveq r0, #0x0
- beq _020DBE14
- ldr r2, [r5, #0x4]!
- ldrh r1, [r2, #0x38]
- cmp r1, #0x0
- bne _020DBDF4
-_020DBE14:
- ldr r2, [r2, #0x0]
- ldr r1, _020DBEF0 ; =0x021D6B14
- ldr r3, _020DBEF4 ; =0x021D6B34
- str r2, [r1, #0x0]
- ldr r1, [r5, #0x0]
- ldr r2, _020DBEF8 ; =0x021D6B2C
- ldr r4, [r1, #0x4]
- ldr r1, _020DBEFC ; =0x021D6B18
- str r4, [r3, #0x0]
- ldr r3, [r5, #0x0]
- ldr r6, _020DBF00 ; =0x021D6B1C
- ldr r3, [r3, #0x8]
- ldr r4, _020DBF04 ; =0x021D6B30
- str r3, [r2, #0x0]
- ldr r2, [r5, #0x0]
- ldr r3, _020DBF08 ; =0x021D6B24
- ldr r7, [r2, #0xc]
- ldr r2, _020DBEE4 ; =0x021D6B28
- str r7, [r1, #0x0]
- ldr r7, [r5, #0x0]
- ldr r1, _020DBF0C ; =0x021D6B20
- ldr r7, [r7, #0x10]
- add sp, sp, #0x4
- str r7, [r6, #0x0]
- ldr r6, [r5, #0x0]
- ldr r6, [r6, #0x14]
- str r6, [r4, #0x0]
- ldr r4, [r5, #0x0]
- ldr r4, [r4, #0x18]
- str r4, [r3, #0x0]
- ldr r3, [r5, #0x0]
- ldr r3, [r3, #0x1c]
- str r3, [r2, #0x0]
- ldr r2, [r5, #0x0]
- add r2, r2, #0x20
- str r2, [r1, #0x0]
- ldmia sp!, {r4-r7,lr}
- bx lr
-_020DBEAC:
- cmp r7, #0x2
- addne sp, sp, #0x4
- ldmneia sp!, {r4-r7,lr}
- bxne lr
- bl OS_GetLockID
- ldr r1, _020DBF10 ; =0x021D6B4C
- strh r0, [r1, #0x0]
- mov r0, #0x0
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,lr}
- bx lr
- .balign 4
-_020DBED8: .word 0x021D6B0C
-_020DBEDC: .word 0x04000204
-_020DBEE0: .word 0x02103FE4
-_020DBEE4: .word 0x021D6B28
-_020DBEE8: .word 0x02103FF4
-_020DBEEC: .word 0x02103FE8
-_020DBEF0: .word 0x021D6B14
-_020DBEF4: .word 0x021D6B34
-_020DBEF8: .word 0x021D6B2C
-_020DBEFC: .word 0x021D6B18
-_020DBF00: .word 0x021D6B1C
-_020DBF04: .word 0x021D6B30
-_020DBF08: .word 0x021D6B24
-_020DBF0C: .word 0x021D6B20
-_020DBF10: .word 0x021D6B4C
-
- arm_func_start CTRDG_WriteAndVerifyAgbFlashAsync
-CTRDG_WriteAndVerifyAgbFlashAsync: ; 0x020DBF14
- stmdb sp!, {lr}
- sub sp, sp, #0x24
- str r1, [sp, #0xc]
- strh r0, [sp, #0x20]
- str r2, [sp, #0x18]
- ldr r1, _020DBF44 ; =CTRDGi_WriteAndVerifyAgbFlashSectorCore
- add r0, sp, #0x0
- mov r2, r3
- bl CTRDGi_SetTask
- add sp, sp, #0x24
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020DBF44: .word CTRDGi_WriteAndVerifyAgbFlashSectorCore
-
- arm_func_start CTRDG_VerifyAgbFlash
-CTRDG_VerifyAgbFlash: ; 0x020DBF48
- stmdb sp!, {lr}
- sub sp, sp, #0x24
- strh r0, [sp, #0x20]
- add r0, sp, #0x0
- str r1, [sp, #0xc]
- str r2, [sp, #0x18]
- bl CTRDGi_VerifyAgbFlashCore
- add sp, sp, #0x24
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start CTRDG_WriteAgbFlashSector
-CTRDG_WriteAgbFlashSector:
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r2, _020DBF90 ; =0x021D6B14
- ldr r2, [r2, #0x0]
- blx r2
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020DBF90: .word 0x021D6B14
-
- arm_func_start CTRDG_ReadAgbFlash
-CTRDG_ReadAgbFlash: ; 0x020DBF94
- stmdb sp!, {lr}
- sub sp, sp, #0x24
- strh r0, [sp, #0x20]
- add r0, sp, #0x0
- str r1, [sp, #0x14]
- str r2, [sp, #0x1c]
- str r3, [sp, #0x18]
- bl CTRDGi_ReadAgbFlashCore
- add sp, sp, #0x24
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start CTRDGi_WriteAndVerifyAgbFlashSectorCore
-CTRDGi_WriteAndVerifyAgbFlashSectorCore: ; 0x020DBFC0
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x24
- mov r4, r0
- ldmia r4!, {r0-r3}
- add r12, sp, #0x0
- stmia r12!, {r0-r3}
- ldmia r4!, {r0-r3}
- stmia r12!, {r0-r3}
- ldr r0, [r4, #0x0]
- mov r7, #0x0
- str r0, [r12, #0x0]
- ldrh r6, [sp, #0x20]
- ldr r5, [sp, #0xc]
- ldr r4, [sp, #0x18]
- mov r0, r6
- mov r1, r5
- bl CTRDG_WriteAgbFlashSector
-_020DC004:
- .byte 0x00, 0x00, 0x50, 0xE3, 0x07, 0x00, 0x00, 0x1A, 0x06, 0x00, 0xA0, 0xE1
- .byte 0x05, 0x10, 0xA0, 0xE1, 0x04, 0x20, 0xA0, 0xE1, 0xCA, 0xFF, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3
- .byte 0x24, 0xD0, 0x8D, 0x02, 0xF0, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x01, 0x10, 0x87, 0xE2
- .byte 0x01, 0x18, 0xA0, 0xE1, 0x21, 0x78, 0xA0, 0xE1, 0x03, 0x00, 0x57, 0xE3, 0xED, 0xFF, 0xFF, 0x3A
- .byte 0x24, 0xD0, 0x8D, 0xE2, 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
-
- arm_func_start CTRDGi_VerifyAgbFlashCore
-CTRDGi_VerifyAgbFlashCore: ; 0x020DC04C
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x24
- mov r5, r0
- ldmia r5!, {r0-r3}
- add r4, sp, #0x0
- stmia r4!, {r0-r3}
- ldmia r5!, {r0-r3}
- stmia r4!, {r0-r3}
- ldr r0, _020DC128 ; =0x021D6B0C
- ldr r1, [r5, #0x0]
- ldrh r0, [r0, #0x0]
- str r1, [r4, #0x0]
- ldrh r6, [sp, #0x20]
- ldr r5, [sp, #0xc]
- ldr r4, [sp, #0x18]
- bl OS_LockCartridge
- ldr r3, _020DC12C ; =0x04000204
- ldr r0, _020DC130 ; =0x021D6B20
- ldrh r2, [r3, #0x0]
- ldrh r1, [r3, #0x0]
- and r7, r2, #0x3
- bic r1, r1, #0x3
- orr r1, r1, #0x3
- strh r1, [r3, #0x0]
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x0]
- cmp r0, #0x20000
- bne _020DC0D4
- mov r0, r6, lsl #0xc
- mov r0, r0, lsr #0x10
- bl CTRDGi_SetFlashBankMx
- and r0, r6, #0xf
- mov r0, r0, lsl #0x10
- mov r6, r0, lsr #0x10
-_020DC0D4:
- ldr r1, _020DC130 ; =0x021D6B20
- mov r0, r5
- ldr r1, [r1, #0x0]
- mov r2, r4
- ldrh r1, [r1, #0x8]
- mov r1, r6, lsl r1
- add r1, r1, #0xa000000
- bl CTRDGi_VerifyFlashSectorCore
- ldr r3, _020DC12C ; =0x04000204
- ldr r1, _020DC128 ; =0x021D6B0C
- ldrh r2, [r3, #0x0]
- mov r4, r0
- bic r0, r2, #0x3
- orr r0, r0, r7
- strh r0, [r3, #0x0]
- ldrh r0, [r1, #0x0]
- bl OS_UnlockCartridge2
- mov r0, r4
- add sp, sp, #0x24
- ldmia sp!, {r4-r7,lr}
- bx lr
- .balign 4
-_020DC128: .word 0x021D6B0C
-_020DC12C: .word 0x04000204
-_020DC130: .word 0x021D6B20
-
- arm_func_start CTRDGi_VerifyFlashSectorCore
-CTRDGi_VerifyFlashSectorCore: ; 0x020DC134
- cmp r2, #0x0
- sub r2, r2, #0x1
- beq _020DC160
-_020DC140:
- ldrb r12, [r1], #0x1
- ldrb r3, [r0], #0x1
- cmp r12, r3
- subne r0, r1, #0x1
- bxne lr
- cmp r2, #0x0
- sub r2, r2, #0x1
- bne _020DC140
-_020DC160:
- mov r0, #0x0
- bx lr
-
- arm_func_start CTRDGi_ReadAgbFlashCore
-CTRDGi_ReadAgbFlashCore: ; 0x020DC168
- stmdb sp!, {r4-r8,lr}
- sub sp, sp, #0x28
- mov r5, r0
- ldmia r5!, {r0-r3}
- add r4, sp, #0x0
- stmia r4!, {r0-r3}
- ldmia r5!, {r0-r3}
- stmia r4!, {r0-r3}
- ldr r0, _020DC25C ; =0x021D6B0C
- ldr r1, [r5, #0x0]
- ldrh r0, [r0, #0x0]
- str r1, [r4, #0x0]
- ldrh r7, [sp, #0x20]
- ldr r6, [sp, #0x14]
- ldr r5, [sp, #0x1c]
- ldr r4, [sp, #0x18]
- bl OS_LockCartridge
- ldr r3, _020DC260 ; =0x04000204
- ldr r0, _020DC264 ; =0x021D6B20
- ldrh r2, [r3, #0x0]
- ldrh r1, [r3, #0x0]
- and r8, r2, #0x3
- bic r1, r1, #0x3
- orr r1, r1, #0x3
- strh r1, [r3, #0x0]
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x0]
- cmp r0, #0x20000
- bne _020DC1F4
- mov r0, r7, lsl #0xc
- mov r0, r0, lsr #0x10
- bl CTRDGi_SetFlashBankMx
- and r0, r7, #0xf
- mov r0, r0, lsl #0x10
- mov r7, r0, lsr #0x10
-_020DC1F4:
- ldr r0, _020DC264 ; =0x021D6B20
- cmp r4, #0x0
- ldr r0, [r0, #0x0]
- sub r4, r4, #0x1
- ldrh r0, [r0, #0x8]
- mov r0, r7, lsl r0
- add r0, r0, #0xa000000
- add r1, r6, r0
- beq _020DC22C
-_020DC218:
- ldrb r0, [r1], #0x1
- cmp r4, #0x0
- sub r4, r4, #0x1
- strb r0, [r5], #0x1
- bne _020DC218
-_020DC22C:
- ldr r2, _020DC260 ; =0x04000204
- ldr r0, _020DC25C ; =0x021D6B0C
- ldrh r1, [r2, #0x0]
- bic r1, r1, #0x3
- orr r1, r1, r8
- strh r1, [r2, #0x0]
- ldrh r0, [r0, #0x0]
- bl OS_UnlockCartridge2
- mov r0, #0x0
- add sp, sp, #0x28
- ldmia sp!, {r4-r8,lr}
- bx lr
- .balign 4
-_020DC25C: .word 0x021D6B0C
-_020DC260: .word 0x04000204
-_020DC264: .word 0x021D6B20
-
- arm_func_start CTRDGi_PollingSR1MCOMMON
-CTRDGi_PollingSR1MCOMMON: ; 0x020DC268
- stmdb sp!, {r4-r8,lr}
- mov r8, r0
- mov r7, r1
- mov r6, r2
- mov r5, #0x0
- bl StartFlashTimer
- ldr r4, _020DC318 ; =0x021D6B10
-_020DC284:
- bl CheckFlashTimer
- mov r0, r7
- bl CTRDGi_ReadSrFunc
- cmp r0, r6
- beq _020DC300
- ands r0, r0, #0x20
- beq _020DC2CC
- mov r0, r7
- bl CTRDGi_ReadSrFunc
-_020DC2A8:
- .byte 0x00, 0x00, 0x56, 0xE1, 0x13, 0x00, 0x00, 0x0A
- .byte 0x0A, 0x0A, 0x88, 0xE3, 0x00, 0x08, 0xA0, 0xE1, 0x5C, 0x10, 0x9F, 0xE5, 0xF0, 0x20, 0xA0, 0xE3
- .byte 0x00, 0x20, 0xC1, 0xE5, 0x20, 0x58, 0xA0, 0xE1, 0x0C, 0x00, 0x00, 0xEA
-_020DC2CC:
- ldrh r0, [r4, #0x0]
- cmp r0, #0x0
- beq _020DC284
- mov r0, r7
- bl CTRDGi_ReadSrFunc
-_020DC2E0:
- .byte 0x00, 0x00, 0x56, 0xE1, 0x05, 0x00, 0x00, 0x0A, 0x03, 0x09, 0x88, 0xE3, 0x00, 0x08, 0xA0, 0xE1
- .byte 0x24, 0x10, 0x9F, 0xE5, 0xF0, 0x20, 0xA0, 0xE3, 0x00, 0x20, 0xC1, 0xE5, 0x20, 0x58, 0xA0, 0xE1
-_020DC300:
- bl CTRDG_IsExisting
-_020DC304:
- .byte 0x00, 0x00, 0x50, 0xE3, 0x01, 0x5A, 0xA0, 0x03, 0x05, 0x00, 0xA0, 0xE1
- .byte 0xF0, 0x41, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
-_020DC318: .word 0x021D6B10
-_020DC31C:
- .byte 0x55, 0x55, 0x00, 0x0A
-
- arm_func_start CTRDGi_PollingSR512kCOMMON
-CTRDGi_PollingSR512kCOMMON: ; 0x020DC320
- stmdb sp!, {r4-r8,lr}
- mov r4, r0
- mov r8, r1
- mov r7, r2
- mov r6, #0x0
- bl StartFlashTimer
- ldr r5, _020DC3A8 ; =0x021D6B10
-_020DC33C:
- mov r0, r8
- bl CTRDGi_ReadSrFunc
- cmp r0, r7
- beq _020DC390
- ldrh r0, [r5, #0x0]
- cmp r0, #0x0
- beq _020DC33C
- mov r0, r8
- bl CTRDGi_ReadSrFunc
-_020DC360:
- .byte 0x00, 0x00, 0x57, 0xE1, 0x09, 0x00, 0x00, 0x0A, 0x3C, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5
- .byte 0xB8, 0x01, 0xD0, 0xE1, 0xC2, 0x00, 0x50, 0xE3, 0x30, 0x00, 0x9F, 0x05, 0xF0, 0x10, 0xA0, 0x03
- .byte 0x00, 0x10, 0xC0, 0x05, 0x03, 0x09, 0x84, 0xE3, 0x00, 0x08, 0xA0, 0xE1, 0x20, 0x68, 0xA0, 0xE1
-_020DC390:
- bl CTRDG_IsExisting
-_020DC394:
- .byte 0x00, 0x00, 0x50, 0xE3, 0x01, 0x6A, 0xA0, 0x03, 0x06, 0x00, 0xA0, 0xE1
- .byte 0xF0, 0x41, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
-_020DC3A8: .word 0x021D6B10
-_020DC3AC:
- .byte 0x20, 0x6B, 0x1D, 0x02
- .byte 0x55, 0x55, 0x00, 0x0A
-
- arm_func_start CTRDGi_ReadSrFunc
-CTRDGi_ReadSrFunc:
- ldrb r0, [r0, #0x0]
- bx lr
-
- arm_func_start CheckFlashTimer
-CheckFlashTimer: ; 0x020DC3BC
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- bl OS_GetTick
- ldr r3, _020DC420 ; =0x021D6B44
- ldr r2, _020DC424 ; =0x000082EA
- ldr r12, [r3, #0x0]
- ldr r3, [r3, #0x4]
- subs r12, r0, r12
- sbc r0, r1, r3
- mov r1, r0, lsl #0x6
- orr r1, r1, r12, lsr #0x1a
- mov r0, r12, lsl #0x6
- mov r3, #0x0
- bl _ll_udiv
- ldr r2, _020DC428 ; =0x021D6B3C
- ldr r3, [r2, #0x4]
- ldr r2, [r2, #0x0]
- cmp r3, r1
- cmpeq r2, r0
- ldrls r0, _020DC42C ; =0x021D6B10
- movls r1, #0x1
- strlsh r1, [r0, #0x0]
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020DC420: .word 0x021D6B44
-_020DC424: .word 0x000082EA
-_020DC428: .word 0x021D6B3C
-_020DC42C: .word 0x021D6B10
-
- arm_func_start StartFlashTimer
-StartFlashTimer: ; 0x020DC430
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r1, _020DC47C ; =0x021D6B28
- ldr r2, _020DC480 ; =0x021D6B10
- mov r3, #0x0
- ldr r1, [r1, #0x0]
- strh r3, [r2, #0x0]
- mov r0, r0, lsl #0x1
- ldrh r1, [r1, r0]
- ldr r0, _020DC484 ; =0x021D6B3C
- str r1, [r0, #0x0]
- str r3, [r0, #0x4]
- bl OS_GetTick
- ldr r2, _020DC488 ; =0x021D6B44
- str r0, [r2, #0x0]
- str r1, [r2, #0x4]
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020DC47C: .word 0x021D6B28
-_020DC480: .word 0x021D6B10
-_020DC484: .word 0x021D6B3C
-_020DC488: .word 0x021D6B44
-
- arm_func_start CTRDGi_ReadFlashID
-CTRDGi_ReadFlashID: ; 0x020DC48C
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- ldr r5, _020DC590 ; =0x04000208
- mov r0, #0x0
- ldrh r2, [r5, #0x0]
- ldr r1, _020DC594 ; =0x021D6B38
- ldr r4, _020DC598 ; =0x0A005555
- strh r0, [r5, #0x0]
- str r2, [r1, #0x0]
- mov r3, #0xaa
- ldr r2, _020DC59C ; =0x0A002AAA
- strb r3, [r4, #0x0]
- mov r3, #0x55
- strb r3, [r2, #0x0]
- mov r2, #0x90
- strb r2, [r4, #0x0]
- ldrh r2, [r5, #0x0]
- ldr r1, [r1, #0x0]
- strh r1, [r5, #0x0]
- bl StartFlashTimer
- ldr r4, _020DC5A0 ; =0x021D6B10
- ldrh r0, [r4, #0x0]
- cmp r0, #0x0
- bne _020DC4FC
-_020DC4EC:
- bl CheckFlashTimer
- ldrh r0, [r4, #0x0]
- cmp r0, #0x0
- beq _020DC4EC
-_020DC4FC:
- ldr r0, _020DC5A4 ; =0x0A000001
- bl CTRDGi_ReadSrFunc
- mov r4, r0, lsl #0x18
- mov r0, #0xa000000
- bl CTRDGi_ReadSrFunc
- ldr ip, _020DC590 ; =0x04000208
- orr r4, r0, r4, lsr #0x10
- ldrh r2, [r12, #0x0]
- mov r0, #0x0
- ldr r1, _020DC594 ; =0x021D6B38
- strh r0, [r12, #0x0]
- ldr r5, _020DC598 ; =0x0A005555
- str r2, [r1, #0x0]
- mov r3, #0xaa
- ldr r2, _020DC59C ; =0x0A002AAA
- strb r3, [r5, #0x0]
- mov r3, #0x55
- strb r3, [r2, #0x0]
- mov r2, #0xf0
- strb r2, [r5, #0x0]
- strb r2, [r5, #0x0]
- ldrh r2, [r12, #0x0]
- ldr r1, [r1, #0x0]
- strh r1, [r12, #0x0]
- bl StartFlashTimer
- ldr r5, _020DC5A0 ; =0x021D6B10
- ldrh r0, [r5, #0x0]
- cmp r0, #0x0
- bne _020DC580
-_020DC570:
- bl CheckFlashTimer
- ldrh r0, [r5, #0x0]
- cmp r0, #0x0
- beq _020DC570
-_020DC580:
- mov r0, r4
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,lr}
- bx lr
- .balign 4
-_020DC590: .word 0x04000208
-_020DC594: .word 0x021D6B38
-_020DC598: .word 0x0A005555
-_020DC59C: .word 0x0A002AAA
-_020DC5A0: .word 0x021D6B10
-_020DC5A4: .word 0x0A000001
-
- arm_func_start CTRDGi_SetFlashBankMx
-CTRDGi_SetFlashBankMx: ; 0x020DC5A8
- ldr r3, _020DC5D4 ; =0x0A005555
- mov r2, #0xaa
- ldr r1, _020DC5D8 ; =0x0A002AAA
- strb r2, [r3, #0x0]
- mov r2, #0x55
- strb r2, [r1, #0x0]
- mov r1, #0xb0
- strb r1, [r3, #0x0]
- mov r1, #0xa000000
- strb r0, [r1, #0x0]
- bx lr
- .balign 4
-_020DC5D4: .word 0x0A005555
-_020DC5D8: .word 0x0A002AAA
-
- arm_func_start CTRDGi_WriteFlashSectorAsyncAT
-CTRDGi_WriteFlashSectorAsyncAT: ; 0x020DC5DC
- stmdb sp!, {lr}
- sub sp, sp, #0x24
- str r1, [sp, #0xc]
- strh r0, [sp, #0x20]
- ldr r1, _020DC604 ; =CTRDGi_WriteFlashSectorCoreAT
- add r0, sp, #0x0
- bl CTRDGi_SetTask
- add sp, sp, #0x24
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020DC604: .word CTRDGi_WriteFlashSectorCoreAT
-
- arm_func_start CTRDGi_EraseFlashSectorAsyncAT
-CTRDGi_EraseFlashSectorAsyncAT: ; 0x020DC608
- stmdb sp!, {lr}
- sub sp, sp, #0x24
- mov r2, r1
- strh r0, [sp, #0x20]
- ldr r1, _020DC630 ; =CTRDGi_EraseFlashSectorCoreAT
- add r0, sp, #0x0
- bl CTRDGi_SetTask
- add sp, sp, #0x24
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020DC630: .word CTRDGi_EraseFlashSectorCoreAT
-
- arm_func_start CTRDGi_WriteFlashSectorAT
-CTRDGi_WriteFlashSectorAT: ; 0x020DC634
- stmdb sp!, {lr}
- sub sp, sp, #0x24
- strh r0, [sp, #0x20]
- add r0, sp, #0x0
- str r1, [sp, #0xc]
- bl CTRDGi_WriteFlashSectorCoreAT
- mov r0, r0, lsl #0x10
- mov r0, r0, lsr #0x10
- add sp, sp, #0x24
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start CTRDGi_EraseFlashSectorAT
-CTRDGi_EraseFlashSectorAT:
- stmdb sp!, {lr}
- sub sp, sp, #0x24
- strh r0, [sp, #0x20]
- add r0, sp, #0x0
- bl CTRDGi_EraseFlashSectorCoreAT
- mov r0, r0, lsl #0x10
- mov r0, r0, lsr #0x10
- add sp, sp, #0x24
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start CTRDGi_WriteFlash4KBAsyncAT
-CTRDGi_WriteFlash4KBAsyncAT: ; 0x020DC688
- stmdb sp!, {lr}
- sub sp, sp, #0x24
- str r1, [sp, #0xc]
- strh r0, [sp, #0x20]
- ldr r1, _020DC6B0 ; =CTRDGi_WriteFlash4KBCoreAT
- add r0, sp, #0x0
- bl CTRDGi_SetTask
- add sp, sp, #0x24
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020DC6B0: .word CTRDGi_WriteFlash4KBCoreAT
-
- arm_func_start CTRDGi_EraseFlash4KBAsyncAT
-CTRDGi_EraseFlash4KBAsyncAT: ; 0x020DC6B4
- stmdb sp!, {lr}
- sub sp, sp, #0x24
- mov r2, r1
- strh r0, [sp, #0x20]
- ldr r1, _020DC6DC ; =CTRDGi_EraseFlash4KBCoreAT
- add r0, sp, #0x0
- bl CTRDGi_SetTask
- add sp, sp, #0x24
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020DC6DC: .word CTRDGi_EraseFlash4KBCoreAT
-
- arm_func_start CTRDGi_EraseFlashChipAsyncAT
-CTRDGi_EraseFlashChipAsyncAT: ; 0x020DC6E0
- stmdb sp!, {lr}
- sub sp, sp, #0x24
- ldr r1, _020DC704 ; =CTRDGi_EraseFlashChipCoreAT
- mov r2, r0
- add r0, sp, #0x0
- bl CTRDGi_SetTask
- add sp, sp, #0x24
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020DC704: .word CTRDGi_EraseFlashChipCoreAT
-
- arm_func_start CTRDGi_WriteFlash4KBAT
-CTRDGi_WriteFlash4KBAT: ; 0x020DC708
- stmdb sp!, {lr}
- sub sp, sp, #0x24
- strh r0, [sp, #0x20]
- add r0, sp, #0x0
- str r1, [sp, #0xc]
- bl CTRDGi_WriteFlash4KBCoreAT
- mov r0, r0, lsl #0x10
- mov r0, r0, lsr #0x10
- add sp, sp, #0x24
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start CTRDGi_EraseFlash4KBAT
-CTRDGi_EraseFlash4KBAT: ; 0x020DC734
- stmdb sp!, {lr}
- sub sp, sp, #0x24
- strh r0, [sp, #0x20]
- add r0, sp, #0x0
- bl CTRDGi_EraseFlash4KBCoreAT
- mov r0, r0, lsl #0x10
- mov r0, r0, lsr #0x10
- add sp, sp, #0x24
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start CTRDGi_EraseFlashChipAT
-CTRDGi_EraseFlashChipAT: ; 0x020DC75C
- stmdb sp!, {lr}
- sub sp, sp, #0x24
- add r0, sp, #0x0
- bl CTRDGi_EraseFlashChipCoreAT
- mov r0, r0, lsl #0x10
- mov r0, r0, lsr #0x10
- add sp, sp, #0x24
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start CTRDGi_WriteFlash4KBCoreAT
-CTRDGi_WriteFlash4KBCoreAT: ; 0x020DC780
- stmdb sp!, {r4-r9,lr}
- sub sp, sp, #0x24
- mov r5, r0
- ldmia r5!, {r0-r3}
- add r4, sp, #0x0
- stmia r4!, {r0-r3}
- ldmia r5!, {r0-r3}
- stmia r4!, {r0-r3}
- ldr r0, [r5, #0x0]
- str r0, [r4, #0x0]
- ldrh r0, [sp, #0x20]
- ldr r7, [sp, #0xc]
- cmp r0, #0x10
- addcs sp, sp, #0x24
- ldrhs r0, _020DC85C ; =0x000080FF
- ldmcsia sp!, {r4-r9,lr}
- bxcs lr
- ldr r1, _020DC860 ; =0x0210400C
- mov r0, r0, lsl #0x15
- ldr r1, [r1, #0x24]
- ldr r4, _020DC864 ; =0x021D6B08
- mov r8, r0, lsr #0x10
- strh r1, [r4, #0x0]
- ldrh r0, [r4, #0x0]
- cmp r0, #0x0
- beq _020DC84C
- ldr r0, _020DC868 ; =0x02104048
- ldr r6, [r0, #0x24]
- mov r5, #0x2
-_020DC7F4:
- mov r9, r5
-_020DC7F8:
- mov r0, r8
- mov r1, r7
- bl CTRDGi_WriteFlashSectorAT
- movs r12, r0
- beq _020DC81C
- sub r0, r9, #0x1
- mov r0, r0, lsl #0x10
- movs r9, r0, lsr #0x10
- bne _020DC7F8
-_020DC81C:
- cmp r12, #0x0
- bne _020DC84C
- ldrh r1, [r4, #0x0]
- add r0, r8, #0x1
- mov r0, r0, lsl #0x10
- sub r1, r1, r6
- strh r1, [r4, #0x0]
- ldrh r1, [r4, #0x0]
- add r7, r7, r6
- mov r8, r0, lsr #0x10
- cmp r1, #0x0
- bne _020DC7F4
-_020DC84C:
- mov r0, r12
- add sp, sp, #0x24
- ldmia sp!, {r4-r9,lr}
- bx lr
- .balign 4
-_020DC85C: .word 0x000080FF
-_020DC860: .word 0x0210400C
-_020DC864: .word 0x021D6B08
-_020DC868: .word 0x02104048
-
- arm_func_start CTRDGi_WriteFlashSectorCoreAT
-CTRDGi_WriteFlashSectorCoreAT: ; 0x020DC86C
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x24
- mov r5, r0
- add r4, sp, #0x0
- ldmia r5!, {r0-r3}
- stmia r4!, {r0-r3}
- ldmia r5!, {r0-r3}
- stmia r4!, {r0-r3}
- ldr r0, _020DC984 ; =0x021D6B0C
- ldr r1, [r5, #0x0]
- ldrh r0, [r0, #0x0]
- str r1, [r4, #0x0]
- ldr r4, [sp, #0xc]
- bl OS_LockCartridge
- ldr r5, _020DC988 ; =0x04000204
- ldr r1, _020DC98C ; =0x021D6B20
- ldrh r0, [r5, #0x0]
- ldr r1, [r1, #0x0]
- ldrh r2, [r5, #0x0]
- ldr r3, [r1, #0x10]
- ldr r1, _020DC990 ; =0x02104048
- bic r2, r2, #0x3
- orr r2, r2, r3
- strh r2, [r5, #0x0]
- ldr r5, _020DC994 ; =0x04000208
- ldrh lr, [sp, #0x20]
- ldrh r12, [r1, #0x28]
- ldrh r2, [r5, #0x0]
- mov r3, #0x0
- mov lr, lr, lsl r12
- strh r3, [r5, #0x0]
- ldr ip, _020DC998 ; =0x0A005555
- mov r5, #0xaa
- strb r5, [r12, #0x0]
- ldr r3, _020DC99C ; =0x0A002AAA
- mov r5, #0x55
- strb r5, [r3, #0x0]
- mov r3, #0xa0
- strb r3, [r12, #0x0]
- ldr r3, [r1, #0x24]
- and r5, r0, #0x3
- cmp r3, #0x0
- add r1, lr, #0xa000000
- beq _020DC92C
-_020DC91C:
- ldrb r0, [r4], #0x1
- subs r3, r3, #0x1
- strb r0, [r1], #0x1
- bne _020DC91C
-_020DC92C:
- ldr ip, _020DC994 ; =0x04000208
- ldr r3, _020DC9A0 ; =0x021D6B24
- ldrh r0, [r12, #0x0]
- sub r1, r1, #0x1
- mov r0, #0x1
- strh r2, [r12, #0x0]
- ldrb r2, [r4, #-0x1]
- ldr r3, [r3, #0x0]
- blx r3
- ldr r3, _020DC988 ; =0x04000204
- ldr r1, _020DC984 ; =0x021D6B0C
- ldrh r2, [r3, #0x0]
- mov r4, r0
- bic r0, r2, #0x3
- orr r0, r0, r5
- strh r0, [r3, #0x0]
- ldrh r0, [r1, #0x0]
- bl OS_UnlockCartridge2
- mov r0, r4
- add sp, sp, #0x24
- ldmia sp!, {r4-r5,lr}
- bx lr
- .balign 4
-_020DC984: .word 0x021D6B0C
-_020DC988: .word 0x04000204
-_020DC98C: .word 0x021D6B20
-_020DC990: .word 0x02104048
-_020DC994: .word 0x04000208
-_020DC998: .word 0x0A005555
-_020DC99C: .word 0x0A002AAA
-_020DC9A0: .word 0x021D6B24
-
- arm_func_start CTRDGi_EraseFlash4KBCoreAT
-CTRDGi_EraseFlash4KBCoreAT: ; 0x020DC9A4
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x24
- mov r5, r0
- ldmia r5!, {r0-r3}
- add r4, sp, #0x0
- stmia r4!, {r0-r3}
- ldmia r5!, {r0-r3}
- stmia r4!, {r0-r3}
- ldr r0, [r5, #0x0]
- str r0, [r4, #0x0]
- ldrh r0, [sp, #0x20]
- cmp r0, #0x10
- addcs sp, sp, #0x24
- ldrhs r0, _020DCA54 ; =0x000080FF
- ldmcsia sp!, {r4-r7,lr}
- bxcs lr
- mov r0, r0, lsl #0x15
- mov r5, r0, lsr #0x10
- mov r6, #0x0
- mov r4, #0x2
- mov r7, r4
- mov r0, r5
- bl CTRDGi_EraseFlashSectorAT
-_020DCA00:
- .byte 0x00, 0x00, 0x50, 0xE3, 0x03, 0x00, 0x00, 0x0A, 0x01, 0x10, 0x47, 0xE2, 0x01, 0x18, 0xA0, 0xE1
- .byte 0x21, 0x78, 0xB0, 0xE1, 0xF7, 0xFF, 0xFF, 0x1A, 0x01, 0x10, 0x85, 0xE2, 0x01, 0x18, 0xA0, 0xE1
- .byte 0x00, 0x00, 0x50, 0xE3, 0x21, 0x58, 0xA0, 0xE1, 0x24, 0xD0, 0x8D, 0x12, 0xF0, 0x40, 0xBD, 0x18
- .byte 0x1E, 0xFF, 0x2F, 0x11, 0x01, 0x10, 0x86, 0xE2, 0x01, 0x18, 0xA0, 0xE1, 0x21, 0x68, 0xA0, 0xE1
- .byte 0x20, 0x00, 0x56, 0xE3, 0xEA, 0xFF, 0xFF, 0x3A, 0x24, 0xD0, 0x8D, 0xE2, 0xF0, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1
-_020DCA54: .word 0x000080FF
-
- arm_func_start CTRDGi_EraseFlashSectorCoreAT
-CTRDGi_EraseFlashSectorCoreAT: ; 0x020DCA58
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x24
- mov r5, r0
- ldmia r5!, {r0-r3}
- add r4, sp, #0x0
- stmia r4!, {r0-r3}
- ldmia r5!, {r0-r3}
- stmia r4!, {r0-r3}
- ldr r0, [r5, #0x0]
- ldr r1, _020DCB80 ; =0x02104048
- str r0, [r4, #0x0]
- ldr r0, _020DCB84 ; =0x021D6B0C
- ldrh r2, [sp, #0x20]
- ldrh r1, [r1, #0x28]
- ldrh r0, [r0, #0x0]
- mov r1, r2, lsl r1
- add r5, r1, #0xa000000
- bl OS_LockCartridge
- ldr r4, _020DCB88 ; =0x04000204
- ldr r1, _020DCB8C ; =0x021D6B20
- ldrh r0, [r4, #0x0]
- ldr r2, [r1, #0x0]
- ldrh r1, [r4, #0x0]
- ldr r2, [r2, #0x10]
- ldr r3, _020DCB90 ; =0x04000208
- bic r1, r1, #0x3
- orr r1, r1, r2
- strh r1, [r4, #0x0]
- ldrh r2, [r3, #0x0]
- mov r1, #0x0
- ldr r4, _020DCB94 ; =0x0A005555
- strh r1, [r3, #0x0]
- mov r3, #0xaa
- strb r3, [r4, #0x0]
- ldr r1, _020DCB98 ; =0x0A002AAA
- mov r3, #0x55
- strb r3, [r1, #0x0]
- mov r3, #0xa0
- strb r3, [r4, #0x0]
- ldr r1, _020DCB80 ; =0x02104048
- and r4, r0, #0x3
- ldr r1, [r1, #0x24]
- cmp r1, #0x0
- beq _020DCB18
- mov r0, #0xff
-_020DCB0C:
- strb r0, [r5], #0x1
- subs r1, r1, #0x1
- bne _020DCB0C
-_020DCB18:
- ldr ip, _020DCB90 ; =0x04000208
- ldr r3, _020DCB9C ; =0x021D6B24
- ldrh r0, [r12, #0x0]
- sub r1, r5, #0x1
- strh r2, [r12, #0x0]
- ldr r3, [r3, #0x0]
- mov r0, #0x1
- mov r2, #0xff
- blx r3
- ldr r2, _020DCB88 ; =0x04000204
- movs r5, r0
- ldrh r1, [r2, #0x0]
- andne r0, r5, #0xff00
- orrne r0, r0, #0x2
- movne r0, r0, lsl #0x10
- bic r1, r1, #0x3
- movne r5, r0, lsr #0x10
- orr r1, r1, r4
- ldr r0, _020DCB84 ; =0x021D6B0C
- strh r1, [r2, #0x0]
- ldrh r0, [r0, #0x0]
- bl OS_UnlockCartridge2
- mov r0, r5
- add sp, sp, #0x24
- ldmia sp!, {r4-r5,lr}
- bx lr
- .balign 4
-_020DCB80: .word 0x02104048
-_020DCB84: .word 0x021D6B0C
-_020DCB88: .word 0x04000204
-_020DCB8C: .word 0x021D6B20
-_020DCB90: .word 0x04000208
-_020DCB94: .word 0x0A005555
-_020DCB98: .word 0x0A002AAA
-_020DCB9C: .word 0x021D6B24
-
- arm_func_start CTRDGi_EraseFlashChipCoreAT
-CTRDGi_EraseFlashChipCoreAT: ; 0x020DCBA0
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- ldr r0, _020DCC7C ; =0x021D6B0C
- ldrh r0, [r0, #0x0]
- bl OS_LockCartridge
- ldr r4, _020DCC80 ; =0x04000204
- ldr r0, _020DCC84 ; =0x021D6B20
- ldrh r3, [r4, #0x0]
- ldr r0, [r0, #0x0]
- ldrh r1, [r4, #0x0]
- ldr r2, [r0, #0x10]
- ldr r0, _020DCC88 ; =0x04000208
- bic r1, r1, #0x3
- orr r1, r1, r2
- strh r1, [r4, #0x0]
- ldrh r4, [r0, #0x0]
- mov r2, #0x0
- ldr r1, _020DCC8C ; =0x021D6B38
- strh r2, [r0, #0x0]
- ldr lr, _020DCC90 ; =0x0A005555
- str r4, [r1, #0x0]
- mov r5, #0xaa
- ldr r4, _020DCC94 ; =0x0A002AAA
- strb r5, [lr, #0x0]
- mov r12, #0x55
- strb r12, [r4, #0x0]
- mov r2, #0x80
- strb r2, [lr, #0x0]
- strb r5, [lr, #0x0]
- strb r12, [r4, #0x0]
- mov r2, #0x10
- strb r2, [lr, #0x0]
- ldrh r2, [r0, #0x0]
- ldr r2, [r1, #0x0]
- ldr r1, _020DCC98 ; =0x021D6B24
- strh r2, [r0, #0x0]
- ldr r4, [r1, #0x0]
- mov r0, #0x3
- mov r1, #0xa000000
- mov r2, #0xff
- and r5, r3, #0x3
- blx r4
- ldr r3, _020DCC80 ; =0x04000204
- ldr r1, _020DCC7C ; =0x021D6B0C
- ldrh r2, [r3, #0x0]
- mov r4, r0
- bic r0, r2, #0x3
- orr r0, r0, r5
- strh r0, [r3, #0x0]
- ldrh r0, [r1, #0x0]
- bl OS_UnlockCartridge2
- mov r0, r4
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,lr}
- bx lr
- .balign 4
-_020DCC7C: .word 0x021D6B0C
-_020DCC80: .word 0x04000204
-_020DCC84: .word 0x021D6B20
-_020DCC88: .word 0x04000208
-_020DCC8C: .word 0x021D6B38
-_020DCC90: .word 0x0A005555
-_020DCC94: .word 0x0A002AAA
-_020DCC98: .word 0x021D6B24
-
- arm_func_start CTRDGi_WriteFlashSectorAsyncLE
-CTRDGi_WriteFlashSectorAsyncLE: ; 0x020DCC9C
- stmdb sp!, {lr}
- sub sp, sp, #0x24
- str r1, [sp, #0xc]
- strh r0, [sp, #0x20]
- ldr r1, _020DCCC4 ; =CTRDGi_WriteFlashSectorCoreLE
- add r0, sp, #0x0
- bl CTRDGi_SetTask
- add sp, sp, #0x24
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020DCCC4: .word CTRDGi_WriteFlashSectorCoreLE
-
- arm_func_start CTRDGi_EraseFlashSectorAsyncLE
-CTRDGi_EraseFlashSectorAsyncLE: ; 0x020DCCC8
- stmdb sp!, {lr}
- sub sp, sp, #0x24
- mov r2, r1
- strh r0, [sp, #0x20]
- ldr r1, _020DCCF0 ; =CTRDGi_EraseFlashSectorCoreLE
- add r0, sp, #0x0
- bl CTRDGi_SetTask
- add sp, sp, #0x24
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020DCCF0: .word CTRDGi_EraseFlashSectorCoreLE
-
- arm_func_start CTRDGi_EraseFlashChipAsyncLE
-CTRDGi_EraseFlashChipAsyncLE: ; 0x020DCCF4
- stmdb sp!, {lr}
- sub sp, sp, #0x24
- ldr r1, _020DCD18 ; =CTRDGi_EraseFlashChipCoreLE
- mov r2, r0
- add r0, sp, #0x0
- bl CTRDGi_SetTask
- add sp, sp, #0x24
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020DCD18: .word CTRDGi_EraseFlashChipCoreLE
-
- arm_func_start CTRDGi_WriteFlashSectorLE
-CTRDGi_WriteFlashSectorLE: ; 0x020DCD1C
- stmdb sp!, {lr}
- sub sp, sp, #0x24
- strh r0, [sp, #0x20]
- add r0, sp, #0x0
- str r1, [sp, #0xc]
- bl CTRDGi_WriteFlashSectorCoreLE
- mov r0, r0, lsl #0x10
- mov r0, r0, lsr #0x10
- add sp, sp, #0x24
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start CTRDGi_EraseFlashSectorLE
-CTRDGi_EraseFlashSectorLE: ; 0x020DCD48
- stmdb sp!, {lr}
- sub sp, sp, #0x24
- strh r0, [sp, #0x20]
- add r0, sp, #0x0
- bl CTRDGi_EraseFlashSectorCoreLE
- mov r0, r0, lsl #0x10
- mov r0, r0, lsr #0x10
- add sp, sp, #0x24
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start CTRDGi_EraseFlashChipLE
-CTRDGi_EraseFlashChipLE: ; 0x020DCD70
- stmdb sp!, {lr}
- sub sp, sp, #0x24
- add r0, sp, #0x0
- bl CTRDGi_EraseFlashChipCoreLE
- mov r0, r0, lsl #0x10
- mov r0, r0, lsr #0x10
- add sp, sp, #0x24
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start CTRDGi_VerifyFlashErase
-CTRDGi_VerifyFlashErase: ; 0x020DCD94
- stmdb sp!, {r4-r6,lr}
- ldr r2, _020DCE14 ; =0x021D6B0C
- mov r4, r0
- ldrh r0, [r2, #0x0]
- mov r5, r1
- bl OS_LockCartridge
- ldr ip, _020DCE18 ; =0x04000204
- ldr r0, _020DCE1C ; =0x021D6B20
- ldrh r3, [r12, #0x0]
- ldr r0, [r0, #0x0]
- ldrh r1, [r12, #0x0]
- ldr r2, [r0, #0x10]
- mov r0, r4
- bic r1, r1, #0x3
- orr r1, r1, r2
- strh r1, [r12, #0x0]
- and r6, r3, #0x3
- mov r4, #0x0
- blx r5
- cmp r0, #0x0
- ldr r2, _020DCE18 ; =0x04000204
- ldr r0, _020DCE14 ; =0x021D6B0C
- ldrh r1, [r2, #0x0]
- ldrne r4, _020DCE20 ; =0x00008004
- bic r1, r1, #0x3
- orr r1, r1, r6
- strh r1, [r2, #0x0]
- ldrh r0, [r0, #0x0]
- bl OS_UnlockCartridge2
- mov r0, r4
- ldmia sp!, {r4-r6,lr}
- bx lr
- .balign 4
-_020DCE14: .word 0x021D6B0C
-_020DCE18: .word 0x04000204
-_020DCE1C: .word 0x021D6B20
-_020DCE20: .word 0x00008004
-
- arm_func_start CTRDGi_VerifyFlashCoreFF
-CTRDGi_VerifyFlashCoreFF: ; 0x020DCE24
- ldr r1, _020DCE54 ; =0x021D6B20
- ldr r1, [r1, #0x0]
- ldr r2, [r1, #0x4]
- cmp r2, #0x0
- beq _020DCE4C
-_020DCE38:
- ldrb r1, [r0], #0x1
- cmp r1, #0xff
- bne _020DCE4C
- subs r2, r2, #0x1
- bne _020DCE38
-_020DCE4C:
- mov r0, r2
- bx lr
- .balign 4
-_020DCE54: .word 0x021D6B20
-
- arm_func_start CTRDGi_WriteFlashSectorCoreLE
-CTRDGi_WriteFlashSectorCoreLE: ; 0x020DCE58
- stmdb sp!, {r4-r9,lr}
- sub sp, sp, #0x24
- mov r5, r0
- ldmia r5!, {r0-r3}
- add r4, sp, #0x0
- stmia r4!, {r0-r3}
- ldmia r5!, {r0-r3}
- stmia r4!, {r0-r3}
- ldr r0, [r5, #0x0]
- str r0, [r4, #0x0]
- ldrh r7, [sp, #0x20]
- ldr r6, [sp, #0xc]
- cmp r7, #0x10
- addcs sp, sp, #0x24
- ldrhs r0, _020DD018 ; =0x000080FF
- ldmcsia sp!, {r4-r9,lr}
- bxcs lr
- ldr r0, _020DD01C ; =0x021D6B20
- mov r9, #0x0
- ldr r0, [r0, #0x0]
- ldrh r0, [r0, #0x8]
- mov r0, r7, lsl r0
- add r4, r0, #0xa000000
- ldr r5, _020DD020 ; =CTRDGi_VerifyFlashCoreFF
-_020DCEB8:
- mov r0, r7
- bl CTRDGi_EraseFlashSectorLE
- movs r8, r0
- bne _020DCEE0
- mov r0, r4
- mov r1, r5
- bl CTRDGi_VerifyFlashErase
- mov r0, r0, lsl #0x10
- movs r8, r0, lsr #0x10
- beq _020DCF04
-_020DCEE0:
- add r0, r9, #0x1
- mov r0, r0, lsl #0x10
- cmp r9, #0x50
- mov r9, r0, lsr #0x10
- bne _020DCEB8
- add sp, sp, #0x24
- mov r0, r8
- ldmia sp!, {r4-r9,lr}
- bx lr
-_020DCF04:
- mov r5, #0x1
- cmp r9, #0x0
- movne r5, #0x6
- cmp r5, #0x1
- mov r9, #0x1
- blo _020DCF38
-_020DCF1C:
- mov r0, r7
- bl CTRDGi_EraseFlashSectorLE
- add r0, r9, #0x1
- mov r0, r0, lsl #0x10
- mov r9, r0, lsr #0x10
- cmp r9, r5
- bls _020DCF1C
-_020DCF38:
- ldr r0, _020DD024 ; =0x021D6B0C
- ldrh r0, [r0, #0x0]
- bl OS_LockCartridge
- ldr r5, _020DD028 ; =0x04000204
- ldr r1, _020DD01C ; =0x021D6B20
- ldrh r0, [r5, #0x0]
- ldr r3, [r1, #0x0]
- ldrh r2, [r5, #0x0]
- ldr r3, [r3, #0x10]
- ldr r7, _020DD02C ; =0x021D6B08
- bic r2, r2, #0x3
- orr r2, r2, r3
- strh r2, [r5, #0x0]
- ldr r1, [r1, #0x0]
- ldr sb, _020DD030 ; =0x04000208
- ldr r1, [r1, #0x4]
- mov r2, #0x0
- strh r1, [r7, #0x0]
- ldrh r3, [r9, #0x0]
- ldr r1, _020DD034 ; =0x021D6B38
- and r5, r0, #0x3
- strh r2, [r9, #0x0]
- ldrh r0, [r7, #0x0]
- str r3, [r1, #0x0]
- cmp r0, #0x0
- beq _020DCFD4
-_020DCFA0:
- mov r0, r6
- mov r1, r4
- bl CTRDGi_ProgramFlashByteLE
- movs r8, r0
- bne _020DCFD4
- ldrh r0, [r7, #0x0]
- add r6, r6, #0x1
- add r4, r4, #0x1
- sub r0, r0, #0x1
- strh r0, [r7, #0x0]
- ldrh r0, [r7, #0x0]
- cmp r0, #0x0
- bne _020DCFA0
-_020DCFD4:
- ldr r3, _020DD030 ; =0x04000208
- ldr r0, _020DD034 ; =0x021D6B38
- ldrh r1, [r3, #0x0]
- ldr r0, [r0, #0x0]
- ldr r2, _020DD028 ; =0x04000204
- strh r0, [r3, #0x0]
- ldrh r1, [r2, #0x0]
- ldr r0, _020DD024 ; =0x021D6B0C
- bic r1, r1, #0x3
- orr r1, r1, r5
- strh r1, [r2, #0x0]
- ldrh r0, [r0, #0x0]
- bl OS_UnlockCartridge2
- mov r0, r8
- add sp, sp, #0x24
- ldmia sp!, {r4-r9,lr}
- bx lr
- .balign 4
-_020DD018: .word 0x000080FF
-_020DD01C: .word 0x021D6B20
-_020DD020: .word CTRDGi_VerifyFlashCoreFF
-_020DD024: .word 0x021D6B0C
-_020DD028: .word 0x04000204
-_020DD02C: .word 0x021D6B08
-_020DD030: .word 0x04000208
-_020DD034: .word 0x021D6B38
-
- arm_func_start CTRDGi_ProgramFlashByteLE
-CTRDGi_ProgramFlashByteLE: ; 0x020DD038
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr ip, _020DD08C ; =0x0A005555
- mov r3, #0xaa
- ldr r2, _020DD090 ; =0x0A002AAA
- strb r3, [r12, #0x0]
- mov r3, #0x55
- mov lr, r0
- strb r3, [r2, #0x0]
- mov r0, #0xa0
- strb r0, [r12, #0x0]
- ldrb r2, [lr, #0x0]
- ldr r3, _020DD094 ; =0x021D6B24
- mov r0, #0x1
- strb r2, [r1, #0x0]
- ldrb r2, [lr, #0x0]
- ldr r3, [r3, #0x0]
- blx r3
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020DD08C: .word 0x0A005555
-_020DD090: .word 0x0A002AAA
-_020DD094: .word 0x021D6B24
-
- arm_func_start CTRDGi_EraseFlashSectorCoreLE
-CTRDGi_EraseFlashSectorCoreLE: ; 0x020DD098
- stmdb sp!, {r4-r6,lr}
- sub sp, sp, #0x28
- mov r5, r0
- ldmia r5!, {r0-r3}
- add r4, sp, #0x0
- stmia r4!, {r0-r3}
- ldmia r5!, {r0-r3}
- stmia r4!, {r0-r3}
- ldr r0, [r5, #0x0]
- str r0, [r4, #0x0]
- ldrh r4, [sp, #0x20]
- cmp r4, #0x10
- addcs sp, sp, #0x28
- ldrhs r0, _020DD1B8 ; =0x000080FF
- ldmcsia sp!, {r4-r6,lr}
- bxcs lr
- ldr r0, _020DD1BC ; =0x021D6B0C
- ldrh r0, [r0, #0x0]
- bl OS_LockCartridge
- ldr r6, _020DD1C0 ; =0x04000204
- ldr r1, _020DD1C4 ; =0x021D6B20
- ldrh r3, [r6, #0x0]
- ldr r0, [r1, #0x0]
- ldrh r2, [r6, #0x0]
- ldr r5, [r0, #0x10]
- ldr r0, _020DD1C8 ; =0x04000208
- bic r2, r2, #0x3
- orr r2, r2, r5
- strh r2, [r6, #0x0]
- ldr r1, [r1, #0x0]
- ldrh r5, [r0, #0x0]
- ldrh r12, [r1, #0x8]
- mov r1, #0x0
- ldr r2, _020DD1CC ; =0x021D6B38
- strh r1, [r0, #0x0]
- mov r6, r4, lsl r12
- ldr lr, _020DD1D0 ; =0x0A005555
- str r5, [r2, #0x0]
- mov r5, #0xaa
- ldr r4, _020DD1D4 ; =0x0A002AAA
- strb r5, [lr, #0x0]
- mov r12, #0x55
- strb r12, [r4, #0x0]
- mov r1, #0x80
- strb r1, [lr, #0x0]
- strb r5, [lr, #0x0]
- strb r12, [r4, #0x0]
- add r1, r6, #0xa000000
- mov r4, #0x30
- strb r4, [r1, #0x0]
- ldrh r4, [r0, #0x0]
- ldr r4, [r2, #0x0]
- ldr r2, _020DD1D8 ; =0x021D6B24
- strh r4, [r0, #0x0]
- ldr r4, [r2, #0x0]
- mov r0, #0x2
- mov r2, #0xff
- and r5, r3, #0x3
- blx r4
- ldr r3, _020DD1C0 ; =0x04000204
- ldr r1, _020DD1BC ; =0x021D6B0C
- ldrh r2, [r3, #0x0]
- mov r4, r0
- bic r0, r2, #0x3
- orr r0, r0, r5
- strh r0, [r3, #0x0]
- ldrh r0, [r1, #0x0]
- bl OS_UnlockCartridge2
- mov r0, r4
- add sp, sp, #0x28
- ldmia sp!, {r4-r6,lr}
- bx lr
- .balign 4
-_020DD1B8: .word 0x000080FF
-_020DD1BC: .word 0x021D6B0C
-_020DD1C0: .word 0x04000204
-_020DD1C4: .word 0x021D6B20
-_020DD1C8: .word 0x04000208
-_020DD1CC: .word 0x021D6B38
-_020DD1D0: .word 0x0A005555
-_020DD1D4: .word 0x0A002AAA
-_020DD1D8: .word 0x021D6B24
-
- arm_func_start CTRDGi_EraseFlashChipCoreLE
-CTRDGi_EraseFlashChipCoreLE: ; 0x020DD1DC
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- ldr r0, _020DD2B8 ; =0x021D6B0C
- ldrh r0, [r0, #0x0]
- bl OS_LockCartridge
- ldr r4, _020DD2BC ; =0x04000204
- ldr r0, _020DD2C0 ; =0x021D6B20
- ldrh r3, [r4, #0x0]
- ldr r0, [r0, #0x0]
- ldrh r1, [r4, #0x0]
- ldr r2, [r0, #0x10]
- ldr r0, _020DD2C4 ; =0x04000208
- bic r1, r1, #0x3
- orr r1, r1, r2
- strh r1, [r4, #0x0]
- ldrh r4, [r0, #0x0]
- mov r2, #0x0
- ldr r1, _020DD2C8 ; =0x021D6B38
- strh r2, [r0, #0x0]
- ldr lr, _020DD2CC ; =0x0A005555
- str r4, [r1, #0x0]
- mov r5, #0xaa
- ldr r4, _020DD2D0 ; =0x0A002AAA
- strb r5, [lr, #0x0]
- mov r12, #0x55
- strb r12, [r4, #0x0]
- mov r2, #0x80
- strb r2, [lr, #0x0]
- strb r5, [lr, #0x0]
- strb r12, [r4, #0x0]
- mov r2, #0x10
- strb r2, [lr, #0x0]
- ldrh r2, [r0, #0x0]
- ldr r2, [r1, #0x0]
- ldr r1, _020DD2D4 ; =0x021D6B24
- strh r2, [r0, #0x0]
- ldr r4, [r1, #0x0]
- mov r0, #0x3
- mov r1, #0xa000000
- mov r2, #0xff
- and r5, r3, #0x3
- blx r4
- ldr r3, _020DD2BC ; =0x04000204
- ldr r1, _020DD2B8 ; =0x021D6B0C
- ldrh r2, [r3, #0x0]
- mov r4, r0
- bic r0, r2, #0x3
- orr r0, r0, r5
- strh r0, [r3, #0x0]
- ldrh r0, [r1, #0x0]
- bl OS_UnlockCartridge2
- mov r0, r4
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,lr}
- bx lr
- .balign 4
-_020DD2B8: .word 0x021D6B0C
-_020DD2BC: .word 0x04000204
-_020DD2C0: .word 0x021D6B20
-_020DD2C4: .word 0x04000208
-_020DD2C8: .word 0x021D6B38
-_020DD2CC: .word 0x0A005555
-_020DD2D0: .word 0x0A002AAA
-_020DD2D4: .word 0x021D6B24
-
- arm_func_start CTRDGi_WriteFlashSectorAsyncMX
-CTRDGi_WriteFlashSectorAsyncMX: ; 0x020DD2D8
- stmdb sp!, {lr}
- sub sp, sp, #0x24
- str r1, [sp, #0xc]
- strh r0, [sp, #0x20]
- ldr r1, _020DD300 ; =CTRDGi_WriteFlashSectorCoreMX
- add r0, sp, #0x0
- bl CTRDGi_SetTask
- add sp, sp, #0x24
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020DD300: .word CTRDGi_WriteFlashSectorCoreMX
-
- arm_func_start CTRDGi_EraseFlashSectorAsyncMX
-CTRDGi_EraseFlashSectorAsyncMX: ; 0x020DD304
- stmdb sp!, {lr}
- sub sp, sp, #0x24
- mov r2, r1
- strh r0, [sp, #0x20]
- ldr r1, _020DD32C ; =CTRDGi_EraseFlashSectorCoreMX
- add r0, sp, #0x0
- bl CTRDGi_SetTask
- add sp, sp, #0x24
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020DD32C: .word CTRDGi_EraseFlashSectorCoreMX
-
- arm_func_start CTRDGi_EraseFlashChipAsyncMX
-CTRDGi_EraseFlashChipAsyncMX: ; 0x020DD330
- stmdb sp!, {lr}
- sub sp, sp, #0x24
- ldr r1, _020DD354 ; =CTRDGi_EraseFlashChipCoreMX
- mov r2, r0
- add r0, sp, #0x0
- bl CTRDGi_SetTask
- add sp, sp, #0x24
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020DD354: .word CTRDGi_EraseFlashChipCoreMX
-
- arm_func_start CTRDGi_WriteFlashSectorMX
-CTRDGi_WriteFlashSectorMX: ; 0x020DD358
- stmdb sp!, {lr}
- sub sp, sp, #0x24
- strh r0, [sp, #0x20]
- add r0, sp, #0x0
- str r1, [sp, #0xc]
- bl CTRDGi_WriteFlashSectorCoreMX
- mov r0, r0, lsl #0x10
- mov r0, r0, lsr #0x10
- add sp, sp, #0x24
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start CTRDGi_EraseFlashSectorMX
-CTRDGi_EraseFlashSectorMX: ; 0x020DD384
- stmdb sp!, {lr}
- sub sp, sp, #0x24
- strh r0, [sp, #0x20]
- add r0, sp, #0x0
- bl CTRDGi_EraseFlashSectorCoreMX
- mov r0, r0, lsl #0x10
- mov r0, r0, lsr #0x10
- add sp, sp, #0x24
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start CTRDGi_EraseFlashChipMX
-CTRDGi_EraseFlashChipMX: ; 0x020DD3AC
- stmdb sp!, {lr}
- sub sp, sp, #0x24
- add r0, sp, #0x0
- bl CTRDGi_EraseFlashChipCoreMX
- mov r0, r0, lsl #0x10
- mov r0, r0, lsr #0x10
- add sp, sp, #0x24
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start CTRDGi_WriteFlashSectorCoreMX
-CTRDGi_WriteFlashSectorCoreMX: ; 0x020DD3D0
- stmdb sp!, {r4-r8,lr}
- sub sp, sp, #0x28
- mov r5, r0
- ldmia r5!, {r0-r3}
- add r4, sp, #0x0
- stmia r4!, {r0-r3}
- ldmia r5!, {r0-r3}
- stmia r4!, {r0-r3}
- ldr r0, _020DD540 ; =0x021D6B20
- ldr r1, [r5, #0x0]
- ldr r0, [r0, #0x0]
- str r1, [r4, #0x0]
- ldrh r5, [sp, #0x20]
- ldrh r0, [r0, #0xa]
- ldr r4, [sp, #0xc]
- cmp r5, r0
- addcs sp, sp, #0x28
- ldrhs r0, _020DD544 ; =0x000080FF
- ldmcsia sp!, {r4-r8,lr}
- bxcs lr
- mov r0, r5
- bl CTRDGi_EraseFlashSectorMX
- movs r6, r0
- addne sp, sp, #0x28
- ldmneia sp!, {r4-r8,lr}
- bxne lr
- ldr r0, _020DD548 ; =0x021D6B0C
- ldrh r0, [r0, #0x0]
- bl OS_LockCartridge
- ldr r7, _020DD54C ; =0x04000204
- ldr r0, _020DD540 ; =0x021D6B20
- ldrh r3, [r7, #0x0]
- ldr r2, [r0, #0x0]
- ldrh r1, [r7, #0x0]
- mov r0, r5, lsl #0xc
- ldr r2, [r2, #0x10]
- bic r1, r1, #0x3
- orr r1, r1, r2
- mov r0, r0, lsr #0x10
- strh r1, [r7, #0x0]
- and r7, r3, #0x3
- bl CTRDGi_SetFlashBankMx
- ldr r0, _020DD540 ; =0x021D6B20
- and r1, r5, #0xf
- ldr r3, [r0, #0x0]
- mov r0, r1, lsl #0x10
- ldr r2, [r3, #0x4]
- ldr r8, _020DD550 ; =0x021D6B08
- ldr r1, _020DD554 ; =0x04000208
- strh r2, [r8, #0x0]
- ldrh r3, [r3, #0x8]
- mov r5, r0, lsr #0x10
- ldrh r2, [r1, #0x0]
- mov r0, #0x0
- mov r3, r5, lsl r3
- strh r0, [r1, #0x0]
- ldrh r1, [r8, #0x0]
- ldr r0, _020DD558 ; =0x021D6B38
- add r5, r3, #0xa000000
- str r2, [r0, #0x0]
- cmp r1, #0x0
- beq _020DD4FC
-_020DD4C8:
- mov r0, r4
- mov r1, r5
- bl CTRDGi_ProgramFlashByteMX
- movs r6, r0
- bne _020DD4FC
- ldrh r0, [r8, #0x0]
- add r4, r4, #0x1
- add r5, r5, #0x1
- sub r0, r0, #0x1
- strh r0, [r8, #0x0]
- ldrh r0, [r8, #0x0]
- cmp r0, #0x0
- bne _020DD4C8
-_020DD4FC:
- ldr r3, _020DD554 ; =0x04000208
- ldr r0, _020DD558 ; =0x021D6B38
- ldrh r1, [r3, #0x0]
- ldr r0, [r0, #0x0]
- ldr r2, _020DD54C ; =0x04000204
- strh r0, [r3, #0x0]
- ldrh r1, [r2, #0x0]
- ldr r0, _020DD548 ; =0x021D6B0C
- bic r1, r1, #0x3
- orr r1, r1, r7
- strh r1, [r2, #0x0]
- ldrh r0, [r0, #0x0]
- bl OS_UnlockCartridge2
- mov r0, r6
- add sp, sp, #0x28
- ldmia sp!, {r4-r8,lr}
- bx lr
- .balign 4
-_020DD540: .word 0x021D6B20
-_020DD544: .word 0x000080FF
-_020DD548: .word 0x021D6B0C
-_020DD54C: .word 0x04000204
-_020DD550: .word 0x021D6B08
-_020DD554: .word 0x04000208
-_020DD558: .word 0x021D6B38
-
- arm_func_start CTRDGi_ProgramFlashByteMX
-CTRDGi_ProgramFlashByteMX: ; 0x020DD55C
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr ip, _020DD5B0 ; =0x0A005555
- mov r3, #0xaa
- ldr r2, _020DD5B4 ; =0x0A002AAA
- strb r3, [r12, #0x0]
- mov r3, #0x55
- mov lr, r0
- strb r3, [r2, #0x0]
- mov r0, #0xa0
- strb r0, [r12, #0x0]
- ldrb r2, [lr, #0x0]
- ldr r3, _020DD5B8 ; =0x021D6B24
- mov r0, #0x1
- strb r2, [r1, #0x0]
- ldrb r2, [lr, #0x0]
- ldr r3, [r3, #0x0]
- blx r3
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020DD5B0: .word 0x0A005555
-_020DD5B4: .word 0x0A002AAA
-_020DD5B8: .word 0x021D6B24
-
- arm_func_start CTRDGi_EraseFlashSectorCoreMX
-CTRDGi_EraseFlashSectorCoreMX: ; 0x020DD5BC
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x34
- mov r5, r0
- ldmia r5!, {r0-r3}
- add r4, sp, #0x10
- stmia r4!, {r0-r3}
- ldmia r5!, {r0-r3}
- stmia r4!, {r0-r3}
- ldr r0, _020DD748 ; =0x021D6B20
- ldr r1, [r5, #0x0]
- ldr r0, [r0, #0x0]
- str r1, [r4, #0x0]
- ldrh r4, [sp, #0x30]
- ldrh r0, [r0, #0xa]
- cmp r4, r0
- addcs sp, sp, #0x34
- ldrhs r0, _020DD74C ; =0x000080FF
- ldmcsia sp!, {r4-r11,lr}
- bxcs lr
- ldr r0, _020DD750 ; =0x021D6B0C
- ldrh r0, [r0, #0x0]
- bl OS_LockCartridge
- ldr r5, _020DD754 ; =0x04000204
- ldr r0, _020DD748 ; =0x021D6B20
- ldrh r3, [r5, #0x0]
- ldr r2, [r0, #0x0]
- ldrh r1, [r5, #0x0]
- mov r0, r4, lsl #0xc
- ldr r2, [r2, #0x10]
- bic r1, r1, #0x3
- orr r1, r1, r2
- strh r1, [r5, #0x0]
- and r1, r3, #0x3
- mov r0, r0, lsr #0x10
- str r1, [sp, #0x0]
- bl CTRDGi_SetFlashBankMx
- and r0, r4, #0xf
- mov r0, r0, lsl #0x10
- mov r9, r0, lsr #0x10
- mov r0, #0x2
- mov r10, #0x0
- str r0, [sp, #0x8]
- mov r0, #0xff
- ldr r8, _020DD758 ; =0x04000208
- mov r11, r10
- mov r7, #0xaa
- mov r6, #0x55
- mov r5, #0x80
- mov r4, #0x30
- str r0, [sp, #0xc]
-_020DD684:
- ldr r0, _020DD748 ; =0x021D6B20
- ldrh r12, [r8, #0x0]
- ldr r0, [r0, #0x0]
- ldr r3, _020DD75C ; =0x021D6B38
- ldrh r1, [r0, #0x8]
- ldr r0, [sp, #0x8]
- ldr r2, [sp, #0xc]
- strh r11, [r8, #0x0]
- str r12, [r3, #0x0]
- ldr r3, _020DD760 ; =0x0A005555
- mov r1, r9, lsl r1
- strb r7, [r3, #0x0]
- ldr r3, _020DD764 ; =0x0A002AAA
- add r1, r1, #0xa000000
- strb r6, [r3, #0x0]
- ldr r3, _020DD760 ; =0x0A005555
- strb r5, [r3, #0x0]
- strb r7, [r3, #0x0]
- ldr r3, _020DD764 ; =0x0A002AAA
- strb r6, [r3, #0x0]
- strb r4, [r1, #0x0]
- ldrh r3, [r8, #0x0]
- ldr r3, _020DD75C ; =0x021D6B38
- ldr r3, [r3, #0x0]
- strh r3, [r8, #0x0]
- ldr r3, _020DD768 ; =0x021D6B24
- ldr r3, [r3, #0x0]
- blx r3
- str r0, [sp, #0x4]
- ands r0, r0, #0xa000
- beq _020DD714
- cmp r10, #0x0
- addeq r0, r10, #0x1
- moveq r0, r0, lsl #0x10
- moveq r10, r0, lsr #0x10
- beq _020DD684
-_020DD714:
- ldr r2, _020DD754 ; =0x04000204
- ldr r1, _020DD750 ; =0x021D6B0C
- ldrh r0, [r2, #0x0]
- bic r3, r0, #0x3
- ldr r0, [sp, #0x0]
- orr r0, r3, r0
- strh r0, [r2, #0x0]
- ldrh r0, [r1, #0x0]
- bl OS_UnlockCartridge2
- ldr r0, [sp, #0x4]
- add sp, sp, #0x34
- ldmia sp!, {r4-r11,lr}
- bx lr
- .balign 4
-_020DD748: .word 0x021D6B20
-_020DD74C: .word 0x000080FF
-_020DD750: .word 0x021D6B0C
-_020DD754: .word 0x04000204
-_020DD758: .word 0x04000208
-_020DD75C: .word 0x021D6B38
-_020DD760: .word 0x0A005555
-_020DD764: .word 0x0A002AAA
-_020DD768: .word 0x021D6B24
-
- arm_func_start CTRDGi_EraseFlashChipCoreMX
-CTRDGi_EraseFlashChipCoreMX: ; 0x020DD76C
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- ldr r0, _020DD848 ; =0x021D6B0C
- ldrh r0, [r0, #0x0]
- bl OS_LockCartridge
- ldr r4, _020DD84C ; =0x04000204
- ldr r0, _020DD850 ; =0x021D6B20
- ldrh r3, [r4, #0x0]
- ldr r0, [r0, #0x0]
- ldrh r1, [r4, #0x0]
- ldr r2, [r0, #0x10]
- ldr r0, _020DD854 ; =0x04000208
- bic r1, r1, #0x3
- orr r1, r1, r2
- strh r1, [r4, #0x0]
- ldrh r4, [r0, #0x0]
- mov r2, #0x0
- ldr r1, _020DD858 ; =0x021D6B38
- strh r2, [r0, #0x0]
- ldr lr, _020DD85C ; =0x0A005555
- str r4, [r1, #0x0]
- mov r5, #0xaa
- ldr r4, _020DD860 ; =0x0A002AAA
- strb r5, [lr, #0x0]
- mov r12, #0x55
- strb r12, [r4, #0x0]
- mov r2, #0x80
- strb r2, [lr, #0x0]
- strb r5, [lr, #0x0]
- strb r12, [r4, #0x0]
- mov r2, #0x10
- strb r2, [lr, #0x0]
- ldrh r2, [r0, #0x0]
- ldr r2, [r1, #0x0]
- ldr r1, _020DD864 ; =0x021D6B24
- strh r2, [r0, #0x0]
- ldr r4, [r1, #0x0]
- mov r0, #0x3
- mov r1, #0xa000000
- mov r2, #0xff
- and r5, r3, #0x3
- blx r4
- ldr r3, _020DD84C ; =0x04000204
- ldr r1, _020DD848 ; =0x021D6B0C
- ldrh r2, [r3, #0x0]
- mov r4, r0
- bic r0, r2, #0x3
- orr r0, r0, r5
- strh r0, [r3, #0x0]
- ldrh r0, [r1, #0x0]
- bl OS_UnlockCartridge2
- mov r0, r4
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,lr}
- bx lr
- .balign 4
-_020DD848: .word 0x021D6B0C
-_020DD84C: .word 0x04000204
-_020DD850: .word 0x021D6B20
-_020DD854: .word 0x04000208
-_020DD858: .word 0x021D6B38
-_020DD85C: .word 0x0A005555
-_020DD860: .word 0x0A002AAA
-_020DD864: .word 0x021D6B24
-_020DD868:
- .byte 0x00, 0x40, 0x2D, 0xE9, 0x24, 0xD0, 0x4D, 0xE2
- .byte 0x0C, 0x10, 0x8D, 0xE5, 0xB0, 0x02, 0xCD, 0xE1, 0x10, 0x10, 0x9F, 0xE5, 0x00, 0x00, 0x8D, 0xE2
- .byte 0x5D, 0x00, 0x00, 0xEB, 0x24, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0xC0, 0xD8, 0x0D, 0x02, 0x00, 0x40, 0x2D, 0xE9, 0x24, 0xD0, 0x4D, 0xE2, 0xB0, 0x02, 0xCD, 0xE1
- .byte 0x00, 0x00, 0x8D, 0xE2, 0x0C, 0x10, 0x8D, 0xE5, 0x04, 0x00, 0x00, 0xEB, 0x00, 0x08, 0xA0, 0xE1
- .byte 0x20, 0x08, 0xA0, 0xE1, 0x24, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0xF0, 0x41, 0x2D, 0xE9, 0x28, 0xD0, 0x4D, 0xE2, 0x00, 0x50, 0xA0, 0xE1, 0x0F, 0x00, 0xB5, 0xE8
- .byte 0x00, 0x40, 0x8D, 0xE2, 0x0F, 0x00, 0xA4, 0xE8, 0x0F, 0x00, 0xB5, 0xE8, 0x0F, 0x00, 0xA4, 0xE8
- .byte 0x00, 0x01, 0x9F, 0xE5, 0x00, 0x10, 0x95, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x00, 0x10, 0x84, 0xE5
- .byte 0xB0, 0x52, 0xDD, 0xE1, 0xBA, 0x00, 0xD0, 0xE1, 0x0C, 0x40, 0x9D, 0xE5, 0x00, 0x00, 0x55, 0xE1
- .byte 0x28, 0xD0, 0x8D, 0x22, 0xE0, 0x00, 0x9F, 0x25, 0xF0, 0x41, 0xBD, 0x28, 0x1E, 0xFF, 0x2F, 0x21
- .byte 0x05, 0x00, 0xA0, 0xE1, 0x0B, 0xFD, 0xFF, 0xEB, 0x00, 0x60, 0xB0, 0xE1, 0x28, 0xD0, 0x8D, 0x12
- .byte 0xF0, 0x41, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11, 0xC0, 0x00, 0x9F, 0xE5, 0xB0, 0x00, 0xD0, 0xE1
- .byte 0x34, 0xB2, 0xFF, 0xEB, 0xB8, 0x70, 0x9F, 0xE5, 0xA8, 0x00, 0x9F, 0xE5, 0xB0, 0x30, 0xD7, 0xE1
- .byte 0x00, 0x20, 0x90, 0xE5, 0xB0, 0x10, 0xD7, 0xE1, 0x10, 0x20, 0x92, 0xE5, 0xA4, 0x80, 0x9F, 0xE5
- .byte 0x03, 0x10, 0xC1, 0xE3, 0x02, 0x10, 0x81, 0xE1, 0xB0, 0x10, 0xC7, 0xE1, 0x00, 0x10, 0x90, 0xE5
- .byte 0x03, 0x70, 0x03, 0xE2, 0x04, 0x00, 0x91, 0xE5, 0xB0, 0x00, 0xC8, 0xE1, 0xB8, 0x10, 0xD1, 0xE1
- .byte 0xB0, 0x00, 0xD8, 0xE1, 0x15, 0x11, 0xA0, 0xE1, 0x00, 0x00, 0x50, 0xE3, 0x0A, 0x54, 0x81, 0xE2
- .byte 0x0C, 0x00, 0x00, 0x0A, 0x04, 0x00, 0xA0, 0xE1, 0x05, 0x10, 0xA0, 0xE1, 0xA9, 0xFD, 0xFF, 0xEB
- .byte 0x00, 0x60, 0xB0, 0xE1, 0x07, 0x00, 0x00, 0x1A, 0xB0, 0x00, 0xD8, 0xE1, 0x01, 0x40, 0x84, 0xE2
- .byte 0x01, 0x50, 0x85, 0xE2, 0x01, 0x00, 0x40, 0xE2, 0xB0, 0x00, 0xC8, 0xE1, 0xB0, 0x00, 0xD8, 0xE1
- .byte 0x00, 0x00, 0x50, 0xE3, 0xF2, 0xFF, 0xFF, 0x1A, 0x34, 0x20, 0x9F, 0xE5, 0x2C, 0x00, 0x9F, 0xE5
- .byte 0xB0, 0x10, 0xD2, 0xE1, 0x03, 0x10, 0xC1, 0xE3, 0x07, 0x10, 0x81, 0xE1, 0xB0, 0x10, 0xC2, 0xE1
- .byte 0xB0, 0x00, 0xD0, 0xE1, 0x03, 0xB2, 0xFF, 0xEB, 0x06, 0x00, 0xA0, 0xE1, 0x28, 0xD0, 0x8D, 0xE2
- .byte 0xF0, 0x41, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x20, 0x6B, 0x1D, 0x02, 0xFF, 0x80, 0x00, 0x00
- .byte 0x0C, 0x6B, 0x1D, 0x02, 0x04, 0x02, 0x00, 0x04, 0x08, 0x6B, 0x1D, 0x02
-
- arm_func_start CTRDGi_SetTask
-CTRDGi_SetTask: ; 0x020DD9FC
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- ldr r3, _020DDAA8 ; =0x021D6B50
- mov r7, r0
- mov r4, r1
- mov r6, r2
- ldr r5, [r3, #0x0]
- bl CTRDGi_IsTaskAvailable
-_020DDA1C:
- .byte 0x00, 0x00, 0x50, 0xE3
- .byte 0x00, 0x00, 0x00, 0x1A, 0x89, 0xBF, 0xFF, 0xEB, 0x7C, 0x00, 0x9F, 0xE5, 0x22, 0x00, 0xD0, 0xE5
- .byte 0x00, 0x00, 0x50, 0xE3, 0x00, 0x00, 0x00, 0x0A, 0x84, 0xBF, 0xFF, 0xEB, 0x33, 0xBE, 0xFF, 0xEB
- .byte 0x01, 0x10, 0xA0, 0xE3, 0x22, 0x10, 0xC7, 0xE5, 0x00, 0x40, 0x87, 0xE5, 0xC4, 0x10, 0x85, 0xE2
- .byte 0x01, 0x00, 0x57, 0xE1, 0x00, 0x40, 0xA0, 0xE1, 0x48, 0x00, 0x9F, 0x05, 0x04, 0x60, 0x87, 0xE5
- .byte 0x00, 0x10, 0xA0, 0x03, 0x00, 0x10, 0x80, 0x05, 0x3C, 0xC0, 0x9F, 0xE5, 0x0F, 0x00, 0xB7, 0xE8
- .byte 0x0C, 0x60, 0xA0, 0xE1, 0x0F, 0x00, 0xAC, 0xE8, 0x0F, 0x00, 0xB7, 0xE8, 0x0F, 0x00, 0xAC, 0xE8
- .byte 0x00, 0x10, 0x97, 0xE5, 0x05, 0x00, 0xA0, 0xE1, 0x00, 0x10, 0x8C, 0xE5, 0xC0, 0x60, 0x85, 0xE5
- .byte 0xE6, 0xB5, 0xFF, 0xEB, 0x04, 0x00, 0xA0, 0xE1, 0x21, 0xBE, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
-_020DDAA8: .word 0x021D6B50
-_020DDAAC:
- .byte 0x54, 0x6B, 0x1D, 0x02
-
- arm_func_start CTRDGi_TaskThread
-CTRDGi_TaskThread: ; 0x020DDAB0
- stmdb sp!, {r4-r10,lr}
- sub sp, sp, #0x28
- ldr r6, _020DDB94 ; =0x021D6B54
- ldr r5, _020DDB98 ; =0x021D6B50
- mov r4, r0
- add r9, sp, #0x0
- mov r8, #0x0
- mov r7, #0x24
-_020DDAD0:
- mov r0, r9
- mov r1, r8
- mov r2, r7
- bl MI_CpuFill8
- bl OS_DisableInterrupts
- ldr r1, [r4, #0xc0]
- mov r10, r0
- cmp r1, #0x0
- bne _020DDB08
-_020DDAF4:
- mov r0, r8
- bl OS_SleepThread
- ldr r0, [r4, #0xc0]
- cmp r0, #0x0
- beq _020DDAF4
-_020DDB08:
- ldr lr, [r4, #0xc0]
- add r12, sp, #0x0
- ldmia lr!, {r0-r3}
- stmia r12!, {r0-r3}
- ldmia lr!, {r0-r3}
- stmia r12!, {r0-r3}
- ldr r1, [lr, #0x0]
- mov r0, r10
- str r1, [r12, #0x0]
- bl OS_RestoreInterrupts
- ldr r1, [sp, #0x0]
- cmp r1, #0x0
- beq _020DDB48
- mov r0, r9
- blx r1
- str r0, [sp, #0x8]
-_020DDB48:
- bl OS_DisableInterrupts
- ldr r1, [sp, #0x4]
- mov r10, r0
- strb r8, [r6, #0x22]
- cmp r1, #0x0
- beq _020DDB68
- mov r0, r9
- blx r1
-_020DDB68:
- ldr r0, [r5, #0x0]
- cmp r0, #0x0
- beq _020DDB84
- mov r0, r10
- str r8, [r4, #0xc0]
- bl OS_RestoreInterrupts
- b _020DDAD0
-_020DDB84:
- bl OS_ExitThread
- add sp, sp, #0x28
- ldmia sp!, {r4-r10,lr}
- bx lr
- .balign 4
-_020DDB94: .word 0x021D6B54
-_020DDB98: .word 0x021D6B50
-
- arm_func_start CTRDGi_InitTaskInfo
-CTRDGi_InitTaskInfo:
- ldr ip, _020DDBAC ; =MI_CpuFill8
- mov r1, #0x0
- mov r2, #0x24
- bx r12
- .balign 4
-_020DDBAC: .word MI_CpuFill8
-
- arm_func_start CTRDGi_IsTaskAvailable
-CTRDGi_IsTaskAvailable:
- ldr r0, _020DDBC8 ; =0x021D6B50
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- movne r0, #0x1
- moveq r0, #0x0
- bx lr
- .balign 4
-_020DDBC8: .word 0x021D6B50
-
- arm_func_start CTRDGi_InitTaskThread
-CTRDGi_InitTaskThread: ; 0x020DDBCC
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0xc
- mov r5, r0
- bl OS_DisableInterrupts
- ldr r1, _020DDC4C ; =0x021D6B50
- mov r4, r0
- ldr r0, [r1, #0x0]
- cmp r0, #0x0
- bne _020DDC38
- add r0, r5, #0xc4
- str r5, [r1, #0x0]
- bl CTRDGi_InitTaskInfo
- ldr r0, _020DDC50 ; =0x021D6B54
- bl CTRDGi_InitTaskInfo
-_020DDC04:
- .byte 0x00, 0x00, 0xA0, 0xE3, 0xC0, 0x00, 0x85, 0xE5, 0x01, 0x2B, 0xA0, 0xE3
- .byte 0x3C, 0x10, 0x9F, 0xE5, 0x3C, 0x30, 0x9F, 0xE5, 0x05, 0x00, 0xA0, 0xE1, 0x00, 0x20, 0x8D, 0xE5
- .byte 0x14, 0x20, 0xA0, 0xE3, 0x04, 0x20, 0x8D, 0xE5, 0x05, 0x20, 0xA0, 0xE1, 0x52, 0xB6, 0xFF, 0xEB
- .byte 0x05, 0x00, 0xA0, 0xE1, 0x7D, 0xB5, 0xFF, 0xEB
-_020DDC38:
- mov r0, r4
- bl OS_RestoreInterrupts
- add sp, sp, #0xc
- ldmia sp!, {r4-r5,lr}
- bx lr
- .balign 4
-_020DDC4C: .word 0x021D6B50
-_020DDC50: .word 0x021D6B54
-_020DDC54:
- .byte 0xB0, 0xDA, 0x0D, 0x02, 0x78, 0x6F, 0x1D, 0x02
-
- arm_func_start MATH_CountPopulation
-MATH_CountPopulation: ; 0x020DDC5C
- ldr r1, _020DDC94 ; =0x55555555
- ldr r2, _020DDC98 ; =0x33333333
- and r1, r1, r0, lsr #0x1
- sub r0, r0, r1
- and r1, r0, r2
- and r0, r2, r0, lsr #0x2
- add r1, r1, r0
- ldr r0, _020DDC9C ; =0x0F0F0F0F
- add r1, r1, r1, lsr #0x4
- and r0, r1, r0
- add r0, r0, r0, lsr #0x8
- add r0, r0, r0, lsr #0x10
- and r0, r0, #0xff
- bx lr
- .balign 4
-_020DDC94: .word 0x55555555
-_020DDC98: .word 0x33333333
-_020DDC9C: .word 0x0F0F0F0F
-
- arm_func_start MATH_CalcSHA1
-MATH_CalcSHA1: ; 0x020DDCA0
- stmdb sp!, {r4-r6,lr}
- sub sp, sp, #0x68
- mov r6, r0
- add r0, sp, #0x0
- mov r5, r1
- mov r4, r2
- bl MATH_SHA1Init
-_020DDCBC:
- .byte 0x00, 0x00, 0x8D, 0xE2
- .byte 0x05, 0x10, 0xA0, 0xE1, 0x04, 0x20, 0xA0, 0xE1, 0xCF, 0xD4, 0xFF, 0xEB, 0x00, 0x00, 0x8D, 0xE2
- .byte 0x06, 0x10, 0xA0, 0xE1, 0x4D, 0xD4, 0xFF, 0xEB, 0x68, 0xD0, 0x8D, 0xE2, 0x70, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1
-
- arm_func_start MATH_CalcMD5
-MATH_CalcMD5: ; 0x020DDCE4
- stmdb sp!, {r4-r6,lr}
- sub sp, sp, #0x58
- mov r6, r0
- add r0, sp, #0x0
- mov r5, r1
- mov r4, r2
- bl MATH_MD5Init
-_020DDD00:
- .byte 0x00, 0x00, 0x8D, 0xE2, 0x05, 0x10, 0xA0, 0xE1, 0x04, 0x20, 0xA0, 0xE1, 0xCC, 0xD3, 0xFF, 0xEB
- .byte 0x00, 0x10, 0x8D, 0xE2, 0x06, 0x00, 0xA0, 0xE1, 0x98, 0xD3, 0xFF, 0xEB, 0x58, 0xD0, 0x8D, 0xE2
- .byte 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
-
- arm_func_start MATH_CalcCRC32
-MATH_CalcCRC32: ; 0x020DDD28
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- mov lr, r1
- mvn r12, #0x0
- mov r3, r2
- add r1, sp, #0x0
- mov r2, lr
- str r12, [sp, #0x0]
- bl MATHi_CRC32UpdateRev
-_020DDD4C:
- .byte 0x00, 0x00, 0x9D, 0xE5
- .byte 0x00, 0x00, 0xE0, 0xE1, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
-
- arm_func_start MATH_CalcCRC16CCITT
-MATH_CalcCRC16CCITT: ; 0x020DDD60
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr ip, _020DDD94 ; =0x0000FFFF
- mov lr, r1
- mov r3, r2
- add r1, sp, #0x0
- mov r2, lr
- strh r12, [sp, #0x0]
- bl MATHi_CRC16Update
- ldrh r0, [sp, #0x0]
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020DDD94: .word 0x0000FFFF
-
- arm_func_start MATH_CalcCRC16
-MATH_CalcCRC16: ; 0x020DDD98
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- mov lr, r1
- mov r12, #0x0
- mov r3, r2
- add r1, sp, #0x0
- mov r2, lr
- strh r12, [sp, #0x0]
- bl MATHi_CRC16UpdateRev
- ldrh r0, [sp, #0x0]
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start MATH_CalcCRC8
-MATH_CalcCRC8: ; 0x020DDDCC
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- mov lr, r1
- mov r12, #0x0
- mov r3, r2
- add r1, sp, #0x0
- mov r2, lr
- strb r12, [sp, #0x0]
- bl MATHi_CRC8Update
-_020DDDF0:
- .byte 0x00, 0x00, 0xDD, 0xE5, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
-
- arm_func_start MATHi_CRC32UpdateRev
-MATHi_CRC32UpdateRev:
- stmdb sp!, {r4,lr}
- cmp r3, #0x0
- ldr r4, [r1, #0x0]
- mov lr, #0x0
- bls _020DDE38
-_020DDE14:
- ldrb r12, [r2, #0x0]
- add lr, lr, #0x1
- cmp lr, r3
- eor r12, r4, r12
- and r12, r12, #0xff
- ldr r12, [r0, r12, lsl #0x2]
- add r2, r2, #0x1
- eor r4, r12, r4, lsr #0x8
- blo _020DDE14
-_020DDE38:
- str r4, [r1, #0x0]
- ldmia sp!, {r4,lr}
- bx lr
-
- arm_func_start MATHi_CRC32InitTableRev
-MATHi_CRC32InitTableRev: ; 0x020DDE44
- stmdb sp!, {r4,lr}
- mov lr, #0x0
- mov r3, lr
-_020DDE50:
- mov r4, lr
- mov r12, r3
-_020DDE58:
- ands r2, r4, #0x1
- eorne r4, r1, r4, lsr #0x1
- add r12, r12, #0x1
- moveq r4, r4, lsr #0x1
- cmp r12, #0x8
- blo _020DDE58
- str r4, [r0, lr, lsl #0x2]
- add lr, lr, #0x1
- cmp lr, #0x100
- blo _020DDE50
- ldmia sp!, {r4,lr}
- bx lr
-
- arm_func_start MATHi_CRC16UpdateRev
-MATHi_CRC16UpdateRev: ; 0x020DDE88
- stmdb sp!, {r4,lr}
- cmp r3, #0x0
- ldrh r4, [r1, #0x0]
- mov lr, #0x0
- bls _020DDEC4
-_020DDE9C:
- ldrb r12, [r2, #0x0]
- add lr, lr, #0x1
- cmp lr, r3
- eor r12, r4, r12
- and r12, r12, #0xff
- mov r12, r12, lsl #0x1
- ldrh r12, [r0, r12]
- add r2, r2, #0x1
- eor r4, r12, r4, lsr #0x8
- blo _020DDE9C
-_020DDEC4:
- strh r4, [r1, #0x0]
- ldmia sp!, {r4,lr}
- bx lr
-
- arm_func_start MATHi_CRC16Update
-MATHi_CRC16Update: ; 0x020DDED0
- stmdb sp!, {r4,lr}
- cmp r3, #0x0
- ldrh r4, [r1, #0x0]
- mov lr, #0x0
- bls _020DDF0C
-_020DDEE4:
- ldrb r12, [r2, #0x0]
- add lr, lr, #0x1
- cmp lr, r3
- eor r12, r12, r4, lsr #0x8
- and r12, r12, #0xff
- mov r12, r12, lsl #0x1
- ldrh r12, [r0, r12]
- add r2, r2, #0x1
- eor r4, r12, r4, lsl #0x8
- blo _020DDEE4
-_020DDF0C:
- strh r4, [r1, #0x0]
- ldmia sp!, {r4,lr}
- bx lr
-
- arm_func_start MATHi_CRC16InitTableRev
-MATHi_CRC16InitTableRev: ; 0x020DDF18
- stmdb sp!, {r4,lr}
- mov lr, #0x0
- mov r3, lr
-_020DDF24:
- mov r4, lr
- mov r12, r3
-_020DDF2C:
- ands r2, r4, #0x1
- eorne r4, r1, r4, lsr #0x1
- add r12, r12, #0x1
- moveq r4, r4, lsr #0x1
- cmp r12, #0x8
- blo _020DDF2C
- mov r2, lr, lsl #0x1
- add lr, lr, #0x1
- strh r4, [r0, r2]
- cmp lr, #0x100
- blo _020DDF24
- ldmia sp!, {r4,lr}
- bx lr
-
- arm_func_start MATHi_CRC16InitTable
-MATHi_CRC16InitTable: ; 0x020DDF60
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r4, #0x0
- mov r12, r4
- mov r3, r4
-_020DDF74:
- mov r5, r12
- mov lr, r3
-_020DDF7C:
- ands r2, r5, #0x8000
- eorne r5, r1, r5, lsl #0x1
- add lr, lr, #0x1
- moveq r5, r5, lsl #0x1
- cmp lr, #0x8
- blo _020DDF7C
- mov r2, r4, lsl #0x1
- add r4, r4, #0x1
- strh r5, [r0, r2]
- cmp r4, #0x100
- add r12, r12, #0x100
- blo _020DDF74
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,lr}
- bx lr
-
- arm_func_start MATHi_CRC8Update
-MATHi_CRC8Update:
- stmdb sp!, {r4,lr}
- cmp r3, #0x0
- ldrb r4, [r1, #0x0]
- mov lr, #0x0
- bls _020DDFEC
-_020DDFCC:
- ldrb r12, [r2, #0x0]
- add lr, lr, #0x1
- cmp lr, r3
- eor r12, r4, r12
- and r12, r12, #0xff
- add r2, r2, #0x1
- ldrb r4, [r0, r12]
- blo _020DDFCC
-_020DDFEC:
- strb r4, [r1, #0x0]
- ldmia sp!, {r4,lr}
- bx lr
-
- arm_func_start MATHi_CRC8InitTable
-MATHi_CRC8InitTable: ; 0x020DDFF8
- stmdb sp!, {r4,lr}
- mov lr, #0x0
- mov r3, lr
-_020DE004:
- mov r4, lr
- mov r12, r3
-_020DE00C:
- ands r2, r4, #0x80
- eorne r4, r1, r4, lsl #0x1
- add r12, r12, #0x1
- moveq r4, r4, lsl #0x1
- cmp r12, #0x8
- blo _020DE00C
- strb r4, [r0, lr]
- add lr, lr, #0x1
- cmp lr, #0x100
- blo _020DE004
- ldmia sp!, {r4,lr}
- bx lr
-
arm_func_start STD_CompareNString
STD_CompareNString: ; 0x020DE03C
stmdb sp!, {lr}