diff --git a/src/emucore/tia/frame-manager/FrameLayoutDetector.cxx b/src/emucore/tia/frame-manager/FrameLayoutDetector.cxx index 1fe79f651..5ae3be83b 100644 --- a/src/emucore/tia/frame-manager/FrameLayoutDetector.cxx +++ b/src/emucore/tia/frame-manager/FrameLayoutDetector.cxx @@ -181,12 +181,14 @@ void FrameLayoutDetector::onNextLine() if (myCurrentFrameTotalLines > frameLines - 3 || myTotalFrames == 0) ++myLinesWaitingForVsyncToStart; - if (myLinesWaitingForVsyncToStart > Metrics::waitForVsync) setState(State::waitForVsyncEnd); + if (myLinesWaitingForVsyncToStart > Metrics::waitForVsync) + setState(State::waitForVsyncEnd); break; case State::waitForVsyncEnd: - if (++myLinesWaitingForVsyncToStart > Metrics::waitForVsync) setState(State::waitForVsyncStart); + if (++myLinesWaitingForVsyncToStart > Metrics::waitForVsync) + setState(State::waitForVsyncStart); break; @@ -232,7 +234,10 @@ void FrameLayoutDetector::finalizeFrame() { notifyFrameComplete(); - if (myTotalFrames <= Metrics::initialGarbageFrames) return; + if (myTotalFrames <= Metrics::initialGarbageFrames) + return; + if (myCurrentFrameFinalLines > Metrics::frameLinesPAL + Metrics::waitForVsync) + return; // Calculate how close a frame is to PAL and NTSC based on scanlines. An odd scanline count // results into a penalty of 0.5 for PAL. The result is between 0.0 (<=262 scanlines) and