mirror of https://github.com/PCSX2/pcsx2.git
Fixed the GoW IPU hang again.
Thanks for helping out once more, ksi3zyc :) git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2830 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
223617a99e
commit
bd8cdfd802
|
@ -422,7 +422,6 @@ static __forceinline BOOL ipuIDEC(u32 val)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int s_bdec = 0;
|
static int s_bdec = 0;
|
||||||
static int g_ipu_dma_error = 0;
|
|
||||||
|
|
||||||
static __forceinline BOOL ipuBDEC(u32 val)
|
static __forceinline BOOL ipuBDEC(u32 val)
|
||||||
{
|
{
|
||||||
|
@ -819,8 +818,7 @@ void IPUWorker()
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SCE_IPU_FDEC:
|
case SCE_IPU_FDEC:
|
||||||
g_ipu_dma_error = 0; // if g_ipu_dma_error is set, then continue processing. Fixes GoWs white screens of death.
|
if (!ipuFDEC(ipuRegs->cmd.DATA))
|
||||||
if (!ipuFDEC(ipuRegs->cmd.DATA) && !g_ipu_dma_error)
|
|
||||||
{
|
{
|
||||||
hwIntcIrq(INTC_IPU);
|
hwIntcIrq(INTC_IPU);
|
||||||
return;
|
return;
|
||||||
|
@ -1569,6 +1567,11 @@ __forceinline void dmaIPU1() // toIPU
|
||||||
if(ipu1dma->qwc == 0)
|
if(ipu1dma->qwc == 0)
|
||||||
{
|
{
|
||||||
ipu1dma->chcr.STR = 0;
|
ipu1dma->chcr.STR = 0;
|
||||||
|
// Hack to force stop IPU
|
||||||
|
ipuRegs->cmd.BUSY = 0;
|
||||||
|
ipuRegs->ctrl.BUSY = 0;
|
||||||
|
ipuRegs->topbusy = 0;
|
||||||
|
//
|
||||||
hwDmacIrq(DMAC_TO_IPU);
|
hwDmacIrq(DMAC_TO_IPU);
|
||||||
Console.Warning("IPU1 Normal error!");
|
Console.Warning("IPU1 Normal error!");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue