- Continue voice processing even if the voice is off, as per SPU2 specs.
This fixes Fatal Frame 2 (and likely 3 as well). A really long standing bug we had :) 

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2635 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
ramapcsx2 2010-02-25 01:18:27 +00:00
parent f298f3dd33
commit b13e917eb2
1 changed files with 8 additions and 1 deletions

View File

@ -522,8 +522,15 @@ static __forceinline StereoOut32 MixVoice( uint coreidx, uint voiceidx )
} }
else else
{ {
// Write-back of raw voice data (some zeros since the voice is "dead") // Continue processing voice, even if it's "off". Or else we miss interrupts! (Fatal Frame engine died because of this.)
// Slow, complete version
UpdatePitch(coreidx, voiceidx);
while (vc.SP > 0) {
GetNextDataBuffered(thiscore, voiceidx);
vc.SP -= 4096;
}
// Write-back of raw voice data (some zeros since the voice is "dead")
if (voiceidx==1) spu2M_WriteFast( 0x400 + (coreidx<<12) + OutPos, 0 ); if (voiceidx==1) spu2M_WriteFast( 0x400 + (coreidx<<12) + OutPos, 0 );
else if (voiceidx==3) spu2M_WriteFast( 0x600 + (coreidx<<12) + OutPos, 0 ); else if (voiceidx==3) spu2M_WriteFast( 0x600 + (coreidx<<12) + OutPos, 0 );