mirror of
https://github.com/TomHarte/CLK.git
synced 2024-11-29 12:50:28 +00:00
Adjust MDA clock; it's slightly slower than my guess.
This commit is contained in:
parent
5576588c2d
commit
c5ec9ae171
@ -28,11 +28,16 @@ class MDA {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void run_for(Cycles cycles) {
|
void run_for(Cycles cycles) {
|
||||||
|
// Input rate is the PIT rate of 1,193,182 Hz.
|
||||||
|
// MDA is actually clocked at 16.257 MHz; which is treated internally as 1,806,333.333333333333333... Hz
|
||||||
|
//
|
||||||
|
// The GCD of those two numbers is... 2. Oh well.
|
||||||
|
|
||||||
// I _think_ the MDA's CRTC is clocked at 14/9ths the PIT clock.
|
// I _think_ the MDA's CRTC is clocked at 14/9ths the PIT clock.
|
||||||
// Do that conversion here.
|
// Do that conversion here.
|
||||||
full_clock_ += 14 * cycles.as<int>();
|
full_clock_ += 8'128'500 * cycles.as<int>();
|
||||||
crtc_.run_for(Cycles(full_clock_ / 9));
|
crtc_.run_for(Cycles(full_clock_ / (596'591 * 9)));
|
||||||
full_clock_ %= 9;
|
full_clock_ %= (596'591 * 9);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <int address>
|
template <int address>
|
||||||
@ -64,13 +69,13 @@ class MDA {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Outputs::Display::ScanStatus get_scaled_scan_status() const {
|
Outputs::Display::ScanStatus get_scaled_scan_status() const {
|
||||||
return outputter_.crt.get_scaled_scan_status() * 9.0f / 14.0f;
|
return outputter_.crt.get_scaled_scan_status() * 596591.0f / 8128500.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
struct CRTCOutputter {
|
struct CRTCOutputter {
|
||||||
CRTCOutputter() :
|
CRTCOutputter() :
|
||||||
crt(882, 9, 382, 3, Outputs::Display::InputDataType::Red2Green2Blue2)
|
crt(882, 9, 370, 3, Outputs::Display::InputDataType::Red2Green2Blue2)
|
||||||
// TODO: really this should be a Luminance8 and set an appropriate modal tint colour;
|
// TODO: really this should be a Luminance8 and set an appropriate modal tint colour;
|
||||||
// consider whether that's worth building into the scan target.
|
// consider whether that's worth building into the scan target.
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user