mirror of
https://github.com/TomHarte/CLK.git
synced 2025-02-28 22:29:36 +00:00
Took a shot at reinstating the horizontal blank extend flag.
This commit is contained in:
parent
70745286a5
commit
2e9ef2b0ef
@ -351,6 +351,7 @@ void TIA::set_ball_motion(uint8_t motion)
|
|||||||
|
|
||||||
void TIA::move()
|
void TIA::move()
|
||||||
{
|
{
|
||||||
|
horizontal_blank_extend_ = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TIA::clear_motion()
|
void TIA::clear_motion()
|
||||||
@ -389,9 +390,10 @@ void TIA::output_for_cycles(int number_of_cycles)
|
|||||||
if(!output_cursor)
|
if(!output_cursor)
|
||||||
{
|
{
|
||||||
memset(collision_buffer_, 0, sizeof(collision_buffer_));
|
memset(collision_buffer_, 0, sizeof(collision_buffer_));
|
||||||
|
horizontal_blank_extend_ = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// accumulate an OR'dversion of the output into the collision buffer
|
// accumulate an OR'd version of the output into the collision buffer
|
||||||
draw_playfield(output_cursor, horizontal_counter_);
|
draw_playfield(output_cursor, horizontal_counter_);
|
||||||
|
|
||||||
// convert to television signals
|
// convert to television signals
|
||||||
@ -476,6 +478,16 @@ void TIA::output_pixels(int start, int end)
|
|||||||
{
|
{
|
||||||
int target_position = start - pixels_start_location_;
|
int target_position = start - pixels_start_location_;
|
||||||
|
|
||||||
|
if(start < first_pixel_cycle+8 && horizontal_blank_extend_)
|
||||||
|
{
|
||||||
|
while(start < end && start < first_pixel_cycle+8)
|
||||||
|
{
|
||||||
|
pixel_target_[target_position] = 0;
|
||||||
|
start++;
|
||||||
|
target_position++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(playfield_priority_ == PlayfieldPriority::Score)
|
if(playfield_priority_ == PlayfieldPriority::Score)
|
||||||
{
|
{
|
||||||
while(start < end && start < first_pixel_cycle + 80)
|
while(start < end && start < first_pixel_cycle + 80)
|
||||||
@ -519,12 +531,14 @@ void TIA::output_line()
|
|||||||
crt_->output_sync(32);
|
crt_->output_sync(32);
|
||||||
crt_->output_blank(32);
|
crt_->output_blank(32);
|
||||||
crt_->output_sync(392);
|
crt_->output_sync(392);
|
||||||
|
horizontal_blank_extend_ = false;
|
||||||
break;
|
break;
|
||||||
case blank_flag:
|
case blank_flag:
|
||||||
crt_->output_blank(32);
|
crt_->output_blank(32);
|
||||||
crt_->output_sync(32);
|
crt_->output_sync(32);
|
||||||
crt_->output_default_colour_burst(32);
|
crt_->output_default_colour_burst(32);
|
||||||
crt_->output_blank(360);
|
crt_->output_blank(360);
|
||||||
|
horizontal_blank_extend_ = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -153,6 +153,9 @@ class TIA {
|
|||||||
struct Missile {
|
struct Missile {
|
||||||
int size; // 0 = 1 pixel, 1 = 2 pixels, etc
|
int size; // 0 = 1 pixel, 1 = 2 pixels, etc
|
||||||
} missile_[2];
|
} missile_[2];
|
||||||
|
|
||||||
|
// movement
|
||||||
|
bool horizontal_blank_extend_;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user