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; }