diff --git a/src/machine/m_tandy.c b/src/machine/m_tandy.c index 56982b3bd..2a7ef2275 100644 --- a/src/machine/m_tandy.c +++ b/src/machine/m_tandy.c @@ -718,8 +718,13 @@ recalc_timings(tandy_t *dev) double _dispofftime; double disptime; - disptime = vid->crtc[0] + 1; - _dispontime = vid->crtc[1]; + if (vid->mode & 1) { + disptime = vid->crtc[0] + 1; + _dispontime = vid->crtc[1]; + } else { + disptime = (vid->crtc[0] + 1) << 1; + _dispontime = vid->crtc[1] << 1; + } _dispofftime = disptime - _dispontime; _dispontime *= CGACONST; @@ -795,7 +800,10 @@ vid_out(uint16_t addr, uint8_t val, void *priv) break; case 0x03d8: + old = vid->mode; vid->mode = val; + if ((old ^ val) & 0x01) + recalc_timings(dev); if (!dev->is_sl2) update_cga16_color(vid->mode); break;