From 664bd06df6539de8f3d386e5c568a7e6f15a27ef Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Sun, 17 May 2020 17:58:47 +1000 Subject: [PATCH] GPU: Don't recursively execute commands This can happen with interlaced rendering on when a line is pending scanout and a primitive is drawn. Fixes screen transitions in Slap Happy Rhythm Busters. --- src/core/gpu.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/core/gpu.cpp b/src/core/gpu.cpp index b2277ae1f..a00a236e8 100644 --- a/src/core/gpu.cpp +++ b/src/core/gpu.cpp @@ -619,7 +619,11 @@ void GPU::Execute(TickCount ticks) if (m_command_ticks > 0) { m_command_ticks -= gpu_ticks; - ExecuteCommands(); + + // we can be syncing if this came from a DMA write. recursively executing commands would be bad. + if (!m_syncing) + ExecuteCommands(); + if (m_command_ticks < 0) m_command_ticks = 0; }