Attribute clash
From Free net encyclopedia
Attribute clash was a display artifact caused by limitations in the graphics circuitry of a number of early colour 8-bit home computers - most notably the Sinclair ZX Spectrum. It has since been considered an element of Spectrum user culture.
Contents |
Causes
Attribute clash on the ZX Spectrum was caused by its idiosyncratic display memory layout, designed in such a way as to keep the memory consumption of the graphics hardware to a minimum. Rather than restricting the colour palette to conserve memory, Sinclair's design stored pixel and colour information separately, with colour information being stored at only the text character resolution - 32x24 - with one byte per character. This byte encoded two values, known as INK (foreground value, a bit value of 1) and PAPER (background value, a bit value of 0) after the BASIC instructions used to define the character colour values.
The Spectrum used 6144 bytes for pixel information, with one byte representing a row of eight pixels and 768 bytes used for the colour information, thus giving a total of 6912 bytes for the entire graphics display, a relatively small total for a computer of the Spectrum's era with "colour" capabilities. This graphics architecture was retained right through to Sinclair and Amstrad's later redesigns of the Spectrum, up until Amstrad's final model, the Spectrum +2A/+3, in spite of the fact that subsequent models contained 128K of memory, reducing the need to save memory in this manner. The architecture was retained to prevent loss of backwards compatibility.
Effects
Static graphic displays therefore had to be constructed with care. Finely-detailed colour graphics were impossible, as colour could only be applied in 8x8 blocks. Careful design could achieve impressive results, as could synchonising colour changes to the refresh rate of the display - a television set.
However, animated displays were more difficult - a distinct drawback in a machine whose primary use was video gaming. If just one pixel in an 8x8 block was recoloured because a moving part of the display touched it, the entire block would change colour. Thus detailed moving graphics caused large ugly fringes of rapidly-changing colours to follow them around.
Workarounds
Early software simply ignored the problem. Later, the standard workaround was to use colour for static display elements - such as a decorative border around the edges of the screen, which might include score displays and so on, or some form of instrumentation - with a smaller central monochrome area containing all the animated graphics. This also made graphics faster, as less of the screen had to be updated - both a smaller region, plus only changing pixel information and leaving the colour area untouched.
Some late Spectrum software, such as FTL's Lightforce, used extremely careful graphics design to achieve full-colour moving graphics, essentially by restricting both the design of the onscreen elements and their paths of motion to 8x8 colour resolution boundaries. The moving elements were thus relatively large and rather blocky or squarish, and their movement was constrained, but this was not visually obvious and the sight of moving full-colour graphics was hugely impressive to Spectrum owners.
No mainstream developers were able to find a suitable all-round fix for the attribute clash problem, instead preferring to use the monochrome graphics method when fast, clear graphics were needed, and full-colour graphics when the situation permitted.
However, a group of Polish demo coders known as ESI succeeded in 1992 in taking advantage of the 50Hz PAL refresh rate to produce a "raster effect" that made it appear as though more than two colours were displayed per character line - a feature they demonstrated in the popular Shock Megademo.
Screenshots demonstrating the problem and solutions
Most demonstrative of the problem were games pre-1987, such as shown here by the game Knight Tyme. Note how the central character is almost hidden by the attribute clash that has occurred.
It should be noted that Knight Tyme was one of the few games that allowed the player to select between two modes of attribute clash - one whereby the main character's attributes would be ignored (producing the below effect) and one whereby the main character's attributes would be emphasised, turning any graphics surrounding the character white.
One workaround was to simply render the graphics in two colours - otherwise (incorrectly) known as monochrome - as shown here with the Spectrum version of Wonder Boy in 1987.
A number of games used full-colour backgrounds and "character scrolling" (where the environment would be scrolled eight pixels at a time), but monochrome sprites that were effectively transparent, as displayed here in Double Dragon. The sprites in this case have been drawn in such a way so that they stand out, avoiding a dependence on the colour.
A number of games used this method with smooth pixel-by-pixel scrolling, but the attribute clash as elements of one character block were "passed" to the next were clearly noticeable.
A prominent (and less successful) example of the use of full-colour graphics was the Spectrum conversion of Altered Beast. Note that the game suffers from considerable attribute clash.
Programmer Don Priestley developed a distinctive style for several of his games by using large, colourful, cartoon-like sprites. Due to their size, and some careful design, the need to have more than two colours in any attribute block was almost entirely eliminated. A disadvantage of this technique was that the gameplay had to be designed around the graphics, and so it was not useful for ports from other platforms. Games that used this technique included Popeye, The Trap Door (shown right), Through the Trapdoor, and Flunky.