From bcd2ceaa6ca12add1f2661fa3b7228b656e06f97 Mon Sep 17 00:00:00 2001 From: "sudonim1@gmail.com" Date: Tue, 14 Jun 2011 18:02:57 +0000 Subject: [PATCH] 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 --- plugins/spu2-x/src/ReadInput.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/plugins/spu2-x/src/ReadInput.cpp b/plugins/spu2-x/src/ReadInput.cpp index ee59843eb7..e8d63ba054 100644 --- a/plugins/spu2-x/src/ReadInput.cpp +++ b/plugins/spu2-x/src/ReadInput.cpp @@ -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; }