2022-09-27

When Colors Clash

Loading Screens and 8-bit Computer Graphics Limitations

Creating graphics on older computers was quite a challenge, and yet many artists and developers put together some impressive results; so I wanted to take a moment to highlight a few of those challenges and present a few screenshots of their work. As I've alluded to in past articles on CGA graphics, most 8-bit computers had graphical limitations beyond just the screen resolution or how many colors could be displayed at once. The precise reason for these limitations varied depending on the computer and specifics of how it's graphics were implemented, but the various, convoluted designs were usually done for the same reasons: to improve speed and/or conserve RAM. In the 1970's and even most of the 1980's processors were slow and memory was very (very!) expensive; to be competitive price-wise cuts had to be made somehow. Going with a black & white or monochrome only approach wasn't going to cut it anymore; although such displays would remain common for quite a while, a system that didn't at least offer the option of color wouldn't do well in the market. So how do you allow a colorful display while at the same time keep performance reasonable and conserve RAM? Here's a quick look at a few of the solutions that were utilized and the distinctive artwork that resulted from working within those confines...

Reduced Number of Colors or Resolution

The simplest way to reduce memory usage is, of course, to have fewer colors on the screen at once; with fewer colors, fewer bits are required to represent a single pixel which translates to less RAM required. This is the approach taken by the Amstrad CPC which has graphics that are essentially a slightly enhanced version of those used by IBM CGA cards. CGA was, of course, famous for it's limitation of only 4 colors at once with 320x200 resolution or 2 colors with 640x200 resolution, and both are supported by the CPC. Unlike CGA, the CPC also allowed each of the colors to be freely selectable from a full palette of 27 colors (vs CGA's 16) and also added an additional mode with 16 colors at once with 160x200 resolution (this was missing completely from CGA and would only be found with the IBM PCjr or Tandy 1000 graphics modes in the PC world). Compared to other techniques, this allowed the most flexibility as any pixel could be set to any color desired independent of each other. Still, the amount of memory needed was still somewhat high; 16 KB of RAM was needed for the arrangement in these two systems and other methods would improve on this at the cost of flexibility.

Color per Block Limitations

