nubus/nubus_specpdq.cpp: Derive the horizontal visible area from the written values. [R. Belmont]

This commit is contained in:
arbee 2024-08-01 20:51:46 -04:00
parent e08dd3f14f
commit 192dc72cc6

View File

@ -23,7 +23,6 @@
TODO: TODO:
* Having no alternate oscillator installed is not emulated. * Having no alternate oscillator installed is not emulated.
* Work out how active line length is configured.
* Alternate oscillator calibration is currently failing. Fixing this * Alternate oscillator calibration is currently failing. Fixing this
probably requires a complete cycle-accurate Mac II. probably requires a complete cycle-accurate Mac II.
@ -326,22 +325,13 @@ void nubus_specpdq_device::update_crtc()
// for some reason you temporarily get invalid screen parameters - ignore them // for some reason you temporarily get invalid screen parameters - ignore them
if (m_crtc.valid(*this)) if (m_crtc.valid(*this))
{ {
rectangle active( int h_start_adj = (m_crtc.h_start(1) + 3) * 16;
m_crtc.h_start(16) + (m_hdelay * 4),
m_crtc.h_end(16) - 1,
m_crtc.v_start(),
m_crtc.v_end() - 1);
// FIXME: work out how it actually configures the RAMDAC end-of-line rectangle active(
// this is a horrible hack h_start_adj,
if (active.width() < 832) m_crtc.h_end(16) - 1,
active.set_width(640); m_crtc.v_start(),
else if (active.width() < 1024) m_crtc.v_end() - 1);
active.set_width(832);
else if (active.width() < 1152)
active.set_width(1024);
else
active.set_width(1152);
screen().configure( screen().configure(
m_crtc.h_total(16), m_crtc.h_total(16),