1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-07-04 18:29:40 +00:00

Enshrined a default colour burst amplitude. Which now everybody relies on. The 102 figure is derived from the burst apparently being 40 IRE.

This commit is contained in:
Thomas Harte 2017-07-07 23:35:14 -04:00
parent c7fa2ed11a
commit 12f7e1b804
3 changed files with 4 additions and 10 deletions

View File

@ -259,7 +259,7 @@ template <class T> class MOS6560 {
if(this_state_ != output_state_) { if(this_state_ != output_state_) {
switch(output_state_) { switch(output_state_) {
case State::Sync: crt_->output_sync(cycles_in_state_ * 4); break; case State::Sync: crt_->output_sync(cycles_in_state_ * 4); break;
case State::ColourBurst: crt_->output_colour_burst(cycles_in_state_ * 4, (is_odd_frame_ || is_odd_line_) ? 128 : 0, 0); break; case State::ColourBurst: crt_->output_colour_burst(cycles_in_state_ * 4, (is_odd_frame_ || is_odd_line_) ? 128 : 0); break;
case State::Border: output_border(cycles_in_state_ * 4); break; case State::Border: output_border(cycles_in_state_ * 4); break;
case State::Pixels: crt_->output_data(cycles_in_state_ * 4, 1); break; case State::Pixels: crt_->output_data(cycles_in_state_ * 4, 1); break;
} }

View File

@ -194,7 +194,7 @@ void CRT::advance_cycles(unsigned int number_of_cycles, bool hsync_requested, bo
output_x2() = (uint16_t)horizontal_flywheel_->get_current_output_position(); output_x2() = (uint16_t)horizontal_flywheel_->get_current_output_position();
} }
openGL_output_builder_.array_builder.flush( openGL_output_builder_.array_builder.flush(
[output_y, this] (uint8_t *input_buffer, size_t input_size, uint8_t *output_buffer, size_t output_size) { [=] (uint8_t *input_buffer, size_t input_size, uint8_t *output_buffer, size_t output_size) {
openGL_output_builder_.texture_builder.flush( openGL_output_builder_.texture_builder.flush(
[=] (const std::vector<TextureBuilder::WriteArea> &write_areas, size_t number_of_write_areas) { [=] (const std::vector<TextureBuilder::WriteArea> &write_areas, size_t number_of_write_areas) {
assert(number_of_write_areas * SourceVertexSize == input_size); assert(number_of_write_areas * SourceVertexSize == input_size);
@ -333,13 +333,7 @@ void CRT::output_colour_burst(unsigned int number_of_cycles, uint8_t phase, uint
} }
void CRT::output_default_colour_burst(unsigned int number_of_cycles) { void CRT::output_default_colour_burst(unsigned int number_of_cycles) {
Scan scan { output_colour_burst(number_of_cycles, (uint8_t)((phase_numerator_ * 256) / phase_denominator_ + (is_alernate_line_ ? 128 : 0)));
.type = Scan::Type::ColourBurst,
.number_of_cycles = number_of_cycles,
.phase = (uint8_t)((phase_numerator_ * 256) / phase_denominator_ + (is_alernate_line_ ? 128 : 0)),
.amplitude = 32
};
output_scan(&scan);
} }
void CRT::output_data(unsigned int number_of_cycles, unsigned int source_divider) { void CRT::output_data(unsigned int number_of_cycles, unsigned int source_divider) {

View File

@ -187,7 +187,7 @@ class CRT {
@param amplitude The amplitude of the colour burst in 1/256ths of the amplitude of the @param amplitude The amplitude of the colour burst in 1/256ths of the amplitude of the
positive portion of the wave. positive portion of the wave.
*/ */
void output_colour_burst(unsigned int number_of_cycles, uint8_t phase, uint8_t amplitude); void output_colour_burst(unsigned int number_of_cycles, uint8_t phase, uint8_t amplitude = 102);
/*! Outputs a colour burst exactly in phase with CRT expectations using the idiomatic amplitude. /*! Outputs a colour burst exactly in phase with CRT expectations using the idiomatic amplitude.