SPU2-X: Process input area regardless of ADMA status. Fixes Burnout, maybe others.

This is a guess, not confirmed by hardware testing, but seems logical.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4742 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
sudonim1@gmail.com 2011-06-14 18:02:57 +00:00
parent c4196d542d
commit bcd2ceaa6c
1 changed files with 7 additions and 5 deletions

View File

@ -109,13 +109,14 @@ StereoOut32 V_Core::ReadInput_HiFi()
StereoOut32 V_Core::ReadInput()
{
if((AutoDMACtrl&(Index+1)) != (Index+1))
return StereoOut32();
StereoOut32 retval;
if( (Index!=1) || ((PlayMode&2)==0) )
{
for (int i=0; i<2; i++)
if (Cores[i].IRQEnable && 0x2000 + (Index << 10) + InputPosRead == (Cores[i].IRQA & 0xfffffdff))
SetIrqCall(Index);
//retval = StereoOut32(
// (s32)ADMATempBuffer[InputPosRead],
// (s32)ADMATempBuffer[InputPosRead+0x200]
@ -132,7 +133,8 @@ StereoOut32 V_Core::ReadInput()
#endif
InputPosRead++;
if( (InputPosRead==0x100) || (InputPosRead>=0x200) )
if (AutoDMACtrl & Index + 1 && (InputPosRead == 0x100 || InputPosRead == 0x200))
{
#ifdef ENABLE_NEW_IOPDMA_SPU2
// WARNING: Assumes this to be in the same thread as the dmas
@ -169,7 +171,7 @@ StereoOut32 V_Core::ReadInput()
}
}
#endif
InputPosRead&=0x1ff;
}
InputPosRead &= 0x1ff;
return retval;
}