diff --git a/core/emulator.cpp b/core/emulator.cpp index 28feefee7..305ffeb7f 100644 --- a/core/emulator.cpp +++ b/core/emulator.cpp @@ -928,7 +928,9 @@ void Emulator::vblank() if (sh4_sched_now64() - startTime <= 10000000) return; renderTimeout = true; - if (!ggpo::active() && !config::ThreadedRendering) + if (ggpo::active()) + ggpo::endOfFrame(); + else if (!config::ThreadedRendering) sh4_cpu.Stop(); } diff --git a/core/hw/pvr/Renderer_if.cpp b/core/hw/pvr/Renderer_if.cpp index afd9cd035..a4efb1732 100644 --- a/core/hw/pvr/Renderer_if.cpp +++ b/core/hw/pvr/Renderer_if.cpp @@ -395,6 +395,9 @@ void rend_start_render() ctx->rend.fog_clamp_min = FOG_CLAMP_MIN; ctx->rend.fog_clamp_max = FOG_CLAMP_MAX; + if (!ctx->rend.isRTT) + ggpo::endOfFrame(); + if (QueueRender(ctx)) { palette_update(); diff --git a/core/hw/pvr/spg.cpp b/core/hw/pvr/spg.cpp index da0a59056..2192ee06e 100755 --- a/core/hw/pvr/spg.cpp +++ b/core/hw/pvr/spg.cpp @@ -113,7 +113,6 @@ static int spg_line_sched(int tag, int cycles, int jitter) SB_MDST = 0; } asic_RaiseInterrupt(holly_SCANINT1); - ggpo::endOfFrame(); } if (SPG_VBLANK_INT.vblank_out_interrupt_line_number == prv_cur_scanline)