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

This commit is contained in:
PikalaxALT
2020-05-01 19:46:41 -04:00
10 changed files with 1698 additions and 1656 deletions

View File

@@ -179,7 +179,13 @@ SECTIONS {
MI_uncompress.o (.text)
MI_dma_card.o (.text)
MI_init.o (.text)
libsnd.o (.text)
SND_interface.o (.text)
SND_main.o (.text)
SND_command.o (.text)
SND_alarm.o (.text)
SND_work.o (.text)
SND_util.o (.text)
SND_bank.o (.text)
libpxi.o (.text)
libfs.o (.text)
libdgt.o (.text)

77
arm9/asm/SND_alarm.s Normal file
View File

@@ -0,0 +1,77 @@
.include "asm/macros.inc"
.include "global.inc"
.text
arm_func_start SNDi_CallAlarmHandler
SNDi_CallAlarmHandler: ; 0x020CF4B0
stmdb sp!, {lr}
sub sp, sp, #0x4
ldr r3, _020CF50C ; =0x021D5300
and r2, r0, #0xff
mov r1, #0xc
mla r3, r2, r1, r3
mov r1, r0, asr #0x8
ldrb r0, [r3, #0x8]
and r1, r1, #0xff
cmp r1, r0
addne sp, sp, #0x4
ldmneia sp!, {lr}
bxne lr
ldr r1, [r3, #0x0]
cmp r1, #0x0
addeq sp, sp, #0x4
ldmeqia sp!, {lr}
bxeq lr
ldr r0, [r3, #0x4]
blx r1
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
.balign 4
_020CF50C: .word 0x021D5300
arm_func_start SNDi_SetAlarmHandler
SNDi_SetAlarmHandler:
mov r3, #0xc
mul r3, r0, r3
ldr r0, _020CF53C ; =0x021D5300
str r1, [r0, r3]
add r1, r0, r3
str r2, [r1, #0x4]
ldrb r0, [r1, #0x8]
add r0, r0, #0x1
strb r0, [r1, #0x8]
ldrb r0, [r1, #0x8]
bx lr
.balign 4
_020CF53C: .word 0x021D5300
arm_func_start SNDi_IncAlarmId
SNDi_IncAlarmId: ; 0x020CF540
ldr r2, _020CF55C ; =0x021D5300
mov r1, #0xc
mla r1, r0, r1, r2
ldrb r0, [r1, #0x8]
add r0, r0, #0x1
strb r0, [r1, #0x8]
bx lr
.balign 4
_020CF55C: .word 0x021D5300
arm_func_start SND_AlarmInit
SND_AlarmInit: ; 0x020CF560
ldr r1, _020CF58C ; =0x021D5300
mov r2, #0x0
mov r0, r2
_020CF56C:
str r0, [r1, #0x0]
str r0, [r1, #0x4]
add r2, r2, #0x1
strb r0, [r1, #0x8]
cmp r2, #0x8
add r1, r1, #0xc
blt _020CF56C
bx lr
.balign 4
_020CF58C: .word 0x021D5300

328
arm9/asm/SND_bank.s Normal file
View File

@@ -0,0 +1,328 @@
.include "asm/macros.inc"
.include "global.inc"
.text
arm_func_start SND_GetWaveDataAddress
SND_GetWaveDataAddress: ; 0x020CF768
stmdb sp!, {r4-r5,lr}
sub sp, sp, #0x4
mov r5, r0
mov r4, r1
bl SNDi_LockMutex
add r0, r5, r4, lsl #0x2
ldr r4, [r0, #0x3c]
cmp r4, #0x0
beq _020CF798
cmp r4, #0x2000000
addcc r4, r5, r4
b _020CF79C
_020CF798:
mov r4, #0x0
_020CF79C:
bl SNDi_UnlockMutex
mov r0, r4
add sp, sp, #0x4
ldmia sp!, {r4-r5,lr}
bx lr
arm_func_start SND_SetWaveDataAddress
SND_SetWaveDataAddress: ; 0x020CF7B0
stmdb sp!, {r4-r6,lr}
mov r6, r0
mov r5, r1
mov r4, r2
bl SNDi_LockMutex
add r0, r6, #0x3c
add r2, r6, r5, lsl #0x2
add r0, r0, r5, lsl #0x2
mov r1, #0x4
str r4, [r2, #0x3c]
bl DC_StoreRange
bl SNDi_UnlockMutex
ldmia sp!, {r4-r6,lr}
bx lr
arm_func_start SND_GetWaveDataCount
SND_GetWaveDataCount: ; 0x020CF7E8
ldr r0, [r0, #0x38]
bx lr
arm_func_start SND_GetNextInstData
SND_GetNextInstData: ; 0x020CF7F0
stmdb sp!, {r4-r5,lr}
sub sp, sp, #0x4
ldr r4, [r2, #0x0]
ldr r3, [r0, #0x38]
cmp r4, r3
bhs _020CF9B8
mov r12, #0x0
_020CF80C:
add r3, r0, r4, lsl #0x2
ldr r4, [r3, #0x3c]
strb r4, [r1, #0x0]
ldrb r3, [r1, #0x0]
cmp r3, #0x10
bgt _020CF850
cmp r3, #0x10
bge _020CF8A8
cmp r3, #0x5
addls pc, pc, r3, lsl #0x2
b _020CF998
_020CF838:
b _020CF998
b _020CF85C
b _020CF85C
b _020CF85C
b _020CF85C
b _020CF85C
_020CF850:
cmp r3, #0x11
beq _020CF924
b _020CF998
_020CF85C:
mov r3, r4, lsr #0x8
add r5, r0, r4, lsr #0x8
ldrh r4, [r0, r3]
ldrh r3, [r5, #0x2]
add sp, sp, #0x4
mov r0, #0x1
strh r4, [r1, #0x2]
strh r3, [r1, #0x4]
ldrh r4, [r5, #0x4]
ldrh r3, [r5, #0x6]
strh r4, [r1, #0x6]
strh r3, [r1, #0x8]
ldrh r3, [r5, #0x8]
strh r3, [r1, #0xA]
ldr r1, [r2]
add r1, r1, #0x1
str r1, [r2]
ldmia sp!, {r4-r5,lr}
bx lr
_020CF8A8:
add r5, r0, r4, lsr #0x8
b _020CF904
_020CF8B0:
mov r0, #0xc
mla r12, lr, r0, r5
ldrh r4, [r12, #0x2]
ldrh r3, [r12, #0x4]
add sp, sp, #0x4
mov r0, #0x1
strh r4, [r1, #0x0]
strh r3, [r1, #0x2]
ldrh r4, [r12, #0x6]
ldrh r3, [r12, #0x8]
strh r4, [r1, #0x4]
strh r3, [r1, #0x6]
ldrh r4, [r12, #0xa]
ldrh r3, [r12, #0xc]
strh r4, [r1, #0x8]
strh r3, [r1, #0xa]
ldr r1, [r2, #0x4]
add r1, r1, #0x1
str r1, [r2, #0x4]
ldmia sp!, {r4-r5,lr}
bx lr
_020CF904:
ldrb r4, [r5, #0x1]
ldrb r3, [r5, #0x0]
ldr lr, [r2, #0x4]
sub r3, r4, r3
add r3, r3, #0x1
cmp lr, r3
blo _020CF8B0
b _020CF998
_020CF924:
add r4, r0, r4, lsr #0x8
b _020CF98C
_020CF92C:
ldrb lr, [r4, r3]
cmp lr, #0x0
beq _020CF998
mov r0, #0xc
mla lr, r3, r0, r4
ldrh r12, [lr, #0x8]
ldrh r3, [lr, #0xa]
add sp, sp, #0x4
mov r0, #0x1
strh r12, [r1, #0x0]
strh r3, [r1, #0x2]
ldrh r12, [lr, #0xc]
ldrh r3, [lr, #0xe]
strh r12, [r1, #0x4]
strh r3, [r1, #0x6]
ldrh r12, [lr, #0x10]
ldrh r3, [lr, #0x12]
strh r12, [r1, #0x8]
strh r3, [r1, #0xa]
ldr r1, [r2, #0x4]
add r1, r1, #0x1
str r1, [r2, #0x4]
ldmia sp!, {r4-r5,lr}
bx lr
_020CF98C:
ldr r3, [r2, #0x4]
cmp r3, #0x8
blo _020CF92C
_020CF998:
ldr r3, [r2, #0x0]
add r3, r3, #0x1
str r3, [r2, #0x0]
str r12, [r2, #0x4]
ldr r4, [r2, #0x0]
ldr r3, [r0, #0x38]
cmp r4, r3
blo _020CF80C
_020CF9B8:
mov r0, #0x0
add sp, sp, #0x4
ldmia sp!, {r4-r5,lr}
bx lr
arm_func_start SND_GetFirstInstDataPos
SND_GetFirstInstDataPos: ; 0x020CF9C8
sub sp, sp, #0x8
mov r1, #0x0
str r1, [sp, #0x0]
str r1, [sp, #0x4]
str r1, [r0, #0x0]
str r1, [r0, #0x4]
add sp, sp, #0x8
bx lr
arm_func_start SND_DestroyWaveArc
SND_DestroyWaveArc: ; 0x020CF9E8
stmdb sp!, {r4-r6,lr}
mov r4, r0
bl SNDi_LockMutex
ldr r0, [r4, #0x18]
cmp r0, #0x0
beq _020CFA28
mov r5, #0x0
mov r4, #0x8
_020CFA08:
ldr r6, [r0, #0x4]
mov r1, r4
str r5, [r0, #0x0]
str r5, [r0, #0x4]
bl DC_StoreRange
mov r0, r6
cmp r6, #0x0
bne _020CFA08
_020CFA28:
bl SNDi_UnlockMutex
ldmia sp!, {r4-r6,lr}
bx lr
arm_func_start SND_DestroyBank
SND_DestroyBank: ; 0x020CFA34
stmdb sp!, {r4-r8,lr}
mov r7, r0
bl SNDi_LockMutex
add r5, r7, #0x18
mov r6, #0x0
mov r8, #0x8
mov r4, #0x3c
_020CFA50:
add r1, r7, r6, lsl #0x3
ldr r0, [r1, #0x18]
cmp r0, #0x0
beq _020CFAB8
ldr r3, [r0, #0x18]
cmp r5, r3
bne _020CFA80
ldr r2, [r1, #0x1c]
mov r1, r4
str r2, [r0, #0x18]
bl DC_StoreRange
b _020CFAB8
_020CFA80:
cmp r3, #0x0
beq _020CFAA0
_020CFA88:
ldr r0, [r3, #0x4]
cmp r5, r0
beq _020CFAA0
mov r3, r0
cmp r0, #0x0
bne _020CFA88
_020CFAA0:
add r0, r7, r6, lsl #0x3
ldr r2, [r0, #0x1c]
mov r0, r3
mov r1, r8
str r2, [r3, #0x4]
bl DC_StoreRange
_020CFAB8:
add r6, r6, #0x1
cmp r6, #0x4
add r5, r5, #0x8
blt _020CFA50
bl SNDi_UnlockMutex
ldmia sp!, {r4-r8,lr}
bx lr
arm_func_start SND_AssignWaveArc
SND_AssignWaveArc: ; 0x020CFAD4
stmdb sp!, {r4-r6,lr}
mov r6, r0
mov r5, r1
mov r4, r2
bl SNDi_LockMutex
add r3, r6, r5, lsl #0x3
ldr r2, [r3, #0x18]
mov r12, r5, lsl #0x3
cmp r2, #0x0
beq _020CFB70
cmp r4, r2
bne _020CFB10
bl SNDi_UnlockMutex
ldmia sp!, {r4-r6,lr}
bx lr
_020CFB10:
add r1, r6, #0x18
ldr r0, [r2, #0x18]
add r12, r1, r12
cmp r12, r0
bne _020CFB3C
ldr r0, [r3, #0x1c]
mov r1, #0x3c
str r0, [r2, #0x18]
ldr r0, [r3, #0x18]
bl DC_StoreRange
b _020CFB70
_020CFB3C:
cmp r0, #0x0
beq _020CFB5C
_020CFB44:
ldr r1, [r0, #0x4]
cmp r12, r1
beq _020CFB5C
mov r0, r1
cmp r1, #0x0
bne _020CFB44
_020CFB5C:
add r1, r6, r5, lsl #0x3
ldr r2, [r1, #0x1c]
mov r1, #0x8
str r2, [r0, #0x4]
bl DC_StoreRange
_020CFB70:
add r0, r6, #0x18
ldr r1, [r4, #0x18]
add r0, r0, r5, lsl #0x3
str r0, [r4, #0x18]
add r0, r6, r5, lsl #0x3
str r1, [r0, #0x1c]
str r4, [r0, #0x18]
bl SNDi_UnlockMutex
mov r0, r6
mov r1, #0x3c
bl DC_StoreRange
mov r0, r4
mov r1, #0x3c
bl DC_StoreRange
ldmia sp!, {r4-r6,lr}
bx lr

617
arm9/asm/SND_command.s Normal file
View File

@@ -0,0 +1,617 @@
.include "asm/macros.inc"
.include "global.inc"
.text
arm_func_start IsCommandAvailable
IsCommandAvailable:
stmdb sp!, {r4,lr}
bl OS_IsRunOnEmulator
_020CEC94:
cmp r0, #0x0
moveq r0, #0x1
ldmeqia sp!, {r4, lr}
bxeq lr
bl OS_DisableInterrupts
ldr r1, _020CECD0
mov r2, #0x10
str r2, [r1]
ldr r4, [r1]
bl OS_RestoreInterrupts
cmp r4, #0x0
movne r0, #0x1
moveq r0, #0x0
ldmia sp!, {r4, lr}
bx lr
_020CECD0: .word 0x04FFF200
arm_func_start AllocCommand
AllocCommand: ; 0x020CECD4
stmdb sp!, {r4,lr}
bl OS_DisableInterrupts
ldr r1, _020CED24 ; =0x021D3838
ldr r4, [r1, #0x0]
cmp r4, #0x0
bne _020CECFC
bl OS_RestoreInterrupts
_020CECF0:
mov r0, #0x0
ldmia sp!, {r4, lr}
bx lr
_020CECFC:
ldr r2, [r4, #0x0]
str r2, [r1, #0x0]
cmp r2, #0x0
ldreq r1, _020CED28 ; =0x021D3848
moveq r2, #0x0
streq r2, [r1, #0x0]
bl OS_RestoreInterrupts
mov r0, r4
ldmia sp!, {r4,lr}
bx lr
.balign 4
_020CED24: .word 0x021D3838
_020CED28: .word 0x021D3848
arm_func_start RequestCommandProc
RequestCommandProc: ; 0x020CED2C
stmdb sp!, {r4-r5,lr}
sub sp, sp, #0x4
mov r5, #0x7
mov r4, #0x0
_020CED3C:
mov r0, r5
mov r1, r4
mov r2, r4
bl PXI_SendWordByFifo
_020CED4C:
cmp r0, #0
blt _020CED3C
add sp, sp, #0x4
ldmia sp!, {r4-r5,lr}
bx lr
arm_func_start InitPXI
InitPXI: ; 0x020CED60
stmdb sp!, {r4-r6,lr}
ldr r1, _020CEDC8 ; =PxiFifoCallback
mov r0, #0x7
bl PXI_SetFifoRecvCallback
bl IsCommandAvailable
_020CED74:
cmp r0, #0x0
ldmeqia sp!, {r4-r6, lr}
bxeq lr
mov r0, #0x7
mov r1, #0x1
bl PXI_IsCallbackReady
cmp r0, #0x0
ldmneia sp!, {r4-r6, lr}
bxne lr
mov r6, #0x64
mov r5, #0x7
mov r4, #0x1
_020CEDA4:
mov r0, r6
bl OS_SpinWait
mov r0, r5
mov r1, r4
bl PXI_IsCallbackReady
cmp r0, #0x0
beq _020CEDA4
ldmia sp!, {r4-r6, lr}
bx lr
_020CEDC8: .word PxiFifoCallback
arm_func_start PxiFifoCallback
PxiFifoCallback: ; 0x020CEDCC
stmdb sp!, {r4-r5,lr}
sub sp, sp, #0x4
mov r5, r1
bl OS_DisableInterrupts
mov r4, r0
mov r0, r5
bl SNDi_CallAlarmHandler
mov r0, r4
bl OS_RestoreInterrupts
add sp, sp, #0x4
ldmia sp!, {r4-r5,lr}
bx lr
arm_func_start SND_CountWaitingCommand
SND_CountWaitingCommand: ; 0x020CEDFC
stmdb sp!, {r4,lr}
bl SND_CountFreeCommand
mov r4, r0
bl SND_CountReservedCommand
rsb r1, r4, #0x100
sub r0, r1, r0
ldmia sp!, {r4,lr}
bx lr
arm_func_start SND_CountReservedCommand
SND_CountReservedCommand: ; 0x020CEE1C
stmdb sp!, {r4,lr}
bl OS_DisableInterrupts
ldr r1, _020CEE58 ; =0x021D3840
mov r4, #0x0
ldr r1, [r1, #0x0]
cmp r1, #0x0
beq _020CEE48
_020CEE38:
ldr r1, [r1, #0x0]
add r4, r4, #0x1
cmp r1, #0x0
bne _020CEE38
_020CEE48:
bl OS_RestoreInterrupts
mov r0, r4
ldmia sp!, {r4,lr}
bx lr
.balign 4
_020CEE58: .word 0x021D3840
arm_func_start SND_CountFreeCommand
SND_CountFreeCommand: ; 0x020CEE5C
stmdb sp!, {r4,lr}
bl OS_DisableInterrupts
ldr r1, _020CEE98 ; =0x021D3838
mov r4, #0x0
ldr r1, [r1, #0x0]
cmp r1, #0x0
beq _020CEE88
_020CEE78:
ldr r1, [r1, #0x0]
add r4, r4, #0x1
cmp r1, #0x0
bne _020CEE78
_020CEE88:
bl OS_RestoreInterrupts
mov r0, r4
ldmia sp!, {r4,lr}
bx lr
.balign 4
_020CEE98: .word 0x021D3838
arm_func_start SND_IsFinishedCommandTag
SND_IsFinishedCommandTag:
stmdb sp!, {r4,lr}
mov r4, r0
bl OS_DisableInterrupts
ldr r1, _020CEEEC ; =0x021D383C
ldr r1, [r1, #0x0]
cmp r4, r1
bls _020CEECC
sub r1, r4, r1
cmp r1, #0x80000000
movcc r4, #0x0
movcs r4, #0x1
b _020CEEDC
_020CEECC:
sub r1, r1, r4
cmp r1, #0x80000000
movcc r4, #0x1
movcs r4, #0x0
_020CEEDC:
bl OS_RestoreInterrupts
mov r0, r4
ldmia sp!, {r4,lr}
bx lr
.balign 4
_020CEEEC: .word 0x021D383C
arm_func_start SND_GetCurrentCommandTag
SND_GetCurrentCommandTag: ; 0x020CEEF0
stmdb sp!, {r4,lr}
bl OS_DisableInterrupts
ldr r1, _020CEF24 ; =0x021D3840
ldr r1, [r1, #0x0]
cmp r1, #0x0
ldreq r1, _020CEF28 ; =0x021D383C
ldreq r4, [r1, #0x0]
ldrne r1, _020CEF2C ; =0x021D3858
ldrne r4, [r1, #0x0]
bl OS_RestoreInterrupts
mov r0, r4
ldmia sp!, {r4,lr}
bx lr
.balign 4
_020CEF24: .word 0x021D3840
_020CEF28: .word 0x021D383C
_020CEF2C: .word 0x021D3858
arm_func_start SND_WaitForCommandProc
SND_WaitForCommandProc: ; 0x020CEF30
stmdb sp!, {r4-r5,lr}
sub sp, sp, #0x4
mov r5, r0
bl SND_IsFinishedCommandTag
_020CEF40:
cmp r0, #0x0
addne sp, sp, #0x4
ldmneia sp!, {r4-r5, lr}
bxne lr
mov r4, #0x0
_020CEF54:
mov r0, r4
bl SND_RecvCommandReply
cmp r0, #0x0
bne _020CEF54
mov r0, r5
bl SND_IsFinishedCommandTag
cmp r0, #0x0
addne sp, sp, #0x4
ldmneia sp!, {r4-r5, lr}
bxne lr
bl RequestCommandProc
mov r0, r5
bl SND_IsFinishedCommandTag
cmp r0, #0x0
addne sp, sp, #0x4
ldmneia sp!, {r4-r5, lr}
bxne lr
mov r4, #0x1
_020CEF9C:
mov r0, r4
bl SND_RecvCommandReply
mov r0, r5
bl SND_IsFinishedCommandTag
cmp r0, #0x0
beq _020CEF9C
add sp, sp, #0x4
ldmia sp!, {r4-r5, lr}
bx lr
arm_func_start SND_FlushCommand
SND_FlushCommand: ; 0x020CEFC0
stmdb sp!, {r4-r9,lr}
sub sp, sp, #0x4
mov r5, r0
bl OS_DisableInterrupts
ldr r1, _020CF164 ; =0x021D3840
mov r4, r0
ldr r1, [r1, #0x0]
cmp r1, #0x0
bne _020CEFF8
bl OS_RestoreInterrupts
add sp, sp, #0x4
mov r0, #0x1
ldmia sp!, {r4-r9,lr}
bx lr
_020CEFF8:
ldr r1, _020CF168 ; =0x021D3854
ldr r1, [r1, #0x0]
cmp r1, #0x8
blt _020CF03C
ands r1, r5, #0x1
bne _020CF024
bl OS_RestoreInterrupts
add sp, sp, #0x4
mov r0, #0x0
ldmia sp!, {r4-r9,lr}
bx lr
_020CF024:
mov r0, #0x1
bl SND_RecvCommandReply
ldr r0, _020CF168 ; =0x021D3854
ldr r0, [r0, #0x0]
cmp r0, #0x8
bge _020CF024
_020CF03C:
ldr r0, _020CF16C ; =0x021D3B00
mov r1, #0x1800
bl DC_FlushRange
ldr r1, _020CF164 ; =0x021D3840
mov r0, #0x7
ldr r1, [r1, #0x0]
mov r2, #0x0
bl PXI_SendWordByFifo
_020CF05C:
cmp r0, #0x0
bge _020CF0E0
ands r0, r5, #0x1
bne _020CF084
mov r0, r4
bl OS_RestoreInterrupts
add sp, sp, #0x4
mov r0, #0x0
ldmia sp!, {r4-r9, lr}
bx lr
_020CF084:
ldr r1, _020CF164
mov r0, #0x7
ldr r1, [r1]
mov r2, #0x0
bl PXI_SendWordByFifo
cmp r0, #0x0
bge _020CF0E0
ldr r6, _020CF164
mov r9, #0x64
mov r8, #0x7
mov r7, #0x0
_020CF0B0:
mov r0, r4
bl OS_RestoreInterrupts
mov r0, r9
bl OS_SpinWait
bl OS_DisableInterrupts
mov r4, r0
mov r0, r8
ldr r1, [r6]
mov r2, r7
bl PXI_SendWordByFifo
cmp r0, #0x0
blt _020CF0B0
_020CF0E0:
ands r0, r5, #0x2
beq _020CF0EC
bl RequestCommandProc
_020CF0EC:
ldr r0, _020CF170
ldr r1, _020CF164
ldr r3, [r0]
ldr r5, [r1]
add r1, r3, #0x1
ldr r2, _020CF174
str r1, [r0]
str r5, [r2, r3, lsl #2]
cmp r1, #0x8
movgt r1, #0x0
ldr r2, _020CF168
strgt r1, [r0]
ldr r1, _020CF178
ldr r3, [r2]
ldr r0, [r1]
add ip, r3, #0x1
add r6, r0, #0x1
ldr r5, _020CF164
mov lr, #0x0
ldr r3, _020CF17C
mov r0, r4
str lr, [r5]
str lr, [r3]
str ip, [r2]
str r6, [r1]
bl OS_RestoreInterrupts
mov r0, #0x1
add sp, sp, #0x4
ldmia sp!, {r4-r9, lr}
bx lr
_020CF164: .word 0x021D3840
_020CF168: .word 0x021D3854
_020CF16C: .word 0x021D3B00
_020CF170: .word 0x021D3850
_020CF174: .word 0x021D385C
_020CF178: .word 0x021D3858
_020CF17C: .word 0x021D3844
arm_func_start SND_PushCommand
SND_PushCommand: ; 0x020CF180
stmdb sp!, {r4,lr}
mov r4, r0
bl OS_DisableInterrupts
ldr r2, _020CF1C0 ; =0x021D3844
ldr r1, [r2, #0x0]
cmp r1, #0x0
ldreq r1, _020CF1C4 ; =0x021D3840
streq r4, [r2, #0x0]
streq r4, [r1, #0x0]
strne r4, [r1, #0x0]
strne r4, [r2, #0x0]
mov r1, #0x0
str r1, [r4, #0x0]
bl OS_RestoreInterrupts
ldmia sp!, {r4,lr}
bx lr
.balign 4
_020CF1C0: .word 0x021D3844
_020CF1C4: .word 0x021D3840
arm_func_start SND_AllocCommand
SND_AllocCommand:
stmdb sp!, {r4,lr}
mov r4, r0
bl IsCommandAvailable
_020CF1D4:
cmp r0, #0x0
moveq r0, #0x0
ldmeqia sp!, {r4,lr}
bxeq lr
bl AllocCommand
cmp r0, #0x0
ldmneia sp!, {r4,lr}
bxne lr
ands r0, r4, #0x1
moveq r0, #0x0
ldmeqia sp!, {r4,lr}
bxeq lr
bl SND_CountWaitingCommand
cmp r0, #0x0
ble _020CF238
mov r4, #0x0
_020CF214:
mov r0, r4
bl SND_RecvCommandReply
cmp r0, #0x0
bne _020CF214
bl AllocCommand
cmp r0, #0x0
beq _020CF240
ldmia sp!, {r4,lr}
bx lr
_020CF238:
mov r0, #0x1
bl SND_FlushCommand
_020CF240:
bl RequestCommandProc
mov r4, #0x1
_020CF248:
mov r0, r4
bl SND_RecvCommandReply
bl AllocCommand
cmp r0, #0x0
beq _020CF248
ldmia sp!, {r4,lr}
bx lr
arm_func_start SND_RecvCommandReply
SND_RecvCommandReply: ; 0x020CF264
stmdb sp!, {r4-r6,lr}
mov r4, r0
bl OS_DisableInterrupts
mov r5, r0
ands r0, r4, #0x1
beq _020CF2C0
bl SNDi_GetFinishedCommandTag
ldr r4, _020CF380 ; =0x021D383C
ldr r1, [r4, #0x0]
cmp r1, r0
bne _020CF2E8
mov r6, #0x64
_020CF294:
mov r0, r5
bl OS_RestoreInterrupts
mov r0, r6
bl OS_SpinWait
bl OS_DisableInterrupts
mov r5, r0
bl SNDi_GetFinishedCommandTag
ldr r1, [r4, #0x0]
cmp r1, r0
beq _020CF294
b _020CF2E8
_020CF2C0:
bl SNDi_GetFinishedCommandTag
ldr r1, _020CF380 ; =0x021D383C
ldr r1, [r1, #0x0]
cmp r1, r0
bne _020CF2E8
mov r0, r5
bl OS_RestoreInterrupts
_020CF2DC:
mov r0, #0x0
ldmia sp!, {r4-r6, lr}
bx lr
_020CF2E8:
ldr r0, _020CF384 ; =0x021D384C
ldr r2, _020CF388 ; =0x021D385C
ldr r3, [r0, #0x0]
add r1, r3, #0x1
ldr r4, [r2, r3, lsl #0x2]
str r1, [r0, #0x0]
cmp r1, #0x8
movgt r1, #0x0
strgt r1, [r0, #0x0]
ldr r0, [r4, #0x0]
mov r1, r4
cmp r0, #0x0
beq _020CF32C
_020CF31C:
ldr r1, [r1, #0x0]
ldr r0, [r1, #0x0]
cmp r0, #0x0
bne _020CF31C
_020CF32C:
ldr r0, _020CF38C ; =0x021D3848
ldr r3, _020CF390 ; =0x021D3854
ldr r0, [r0, #0x0]
ldr r2, _020CF380 ; =0x021D383C
cmp r0, #0x0
strne r4, [r0, #0x0]
ldreq r0, _020CF394 ; =0x021D3838
ldr lr, [r3, #0x0]
streq r4, [r0, #0x0]
ldr ip, _020CF38C ; =0x021D3848
sub r6, lr, #0x1
ldr r0, [r2, #0x0]
str r1, [r12, #0x0]
add lr, r0, #0x1
mov r0, r5
str r6, [r3, #0x0]
str lr, [r2, #0x0]
bl OS_RestoreInterrupts
mov r0, r4
ldmia sp!, {r4-r6,lr}
bx lr
.balign 4
_020CF380: .word 0x021D383C
_020CF384: .word 0x021D384C
_020CF388: .word 0x021D385C
_020CF38C: .word 0x021D3848
_020CF390: .word 0x021D3854
_020CF394: .word 0x021D3838
arm_func_start SND_CommandInit
SND_CommandInit: ; 0x020CF398
stmdb sp!, {r4-r11,lr}
sub sp, sp, #0x4
bl InitPXI
ldr r3, _020CF478 ; =0x021D3B00
ldr r0, _020CF47C ; =0x021D3838
mov r4, #0x0
str r3, [r0, #0x0]
mov r1, r3
mov r0, #0x18
_020CF3BC:
add r4, r4, #0x1
mla r2, r4, r0, r1
cmp r4, #0xff
str r2, [r3], #0x18
blt _020CF3BC
ldr r7, _020CF480 ; =0x021D4B00
mov r10, #0x0
ldr r5, _020CF484 ; =0x021D3840
ldr r4, _020CF488 ; =0x021D3844
ldr lr, _020CF48C ; =0x021D3854
ldr ip, _020CF490 ; =0x021D384C
ldr r3, _020CF494 ; =0x021D3850
ldr r1, _020CF498 ; =0x021D383C
ldr sb, _020CF49C ; =0x021D52E8
ldr r6, _020CF4A0 ; =0x021D3848
ldr r2, _020CF4A4 ; =0x021D3858
mov r8, #0x1
ldr r0, _020CF4A8 ; =0x021D3880
ldr fp, _020CF4AC ; =0x021D5360
str r9, [r6, #0x0]
str r10, [r7, #0x7e8]
str r10, [r5, #0x0]
str r10, [r4, #0x0]
str r10, [lr, #0x0]
str r10, [r12, #0x0]
str r10, [r3, #0x0]
str r8, [r2, #0x0]
str r10, [r1, #0x0]
str r0, [r11, #0x0]
bl SNDi_InitSharedWork
mov r0, r8
bl SND_AllocCommand
_020CF43C:
cmp r0, #0x0
addeq sp, sp, #0x4
ldmeqia sp!, {r4-r11, lr}
bxeq lr
mov r2, #0x1D
mov r1, fp
str r2, [r0, #0x4]
ldr r1, [r1]
str r1, [r0, #0x8]
bl SND_PushCommand
mov r0, r8
bl SND_FlushCommand
add sp, sp, #0x4
ldmia sp!, {r4-r11, lr}
bx lr
_020CF478: .word 0x021D3B00
_020CF47C: .word 0x021D3838
_020CF480: .word 0x021D4B00
_020CF484: .word 0x021D3840
_020CF488: .word 0x021D3844
_020CF48C: .word 0x021D3854
_020CF490: .word 0x021D384C
_020CF494: .word 0x021D3850
_020CF498: .word 0x021D383C
_020CF49C: .word 0x021D52E8
_020CF4A0: .word 0x021D3848
_020CF4A4: .word 0x021D3858
_020CF4A8: .word 0x021D3880
_020CF4AC: .word 0x021D5360

459
arm9/asm/SND_interface.s Normal file
View File

@@ -0,0 +1,459 @@
.include "asm/macros.inc"
.include "global.inc"
.text
arm_func_start PushCommand_impl
PushCommand_impl: ; 0x020CE66C
stmdb sp!, {r4-r7,lr}
sub sp, sp, #0x4
mov r7, r0
mov r0, #0x1
mov r6, r1
mov r5, r2
mov r4, r3
bl SND_AllocCommand
_020CE68C:
cmp r0, #0x0
addeq sp, sp, #0x4
ldmeqia sp!, {r4-r7, lr}
bxeq lr
str r7, [r0, #0x4]
str r6, [r0, #0x8]
str r5, [r0, #0xc]
ldr r1, [sp, #0x18]
str r4, [r0, #0x10]
str r1, [r0, #0x14]
bl SND_PushCommand
add sp, sp, #0x4
ldmia sp!, {r4-r7, lr}
bx lr
arm_func_start SNDi_SetTrackParam
SNDi_SetTrackParam: ; 0x020CE6C4
stmdb sp!, {lr}
sub sp, sp, #0x4
ldr r12, [sp, #0x8]
mov lr, r2
str r3, [sp, #0x0]
mov r2, r1
orr r1, r0, r12, lsl #0x18
mov r3, lr
mov r0, #0x7
bl PushCommand_impl
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
arm_func_start FUN_020CE6F8
FUN_020CE6F8: ; 0x020CE6F8
stmdb sp!, {lr}
sub sp, sp, #0x4
mov lr, r1
mov r12, r2
str r3, [sp, #0x0]
mov r1, r0
mov r2, lr
mov r3, r12
mov r0, #0x6
bl PushCommand_impl
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
arm_func_start SND_ResetMasterPan
SND_ResetMasterPan: ; 0x020CE72C
stmdb sp!, {lr}
sub sp, sp, #0x4
mov r2, #0x0
mov r3, r2
mov r0, #0x18
mvn r1, #0x0
str r2, [sp, #0x0]
bl PushCommand_impl
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
arm_func_start SND_SetMasterPan
SND_SetMasterPan: ; 0x020CE758
stmdb sp!, {lr}
sub sp, sp, #0x4
mov r2, #0x0
mov r1, r0
mov r3, r2
mov r0, #0x18
str r2, [sp, #0x0]
bl PushCommand_impl
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
arm_func_start SND_SetOutputSelector
SND_SetOutputSelector: ; 0x020CE784
stmdb sp!, {lr}
sub sp, sp, #0x4
mov lr, r1
mov r12, r2
str r3, [sp, #0x0]
mov r1, r0
mov r2, lr
mov r3, r12
mov r0, #0x19
bl PushCommand_impl
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
arm_func_start SND_InvalidateWaveData
SND_InvalidateWaveData: ; 0x020CE7B8
stmdb sp!, {lr}
sub sp, sp, #0x4
mov r2, r1
mov r3, #0x0
mov r1, r0
mov r0, #0x20
str r3, [sp, #0x0]
bl PushCommand_impl
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
arm_func_start SND_InvalidateBankData
SND_InvalidateBankData: ; 0x020CE7E4
stmdb sp!, {lr}
sub sp, sp, #0x4
mov r2, r1
mov r3, #0x0
mov r1, r0
mov r0, #0x1f
str r3, [sp, #0x0]
bl PushCommand_impl
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
arm_func_start SND_InvalidateSeqData
SND_InvalidateSeqData: ; 0x020CE810
stmdb sp!, {lr}
sub sp, sp, #0x4
mov r2, r1
mov r3, #0x0
mov r1, r0
mov r0, #0x1e
str r3, [sp, #0x0]
bl PushCommand_impl
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
arm_func_start SND_SetupChannelPcm
SND_SetupChannelPcm: ; 0x020CE83C
stmdb sp!, {r4-r5,lr}
sub sp, sp, #0x4
ldr r12, [sp, #0x18]
mov r3, r3, lsl #0x1a
orr r4, r3, r1, lsl #0x18
ldr r5, [sp, #0x24]
mov r3, r12, lsl #0x18
ldr r1, [sp, #0x1c]
ldr r12, [sp, #0x10]
orr r4, r4, r5, lsl #0x10
orr r4, r12, r4
ldr lr, [sp, #0x20]
orr r3, r3, r1, lsl #0x16
ldr r12, [sp, #0x14]
orr r1, r0, lr, lsl #0x10
orr r3, r12, r3
mov r0, #0xe
str r4, [sp, #0x0]
bl PushCommand_impl
add sp, sp, #0x4
ldmia sp!, {r4-r5,lr}
bx lr
arm_func_start SND_SetChannelPan
SND_SetChannelPan: ; 0x020CE894
stmdb sp!, {lr}
sub sp, sp, #0x4
mov r2, r1
mov r3, #0x0
mov r1, r0
mov r0, #0x15
str r3, [sp, #0x0]
bl PushCommand_impl
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
arm_func_start SND_SetChannelVolume
SND_SetChannelVolume: ; 0x020CE8C0
stmdb sp!, {lr}
sub sp, sp, #0x4
mov lr, r1
mov r3, r2
mov r12, #0x0
mov r1, r0
mov r2, lr
mov r0, #0x14
str r12, [sp, #0x0]
bl PushCommand_impl
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
arm_func_start SND_SetChannelTimer
SND_SetChannelTimer: ; 0x020CE8F4
stmdb sp!, {lr}
sub sp, sp, #0x4
mov r2, r1
mov r3, #0x0
mov r1, r0
mov r0, #0x13
str r3, [sp, #0x0]
bl PushCommand_impl
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
arm_func_start SND_UnlockChannel
SND_UnlockChannel: ; 0x020CE920
stmdb sp!, {lr}
sub sp, sp, #0x4
mov r2, r1
mov r3, #0x0
mov r1, r0
mov r0, #0x1b
str r3, [sp, #0x0]
bl PushCommand_impl
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
arm_func_start SND_LockChannel
SND_LockChannel: ; 0x020CE94C
stmdb sp!, {lr}
sub sp, sp, #0x4
mov r2, r1
mov r3, #0x0
mov r1, r0
mov r0, #0x1a
str r3, [sp, #0x0]
bl PushCommand_impl
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
arm_func_start SND_SetupAlarm
SND_SetupAlarm: ; 0x020CE978
stmdb sp!, {r4-r6,lr}
sub sp, sp, #0x8
mov r4, r2
mov r5, r1
ldr r2, [sp, #0x18]
mov r6, r0
mov r1, r3
bl SNDi_SetAlarmHandler
_020CE998:
str r0, [sp]
mov r1, r6
mov r2, r5
mov r3, r4
mov r0, #0x12
bl PushCommand_impl
add sp, sp, #0x8
ldmia sp!, {r4-r6, lr}
bx lr
arm_func_start SND_SetupCapture
SND_SetupCapture: ; 0x020CE9BC
stmdb sp!, {lr}
sub sp, sp, #0x4
mov r0, r0, lsl #0x1f
orr r0, r0, r1, lsl #0x1e
ldr r12, [sp, #0x8]
mov r1, r2
orr r0, r0, r12, lsl #0x1d
ldr r2, [sp, #0xc]
mov lr, #0x0
orr r0, r0, r2, lsl #0x1c
ldr r12, [sp, #0x10]
mov r2, r3
orr r3, r0, r12, lsl #0x1b
mov r0, #0x11
str lr, [sp, #0x0]
bl PushCommand_impl
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
arm_func_start SND_StopTimer
SND_StopTimer: ; 0x020CEA08
stmdb sp!, {r4-r9,lr}
sub sp, sp, #0x4
mov r7, r2
mov r9, r0
mov r8, r1
mov r6, r3
mov r4, r7
mov r5, #0x0
b _020CEA44
_020CEA2C:
ands r0, r4, #0x1
beq _020CEA3C
mov r0, r5
bl SNDi_IncAlarmId
_020CEA3C:
add r5, r5, #0x1
mov r4, r4, lsr #0x1
_020CEA44:
cmp r5, #0x8
bge _020CEA54
cmp r4, #0x0
bne _020CEA2C
_020CEA54:
mov r1, r9
mov r2, r8
mov r3, r7
mov r0, #0xd
str r6, [sp, #0x0]
bl PushCommand_impl
add sp, sp, #0x4
ldmia sp!, {r4-r9,lr}
bx lr
arm_func_start SND_StartTimer
SND_StartTimer: ; 0x020CEA78
stmdb sp!, {lr}
sub sp, sp, #0x4
mov lr, r1
mov r12, r2
str r3, [sp, #0x0]
mov r1, r0
mov r2, lr
mov r3, r12
mov r0, #0xc
bl PushCommand_impl
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
arm_func_start SND_SetTrackAllocatableChannel
SND_SetTrackAllocatableChannel: ; 0x020CEAAC
stmdb sp!, {lr}
sub sp, sp, #0x4
mov lr, r1
mov r3, r2
mov r12, #0x0
mov r1, r0
mov r2, lr
mov r0, #0x9
str r12, [sp, #0x0]
bl PushCommand_impl
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
arm_func_start SND_SetTrackPan
SND_SetTrackPan: ; 0x020CEAE0
stmdb sp!, {lr}
sub sp, sp, #0x4
mov r3, r2
mov r12, #0x1
mov r2, #0x9
str r12, [sp, #0x0]
bl SNDi_SetTrackParam
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
arm_func_start SND_SetTrackPitch
SND_SetTrackPitch: ; 0x020CEB08
stmdb sp!, {lr}
sub sp, sp, #0x4
mov r3, r2
mov r12, #0x2
mov r2, #0xc
str r12, [sp, #0x0]
bl SNDi_SetTrackParam
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
arm_func_start SND_SetPlayerChannelPriority
SND_SetPlayerChannelPriority: ; 0x020CEB30
ldr ip, _020CEB44 ; =FUN_020CE6F8
mov r2, r1
mov r1, #0x4
mov r3, #0x1
bx r12
.balign 4
_020CEB44: .word FUN_020CE6F8
arm_func_start SND_SetPlayerVolume
SND_SetPlayerVolume: ; 0x020CEB48
ldr ip, _020CEB5C ; =FUN_020CE6F8
mov r2, r1
mov r1, #0x6
mov r3, #0x2
bx r12
.balign 4
_020CEB5C: .word FUN_020CE6F8
arm_func_start SND_PauseSeq
SND_PauseSeq: ; 0x020CEB60
stmdb sp!, {lr}
sub sp, sp, #0x4
mov r2, r1
mov r3, #0x0
mov r1, r0
mov r0, #0x4
str r3, [sp, #0x0]
bl PushCommand_impl
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
arm_func_start SND_StartPreparedSeq
SND_StartPreparedSeq: ; 0x020CEB8C
stmdb sp!, {lr}
sub sp, sp, #0x4
mov r2, #0x0
mov r1, r0
mov r3, r2
mov r0, #0x3
str r2, [sp, #0x0]
bl PushCommand_impl
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
arm_func_start SND_PrepareSeq
SND_PrepareSeq: ; 0x020CEBB8
stmdb sp!, {lr}
sub sp, sp, #0x4
mov lr, r1
mov r12, r2
str r3, [sp, #0x0]
mov r1, r0
mov r2, lr
mov r3, r12
mov r0, #0x2
bl PushCommand_impl
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
arm_func_start SND_StopSeq
SND_StopSeq: ; 0x020CEBEC
stmdb sp!, {lr}
sub sp, sp, #0x4
mov r2, #0x0
mov r1, r0
mov r3, r2
mov r0, #0x1
str r2, [sp, #0x0]
bl PushCommand_impl
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr

45
arm9/asm/SND_main.s Normal file
View File

@@ -0,0 +1,45 @@
.include "asm/macros.inc"
.include "global.inc"
.text
arm_func_start SNDi_UnlockMutex
SNDi_UnlockMutex: ; 0x020CEC18
ldr ip, _020CEC24 ; =OS_UnlockMutex
ldr r0, _020CEC28 ; =0x021D3820
bx r12
.balign 4
_020CEC24: .word OS_UnlockMutex
_020CEC28: .word 0x021D3820
arm_func_start SNDi_LockMutex
SNDi_LockMutex: ; 0x020CEC2C
ldr ip, _020CEC38 ; =OS_LockMutex
ldr r0, _020CEC3C ; =0x021D3820
bx r12
.balign 4
_020CEC38: .word OS_LockMutex
_020CEC3C: .word 0x021D3820
arm_func_start SND_Init
SND_Init: ; 0x020CEC40
stmdb sp!, {lr}
sub sp, sp, #0x4
ldr r1, _020CEC84 ; =0x021D381C
ldr r0, [r1, #0x0]
cmp r0, #0x0
addne sp, sp, #0x4
ldmneia sp!, {lr}
bxne lr
ldr r0, _020CEC88 ; =0x021D3820
mov r2, #0x1
str r2, [r1, #0x0]
bl OS_InitMutex
bl SND_CommandInit
bl SND_AlarmInit
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
.balign 4
_020CEC84: .word 0x021D381C
_020CEC88: .word 0x021D3820

39
arm9/asm/SND_util.s Normal file
View File

@@ -0,0 +1,39 @@
.include "asm/macros.inc"
.include "global.inc"
.text
arm_func_start SND_CalcChannelVolume
SND_CalcChannelVolume: ; 0x020CF6F4
ldr r1, _020CF75C ; =0xFFFFFD2D
cmp r0, r1
movlt r0, r1
blt _020CF70C
cmp r0, #0x0
movgt r0, #0x0
_020CF70C:
ldr r1, _020CF760 ; =0x000002D3
ldr r2, _020CF764 ; =0x02103CAC
add r3, r0, r1
mvn r1, #0xef
cmp r0, r1
ldrb r2, [r2, r3]
movlt r0, #0x3
blt _020CF74C
mvn r1, #0x77
cmp r0, r1
movlt r0, #0x2
blt _020CF74C
mvn r1, #0x3b
cmp r0, r1
movlt r0, #0x1
movge r0, #0x0
_020CF74C:
orr r0, r2, r0, lsl #0x8
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bx lr
.balign 4
_020CF75C: .word 0xFFFFFD2D
_020CF760: .word 0x000002D3
_020CF764: .word 0x02103CAC

115
arm9/asm/SND_work.s Normal file
View File

@@ -0,0 +1,115 @@
.include "asm/macros.inc"
.include "global.inc"
.text
arm_func_start SNDi_InitSharedWork
SNDi_InitSharedWork: ; 0x020CF590
stmdb sp!, {r4,lr}
mov r4, #0x0
str r4, [r0, #0x4]
strh r4, [r0, #0x8]
strh r4, [r0, #0xa]
mov r12, r0
str r4, [r0, #0x0]
mov r3, r4
mvn r2, #0x0
_020CF5B4:
mov lr, r3
str r3, [r12, #0x40]
_020CF5BC:
add r1, r12, lr, lsl #0x1
add lr, lr, #0x1
strh r2, [r1, #0x20]
cmp lr, #0x10
blt _020CF5BC
add r4, r4, #0x1
cmp r4, #0x10
add r12, r12, #0x24
blt _020CF5B4
mov r3, #0x0
mvn r2, #0x0
_020CF5E8:
add r1, r0, r3, lsl #0x1
add r1, r1, #0x200
add r3, r3, #0x1
strh r2, [r1, #0x60]
cmp r3, #0x10
blt _020CF5E8
mov r1, #0x280
bl DC_FlushRange
ldmia sp!, {r4,lr}
bx lr
arm_func_start SNDi_GetFinishedCommandTag
SNDi_GetFinishedCommandTag: ; 0x020CF610
stmdb sp!, {lr}
sub sp, sp, #0x4
ldr r0, _020CF640 ; =0x021D5360
mov r1, #0x4
ldr r0, [r0, #0x0]
bl DC_InvalidateRange
ldr r0, _020CF640 ; =0x021D5360
ldr r0, [r0, #0x0]
ldr r0, [r0, #0x0]
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
.balign 4
_020CF640: .word 0x021D5360
arm_func_start SND_GetPlayerTickCounter
SND_GetPlayerTickCounter: ; 0x020CF644
stmdb sp!, {r4,lr}
mov r1, #0x24
mul r4, r0, r1
ldr r0, _020CF680 ; =0x021D5360
mov r1, #0x4
ldr r0, [r0, #0x0]
add r0, r0, #0x40
add r0, r0, r4
bl DC_InvalidateRange
ldr r0, _020CF680 ; =0x021D5360
ldr r0, [r0, #0x0]
add r0, r0, r4
ldr r0, [r0, #0x40]
ldmia sp!, {r4,lr}
bx lr
.balign 4
_020CF680: .word 0x021D5360
arm_func_start SND_GetChannelStatus
SND_GetChannelStatus: ; 0x020CF684
stmdb sp!, {lr}
sub sp, sp, #0x4
ldr r0, _020CF6B8 ; =0x021D5360
mov r1, #0x2
ldr r0, [r0, #0x0]
add r0, r0, #0x8
bl DC_InvalidateRange
ldr r0, _020CF6B8 ; =0x021D5360
ldr r0, [r0, #0x0]
ldrh r0, [r0, #0x8]
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
.balign 4
_020CF6B8: .word 0x021D5360
arm_func_start SND_GetPlayerStatus
SND_GetPlayerStatus: ; 0x020CF6BC
stmdb sp!, {lr}
sub sp, sp, #0x4
ldr r0, _020CF6F0 ; =0x021D5360
mov r1, #0x4
ldr r0, [r0, #0x0]
add r0, r0, #0x4
bl DC_InvalidateRange
ldr r0, _020CF6F0 ; =0x021D5360
ldr r0, [r0, #0x0]
ldr r0, [r0, #0x4]
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
.balign 4
_020CF6F0: .word 0x021D5360

File diff suppressed because it is too large Load Diff

View File

@@ -3592,8 +3592,11 @@
.extern SDK_STATIC_BSS_END
.extern SDK_STATIC_BSS_START
.extern SDK_SYS_STACKSIZE
.extern SND_AlarmInit
.extern SND_AllocCommand
.extern SND_AssignWaveArc
.extern SND_CalcChannelVolume
.extern SND_CommandInit
.extern SND_DestroyBank
.extern SND_DestroyWaveArc
.extern SND_FlushCommand
@@ -3613,6 +3616,7 @@
.extern SND_LockChannel
.extern SND_PauseSeq
.extern SND_PrepareSeq
.extern SND_PushCommand
.extern SND_RecvCommandReply
.extern SND_ResetMasterPan
.extern SND_SetChannelPan
@@ -3635,6 +3639,13 @@
.extern SND_StopTimer
.extern SND_UnlockChannel
.extern SND_WaitForCommandProc
.extern SNDi_CallAlarmHandler
.extern SNDi_GetFinishedCommandTag
.extern SNDi_IncAlarmId
.extern SNDi_InitSharedWork
.extern SNDi_LockMutex
.extern SNDi_SetAlarmHandler
.extern SNDi_UnlockMutex
.extern STD_CopyLString
.extern SVC_Sqrt
.extern SVC_WaitByLoop