summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm7/arm7.lsf1
-rw-r--r--arm7/asm/CTRDG.s248
-rw-r--r--arm7/asm/wram2.s238
-rw-r--r--arm7/asm/wram_bss.s4
-rw-r--r--arm7/global.inc4
5 files changed, 253 insertions, 242 deletions
diff --git a/arm7/arm7.lsf b/arm7/arm7.lsf
index 55e2a33a..038c37c5 100644
--- a/arm7/arm7.lsf
+++ b/arm7/arm7.lsf
@@ -67,6 +67,7 @@ Autoload WRAM
Object SPI_tp.o
Object SPI_pm.o
Object SPI_mic.o
+ Object CTRDG.o
Object wram2.o
Object wram_data.o
Object wram_bss.o
diff --git a/arm7/asm/CTRDG.s b/arm7/asm/CTRDG.s
new file mode 100644
index 00000000..633cbdd3
--- /dev/null
+++ b/arm7/asm/CTRDG.s
@@ -0,0 +1,248 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .bss
+
+ .global CTRDGi_Work
+CTRDGi_Work: ;0x03809FB8
+ .space 0x03809FBC - 0x03809FB8
+
+ .section .text
+
+ arm_func_start CTRDGi_SendtoPxi
+CTRDGi_SendtoPxi: ;@ 0x038038C0
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r7, r0
+ mov r6, #1
+ mov r5, #13
+ mov r4, #0
+ b _038038E4
+_038038DC:
+ mov r0, r6
+ bl FUN_037F8CB4
+_038038E4:
+ mov r0, r5
+ mov r1, r7
+ mov r2, r4
+ bl PXI_SendWordByFifo
+ cmp r0, #0
+ bne _038038DC
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+
+ arm_func_start CTRDGi_UnlockByProcessor
+CTRDGi_UnlockByProcessor: ;@ 0x03803908
+ stmdb sp!, {r4, lr}
+ mov r4, r1
+ ldr r1, [r4]
+ cmp r1, #0
+ bne _03803920
+ bl OS_UnLockCartridge
+_03803920:
+ ldr r0, [r4, #4]
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start CTRDGi_LockByProcessor
+CTRDGi_LockByProcessor: ;@ 0x03803930
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ mov r4, r1
+ bl OS_DisableInterrupts
+ str r0, [r4, #4]
+ ldr r0, _0380398C ;@ =0x027FFFE8
+ bl OS_ReadOwnerOfLockWord
+ and r0, r0, #128 ;@ 0x80
+ str r0, [r4]
+ ldr r0, [r4]
+ cmp r0, #0
+ bne _03803974
+ mov r0, r5
+ bl OS_TryLockCartridge
+ cmp r0, #0
+ bne _0380397C
+_03803974:
+ mov r0, #1
+ b _03803980
+_0380397C:
+ mov r0, #0
+_03803980:
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, lr}
+ bx lr
+_0380398C: .word 0x027FFFE8
+
+ arm_func_start CTRDGi_RestoreAccessCycle
+CTRDGi_RestoreAccessCycle: ;@ 0x03803990
+ ldr r3, [r0]
+ ldr r2, _038039C0 ;@ =0x04000204
+ ldrh r1, [r2]
+ bic r1, r1, #12
+ orr r1, r1, r3, lsl #2
+ strh r1, [r2]
+ ldr r1, [r0, #4]
+ ldrh r0, [r2]
+ bic r0, r0, #16
+ orr r0, r0, r1, lsl #4
+ strh r0, [r2]
+ bx lr
+_038039C0: .word 0x04000204
+
+ arm_func_start CTRDGi_ChangeLatestAccessCycle
+CTRDGi_ChangeLatestAccessCycle: ;@ 0x038039C4
+ ldr r2, _03803A08 ;@ =0x04000204
+ ldrh r1, [r2]
+ and r1, r1, #12
+ mov r1, r1, asr #2
+ str r1, [r0]
+ ldrh r1, [r2]
+ and r1, r1, #16
+ mov r1, r1, asr #4
+ str r1, [r0, #4]
+ ldrh r0, [r2]
+ bic r0, r0, #12
+ orr r0, r0, #12
+ strh r0, [r2]
+ ldrh r0, [r2]
+ bic r0, r0, #16
+ strh r0, [r2]
+ bx lr
+_03803A08: .word 0x04000204
+
+ arm_func_start CTRDG_IsExisting
+CTRDG_IsExisting: ;@ 0x03803A0C
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #16
+ mov r4, #1
+ ldr r2, _03803B20 ;@ =0x027FFC30
+ ldrh r1, [r2]
+ ldr r0, _03803B24 ;@ =0x0000FFFF
+ cmp r1, r0
+ moveq r0, #0
+ beq _03803B14
+ ldrb r0, [r2, #5]
+ mov r0, r0, lsl #30
+ mov r0, r0, lsr #31
+ cmp r0, #1
+ moveq r0, #0
+ beq _03803B14
+ ldr r0, _03803B28 ;@ =CTRDGi_Work
+ ldrh r0, [r0, #2]
+ add r1, sp, #0
+ bl CTRDGi_LockByProcessor
+ cmp r0, #0
+ bne _03803A70
+ ldr r0, [sp, #4]
+ bl OS_RestoreInterrupts
+ mov r0, r4
+ b _03803B14
+_03803A70:
+ add r0, sp, #8
+ bl CTRDGi_ChangeLatestAccessCycle
+ mov r2, #134217728 ;@ 0x8000000
+ ldrb r3, [r2, #178] ;@ 0xb2
+ cmp r3, #150 ;@ 0x96
+ bne _03803A9C
+ ldr r0, _03803B20 ;@ =0x027FFC30
+ ldrh r1, [r0]
+ ldrh r0, [r2, #190] ;@ 0xbe
+ cmp r1, r0
+ bne _03803AE4
+_03803A9C:
+ cmp r3, #150 ;@ 0x96
+ beq _03803ABC
+ ldr r0, _03803B20 ;@ =0x027FFC30
+ ldrh r1, [r0]
+ ldr r0, _03803B2C ;@ =0x0801FFFE
+ ldrh r0, [r0]
+ cmp r1, r0
+ bne _03803AE4
+_03803ABC:
+ ldr r2, _03803B20 ;@ =0x027FFC30
+ ldr r1, [r2, #8]
+ mov r0, #134217728 ;@ 0x8000000
+ ldr r0, [r0, #172] ;@ 0xac
+ cmp r1, r0
+ beq _03803AF8
+ ldrb r0, [r2, #5]
+ mov r0, r0, lsl #31
+ movs r0, r0, lsr #31
+ beq _03803AF8
+_03803AE4:
+ ldr r1, _03803B20 ;@ =0x027FFC30
+ ldrb r0, [r1, #5]
+ orr r0, r0, #2
+ strb r0, [r1, #5]
+ mov r4, #0
+_03803AF8:
+ add r0, sp, #8
+ bl CTRDGi_RestoreAccessCycle
+ ldr r0, _03803B28 ;@ =CTRDGi_Work
+ ldrh r0, [r0, #2]
+ add r1, sp, #0
+ bl CTRDGi_UnlockByProcessor
+ mov r0, r4
+_03803B14:
+ add sp, sp, #16
+ ldmia sp!, {r4, lr}
+ bx lr
+_03803B20: .word 0x027FFC30
+_03803B24: .word 0x0000FFFF
+_03803B28: .word CTRDGi_Work
+_03803B2C: .word 0x0801FFFE
+
+ arm_func_start CTRDG_IsPulledOut
+CTRDG_IsPulledOut: ;@ 0x03803B30
+ stmfd sp!, {lr}
+ sub sp, sp, #4
+ ldr r2, _03803B80 ;@ =0x027FFC30
+ ldrh r1, [r2]
+ ldr r0, _03803B84 ;@ =0x0000FFFF
+ cmp r1, r0
+ moveq r0, #0
+ beq _03803B74
+ ldrb r0, [r2, #5]
+ mov r0, r0, lsl #30
+ movs r0, r0, lsr #31
+ bne _03803B64
+ bl CTRDG_IsExisting
+_03803B64:
+ ldr r0, _03803B80 ;@ =0x027FFC30
+ ldrb r0, [r0, #5]
+ mov r0, r0, lsl #30
+ mov r0, r0, lsr #31
+_03803B74:
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+_03803B80: .word 0x027FFC30
+_03803B84: .word 0x0000FFFF
+
+ arm_func_start CTRDGi_InitCommon
+CTRDGi_InitCommon: ;@ 0x03803B88
+ stmfd sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0
+ str r0, [sp]
+ add r0, sp, #0
+ ldr r1, _03803BC0 ;@ =CTRDGi_Work
+ ldr r2, _03803BC4 ;@ =0x05000001
+ bl FUN_03803BC8
+ bl OS_GetLockID
+ ldr r1, _03803BC0 ;@ =CTRDGi_Work
+ strh r0, [r1, #2]
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+_03803BC0: .word CTRDGi_Work
+_03803BC4: .word 0x05000001
+
+ arm_func_start FUN_03803BC8
+FUN_03803BC8: ;@ 0x03803BC8
+ ldr ip, _03803BD0 ;@ =SVC_CpuSet
+ bx ip
+_03803BD0: .word SVC_CpuSet
diff --git a/arm7/asm/wram2.s b/arm7/asm/wram2.s
index 513bba1a..4e48222d 100644
--- a/arm7/asm/wram2.s
+++ b/arm7/asm/wram2.s
@@ -3,244 +3,6 @@
.section .text
- arm_func_start CTRDGi_SendtoPxi
-CTRDGi_SendtoPxi: ;@ 0x038038C0
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r7, r0
- mov r6, #1
- mov r5, #13
- mov r4, #0
- b _038038E4
-_038038DC:
- mov r0, r6
- bl FUN_037F8CB4
-_038038E4:
- mov r0, r5
- mov r1, r7
- mov r2, r4
- bl PXI_SendWordByFifo
- cmp r0, #0
- bne _038038DC
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, lr}
- bx lr
-
- arm_func_start CTRDGi_UnlockByProcessor
-CTRDGi_UnlockByProcessor: ;@ 0x03803908
- stmdb sp!, {r4, lr}
- mov r4, r1
- ldr r1, [r4]
- cmp r1, #0
- bne _03803920
- bl OS_UnLockCartridge
-_03803920:
- ldr r0, [r4, #4]
- bl OS_RestoreInterrupts
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start CTRDGi_LockByProcessor
-CTRDGi_LockByProcessor: ;@ 0x03803930
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- mov r4, r1
- bl OS_DisableInterrupts
- str r0, [r4, #4]
- ldr r0, _0380398C ;@ =0x027FFFE8
- bl OS_ReadOwnerOfLockWord
- and r0, r0, #128 ;@ 0x80
- str r0, [r4]
- ldr r0, [r4]
- cmp r0, #0
- bne _03803974
- mov r0, r5
- bl OS_TryLockCartridge
- cmp r0, #0
- bne _0380397C
-_03803974:
- mov r0, #1
- b _03803980
-_0380397C:
- mov r0, #0
-_03803980:
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-_0380398C: .word 0x027FFFE8
-
- arm_func_start CTRDGi_RestoreAccessCycle
-CTRDGi_RestoreAccessCycle: ;@ 0x03803990
- ldr r3, [r0]
- ldr r2, _038039C0 ;@ =0x04000204
- ldrh r1, [r2]
- bic r1, r1, #12
- orr r1, r1, r3, lsl #2
- strh r1, [r2]
- ldr r1, [r0, #4]
- ldrh r0, [r2]
- bic r0, r0, #16
- orr r0, r0, r1, lsl #4
- strh r0, [r2]
- bx lr
-_038039C0: .word 0x04000204
-
- arm_func_start CTRDGi_ChangeLatestAccessCycle
-CTRDGi_ChangeLatestAccessCycle: ;@ 0x038039C4
- ldr r2, _03803A08 ;@ =0x04000204
- ldrh r1, [r2]
- and r1, r1, #12
- mov r1, r1, asr #2
- str r1, [r0]
- ldrh r1, [r2]
- and r1, r1, #16
- mov r1, r1, asr #4
- str r1, [r0, #4]
- ldrh r0, [r2]
- bic r0, r0, #12
- orr r0, r0, #12
- strh r0, [r2]
- ldrh r0, [r2]
- bic r0, r0, #16
- strh r0, [r2]
- bx lr
-_03803A08: .word 0x04000204
-
- arm_func_start CTRDG_IsExisting
-CTRDG_IsExisting: ;@ 0x03803A0C
- stmdb sp!, {r4, lr}
- sub sp, sp, #16
- mov r4, #1
- ldr r2, _03803B20 ;@ =0x027FFC30
- ldrh r1, [r2]
- ldr r0, _03803B24 ;@ =0x0000FFFF
- cmp r1, r0
- moveq r0, #0
- beq _03803B14
- ldrb r0, [r2, #5]
- mov r0, r0, lsl #30
- mov r0, r0, lsr #31
- cmp r0, #1
- moveq r0, #0
- beq _03803B14
- ldr r0, _03803B28 ;@ =CTRDGi_Work
- ldrh r0, [r0, #2]
- add r1, sp, #0
- bl CTRDGi_LockByProcessor
- cmp r0, #0
- bne _03803A70
- ldr r0, [sp, #4]
- bl OS_RestoreInterrupts
- mov r0, r4
- b _03803B14
-_03803A70:
- add r0, sp, #8
- bl CTRDGi_ChangeLatestAccessCycle
- mov r2, #134217728 ;@ 0x8000000
- ldrb r3, [r2, #178] ;@ 0xb2
- cmp r3, #150 ;@ 0x96
- bne _03803A9C
- ldr r0, _03803B20 ;@ =0x027FFC30
- ldrh r1, [r0]
- ldrh r0, [r2, #190] ;@ 0xbe
- cmp r1, r0
- bne _03803AE4
-_03803A9C:
- cmp r3, #150 ;@ 0x96
- beq _03803ABC
- ldr r0, _03803B20 ;@ =0x027FFC30
- ldrh r1, [r0]
- ldr r0, _03803B2C ;@ =0x0801FFFE
- ldrh r0, [r0]
- cmp r1, r0
- bne _03803AE4
-_03803ABC:
- ldr r2, _03803B20 ;@ =0x027FFC30
- ldr r1, [r2, #8]
- mov r0, #134217728 ;@ 0x8000000
- ldr r0, [r0, #172] ;@ 0xac
- cmp r1, r0
- beq _03803AF8
- ldrb r0, [r2, #5]
- mov r0, r0, lsl #31
- movs r0, r0, lsr #31
- beq _03803AF8
-_03803AE4:
- ldr r1, _03803B20 ;@ =0x027FFC30
- ldrb r0, [r1, #5]
- orr r0, r0, #2
- strb r0, [r1, #5]
- mov r4, #0
-_03803AF8:
- add r0, sp, #8
- bl CTRDGi_RestoreAccessCycle
- ldr r0, _03803B28 ;@ =CTRDGi_Work
- ldrh r0, [r0, #2]
- add r1, sp, #0
- bl CTRDGi_UnlockByProcessor
- mov r0, r4
-_03803B14:
- add sp, sp, #16
- ldmia sp!, {r4, lr}
- bx lr
-_03803B20: .word 0x027FFC30
-_03803B24: .word 0x0000FFFF
-_03803B28: .word CTRDGi_Work
-_03803B2C: .word 0x0801FFFE
-
- arm_func_start CTRDG_IsPulledOut
-CTRDG_IsPulledOut: ;@ 0x03803B30
- stmfd sp!, {lr}
- sub sp, sp, #4
- ldr r2, _03803B80 ;@ =0x027FFC30
- ldrh r1, [r2]
- ldr r0, _03803B84 ;@ =0x0000FFFF
- cmp r1, r0
- moveq r0, #0
- beq _03803B74
- ldrb r0, [r2, #5]
- mov r0, r0, lsl #30
- movs r0, r0, lsr #31
- bne _03803B64
- bl CTRDG_IsExisting
-_03803B64:
- ldr r0, _03803B80 ;@ =0x027FFC30
- ldrb r0, [r0, #5]
- mov r0, r0, lsl #30
- mov r0, r0, lsr #31
-_03803B74:
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_03803B80: .word 0x027FFC30
-_03803B84: .word 0x0000FFFF
-
- arm_func_start CTRDGi_InitCommon
-CTRDGi_InitCommon: ;@ 0x03803B88
- stmfd sp!, {lr}
- sub sp, sp, #4
- mov r0, #0
- str r0, [sp]
- add r0, sp, #0
- ldr r1, _03803BC0 ;@ =CTRDGi_Work
- ldr r2, _03803BC4 ;@ =0x05000001
- bl FUN_03803BC8
- bl OS_GetLockID
- ldr r1, _03803BC0 ;@ =CTRDGi_Work
- strh r0, [r1, #2]
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_03803BC0: .word CTRDGi_Work
-_03803BC4: .word 0x05000001
-
- arm_func_start FUN_03803BC8
-FUN_03803BC8: ;@ 0x03803BC8
- ldr ip, _03803BD0 ;@ =SVC_CpuSet
- bx ip
-_03803BD0: .word SVC_CpuSet
-
arm_func_start FUN_03803BD4
FUN_03803BD4: ;@ 0x03803BD4
stmdb sp!, {r4, r5, r6, r7, lr}
diff --git a/arm7/asm/wram_bss.s b/arm7/asm/wram_bss.s
index e4322f0a..5d53542a 100644
--- a/arm7/asm/wram_bss.s
+++ b/arm7/asm/wram_bss.s
@@ -2,10 +2,6 @@
.include "global.inc"
.section .bss
- .global CTRDGi_Work
-CTRDGi_Work: ;0x03809FB8
- .space 0x03809FBC - 0x03809FB8
-
.global _03809FBC
_03809FBC: ;0x03809FBC
.space 0x03809FC0 - 0x03809FBC
diff --git a/arm7/global.inc b/arm7/global.inc
index a90c17cb..1b3a3fc5 100644
--- a/arm7/global.inc
+++ b/arm7/global.inc
@@ -244,9 +244,13 @@
.extern TP_AnalyzeCommand
.extern TP_ExecuteProcess
.extern TP_Init
+.extern CTRDGi_InitCommon
+.extern CTRDGi_SendtoPxi
.extern CTRDG_CheckPullOut_Polling
.extern CTRDG_VibPulseEdgeUpdate
.extern CTRDG_Init
+.extern CTRDG_IsExisting
+.extern CTRDG_IsPulledOut
.extern NVRAM_AnalyzeCommand
.extern NVRAM_ExecuteProcess
.extern NVRAM_Init