aboutsummaryrefslogtreecommitdiff
path: root/libpsn00b/psxspu/spuinit.s
diff options
context:
space:
mode:
Diffstat (limited to 'libpsn00b/psxspu/spuinit.s')
-rw-r--r--libpsn00b/psxspu/spuinit.s124
1 files changed, 0 insertions, 124 deletions
diff --git a/libpsn00b/psxspu/spuinit.s b/libpsn00b/psxspu/spuinit.s
deleted file mode 100644
index 6966213..0000000
--- a/libpsn00b/psxspu/spuinit.s
+++ /dev/null
@@ -1,124 +0,0 @@
-.set noreorder
-.set noat
-
-.include "hwregs_a.h"
-
-.section .text
-
-
-.global SpuInit
-.type SpuInit, @function
-SpuInit:
-
- addiu $sp, -4
- sw $ra, 0($sp)
-
- lui $v1, IOBASE
-
- # Stop and mute everything
-
- sh $0 , SPU_CTRL($v1) # Clear control settings
- jal SpuCtrlSync
- move $a0, $0
-
- sh $0 , SPU_MASTER_VOL_L($v1) # Clear master volume
- sh $0 , SPU_MASTER_VOL_R($v1)
-
- sh $0 , SPU_REVERB_VOL_L($v1) # Clear reverb volume
- sh $0 , SPU_REVERB_VOL_R($v1)
-
- sh $0 , SPU_CD_VOL_L($v1) # Clear CD volume
- sh $0 , SPU_CD_VOL_R($v1)
-
- sh $0 , SPU_EXT_VOL_L($v1) # Clear external audio volume
- sh $0 , SPU_EXT_VOL_R($v1)
-
- sw $0 , SPU_FM_MODE($v1) # Turn off FM modes
- sw $0 , SPU_NOISE_MODE($v1) # Turn off noise modes
- sw $0 , SPU_REVERB_ON($v1) # Turn off reverb modes
-
- li $v0, 0xfffe
- sh $v0, SPU_REVERB_ADDR($v1)
-
- lui $v0, 0x0200;
- ori $v0, 0x3fff;
-
- # Clear all voices
-
- addiu $a1, $sp, -20
- sw $0 , 0($a1)
- sw $0 , 4($a1)
- sw $0 , 8($a1)
- sw $0 , 12($a1)
-
- li $a2, 23
-
-.Lclear_voices:
- jal SpuSetVoiceRaw
- move $a0, $a2
- addiu $a2, -1
- bgez $a2, .Lclear_voices
- nop
-
- addiu $v0, $0, -1 # Set all keys to off
- sw $v0, SPU_KEY_OFF($v1)
-
- li $v0, 0x4 # Set SPU data transfer control
- sh $v0, SPU_DMA_CTRL($v1) # (usually always 0x4)
-
- lw $v0, DMA_DPCR($v1) # Enable DMA channel 4 (SPU DMA)
- lui $at, 0xb
- or $v0, $at
- sw $v0, DMA_DPCR($v1)
-
- li $v0, 0xC001 # Enable SPU
- sh $v0, SPU_CTRL($v1)
- jal SpuCtrlSync
- move $a0, $v0
-
- li $v0, 0x3fff # Activate master volume
- sh $v0, SPU_MASTER_VOL_L($v1)
- sh $v0, SPU_MASTER_VOL_R($v1)
-
- sh $v0, SPU_CD_VOL_L($v1) # Activate CD volume
- sh $v0, SPU_CD_VOL_R($v1)
-
- lw $ra, 0($sp)
- addiu $sp, 4
- jr $ra
- nop
-
-
-# Waits until bits 0-5 of SPUSTAT are equal to SPUCNT
-#
-# Destroys v0, v1, a0
-#
-.global SpuCtrlSync
-.type SpuCtrlSync, @function
-SpuCtrlSync:
- lui $v1, IOBASE
- andi $a0, 0x3f
-.Lctrl_wait:
- lhu $v0, SPU_STAT($v1) # Get SPUSTAT value
- nop
- andi $v0, 0x3f
- bne $v0, $a0, .Lctrl_wait # Wait until SPUCNT and SPUSTAT are equal
- nop
- jr $ra
- nop
-
-
-# Waits until SPU has finished transfers
-#
-.global SpuWait
-.type SpuWait, @function
-SpuWait:
- lui $v0, IOBASE
- lhu $v0, SPU_STAT($v0)
- nop
- andi $v0, 0x400
- bnez $v0, SpuWait
- nop
- jr $ra
- nop
- \ No newline at end of file