From f3e040230772f978540a71aea43dfde200992922 Mon Sep 17 00:00:00 2001 From: "John Wilbert M. Villamor" Date: Sat, 6 Apr 2019 10:11:07 +0800 Subject: First commit --- libpsn00b/psxspu/spusetvoiceraw.s | 60 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 libpsn00b/psxspu/spusetvoiceraw.s (limited to 'libpsn00b/psxspu/spusetvoiceraw.s') diff --git a/libpsn00b/psxspu/spusetvoiceraw.s b/libpsn00b/psxspu/spusetvoiceraw.s new file mode 100644 index 0000000..43450f6 --- /dev/null +++ b/libpsn00b/psxspu/spusetvoiceraw.s @@ -0,0 +1,60 @@ +.set noreorder + +.include "hwregs_a.h" + + +.set PARAM_L, 0 +.set PARAM_R, 2 +.set PARAM_FREQ, 4 +.set PARAM_ADDR, 6 +.set PARAM_LOOP, 8 +.set PARAM_RES, 10 +.set PARAM_ADSR, 12 + + +.section .text + +.global SpuSetVoiceRaw +.type SpuSetVoiceRaw, @function +SpuSetVoiceRaw: + + # a0 - Voice number + # a1 - Address to parameters + + sll $a0, 4 + addiu $a0, SPU_VOICE_BASE + + lui $v1, IOBASE + or $a0, $v1 + + lhu $v0, PARAM_L($a1) + nop + sh $v0, SPU_VOICE_VOL_L($a0) + + lhu $v0, PARAM_R($a1) + nop + sh $v0, SPU_VOICE_VOL_R($a0) + + lhu $v0, PARAM_FREQ($a1) + nop + sh $v0, SPU_VOICE_FREQ($a0) + + lhu $v0, PARAM_ADDR($a1) + nop + sh $v0, SPU_VOICE_ADDR($a0) + + lhu $v0, PARAM_LOOP($a1) + nop + sh $v0, SPU_VOICE_LOOP($a0) + + + lw $v0, PARAM_ADSR($a1) + nop + sh $v0, SPU_VOICE_ADSR_L($a0) + srl $v0, 16 + sh $v0, SPU_VOICE_ADSR_H($a0) + + + jr $ra + nop + \ No newline at end of file -- cgit v1.2.3