diff --git a/Components/9918/9918.cpp b/Components/9918/9918.cpp index 49cbc86c1..0aa855b32 100644 --- a/Components/9918/9918.cpp +++ b/Components/9918/9918.cpp @@ -370,7 +370,8 @@ void TMS9918::run_for(const HalfCycles cycles) { intersect( line_buffer.first_pixel_output_column, line_buffer.next_border_column, - if(start == line_buffer.first_pixel_output_column) { + if(!asked_for_write_area_) { + asked_for_write_area_ = true; pixel_origin_ = pixel_target_ = reinterpret_cast( crt_->allocate_write_area(static_cast(line_buffer.next_border_column - line_buffer.first_pixel_output_column)) ); @@ -392,6 +393,7 @@ void TMS9918::run_for(const HalfCycles cycles) { const unsigned int length = static_cast(line_buffer.next_border_column - line_buffer.first_pixel_output_column); crt_->output_data(length * 4, length); pixel_origin_ = pixel_target_ = nullptr; + asked_for_write_area_ = false; } ); diff --git a/Components/9918/Implementation/9918Base.hpp b/Components/9918/Implementation/9918Base.hpp index c22b06bba..6a5f8fa02 100644 --- a/Components/9918/Implementation/9918Base.hpp +++ b/Components/9918/Implementation/9918Base.hpp @@ -788,6 +788,7 @@ class Base { #undef slot uint32_t *pixel_target_ = nullptr, *pixel_origin_ = nullptr; + bool asked_for_write_area_ = false; void draw_tms_character(int start, int end); void draw_tms_text(int start, int end); void draw_sms(int start, int end);