Damian Walker

Personal Web Pages

CGA: So Why All the Cyan and Magenta?

The Demonstration Game supplied with CGALIB

Saturday, 29th August 2020

Part 5 of a blog series on CGA palettes.

Since the 1990s I've known about some of the possibilities that the CGA graphics card offers, and looked with disappointment on the shades of cyan and magenta that grace what must be at least 50% of games on CGA. If an amateur game developer with little artistic talent such as me could see the possibilities, why were professional game companies not taking the time to explore them? At the time I put it down to laziness, but that's only part of the problem.

I'm sure that laziness was an explanation in many cases. Games that supported VGA and EGA graphics would tack on a CGA option as an afterthought. It might mop up some sales from people with older or cheaper hardware, but nobody was expecting CGA graphics to look good, so why put much effort in? So graphical assets were dithered down into the default four colours and left at that.

For a few earlier games there was actually a good reason. EGA and VGA aren't 100% hardware compatible with CGA. They'll display the pixels, but the CGA palette registers are ignored, so early games that did change the palette by addressing the hardware would be rendered in the default cyan and magenta palette on better graphics hardware than CGA. EGA and VGA had a different and more flexible way to change the palette, but developers of games before EGA wouldn't have known this, so later systems would ignore their carefully considered colour choices.

Many other early games concentrated on the possibilities of the 16 colour composite version. The early history of PC gaming was more of a North American thing, with home computers being more common in Europe. With a predominantly North American market, it would make sense for US game producers to concentrate on the more impressive possibilities of the NTSC composite monitor. By the time the PC games market opened up elsewhere, EGA and VGA were more prevalent, and most CGA users there were using RGB monitors. Most game developers by then would be using EGA or better and wouldn't necessarily be able to test the CGA colour palette changes. It would be safer to leave the palette as is than blindly fiddle with CGA palette registers in the hope that the fiddling would work. Before the age of digital downloads, it was important to ensure that the contents of the physical media were 100% playable.

Nowadays we have more options open to us. More modern systems and more modern tools make creation of assets for a game much easier than it used to be. And emulators like DOSBox can be made to emulate the limitations of older systems reasonably accurately. The approach I've taken in CGALIB is to address the palette changes to both CGA and EGA hardware, and then test both in DOSBox to ensure that the colours I want are accurately rendered on different systems.

These articles have been somewhat rambling but I hope you found them interesting and useful. Retro game development is a very popular hobby. I'd love to see more emphasis being placed on getting the best out of old hardware in new games, rather than simply emphasising its limitations.