HAM mode was commonly used to display digitized photographs or video frames,[6] bitmap art and occasionally animation.
The sixth available bit could be 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.
[2] The Amiga chipset was designed using a HSV (hue, saturation and luminance) color space, as was common for early home computers and games consoles which relied on television sets for display.
HSV maps more directly to the YUV colorspace used by NTSC and PAL color TVs, requiring simpler conversion electronics compared to RGB encoding.
This substantially reduces the memory and bandwidth needed for a given perceived fidelity of display, by storing and transmitting the luminance at full resolution, but chrominance at a relatively lower resolution - a technique shared with image compression techniques like JPEG and MPEG, as well as in other HSV/YUV based video modes such as the YJK encoding of the V9958 MSX-Video chip (first used in the MSX2+).
The variant of HSV encoding used in the original form of HAM allowed for prioritising the update of luminance information over hue and particularly saturation, switching between the three components as needed, compared to the more regular interleaving of full-resolution luma (
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, seemingly negating much of the benefit of HAM mode.
Amiga project lead Jay Miner relates: Hold and Modify came from a trip to see flight simulators in action and I had a kind of idea about a primitive type of virtual reality.
HAM can be considered a lossy compression technique, similar in operation and efficiency to JPEG minus the DCT stage; in HAM6 mode, an effective 4096-color (12-bit) playfield is encoded in half the memory that would normally be required - and HAM8 reduces this still further, to roughly 40%.
There is a however a payoff for this simplistic compression: a greater overall color fidelity is achieved at the expense of horizontal artifacts, caused by the inability to set any single pixel to an arbitrary 12- (or 18, 24) bit value.
At the extreme, it can take three pixels to change from one color to another, reducing the effective resolution at that point from a "320-pixel" to approximately "106-pixel" mode, and causing smears and shadows to spread along a scanline to the right of a high contrast feature if the 16 available palette registers prove insufficient.
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 the limitations described above HAM was mainly used for display of static images and developers largely avoided its use with games or applications requiring animation.
Other HAM titles include Knights of the Crystallion,[7][8] Links: The Challenge Of Golf, Overdrive (Infacto), Kang Fu, AMRVoxel, RTG, Zdzislav: Hero Of The Galaxy 3D, OloFight and Genetic Species.
The original HAM mode, with its limited color resolution, became far less attractive to users of an AGA machine, though it was still included for backward compatibility.
As more modern computers are inherently capable of high resolution truecolor displays without any special tricks, there is no longer any need for display techniques like HAM; as PC-style graphics cards offering modes such as 800x600 SVGA in hi-color (16 bpp, or 65536 directly-selectable colors) were already available for the Amiga in the dying days of the platform, it is unlikely that any further developments of the technique would have been bothered with had it survived to the present day.
Even so, it compares favorably to contemporary video technologies like VHS that has a chroma resolution of around 40 television lines, roughly equivalent to 80 pixels.
Various rendering techniques were used to minimize the impact of "fringing" and HAM displays were often designed to incorporate subtle horizontal color gradients, avoiding vertical edges and contrasts.
For example, if an arbitrary portion of the playfield is to be moved to another on-screen position, the Hold-and-Modify values may have to be recomputed on all source and target lines in order to display the image correctly (an operation not well-suited to animation).
An attempt to move an object around the screen (such as with the use of the blitter) will create noticeable fringing at the left and right borders of that image, unless the graphics are specially designed to avoid this.
[2][13] Because only the blue component can be modified without a SET command, the effect is limited to moderate increase of the number of yellow-blue color shades displayed.
[16] The Original Amiga Chipset included a support chip known as the "Copper" that handles interrupts and other timing and housekeeping duties independently of the CPU and the video system.
Using the Copper, it is possible to modify chipset registers or interrupt the CPU at any display coordinate synchronously to the video output.
The only downsides to this approach are that the Copperlist uses extra clock cycles of chip RAM for the register changes, that the image is not bitmap-only, and the added complexity of setting up the SHAM mode.
In theory, all 16.7 million colors could be displayed with a large enough screen and an appropriate base palette, but in practice the limitations in achieving full precision mean that the two least significant bits are typically ignored.
[23][24][25][26] The HAM very similar to the Amiga HAM8 is a part of the HGFX, a planar-based system, provided in the form of the FPGA extension of the original video circuity (ULA), for ZX Spectrum computers.