IPU: Fix GT3 regression from #6506

BTW it was totally not my suggestion to change it and I take no responsibility for the fact I bro.. I mean LT broke it.
This commit is contained in:
refractionpcsx2 2022-06-25 16:01:39 +01:00
parent 8c1b9e1557
commit 8216faae6e
1 changed files with 6 additions and 4 deletions

View File

@ -68,8 +68,6 @@ static __fi int IPU1chain() {
void IPU1dma()
{
int totalqwc = 0;
if(!ipu1ch.chcr.STR || ipu1ch.chcr.MOD == 2)
{
//We MUST stop the IPU from trying to fill the FIFO with more data if the DMA has been suspended
@ -86,6 +84,9 @@ void IPU1dma()
return;
}
int tagcycles = 0;
int totalqwc = 0;
IPU_LOG("IPU1 DMA Called QWC %x Finished %d In Progress %d tadr %x", ipu1ch.qwc, IPU1Status.DMAFinished, IPU1Status.InProgress, ipu1ch.tadr);
if (!IPU1Status.InProgress)
{
@ -100,7 +101,7 @@ void IPU1dma()
}
ipu1ch.madr = ptag[1]._u32;
totalqwc += 1; // Add 1 cycles from the QW read for the tag
tagcycles += 1; // Add 1 cycles from the QW read for the tag
if (ipu1ch.chcr.TTE) DevCon.Warning("TTE?");
@ -122,7 +123,7 @@ void IPU1dma()
//Do this here to prevent double settings on Chain DMA's
if(totalqwc == 0 || (IPU1Status.DMAFinished && !IPU1Status.InProgress))
{
totalqwc = std::max(4, totalqwc);
totalqwc = std::max(4, totalqwc) + tagcycles;
IPU_INT_TO(totalqwc * BIAS);
}
else
@ -135,6 +136,7 @@ void IPU1dma()
}
else
{
totalqwc = std::max(4, totalqwc) + tagcycles;
IPU_INT_TO(totalqwc * BIAS);
}
}