RSP: Fix some delay slot warnings
This commit is contained in:
parent
dd537b518c
commit
fc908b7b7d
|
@ -180,6 +180,10 @@ void Compile_J ( void ) {
|
||||||
JmpLabel32 ( "BranchToJump", 0 );
|
JmpLabel32 ( "BranchToJump", 0 );
|
||||||
Branch_AddRef((RSPOpC.target << 2) & 0xFFC, (DWORD*)(RecompPos - 4));
|
Branch_AddRef((RSPOpC.target << 2) & 0xFFC, (DWORD*)(RecompPos - 4));
|
||||||
NextInstruction = FINISH_SUB_BLOCK;
|
NextInstruction = FINISH_SUB_BLOCK;
|
||||||
|
} else if ( NextInstruction == DELAY_SLOT_EXIT_DONE ) {
|
||||||
|
MoveConstToVariable((RSPOpC.target << 2) & 0xFFC,PrgCount,"RSP PC");
|
||||||
|
NextInstruction = FINISH_SUB_BLOCK;
|
||||||
|
Ret();
|
||||||
} else {
|
} else {
|
||||||
CompilerWarning("J error\nWeird Delay Slot.\n\nNextInstruction = %X\nEmulation will now stop", NextInstruction);
|
CompilerWarning("J error\nWeird Delay Slot.\n\nNextInstruction = %X\nEmulation will now stop", NextInstruction);
|
||||||
BreakPoint();
|
BreakPoint();
|
||||||
|
@ -206,6 +210,10 @@ void Compile_JAL ( void ) {
|
||||||
JmpLabel32 ( "BranchToJump", 0 );
|
JmpLabel32 ( "BranchToJump", 0 );
|
||||||
Branch_AddRef((RSPOpC.target << 2) & 0xFFC, (DWORD*)(RecompPos - 4));
|
Branch_AddRef((RSPOpC.target << 2) & 0xFFC, (DWORD*)(RecompPos - 4));
|
||||||
NextInstruction = FINISH_SUB_BLOCK;
|
NextInstruction = FINISH_SUB_BLOCK;
|
||||||
|
} else if ( NextInstruction == DELAY_SLOT_EXIT_DONE ) {
|
||||||
|
MoveConstToVariable((RSPOpC.target << 2) & 0xFFC,PrgCount,"RSP PC");
|
||||||
|
NextInstruction = FINISH_SUB_BLOCK;
|
||||||
|
Ret();
|
||||||
} else {
|
} else {
|
||||||
CompilerWarning("J error\nWeird Delay Slot.\n\nNextInstruction = %X\nEmulation will now stop", NextInstruction);
|
CompilerWarning("J error\nWeird Delay Slot.\n\nNextInstruction = %X\nEmulation will now stop", NextInstruction);
|
||||||
BreakPoint();
|
BreakPoint();
|
||||||
|
@ -1099,6 +1107,9 @@ void Compile_Special_JALR ( void ) {
|
||||||
CPU_Message(" Null:");
|
CPU_Message(" Null:");
|
||||||
Ret();
|
Ret();
|
||||||
NextInstruction = FINISH_SUB_BLOCK;
|
NextInstruction = FINISH_SUB_BLOCK;
|
||||||
|
} else if ( NextInstruction == DELAY_SLOT_EXIT_DONE ) {
|
||||||
|
NextInstruction = FINISH_SUB_BLOCK;
|
||||||
|
Ret();
|
||||||
} else {
|
} else {
|
||||||
CompilerWarning("WTF\n\nJALR\nNextInstruction = %X", NextInstruction);
|
CompilerWarning("WTF\n\nJALR\nNextInstruction = %X", NextInstruction);
|
||||||
BreakPoint();
|
BreakPoint();
|
||||||
|
@ -1450,6 +1461,9 @@ void Compile_RegImm_BLTZAL ( void ) {
|
||||||
JeLabel32("BranchLessEqual", 0);
|
JeLabel32("BranchLessEqual", 0);
|
||||||
Branch_AddRef(Target, (DWORD*)(RecompPos - 4));
|
Branch_AddRef(Target, (DWORD*)(RecompPos - 4));
|
||||||
NextInstruction = FINISH_SUB_BLOCK;
|
NextInstruction = FINISH_SUB_BLOCK;
|
||||||
|
} else if ( NextInstruction == DELAY_SLOT_EXIT_DONE ) {
|
||||||
|
DWORD Target = (CompilePC + ((short)RSPOpC.offset << 2) + 4) & 0xFFC;
|
||||||
|
CompileBranchExit(Target, CompilePC + 8);
|
||||||
} else {
|
} else {
|
||||||
CompilerWarning("BLTZAL error\nWeird Delay Slot.\n\nNextInstruction = %X\nEmulation will now stop", NextInstruction);
|
CompilerWarning("BLTZAL error\nWeird Delay Slot.\n\nNextInstruction = %X\nEmulation will now stop", NextInstruction);
|
||||||
BreakPoint();
|
BreakPoint();
|
||||||
|
@ -1493,6 +1507,9 @@ void Compile_RegImm_BGEZAL ( void ) {
|
||||||
}
|
}
|
||||||
Branch_AddRef(Target, (DWORD*)(RecompPos - 4));
|
Branch_AddRef(Target, (DWORD*)(RecompPos - 4));
|
||||||
NextInstruction = FINISH_SUB_BLOCK;
|
NextInstruction = FINISH_SUB_BLOCK;
|
||||||
|
} else if ( NextInstruction == DELAY_SLOT_EXIT_DONE ) {
|
||||||
|
DWORD Target = (CompilePC + ((short)RSPOpC.offset << 2) + 4) & 0xFFC;
|
||||||
|
CompileBranchExit(Target, CompilePC + 8);
|
||||||
} else {
|
} else {
|
||||||
CompilerWarning("BGEZAL error\nWeird Delay Slot.\n\nNextInstruction = %X\nEmulation will now stop", NextInstruction);
|
CompilerWarning("BGEZAL error\nWeird Delay Slot.\n\nNextInstruction = %X\nEmulation will now stop", NextInstruction);
|
||||||
BreakPoint();
|
BreakPoint();
|
||||||
|
@ -1541,7 +1558,8 @@ void Compile_Cop0_MF ( void ) {
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
case 7:
|
case 7:
|
||||||
Cheat_r4300iOpcode(RSP_Cop0_MF,"RSP_Cop0_MF");
|
MoveConstToVariable(RSPOpC.Hex, &RSPOpC.Hex, "RSPOpC.Hex" );
|
||||||
|
Call_Direct(RSP_Cop0_MF,"RSP_Cop0_MF");
|
||||||
if (NextInstruction == NORMAL)
|
if (NextInstruction == NORMAL)
|
||||||
{
|
{
|
||||||
MoveConstToVariable(CompilePC + 4,PrgCount,"RSP PC");
|
MoveConstToVariable(CompilePC + 4,PrgCount,"RSP PC");
|
||||||
|
|
Loading…
Reference in New Issue