/[pcsx2_0.9.7]/trunk/pcsx2/IPU/IPU.cpp
ViewVC logotype

Diff of /trunk/pcsx2/IPU/IPU.cpp

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

--- trunk/pcsx2/IPU/IPU.cpp	2010/12/23 11:48:33	279
+++ trunk/pcsx2/IPU/IPU.cpp	2010/12/23 12:02:12	280
@@ -26,6 +26,8 @@
 #include "Vif_Dma.h"
 #include <limits.h>
 
+#include "Utilities/MemsetFast.inl"
+
 // the BP doesn't advance and returns -1 if there is no data to be read
 __aligned16 tIPU_cmd ipu_cmd;
 __aligned16 tIPU_BP g_BP;
@@ -438,10 +440,9 @@
 			// very choppy (basically only decoding/updating every 30th frame or so). So yeah,
 			// someone with knowledge on the subject please feel free to explain this one. :) --air
 
-			ipuRegs.cmd.DATA &= 0xFFFF;
-			ipuRegs.cmd.DATA |= 0x10000;
+			// The upper bits are the "length" of the decoded command, where the lower is the address.
+			// This is due to differences with IPU and the MPEG standard. See get_macroblock_address_increment().
 
-			//ipuRegs.cmd.DATA = (ipuRegs.cmd.DATA & 0xFFFF) | ((decoder.bitstream_bits + 16) << 16);
 			ipuRegs.ctrl.ECD = (ipuRegs.cmd.DATA == 0);
 
 		case 1:
@@ -907,7 +908,7 @@
 			// CHECK!: IPU0dma remains when IDEC is done, so we need to clear it
 			// Check Mana Khemia 1 "off campus" to trigger a GUST IDEC messup.
 			// This hackfixes it :/
-			if (ipu0dma.qwc > 0 && ipu0dma.chcr.STR) ipu0Interrupt();
+			//if (ipu0dma.qwc > 0 && ipu0dma.chcr.STR) ipu0Interrupt();
 			break;
 
 		case SCE_IPU_BDEC:

 

  ViewVC Help
Powered by ViewVC 1.1.22