11#include "libspu2_internal.h"
36 if ( (mask & SPU_COMMON_MVOLL) != 0 )
38 if ( (mask & SPU_COMMON_MVOLMODEL) != 0 )
40 switch ( attr->mvolmode.left )
42 case SPU_VOICE_LINEARIncN:
43 mov_left_part1 = 0x8000;
45 case SPU_VOICE_LINEARIncR:
46 mov_left_part1 = 0x9000;
48 case SPU_VOICE_LINEARDecN:
49 mov_left_part1 = 0xA000;
51 case SPU_VOICE_LINEARDecR:
52 mov_left_part1 = 0xB000;
54 case SPU_VOICE_EXPIncN:
55 mov_left_part1 = 0xC000;
57 case SPU_VOICE_EXPIncR:
58 mov_left_part1 = 0xD000;
60 case SPU_VOICE_EXPDec:
61 mov_left_part1 = 0xE000;
64 left_1 = attr->mvol.left;
72 left_2 = attr->mvol.left;
78 left_1 = attr->mvol.left;
81 _spu_RXX[20 * _spu_core + 944] = (left_1 & ~0x8000) | mov_left_part1;
83 if ( (mask & SPU_COMMON_MVOLR) != 0 )
87 if ( (mask & SPU_COMMON_MVOLMODER) != 0 )
89 switch ( attr->mvolmode.right )
91 case SPU_VOICE_LINEARIncN:
92 mov_right_part1 = 0x8000;
94 case SPU_VOICE_LINEARIncR:
95 mov_right_part1 = 0x9000;
97 case SPU_VOICE_LINEARDecN:
98 mov_right_part1 = 0xa000;
100 case SPU_VOICE_LINEARDecR:
101 mov_right_part1 = 0xb000;
103 case SPU_VOICE_EXPIncN:
104 mov_right_part1 = 0xc000;
106 case SPU_VOICE_EXPIncR:
107 mov_right_part1 = 0xd000;
109 case SPU_VOICE_EXPDec:
110 mov_right_part1 = 0xe000;
113 right_1 = attr->mvol.right;
117 right_masked = right_1 & ~0x8000;
118 if ( mov_right_part1 )
123 right_2 = attr->mvol.right;
129 right_3 = attr->mvol.right;
131 right_masked = right_3 & ~0x8000;
133 _spu_RXX[20 * _spu_core + 945] = right_masked | mov_right_part1;
135 if ( (mask & SPU_COMMON_CDVOLL) != 0 )
136 _spu_RXX[20 * _spu_core + 968] = attr->cd.volume.left;
137 if ( (mask & SPU_COMMON_CDVOLR) != 0 )
138 _spu_RXX[20 * _spu_core + 969] = attr->cd.volume.right;
139 if ( (mask & SPU_COMMON_EXTVOLL) != 0 )
140 _spu_RXX[20 * _spu_core + 970] = attr->ext.volume.left;
141 if ( (mask & SPU_COMMON_EXTVOLR) != 0 )
142 _spu_RXX[20 * _spu_core + 971] = attr->ext.volume.right;
143 if ( (mask & SPU_COMMON_CDREV) != 0 )
145 regstmp1 = &_spu_RXX[512 * _spu_core];
146 if ( attr->cd.reverb == SPU_ON )
147 attrtmp1 = regstmp1[205] | 4;
149 attrtmp1 = regstmp1[205] & ~4;
150 regstmp1[205] = attrtmp1;
152 if ( (mask & SPU_COMMON_CDMIX) != 0 )
154 regstmp2 = &_spu_RXX[512 * _spu_core];
155 if ( attr->cd.mix == SPU_ON )
156 attrtmp2 = regstmp2[205] | 1;
158 attrtmp2 = regstmp2[205] & ~1;
159 regstmp2[205] = attrtmp2;
161 if ( (mask & SPU_COMMON_EXTREV) != 0 )
163 regstmp3 = &_spu_RXX[512 * _spu_core];
164 if ( attr->ext.reverb == SPU_ON )
165 attrtmp3 = regstmp3[205] | 8;
167 attrtmp3 = regstmp3[205] & ~8;
168 regstmp3[205] = attrtmp3;
170 if ( (mask & SPU_COMMON_EXTMIX) != 0 )
172 if ( attr->ext.mix == SPU_ON )
173 _spu_RXX[512 * _spu_core + 205] |= 2u;
175 _spu_RXX[512 * _spu_core + 205] &= ~2u;