Fixed for Looney Tunes menu. Commented some Forcebreak stuff for future reference, removed offending code from Vif0 till i can be bothered to rewrite the DMA to be like Vif1.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2760 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
refraction 2010-03-21 00:34:54 +00:00
parent bd94bc0483
commit c697f6e6da
2 changed files with 6 additions and 3 deletions

View File

@ -106,13 +106,14 @@ _f void vif0FBRST(u32 value) {
vif0Regs->stat.clear_flags(VIF0_STAT_FQC | VIF0_STAT_INT | VIF0_STAT_VSS | VIF0_STAT_VIS | VIF0_STAT_VFS | VIF0_STAT_VPS); // FQC=0 vif0Regs->stat.clear_flags(VIF0_STAT_FQC | VIF0_STAT_INT | VIF0_STAT_VSS | VIF0_STAT_VIS | VIF0_STAT_VFS | VIF0_STAT_VPS); // FQC=0
} }
/* Fixme: Forcebreaks are pretty unknown for operation, presumption is it just stops it what its doing
usually accompanied by a reset, but if we find a broken game which falls here, we need to see it! (Refraction) */
if (value & 0x2) // Forcebreak Vif, if (value & 0x2) // Forcebreak Vif,
{ {
/* I guess we should stop the VIF dma here, but not 100% sure (linuz) */ /* I guess we should stop the VIF dma here, but not 100% sure (linuz) */
cpuRegs.interrupt &= ~1; //Stop all vif0 DMA's cpuRegs.interrupt &= ~1; //Stop all vif0 DMA's
vif0Regs->stat.VFS = true; vif0Regs->stat.VFS = true;
vif0Regs->stat.VPS = VPS_IDLE; vif0Regs->stat.VPS = VPS_IDLE;
vif0.vifstalled = true;
Console.WriteLn("vif0 force break"); Console.WriteLn("vif0 force break");
} }
@ -179,13 +180,15 @@ _f void vif1FBRST(u32 value) {
vif1Regs->stat.clear_flags(VIF1_STAT_FDR | VIF1_STAT_INT | VIF1_STAT_VSS | VIF1_STAT_VIS | VIF1_STAT_VFS | VIF1_STAT_VPS); vif1Regs->stat.clear_flags(VIF1_STAT_FDR | VIF1_STAT_INT | VIF1_STAT_VSS | VIF1_STAT_VIS | VIF1_STAT_VFS | VIF1_STAT_VPS);
} }
/* Fixme: Forcebreaks are pretty unknown for operation, presumption is it just stops it what its doing
usually accompanied by a reset, but if we find a broken game which falls here, we need to see it! (Refraction) */
if (FBRST(value).FBK) // Forcebreak Vif. if (FBRST(value).FBK) // Forcebreak Vif.
{ {
/* I guess we should stop the VIF dma here, but not 100% sure (linuz) */ /* I guess we should stop the VIF dma here, but not 100% sure (linuz) */
vif1Regs->stat.VFS = true; vif1Regs->stat.VFS = true;
vif1Regs->stat.VPS = VPS_IDLE; vif1Regs->stat.VPS = VPS_IDLE;
cpuRegs.interrupt &= ~((1 << 1) | (1 << 10)); //Stop all vif1 DMA's cpuRegs.interrupt &= ~((1 << 1) | (1 << 10)); //Stop all vif1 DMA's
vif1.vifstalled = true;
Console.WriteLn("vif1 force break"); Console.WriteLn("vif1 force break");
} }

View File

@ -125,7 +125,7 @@ void vif0Interrupt()
if (!vif0ch->chcr.STR) Console.WriteLn("Vif0 running when CHCR = %x", vif0ch->chcr._u32); if (!vif0ch->chcr.STR) Console.WriteLn("Vif0 running when CHCR = %x", vif0ch->chcr._u32);
if ((vif0ch->chcr.MOD == CHAIN_MODE) && (!vif0.done) && (!vif0.vifstalled)) if ((vif0ch->chcr.MOD == CHAIN_MODE) && (!vif0.done))
{ {
if (!(dmacRegs->ctrl.DMAE)) if (!(dmacRegs->ctrl.DMAE))