Egghead.page Logo

How Many Colors Per Character Block on ZX Spectrum?

The Sinclair ZX Spectrum is legendary for its unique graphical architecture, which imposed specific limitations on color display that defined its visual style. This article explores the technical constraints of the system, specifically focusing on the number of colors available within a single character block. Readers will learn about the attribute clash phenomenon, the structure of the attribute memory, and why only two colors could appear in any given 8x8 pixel area.

The Architecture of Color Memory

The ZX Spectrum utilized a distinct method for managing graphics and color separately. While the bitmap memory determined which pixels were on or off within an 8x8 grid, a separate attribute file controlled the color information. The screen was divided into 32 columns by 24 rows of these character blocks, totaling 768 blocks across the display. Each of these blocks was assigned a single byte of data known as an attribute byte.

Ink and Paper Limitations

Within each attribute byte, specific bits were allocated to define the foreground and background colors. The system allowed for one foreground color, referred to as “ink,” and one background color, referred to as “paper.” Consequently, only two distinct colors could be displayed simultaneously within a single 8x8 character block. This binary choice per block meant that if a graphic required a third color within the same square area, it could not be rendered without affecting the existing colors.

Understanding Attribute Clash

This limitation resulted in a visual artifact famously known as “attribute clash.” When multicolored graphics moved across the screen or overlapped within the same 8x8 block, the colors would bleed into one another because the entire block had to conform to the single ink and paper setting. Developers had to design sprites and graphics carefully to align with these block boundaries to minimize the effect. Despite this restriction, programmers created vibrant games by leveraging high contrast and clever design to work around the two-color-per-block rule.

Legacy of the Two-Color Block

The constraint of displaying only two colors per character block remains a defining characteristic of the ZX Spectrum era. It challenged developers to optimize their art and code, leading to unique aesthetic solutions that are still recognized today. Understanding this limitation provides insight into the engineering trade-offs of early home computing and explains the distinctive look of classic software from the 1980s.