Files
pokediamond/arm7/asm/OS_reset.s
T
2020-06-05 21:46:12 +01:00

91 lines
1.6 KiB
ArmAsm

.include "asm/macros.inc"
.include "global.inc"
.text
arm_func_start OS_ResetSystem
OS_ResetSystem: ; 0x037FB0E0
stmfd sp!, {lr}
sub sp, sp, #4
mov r0, #0
bl MI_StopDma
mov r0, #1
bl MI_StopDma
mov r0, #2
bl MI_StopDma
mov r0, #3
bl MI_StopDma
mov r0, #262144 ; 0x40000
bl OS_SetIrqMask
mvn r0, #0
bl OS_ResetRequestIrqMask
bl SND_Shutdown
mov r0, #16
bl OSi_SendToPxi
bl FUN_038073EC
add sp, sp, #4
ldmia sp!, {lr}
bx lr
arm_func_start OSi_SendToPxi
OSi_SendToPxi: ; 0x037FB134
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0, lsl #8
mov r5, #12
mov r4, #0
_037FB144:
mov r0, r5
mov r1, r6
mov r2, r4
bl PXI_SendWordByFifo
cmp r0, #0
bne _037FB144
ldmia sp!, {r4, r5, r6, lr}
bx lr
arm_func_start OSi_CommonCallback
OSi_CommonCallback: ; 0x037FB164
stmfd sp!, {lr}
sub sp, sp, #4
and r0, r1, #32512 ; 0x7f00
mov r0, r0, lsl #8
mov r0, r0, lsr #16
cmp r0, #16
moveq r1, #1
ldreq r0, _037FB19C ; =_03807954
streqh r1, [r0]
beq _037FB190
bl OS_Terminate
_037FB190:
add sp, sp, #4
ldmia sp!, {lr}
bx lr
_037FB19C: .word _03807954
arm_func_start OS_IsResetOccurred
OS_IsResetOccurred: ; 0x037FB1A0
ldr r0, _037FB1AC ; =_03807954
ldrh r0, [r0]
bx lr
_037FB1AC: .word _03807954
arm_func_start OS_InitReset
OS_InitReset: ; 0x037FB1B0
stmfd sp!, {lr}
sub sp, sp, #4
ldr r0, _037FB1E8 ; =_03807950
ldrh r1, [r0]
cmp r1, #0
bne _037FB1DC
mov r1, #1
strh r1, [r0]
mov r0, #12
ldr r1, _037FB1EC ; =OSi_CommonCallback
bl PXI_SetFifoRecvCallback
_037FB1DC:
add sp, sp, #4
ldmia sp!, {lr}
bx lr
_037FB1E8: .word _03807950
_037FB1EC: .word OSi_CommonCallback