PS2SDK
PS2 Homebrew Libraries
Loading...
Searching...
No Matches
s_scmva.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
13void SpuSetCommonMasterVolumeAttr(s16 mvol_left, s16 mvol_right, s16 mvolmode_left, s16 mvolmode_right)
14{
15 s16 v4;
16 s16 v5;
17 int v6;
18 int v7;
19
20 v4 = mvol_left;
21 v5 = mvol_right;
22 v6 = 0;
23 v7 = 0;
24 switch ( mvolmode_left )
25 {
26 case SPU_VOICE_LINEARIncN:
27 v6 = 0x8000;
28 break;
29 case SPU_VOICE_LINEARIncR:
30 v6 = 0x9000;
31 break;
32 case SPU_VOICE_LINEARDecN:
33 v6 = 0xa000;
34 break;
35 case SPU_VOICE_LINEARDecR:
36 v6 = 0xb000;
37 break;
38 case SPU_VOICE_EXPIncN:
39 v6 = 0xc000;
40 break;
41 case SPU_VOICE_EXPIncR:
42 v6 = 0xd000;
43 break;
44 case SPU_VOICE_EXPDec:
45 v6 = 0xe000;
46 break;
47 default:
48 break;
49 }
50 if ( v6 )
51 {
52 v4 = 127;
53 if ( mvol_left < 128 )
54 {
55 v4 = mvol_left;
56 if ( mvol_left < 0 )
57 v4 = 0;
58 }
59 }
60 _spu_RXX[20 * _spu_core + 944] = (v4 & ~0x8000) | v6;
61 switch ( mvolmode_right )
62 {
63 case SPU_VOICE_LINEARIncN:
64 v7 = 0x8000;
65 break;
66 case SPU_VOICE_LINEARIncR:
67 v7 = 0x9000;
68 break;
69 case SPU_VOICE_LINEARDecN:
70 v7 = 0xa000;
71 break;
72 case SPU_VOICE_LINEARDecR:
73 v7 = 0xb000;
74 break;
75 case SPU_VOICE_EXPIncN:
76 v7 = 0xc000;
77 break;
78 case SPU_VOICE_EXPIncR:
79 v7 = 0xd000;
80 break;
81 case SPU_VOICE_EXPDec:
82 v7 = 0xe000;
83 break;
84 default:
85 break;
86 }
87 if ( v7 )
88 {
89 v5 = 127;
90 if ( mvol_right < 128 )
91 {
92 v5 = mvol_right;
93 if ( mvol_right < 0 )
94 v5 = 0;
95 }
96 }
97 _spu_RXX[20 * _spu_core + 945] = (v5 & ~0x8000) | v7;
98}