1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-06-01 22:41:32 +00:00

Finish the thought on magic constants.

This commit is contained in:
Thomas Harte 2024-03-21 20:43:55 -04:00
parent 2de1a2dd0d
commit 2ec235170e
3 changed files with 28 additions and 7 deletions

View File

@ -222,11 +222,11 @@ private:
crt_.set_new_timing(
24'000'000 / (divider * 312 * 50), /* Cycle per line. */
312, /* Height of display. */
Outputs::Display::ColourSpace::YIQ, /* Composite colour space. */
Outputs::CRT::PAL::ColourSpace,
Outputs::CRT::PAL::ColourCycleNumerator,
Outputs::CRT::PAL::ColourCycleDenominator,
Outputs::CRT::PAL::VerticalSyncLength,
true);
Outputs::CRT::PAL::AlternatesPhase);
}
};

View File

@ -120,17 +120,23 @@ void CRT::set_new_display_type(int cycles_per_line, Outputs::Display::Type displ
set_new_timing(
cycles_per_line,
(displayType == Outputs::Display::Type::PAL50) ? 312 : 262,
Outputs::Display::ColourSpace::YUV,
PAL::ColourSpace,
PAL::ColourCycleNumerator,
PAL::ColourCycleDenominator,
PAL::VerticalSyncLength,
true);
// i.e. 283.7516 colour cycles per line; 2.5 lines = vertical sync.
PAL::AlternatesPhase);
break;
case Outputs::Display::Type::NTSC60:
scan_target_modals_.intended_gamma = 2.2f;
set_new_timing(cycles_per_line, 262, Outputs::Display::ColourSpace::YIQ, 455, 2, 6, false); // i.e. 227.5 colour cycles per line, 3 lines = vertical sync.
set_new_timing(
cycles_per_line,
262,
NTSC::ColourSpace,
NTSC::ColourCycleNumerator,
NTSC::ColourCycleDenominator,
NTSC::VerticalSyncLength,
NTSC::AlternatesPhase);
break;
}
}

View File

@ -20,11 +20,26 @@ namespace Outputs::CRT {
namespace PAL {
// PAL: 283.7516 colour cycles per line; 2.5 lines = vertical sync.
// 283.7516 colour cycles per line; 2.5 lines of vertical sync.
static constexpr int ColourCycleNumerator = 709379;
static constexpr int ColourCycleDenominator = 2500;
static constexpr int VerticalSyncLength = 5;
static constexpr auto ColourSpace = Outputs::Display::ColourSpace::YUV;
static constexpr bool AlternatesPhase = true;
}
namespace NTSC {
// 227.5 colour cycles per line; 3 lines of vertical sync.
static constexpr int ColourCycleNumerator = 455;
static constexpr int ColourCycleDenominator = 2;
static constexpr int VerticalSyncLength = 6;
static constexpr auto ColourSpace = Outputs::Display::ColourSpace::YIQ;
static constexpr bool AlternatesPhase = false;
}
class CRT;