Minor comment cleanups regarding SIGNAL behavior.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3351 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
Jake.Stine 2010-06-30 03:23:37 +00:00
parent 5ad95b28eb
commit 2a33cd4ffd
1 changed files with 9 additions and 11 deletions

View File

@ -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();
}