diff --git a/Components/9918/Implementation/9918.cpp b/Components/9918/Implementation/9918.cpp index 7e7cfdb31..35e1a714b 100644 --- a/Components/9918/Implementation/9918.cpp +++ b/Components/9918/Implementation/9918.cpp @@ -499,6 +499,20 @@ void TMS9918::run_for(const HalfCycles cycles) { #define border(left, right) intersect(left, right, this->output_border(end - start, cram_value)) + const auto left_blank = [&]() { + // Blanking region: output the entire sequence when the cursor + // crosses the start-of-border point. + if( + this->output_pointer_.column < LineLayout::EndOfLeftErase && + end_column >= LineLayout::EndOfLeftErase + ) { + output_sync(LineLayout::EndOfSync); + output_blank(LineLayout::StartOfColourBurst - LineLayout::EndOfSync); + output_default_colour_burst(LineLayout::EndOfColourBurst - LineLayout::StartOfColourBurst); + output_blank(LineLayout::EndOfLeftErase - LineLayout::EndOfColourBurst); + } + }; + if(this->draw_line_buffer_->vertical_state != VerticalState::Pixels) { if( this->output_pointer_.row >= this->mode_timing_.first_vsync_line && @@ -510,17 +524,7 @@ void TMS9918::run_for(const HalfCycles cycles) { output_sync(Timing::CyclesPerLine); } } else { - // Blanking region: output the entire sequence when the cursor - // crosses the start-of-border point. - if( - this->output_pointer_.column < LineLayout::EndOfLeftErase && - end_column >= LineLayout::EndOfLeftErase - ) { - output_sync(LineLayout::EndOfSync); - output_blank(LineLayout::StartOfColourBurst - LineLayout::EndOfSync); - output_default_colour_burst(LineLayout::EndOfColourBurst - LineLayout::StartOfColourBurst); - output_blank(LineLayout::EndOfLeftErase - LineLayout::EndOfColourBurst); - } + left_blank(); // Border colour until beginning of right erase. border(LineLayout::EndOfLeftErase, LineLayout::EndOfRightBorder); @@ -531,16 +535,7 @@ void TMS9918::run_for(const HalfCycles cycles) { } } } else { - // Blanking region. - if( - this->output_pointer_.column < LineLayout::EndOfLeftErase && - end_column >= LineLayout::EndOfLeftErase - ) { - output_sync(LineLayout::EndOfSync); - output_blank(LineLayout::StartOfColourBurst - LineLayout::EndOfSync); - output_default_colour_burst(LineLayout::EndOfColourBurst - LineLayout::StartOfColourBurst); - output_blank(LineLayout::EndOfLeftErase - LineLayout::EndOfColourBurst); - } + left_blank(); // Left border. border(LineLayout::EndOfLeftErase, this->draw_line_buffer_->first_pixel_output_column); diff --git a/OSBindings/Mac/Clock Signal.xcodeproj/xcshareddata/xcschemes/Clock Signal.xcscheme b/OSBindings/Mac/Clock Signal.xcodeproj/xcshareddata/xcschemes/Clock Signal.xcscheme index 474fa352e..3534e9926 100644 --- a/OSBindings/Mac/Clock Signal.xcodeproj/xcshareddata/xcschemes/Clock Signal.xcscheme +++ b/OSBindings/Mac/Clock Signal.xcodeproj/xcshareddata/xcschemes/Clock Signal.xcscheme @@ -1,7 +1,7 @@ + version = "1.3">