Egghead.page Logo

How Many Colors Per Character Cell on Commodore VIC-20

The Commodore VIC-20, a pioneering home computer from the early 1980s, features a distinct video architecture that limits color assignment within its text mode. Specifically, only one foreground color can be assigned to a single character cell, which consists of an 8x8 pixel grid. While the system supports a palette of 16 colors overall, this per-cell restriction creates a unique visual style known as color clash, defining the graphical capabilities of the machine.

This limitation stems from the way the VIC-20 video chip, the MOS 6560 or 6561, manages memory. The screen is divided into a grid of character positions, typically 22 columns by 23 rows. Each position in this grid corresponds to a specific byte in the Color RAM, which is located in the memory map from $9000 to $93FF. Because each byte holds a single value between 0 and 15, the hardware can only reference one foreground color index for that entire 8x8 block of pixels.

Although the foreground is restricted to a single hue per cell, the system does allow for a background color. This background color is set globally via a hardware register, meaning every character cell on the screen shares the same background shade unless specific programming tricks are employed. Consequently, any given character cell displays a maximum of two colors simultaneously: the global background and the single assigned foreground color.

The 16-color palette available to the VIC-20 includes standard hues such as white, black, red, cyan, purple, green, blue, and yellow, along with several intermediate shades. Programmers select these colors by writing the corresponding numeric value into the Color RAM address associated with the character’s screen position. This method is efficient for memory usage but restricts graphical fidelity compared to later systems like the Commodore 64, which offered more flexible multi-color character modes.

This architecture results in a visual phenomenon often referred to as color clash or attribute clash. When detailed graphics are drawn using character cells, adjacent pixels within the same 8x8 block cannot differ in color. If an image requires two different foreground colors within the space of one character cell, the hardware cannot display them simultaneously. Developers had to carefully design graphics and games to work within this constraint, often using high-contrast colors or dithering patterns to simulate additional visual depth.

In summary, the Commodore VIC-20 assigns exactly one foreground color to a single character cell. This design choice was a trade-off to keep the system affordable while still providing color graphics, a significant feature for its time. Understanding this limitation is essential for enthusiasts studying retro computing hardware or developing homebrew software for the platform today.