GPU: Only accept DMA writes when FIFO is empty or command incomplete

Fixes a bunch of games, including Red Asphalt, Little Princess, Vampire
Hunter D main menu when combined with tight DMA sync.
This commit is contained in:
Connor McLaughlin 2020-11-15 21:54:07 +10:00
parent df12f08ac3
commit 473cfffa0c

View File

@ -246,7 +246,7 @@ void GPU::UpdateDMARequest()
{ {
case BlitterState::Idle: case BlitterState::Idle:
m_GPUSTAT.ready_to_send_vram = false; m_GPUSTAT.ready_to_send_vram = false;
m_GPUSTAT.ready_to_recieve_dma = (m_fifo.GetSize() < m_fifo_size); m_GPUSTAT.ready_to_recieve_dma = (m_fifo.IsEmpty() || m_fifo.GetSize() < m_command_total_words);
break; break;
case BlitterState::WritingVRAM: case BlitterState::WritingVRAM: