Temp fix for Soul Calibur 3, possibly most other broken games.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3312 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
Jake.Stine 2010-06-26 13:36:57 +00:00
parent c1047172c7
commit a1de87206b
1 changed files with 16 additions and 3 deletions

View File

@ -138,7 +138,9 @@ static void __fastcall RegHandlerSIGNAL(const u32* data)
GSSIGLBLID.SIGID = (GSSIGLBLID.SIGID&~data[1])|(data[0]&data[1]); GSSIGLBLID.SIGID = (GSSIGLBLID.SIGID&~data[1])|(data[0]&data[1]);
if (!(GSIMR&0x100) ) // This is not working yet for some reason. Will have to troubleshoot it later.
// For now having the SIGNAL behave like other interrpts seems to be fine. --air
/*if (!(GSIMR&0x100) )
{ {
if (CSRreg.SIGNAL) if (CSRreg.SIGNAL)
{ {
@ -154,7 +156,18 @@ static void __fastcall RegHandlerSIGNAL(const u32* data)
CSRreg.SIGNAL = true; CSRreg.SIGNAL = true;
gsIrq(); gsIrq();
} }
}*/
if (!CSRreg.SIGNAL)
{
CSRreg.SIGNAL = true;
if (!(GSIMR&0x100) )
{
CSRreg.SIGNAL = true;
gsIrq();
} }
}
} }
// FINISH : Enables end-of-draw signaling. When FINISH is written it tells the GIF to // FINISH : Enables end-of-draw signaling. When FINISH is written it tells the GIF to
@ -172,10 +185,10 @@ static void __fastcall RegHandlerFINISH(const u32* data)
if (!CSRreg.FINISH) if (!CSRreg.FINISH)
{ {
CSRreg.FINISH = true;
if (!(GSIMR&0x200)) if (!(GSIMR&0x200))
gsIrq(); gsIrq();
CSRreg.FINISH = true;
} }
} }