PS2SDK
PS2 Homebrew Libraries
Loading...
Searching...
No Matches
s_svva.c
1/*
2# _____ ___ ____ ___ ____
3# ____| | ____| | | |____|
4# | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
5#-----------------------------------------------------------------------
6# Copyright ps2dev - http://www.ps2dev.org
7# Licenced under Academic Free License version 2.0
8# Review ps2sdk README & LICENSE files for further details.
9*/
10
11#include "libspu2_internal.h"
12
13static void __attribute__((optimize("no-unroll-loops"))) _spu_wait_SpuSetVoiceVolumeAttr(void)
14{
15 int i;
16 int v1;
17
18 v1 = 1;
19 for ( i = 0; i < 2; i += 1 )
20 {
21 v1 *= 13;
22 __asm__ __volatile__("" : "+g"(v1) : :);
23 }
24}
25
26void SpuSetVoiceVolumeAttr(int v_num, s16 voll, s16 volr, s16 voll_mode, s16 volr_mode)
27{
28 s16 v5;
29 s16 v6;
30 int v7;
31 s16 v8;
32 s16 v9;
33
34 v5 = voll & ~0x8000;
35 v6 = 0;
36 v7 = 8 * v_num;
37 switch ( voll_mode )
38 {
39 case SPU_VOICE_LINEARIncN:
40 v6 = 0x8000;
41 break;
42 case SPU_VOICE_LINEARIncR:
43 v6 = 0x9000;
44 break;
45 case SPU_VOICE_LINEARDecN:
46 v6 = 0xA000;
47 break;
48 case SPU_VOICE_LINEARDecR:
49 v6 = 0xB000;
50 break;
51 case SPU_VOICE_EXPIncN:
52 v6 = 0xC000;
53 break;
54 case SPU_VOICE_EXPIncR:
55 v6 = 0xD000;
56 break;
57 case SPU_VOICE_EXPDec:
58 v6 = 0xE000;
59 break;
60 default:
61 break;
62 }
63 v8 = volr & ~0x8000;
64 v9 = 0;
65 _spu_RXX[512 * _spu_core + v7] = v5 | v6;
66 switch ( volr_mode )
67 {
68 case SPU_VOICE_LINEARIncN:
69 v9 = 0x8000;
70 break;
71 case SPU_VOICE_LINEARIncR:
72 v9 = 0x9000;
73 break;
74 case SPU_VOICE_LINEARDecN:
75 v9 = 0xA000;
76 break;
77 case SPU_VOICE_LINEARDecR:
78 v9 = 0xB000;
79 break;
80 case SPU_VOICE_EXPIncN:
81 v9 = 0xC000;
82 break;
83 case SPU_VOICE_EXPIncR:
84 v9 = 0xD000;
85 break;
86 case SPU_VOICE_EXPDec:
87 v9 = 0xE000;
88 break;
89 default:
90 break;
91 }
92 _spu_RXX[512 * _spu_core + 1 + v7] = v8 | v9;
93 _spu_wait_SpuSetVoiceVolumeAttr();
94}
typedef __attribute__
Definition tlbfunc.c:60