/[pcsx2_0.9.7]/trunk/pcsx2/x86/sVU_Lower.cpp
ViewVC logotype

Diff of /trunk/pcsx2/x86/sVU_Lower.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

--- trunk/pcsx2/x86/sVU_Lower.cpp	2010/12/23 11:48:33	279
+++ trunk/pcsx2/x86/sVU_Lower.cpp	2010/12/23 12:02:12	280
@@ -1982,7 +1982,17 @@
 	u32 size;
 	u8* pDest;
 
-	if(gifRegs.stat.APATH <= GIF_APATH1 || (gifRegs.stat.APATH == GIF_APATH3 && gifRegs.stat.IP3 == true) && SIGNAL_IMR_Pending == false)
+	///////////////////////////////////////////////
+	///////////////SIGNAL WARNING!!////////////////
+	///////////////////////////////////////////////
+	/* Due to the face SIGNAL can cause the loop
+	   to leave early, we can end up missing data.
+	   The only way we can avoid this is to queue
+	   it :(, im relying on someone else to come
+	   up with a better solution!                 */
+
+
+	/*if(gifRegs.stat.APATH <= GIF_APATH1 || (gifRegs.stat.APATH == GIF_APATH3 && gifRegs.stat.IP3 == true) && SIGNAL_IMR_Pending == false)
 	{
 		if(Path1WritePos != 0)	
 		{
@@ -2000,7 +2010,7 @@
 		}
 	}
 	else
-	{
+	{*/
 		//DevCon.Warning("GIF APATH busy %x Holding for later  W %x, R %x", gifRegs.stat.APATH, Path1WritePos, Path1ReadPos);
 		size = GIFPath_ParseTagQuick(GIF_PATH_1, data, diff);
 		pDest = &Path1Buffer[Path1WritePos*16];
@@ -2019,8 +2029,7 @@
 		}
 		//if(!gifRegs.stat.P1Q) CPU_INT(28, 128);
 		gifRegs.stat.P1Q = true;
-	}
-
-
+	//}
+		gsPath1Interrupt();
 }
 //------------------------------------------------------------------

 

  ViewVC Help
Powered by ViewVC 1.1.22