mirror of
https://github.com/stenzek/duckstation.git
synced 2026-10-11 22:49:58 +00:00
GPU: Fix scanline sync before vertical_display_start
If the current line was before start, it wouldn't sync before end.
This commit is contained in:
+7
-5
@@ -1510,14 +1510,16 @@ void GPU::UpdateCRTCTickEvent()
|
||||
lines_until_event = (s_locals.crtc_state.current_scanline >= s_locals.crtc_state.vertical_display_end) ?
|
||||
(s_locals.crtc_state.vertical_total - s_locals.crtc_state.current_scanline +
|
||||
s_locals.crtc_state.vertical_display_start) :
|
||||
(s_locals.crtc_state.vertical_display_end - s_locals.crtc_state.current_scanline);
|
||||
((s_locals.crtc_state.current_scanline < s_locals.crtc_state.vertical_display_start) ?
|
||||
(s_locals.crtc_state.vertical_display_start - s_locals.crtc_state.current_scanline) :
|
||||
(s_locals.crtc_state.vertical_display_end - s_locals.crtc_state.current_scanline));
|
||||
}
|
||||
else
|
||||
{
|
||||
lines_until_event = (s_locals.crtc_state.current_scanline >= s_locals.crtc_state.vertical_display_end ?
|
||||
(s_locals.crtc_state.vertical_total - s_locals.crtc_state.current_scanline +
|
||||
s_locals.crtc_state.vertical_display_end) :
|
||||
(s_locals.crtc_state.vertical_display_end - s_locals.crtc_state.current_scanline));
|
||||
lines_until_event = (s_locals.crtc_state.current_scanline >= s_locals.crtc_state.vertical_display_end) ?
|
||||
(s_locals.crtc_state.vertical_total - s_locals.crtc_state.current_scanline +
|
||||
s_locals.crtc_state.vertical_display_end) :
|
||||
(s_locals.crtc_state.vertical_display_end - s_locals.crtc_state.current_scanline);
|
||||
}
|
||||
if (Timers::IsExternalIRQEnabled(HBLANK_TIMER_INDEX))
|
||||
lines_until_event = std::min(lines_until_event, Timers::GetTicksUntilIRQ(HBLANK_TIMER_INDEX));
|
||||
|
||||
Reference in New Issue
Block a user