11#include "libsnd2_internal.h"
15 unsigned int right_vol_calc;
17 unsigned int left_vol_calc;
18 unsigned int left_vol_final;
19 unsigned int right_vol_final;
25 right_vol_calc = _svm_cur.m_voll * 0x3FFF * _svm_vh->mvol / 0x3F01 * _svm_cur.m_mvol * _svm_cur.m_vol / 0x3F01u;
26 left_vol_calc = right_vol_calc;
28 if ( _svm_cur.m_seq_sep_no != 33 )
30 score_struct = &_ss_score[(_svm_cur.m_seq_sep_no & 0xFF)][(_svm_cur.m_seq_sep_no & 0xFF00) >> 8];
32 if ( score_struct != NULL )
34 left_vol_calc = right_vol_calc * (u16)score_struct->m_voll / 0x7F;
35 right_vol_calc = right_vol_calc * (u16)score_struct->m_volr / 0x7F;
37 if ( (
unsigned int)_svm_cur.m_pan >= 0x40 )
39 right_vol_final = right_vol_calc;
40 left_vol_final = left_vol_calc * (127 - _svm_cur.m_pan) / 0x3F;
44 left_vol_final = left_vol_calc;
45 right_vol_final = right_vol_calc * _svm_cur.m_pan / 0x3F;
47 if ( (
unsigned int)_svm_cur.m_mpan >= 0x40 )
48 left_vol_final = left_vol_final * (127 - _svm_cur.m_mpan) / 0x3F;
50 right_vol_final = right_vol_final * _svm_cur.m_mpan / 0x3F;
51 if ( (
unsigned int)_svm_cur.m_unk05 >= 0x40 )
52 left_vol_final = left_vol_final * (127 - _svm_cur.m_unk05) / 0x3F;
54 right_vol_final = _svm_cur.m_unk05 * right_vol_final / 0x3F;
55 if ( _svm_stereo_mono == 1 )
57 if ( left_vol_final >= right_vol_final )
58 right_vol_final = left_vol_final;
60 left_vol_final = right_vol_final;
62 if ( score_struct != NULL )
64 left_vol_final = left_vol_final * left_vol_final / 0x3FFF;
65 right_vol_final = right_vol_final * right_vol_final / 0x3FFF;
67 SpuSetNoiseClock((_svm_cur.m_note - _svm_cur.m_centre) & 0x3F);
68 _svm_sreg_buf[vc].m_vol_left = left_vol_final;
69 _svm_sreg_buf[vc].m_vol_right = right_vol_final;
70 _svm_sreg_dirty[vc] |= 3;
81 voice_struct = &_svm_voice[vc];
82 voice_struct->m_pitch = 10;
83 for ( v11 = 0; (s16)v11 < _SsVmMaxVoice; v11 += 1 )
85 if ( (_snd_vmask & (1 << v11)) == 0 )
89 voice_struct_1 = &_svm_voice[v11];
90 voice_struct_1->m_unk1d &= 1u;
93 voice_struct->m_unk1d = 2;
96 _svm_okof1 &= ~_svm_okon1;
97 _svm_okof2 &= ~_svm_okon2;
98 if ( (_svm_cur.m_mode & 4) != 0 )
105 _svm_orev1 &= ~(u16)v8;
106 _svm_orev2 &= ~(u16)v9;