mirror of https://github.com/PCSX2/pcsx2.git
IPU fix for GUST games
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3777 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
1c75440a6c
commit
d4310e0b86
|
@ -86,13 +86,16 @@ int IPU_Fifo_Input::write(u32* pMem, int size)
|
||||||
int IPU_Fifo_Input::read(void *value)
|
int IPU_Fifo_Input::read(void *value)
|
||||||
{
|
{
|
||||||
// wait until enough data to ensure proper streaming.
|
// wait until enough data to ensure proper streaming.
|
||||||
if (g_BP.IFC < 1)
|
if (g_BP.IFC < 4)
|
||||||
{
|
{
|
||||||
// IPU FIFO is empty and DMA is waiting so lets tell the DMA we are ready to put data in the FIFO
|
// IPU FIFO is empty and DMA is waiting so lets tell the DMA we are ready to put data in the FIFO
|
||||||
if(cpuRegs.eCycle[4] == 0x9999)
|
if(cpuRegs.eCycle[4] == 0x9999)
|
||||||
IPU1dma();
|
{
|
||||||
|
CPU_INT( DMAC_TO_IPU, 32 );
|
||||||
|
}
|
||||||
|
|
||||||
if (g_BP.IFC == 0) return 0;
|
if (g_BP.IFC == 0) return 0;
|
||||||
|
pxAssert(g_BP.IFC > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
CopyQWC(value, &data[readpos]);
|
CopyQWC(value, &data[readpos]);
|
||||||
|
|
|
@ -189,7 +189,7 @@ int IPU1dma()
|
||||||
{
|
{
|
||||||
if(!WaitGSPaths())
|
if(!WaitGSPaths())
|
||||||
{ // legacy WaitGSPaths() for now
|
{ // legacy WaitGSPaths() for now
|
||||||
IPU_INT_TO(4); //Give it a short wait.
|
IPU_INT_TO(32); //Give it a short wait.
|
||||||
return totalqwc;
|
return totalqwc;
|
||||||
}
|
}
|
||||||
IPU_LOG("Processing Normal QWC left %x Finished %d In Progress %d", ipu1dma.qwc, IPU1Status.DMAFinished, IPU1Status.InProgress);
|
IPU_LOG("Processing Normal QWC left %x Finished %d In Progress %d", ipu1dma.qwc, IPU1Status.DMAFinished, IPU1Status.InProgress);
|
||||||
|
@ -203,7 +203,7 @@ int IPU1dma()
|
||||||
{
|
{
|
||||||
if(!WaitGSPaths())
|
if(!WaitGSPaths())
|
||||||
{ // legacy WaitGSPaths() for now
|
{ // legacy WaitGSPaths() for now
|
||||||
IPU_INT_TO(4); //Give it a short wait.
|
IPU_INT_TO(32); //Give it a short wait.
|
||||||
return totalqwc;
|
return totalqwc;
|
||||||
}
|
}
|
||||||
IPU_LOG("Processing Chain QWC left %x Finished %d In Progress %d", ipu1dma.qwc, IPU1Status.DMAFinished, IPU1Status.InProgress);
|
IPU_LOG("Processing Chain QWC left %x Finished %d In Progress %d", ipu1dma.qwc, IPU1Status.DMAFinished, IPU1Status.InProgress);
|
||||||
|
@ -283,7 +283,7 @@ int IPU1dma()
|
||||||
|
|
||||||
if(!WaitGSPaths() && ipu1dma.qwc > 0)
|
if(!WaitGSPaths() && ipu1dma.qwc > 0)
|
||||||
{ // legacy WaitGSPaths() for now
|
{ // legacy WaitGSPaths() for now
|
||||||
IPU_INT_TO(4); //Give it a short wait.
|
IPU_INT_TO(32); //Give it a short wait.
|
||||||
return totalqwc;
|
return totalqwc;
|
||||||
}
|
}
|
||||||
IPU_LOG("Processing Start Chain QWC left %x Finished %d In Progress %d", ipu1dma.qwc, IPU1Status.DMAFinished, IPU1Status.InProgress);
|
IPU_LOG("Processing Start Chain QWC left %x Finished %d In Progress %d", ipu1dma.qwc, IPU1Status.DMAFinished, IPU1Status.InProgress);
|
||||||
|
|
Loading…
Reference in New Issue