github TomHarte/CLK 2026-02-23

latest releases: 2026-06-06, 2026-05-29, 2026-05-28...
3 months ago

This release:

  1. uses a history of recent frames to detect when machines are producing interlaced output; and
  2. switches its frame-blending model in that case to avoid any visible up/down motion.

As with diagonal scans this isn't more accurate in the prima facie sense: real CRTs don't blend frames. No parts of successive interlaced fields are visible at the same time. They just paint one field half a line lower than the other, and alternate rapidly.

But it's arguably more accurate in the practical sense, especially when adapting 50Hz video to a non-50Hz display; a simple bob inevitably introduces some degree of visible stutter that appears as wiggle. Joining pairs of fields potentially creates aliasing during motion — the famous comb effect — but definitely avoids the wiggling.

Key points:

  • this is all in reference to real interlaced video. Not those demos that alternate frames within a progressive scan and call themselves interlaced, such as a few on the ZX Spectrum. Those don't produce interlaced video; and
  • the functionality is built into the simulated CRT, being purely a function of the generated video signal. There is absolutely no around-the-back-hackery such as specific machines somehow magicking the fact that they're producing interlaced video into the CRT. Either they're timing their vertical syncs to produce an alternating offset relative to the horizontal syncs or they're not. Just like a real TV.

Don't miss a new CLK release

NewReleases is sending notifications on new releases.