Merge branch 'master' of https://github.com/martmists/pokediamond into pikalax_work

This commit is contained in:
PikalaxALT
2020-06-18 10:39:29 -04:00
5 changed files with 253 additions and 242 deletions

View File

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

248
arm7/asm/CTRDG.s Normal file
View File

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

View File

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

View File

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

View File

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