Hold-And-Modify, usually abbreviated as HAM, is a display mode of the Commodore Amiga computer. It uses a highly unusual technique to express the color of pixels, allowing many more colors to appear on screen than would otherwise be possible. HAM mode was commonly used to display digitized photographs or video frames, bitmap art and occasionally animation. At the time of the Amiga's launch in 1985, this near-photorealistic display was unprecedented for a home computer and it was widely used to demonstrate the Amiga's graphical capability. However, HAM has significant technical limitations which prevent it from being used as a general purpose display mode.
The original Amiga chipset uses a planar display with a 12-bit RGB color space that produces 4096 possible colors.
The bitmap of the playfield was held in a section of main memory known as chip RAM, which was shared between the display system and the main CPU. Due to timing considerations, the chipset only had time to read 6 bits per pixel before it was time to draw the next pixel on screen. To reduce the amount of data needed to describe an image and thus fit within this limitation, the display system used an indexed color system with a color palette.
The hardware contained 32 registers that could be set to any of the 4096 possible colors, and the image could access any of these 32 values using 5 bits per pixel. The sixth available bit was used by a display mode known as Extra Half-Brite which reduced the luminosity of that pixel by half, providing an easy way to produce shadowing effects.
When the Amiga chipset was first being designed, it operated directly in the chroma, hue and luminance values of the NTSC signal, as was common for early home computers for which television sets were used for display. This led to the possibility of greatly reducing the amount of memory needed to display a single-color image like black and white television by setting the color value at the start of a scan line and then having the bitmap values modify the luminance value only. Since analog television images can only change from black to white over a number of pixels, not immediately from one to the next, four pixels would be enough to provide a credible "black and white" image, halving the amount of memory needed to store an image.