From beb6b0c244166c25cf2b83d79935c27e786ab78d Mon Sep 17 00:00:00 2001 From: zilmar Date: Wed, 26 Sep 2012 14:01:27 +1000 Subject: [PATCH] Fixed issues where JR did not check timer if jumping to constant --- .../Project64/N64 System/Recompiler/Recompiler Ops.cpp | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/Source/Project64/N64 System/Recompiler/Recompiler Ops.cpp b/Source/Project64/N64 System/Recompiler/Recompiler Ops.cpp index 9be406640..138f3ca7d 100644 --- a/Source/Project64/N64 System/Recompiler/Recompiler Ops.cpp +++ b/Source/Project64/N64 System/Recompiler/Recompiler Ops.cpp @@ -2005,14 +2005,6 @@ void CRecompilerOps::SPECIAL_JR (void) { m_Section->m_Cont.FallThrough = FALSE; m_Section->m_Cont.LinkLocation = NULL; m_Section->m_Cont.LinkLocation2 = NULL; - if ((m_CompilePC & 0xFFC) == 0xFFC) { - _Notify->BreakPoint(__FILE__,__LINE__); -#ifdef tofix - m_Section->GenerateSectionLinkage(); - m_NextInstruction = END_BLOCK; -#endif - return; - } } else { m_Section->m_Jump.FallThrough = false; m_Section->m_Jump.LinkLocation = NULL; @@ -2035,6 +2027,7 @@ void CRecompilerOps::SPECIAL_JR (void) { if (DelaySlotEffectsCompare(m_CompilePC,m_Opcode.rs,0)) { m_Section->CompileExit(m_CompilePC,(DWORD)-1,m_RegWorkingSet,CExitInfo::Normal,TRUE,NULL); } else { + UpdateCounters(m_RegWorkingSet,true,true); if (IsConst(m_Opcode.rs)) { m_Section->m_Jump.JumpPC = m_Section->m_Jump.TargetPC + 4; m_Section->m_Jump.RegSet = m_RegWorkingSet; @@ -2045,7 +2038,6 @@ void CRecompilerOps::SPECIAL_JR (void) { } else { MoveX86regToVariable(Map_TempReg(x86_Any,m_Opcode.rs,FALSE),_PROGRAM_COUNTER, "PROGRAM_COUNTER"); } - UpdateCounters(m_RegWorkingSet,true,true); m_Section->CompileExit(-1, (DWORD)-1,m_RegWorkingSet,CExitInfo::Normal,TRUE,NULL); if (m_Section->m_JumpSection) {