finish splitting CTRDG, distribute all the data

This commit is contained in:
red031000 2020-06-17 22:05:11 +01:00
parent b4d34b4656
commit 343a31f8e5
No known key found for this signature in database
GPG Key ID: A3C87CFF2DC536C2
6 changed files with 543 additions and 541 deletions

View File

@ -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
}

View File

@ -215,4 +215,3 @@ _038010C0:
bx lr
_038010CC: .word _038099A4
_038010D0: .word FUN_03801048
.balign 2, 0 ; Don't pad with nop

542
arm7/asm/CTRDG_sp.s Normal file
View File

@ -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

View File

@ -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}

View File

@ -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

View File

@ -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