Implemented a hackfix for FFX (I hate this game lol) also fixed a bug in VIF i think i introduced during some tests.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@489 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
refraction 2009-02-13 21:22:50 +00:00
parent 5252d45ed7
commit 56ed72b8a1
2 changed files with 12 additions and 4 deletions

View File

@ -248,7 +248,11 @@ void dmaSPR0() { // fromSPR
SPR_LOG("dmaSPR0 chcr = %lx, madr = %lx, qwc = %lx, sadr = %lx\n",
spr0->chcr, spr0->madr, spr0->qwc, spr0->sadr);
CPU_INT(8, spr0->qwc * BIAS);
// COMPLETE HACK!!! For now at least.. FFX Videos dont rely on interrupts or reading DMA values
// It merely assumes that the last one has finished then starts another one (broke with the DMA fix)
// This "shouldn't" cause any problems as SPR is generally faster than the other DMAS anyway. (Refraction)
CPU_INT(8, spr0->qwc / 2);
@ -382,7 +386,11 @@ void dmaSPR1() { // toSPR
spr1->chcr, spr1->madr, spr1->qwc,
spr1->tadr, spr1->sadr);
#endif
CPU_INT(9, spr1->qwc * BIAS);
// COMPLETE HACK!!! For now at least.. FFX Videos dont rely on interrupts or reading DMA values
// It merely assumes that the last one has finished then starts another one (broke with the DMA fix)
// This "shouldn't" cause any problems as SPR is generally faster than the other DMAS anyway. (Refraction)
CPU_INT(9, spr1->qwc / 2);
}

View File

@ -1970,7 +1970,7 @@ __forceinline void vif1Interrupt() {
_chainVIF1();
}
else _VIF1chain();//CPU_INT(13, vif1ch->qwc * BIAS);
CPU_INT(1, 0);
CPU_INT(1, g_vifCycles);
return;
}
}
@ -1988,7 +1988,7 @@ __forceinline void vif1Interrupt() {
}
_chainVIF1();
CPU_INT(1, 0);
CPU_INT(1, g_vifCycles);
return;
}