Saturday, April 26, 2014

Capturing CGA, Tandy/PCjr. and EGA Video

It is not easy to capture true 16-color PC video.

One way to capture it is with a CGA card that has a composite video output.  The IBM PCjr. and Tandy 1000/A/HD/EX/HX/SX/TX also have composite video outputs, as does the IBM PC Convertible with the CGA adapter slice.  Some other laptops like the Tandy 1400LT also have CGA output.  Most EGA cards may have dual RCA jacks, but they are only connected to the EGA expansion feature port.  They are typically useless.

Composite video is necessary when trying to capture CGA artifact color.  Additionally, for capturing 40 column text it is usually adequate.  It is also good at capturing 160x200 graphics, since there is minimal artifacting going on in that mode.  Note that brown is dark yellow with a composite color connection. However, if you are trying to capture "pure" RGB 320x200x4 or 640x200x1, or 320x200x16 or 640x200x4, it is not suitable.  Composite video does not have the bandwidth to show pure colors in these modes.

CGA and its derivatives use digital TTL RGB.  The standard is also known as RGBI, with I standing for intensity.  One pin is devoted to the R, G, B and I signals.  When there is +5v on the line, that color will be displayed.  When there is Ground on the line, that color will not be displayed.  With the Red, Green and Blue signals, this gives you eight combinations, Red, Green, Blue, Cyan, Magenta, Yellow and Black and White.  The Intensity signal varies the strength of the colors, giving you a total of 16 colors.  CGA uses a 15kHz scan line frequency.

Other personal computers of the 1980s that supported RGB output, including the Commodore Amiga, Atari ST and Apple IIgs, support analog RGB output.  Consoles like the Sega Master System, Sega Genesis, Super Nintendo, Atari Jaguar, NEC Turbo Grafx 16, Playstation and an RGB modded NES or N64 also support 15kHz analog RGB.  Almost all arcade machines from the 1980s and into the late 1990s also support it.  With analog RGB output, the strength of each signal is based on the amplitude of a 0.7v Peak to Peak sine wave.  These systems typically use a15kHz scan line frequency.

The only other non-PC compatible device that supports CGA TTL RGBI is the Commodore 128.  Moreover, the C128 only supports this in its native video mode.  When emulating a C64, it uses a palette closer to the C64s.

All capture and conversion devices that advertise "CGA" like the GBS-8220 are using "CGA" only in the sense that they support a 15kHz horizontal scan line rate.  They expect an analog RGB signal.  CGA uses an RGBI signal.  If you connect the pins directly, you will only get 8 colors because it has no idea what to do with the I signal.  A simple passive adapter, like the one shown here, will give you 16 colors : https://sites.google.com/site/h2obsession/CBM/C128/rgbi-to-vga  However, color 6 will be dark yellow when it should be brown.  To get it to show brown, you need an active converter, such as the one here : http://he-insanity.blogspot.com/  That adapter will combine the separate CGA horizontal and vertical synchronization signals, which most 15kHz RGB outputs use.
  You can also purchase a similar kit here : http://www.microbeetechnology.com.au/vga_video_converter.htm but you will have to solder the board.  This has been verified to give a proper brown color.  There is another kit available here : http://gglabs.us/node/1619 which also shows proof of good colors.  There is another kit that is available from b i t - c 1 2 8 . c o m, but it does not give a proper brown.

After you have turned the digital RGB to analog, you will need to use a scan-line doubler to convert it to VGA and a capture card, for which there are many capture devices, or obtain an expensive PCI-E capture card that can handle 15kHz RGB analog video.  I have heard mixed reviews about the quality of the GBS-8220, which upscales 15kHz RGB signals into 31kHz VGA signals and is very common and not too expensive.  One suggestion is to use an XRGB-mini, the Framemeister.  The Framemeister will upscale analog RGB video into 720p, which can be captured by an HDMI capture card.

I would go for the latter, like this one : http://www.solarisjapan.com/sc-512n1-l-dvi-component-hd-and-dvi-capture-board/?setCurrencyId=1  Even though it is ridiculously expensive ($330!), it can handle just about anything, including VGA, HDMI and the like.  The StarTech PEXHDCAP is another PCI-E device that is very versatile and costs less than half as much : http://www.amazon.com/StarTech-com-Express-Video-Capture-1080p/dp/B007U5MGBE

The elgato game capture HD will capture 240p signals, which is essentially 15kHz scan rate video.  However, it only has composite, component and S-Video analog inputs.  You would need an RGB to Component converter for this device.  In essence you would need two converters.

If you want to capture 640x200x16 Tandy or EGA video, you will also need to use this method.  350-line EGA uses an unusual 21.8kHz horizontal refresh rate and 6-bit TTL RGB for a maximum selection of 64 colors.  VGA emulates 350-line EGA more-or-less perfectly and without double scanning.  It is just better to capture it directly from a VGA card.

2 comments:

  1. I know this is an old post, but the links (to the good ones with verified proper colors) mention CGA, but nothing about TGA (Tandy). Do you have any relevant updates to the information in this post? Or is this a little *too* niche 6 years later...

    ReplyDelete
    Replies
    1. This blog post is rather out of date. CGA outputs the same colors as Tandy, its just usually cannot all at once. This is what you should try to obtain for proper representation of CGA, TGA, PCjr. and EGA (even 64 color) digital RGB(I/6-bit) output : https://gglabs.us/node/2063 Then go read this : https://nerdlypleasures.blogspot.com/2019/02/ideal-analog-retro-video-capture-with.html

      Delete