After the previous discussion a while back, I'm wondreing if anyone has hacked FreeSync onto a CRT before, just for kicks?
It'd be fascinating from a hacker perspective, just to test variable refresh rate on an existing multisync CRT.
(Vector CRTs of yesteryear were variable refresh rate)
RealNC wrote:Trick question: what would a variable refresh rate CRT look like?
Like the vector displays. They were variable-refresh-rate displays that had a lower refresh rate when there were more lines on the screen. Gradually flickered more and less in a modulating fashion. The Star Wars vector arcade game (1983) was a variable refresh rate CRT.
A variable-refresh-rate raster CRT display would be kinda like that. The raster CRT display could be simply geometrically thought like a vector display that simply painted a bunch of stacked horizontal lines (while modulating mid-line to create the shades) -- same thing. But the count of lines does not change between refresh cycles, so you would need to lengthen/shorten the time between the refresh cycles.
Ideally, you want the CRT to scan at its maximum speed (e.g. 120Hz refresh cycle, regardless of pause between refresh cycles). And use the pause between refresh cycles (variable VHOLD sizes, possibly) to vary the refresh rate. And to slightly reduce the flicker problem, you could set the electron gun brightness as a function of the amount of time passed between refresh cycles (nonlinear will be needed due to electron gun behaviors...) It probably would behave as an okay variable refresh rate display as long as framerates modulated slowly rather than suddenly.
You'll need a CRT with really strong sync capability. They might already exist, but no experimenting has been done to find out.
Some of them actually could tolerate minor random changes to VHOLD size without noticeable flutter (picture size changes at different refresh rates, etc) -- but I don't think many experiments have been done with true variable refresh rates via raster scanning on CRT. (Just by vector scanning, as refresh rate is a function of the number of vectors, as vectors take time to draw). Some would have no range (goes blank for a moment), others a narrow range (e.g. 0.5Hz) and others might have a shockingly wide range (full spec range) and work with a GSYNC/FreeSync output with an adaptor (which might need a hacked LCD monitor in between the computer and the CRT display).
I'd imagine FreeSync would be easier to "adaptor" to a CRT for testing, given it's able to be tweaked to work over DVI, and FreeSync already kinda uses a sort of a variable blanking interval -- exactly the sort of thing we need. I think it's easier to force FreeSync output to a non-FreeSync display. And there's DVI to VGA adaptors already. Hacker experiment?
Almost twenty years ago, I remember the days of PowerStrip and I remember being surprised some of my CRT's could accomodate a sudden 0.5Hz refresh rate change without much of a flinch (especially if the refresh rate changed occured during VBLANK / VSYNC / VHOLD). Most CRT blanked out for a moment, but some didn't. I wish I knew which CRT's were "strong" at refresh rate changes.
Ideally, you want to keep horizontal scan rate fixed & unmodified at a very high rate (the horizontal scan rate of the maximum desired full display refresh rate) and simply vary the number of blank lines in the synchronization interval (i.e. vary the thickness of the VHOLD bar, that black bar you see in a rolling analog TV...) in order to vary the vertical refresh rate. Some CRTs were able to tolerate a minor variance; I wonder if there happens to be some old CRTs with ranges wide enough for FreeSync-adaptor experiments without blankouts or too many picture distortions.
Also, modifying the CRT to suppress it auto-blanking behavior, may be useful -- since we'd be doing much more dramatic refresh rate changes. That could be quite difficult, unless reverse-engineering the microcontroller software built into the CRT, especially if it uses electronics means of handling that. Then again, that's probably not an issue for older CRTs that displayed visual disruption during refresh rate changes.
Either way, disruption can be reduced or eliminated on a CRT, by well-timed sync changes, i.e. gracefully timed exactly during the blanking interval.
CRT with strong multisync support, that can suppress blanking during sync changes, would be good candidates for testing FreeSync on a CRT, with hardware hacking.