SPU2-X: Add extra exceptions to shortcutting silenced voice processing (which is basically a speedhack and should probably have a GUI option). Unfortunately this is a significant speed hit for all games, but I have no solution to this for now. Fixes Gegege no Kitarou - Ibun Youkai Kitan and quite likely others.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5421 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
sudonim1@gmail.com 2012-09-22 22:11:37 +00:00
parent c26f684a65
commit 77eee6e2b9
1 changed files with 4 additions and 1 deletions

View File

@ -612,7 +612,10 @@ static __forceinline StereoOut32 MixVoice( uint coreidx, uint voiceidx )
else
{
// Continue processing voice, even if it's "off". Or else we miss interrupts! (Fatal Frame engine died because of this.)
if ((vc.LoopFlags & 3) != 3 || vc.LoopStartA != (vc.NextA & ~7)) {
if ((vc.LoopFlags & 3) != 3 || vc.LoopStartA != (vc.NextA & ~7) // not in a tight loop
|| thiscore.IRQEnable && (thiscore.IRQA & ~7) == vc.LoopStartA // or should be interrupting regularly
|| !(thiscore.Regs.ENDX & 1 << voiceidx)) // or isn't currently flagged as having passed the endpoint
{
UpdatePitch(coreidx, voiceidx);
while (vc.SP > 0)