Amiga Images
The Amiga stores images as planar bitplanes: from one to six separate one-bit layers whose bits are read together to form each pixel's colour number. That number indexes a palette of 32 registers, each a 12-bit RGB value chosen from 4096. Two special modes, Extra-Half-Brite and Hold-And-Modify, stretch the count far beyond the 32 registers.
Overview
A picture is made of one to six bitplanes. Each bitplane is a full-screen block of memory holding one bit per pixel. To find a pixel's colour, the chipset reads the bit at that position from every active bitplane and stacks them into a binary number: with n bitplanes the number runs from 0 to 2n−1, so from 2 up to 64 colours. That number is the palette index. Denise fetches all the planes by DMA as the beam scans, combining them per pixel.
| Property | Value |
|---|---|
| Bitplanes | 1 to 6 |
| Colours | 2 to 64 (indexed), 4096 in HAM |
| Palette registers | 32 |
| Colour depth | 12-bit, 4 bits each of R, G, B |
| Total palette | 4096 possible colours |
| Typical lowres | 320 × 256 (PAL) |
| Typical hires | 640 × 256 (PAL) |
Planar bitplanes
Unlike a chunky display, where one pixel's colour sits in one byte, the Amiga is planar: a single pixel's bits are spread across several independent memory blocks. Bitplane 0 holds bit 0 of every pixel, bitplane 1 holds bit 1, and so on. Each plane is stored as rows of 16-bit words, the most significant bit leftmost, exactly like a one-bit screen.
To colour pixel at column x, row y, the chipset reads that pixel's bit from each active plane and assembles them: plane 0's bit is the least significant, the highest plane's bit the most significant. The resulting value is the palette index. Adding a plane doubles the colour count but adds another full screen of memory and DMA to fetch, so artists trade colours against bandwidth. This layout is also why the blitter, which can address each plane separately, is central to Amiga graphics.
The colour palette
There are 32 colour registers, numbered 0 to 31. Each holds a 12-bit value: four bits of red, four of green, four of blue, so each channel has 16 levels and the whole space is 16 × 16 × 16 = 4096 colours. A pixel's assembled bitplane value selects one register, and that register's RGB is shown. In a plain indexed mode, only the first 2n registers matter, but all 32 exist and are used by the special modes.
| Field | Bits | Range |
|---|---|---|
| Red | 4 | 0–15 |
| Green | 4 | 0–15 |
| Blue | 4 | 0–15 |
Screen modes
The display resolution is set by two choices: horizontal lowres or hires, and whether the vertical is interlaced. Lowres is 320 pixels across and allows up to six bitplanes; hires doubles the horizontal to 640 but the extra bandwidth caps it at four bitplanes. Interlace weaves two fields together to double the vertical lines, at the cost of flicker. Widths and heights below are the common PAL figures; NTSC machines show fewer scanlines (200 and 400).
| Mode | Resolution (PAL) | Max bitplanes | Max colours |
|---|---|---|---|
| Lowres | 320 × 256 | 6 | 64 (32 indexed, or EHB/HAM) |
| Lowres interlace | 320 × 512 | 6 | 64 |
| Hires | 640 × 256 | 4 | 16 |
| Hires interlace | 640 × 512 | 4 | 16 |
Six bitplanes in lowres would give 64 palette indexes, but there are only 32 registers, so the sixth plane is not a plain index. Instead it triggers one of the two special modes below.
EHB and HAM
Both special modes use a sixth bitplane in lowres to reach beyond the 32 registers.
Extra-Half-Brite (EHB) gives 64 colours from the 32 registers. The first five bitplanes pick one of the 32 registers as usual; the sixth bitplane, when set, halves the brightness of that colour by shifting each RGB component down one bit. So every palette entry appears in a full and a half-bright version, 64 shades from 32 stored colours.
Hold-And-Modify (HAM) reaches all 4096 colours on screen at once. Each pixel's six bits split into two control bits and four data bits. The control bits say whether to take a colour from a register or to hold the previous pixel's colour and modify one channel to the 4-bit data value. So most pixels reuse the neighbour to the left, changing only red, green or blue, which lets photographic images appear despite only 32 registers.
| HAM control bits | Action |
|---|---|
| 00 | Use the 4-bit value as an index into the first 16 registers |
| 01 | Hold previous colour, replace blue with the 4-bit value |
| 10 | Hold previous colour, replace red with the 4-bit value |
| 11 | Hold previous colour, replace green with the 4-bit value |
Dual playfield
The bitplanes can be split into two independent playfields that overlap and scroll separately. In dual-playfield mode the odd-numbered bitplanes form the front playfield and the even-numbered ones the back, each up to three planes deep for eight colours. Where the front playfield's pixel is colour 0 it is transparent and the back playfield shows through.
Each playfield has its own scroll and its own set of palette entries, so one can slide over the other for parallax backgrounds without any blitting. This is the cheapest way to get two independently moving layers on the machine.