LightStruk wrote on 2020-07-31, 12:17:
I wonder if the RGB primaries are the same between a CGA / RGBI monitor and an NTSC TV. (For example, NTSC, PAL, and ATSC all have different RGB primaries - their colorspaces are not identical.) Another way of putting it would be - are all 16 colors of CGA / EGA in the NTSC gamut? Are the red, green, and blue phosphors in an RGBI monitor the same as the phosphors in an NTSC TV?
The color spaces are not identical - NTSC uses YIQ, not RGB. Of course when decoded for output, it's converted into voltage levels for R, G and B guns, but the gamut is different from what you'd get by directly feeding RGB component video. (paradoxically some NTSC colors can also be outside the nominal RGB space, since NTSC black is not quite zero voltage, and some YIQ combinations yield levels "blacker than black" for one or more of the electron guns).
This doesn't have much to do with the phosphors though- AFAIK the actual R, G and B primaries in the *monitors* are the same. There was some discussion about this in one of the old threads about composite CGA emulation for DOSBox. IIRC, there *is* a certain YIQ-to-RGB conversion standard that mandates correction for the primaries, but it turned out that it only applies to how stations encode signals for over-the-air broadcast. Or something like that, but nothing inherent to monitor design anyway.
(Most professional-grade video monitors can decode YIQ/NTSC as well as both analog and digital RGB, all on the same phosphor-coated screen. If some monitors/TV use a different set of RGB phosphors then I'd imagine they have to correct for it internally.)
*Gamma* might be different but that's more down to monitor/TV design rather than the signal encoding.
Are the differences between the colors seen on an NTSC TV vs on an RGBI monitor coming from a CGA card caused by an imperfect composite conversion in the CGA card, or are the differences inherent to the monitors themselves?
More like the former. CGA generates digital color by combining R, G, B and I, but composite colors are generated by taking a 3.58 MHz waveform at a 50% duty cycle, and rotating it through a set of 6 possible phases - blue, green, cyan, red, magenta, yellow. Phase determines the I and Q components, then greys and intensity levels are created by adding Y (luminance).
(That goes for "direct" colors, aka the composite equivalents of the 16-color RGBI palette. "Artifact" colors are generated simply by switching between these basic waveforms at 2x or 4x the frequency, so when the higher-frequency components are removed, you have a "new" periodic 3.58 MHz signal.)
I go into more details about this here: https://int10h.org/blog/2015/04/cga-in-1024-c … olors_composite
That's a pretty crude method of generating NTSC color. I guess IBM did this to cut costs, since composite was considered the crap option - resolution was low, and most consumers would've seen it only on TVs through RF converters, which made things even worse.
Funny thing is, using artifact colors, you can actually generate a custom composite "palette" that's not far from the RGBI one - much closer than the "direct" composite CGA palette, anyway. That's also something we briefly exploited in 8088 MPH: https://int10h.org/blog/2015/08/8088-mph-fina … n_with_palettes
You can't quite get all the way there, but that's mostly because CGA just doesn't give you the full flexibility of manipulating the composite waveform... at any rate, it certainly isn't due to monitor design 😀