RSP: Only use semaphore if not hle code

This commit is contained in:
zilmar 2013-01-26 05:25:03 +11:00
parent f3160cdf12
commit a5e2f43c17
1 changed files with 9 additions and 3 deletions

View File

@ -39,6 +39,7 @@
#include "x86.h" #include "x86.h"
extern UWORD32 Recp, RecpResult, SQroot, SQrootResult; extern UWORD32 Recp, RecpResult, SQroot, SQrootResult;
extern BOOL AudioHle, GraphicsHle;
/************************* OpCode functions *************************/ /************************* OpCode functions *************************/
void RSP_Opcode_SPECIAL ( void ) { void RSP_Opcode_SPECIAL ( void ) {
@ -389,9 +390,14 @@ void RSP_Cop0_MF (void) {
case 5: RSP_GPR[RSPOpC.rt].UW = *RSPInfo.SP_DMA_FULL_REG; break; case 5: RSP_GPR[RSPOpC.rt].UW = *RSPInfo.SP_DMA_FULL_REG; break;
case 6: RSP_GPR[RSPOpC.rt].UW = *RSPInfo.SP_DMA_BUSY_REG; break; case 6: RSP_GPR[RSPOpC.rt].UW = *RSPInfo.SP_DMA_BUSY_REG; break;
case 7: case 7:
RSP_GPR[RSPOpC.rt].W = *RSPInfo.SP_SEMAPHORE_REG; if (AudioHle || GraphicsHle)
*RSPInfo.SP_SEMAPHORE_REG = 1; {
RSP_Running = FALSE; RSP_GPR[RSPOpC.rt].W = 0;
} else {
RSP_GPR[RSPOpC.rt].W = *RSPInfo.SP_SEMAPHORE_REG;
*RSPInfo.SP_SEMAPHORE_REG = 1;
RSP_Running = FALSE;
}
break; break;
case 8: RSP_GPR[RSPOpC.rt].UW = *RSPInfo.DPC_START_REG ; break; case 8: RSP_GPR[RSPOpC.rt].UW = *RSPInfo.DPC_START_REG ; break;
case 9: RSP_GPR[RSPOpC.rt].UW = *RSPInfo.DPC_END_REG ; break; case 9: RSP_GPR[RSPOpC.rt].UW = *RSPInfo.DPC_END_REG ; break;