One of the more common techniques used by early computers (and the one I'm showing off the most below) was to store pixel information and color information seperately; each pixel would take a single bit, and the actual foreground and background colors were specified for blocks of pixels. The actual details and memory layouts varied by computer, but the end result was the same; you got more colors on the screen and at a higher resolution, but for a given section of the display (often, but not necessarily, an area 8x8 pixels in size) there could only be two colors at a time. This led to color clash, also called attribute clash, in the graphics; this artifact often looked as if colors from one object or area of the image were bleeding into its surroundings. This artifact was challenging enough to work around with static images, but for in-game graphics and animations it could be a tricky problem with developers using a variety of techniques to attempt to hide the issue. On some systems, such as the Commodore 64, there were hardware sprites available which helped partially avoid the artifacts as a sprite was independent of the background and could essentially “break the rules” for this limitation, however as sprites were typically limited in size and quantity it didn't fully solve graphical problems. The ZX Spectrum is probably the most notorious for color clash issues; it had no hardware sprites available, and not only did it limit colors to two per 8x8 block of pixels, but it wasn't possible to mix low intensity and high intensity colors in the same block. Besides the Commodore 64 and ZX Spectrum, numerous computers and game consoles utilized this technique including the ColecoVision, MSX, TI-99/4A, Memotech MTX, SEGA SG-1000, and more. Many of these systems were based around the same video display controller, the Texas Instruments TMS9918 or a variation, so it's not surprising the graphical capabilities are nearly the same; overall it tended to provide a decent compromise of lots of colors at a sharp resolution (for the era that is) and at a low cost.

Composite Video Artifacts

In NTSC regions, taking advantage of composite video artifacts was common; the Apple II series is most famous for this, but the IBM CGA adapter, Atari 8-bit computers, TRS-80 Color Computer, and though rarely used even one of the graphics modes on the Atari 7800 all had colors from artifacting. With this technique the image output by the computer either had a limited number of direct colors or was even just black and white, but when viewed on a composite monitor or t.v. the NTSC color decoding added additional colors by having certain pixel patterns essentially smeared together into a new color. Mostly the worst side effect was colorful fringes on text or edges and an effectively lower resolution, but overall this trick usually provided a decent amount of flexibility for developers compared to the per-block limitations. The Apple II, however, also had an additional wrinkle; due to the quirk of adjusting the phase of the composite signal in order to allow up to 6 colors on screen instead of 4, you sometimes got unintended colors to appear. One such example is when attempting to put blue pixels next to green ones you would suddenly have an unexpected orange fringe between the two. With some systems, such as Atari 8-bit computers, the artifact colors weren't always predictable; changes in the hardware over time meant the the colors varied so some games had to take this into account and use different dithering patterns depending on the exact computer model being used. One of the biggest drawbacks to this technique is that it didn't work in PAL regions; with a PAL monitor or T.V. the color artifacts didn't show up due to differences in how colors are encoded. There might have been some minor fringes, but for the most part only the direct colors were visible. If you had an Apple II in Europe, adapters were available which (more or less) restored the artifact colors, but for most systems you were out of luck and only saw a black and white image.

Loading Screens

The above isn't an exhaustive list of hardware tricks you'll find; These sorts of issues also aren't limited to older, 8-bit computers either; there are even some more powerful computers that used non-straightforward techniques to get more colors on the screen. The Amiga's Hold and Modify (HAM) mode is another famous one which enabled the computer to display all 4096 colors in its palette at once allowing for some of the most photo-realistic images seen on a home computer at the time but with many colorful fringes as a side effect.

So now we'll move on to the fun part and the main reason I put this article together; some graphical examples! But why bother mentioning all of the above? Because these hardware techniques had an often significant impact on the game's artwork. Computers of the era all had their own quirks from trying to do more with less and the resulting graphics gave each machine a unique, characteristic look. When viewing these samples keep in mind that the artist didn't have free reign over the screen and couldn't just set any pixel to any color they wanted, there were more restrictions than just limited colors and resolution to work with! Additionally, many of the powerful tools we have today (such as Photoshop and other graphics programs) didn't exist. There were some tools at least, such as Melbourne Draw, that could be used and some developers built their own in-house utilities as well, but even still it wasn't unheard of for some artists to use graph paper or similar to help create the artwork. It also wasn't unusual for the loading screens to be an after thought and put together very late in the development process and in a very short time, sometimes even as short as a day or two. Overall it's somewhat amazing games for these older systems looked as good as they did and is a testament to the talent and creativity of the artists.

For samples this time around I'm going to concentrate exclusively on loading screens, those wonderful graphics displayed while waiting for what seemed like an eternity for your game to be retrieved off of cassette tape (some disk games had them too). Color clash that occurs during gameplay is a whole other topic that I'll show examples of sometime later.

ZX Spectrum Loading Screens

The ZX Spectrum had the most severe color limitations making it a great machine to begin with. It was also an incredibly popular computer selling some odd 5 million units over its lifetime. So despite not being a particularly great computer for games (or at least graphical games), there were an awful lot of games made for it making it essentially the reference machine for dealing with color clash. And as most of those games were still released on cassette even after disk drives for the Spectrum were available, loading games was inevitably very slow providing plenty of excellent opportunities for artists to show off their skills while you waited. And that they did...here's some samples. As a reminder, here's what the artists had to work with: There are a total of 15 colors (well, 16, but on the Spectrum high intensity black is still black), a resolution of 256x192 pixels, only 2 colors can exist in each block of 8x8 pixels, and high intensity and low intensity colors can't be mixed in a single block.

MSX 1 Loading Screens

So many ZX Spectrum games have been released it's impossible to get all of the great screens in just this article; with a few thousand games released for the system there's certainly even some amazing ones I haven't seen myself. So the screens shown here is by no means a definitive list but should give a pretty good idea of what artists could achieve on this quirky little machine. The Spectrum's popularity definitely helped; had the machine not sold so well then there probably would have been less effort put forth in working with it. Closely related in graphical appearance is the MSX 1 standard; it improved on what the Spectrum could do by having a restriction of 2 colors per block of 8x1 pixels (instead of 8x8), low intensity and high intensity colors could exist in a single block, plus it had hardware sprites to boot (32 in total with up to 4 visible on a line). So while the number of colors and resolution was similar, what you could do with it was definitely much better than with the Spectrum! Sadly, due to overall similarities in architecture and graphics capabilities it wasn't uncommon for MSX games to be ported from the more popular ZX Spectrum without much (if any) enhancement, a problem that would plague the Amstrad CPC as well. Even some games that weren't directly ported from the Spectrum didn't take full advantage of the MSX so in practice loading screens on the MSX were often quite similar and in some cases exactly the same as their Spectrum counterparts. Still, some games did improve the graphics even if the difference was subtle. How well the MSX was supported seemed to vary by region; in Europe where the Spectrum was quite popular hastily done ports were more common while a number of Japanese MSX games were released that either didn't have a Spectrum counterpart or were developed/ported by a different company so the MSX version was quite good and took advantage of the hardware. Cartridges instead of cassette tapes were also often utilized for Japanese releases so there wasn't a loading screen for these although sometimes a detailed title screen or some other type of introductory graphics were included. Now on to some MSX screenshots; for some of these (such as Aaargh!) you'll notice better vertical gradients and the mixing of high and low intensity colors in a single block. There were still only 15 colors available (the 16th color is transparent), however the MSX also had a slightly different color palette than the Spectrum so you'll notice some games like Sirwood changing the colors around to take advantage of that rather than attempting a nearest match. The screens shown are all for MSX 1 games since the later MSX 2 standards included video modes which did not have attribute clash limitations.

Amstrad CPC Loading Screens

As mentioned above the Amstrad CPC didn't suffer from color clash, it either simply allowed fewer colors on the screen at once or limited the resolution. It didn't always seem like that's the case, though. Like the ZX Spectrum, it was also based on the Zilog Z80 CPU meaning it was very easy to port games from the better selling ZX Spectrum to the less popular Amstrad CPC. I've read that a Spectrum to CPC port could be done in anywhere from 3 days to 2 weeks, and while I'm not certain if that's accurate there is definitely no doubt it could be done quickly and cheaply. The usual technique was to fit the Spectrum's 256x192 graphics into the CPC's 320x200 graphics mode leaving a border around the image; sometimes, if there was any visible color clash that even got copied over even though that wasn't technically necessary. Luckily some games didn't follow this technique and did improve upon things, and others even used the lower resolution 160x200 mode to allow for more colors. However it was done, that porting process often left the CPC version being less impressive than it could have been which is a shame as the CPC was actually a pretty decent machine. And now here's a mixture of some Amstrad CPC loading screens including some unique ones along with a few where the Spectrum version is shown above; A lot of these CPC loading screens are far more colorful than their counterparts on others systems and don't exhibit unnecessary color clash artifacts or limitations from the porting process even if the game itself does.

Commodore 64 Loading Screens

Even though color clash existed on the Commodore 64, it was less famed for the problem as it had a few ways to effectively hide the issue. Normally the C64 had a resolution of 320x200 with 16 colors, however only 2 colors could be used in each block of 8x8 pixels. The most commonly used option to hide color clash was to instead take advantage of multicolor mode which allowed 4 colors per block instead of 2 but at the expense of having half the pixels horizontally (providing a 160x200 resolution). The graphics appeared a lot blockier, but those 2 extra colors made a huge difference and could often completely hide the fact that a limitation even existed to casual viewers! It was also possible to mix both modes on a single screen for more options. Hardware sprites were available to further hide color clash issues, though usually these were just used during gameplay and not static screens. These different solutions combined with a distinct color palette usually gave the Commodore 64 an appearance all its own. The C64 additionally had a different CPU architecture than the Spectrum and was itself a huge seller, so the problem of games being quickly ported from and looking like the Spectrum version didn't show up on the system quite as frequently as with the MSX or CPC (though it did still happen). Now on to some C64 screens! I tried to pick a mixture of 320x200 and 160x200 screens; since the former only allows 2 colors per block instead of 4, you'll notice the color clash more and the images look somewhat similar to the ZX Spectrum, just with a higher resolution. In the 160x200 screens, you'll likely have a difficult time noticing where color clash was an issue; the results can often look very similar to the Amstrad CPC's low resolution mode but with different, less vibrant colors.

IBM PC Conversions

A lot of the games shown here are either European games or European versions of games. Cassette tapes, which had slower loading times than disks, were far more common in Europe than the U.S. or Japan at the time, so there are more loading screens to choose from (disk releases sometimes didn't bother with an elaborate loading screen). Since cassette releases in the IBM PC world are pretty much non-existent and disk loading speed was fast enough, having a loading screen didn't seem to be quite so critical as with many 8-bit systems. Some games did, however, re-purpose the loading screen artwork as a title or introduction screen when an IBM version was available. So how did the PC look? Overall...results varied but were usually reasonable enough; it wasn't uncommon for European PC games to support only CGA and EGA graphics (and quite a few left out EGA support for a while), so the graphics were about as you might expect for a low effort conversion into these PC graphics modes. The CGA 320x200 4 color graphics are clear and sharp and color clash isn't an issue, but the palette chosen is often the pale cyan/magenta/white/black variation making the colors nonsensical and the overall image a little pale in comparison to other versions. Games which did support EGA fared better, and the results would usually look at least as good as their source and often better. Once VGA became more common, the PC versions really began to improve greatly (and could occasionally even be better than their Amiga counterpart).

There is one game, however, that I wanted to point out as it is quite an interesting anomaly in the PC world: After the War. Although supporting VGA graphics, it does so only to essentially re-create the ZX Spectrum graphics. The colors aren't exactly the same, but overall the graphics are nearly identical and even include the color clash! I wouldn't be surprised to find out the PC version really just has a Spectrum emulator built into it; I don't know if that's the case but perhaps Dinamic was testing out a way to port games quicker and cheaper? Whatever the reason for the poor port I'm glad that process didn't become common...and it's especially frustrating for this game as there were Amiga and Atari ST versions where the graphics were quite good and could have easily been converted to VGA and probably even EGA while remaining playable enough. But for now here's a comparison showing a few shots of the ZX Spectrum and the IBM PC versions side by side.

After the War
ZX Spectrum IBM VGA
After the War for ZX Spectrum - Loading Screen After the War for IBM VGA - Loading Screen
After the War for ZX Spectrum - Gameplay Screen After the War for IBM VGA - Gameplaty Screen

That's All For Now...

When comparing different computers, it's always been the case that some numbers alone don't tell the whole story. As hopefully shown above this was especially true when comparing graphical capabilities of older computers and game consoles as simply looking at the colors available and the display resolution didn't reveal what the system's architecture actually allowed you to do. Were you able to spot color clash issues (or how color clash was hidden) in the above screenshots? It's sometimes tough with loading screens as the issue is easier to hide without animation to worry about; at some future point I'm hoping to add another article focusing on how games dealt with color clash during gameplay, a far tougher challenge that usually left more easily visible artifacts. So until next time, stay safe, stay healthy, and take care!