1
0
mirror of https://github.com/TomHarte/CLK.git synced 2025-01-12 15:31:09 +00:00

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.
This commit is contained in:
Thomas Harte 2019-02-24 22:28:11 -05:00
parent 7bb90c78d9
commit 16731661e8
2 changed files with 7 additions and 2 deletions

View File

@ -18,7 +18,12 @@ VideoBase::VideoBase(bool is_iie, std::function<void(Cycles)> &&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;

View File

@ -534,7 +534,7 @@ template <class BusHandler, bool is_iie> 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_);