mirror of
https://github.com/pret/pokediamond.git
synced 2026-08-07 03:04:19 -05:00
finish splitting CTRDG, distribute all the data
This commit is contained in:
parent
b4d34b4656
commit
343a31f8e5
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
542
arm7/asm/CTRDG_sp.s
Normal 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
|
||||
494
arm7/asm/wram2.s
494
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}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
Loading…
Reference in New Issue
Block a user