hardware-accurate retro display colors

Accuracy & sources

This site exists for one reason: to get retro display colors right. The category is full of tools that treat these palettes as flat 16-color lists and reproduce the same handful of errors. Here is exactly where we differ, and the primary sources behind every value.

The pledge. Every color and behavior here is derived from how the hardware actually worked and checked against primary references. Where a value is computed (EGA's 64, composite artifact colors), it's computed from the hardware model — never hardcoded from another website. And where we can't yet model something correctly, we don't ship a fake version of it.

The correctness decisions

CGA color 6 is brown, not dark yellow

Pure RGBI math makes color 6 dark yellow #AAAA00. The IBM 5153 monitor includes a circuit that halves the green component, producing brown #AA5500. Both are "correct" depending on the monitor, so we offer them as a toggle rather than pretending one doesn't exist. Most references silently pick one and get the other wrong. See the CGA palette.

CGA 320×200 is not a free 4-color palette

The hardware provides one freely-chosen background plus a fixed three-color group, selected by the palette-select and intensity bits (with an undocumented mode 5). We model those exact groups instead of letting you pick any four colors. This single distinction is more correct than most competitors. Explore it in the CGA mode simulator.

EGA's 64 colors are derived, not typed in

Each EGA color is 6-bit RGB — two bits per channel, four levels (0, 85, 170, 255). We generate all 64 from that rule, and highlight the 16 CGA-compatible defaults within them, rather than copying a hex table. See the EGA palette and the 16-of-64 remapper.

Composite artifact colors are decoded, not sampled

This is the big one. The near-universal bug in "composite CGA" tools is sampling the RGBI colors directly — which can never produce real artifact hues, because those colors arise from the dot pattern across neighboring pixels on an NTSC signal, not from any single pixel. We build the actual composite voltage signal and demodulate it the way a TV does. Our decoder is a faithful port of Andrew Jenner's (reenigne's) chroma-multiplexer algorithm — the same model used by DOSBox — including the chroma-multiplexer tables, the 33° colorburst phase, and the standard NTSC IQ→RGB matrix in linear light. You can verify it: the 16 high-resolution artifact patterns reproduce the canonical artifact palette, and black/white land exactly on #000000/#FFFFFF. Try it in the image converter (set the monitor to "NTSC composite"), and read the method behind it in how CGA color works.

VGA's DAC is 18-bit

The default VGA 16-color palette matches CGA/EGA for compatibility, but the real story is the 18-bit DAC (6 bits per channel, 0–63, scaled ×255/63). We note the bit depth and conversion rather than implying VGA is "just 16 colors." See the VGA palette.

Primary sources

Where the values and models come from:

Found something wrong?

This audience is exacting, and that's the point — if a value here disagrees with a primary source, we want to know and fix it. Correctness is the entire product.

← How CGA color works