From 42ccf48966a7905c3ebeac3ffca3f6fefbc7b497 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Thu, 2 Jan 2020 20:16:28 -0500 Subject: [PATCH] Judging by Pompey Pirates Menu 88, vsync should occur a line earlier, ending during line 0. --- Machines/Atari/ST/Video.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Machines/Atari/ST/Video.cpp b/Machines/Atari/ST/Video.cpp index f2977fe75..c1c72237b 100644 --- a/Machines/Atari/ST/Video.cpp +++ b/Machines/Atari/ST/Video.cpp @@ -267,10 +267,11 @@ void Video::advance(HalfCycles duration) { next_vertical_.enable = true; } else if(y_ == vertical_timings.reset_enable) { next_vertical_.enable = false; - } else if(next_y_ == vertical_timings.height) { + } else if(next_y_ == vertical_timings.height - 2) { next_vertical_.sync_schedule = VerticalState::SyncSchedule::Begin; + } else if(next_y_ == vertical_timings.height) { next_y_ = 0; - } else if(next_y_ == 2) { + } else if(y_ == 0) { next_vertical_.sync_schedule = VerticalState::SyncSchedule::End; } } @@ -464,10 +465,10 @@ void Video::write(int address, uint16_t value) { // Sync mode and pixel mode. case 0x05: // Writes to sync mode have a one-cycle delay in effect. - deferrer_.defer(HalfCycles(2), [=] { +// deferrer_.defer(HalfCycles(2), [=] { sync_mode_ = value; update_output_mode(); - }); +// }); break; case 0x30: video_mode_ = value; @@ -512,8 +513,8 @@ void Video::update_output_mode() { video_stream_.set_bpp(output_bpp_); } -// const int freqs[] = {50, 60, 72}; -// printf("%d, %d -> %d [%d %d]\n", x_ / 2, y_, freqs[int(field_frequency_)], horizontal_.enable, vertical_.enable); + const int freqs[] = {50, 60, 72}; + printf("%d, %d -> %d [%d %d]\n", x_ / 2, y_, freqs[int(field_frequency_)], horizontal_.enable, vertical_.enable); } // MARK: - The shifter