mirror of https://github.com/PCSX2/pcsx2.git
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:
parent
07a5e43492
commit
edaf9beba8
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue