mirror of https://github.com/PCSX2/pcsx2.git
SPU2-X: Another change to the shortcut processing of voices, check the actual loop flags in memory rather than the ones in the voice structure because the memory might've changed. Fixes Innocent Life - A Futuristic Harvest Moon.
Also, check both cores rather than the current core, that was a mistake. Speed-- again. git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5425 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
a06b9064f2
commit
86e5f32efb
|
@ -612,8 +612,9 @@ 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) // not in a tight loop
|
||||
|| thiscore.IRQEnable && (thiscore.IRQA & ~7) == vc.LoopStartA // or should be interrupting regularly
|
||||
if ((*GetMemPtr(vc.NextA & 0xFFFF8) >> 8 & 3) != 3 || vc.LoopStartA != (vc.NextA & ~7) // not in a tight loop
|
||||
|| Cores[0].IRQEnable && (Cores[0].IRQA & ~7) == vc.LoopStartA // or should be interrupting regularly
|
||||
|| Cores[1].IRQEnable && (Cores[1].IRQA & ~7) == vc.LoopStartA
|
||||
|| !(thiscore.Regs.ENDX & 1 << voiceidx)) // or isn't currently flagged as having passed the endpoint
|
||||
{
|
||||
UpdatePitch(coreidx, voiceidx);
|
||||
|
|
Loading…
Reference in New Issue