diff --git a/Machines/Atari2600/TIA.cpp b/Machines/Atari2600/TIA.cpp index 6e84bc5d3..e2c9efc10 100644 --- a/Machines/Atari2600/TIA.cpp +++ b/Machines/Atari2600/TIA.cpp @@ -386,6 +386,11 @@ void TIA::output_for_cycles(int number_of_cycles) int output_cursor = horizontal_counter_; horizontal_counter_ += number_of_cycles; + if(!output_cursor) + { + memset(collision_buffer_, 0, sizeof(collision_buffer_)); + } + #define Period(function, target) \ if(output_cursor < target) \ { \ @@ -419,6 +424,8 @@ void TIA::output_for_cycles(int number_of_cycles) break; } +#undef Period + if(output_mode_ & blank_flag) { if(pixel_target_) @@ -528,7 +535,7 @@ void TIA::draw_playfield(int start, int end) while(position < end) { int offset = (position - first_pixel_cycle) >> 2; - collision_buffer_[position - first_pixel_cycle] = (background_[(offset/20)&background_half_mask_] >> (offset%20))&1; + collision_buffer_[position - first_pixel_cycle] |= (background_[(offset/20)&background_half_mask_] >> (offset%20))&1; position++; } }