Why Did Old Video Games Have So Few Colors?

Why Did Old Video Games Have So Few Colors?

Old video games had so few colors mainly because of memory. Every pixel’s color has to be stored somewhere, and each extra color option costs more bits per pixel. Consoles and home computers of the 1980s had only a few kilobytes of video memory, sometimes less than a single modern emoji file. Designers kept the number of colors per pixel tiny, reused small tiles, and let a short palette table decide which actual colors those few bits meant. The limited palettes you now see as “retro style” were engineering compromises.

How many colors do bits per pixel give you? #

A computer stores each pixel’s color as a number. The more bits that number has, the more colors it can pick from:

Bits per pixelColors per pixelExample
12Black and white, early Macintosh
24Original Game Boy
416Commodore 64 palette, CGA’s full set
8256VGA-era PCs, GIF images
1532,768Game Boy Color’s master palette
24about 16.7 millionModern “true color”

Each step up multiplies the memory needed for a full screen.

How much memory did a screen of color need? #

Take a common 1980s resolution, 320 x 200. That’s 64,000 pixels. Here’s what one screen costs at different color depths:

ColorsBits per pixelMemory for one 320 x 200 screen
218,000 bytes
4216,000 bytes
16432,000 bytes
256864,000 bytes
16.7 million24192,000 bytes

Now compare that with the hardware. According to Wikipedia, the Commodore 64 (1982) had 64 KB of RAM in total. A single 256-color screen would have eaten nearly all of it, leaving nothing for the game. The NES had 2 KB of work RAM and 2 KB of video RAM. The numbers simply don’t allow rich color.

How did real machines fit color into so little memory? #

Each machine found its own trick, and those tricks created the looks we now recognize.

IBM PC CGA: fewer colors at higher resolutions #

IBM’s Color Graphics Adapter (1981) had 16 KB of video memory. According to Wikipedia’s CGA article, in 320 x 200 graphics mode it could show 4 colors chosen from 3 fixed palettes, and at 640 x 200 just 2. Run the math: 320 x 200 at 2 bits per pixel is 16,000 bytes, which fits in 16 KB. Sixteen colors at that resolution would need 32,000 bytes, which doesn’t. That’s why early PC games are so often cyan, magenta and white.

ZX Spectrum: color by the block #

The ZX Spectrum stored its 256 x 192 screen as 1 bit per pixel, which is 6,144 bytes, and added a separate grid of color “attributes” for each 8 x 8 block, for 6,912 bytes in total according to Wikipedia. Each block could use only two colors. When a sprite moved into a block with a different color, its colors “clashed” with the background. That effect is called attribute clash, and it’s part of the Spectrum’s look.

NES: tiles and palettes #

The NES drew a 256 x 240 picture. Even at just 2 bits per pixel, a full bitmap of that screen would need 15,360 bytes, far more than its 2 KB of video RAM. So the NES didn’t store a picture at all. It stored a map of which 8 x 8 tiles go where, and the same tiles were reused across the screen. Colors came from small palettes: three colors per sprite, three per 16 x 16 background area, and up to 25 on screen in total. We break those rules down in how many colors the NES could display.

Game Boy: four shades, 2 bits per pixel #

The original Game Boy (1989) used 2 bits per pixel for four shades of gray-green on a 160 x 144 LCD. A full screen at that depth is 5,760 bytes. Its greens, and the popular hex codes used to recreate them, are in Game Boy palette hex codes.

What is a palette, and why did it help? #

A palette, or “indexed color,” separates two questions: how many colors a pixel can choose from, and which colors those are. Each pixel stores a small index (0 to 3, or 0 to 15), and a short lookup table maps those indexes to real colors from a larger master set.

That gave designers flexibility for very little memory. The NES’s master set had 64 entries, but each sprite only stored 2 bits per pixel, pointing into a 3-color palette plus transparency. Changing a palette entry recolors everything that uses it, which is how games produced palette swaps like different-colored enemies from the same artwork.

Why not just add more memory? #

Memory was expensive, and every chip added to a console’s price. Consoles also had to update the screen many times a second with slow processors. The NES’s CPU ran at 1.79 MHz, so less data per frame meant faster games. And the NES didn’t even output RGB. According to the NESdev wiki, it generated a composite TV signal directly, so the TV’s color decoding limited the colors as much as the chip did.

How did artists make so few colors look like more? #

Pixel artists developed techniques that are still used today:

  • Dithering. Checkerboards and patterns of two colors that blend into a third from a distance. What dithering is explains the algorithms that recreate it.
  • Careful color ramps. Picking a few shades per material, such as three skin tones or three greens, and reusing them everywhere.
  • Outlines. Dark outlines keep sprites readable on any background.
  • Sprite layering and flicker. The NES showed at most 8 sprites per horizontal line, so games flickered sprites to get more on screen.
  • Raster effects. Changing palette values partway down the screen. Wikipedia notes the Sega Master System could show all 64 of its colors at once this way.

When did the color limits go away? #

Gradually, as memory got cheaper. The Game Boy Color (1998) moved to a 15-bit master palette of 32,768 colors, and later home consoles and PCs moved to thousands and then millions of colors. By then the limited-palette look had become a style of its own.

Why do modern games still use limited palettes? #

Hardware hasn’t forced a small palette for decades, yet many indie games and pixel artists still pick one on purpose:

  • Cohesion. A fixed set of 16 colors makes every sprite and background look like it belongs together.
  • Readability. Fewer colors means clearer shapes at small sizes.
  • Speed. Choosing from 16 colors is faster than choosing from 16 million.
  • Style. The PICO-8 fantasy console has a fixed 16-color palette by design. It’s a creative constraint, not a hardware one.

See the limits for yourself #

You can feel the difference between bit depths by converting one photo at several palette sizes. Pixelize, a free iPhone and Android app, includes Mono (2 colors, the equivalent of 1 bit), Grayscale 4 (2 bits), Grayscale 8 and Grayscale 16 (4 bits), alongside real hardware palettes like the Game Boy, NES, Commodore 64, ZX Spectrum and CGA. Flip between them with the Compare slider on and you’ll see how much work each extra bit does.

Frequently asked questions #

Why were NES games limited to 25 colors on screen? #

The NES’s picture chip had room for four background palettes and four sprite palettes of three colors each, plus one shared backdrop color. That’s 12 + 12 + 1 = 25 colors. Its 2 KB of video RAM and tile-based design made that a sensible trade-off.

How many colors did the original Game Boy have? #

Four shades of gray-green, stored as 2 bits per pixel on a 160 x 144 screen.

What is attribute clash? #

A visual glitch on the ZX Spectrum and similar machines. Color was stored per 8 x 8 block, with only two colors per block, so when a moving sprite entered a block, it had to share that block’s colors with the background, and the colors “clashed.”

Did limited colors make games worse? #

They made them different. Artists had to design shapes and palettes carefully, which is why many 8-bit and 16-bit sprites are still recognizable decades later. Many modern pixel artists deliberately adopt the same limits.