All pastes #1421729 Raw Edit

Untitled

public diff v1 · immutable
#1421729 ·published 2009-05-13 17:08 UTC
rendered paste body
Index: pcsx2/x86/microVU_Execute.inl===================================================================--- pcsx2/x86/microVU_Execute.inl	(revision 1173)+++ pcsx2/x86/microVU_Execute.inl	(working copy)@@ -81,6 +81,7 @@  // Generates the code to exit from recompiled blocks microVUt(void) mVUdispatcherB() {+	using namespace x86Emitter; 	microVU* mVU = mVUx; 	mVU->exitFunct = x86Ptr; @@ -106,6 +107,9 @@ 	POP32R(EBX);  	if (isMMX(1)) EMMS();+	CMP32ItoM((uptr)&mVU->cycles, 0);+	xSETLE(al);+	xMOVZX(eax, al); 	RET();  	mVUcacheCheck(x86Ptr, mVU->cache, 512);@@ -150,8 +154,8 @@ // Caller Functions //------------------------------------------------------------------ -void  __fastcall startVU0(u32 startPC, u32 cycles) { ((mVUrecCall)microVU0.startFunct)(startPC, cycles); }-void  __fastcall startVU1(u32 startPC, u32 cycles) { ((mVUrecCall)microVU1.startFunct)(startPC, cycles); }+int  __fastcall startVU0(u32 startPC, u32 cycles) { return ((mVUrecCall)microVU0.startFunct)(startPC, cycles); }+int  __fastcall startVU1(u32 startPC, u32 cycles) { return ((mVUrecCall)microVU1.startFunct)(startPC, cycles); } void* __fastcall mVUexecuteVU0(u32 startPC, u32 cycles) { return mVUexecute<0>(startPC, cycles); } void* __fastcall mVUexecuteVU1(u32 startPC, u32 cycles) { return mVUexecute<1>(startPC, cycles); } void  __fastcall mVUcleanUpVU0() { mVUcleanUp<0>(); }Index: pcsx2/x86/iVU1micro.cpp===================================================================--- pcsx2/x86/iVU1micro.cpp	(revision 1173)+++ pcsx2/x86/iVU1micro.cpp	(working copy)@@ -127,7 +127,7 @@ extern void closeVUrec(const int vuIndex); extern void resetVUrec(const int vuIndex); extern void clearVUrec(u32 addr, u32 size, const int vuIndex);-extern void runVUrec(u32 startPC, u32 cycles, const int vuIndex);+extern int runVUrec(u32 startPC, u32 cycles, const int vuIndex);  namespace VU1micro {@@ -143,7 +143,9 @@  		FreezeXMMRegs(1); 		//FreezeMMXRegs(1);-		runVUrec(VU1.VI[REG_TPC].UL, 5000, 1);+		if (runVUrec(VU1.VI[REG_TPC].UL, 5000, 1)) {+			// do stuff+		} 		FreezeXMMRegs(0); 		//FreezeMMXRegs(0); 	}Index: pcsx2/x86/microVU.cpp===================================================================--- pcsx2/x86/microVU.cpp	(revision 1173)+++ pcsx2/x86/microVU.cpp	(working copy)@@ -232,9 +232,9 @@ 	else			mVUclear<1>(addr, size); } -void runVUrec(u32 startPC, u32 cycles, const int vuIndex) {-	if (!vuIndex)	startVU0(startPC, cycles);-	else			startVU1(startPC, cycles);+int runVUrec(u32 startPC, u32 cycles, const int vuIndex) {+	if (!vuIndex)	return startVU0(startPC, cycles);+	else			return startVU1(startPC, cycles); }  #endif // PCSX2_MICROVUIndex: pcsx2/x86/microVU.h===================================================================--- pcsx2/x86/microVU.h	(revision 1173)+++ pcsx2/x86/microVU.h	(working copy)@@ -141,9 +141,9 @@ void* __fastcall	mVUexecuteVU1(u32 startPC, u32 cycles);  #ifndef __LINUX__-typedef void (__fastcall *mVUrecCall)(u32, u32);+typedef int (__fastcall *mVUrecCall)(u32, u32); #else-typedef void (*mVUrecCall)(u32, u32) __attribute__((__fastcall)); // Not sure if this is correct syntax (should be close xD)+typedef int (*mVUrecCall)(u32, u32) __attribute__((__fastcall)); // Not sure if this is correct syntax (should be close xD) #endif  // Include all the *.inl files (Needed because C++ sucks with templates and *.cpp files)