Hold-And-Modify
Amiga display mode encoding many colors via per-pixel RGB channel modification.
Bismarck8262 · CC0
Hold-And-Modify, commonly called HAM, is a display mode for the Amiga computer that relies on an unusual method for determining pixel colors, enabling far more colors on screen than typical for the hardware. When the Amiga launched in 1985, this near-photorealistic capability was unmatched in home computers and became a common way to show off the machine's graphics power. HAM was often used for displaying digitized photographs, video frames, bitmap art, and occasionally animation. However, it has major technical drawbacks that keep it from being a practical everyday display mode. The original Amiga chipset uses a planar display with a 12-bit RGB color space, giving 4096 possible colors. The image data is stored in a section of main memory called chip RAM, which is shared between the display system and the main CPU. Normally, the display uses an indexed color system with a palette. The hardware has 32 registers, each settable to any of the 4096 colors, and the image can access up to 32 values using 5 bits per pixel. A sixth bit can be used in a mode called Extra Half-Brite, which halves the brightness of that pixel, making shadow effects easy. The concept behind HAM came from analog color television. To fit a color signal into the bandwidth of a black-and-white broadcast, engineers took advantage of the fact that human vision is much less sensitive to color changes than to brightness changes. The NTSC system slightly reduced the resolution of the brightness signal (luma), freeing up bandwidth for a lower-resolution color signal (chroma). Chroma is split into hue and saturation, forming an HSV (hue, saturation, value) signal. Before broadcast, hue and saturation are further encoded—into YIQ for NTSC or Y'UV for PAL. Home computers and game consoles of the era, often using televisions as monitors, typically encoded graphics internally as HSV, which could be converted to YIQ or YUV and sent via an RF modulator. Because the television already had reduced color resolution, many systems stored color at lower resolution to save memory. The ZX Spectrum, for example, stored color only for 8-pixel groups, causing a problem called attribute clash. HAM was developed for the Amiga as a way to reduce color resolution memory needs without attribute clash. The system starts with an initial color, then each subsequent pixel modifies that value.
- Introduced
- 1985
- Color depth
- 4096 possible colors (12-bit RGB)
- Bits per pixel
- 6 (HAM6)
- Base colors
- 16 from color registers
- Memory efficiency
- encodes 4096-color playfield in half the memory normally required
- Games using ham
- 12
Lore & Background
The original Amiga chipset uses a planar display with a 12-bit RGB color space producing 4096 possible colors. The display system usually used an indexed color system with a color palette containing 32 registers. HAM mode was developed as a solution to reducing color resolution memory needs while avoiding attribute clash. In this system, an initial color was set and then the following data was used to modify that value. The technique is similar to modern image compression like JPEG and MPEG, as well as the YJK encoding of the V9958 MSX-Video chip. As the Amiga design migrated from a games console to a more general purpose home computer, the video chipset was itself changed from HSV to the modern RGB color model.
Reader's Guide
When the Amiga was launched in 1985, HAM mode offered a significant advantage over competing systems. HAM allows display of all 4096 colors simultaneously, though with limitations. This pseudo-photorealistic display was unprecedented for a home computer of the time and allowed display of digitized photographs and rendered 3D images. In comparison, the then IBM-PC standard EGA allowed 16 on-screen colors from a palette of 64, and VGA's Mode 13h allowed 256 on-screen colors from 262,144. HAM mode was frequently used to demonstrate the Amiga's ability in store displays and trade presentations, since competing hardware could not match the color depth. Due to its limitations, HAM was mainly used for display of static images and developers largely avoided its use with games or applications requiring animation. Only twelve games used HAM mode, starting with Pioneer Plague in 1988. With the introduction of the Advanced Graphics Architecture (AGA), a conventional planar image could have a palette of 256 colors, making the original HAM mode far less attractive, though it was still included for backward compatibility. The new HAM8 mode was far less useful to the AGA chipset than the original HAM was to the original chipset, since more straightforward indexed 256-color modes increased options without suffering from HAM's drawbacks.
Did You Know?
- HAM mode was originally conceived during a trip to see flight simulators, as a primitive type of virtual reality.
- HAM6 encodes an effective 4096-color playfield in half the memory normally required.
- It can take up to three pixels to change from one color to another, reducing effective resolution to about 106 pixels at that point.
The Core Mechanism: Modifying Color in Real Time
HAM works by establishing a base color and then incrementally altering individual RGB channels as the display scans across the screen. In HAM6 mode each pixel consumes six bits: two serve as a selector flag and four carry the data payload. When the flag reads zero, those four bits simply choose one of sixteen pre-loaded color registers, yielding a straightforward 16-color image. When the flag reads one, two, or three, the corresponding blue, red, or green channel of the currently held color is overwritten by the four-bit value. The blended result is stored in a register inside the DAC that produces the final analog output. Because the hardware performs the conversion from HAM codes to full RGB in real time as the frame is being drawn, the programmer never needs to store complete twelve-bit color values. By carefully choosing sixteen base colors and then layering small channel adjustments on top, a single screen can exhibit a far richer palette than a naive indexed approach would permit.
Origins: A Chip-Layering Accident and a Flight-Simulator Spark
HAM's roots stretch back to the era when home computers drove color televisions using HSV-encoded signals. The original Amiga chipset was designed around that NTSC-compatible architecture, where holding a hue and tweaking only the luminance with four bits made practical sense. Project lead Jay Miner has recalled that the idea crystallized after a trip to watch flight simulators in action, sparking a vision of a primitive virtual-reality display. When the team pivoted the Amiga from a games console toward a general-purpose home computer, the video hardware shifted from HSV to the modern RGB model. Miner initially declared the hold-and-modify circuit unnecessary and asked the chip-layout engineer to remove it. The engineer came back explaining that excising the logic would either leave a large empty gap in the middle of the silicon or demand a three-month redesign the schedule could not absorb. Miner, convinced nobody would ever use the feature, let it stay. He later admitted he was wrong, crediting it as the very thing that gave the Amiga its distinctive color-palette edge.
Solving the Attribute-Clash Problem
Many home-computer systems of the mid-1980s stored color at a coarse granularity to save memory. The ZX Spectrum, for example, assigned a single color to an entire eight-pixel group, which produced the infamous attribute-clash problem: two adjacent pixels that needed different colors but shared the same group could not be rendered independently. The Amiga's planar display already offered a twelve-bit RGB color space yielding 4096 possible colors, with a bitmap held in chip RAM shared between the display hardware and the CPU. The standard indexed mode used thirty-two color registers addressed by five bits per pixel, plus a sixth bit for the Extra Half-Brite dimming effect. HAM was conceived as a way to keep the memory footprint low while eliminating fixed-location color boundaries. Because the base color could be re-set at any point along a scanline, an artist could paint a stretch of sky blue and then use the remaining bits to encode subtle brightness variations for clouds, without being trapped by rigid group edges. The technique is conceptually close to modern lossy compression schemes such as JPEG and MPEG, and to the YJK encoding found in the V9958 MSX-Video chip of the MSX2+.
Practical Use, Memory Savings, and Inherent Tradeoffs
When the Amiga launched in 1985, HAM mode became the go-to showcase for the machine's graphical prowess. Because it could render near-photorealistic imagery on a home computer at a time when that was virtually unprecedented, developers and demo programmers leaned on it to display digitized photographs, video frames, detailed bitmap artwork, and the occasional animation. The memory savings were substantial: HAM6 encoded an effective 4096-color playfield in roughly half the storage a full indexed display would need, and HAM8 pushed that figure down to about forty percent. However, the mode carried a significant tradeoff. As a lossy compression technique—comparable to JPEG minus its discrete-cosine-transform stage—it introduced artifacts and limited the kinds of images that could be reproduced faithfully. These technical constraints meant HAM could not serve as a general-purpose display mode; it excelled at smooth, photographic content but struggled with sharp, high-contrast graphics. Its niche role as a demonstration and photography tool, rather than a universal framebuffer, defined both its fame and its practical ceiling.
Gallery

