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 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:
- int10h.org — VileR's reference articles on CGA/EGA/VGA palettes and the CGA composite "1024 colors" mode: CGA in 1024 Colors.
- reenigne.org — Andrew Jenner's analysis of CGA composite color generation and his chroma-multiplexer decoder: 1K colours on CGA and improved composite mode for DOSBox. The exact decode tables and constants we port are from his reference implementation (cga.h / ntsc_decode.h).
- DOSBox — the well-tested integer implementation of that algorithm (
update_cga16_color/Composite_Process) that we cross-checked our port against. - dbalsom/cga_artifact_color — a Rust decoder of CGA artifact color from screenshots, which implements the same Reenigne method: github.com/dbalsom/cga_artifact_color.
- IBM 5153 / IBM PC Technical References — the original hardware behavior (the brown-correction circuit, the mode-control register bits).
- ModdingWiki & KeyJ — corroborating documentation of the CGA/EGA modes and palette semantics.
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.