diff --git a/Source/RSP/Recompiler CPU.c b/Source/RSP/Recompiler CPU.c index 1d0a798c7..54fb0f416 100644 --- a/Source/RSP/Recompiler CPU.c +++ b/Source/RSP/Recompiler CPU.c @@ -30,6 +30,7 @@ #include #include "RSP.h" #include "Cpu.h" +#include "Interpreter CPU.h" #include "Recompiler CPU.h" #include "Recompiler Ops.h" #include "RSP registers.h" @@ -849,6 +850,10 @@ void CompilerRSPBlock ( void ) { NextInstruction = DELAY_SLOT_DONE; CompilePC -= 4; break; + case DELAY_SLOT_EXIT: + NextInstruction = DELAY_SLOT_EXIT_DONE; + CompilePC -= 4; + break; case FINISH_SUB_BLOCK: NextInstruction = NORMAL; CompilePC += 8; @@ -933,6 +938,10 @@ DWORD RunRecompilerCPU ( DWORD Cycles ) { if (Profiling && IndvidualBlock) { StopTimer(); } + if (RSP_NextInstruction == SINGLE_STEP) + { + RSP_Running = FALSE; + } } if (IsMmxEnabled == TRUE) { diff --git a/Source/RSP/Recompiler CPU.h b/Source/RSP/Recompiler CPU.h index a062452b3..52f391bb5 100644 --- a/Source/RSP/Recompiler CPU.h +++ b/Source/RSP/Recompiler CPU.h @@ -26,13 +26,6 @@ #include "opcode.h" -#define NORMAL 0 -#define DO_DELAY_SLOT 1 -#define DELAY_SLOT 2 -#define DELAY_SLOT_DONE 3 -#define FINISH_BLOCK 4 -#define FINISH_SUB_BLOCK 5 - extern DWORD CompilePC, NextInstruction; extern BOOL ChangedPC;