11#include "libspu2_internal.h"
32 v5 = &_spu_RXX[512 * _spu_core + 8 * v_num];
35 if ( (v6 & 0x8000) != 0 )
37 switch ( v6 & 0xF000 )
40 v3 = SPU_VOICE_LINEARIncN;
43 v3 = SPU_VOICE_LINEARIncR;
46 v3 = SPU_VOICE_LINEARDecN;
49 v3 = SPU_VOICE_LINEARDecR;
52 v3 = SPU_VOICE_EXPIncN;
55 v3 = SPU_VOICE_EXPIncR;
59 v3 = SPU_VOICE_EXPDec;
67 if ( (v7 & 0x8000) != 0 )
69 switch ( v7 & 0xF000 )
72 v10 = SPU_VOICE_LINEARIncN;
75 v10 = SPU_VOICE_LINEARIncR;
78 v10 = SPU_VOICE_LINEARDecN;
81 v10 = SPU_VOICE_LINEARDecR;
84 v10 = SPU_VOICE_EXPIncN;
87 v10 = SPU_VOICE_EXPIncR;
91 v10 = SPU_VOICE_EXPDec;
99 arg->volume.left = v6;
101 arg->volume.left = v6 + 0x8000;
103 arg->volume.right = v7;
105 arg->volume.right = v7 + 0x8000;
106 arg->volmode.left = v3;
107 arg->volmode.right = v10;
108 v14 = &_spu_RXX[512 * _spu_core + v4];
109 arg->volumex.left = v14[6];
110 arg->volumex.right = v14[7];
112 v15 = _spu_pitch2note(
113 (_spu_voice_centerNote[_spu_core][v_num] >> 8) & 0xFF, (u8)_spu_voice_centerNote[_spu_core][v_num], arg->pitch);
118 arg->sample_note = _spu_voice_centerNote[_spu_core][v_num];
119 arg->envx = _spu_RXX[512 * _spu_core + v4 + 5];
120 arg->addr = _spu_MGFgetRXX2(224);
121 arg->loop_addr = _spu_MGFgetRXX2(226);
122 v19 = &_spu_RXX[512 * _spu_core + v4];
125 v22 = SPU_VOICE_EXPIncN;
126 if ( (v20 & 0x8000) == 0 )
127 v22 = SPU_VOICE_LINEARIncN;
129 switch ( v21 & 0xE000 )
132 v24 = SPU_VOICE_EXPDec;
135 v24 = SPU_VOICE_EXPIncN;
138 v24 = SPU_VOICE_LINEARDecN;
141 v24 = SPU_VOICE_LINEARIncN;
145 v25 = SPU_VOICE_EXPDec;
146 if ( (v21 & 0x20) == 0 )
147 v25 = SPU_VOICE_LINEARDecN;
149 arg->ar = (v20 >> 8) & 0x3F;
150 arg->dr = (u8)(v20 & 0xF0) >> 4;
151 arg->sr = (v21 >> 6) & 0x7F;
152 arg->rr = v21 & 0x1F;