summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@users.noreply.github.com>2020-06-18 16:49:28 -0400
committerGitHub <noreply@github.com>2020-06-18 16:49:28 -0400
commit1f9ac38414f57abd9106a5c7938c82c3e63a08e7 (patch)
tree0be2b3fde80e67313a918d4a628bc7cf36dd48fa
parent92d09cdc734b522010f281206e9d06fe42ccca59 (diff)
parent83924f933797f36776a10a15ce87c85cc4dfcddf (diff)
Merge branch 'master' into master
-rw-r--r--arm7/arm7.lsf2
-rw-r--r--arm7/asm/CARD_pullOut.s1
-rw-r--r--arm7/asm/CTRDG_sp.s542
-rw-r--r--arm7/asm/wram2.s494
-rw-r--r--arm7/asm/wram_bss.s32
-rw-r--r--arm7/asm/wram_data.s13
6 files changed, 543 insertions, 541 deletions
diff --git a/arm7/arm7.lsf b/arm7/arm7.lsf
index 038c37c5..cbffa45a 100644
--- a/arm7/arm7.lsf
+++ b/arm7/arm7.lsf
@@ -68,8 +68,8 @@ Autoload WRAM
Object SPI_pm.o
Object SPI_mic.o
Object CTRDG.o
+ Object CTRDG_sp.o
Object wram2.o
- Object wram_data.o
Object wram_bss.o
}
diff --git a/arm7/asm/CARD_pullOut.s b/arm7/asm/CARD_pullOut.s
index ed919647..b4d52c6c 100644
--- a/arm7/asm/CARD_pullOut.s
+++ b/arm7/asm/CARD_pullOut.s
@@ -215,4 +215,3 @@ _038010C0:
bx lr
_038010CC: .word _038099A4
_038010D0: .word FUN_03801048
- .balign 2, 0 ; Don't pad with nop
diff --git a/arm7/asm/CTRDG_sp.s b/arm7/asm/CTRDG_sp.s
new file mode 100644
index 00000000..72c502c3
--- /dev/null
+++ b/arm7/asm/CTRDG_sp.s
@@ -0,0 +1,542 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .data
+
+ .global _03807704
+_03807704:
+ .word 0x00000001
+
+ .global _03807708
+_03807708:
+ .word 0xFFFFFFFF
+
+ .section .bss
+
+ .global _03809FBC
+_03809FBC: ;0x03809FBC
+ .space 0x03809FC0 - 0x03809FBC
+
+ .global current_vib
+current_vib: ;0x03809FC0
+ .space 0x03809FC4 - 0x03809FC0
+
+ .global _03809FC4
+_03809FC4: ;0x03809FC4
+ .space 0x03809FC8 - 0x03809FC4
+
+ .global _03809FC8
+_03809FC8: ;0x03809FC8
+ .space 0x03809FCC - 0x03809FC8
+
+ .global _03809FCC
+_03809FCC: ;0x03809FCC
+ .space 0x03809FD0 - 0x03809FCC
+
+ .global _03809FD0
+_03809FD0: ;0x03809FD0
+ .space 0x03809FD4 - 0x03809FD0
+
+ .global _03809FD4
+_03809FD4: ;0x03809FD4
+ .space 0x03809FEC - 0x03809FD4
+
+ .global _03809FEC
+_03809FEC: ;0x03809FEC
+ .space 0x0380A018 - 0x03809FEC
+
+ .section .text
+
+ arm_func_start FUN_03803BD4
+FUN_03803BD4: ;@ 0x03803BD4
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ and r0, r1, #63 ;@ 0x3f
+ cmp r0, #3
+ bne _03803C40
+ ldr r0, _03803C50 ;@ =0x01FFFFC0
+ and r0, r1, r0
+ mov r2, r0, lsr #6
+ ldr r1, _03803C54 ;@ =0x04000204
+ ldrh r0, [r1]
+ bic r0, r0, #96 ;@ 0x60
+ orr r0, r0, r2, lsl #5
+ strh r0, [r1]
+ mov r7, #1
+ mov r6, #17
+ mov r5, #18
+ mov r4, #0
+ b _03803C24
+_03803C1C:
+ mov r0, r7
+ bl FUN_037F8CB4
+_03803C24:
+ mov r0, r6
+ mov r1, r5
+ mov r2, r4
+ bl PXI_SendWordByFifo
+ cmp r0, #0
+ bne _03803C1C
+ b _03803C44
+_03803C40:
+ bl OS_Terminate
+_03803C44:
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+_03803C50: .word 0x01FFFFC0
+_03803C54: .word 0x04000204
+
+ arm_func_start CTRDGi_TerminateARM7
+CTRDGi_TerminateARM7: ;@ 0x03803C58
+ stmfd sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0
+ bl CTRDG_VibPulseEdgeUpdate
+ bl SND_BeginSleep
+ bl WVR_Shutdown
+ bl OS_Terminate
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start CTRDG_CheckPullOut_Polling
+CTRDG_CheckPullOut_Polling: ;@ 0x03803C80
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ ldr r1, _03803D80 ;@ =_03807708
+ ldr r3, [r1]
+ mvn r0, #0
+ cmp r3, r0
+ ldreq r0, _03803D84 ;@ =0x027FFC3C
+ ldreq r0, [r0]
+ addeq r0, r0, #10
+ streq r0, [r1]
+ beq _03803D74
+ ldr r0, _03803D88 ;@ =_03809FCC
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _03803D74
+ ldr r0, _03803D8C ;@ =_03809FC8
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _03803D74
+ ldr r2, _03803D84 ;@ =0x027FFC3C
+ ldr r0, [r2]
+ cmp r0, r3
+ bcc _03803D74
+ ldr r0, [r2]
+ add r0, r0, #10
+ str r0, [r1]
+ bl CTRDG_IsPulledOut
+ ldr r1, _03803D8C ;@ =_03809FC8
+ str r0, [r1]
+ bl CTRDG_IsExisting
+ cmp r0, #0
+ bne _03803D28
+ ldr r0, _03803D90 ;@ =_03807704
+ ldr r0, [r0]
+ cmp r0, #0
+ movne r1, #1
+ ldrne r0, _03803D88 ;@ =_03809FCC
+ strne r1, [r0]
+ bne _03803D74
+ mov r1, #1
+ ldr r0, _03803D8C ;@ =_03809FC8
+ str r1, [r0]
+_03803D28:
+ mov r7, #0
+ ldr r0, _03803D90 ;@ =_03807704
+ str r7, [r0]
+ ldr r0, _03803D8C ;@ =_03809FC8
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _03803D74
+ mov r6, #100 ;@ 0x64
+ mov r5, #13
+ mov r4, #17
+ b _03803D5C
+_03803D54:
+ mov r0, r6
+ bl OS_Sleep
+_03803D5C:
+ mov r0, r5
+ mov r1, r4
+ mov r2, r7
+ bl PXI_SendWordByFifo
+ cmp r0, #0
+ bne _03803D54
+_03803D74:
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+_03803D80: .word _03807708
+_03803D84: .word 0x027FFC3C
+_03803D88: .word _03809FCC
+_03803D8C: .word _03809FC8
+_03803D90: .word _03807704
+
+ arm_func_start CTRDGi_IsNinLogoOfAgb
+CTRDGi_IsNinLogoOfAgb: ;@ 0x03803D94
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ mov r7, r0
+ mov r0, #134217728 ;@ 0x8000000
+ add r6, r0, #4
+ mov r4, #1
+ bl OS_GetLockID
+ mov r0, r0, lsl #16
+ mov r5, r0, lsr #16
+ mov r0, r5
+ bl OS_LockCartridge
+ mov r1, #0
+ ldr r0, _03803E3C ;@ =0x0000FFFF
+ eor r2, r0, #3
+ mov r2, r2, lsl #16
+ mov lr, r2, lsr #16
+ eor r2, r0, #132 ;@ 0x84
+ mov r2, r2, lsl #16
+ mov r8, r2, lsr #16
+ b _03803E18
+_03803DE0:
+ mov ip, r0
+ cmp r1, #76 ;@ 0x4c
+ moveq ip, r8
+ beq _03803DF8
+ cmp r1, #77 ;@ 0x4d
+ moveq ip, lr
+_03803DF8:
+ mov r3, r1, lsl #1
+ ldrh r2, [r7, r3]
+ and ip, ip, r2
+ ldrh r2, [r6, r3]
+ cmp ip, r2
+ movne r4, #0
+ bne _03803E20
+ add r1, r1, #1
+_03803E18:
+ cmp r1, #78 ;@ 0x4e
+ blt _03803DE0
+_03803E20:
+ mov r0, r5
+ bl OS_UnLockCartridge
+ mov r0, r5
+ bl OS_ReleaseLockID
+ mov r0, r4
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_03803E3C: .word 0x0000FFFF
+
+ arm_func_start FUN_03803E40
+FUN_03803E40: ;@ 0x03803E40
+ ldr r1, _03803E54 ;@ =current_vib
+ str r0, [r1]
+ ldr r1, _03803E58 ;@ =0x08001000
+ strh r0, [r1]
+ bx lr
+_03803E54: .word current_vib
+_03803E58: .word 0x08001000
+
+ arm_func_start CTRDG_VibPulseEdgeUpdate
+CTRDG_VibPulseEdgeUpdate: ;@ 0x03803E5C
+ stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ sub sp, sp, #4
+ movs r5, r0
+ beq _03803E9C
+ ldr r0, [r5]
+ cmp r0, #0
+ bne _03803E9C
+ ldr r0, [r5, #68] ;@ 0x44
+ add r0, r0, #1
+ str r0, [r5, #68] ;@ 0x44
+ ldr r1, [r5, #64] ;@ 0x40
+ cmp r1, #0
+ beq _03803E9C
+ ldr r0, [r5, #68] ;@ 0x44
+ cmp r0, r1
+ movhi r5, #0
+_03803E9C:
+ cmp r5, #0
+ beq _03803EB0
+ ldr r0, [r5, #60] ;@ 0x3c
+ cmp r0, #0
+ bne _03803F48
+_03803EB0:
+ bl OS_DisableInterrupts
+ mov r9, r0
+ ldr r0, _03804068 ;@ =current_vib
+ ldr r0, [r0]
+ cmp r0, #2
+ bne _03803F34
+ mov r8, #0
+ ldr r7, _0380406C ;@ =0x027FFFE8
+ ldr r4, _03804070 ;@ =_03809FBC
+ ldr fp, _03804074 ;@ =0x000080E8
+ mov r6, r8
+ mov r5, #1
+ b _03803F2C
+_03803EE4:
+ mov r0, r7
+ bl OS_ReadOwnerOfLockWord
+ ands sl, r0, #128 ;@ 0x80
+ bne _03803F04
+ ldrh r0, [r4]
+ bl OS_TryLockCartridge
+ cmp r0, #0
+ bne _03803F24
+_03803F04:
+ mov r0, r6
+ bl FUN_03803E40
+ mov r8, r5
+ cmp sl, #0
+ bne _03803F2C
+ ldrh r0, [r4]
+ bl OS_UnlockCartridge
+ b _03803F2C
+_03803F24:
+ mov r0, fp
+ bl OS_SpinWait
+_03803F2C:
+ cmp r8, #0
+ beq _03803EE4
+_03803F34:
+ ldr r0, _03804078 ;@ =_03809FEC
+ bl OS_CancelAlarm
+ mov r0, r9
+ bl OS_RestoreInterrupts
+ b _0380405C
+_03803F48:
+ cmp r5, #0
+ beq _0380405C
+ ldr r0, _0380406C ;@ =0x027FFFE8
+ bl OS_ReadOwnerOfLockWord
+ ands r4, r0, #128 ;@ 0x80
+ bne _03803F74
+ ldr r0, _03804070 ;@ =_03809FBC
+ ldrh r0, [r0]
+ bl OS_TryLockCartridge
+ cmp r0, #0
+ bne _03804044
+_03803F74:
+ ldr r1, [r5]
+ ldr r0, [r5, #4]
+ cmp r1, r0
+ bne _03803FB0
+ mov r0, #0
+ bl FUN_03803E40
+ str r5, [sp]
+ ldr r0, _03804078 ;@ =_03809FEC
+ ldr r1, [r5, #8]
+ mov r2, #0
+ ldr r3, _0380407C ;@ =CTRDG_VibPulseEdgeUpdate
+ bl OS_SetAlarm
+ mov r0, #0
+ str r0, [r5]
+ b _0380402C
+_03803FB0:
+ ands r0, r1, #1
+ beq _03803FF4
+ mov r0, #0
+ bl FUN_03803E40
+ str r5, [sp]
+ ldr r0, _03804078 ;@ =_03809FEC
+ ldr r1, [r5]
+ mov r1, r1, lsr #1
+ add r1, r5, r1, lsl #2
+ ldr r1, [r1, #36] ;@ 0x24
+ mov r2, #0
+ ldr r3, _0380407C ;@ =CTRDG_VibPulseEdgeUpdate
+ bl OS_SetAlarm
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _0380402C
+_03803FF4:
+ mov r0, #2
+ bl FUN_03803E40
+ str r5, [sp]
+ ldr r0, _03804078 ;@ =_03809FEC
+ ldr r1, [r5]
+ mov r1, r1, lsr #1
+ add r1, r5, r1, lsl #2
+ ldr r1, [r1, #12]
+ mov r2, #0
+ ldr r3, _0380407C ;@ =CTRDG_VibPulseEdgeUpdate
+ bl OS_SetAlarm
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+_0380402C:
+ cmp r4, #0
+ bne _0380405C
+ ldr r0, _03804070 ;@ =_03809FBC
+ ldrh r0, [r0]
+ bl OS_UnlockCartridge
+ b _0380405C
+_03804044:
+ str r5, [sp]
+ ldr r0, _03804078 ;@ =_03809FEC
+ ldr r1, _03804080 ;@ =0x0000020B
+ mov r2, #0
+ ldr r3, _0380407C ;@ =CTRDG_VibPulseEdgeUpdate
+ bl OS_SetAlarm
+_0380405C:
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ bx lr
+_03804068: .word current_vib
+_0380406C: .word 0x027FFFE8
+_03804070: .word _03809FBC
+_03804074: .word 0x000080E8
+_03804078: .word _03809FEC
+_0380407C: .word CTRDG_VibPulseEdgeUpdate
+_03804080: .word 0x0000020B
+_03804084:
+ mov r0, r1
+ ldr ip, _03804090 ;@ =CTRDG_VibPulseEdgeUpdate
+ bx ip
+_03804090: .word CTRDG_VibPulseEdgeUpdate
+
+ arm_func_start CTRDGi_CallbackForPulledOut
+CTRDGi_CallbackForPulledOut: ;@ 0x03804094
+ stmfd sp!, {lr}
+ sub sp, sp, #4
+ and r0, r1, #63 ;@ 0x3ff
+ cmp r0, #2
+ bne _038040B0
+ bl CTRDGi_TerminateARM7
+ b _038040B4
+_038040B0:
+ bl OS_Terminate
+_038040B4:
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start CTRDGi_CallbackForInitModuleInfo
+CTRDGi_CallbackForInitModuleInfo: ;@ 0x038040C0
+ stmfd sp!, {lr}
+ sub sp, sp, #4
+ and r0, r1, #63 ;@ 0x3f
+ cmp r0, #1
+ ldreq r0, _038040F4 ;@ =_03809FD4
+ streq r1, [r0]
+ moveq r1, #1
+ streq r1, [r0, #16]
+ beq _038040E8
+ bl OS_Terminate
+_038040E8:
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+_038040F4: .word _03809FD4
+
+ arm_func_start CTRDGi_InitModuleInfo
+CTRDGi_InitModuleInfo: ;@ 0x038040F8
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ ldr r0, _038041C8 ;@ =_03809FC4
+ ldr r1, [r0]
+ cmp r1, #0
+ bne _038041BC
+ mov r1, #1
+ str r1, [r0]
+ ldr r0, _038041CC ;@ =0x04000300
+ ldrh r0, [r0]
+ ands r0, r0, #1
+ beq _038041BC
+ mov r0, #262144 ;@ 0x40000
+ bl OS_SetIrqMask
+ mov r5, r0
+ ldr r1, _038041D0 ;@ =0x04000208
+ ldrh r4, [r1]
+ mov r0, #1
+ strh r0, [r1]
+ mov r7, #256 ;@ 0x100
+ ldr r6, _038041D4 ;@ =_03809FD4
+ b _03804158
+_03804150:
+ mov r0, r7
+ bl FUN_037F8CB4
+_03804158:
+ ldr r0, [r6, #16]
+ cmp r0, #1
+ bne _03804150
+ ldr r1, [r6]
+ ldr r0, _038041D8 ;@ =0x01FFFFC0
+ and r0, r1, r0
+ mov r0, r0, lsr #6
+ mov r0, r0, lsl #5
+ add r0, r0, #33554432 ;@ 0x2000000
+ add r0, r0, #4
+ bl CTRDGi_IsNinLogoOfAgb
+ ldr r2, _038041DC ;@ =0x027FFC30
+ ldrb r1, [r2, #5]
+ bic r1, r1, #1
+ and r0, r0, #255 ;@ 0xff
+ and r0, r0, #1
+ orr r0, r1, r0
+ strb r0, [r2, #5]
+ mov r0, #1
+ bl CTRDGi_SendtoPxi
+ ldr r1, _038041D0 ;@ =0x04000208
+ ldrh r0, [r1]
+ strh r4, [r1]
+ mov r0, r5
+ bl OS_SetIrqMask
+_038041BC:
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+_038041C8: .word _03809FC4
+_038041CC: .word 0x04000300
+_038041D0: .word 0x04000208
+_038041D4: .word _03809FD4
+_038041D8: .word 0x01FFFFC0
+_038041DC: .word 0x027FFC30
+
+ arm_func_start CTRDG_Init
+CTRDG_Init: ;@ 0x038041E0
+ stmfd sp!, {lr}
+ sub sp, sp, #4
+ bl OS_InitTick
+ bl OS_InitAlarm
+ ldr r0, _03804270 ;@ =_03809FEC
+ bl OS_CreateAlarm
+ ldr r0, _03804274 ;@ =_03809FD0
+ ldr r1, [r0]
+ cmp r1, #0
+ bne _03804264
+ mov r1, #1
+ str r1, [r0]
+ bl CTRDGi_InitCommon
+ bl OS_GetLockID
+ mvn r1, #2
+ cmp r0, r1
+ beq _03804264
+ ldr r1, _03804278 ;@ =_03809FBC
+ strh r0, [r1]
+ bl PXI_Init
+ mov r0, #13
+ ldr r1, _0380427C ;@ =CTRDGi_CallbackForInitModuleInfo
+ bl PXI_SetFifoRecvCallback
+ bl CTRDGi_InitModuleInfo
+ mov r0, #13
+ ldr r1, _03804280 ;@ =CTRDGi_CallbackForPulledOut
+ bl PXI_SetFifoRecvCallback
+ mov r0, #16
+ ldr r1, _03804284 ;@ =_03804084
+ bl PXI_SetFifoRecvCallback
+ mov r0, #17
+ ldr r1, _03804288 ;@ =FUN_03803BD4
+ bl PXI_SetFifoRecvCallback
+_03804264:
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+_03804270: .word _03809FEC
+_03804274: .word _03809FD0
+_03804278: .word _03809FBC
+_0380427C: .word CTRDGi_CallbackForInitModuleInfo
+_03804280: .word CTRDGi_CallbackForPulledOut
+_03804284: .word _03804084
+_03804288: .word FUN_03803BD4
diff --git a/arm7/asm/wram2.s b/arm7/asm/wram2.s
index 4e48222d..68b31543 100644
--- a/arm7/asm/wram2.s
+++ b/arm7/asm/wram2.s
@@ -3,500 +3,6 @@
.section .text
- arm_func_start FUN_03803BD4
-FUN_03803BD4: ;@ 0x03803BD4
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- and r0, r1, #63 ;@ 0x3f
- cmp r0, #3
- bne _03803C40
- ldr r0, _03803C50 ;@ =0x01FFFFC0
- and r0, r1, r0
- mov r2, r0, lsr #6
- ldr r1, _03803C54 ;@ =0x04000204
- ldrh r0, [r1]
- bic r0, r0, #96 ;@ 0x60
- orr r0, r0, r2, lsl #5
- strh r0, [r1]
- mov r7, #1
- mov r6, #17
- mov r5, #18
- mov r4, #0
- b _03803C24
-_03803C1C:
- mov r0, r7
- bl FUN_037F8CB4
-_03803C24:
- mov r0, r6
- mov r1, r5
- mov r2, r4
- bl PXI_SendWordByFifo
- cmp r0, #0
- bne _03803C1C
- b _03803C44
-_03803C40:
- bl OS_Terminate
-_03803C44:
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, lr}
- bx lr
-_03803C50: .word 0x01FFFFC0
-_03803C54: .word 0x04000204
-
- arm_func_start FUN_03803C58
-FUN_03803C58: ;@ 0x03803C58
- stmfd sp!, {lr}
- sub sp, sp, #4
- mov r0, #0
- bl CTRDG_VibPulseEdgeUpdate
- bl SND_BeginSleep
- bl WVR_Shutdown
- bl OS_Terminate
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start CTRDG_CheckPullOut_Polling
-CTRDG_CheckPullOut_Polling: ;@ 0x03803C80
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- ldr r1, _03803D80 ;@ =_03807708
- ldr r3, [r1]
- mvn r0, #0
- cmp r3, r0
- ldreq r0, _03803D84 ;@ =0x027FFC3C
- ldreq r0, [r0]
- addeq r0, r0, #10
- streq r0, [r1]
- beq _03803D74
- ldr r0, _03803D88 ;@ =_03809FCC
- ldr r0, [r0]
- cmp r0, #0
- bne _03803D74
- ldr r0, _03803D8C ;@ =_03809FC8
- ldr r0, [r0]
- cmp r0, #0
- bne _03803D74
- ldr r2, _03803D84 ;@ =0x027FFC3C
- ldr r0, [r2]
- cmp r0, r3
- bcc _03803D74
- ldr r0, [r2]
- add r0, r0, #10
- str r0, [r1]
- bl CTRDG_IsPulledOut
- ldr r1, _03803D8C ;@ =_03809FC8
- str r0, [r1]
- bl CTRDG_IsExisting
- cmp r0, #0
- bne _03803D28
- ldr r0, _03803D90 ;@ =_03807704
- ldr r0, [r0]
- cmp r0, #0
- movne r1, #1
- ldrne r0, _03803D88 ;@ =_03809FCC
- strne r1, [r0]
- bne _03803D74
- mov r1, #1
- ldr r0, _03803D8C ;@ =_03809FC8
- str r1, [r0]
-_03803D28:
- mov r7, #0
- ldr r0, _03803D90 ;@ =_03807704
- str r7, [r0]
- ldr r0, _03803D8C ;@ =_03809FC8
- ldr r0, [r0]
- cmp r0, #0
- beq _03803D74
- mov r6, #100 ;@ 0x64
- mov r5, #13
- mov r4, #17
- b _03803D5C
-_03803D54:
- mov r0, r6
- bl OS_Sleep
-_03803D5C:
- mov r0, r5
- mov r1, r4
- mov r2, r7
- bl PXI_SendWordByFifo
- cmp r0, #0
- bne _03803D54
-_03803D74:
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, lr}
- bx lr
-_03803D80: .word _03807708
-_03803D84: .word 0x027FFC3C
-_03803D88: .word _03809FCC
-_03803D8C: .word _03809FC8
-_03803D90: .word _03807704
-
- arm_func_start FUN_03803D94
-FUN_03803D94: ;@ 0x03803D94
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- mov r7, r0
- mov r0, #134217728 ;@ 0x8000000
- add r6, r0, #4
- mov r4, #1
- bl OS_GetLockID
- mov r0, r0, lsl #16
- mov r5, r0, lsr #16
- mov r0, r5
- bl OS_LockCartridge
- mov r1, #0
- ldr r0, _03803E3C ;@ =0x0000FFFF
- eor r2, r0, #3
- mov r2, r2, lsl #16
- mov lr, r2, lsr #16
- eor r2, r0, #132 ;@ 0x84
- mov r2, r2, lsl #16
- mov r8, r2, lsr #16
- b _03803E18
-_03803DE0:
- mov ip, r0
- cmp r1, #76 ;@ 0x4c
- moveq ip, r8
- beq _03803DF8
- cmp r1, #77 ;@ 0x4d
- moveq ip, lr
-_03803DF8:
- mov r3, r1, lsl #1
- ldrh r2, [r7, r3]
- and ip, ip, r2
- ldrh r2, [r6, r3]
- cmp ip, r2
- movne r4, #0
- bne _03803E20
- add r1, r1, #1
-_03803E18:
- cmp r1, #78 ;@ 0x4e
- blt _03803DE0
-_03803E20:
- mov r0, r5
- bl OS_UnLockCartridge
- mov r0, r5
- bl OS_ReleaseLockID
- mov r0, r4
- ldmia sp!, {r4, r5, r6, r7, r8, lr}
- bx lr
-_03803E3C: .word 0x0000FFFF
-
- arm_func_start FUN_03803E40
-FUN_03803E40: ;@ 0x03803E40
- ldr r1, _03803E54 ;@ =current_vib
- str r0, [r1]
- ldr r1, _03803E58 ;@ =0x08001000
- strh r0, [r1]
- bx lr
-_03803E54: .word current_vib
-_03803E58: .word 0x08001000
-
- arm_func_start CTRDG_VibPulseEdgeUpdate
-CTRDG_VibPulseEdgeUpdate: ;@ 0x03803E5C
- stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- sub sp, sp, #4
- movs r5, r0
- beq _03803E9C
- ldr r0, [r5]
- cmp r0, #0
- bne _03803E9C
- ldr r0, [r5, #68] ;@ 0x44
- add r0, r0, #1
- str r0, [r5, #68] ;@ 0x44
- ldr r1, [r5, #64] ;@ 0x40
- cmp r1, #0
- beq _03803E9C
- ldr r0, [r5, #68] ;@ 0x44
- cmp r0, r1
- movhi r5, #0
-_03803E9C:
- cmp r5, #0
- beq _03803EB0
- ldr r0, [r5, #60] ;@ 0x3c
- cmp r0, #0
- bne _03803F48
-_03803EB0:
- bl OS_DisableInterrupts
- mov r9, r0
- ldr r0, _03804068 ;@ =current_vib
- ldr r0, [r0]
- cmp r0, #2
- bne _03803F34
- mov r8, #0
- ldr r7, _0380406C ;@ =0x027FFFE8
- ldr r4, _03804070 ;@ =_03809FBC
- ldr fp, _03804074 ;@ =0x000080E8
- mov r6, r8
- mov r5, #1
- b _03803F2C
-_03803EE4:
- mov r0, r7
- bl OS_ReadOwnerOfLockWord
- ands sl, r0, #128 ;@ 0x80
- bne _03803F04
- ldrh r0, [r4]
- bl OS_TryLockCartridge
- cmp r0, #0
- bne _03803F24
-_03803F04:
- mov r0, r6
- bl FUN_03803E40
- mov r8, r5
- cmp sl, #0
- bne _03803F2C
- ldrh r0, [r4]
- bl OS_UnlockCartridge
- b _03803F2C
-_03803F24:
- mov r0, fp
- bl OS_SpinWait
-_03803F2C:
- cmp r8, #0
- beq _03803EE4
-_03803F34:
- ldr r0, _03804078 ;@ =_03809FEC
- bl OS_CancelAlarm
- mov r0, r9
- bl OS_RestoreInterrupts
- b _0380405C
-_03803F48:
- cmp r5, #0
- beq _0380405C
- ldr r0, _0380406C ;@ =0x027FFFE8
- bl OS_ReadOwnerOfLockWord
- ands r4, r0, #128 ;@ 0x80
- bne _03803F74
- ldr r0, _03804070 ;@ =_03809FBC
- ldrh r0, [r0]
- bl OS_TryLockCartridge
- cmp r0, #0
- bne _03804044
-_03803F74:
- ldr r1, [r5]
- ldr r0, [r5, #4]
- cmp r1, r0
- bne _03803FB0
- mov r0, #0
- bl FUN_03803E40
- str r5, [sp]
- ldr r0, _03804078 ;@ =_03809FEC
- ldr r1, [r5, #8]
- mov r2, #0
- ldr r3, _0380407C ;@ =CTRDG_VibPulseEdgeUpdate
- bl OS_SetAlarm
- mov r0, #0
- str r0, [r5]
- b _0380402C
-_03803FB0:
- ands r0, r1, #1
- beq _03803FF4
- mov r0, #0
- bl FUN_03803E40
- str r5, [sp]
- ldr r0, _03804078 ;@ =_03809FEC
- ldr r1, [r5]
- mov r1, r1, lsr #1
- add r1, r5, r1, lsl #2
- ldr r1, [r1, #36] ;@ 0x24
- mov r2, #0
- ldr r3, _0380407C ;@ =CTRDG_VibPulseEdgeUpdate
- bl OS_SetAlarm
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _0380402C
-_03803FF4:
- mov r0, #2
- bl FUN_03803E40
- str r5, [sp]
- ldr r0, _03804078 ;@ =_03809FEC
- ldr r1, [r5]
- mov r1, r1, lsr #1
- add r1, r5, r1, lsl #2
- ldr r1, [r1, #12]
- mov r2, #0
- ldr r3, _0380407C ;@ =CTRDG_VibPulseEdgeUpdate
- bl OS_SetAlarm
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
-_0380402C:
- cmp r4, #0
- bne _0380405C
- ldr r0, _03804070 ;@ =_03809FBC
- ldrh r0, [r0]
- bl OS_UnlockCartridge
- b _0380405C
-_03804044:
- str r5, [sp]
- ldr r0, _03804078 ;@ =_03809FEC
- ldr r1, _03804080 ;@ =0x0000020B
- mov r2, #0
- ldr r3, _0380407C ;@ =CTRDG_VibPulseEdgeUpdate
- bl OS_SetAlarm
-_0380405C:
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- bx lr
-_03804068: .word current_vib
-_0380406C: .word 0x027FFFE8
-_03804070: .word _03809FBC
-_03804074: .word 0x000080E8
-_03804078: .word _03809FEC
-_0380407C: .word CTRDG_VibPulseEdgeUpdate
-_03804080: .word 0x0000020B
-_03804084:
- mov r0, r1
- ldr ip, _03804090 ;@ =CTRDG_VibPulseEdgeUpdate
- bx ip
-_03804090: .word CTRDG_VibPulseEdgeUpdate
-
- arm_func_start FUN_03804094
-FUN_03804094: ;@ 0x03804094
- stmfd sp!, {lr}
- sub sp, sp, #4
- and r0, r1, #63 ;@ 0x3f
- cmp r0, #2
- bne _038040B0
- bl FUN_03803C58
- b _038040B4
-_038040B0:
- bl OS_Terminate
-_038040B4:
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start FUN_038040C0
-FUN_038040C0: ;@ 0x038040C0
- stmfd sp!, {lr}
- sub sp, sp, #4
- and r0, r1, #63 ;@ 0x3f
- cmp r0, #1
- ldreq r0, _038040F4 ;@ =_03809FD4
- streq r1, [r0]
- moveq r1, #1
- streq r1, [r0, #16]
- beq _038040E8
- bl OS_Terminate
-_038040E8:
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_038040F4: .word _03809FD4
-
- arm_func_start CTRDGi_InitModuleInfo
-CTRDGi_InitModuleInfo: ;@ 0x038040F8
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- ldr r0, _038041C8 ;@ =_03809FC4
- ldr r1, [r0]
- cmp r1, #0
- bne _038041BC
- mov r1, #1
- str r1, [r0]
- ldr r0, _038041CC ;@ =0x04000300
- ldrh r0, [r0]
- ands r0, r0, #1
- beq _038041BC
- mov r0, #262144 ;@ 0x40000
- bl OS_SetIrqMask
- mov r5, r0
- ldr r1, _038041D0 ;@ =0x04000208
- ldrh r4, [r1]
- mov r0, #1
- strh r0, [r1]
- mov r7, #256 ;@ 0x100
- ldr r6, _038041D4 ;@ =_03809FD4
- b _03804158
-_03804150:
- mov r0, r7
- bl FUN_037F8CB4
-_03804158:
- ldr r0, [r6, #16]
- cmp r0, #1
- bne _03804150
- ldr r1, [r6]
- ldr r0, _038041D8 ;@ =0x01FFFFC0
- and r0, r1, r0
- mov r0, r0, lsr #6
- mov r0, r0, lsl #5
- add r0, r0, #33554432 ;@ 0x2000000
- add r0, r0, #4
- bl FUN_03803D94
- ldr r2, _038041DC ;@ =0x027FFC30
- ldrb r1, [r2, #5]
- bic r1, r1, #1
- and r0, r0, #255 ;@ 0xff
- and r0, r0, #1
- orr r0, r1, r0
- strb r0, [r2, #5]
- mov r0, #1
- bl CTRDGi_SendtoPxi
- ldr r1, _038041D0 ;@ =0x04000208
- ldrh r0, [r1]
- strh r4, [r1]
- mov r0, r5
- bl OS_SetIrqMask
-_038041BC:
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, lr}
- bx lr
-_038041C8: .word _03809FC4
-_038041CC: .word 0x04000300
-_038041D0: .word 0x04000208
-_038041D4: .word _03809FD4
-_038041D8: .word 0x01FFFFC0
-_038041DC: .word 0x027FFC30
-
- arm_func_start CTRDG_Init
-CTRDG_Init: ;@ 0x038041E0
- stmfd sp!, {lr}
- sub sp, sp, #4
- bl OS_InitTick
- bl OS_InitAlarm
- ldr r0, _03804270 ;@ =_03809FEC
- bl OS_CreateAlarm
- ldr r0, _03804274 ;@ =_03809FD0
- ldr r1, [r0]
- cmp r1, #0
- bne _03804264
- mov r1, #1
- str r1, [r0]
- bl CTRDGi_InitCommon
- bl OS_GetLockID
- mvn r1, #2
- cmp r0, r1
- beq _03804264
- ldr r1, _03804278 ;@ =_03809FBC
- strh r0, [r1]
- bl PXI_Init
- mov r0, #13
- ldr r1, _0380427C ;@ =FUN_038040C0
- bl PXI_SetFifoRecvCallback
- bl CTRDGi_InitModuleInfo
- mov r0, #13
- ldr r1, _03804280 ;@ =FUN_03804094
- bl PXI_SetFifoRecvCallback
- mov r0, #16
- ldr r1, _03804284 ;@ =_03804084
- bl PXI_SetFifoRecvCallback
- mov r0, #17
- ldr r1, _03804288 ;@ =FUN_03803BD4
- bl PXI_SetFifoRecvCallback
-_03804264:
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_03804270: .word _03809FEC
-_03804274: .word _03809FD0
-_03804278: .word _03809FBC
-_0380427C: .word FUN_038040C0
-_03804280: .word FUN_03804094
-_03804284: .word _03804084
-_03804288: .word FUN_03803BD4
-
arm_func_start FUN_0380428C
FUN_0380428C: ;@ 0x0380428C
stmfd sp!, {lr}
diff --git a/arm7/asm/wram_bss.s b/arm7/asm/wram_bss.s
index 5d53542a..b8123702 100644
--- a/arm7/asm/wram_bss.s
+++ b/arm7/asm/wram_bss.s
@@ -2,38 +2,6 @@
.include "global.inc"
.section .bss
- .global _03809FBC
-_03809FBC: ;0x03809FBC
- .space 0x03809FC0 - 0x03809FBC
-
- .global current_vib
-current_vib: ;0x03809FC0
- .space 0x03809FC4 - 0x03809FC0
-
- .global _03809FC4
-_03809FC4: ;0x03809FC4
- .space 0x03809FC8 - 0x03809FC4
-
- .global _03809FC8
-_03809FC8: ;0x03809FC8
- .space 0x03809FCC - 0x03809FC8
-
- .global _03809FCC
-_03809FCC: ;0x03809FCC
- .space 0x03809FD0 - 0x03809FCC
-
- .global _03809FD0
-_03809FD0: ;0x03809FD0
- .space 0x03809FD4 - 0x03809FD0
-
- .global _03809FD4
-_03809FD4: ;0x03809FD4
- .space 0x03809FEC - 0x03809FD4
-
- .global _03809FEC
-_03809FEC: ;0x03809FEC
- .space 0x0380A018 - 0x03809FEC
-
.global _0380A018
_0380A018: ;0x0380A018
.space 0x0380A038 - 0x0380A018
diff --git a/arm7/asm/wram_data.s b/arm7/asm/wram_data.s
deleted file mode 100644
index 6b7aa989..00000000
--- a/arm7/asm/wram_data.s
+++ /dev/null
@@ -1,13 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .data
-
- .global _03807704
-_03807704:
- .word 0x00000001
-
- .global _03807708
-_03807708:
- .word 0xFFFFFFFF
- .balign 2, 0 ; Don't pad with nop