mirror of
https://github.com/pret/pokediamond.git
synced 2026-09-27 19:06:45 -05:00
Merge branch 'master' of https://github.com/martmists/pokediamond into pikalax_work
This commit is contained in:
@@ -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
248
arm7/asm/CTRDG.s
Normal 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
|
||||
238
arm7/asm/wram2.s
238
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}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user