From 2a33cd4ffda7ba3bac97e253e5ae1d45ff504888 Mon Sep 17 00:00:00 2001 From: "Jake.Stine" Date: Wed, 30 Jun 2010 03:23:37 +0000 Subject: [PATCH] Minor comment cleanups regarding SIGNAL behavior. git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3351 96395faa-99c1-11dd-bbfe-3dabce05a288 --- pcsx2/GS.cpp | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/pcsx2/GS.cpp b/pcsx2/GS.cpp index baa4de03db..8e897be8b8 100644 --- a/pcsx2/GS.cpp +++ b/pcsx2/GS.cpp @@ -109,17 +109,7 @@ static __forceinline void gsCSRwrite( const tGS_CSR& csr ) if(csr.SIGNAL) { - // SIGNAL has special behavior. If a SIGNAL has occurred twice in a row, we need - // to raise the second one pending immediately. CSR_SIGNAL_Pending is only set true - // if a second SIGNAL is pending (and thus drawing ops are disabled). - - // (note: PS2 apps are expected to write a successive 1 and 0 to the IMR in order to - // trigger the gsInt and clear the second pending SIGNAL -- if they fail to do so, the - // GS will freeze again upon the very next SIGNAL). - - CSRreg.SIGNAL = false; //CSR_SIGNAL_Pending; - //if( CSRreg.SIGNAL ) - // CSR_SIGNAL_Pending = false; + CSRreg.SIGNAL = false; } if(csr.FINISH) CSRreg.FINISH = false; @@ -137,6 +127,14 @@ static __forceinline void IMRwrite(u32 value) if( CSR_SIGNAL_Pending && !(GSIMR & 0x100)) { + // (note: PS2 apps are expected to write a successive 1 and 0 to the IMR in order to + // trigger the gsInt and clear the second pending SIGNAL interrupt -- if they fail + // to do so, the GS will freeze again upon the very next SIGNAL). + + // It's yet unclear if the SIGNAL should be set back to TRUE or not when the IRQ is + // raised here. Neither setting it nor leaving it be seemed to keep Soul Calibur 3 from + // dying. This could be the fault of other emulation/timing errors in the DMA though --air + //CSRreg.SIGNAL = true; gsIrq(); }