From ea01132087423734b25e141334e0bff79662542d Mon Sep 17 00:00:00 2001 From: nakeee Date: Tue, 7 Apr 2009 07:52:00 +0000 Subject: [PATCH] DSP: condition fixes git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2913 8ced0084-cf51-0410-be5f-012b33b47a6e --- .../Src/gdsp_condition_codes.cpp | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/Source/Plugins/Plugin_DSP_LLE-testing/Src/gdsp_condition_codes.cpp b/Source/Plugins/Plugin_DSP_LLE-testing/Src/gdsp_condition_codes.cpp index 407fee3bc6..2c8aa3f262 100644 --- a/Source/Plugins/Plugin_DSP_LLE-testing/Src/gdsp_condition_codes.cpp +++ b/Source/Plugins/Plugin_DSP_LLE-testing/Src/gdsp_condition_codes.cpp @@ -87,25 +87,23 @@ bool CheckCondition(u8 _Condition) switch (_Condition & 0xf) { case 0x0: //NS - NOT SIGN - - if (!(g_dsp.r[DSP_REG_SR] & 0x08)) + if ((!(g_dsp.r[DSP_REG_SR] & 0x02)) && (!(g_dsp.r[DSP_REG_SR] & 0x08))) taken = true; break; case 0x1: // S - SIGN - - if (g_dsp.r[DSP_REG_SR] & 0x08) + if ((!(g_dsp.r[DSP_REG_SR] & 0x02)) && (g_dsp.r[DSP_REG_SR] & 0x08)) taken = true; break; case 0x2: // G - GREATER - if ( (!(g_dsp.r[DSP_REG_SR] & 0x02) || !(g_dsp.r[DSP_REG_SR] & 0x04)) && !(g_dsp.r[DSP_REG_SR] & 0x08)) + if ((!(g_dsp.r[DSP_REG_SR] & 0x02)) && (!(g_dsp.r[DSP_REG_SR] & 0x08)) && !((g_dsp.r[DSP_REG_SR] & 0x04))) // gets zelda stuck taken = true; break; case 0x3: // LE - LESS EQUAL - if ((g_dsp.r[DSP_REG_SR] & 0x02) || (g_dsp.r[DSP_REG_SR] & 0x04) || (g_dsp.r[DSP_REG_SR] & 0x08)) + if ((!(g_dsp.r[DSP_REG_SR] & 0x02)) && ((g_dsp.r[DSP_REG_SR] & 0x08) || (g_dsp.r[DSP_REG_SR] & 0x04))) taken = true; break; @@ -127,21 +125,20 @@ bool CheckCondition(u8 _Condition) break; case 0x7: // GE - GREATER EQUAL - if ( (!(g_dsp.r[DSP_REG_SR] & 0x02) || (g_dsp.r[DSP_REG_SR] & 0x04)) && !(g_dsp.r[DSP_REG_SR] & 0x08)) + if ((!(g_dsp.r[DSP_REG_SR] & 0x02)) && (!(g_dsp.r[DSP_REG_SR] & 0x08) || (g_dsp.r[DSP_REG_SR] & 0x04))) + taken = true; break; case 0xc: // LNZ - LOGIC NOT ZERO if (!(g_dsp.r[DSP_REG_SR] & 0x40)) taken = true; - break; case 0xd: // LZ - LOGIC ZERO if (g_dsp.r[DSP_REG_SR] & 0x40) taken = true; - break; case 0xf: // Empty