Creating an Atari ST or Amiga Picture with the GIMP

This tutorial will demonstrate how to convert a modern 24 bit color image file into a 16 color Atari ST or 32 color Amiga picture using the GIMP. This will result in images which use the correct matching colors of these classic rival 16 bit computers.

The Atari ST

The early Atari ST models support 3 bits per RGB color component which allows for a total of 512 unique colors. Each of the red, green and blue components had 8 intensity levels. These were specified as values from 0 to 7.

The ST had 3 different screen resolutions. A 640 x 400 monochrome mode, a 640 x 200 medium resolution mode which supported 4 on-screen colors, and a 320 x 200 low resolution mode which supported 16 on-screen colors. All of these screen modes used the same amount of video ram and sacrificed color for increased resolution. This article will be concentrating on the 320 x 200 mode with 16 colors.

There are various software techniques that enable the color palette to be changed every scan line, or even multiple times during a single scan line (Spectrum 512) but this article will be concentrating on the standard 16 colors per screen mode.

The Commodore Amiga

The original Amiga supports one extra bit per RGB color component than the Atari ST. This enables it to display 4,096 unique colors by supporting red, green and blue values with 16 different intensities each.

The Amiga is capable of displaying a variety of different screen modes. We will be concentrating on the common 320 x 200 mode where the Amiga can easily display 32 simultaneous colors selected from it’s 4,096 colors.

It should be noted that the Amiga supports additional graphics modes like Extra Half Bright and Hold and Modify (HAM). However, this article will concentrate on the 32 color mode.

The Atari STE

In response to Commodore’s Amiga, Atari would later upgrade it’s aging ST platform by releasing the STE (enhanced) series of computers. While they still only supported 16 colors in low resolution (without resorting to cpu assisted graphics modes which could boost the on-screen color count), these colors were selected from 4,096 colors which matched the Amiga.

By increasing the color gamut eightfold, color transitions were smoother and it was possible to reproduce colors with greater accuracy. We will create a 320 x 200 Atari STE image in this article supporting the increased color fidelity.

In summary here is what we will be creating :

  • Atari ST 16 color (from 512 colors)
  • Atari STE 16 color (from 4,096 colors)
  • Amiga 32 color (from 4,096 colors)

The Gimp

The GNU Image Manipulation Program (Gimp) is a free and powerful open source bitmap image editor that we will be using to create our images with. It is freely available on multiple platforms (Windows, Macintosh, Linux and more) and can be installed in minutes.

It is entirely possible to perform these same tasks with other image editing programs. We have chosen the Gimp for this article because we appreciate it, but feel free to use your own favorite bitmap editor. However, it must be able to convert images to indexed color, and you must be able to work with and manipulate the individual color palette entries.

The Source Image

Likely the image that you will be converting from will not be 320 pixels wide and 200 pixels in height. So the first thing you will need to do is to resize and crop your source image to match this resolution.

Below is the 24 bit color image which we will use to demonstrate the techniques in this article. The ST uses 9 bits (3 each for red, green and blue) to describe an RGB color, whereas the STE and Amiga use 12 bits (4 for each color component). 24 bit color uses 8 bits for each of the color components and we will need to convert these down to either 9 bits or 12 bits depending on our desired target platform.

Merely converting our image above to 16 or 32 colors in the Gimp is not enough to have the colors accurately represent Atari ST or Amiga colors. Our online Color Bit Depth Reducer is a simple utility that will convert a single 24 bit RGB color into a variety of lower bit depths. First however, we need to reduce our image to either 16 or 32 colors.

Converting to indexed color

Once you have your appropriately sized (320×200) 24 bit source image you next need to convert it to indexed color by changing it’s mode in the Gimp’s Image menu to Indexed. When changing the image mode from RGB to indexed, you will be reducing the colors in the image to a select few. Obviously we will want to select 16 for ST/STE images or 32 for Amiga images. Ensure that Generate Optimum Palette is selected and enter the number of colors you wish to reduce to as below.

Dithering is simply a conversion technique that creates a dot pattern which can smoothen color transitions in an image. The effectiveness of dithering depends on the source image. It is recommended that you try the various types of dithering, as well as no dithering, with your image to determine the best result.

The Gimp provides three types of dithering : Floyd-Steinberg (normal), Floyd-Steinberg (Reduced Color Bleeding) and Positioned. Again, trial and error is your friend here.

Click the convert button to perform the image conversion and you will now have a 320 x 200 image in 16 or 32 colors. Chances are that an ST or Amiga will not be able to display the resulting colors accurately though because they are chosen from a 24 bit color gamut.

Converting the colors to match ST or Amiga colors

We next alter the individual color palette entries to the nearest matching colors in which the ST and Amiga are capable of producing. Open the Gimp’s Colourmap window (or tab) and you will see the color palette for the image as below :

To modify the individual colors you can either double click on a color to bring up the color editor, or simply enter the HTML notation (also known as Web Hex) directly.

