Color Graphics Adapter

Hardware entity

A graphics adapter introduced in 1981 that supported 4-bit color (16 colors) and resolutions up to 640×200, superseded by EGA (introduced in 1984).


The first video game about Color Graphics Adapter was released in 1981.

Electronic Arts, Sierra On-Line and Accolade has published most of these games

Two palettes were used:
* magenta, cyan, and white
* green, red, and yellow
... both had black as default background color, this could be changed (but rarely was).

CGA did not support customized color palettes like the later video adapter standards. It had four palettes, or rather 2 palettes in low or high intensity versions. These palettes can not be mixed on screen.

CGA video cards were almost always connected to the monitor via an RGBI jack (9-pin) as this was the only jack on most VGA cards. But, a fully compliant card could benefit from using a composite jack (RCA). See more about composite output near the bottom of this article.

Example of first palette from Alley Cat:

Example of second palette from Elite:

The other two palettes are the same but dimmer. A few games would alternate palettes but not in any meaningful way to improve the picture; this was only to provide a bit of variety.

16 colors could only be officially achieved in 320×200 and not through the RGBI port. There was also an undocumented 160x100x16 color mode. Video cards needed to be strictly compliant with the CGA standard for either of these modes to work.

Most CGA hardwares were not strict to the CGA standard. Specifically, a composite port, 8000 bytes of RAM and an MMU needed to be present on the card an usable by the computer for full effect. Most cards mapped their ROM across the required memory addresses and lacked an MMU. However, some extensive software hacking could overcome this limitation and allow 16 colors on _any_ CGA card. The game program would set the card to 16-color 160×50 text mode (found in the ROM of virtually any CGA card). Disable text blinking. Tweak the data so that the 25 lines of text were only 1/4 their normal height in pixels (achieving 200 lines of text, and using only the top two rows of whatever character used). Then use ASCII character 221 to color the left half of a pixel according to a foreground color and set a background color to color the right half of a pixel (achieving 2 colors per column of text). Thus, 320x200 virtual pixels made of 160×(50x4)x16 text characters. Similarly, 40x25, 80x50, 160×50 text modes, (or any text mode really) could be used for graphics in this way. Some of these text mode hacks will still fail on some cards even if the card claims support for the text mode required.

Macrocom produced a demo, ICOM Demo, that showed 640x480x16. But no game was ever created using this.

The video hardware in an Amstrad PC-1512 is very similar to standard CGA. Some games by Level-9 display 640x400x16 images.

Oh, one last thing. The forgotten composite port was actually the best way to see CGA graphics. This is because of color artifacting that occurs on NTSC standard monitors (televisions). Placing different colored pixels next to each other in memory would not lineup with the NTSC signal, so the two colors would translate into a different unique color on an NTSC screen. Color combos were 0 & 0, 0 & 1, 0 & 2, 0 & 3, 1 & 0, 1 & 1, 1 & 2, 3 & 3, 2 & 0, 2 & 1, 2 & 2, 3 & 3, 3 & 0, 3 & 1, 3 & 2, and 3 & 3. for a total of 16 colors. Yes, 1 & 2 produced a different color than 2 & 1. That's just one palette, there's the other palette for another 16 unique colors. And low and high intensity version of each artifact palette was again available. So CGA games could display 64 colors, but only 16 per frame.

Hackers later managed to get 256 and 1024 colors out of CGA hardware

Parent group

Computer graphics

Related site


MS-DOS 822
Win3.1 1

By year

81838587899193959799010305070911131517 18847941410 AB
A1981 - CGA introduced
B1984 - EGA introduced

Popular tags

3.5disk 5.25disk bootloader cdrom color-2bit color-4bit cpu-8086 cpu-8088 display-cga-composite display-ega display-hgc display-mcga display-tga display-vga dos1 dos2 dos3 interactivefiction joystick keyboard mouse scummvm spu-adlib spu-csm spu-gameblaster spu-mt32 spu-pcspeaker spu-ps1 spu-sb spu-tandy spu-tandydac tandy1000 wargame