From 16731661e86cca82fc78a94a13dc799cb1181a6f Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Sun, 24 Feb 2019 22:28:11 -0500 Subject: [PATCH] Switches back to being explicit about the colour burst phase. Some sort of phase inversion otherwise seems to be achievable by software that switch modes often. --- Machines/AppleII/Video.cpp | 7 ++++++- Machines/AppleII/Video.hpp | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Machines/AppleII/Video.cpp b/Machines/AppleII/Video.cpp index 736f71734..22474c8ae 100644 --- a/Machines/AppleII/Video.cpp +++ b/Machines/AppleII/Video.cpp @@ -18,7 +18,12 @@ VideoBase::VideoBase(bool is_iie, std::function &&target) : // Show only the centre 75% of the TV frame. crt_.set_display_type(Outputs::Display::DisplayType::CompositeColour); crt_.set_visible_area(Outputs::Display::Rect(0.118f, 0.122f, 0.77f, 0.77f)); - crt_.set_immediate_default_phase(0.5f); + + // TODO: there seems to be some sort of bug whereby switching modes can cause + // a signal discontinuity that knocks phase out of whack. So it isn't safe to + // use default_colour_bursts elsewhere, though it otherwise should be. If/when + // it is, start doing so and return to setting the immediate phase up here. +// crt_.set_immediate_default_phase(0.5f); character_zones[0].xor_mask = 0; character_zones[0].address_mask = 0x3f; diff --git a/Machines/AppleII/Video.hpp b/Machines/AppleII/Video.hpp index fd53ea18a..3eccde46e 100644 --- a/Machines/AppleII/Video.hpp +++ b/Machines/AppleII/Video.hpp @@ -534,7 +534,7 @@ template class Video: public VideoBase { const int colour_burst_start = std::max(first_sync_column + sync_length + 1, column_); const int colour_burst_end = std::min(first_sync_column + sync_length + 4, ending_column); if(colour_burst_end > colour_burst_start) { - crt_.output_default_colour_burst((colour_burst_end - colour_burst_start) * 14); + crt_.output_colour_burst((colour_burst_end - colour_burst_start) * 14, 0); } second_blank_start = std::max(first_sync_column + sync_length + 3, column_);