Frequently Asked Questions
What is Hold-And-Modify (HAM)?
HAM is a display mode on the Amiga computer that determines pixel colors by modifying individual RGB channels on a per-pixel basis rather than simply picking from a fixed palette. It was introduced alongside the Amiga in 1985 and lets the hardware show up to 4096 distinct colors on screen.
How does HAM encode 4096 colors with only 6 bits per pixel?
The mode starts with 16 base colors stored in the Amiga's color registers, then each pixel's six bits tell the hardware which RGB sub-channels to hold or adjust, effectively layering new color combinations on top of those bases. This trick lets a 4096-color playfield fit in roughly half the memory a straightforward palette-indexed mode would need.
Why was HAM such a big deal when the Amiga launched in 1985?
No other home computer at the time could render near-photorealistic imagery, so HAM became the go-to way to demonstrate the machine's graphical superiority. It was widely used to display digitized photographs, video frames, and bitmap artwork that simply looked impossible on competing systems.
What are the main drawbacks that kept HAM from being a practical everyday mode?
The per-pixel channel-modification scheme introduces significant technical limitations that make it unsuitable for general-purpose display work. In practice, only about twelve games ever adopted HAM, and it was largely confined to showcasing still images or short animation sequences rather than serving as a default working mode.
How does HAM compare to the Amiga's other display modes in terms of color depth?
With 4096 possible colors (12-bit RGB) from just 6 bits per pixel, HAM far exceeds the typical 256-color EHB or 16-color modes available on the same hardware. Its memory efficiency—encoding that full 4096-color field in half the usual space—made it the only realistic way to push the Amiga toward photographic color fidelity.
More in Display Standards 1-24
Spotted an error? Know more?
Reader corrections go straight into our review queue. Suggest an edit · How this site is sourced
