11#include "libspu2_internal.h"
27 for ( v3 = 0; v3 < 24; v3 += 1 )
29 if ( (arg->voice & (1 << v3)) != 0 )
45 v7 = &_spu_RXX[512 * _spu_core + v6];
49 if ( (v8 & 0x8000) != 0 )
51 switch ( v8 & 0xF000 )
54 v10 = SPU_VOICE_LINEARIncN;
57 v10 = SPU_VOICE_LINEARIncR;
60 v10 = SPU_VOICE_LINEARDecN;
63 v10 = SPU_VOICE_LINEARDecR;
66 v10 = SPU_VOICE_EXPIncN;
69 v10 = SPU_VOICE_EXPIncR;
73 v10 = SPU_VOICE_EXPDec;
81 if ( (v9 & 0x8000) != 0 )
83 switch ( v9 & 0xF000 )
86 v12 = SPU_VOICE_LINEARIncN;
89 v12 = SPU_VOICE_LINEARIncR;
92 v12 = SPU_VOICE_LINEARDecN;
95 v12 = SPU_VOICE_LINEARDecR;
98 v12 = SPU_VOICE_EXPIncN;
101 v12 = SPU_VOICE_EXPIncR;
105 v12 = SPU_VOICE_EXPDec;
113 arg->volume.left = v8;
115 arg->volume.left = v8 + 0x8000;
117 arg->volume.right = v9;
119 arg->volume.right = v9 + 0x8000;
120 arg->volmode.left = v10;
121 arg->volmode.right = v12;
122 v16 = &_spu_RXX[512 * _spu_core + v6];
123 arg->volumex.left = v16[6];
124 arg->volumex.right = v16[7];
126 v17 = _spu_pitch2note(
127 (_spu_voice_centerNote[_spu_core][v2] >> 8) & 0xFF, (u8)_spu_voice_centerNote[_spu_core][v2], arg->pitch);
132 arg->sample_note = _spu_voice_centerNote[_spu_core][v2];
133 arg->envx = _spu_RXX[512 * _spu_core + v6 + 5];
134 arg->addr = _spu_MGFgetRXX2(224);
135 arg->loop_addr = _spu_MGFgetRXX2(226);
136 v21 = &_spu_RXX[512 * _spu_core + v6];
139 v24 = SPU_VOICE_EXPIncN;
140 if ( (v22 & 0x8000) == 0 )
141 v24 = SPU_VOICE_LINEARIncN;
143 switch ( v23 & 0xE000 )
146 v26 = SPU_VOICE_EXPDec;
149 v26 = SPU_VOICE_EXPIncN;
152 v26 = SPU_VOICE_LINEARDecN;
155 v26 = SPU_VOICE_LINEARIncN;
159 v27 = SPU_VOICE_EXPDec;
160 if ( (v23 & 0x20) == 0 )
161 v27 = SPU_VOICE_LINEARDecN;
163 arg->ar = (v22 >> 8) & 0x3F;
164 arg->dr = (u8)(v22 & 0xF0) >> 4;
165 arg->sr = (v23 >> 6) & 0x7F;
166 arg->rr = v23 & 0x1F;