FF12 Ingame menu fix - MFIFO games generally compare VIF TADR to SPR MADR to find out when it's finished, copying part packets from SPR can be a hazard in this scenario, so we're making sure now that the whole packet has gone over before MFIFO VIF/GIF resumes.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4438 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
refraction 2011-03-15 20:03:03 +00:00
parent 07a5e43492
commit edaf9beba8
1 changed files with 5 additions and 3 deletions

View File

@ -104,7 +104,7 @@ int _SPR0chain()
__fi void SPR0chain()
{
int cycles = 0;
cycles = _SPR0chain() * BIAS;
cycles = _SPR0chain() * 4;
if(spr0lastqwc == false)CPU_INT(DMAC_FROM_SPR, cycles);
}
@ -237,7 +237,9 @@ void SPRFROMinterrupt()
{
_dmaSPR0();
if(mfifotransferred != 0)
//the qwc check is simply because having data still to transfer from the packet can freak games out if they do a d.tadr == s.madr check
//and there is still data to come over (FF12 ingame menu)
if(mfifotransferred != 0 && spr0ch.qwc == 0)
{
switch (dmacRegs.ctrl.MFD)
{
@ -330,7 +332,7 @@ __fi void SPR1chain()
int cycles = 0;
if(!CHECK_IPUWAITHACK)
{
cycles = _SPR1chain() * BIAS;
cycles = _SPR1chain() * 4;
if(spr1lastqwc == false)CPU_INT(DMAC_TO_SPR, cycles);
}
else