diff --git a/plugins/spu2-x/src/Mixer.cpp b/plugins/spu2-x/src/Mixer.cpp index 9e78713178..400cd95710 100644 --- a/plugins/spu2-x/src/Mixer.cpp +++ b/plugins/spu2-x/src/Mixer.cpp @@ -596,8 +596,8 @@ static __forceinline StereoOut32 MixVoice( uint coreidx, uint voiceidx ) } // Write-back of raw voice data (some zeros since the voice is "dead") - if (voiceidx==1) spu2M_WriteFast( 0x400 + (coreidx<<12) + OutPos, 0 ); - else if (voiceidx==3) spu2M_WriteFast( 0x600 + (coreidx<<12) + OutPos, 0 ); + if (voiceidx==1) spu2M_WriteFast( ( (0==coreidx) ? 0x400 : 0xc00 ) + OutPos, 0 ); + else if (voiceidx==3) spu2M_WriteFast( ( (0==coreidx) ? 0x600 : 0xe00 ) + OutPos, 0 ); return StereoOut32( 0, 0 ); } @@ -630,10 +630,10 @@ StereoOut32 V_Core::Mix( const VoiceMixSet& inVoices, const StereoOut32& Input, const VoiceMixSet Voices( clamp_mix( inVoices.Dry ), clamp_mix( inVoices.Wet ) ); // Write Mixed results To Output Area - spu2M_WriteFast( 0x1000 + (Index<<12) + OutPos, Voices.Dry.Left ); - spu2M_WriteFast( 0x1200 + (Index<<12) + OutPos, Voices.Dry.Right ); - spu2M_WriteFast( 0x1400 + (Index<<12) + OutPos, Voices.Wet.Left ); - spu2M_WriteFast( 0x1600 + (Index<<12) + OutPos, Voices.Wet.Right ); + spu2M_WriteFast( ( (0==Index) ? 0x1000 : 0x1800 ) + OutPos, Voices.Dry.Left ); + spu2M_WriteFast( ( (0==Index) ? 0x1200 : 0x1A00 ) + OutPos, Voices.Dry.Right ); + spu2M_WriteFast( ( (0==Index) ? 0x1400 : 0x1C00 ) + OutPos, Voices.Wet.Left ); + spu2M_WriteFast( ( (0==Index) ? 0x1600 : 0x1E00 ) + OutPos, Voices.Wet.Right ); // Write mixed results to logfile (if enabled)