mirror of https://github.com/PCSX2/pcsx2.git
Implemented a fix for Art of Fighting, MFIFO was clearing our counted size when it shouldn't have been.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@580 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
986f2a1a71
commit
a5eab9da86
|
@ -486,6 +486,8 @@ static __forceinline int mfifoVIF1chain() {
|
||||||
|
|
||||||
#define spr0 ((DMACh*)&PS2MEM_HW[0xD000])
|
#define spr0 ((DMACh*)&PS2MEM_HW[0xD000])
|
||||||
|
|
||||||
|
u32 mfifodmairq = 0;
|
||||||
|
|
||||||
void mfifoVIF1transfer(int qwc) {
|
void mfifoVIF1transfer(int qwc) {
|
||||||
u32 *ptag;
|
u32 *ptag;
|
||||||
int id;
|
int id;
|
||||||
|
@ -493,6 +495,8 @@ void mfifoVIF1transfer(int qwc) {
|
||||||
|
|
||||||
g_vifCycles = 0;
|
g_vifCycles = 0;
|
||||||
|
|
||||||
|
mfifodmairq = 0; //Clear any previous TIE interrupt
|
||||||
|
|
||||||
if(qwc > 0){
|
if(qwc > 0){
|
||||||
vifqwc += qwc;
|
vifqwc += qwc;
|
||||||
|
|
||||||
|
@ -563,6 +567,7 @@ void mfifoVIF1transfer(int qwc) {
|
||||||
if ((vif1ch->chcr & 0x80) && (ptag[0] >> 31)) {
|
if ((vif1ch->chcr & 0x80) && (ptag[0] >> 31)) {
|
||||||
VIF_LOG("dmaIrq Set\n");
|
VIF_LOG("dmaIrq Set\n");
|
||||||
vif1.done = 2;
|
vif1.done = 2;
|
||||||
|
mfifodmairq = 1; //Let the handler know we have prematurely ended MFIFO
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ret = mfifoVIF1chain();
|
ret = mfifoVIF1chain();
|
||||||
|
@ -607,7 +612,11 @@ void vifMFIFOInterrupt()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
vifqwc = 0;
|
//On a TIE break we do not clear the MFIFO (Art of Fighting)
|
||||||
|
//If we dont clear it on MFIFO end, Tekken Tag breaks, understandably (Refraction)
|
||||||
|
if(mfifodmairq == 0)
|
||||||
|
vifqwc = 0;
|
||||||
|
|
||||||
vif1.done = 1;
|
vif1.done = 1;
|
||||||
vif1ch->chcr &= ~0x100;
|
vif1ch->chcr &= ~0x100;
|
||||||
hwDmacIrq(DMAC_VIF1);
|
hwDmacIrq(DMAC_VIF1);
|
||||||
|
|
Loading…
Reference in New Issue