Temp fix for Soul Calibur 3 so i can close Issue 233.

Other small fixes

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1261 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
refraction 2009-05-25 13:29:48 +00:00
parent 1d4ad79349
commit ed963ae5ea
2 changed files with 7 additions and 6 deletions

View File

@ -328,7 +328,7 @@ void GIFdma()
GIF_LOG("dmaIrq Set"); GIF_LOG("dmaIrq Set");
gspath3done = 1; gspath3done = 1;
} }
GIF_LOG("gifdmaChain %8.8x_%8.8x size=%d, id=%d, addr=%lx", ptag[1], ptag[0], gif->qwc, id, gif->madr); GIF_LOG("gifdmaChain %8.8x_%8.8x size=%d, id=%d, addr=%lx", ptag[1], ptag[0], gif->qwc, (ptag[0] >> 28) & 0x7, gif->madr);
GIFdmaEnd(); GIFdmaEnd();
return; return;

View File

@ -2110,13 +2110,14 @@ static void Vif1CMDDirectHL() // DIRECT/HL
else else
vif1.tag.size = vifImm << 2; vif1.tag.size = vifImm << 2;
//FIXME: This should have timing in both cases, see note below.
if((vif1.cmd & 0x7f) == 0x51) if((vif1.cmd & 0x7f) == 0x51)
{ {
if(gif->chcr & 0x100 && Path3progress == 0) //PATH3 is in image mode, so wait for end of transfer if(gif->chcr & 0x100 /*&& Path3progress == 0*/) //PATH3 is in image mode, so wait for end of transfer
{ {
//DevCon::Notice("DirectHL gif chcr %x gif qwc %x mskpth3 %x", params gif->chcr, gif->qwc, vif1Regs->mskpath3); //DevCon::Notice("DirectHL gif chcr %x gif qwc %x mskpth3 %x", params gif->chcr, gif->qwc, vif1Regs->mskpath3);
vif1Regs->stat |= VIF1_STAT_VGW; if(vif1Regs->mskpath3)vif1Regs->stat |= VIF1_STAT_VGW;
else while(gif->chcr & 0x100) gsInterrupt(); //Hacky as hell (no timing) but Soul Calibur 3 doesnt want timing :(
} }
} }
@ -2480,7 +2481,7 @@ __forceinline void vif1Interrupt()
{ {
if(gif->chcr & 0x100) if(gif->chcr & 0x100)
{ {
CPU_INT(1, 2); CPU_INT(1, 16);
return; return;
} }
else vif1Regs->stat &= ~VIF1_STAT_VGW; else vif1Regs->stat &= ~VIF1_STAT_VGW;
@ -2542,7 +2543,7 @@ __forceinline void vif1Interrupt()
vif1ch->chcr &= ~0x100; vif1ch->chcr &= ~0x100;
g_vifCycles = 0; g_vifCycles = 0;
hwDmacIrq(DMAC_VIF1); hwDmacIrq(DMAC_VIF1);
if (vif1Regs->mskpath3 == 0 || (vif1ch->chcr & 0x1) == 0x1)vif1Regs->stat &= ~0x1F000000; // FQC=0 vif1Regs->stat &= ~0x1F000000; // FQC=0
} }
void dmaVIF1() void dmaVIF1()