From 4673574ca1b409c37b166ab69dd074cd45f6e9b9 Mon Sep 17 00:00:00 2001 From: ramapcsx2 Date: Tue, 19 Jan 2010 11:33:52 +0000 Subject: [PATCH] Disabling the not working backward propagation system in the EErec. git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2456 96395faa-99c1-11dd-bbfe-3dabce05a288 --- pcsx2/x86/ir5900tables.cpp | 35 ++++++++++----------------------- pcsx2/x86/ix86-32/iR5900-32.cpp | 8 +++++--- 2 files changed, 15 insertions(+), 28 deletions(-) diff --git a/pcsx2/x86/ir5900tables.cpp b/pcsx2/x86/ir5900tables.cpp index 58935f5737..843d8492cf 100644 --- a/pcsx2/x86/ir5900tables.cpp +++ b/pcsx2/x86/ir5900tables.cpp @@ -168,12 +168,15 @@ __forceinline void BSCPropagate::rpropSPECIAL() case 2: // SRL case 3: // SRA rpropSetWrite(_Rd_, EEINST_LIVE1); + rpropSetRead(_Rt_, 0); break; case 4: // sllv case 6: // srlv case 7: // srav rpropSetWrite(_Rd_, EEINST_LIVE1); + rpropSetRead(_Rs_, 0); + rpropSetRead(_Rt_, 0); break; case 8: // JR @@ -222,34 +225,10 @@ __forceinline void BSCPropagate::rpropSPECIAL() case 22: // dsrlv case 23: // dsrav rpropSetWrite(_Rd_, EEINST_LIVE1); + rpropSetRead(_Rs_, 0); rpropSetRead(_Rt_, EEINST_LIVE1); break; - //case 24: // mult - // // can do unsigned mult only if HI isn't used - - // //using this allocation for temp causes the emu to crash - // //temp = 0; - // temp = 0; - // rpropSetWrite(XMMGPR_LO, EEINST_LIVE1); - // rpropSetWrite(XMMGPR_HI, EEINST_LIVE1); - // rpropSetWrite(_Rd_, EEINST_LIVE1); - // - // // fixme - temp is always 0, so I doubt the next three lines are right. (arcum42) - - // // Yep, its wrong. Using always 0 causes the wrong damage calculations in Soul Nomad. - // rpropSetRead(_Rs_, temp); - // rpropSetRead(_Rt_, temp); - // pinst.info |= temp; - // break; - - //case 25: // multu - // rpropSetWrite(XMMGPR_LO, EEINST_LIVE1); - // rpropSetWrite(XMMGPR_HI, EEINST_LIVE1); - // rpropSetWrite(_Rd_, EEINST_LIVE1); - // break; - - case 24: // mult case 25: // multu rpropSetWrite(XMMGPR_LO, EEINST_LIVE1); @@ -335,6 +314,7 @@ __forceinline void BSCPropagate::rpropSPECIAL() case 60: // dsll32 rpropSetWrite(_Rd_, EEINST_LIVE1); + rpropSetRead(_Rt_, 0); break; default: @@ -610,12 +590,16 @@ __forceinline void BSCPropagate::rpropMMI() rpropSetWrite0<0>(XMMGPR_LO, EEINST_LIVE2); rpropSetWrite0<0>(XMMGPR_HI, EEINST_LIVE2); rpropSetWrite(_Rd_, EEINST_LIVE1); + rpropSetRead(_Rs_, 0); + rpropSetRead(_Rt_, 0); break; } case 25: // multu1 rpropSetWrite0<0>(XMMGPR_LO, EEINST_LIVE2); rpropSetWrite0<0>(XMMGPR_HI, EEINST_LIVE2); rpropSetWrite(_Rd_, EEINST_LIVE1); + rpropSetRead(_Rs_, 0); + rpropSetRead(_Rt_, 0); break; case 26: // div1 @@ -905,6 +889,7 @@ void BSCPropagate::rprop() case 12: // andi rpropSetWrite(_Rt_, EEINST_LIVE1); + rpropSetRead(_Rs_, 0); break; case 13: // ori rpropSetWrite(_Rt_, EEINST_LIVE1); diff --git a/pcsx2/x86/ix86-32/iR5900-32.cpp b/pcsx2/x86/ix86-32/iR5900-32.cpp index 1ac4733ced..bf4f1bdf25 100644 --- a/pcsx2/x86/ix86-32/iR5900-32.cpp +++ b/pcsx2/x86/ix86-32/iR5900-32.cpp @@ -1485,9 +1485,11 @@ StartRecomp: for(i = s_nEndBlock; i > startpc; i -= 4 ) { cpuRegs.code = *(int *)PSM(i-4); pcur[-1] = pcur[0]; - - BSCPropagate bsc( pcur[-1], pcur[0] ); - bsc.rprop(); + + // Backward propagation entry point. Since it doesn't work right it's disabled for now + //BSCPropagate bsc( pcur[-1], pcur[0] ); + //bsc.rprop(); + pcur--; } }