/[pcsx2_0.9.7]/trunk/pcsx2/x86/microVU_Lower.inl
ViewVC logotype

Diff of /trunk/pcsx2/x86/microVU_Lower.inl

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

--- trunk/pcsx2/x86/microVU_Lower.inl	2010/12/23 11:48:33	279
+++ trunk/pcsx2/x86/microVU_Lower.inl	2010/12/23 12:02:12	280
@@ -1097,8 +1097,17 @@
 	u8* data  = vuRegs[1].Mem + (addr*16);
 	u32 diff  = 0x400 - addr;
 	u32 size;
+
+	///////////////////////////////////////////////
+	///////////////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(gifRegs.stat.APATH <= GIF_APATH1 || (gifRegs.stat.APATH == GIF_APATH3 && gifRegs.stat.IP3 == true) && SIGNAL_IMR_Pending == false)
 	{
 		if(Path1WritePos != 0)	
 		{
@@ -1116,7 +1125,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);
 		u8* pDest = &Path1Buffer[Path1WritePos*16];
@@ -1136,7 +1145,8 @@
 		}
 		//if(!gifRegs.stat.P1Q) CPU_INT(28, 128);
 		gifRegs.stat.P1Q = true;
-	}
+	//}
+		gsPath1Interrupt();
 }
 
 static __fi void mVU_XGKICK_DELAY(mV, bool memVI) {

 

  ViewVC Help
Powered by ViewVC 1.1.22