We need to run each color through the Color Bit Depth Reducer utility in order to find the correct color for the bit depth we require. Once we have completed this task, we will then have a color accurate representation of an ST or Amiga image.

You may find during this process that you wind up with duplicate colors in your palette. ST images in particular are quite vulnerable to this due to a limited ability to produce subtle differences between colors. In this case you could re-use the color in other areas of the image with new color values. However, you would first need to search for all occurrences of the color and replace them with one of the duplicate colors.

Another option to deal with duplicate colors is to bias their color components up or down in red, green or blue so as to create a transition color. This is often seen on the ST though it can have a negative effect on color accuracy. It can however increase the number of usable on-screen colors.

Removing noise and cleaning up the image as necessary

It may be desirable to remove noise or artifacts from the image that were created as a result of the conversion process. Below you can see noise in the left image (before) which is removed in the right image (after).

Zoom in as much as 400% to 800% and use a one pixel pencil to manually tweak the colors of the pixels as necessary. If you used dithering during the color conversion then there will likely be more of these noisey pixels to deal with.


Atari ST 16 color version

The aforementioned color biasing tweak was applied to the image below to increase the number of on-screen colors as there were a few duplicate colors produced during the conversion process. Overall the colors are quite different from the original image. This is partially due to the fact that they had to be selected from the ST’s relatively small color gamut of only 512 colors as well as the color biasing that was performed.

Atari STE 16 color version

With the number of on-screen colors remaining the same, you can see how much better things look when the colors are selected from the larger color gamut of 4,096 colors. The STE version did not use any color biasing tweaks and is much more accurate and true to life in terms of color.

Amiga 32 color version

Doubling the number of colors to 32 and selecting from 4,096 colors gives the Amiga the edge when it comes to the overall detail level of the image. The Amiga version is clearly a step beyond what the 16 color STE can achieve in this regard and closest to the original 24-bit image.

Both the ST and Amiga are capable of displaying the original source image better than they have been represented above when using alternate or cpu-assisted screen modes. You could also spend more time manually editing the images for better results.

This article was about learning some of the fundamental differences between these platforms. If you were tasked with converting several images in this way you would be far better served to use a utility that can convert all the colors in your source image in a single automated pass. Using the Color Bit Depth Reducer as detailed in this article is mainly for educational purposes and would be far too tedious otherwise.


  1. Not bad, but if GIMP has the ability to save and load in custom palettes – and most importantly, reduce higher-depth images using saved palettes – I have a more effective method that I’ve used for some time with Paintshop Pro.

    1/ Load in picture. You can reduce the size now, or later on, between steps 6 and 7. Bear in mind that depending on the software used to display the result, an Amiga image could actually be up to 360 x 240 (…or in fact, 384 x 288? I’ll have to double check that…), as the OS supported overscan modes natively, unlike the ST which was locked to 320×200 unless you used software tricks.
    2/ Run the per-channel depth reduction (“posterisation” in PSP) to 8 or 16 levels as appropriate FIRST. The image should now give an impression similar to a very well made Spectrum512 or HAM6 file.
    3/ Run the conversion to a 16 or 32 entry palette image
    (4a/ To be done first time round – check whether or not this has affected the palette entries themselves; with PSP, using “Optimised Octree” preserved the actual colours, but “Median Cut” would attempt to blend between them, using colours that didn’t previously exist in the picture in order to make a better compromise… fine with a 24, 18 or 15 bit palette, not so good with 12 or 9. So, take the palettised output and run the posterise function again, and see if it visibly changes)
    4b/ Optional: If the above method shows that the palette entries have been picked as compromises rather than exclusively from the posterised colours existing in the image, re-run the posterise function to fix it. With any luck, there shouldn’t be any duplicates, because there wouldn’t have been much point to the compromise otherwise.
    5/ Save the palette to a disc file
    6/ Reset the picture
    7/ Load in the palette from disc, trying both “nearest colour” and whatever dither modes are available to see which gives the best result. Usually error diffusion or a small-matrix ordered dither works best, as there will be many areas where the available colours just aren’t a good “flat” match, but it’s not always the case.
    8/ Tidy up individual areas using pixel-painting where needed.
    9/ Save to PI1, IFF, etc as needed…

  2. Oh, and I suppose step 7.5 … if it turns out an important “spot” colour is now missing from the palette, some more manual surgery may be needed to insert it at the expense of a less important – even though possibly more widely used overall – entry… then save to a new palette file and retry.

  3. I have slightly different methodolog to produce good quality pictures for such purpose as older (bit depth limited) platforms.

    GIMP + PSPI + Ximagic Quantizer plugin (particulary two algorithm for color reduction: NeuQuant and SColorQ) IMHO SColorQ can’t be matched to anything as it use simplified human perception model and as a result provide optimal color quantization – also i reccomend to use or YCbCr color space or LAB space as RGB color space not match human perception model and color matching is suboptimal.

Speak Your Mind


Read previous post:
Color Bit Depth Reducer

The Color Bit Depth Reducer is a simple and convenient utility that down converts 24 bit RGB color values to...