From 09c01abd0564b9f5da2b8a474f830ec3be5df3ae Mon Sep 17 00:00:00 2001 From: "refraction@gmail.com" Date: Thu, 24 Oct 2013 12:14:17 +0000 Subject: [PATCH] microVU: Fix for Conditional branches on E-Bit. One less bug on DT Racers with microVU. git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5749 96395faa-99c1-11dd-bbfe-3dabce05a288 --- pcsx2/x86/microVU_Branch.inl | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/pcsx2/x86/microVU_Branch.inl b/pcsx2/x86/microVU_Branch.inl index b6e2a2e99b..03b5452b88 100644 --- a/pcsx2/x86/microVU_Branch.inl +++ b/pcsx2/x86/microVU_Branch.inl @@ -220,7 +220,15 @@ void normBranch(mV, microFlagCycles& mFC) { eJMP.SetTarget(); iPC = tempPC; } - if (mVUup.eBit) { if(mVUlow.badBranch) DevCon.Warning("End on evil Unconditional branch! - Not implemented! - If game broken report to PCSX2 Team"); iPC = branchAddr/4; mVUendProgram(mVU, &mFC, 1); return; } + if (mVUup.eBit) { + if(mVUlow.badBranch) + DevCon.Warning("End on evil Unconditional branch! - Not implemented! - If game broken report to PCSX2 Team"); + + DevCon.Warning("eBit branch"); + iPC = branchAddr/4; + mVUendProgram(mVU, &mFC, 1); + return; + } if(mVUlow.badBranch) { @@ -329,10 +337,12 @@ void condBranch(mV, microFlagCycles& mFC, int JMPcc) { iPC = tempPC; } xCMP(ptr16[&mVU.branch], 0); - incPC(3); - if (mVUup.eBit) { // Conditional Branch With E-Bit Set - if(mVUlow.evilBranch) DevCon.Warning("End on evil branch! - Not implemented! - If game broken report to PCSX2 Team"); + if (mVUup.eBit) { // Conditional Branch With E-Bit Set + if(mVUlow.evilBranch) + DevCon.Warning("End on evil branch! - Not implemented! - If game broken report to PCSX2 Team"); + + incPC(3); mVUendProgram(mVU, &mFC, 2); xForwardJump8 eJMP((JccComparisonType)JMPcc); incPC(1); // Set PC to First instruction of Non-Taken Side @@ -346,7 +356,7 @@ void condBranch(mV, microFlagCycles& mFC, int JMPcc) { return; } else { // Normal Conditional Branch - + incPC(3); if(mVUlow.evilBranch) //We are dealing with an evil evil block, so we need to process this slightly differently {