drc/gte: add some stall handling
[pcsx_rearmed.git] / libpcsxcore / psxinterpreter.c
index 02e00a9..b171b0a 100644 (file)
@@ -26,6 +26,7 @@
 #include "gte.h"
 #include "psxhle.h"
 #include "debug.h"
+#include "psxinterpreter.h"
 
 static int branch = 0;
 static int branch2 = 0;
@@ -39,8 +40,6 @@ static u32 branchPC;
 #define debugI()
 #endif
 
-void execI();
-
 // Subsets
 void (*psxBSC[64])();
 void (*psxSPC[64])();
@@ -935,7 +934,10 @@ void psxCOP0() {
 }
 
 void psxCOP2() {
-       psxCP2[_Funct_]((struct psxCP2Regs *)&psxRegs.CP2D);
+       u32 f = _Funct_;
+       if (f != 0 || _Rs_ < 4) // not MTC2/CTC2
+               gteCheckStall(f);
+       psxCP2[f]((struct psxCP2Regs *)&psxRegs.CP2D);
 }
 
 void psxBASIC(struct psxCP2Regs *regs) {