ZX Spectrum graphic modes

Last updated

Simulation of ZX Spectrum graphics output on a PAL TV set ZX Spectrum graphics showcase.png
Simulation of ZX Spectrum graphics output on a PAL TV set

The original ZX Spectrum computer produces a one bit per pixel, bitmapped colour graphics video output. A composite video signal is generated through an RF modulator, and was designed for use with contemporary 1980s television sets.

Contents

The image size of the framebuffer is 256x192 pixels, with a palette of 15 non-modifiable colours, where the entire colour palette is extremely saturated. The resolution of the colour output is 64 times lower than the resolution of the pixel bitmap. [1] [2] The extremely low colour resolution was used to conserve memory, totaling just 768 bytes for colour attributes. Colour is stored separate from the pixel bitmap, as a 32x24 cell grid, using one byte per each of the character cells. One character cell is composed of 8x8 pixels. In practice, this means any character cell can only use two selected colours for colouring the contained 64 pixels. [3]

Since the machine was designed for usage with a standard television set, the 256x192 pixel area is surrounded by a wide border that fills up the remaining space of the standard 384x288 low-resolution PAL TV visible screen area. Usually, the border area assumes a single colour, but using software tricks it is possible to display some low resolution graphics there. [4]

The ZX Spectrum lacked dedicated hardware for scrolling and sprites, or a dedicated hardware blitter. To facilitate the display of colour graphics, the original ZX Spectrum employs 16 KiB of discrete graphics RAM. The latency of the graphics RAM is 150 ns; the peak bandwidth is 2.1875 MB/s (calculated as 224x5/8 bytes per 64 μs). [5]

Frame Rate and Timings

The original ZX Spectrum does not conform strictly to the PAL standard frame rate of 50 Hz. ZX Spectrum outputs one video line in exactly 224 CPU clock cycles, where the CPU clock rate equals 3.5 MHz. This exactly matches the PAL standard 64 μs line time. However, the ZX Spectrum produces only 312 lines to form one display frame, while the PAL standard recommends 312.5 lines. As a consequence, the frame rate of the ZX Spectrum is approximately 50.08 frames per second. [6]

This discrepancy was not known to many programmers, who assumed the frame rate of 50 frames per second.[ citation needed ] As a result, some programs, including the built-in BASIC interpreter, had the time running slightly too fast. Later ZX Spectrum models have a slightly different frame rate and the CPU clock rate, which causes some older software to run slightly too slow if it uses vertical synchronization, or too fast if it relies on CPU clock rate. [6]

At the start of each display frame, the maskable interrupt signal is sent to the ZX Spectrum's Z80 CPU, enabling programs to easily detect and measure the passage of time. It also allows the programs to perfectly synchronize the graphics output with the display of video frames. It is exactly the same mechanism as the vertical synchronization of a modern computer, which can be employed to prevent display tearing.

Display timings on PAL
ZX Spectrum 16K, 48K, and ZX Spectrum+ [7] 128K, +2, +2A, +3 [8]
CPU cycles per PAL line224228
PAL line time64 μs64.28 μs
PAL lines per frame312311
Frame time19.968 ms19.9915 ms
Frame rate50.08 frames per second50.02 frames per second
Display Vertical Synchronizationavailable, by the Z80 maskable interrupt line (INT) [9] available, by the Z80 maskable interrupt line (INT) [9]

Graphics memory structure and pixel coordinates

The 16 KiB discrete graphics RAM is directly accessible to the CPU at addresses 16384 to 32767. The main pixel bitmap is stored at the very beginning of the graphics RAM, while the attributes array follows immediately behind it. [10]

The video controller circuit is built into the semi-custom Ferranti ULA integrated circuit, consisting of approximately 480 configurable cells (depending on the model). The cells of the ULA were factory-configured in various ways to produce the ULA for ZX Spectrum, where one cell has the functionality of approximately two NAND gates. [11]

An CPU access to the graphics RAM is called a contended access, because the video controller has a higher priority then the CPU. On an access to the graphics RAM, the CPU commonly incurs a slight delay while waiting for the video controller to complete the data reads. [12]

The addresses in the video DRAM are interleaved, which produces an unusual coordinate system for the pixel bitmap. If coordinates of a pixel are (x, y), and the bits of the x coordinate axis are labeled x7, x6, x5, x4, x3, x2, x1, x0, and the bits of the y coordinate axis are labeled y7, y6, y5, y4, y3, y2, y1, y0, then the pixel is stored in a byte with the address bitpattern 0, 1, 0, y7, y6, y2, y1, y0, y5, y4, y3, x7, x6, x5, x4, x3. [13]

The address bitpattern contains two more bitpattern transpositions than necessary. The fastest and the simplest bitpattern would have been 0, 1, 0, x7, x6, x5, x4, x3, y7, y6, y5, y4, y3, y2, y1, y0, which makes the pixel addresses increase by the column first. Unfortunately, the ZX Spectrum designers were working under extreme time pressure, and failed to notice this simple improvement. [11]

While the original ZX Spectrum 48K model has 32 KiB of main RAM, the 16K model has just the 16 KiB graphics RAM. This is the reason why the colour attributes array was designed to fit in just 768 bytes. The colour attributes could have easily had a double or a quadruple resolution in the vertical axis, but that would have reduced the remaining free memory space for programs by another kilobyte or two, especially in the 16 KiB model.

To facilitate the display of colour graphics, the original ZX Spectrum employs 16 KiB of discrete graphics RAM, unlike the shared graphics RAM architectures of most other microcomputers, including the Commodore 64.[ citation needed ] The resolution of the pixel bitmap is similar to that in other contemporary microcomputers, where the popular Commodore 64 commonly uses the 160x200 resolution at two bits per pixel. [14]

The system of colour cells, called "the attributes", drew a lot of criticism, because it significantly complicated the programming of colour applications.[ citation needed ] Still, the colour attribute system had sufficient capabilities for supporting the common applications and games of the era, and even the very limited colour capabilities were welcomed by the users.[ citation needed ]

Colour palette

ZX Spectrum screen showing the available colours Zx-colors.png
ZX Spectrum screen showing the available colours

The ZX Spectrum (and compatibles) computers uses a variation of the 4-bit RGBI palette philosophy (also used on CGA, Thomson MO5, Sharp MZ-800, Mattel Aquarius, etc.), resulting in 8 basic colours with brightness variations. [15] On the 128, +2 and +3 models, the ULA outputs TTL level red, green, blue and sync signals that are used by the TEA2000 Video Encoder for composite video signal generation. [16] [17] [18] [19]

Each of the colours of the 3-bit palette has a basic and a bright variant. [15] The bright half of the palette is generated using the video display's maximum voltage level for the luminance signal. The basic half of the palette is generated by simply reducing the voltage of the luminance signal. [20]

Both colours of a character cell cell must share their brightness property, because there is only a single brightness bit for the entire cell. Besides that limitation, any combination of the palette colours can be freely selected as the two colours of a character cell. In the following table, all the "bright" colours are given in the right column.

Colour
number
Binary valueColour
name
Binary valueColour
name
GRBIGRBI
00000#000000Black0001#000000"Bright" Black
10010#0100CEBlue0011#0200FDBright Blue
20100#CF0100Red0101#FF0201Bright Red
30110#CF01CEMagenta0111#FF02FDBright Magenta
41000#00CF15Green1001#00FF1CBright Green
51010#01CFCFCyan1011#02FFFFBright Cyan
61100#CFCF15Yellow1101#FFFF1DBright Yellow
71110#CFCFCFWhite1111#FFFFFFBright White
  • Some ZX Spectrum clones or NTSC machines might display "bright black" as dark grey.[ citation needed ]
  • The luminance of colours in the table is relative, not absolute. The common television sets usually had much higher luminance than the standard sRGB LCD luminance of 80 cd/m². In absolute terms, ZX Spectrum's colours are much brighter then the sRGB colours in the table. ZX Spectrum's "White" colour is as bright as the brightest sRGB white colour, while the "Bright White" exceeds the limits of the standard sRGB colour luminance.
  • The given sRGB values for green, yellow and cyan are only best approximations, because sRGB displays are unable to produce all the colours of the PAL TV standard. The green PAL phosphor is out-of-gamut in the sRGB colour-space of the modern common LCD displays. For most purposes, this colour inaccuracy is small.[ citation needed ]
  • Colours simulated as sRGB assume non-bright as 84.615% voltage (0.55 V) and bright as 100% (0.65 V). [20] Each ZX Spectrum model used different voltages for colours, so the values here are only indicative. The colours were computed by a conversion of the PAL TV colour-space into the sRGB colour-space. The PAL gamma of 2.8 was applied as recommended by the BT.470 PAL standard; the conversion of primary colours to sRGB primaries (by IEC 61966-2-1 sRGB standard), and the standard sRGB gamma correction (by inverse EOTF) was applied.
  • The given colours are probably not the real ZX Spectrum colours. The colour approximations were computed by assuming the maximum possible saturation that a ZX Spectrum can produce on the PAL TV output. The real ZX Spectrum colours are currently unknown[ clarification needed ], and they are probably less saturated. To compute the real ZX Spectrum colours, a measurement of the phase-amplitude shift of the chroma sub-carrier has to be performed, for each colour, by an oscilloscope on the ZX Spectrum's PAL output.[ citation needed ]

In the ZX Spectrum encoding, the colour components are in the GRB (Green, Red, Blue) order, rather than the more common RGB order. The GRB order has the advantage that the colour numbers become ordered by increasing luminance, so if viewed on black-and-white display the ordered sequence forms a gradient from black to white.

All the colour properties of a cell are stored in memory as one byte called the attribute. Counting from least to most significant bit, an attribute byte dedicates three bits for colour of the pixels valued 1, three bits for colour of the pixels valued 0, one bit for the brightness flag, and one bit for the flashing effect. The flashing effect causes the displayed foreground and background colours to alternate every 0.64 seconds. [21]

Most current ZX Spectrum emulators are displaying inaccurate and possibly over-saturated colours.[ citation needed ] Those colours were computed by simplistic approximations that do not take into account many subtleties of the PAL-to-sRGB colour-space conversion. Similarly, on the ZX Art website the usage of inaccurate colours is very common.[ citation needed ] The theoretically impossible sRGB colour #00CD00 is commonly used as the ZX Spectrum's green colour (i.e. the Spectrum's real green colour is probably more bluish).[ citation needed ]

BASIC commands for colours

The two colours of a character cell are called the foreground colour and the background colour. For any value of n from 0 to 7, the following Sinclair BASIC commands can be used to set or alter the colours of a cell: [15]

  • PAPER n, the background colour for the character cell; applied to all pixels of value 0 in the cell
  • INK n, the foreground colour for the character cell; applied to all pixels of value 1 in the cell
  • BRIGHT i, selects the value of the brightness bit of the character cell, where the value can be either 0 or 1

Additionally, the BORDER command selects a colour for the screen area surrounding the pixel bitmap. It does not use a brightness flag, thus only the eight basic colours are supported for the border colour. [22]

Standard mode

Standard ZX Spectrum screen, with attribute blocks clearly visible Parrot standard.png
Standard ZX Spectrum screen, with attribute blocks clearly visible

The original ZX Spectrum has a screen resolution of 256x192 pixels. [23] [24] In all cases, colours are extremely saturated. Colour information is overlaid onto this as a grid of 8x8 pixel regions known as attribute blocks. [25] [26] All colour properties of an attribute block are stored in memory as a single attribute byte, and each attribute block matches one character cell. Within each attribute block, only two colours may be used out of a palette of 8 colours. Additionally, the entire attribute block may be designated as 'bright', resulting in a total of 15 possible colours (black has no 'bright' variation). In many programs, this limitation of only two colours per attribute block is evident as the unwanted effect of attribute clash.

A screen in this mode occupies 6144 bytes for the pixel bitmap, totaling 6912 bytes together with the colour attributes.

Details:
Pixels: 256 x 192
Attributes: 32 x 24
Colours: 15 (counting non-bright and bright)
Machine: All

Monochrome TVs and monitors

ZX Spectrum on a monochrome display Zx Spectrum standard black and white TV.png
ZX Spectrum on a monochrome display

By using a monochrome monitor or black and white TV (or reducing the saturation settings of a colour TV), it is possible to take advantage of the differences in intensity over the Spectrum's colour range to generate a 15-shade greyscale image at 256x192 resolution.

Details:
Pixels: 256 x 192
Attributes: 32 x 24
Colours: 15 greyscale
Machine: All, using a monochrome display

Hi-Colour attributes

Hardware implementation

Hi-Color / Multitech

ZX Spectrum "8x1" attributes / Hicolour display Parrot mlt.png
ZX Spectrum "8x1" attributes / Hicolour display

Several third-party Spectrum clones, including the Timex Sinclair machines, [27] [28] the Pentagon, the eLeMeNt ZX, and the MB03+ Ultimate interface support a screen mode named Hi-Color, [28] in which attribute blocks are 8x1 pixels in size rather than the usual 8x8. [29] [30] A screen in this mode takes 12 KB RAM. In the case of the Timex, this mode is activated through the command OUT 255,2. [27] [28] At least one editor for Timex machines supports this mode. [31] In addition, this screen mode can be generated through the use of the MB-02 disk system's DMA hardware [32] (where the technique is known as Multitech [33] ), and is also available as Mode 2 (with a linear byte order) on the SAM Coupé. [34]

Details:
Pixels: 256 x 192
Attributes: 32 x 192
Colours: 15
Machine: Timex Sinclair models, ZX Spectrum Next, Pentagon, eLeMeNt ZX, SAM Coupé
Interface: MB03+ Ultimate

Software implementation

8x1 attributes / Hicolour / Multicolour / FLI / BIFROST*2 / Rainbow Generator / Rainbow Processor

On other Spectrum models, this effect can be replicated by exploiting the fact that the ULA re-reads the attribute information on every pixel row when generating the video output; it is possible to write a new value to the relevant memory location in between successive lines, and thus cause a different pair of colours to be shown. However, the Spectrum's processor is not fast enough to write to an entire row of attribute bytes in one scanline, so 8x1 attributes can only be achieved over 20 columns. [35] This technique is variously known as Hicolour, Multicolour, FLI, BIFROST*2 "SuperColour", [36] "Rainbow Generator" or Rainbow Processor [37] mode. [30]

Details:
Pixels: 256 x 192
Attributes: 32 x 192 (limited to a 18x192 area)
Colours: 15
Machine: All (with specific code tailored for each machine's timings)

8x2 attributes / Bicolour / Nirvana+

ZX Spectrum "8x2" attributes display Zx spectrum 8x2 attributes.png
ZX Spectrum "8x2" attributes display

A variation on this method is to change the row of attributes over the course of two scanlines, resulting in 8x2 pixel attribute blocks over a wider region of the screen. This mode is known as Bicolour, and can be applied to the full width of the screen through the use of the Nirvana+ engine. [38] [39]

Details:
Pixels: 256 x 192
Attributes: 32 x 96
Colours: 15
Machine: All (with specific code tailored for each machine's timings)

4x1 / 4x2 / 4x4 attributes

A special case involves alternating between the two available colours per attribute cell for 4 pixels each, allowing each 4x1 region to be treated as an independently colourable 'pixel' (although the limitation of one brightness level per 8x1 cell is still in effect). Again, a 4x2 variant of this mode can be applied to a wider region of the screen. And a 4x4 variant can be achieved on 128K machines by timed switches between the two video RAMs (rather than re-writing the attribute data), to display the upper half of the character cells from one screen and the lower half from the other.

Details:
Pixels: 64 x 192; 64 x 96; 64 x 48
Attributes: 8x1 brightness limitation
Colours: 15
Machine: All (with specific code tailored for each machine's timings)

ULAplus / HAM256 / HAM8x1

ULAplus is compatible with the standard ZX Spectrum and Timex Hi-Res and Hi-Colour modes, and adds the ability to redefining of the palette. [40] If only used to slight modify the basic 16 colours, ULAplus software can be displayed on a standard Spectrum. Use of the full 64 colours is incompatible, as it will trigger the "flash" attributes of the original Spectrum. [41] Amiga HAM inspired modes are also possible (HAM256 and HAM8x1), displaying up to 256 colours on screen. [42] [43] [44] [45]

Details:
Pixels: 256 x 192; 512 x 192 (Hi-Res mode)
Attributes: 32 x 24; 32 x 192 (8x1 Hi-Colour mode)
Colours: 2 from 256 (Hi-Res mode), 64 from 256; 256 (HAM256 and HAM8x1)
Machine: ZX Spectrum SE, ZX Spectrum Next, ZX-Uno, Chloe 280SE, [46] Chloe 140SE, [46] eLeMeNt ZX, zx128u+ [46]
Interface: MB03+ Ultimate

Interlace/Switched modes

Simulated interlaced ZX Spectrum image on a CRT screen Parot interlaced.png
Simulated interlaced ZX Spectrum image on a CRT screen

Interlace

By alternating between two screens on every frame interrupt (50 Hz), it is theoretically possible to simulate a doubling of the vertical display resolution from 192 to 384 lines.

The Timex clones and ZX Spectrum 128K implement a 'shadow' screen area which can be switched into place through the use of a single OUT command, and this is often utilised to rapidly switch between two images for this purpose (although this can also be achieved with a standard block copy, albeit not over the entire screen).

When viewed on a CRT television screen (the standard at the time), the flicker is less noticeable than on a modern monitor. And example image is linked here (warning: the linked image flickers very rapidly, which could potentially cause seizures in people with photosensitive epilepsy).

Interlaced highres monochrome ZX Spectrum image. Real picture taken from a Sinclair ZX Spectrum +3 using composite output and a PCI capture card. Hires256x384.png
Interlaced highres monochrome ZX Spectrum image. Real picture taken from a Sinclair ZX Spectrum +3 using composite output and a PCI capture card.

The technique does not in fact achieve a true interlaced display, as the Spectrum lacks the ability to synchronise with the display hardware at such a low level. On a CRT television screen, the effect is more akin to anti-aliasing, with certain pixels appearing at half intensity. [30] [47]

On modern LCD TVs, capture cards, or other devices that convert the original analog signal into digital (thus partially ignoring the original timing signals), this mode can be interpreted as true interlace, as shown on the image featuring a cat, at the right.

Details:
Pixels: 256 x 384
Attributes: 32 x 24
Colours: 15

GigaScreen / DithVIDE / BZither

GigaScreen ZX Spectrum screen Parrot giga.png
GigaScreen ZX Spectrum screen

The attributes (colours) of an image are alternated at 50 Hz on the screen. [48] This way, the palette is increased to approximately 36 colours. [49] It's possible to switch screen per scanline and thus mix the screens, but this is very CPU intensive and needs exact and steady timings.

With real tstate precise software its possible to simulate a GigaScreen on an 128k "toastrack" original 128k ZX Spectrum. [50]

For Pentagon machines, a hardware modification is available which directly combines the two alternate screen areas into the video signal, thus eliminating the flicker associated with this method. The MB03+ Ultimate interface and the eLeMeNt ZX computer can display three hardware modes of non-flickering GigaScreen (mixed video RAMs, mixed video frames and autodetection mode) in 256 x 192 and 512 x 192 resolutions.

Furthermore, the GigaScreen and Hi-Colour techniques may be employed together to produce even richer-coloured images; this format has been named DithVIDE and BZither, both names referring to the dithering methods employed when converting true-colour images to the format.

Details:
Pixels: 256 x 192
Attributes: 32 x 24
Colours: ~36
Machine: All (with flickering)
Hardware GigaScreen: Pentagon, eLeMeNt ZX, MB03+ Ultimate (no flickering)

KeyLayer

The MB03+ Ultimate interface and the eLeMeNt ZX computer provide this graphic mode which allows to display image data from the second video RAM at the place of one selected colour in the video RAM no.1. This adds a third colour to an attribute.

Details:
Pixels: 256 x 192, 512 x 192
Attributes: 32 x 24, 64 x 48, 3 colours per cell
Colours: 15
Machine: eLeMeNt ZX
Interface: MB03+ Ultimate

3colour / Multichrome / RGB-3 / Interchrome

3colour ZX Spectrum screen Parrot zxrgb3.png
3colour ZX Spectrum screen

Three separate images, comprising a red, green and blue layer, are displayed on the screen rapidly, one after the other, relying on persistence of vision effects to merge the three layers into a single coloured image. [51] The result is an 8-colour image where each pixel may be coloured independently. [52] [53]

Details:
Pixels: 256 x 192
Attributes: 256 x 192
Colours: 8
Machine: All

Compatible machines and interfaces

Later ZX Spectrum compatible machines offered extra video modes. These are based on the standard 256x192 mode but incompatible with the original Spectrum. [30] Also interfaces, the Spectra interface and the MB03+ Ultimate interface extend the Spectrum’s display to support more colours or/and extra video modes.

16c

ATM Turbo / Pentagon 16 colour mode ATM Turbo Pentagon 16c.png
ATM Turbo / Pentagon 16 colour mode

Video mode where each pixel can have one of 16 colours. [54]

Details:
Pixels: 256 x 192
Attributes: none, no limitations
Colours: 16
Machine: ATM Turbo, Pentagon
Sam Coupe 256x192x16 colour mode SAM 256x192x16.png
Sam Coupé 256x192x16 colour mode

256x192x16 / Mode 4

A Sam Coupé mode, where each pixel can display one of 16 colours from a 128 colour palette. [30]

Details:
Pixels: 256 x 192
Attributes: none, no limitations
Colours: 16 (from 128) per line
Machine: Sam Coupé

384x304x16

A mode supported by the Pentagon computer. [55]

Details:
Pixels: 384 x 304
Attributes: 48 x 38
Colours: 16
Machine: Pentagon

HGFX Graphics

The eLeMeNt ZX computer and the MB03+ interface provide a planar-based 256x192 (LowRes), 512x192 (HighRes) and 512x384 (SuperHiRes) resolutions. [56] HGFX graphics are handled through planar layers, but can be also accessed as "chunky" RAM pages. The highest, chunky-only, is the "PAL" resolution of 720x546 pixels. The HGFX consists of ZX-screen compatible (non-linear or linear) layers-bitplanes to achieve up to 256 colours both in LowRes [57] and HiRes modes, 16 colours in SuperHiRes and 4 colours in the highest resolution. It occupies only part of the memory, similar to the ZX-screen memory, has own internal buffers and can be combined with the original ZX-graphics, in a so-called transparency mode. [58] The HGFX provides a 24-bit true-colour palette (HiRes indeXedColour compatible) with a 256 indexed colours. HGFX screen data can be also displayed in HAM (Amiga-like) and FILL (Apple2GS -like) modes,

The HGFX is based on a more powerful HGFX/Q system, which was originally expandable in a border area to 320 x 240 or 640 x 240. [59]

Details:
Pixels: 256 x 192, 512 x 192, 512 x 384, 720 x 546
Attributes: none, no limitations, plus FILL and HAM modes
Colours: up to 256 (from 16777216), up to 16 (SuperHiRes) and 4 (PAL 720 x 546)
Machine: MB03+ Ultimate, eLeMeNt ZX

Layer 2

Details:
Pixels: 256 x 192 (256 colours from 512), 320 x 256 (256 colours from 512) and 640 x 256 (16 colours from 512)
Attributes: none, no limitations
Machine: ZX Spectrum Next [60]

Radastan

This mode displays 128x96 double sized pixels. Each pixel holds one of sixteen colours, with no attribute limitations. Pixels are stored in linear buffer as 4-bit nibbles (i.e. 2 pixels per byte). The buffer is 6144 bytes long and occupies same memory as 256 x 192 pixel screen.

Details:
Pixels: 128 x 96
Attributes: none, no limitations
Colours: 16 (from 256)
Machine: ZX-Uno, ZX Spectrum Next, MB03+ Ultimate, eLeMeNt ZX

LoRES

This mode displays 128x96 double sized pixels. Each pixel holds one of 256 colours (from 512), with no attribute limitations. Pixels are stored in linear buffer as 8-bit. The buffer is 12288 bytes long and occupies same memory as 256x192 pixel primary (DFILE1) and shadow (DFILE2) screens.

Details:
Pixels: 128 x 96
Attributes: none, no limitations
Colours: 256 (from 512)
Machine: ZX Spectrum Next

Spectra (+128)

The Spectra has 31 display formats. These allow up to 64 unique colours to be shown simultaneously, and at a variety of colour resolutions, with attribute heights of 1, 2, 4 and 8 pixels, and widths of 4 and 8 pixels. [61]

Hi-Resolution modes

512x192x2 / Hi-Res

This mode was mainly used to display 64x24 or 85x24 columns text screen and originally only Timex Sinclair computers (where its named Hi-Res) and some Russian clones [62] can display it. It also takes 12 KB RAM. In the case of the Timex, this mode is activated through the command OUT 255,1. [27] [28] Two graphics editors ("Draw 512" [63] and "Tech-Draw" [64] ) support this mode, [65] [66] along with BASIC64 and some CP/M implementations. [30]

Details:
Pixels: 512 x 192
Attributes: none, no limitations
Colours: 2 (Four palettes: Black & White, Blue & Yellow, Red & Cyan, Magenta & Green) (out of 512 on the ZX Spectrum Next)
Machine: Timex Sinclair, ZX Spectrum Next, ZX-Uno, MB03+ Ultimate, eLeMeNt ZX, Pentagon
Sam Coupe 512x192x4 colours example SAM Coupe 512x192x4.png
Sam Coupé 512x192x4 colours example

512x192x4 / Mode 3

The Sam Coupé has this mode, where each pixel can use one of 4 colours from palette of 128. [30]

Details:
Pixels: 512 x 192
Attributes: none, no limitations
Colours: 4 (from 128) per line
Machine: Sam Coupé
Pentagon 512 x 384 video mode example 512x384x2.png
Pentagon 512 x 384 video mode example

512x384x2

A mode supported by the Pentagon computer. [55]

Details:
Pixels: 512 x 384
Colours: monochrome
Machine: Pentagon, Timex Sinclair 2128 (TC 2048 based modification)

HiRes Colour

Pixels are stored in a linear order. Attributes are doubled in the vertical direction, the composition of the attribute is identical to the original ZX Spectrum mode. HiRes indeXedColour can choose 32 colours from 16777216 colours. Two video RAMs can be mixed in both Colour and indeXedColour modes through the Keylayer.

Details:
Pixels: 512 x 192
Attributes: 64 x 48
Colours: 16 (or 32 indexed, from 1677216)
Machine: MB03+ Ultimate, eLeMeNt ZX

Emulated

256x192, 256 colours, "256 colour mode", no attributes

The SPEC256, [67] [68] EmuZWin [69] [70] and Es.pectrum [71] emulators have a screen mode 256x192 pixels where each pixel can be in one of 256 colours. [30] This is achieved by extending the word size of the emulated Z80 from 8 bits to 64, making eight bits of data available for each pixel; the screen thus takes 48 KB of memory. This mode only exists on the emulator and software graphics must be modified to use it.[ citation needed ]

Details:
Pixels: 256 x 192
Attributes: none, no limitations
Colours: 256

Dithering and Blur

Simulated TV blur on a 256x192 ZX Spectrum image with a regular dithering pattern. Patterns intentionally blur generating new colours (ex: orange, grey, etc). Regular dithering reduces the effective resolution of this image to 128x96. Parrot tv.png
Simulated TV blur on a 256x192 ZX Spectrum image with a regular dithering pattern. Patterns intentionally blur generating new colours (ex: orange, grey, etc). Regular dithering reduces the effective resolution of this image to 128x96.
Standard ZX Spectrum palette with dithering, in pixel art ZX Spectrum standard palette with 8x8 dithering.png
Standard ZX Spectrum palette with dithering, in pixel art

The low per-pixel bit depth of only one bit per pixel has urged the graphic artists (e.g. at ZX-Art) to resort to various dithering techniques. Dithering works very well with CRT TV sets of the era, because analog televisions employ a high amount of blur in both the horizontal and vertical axis. As the focus of the common CRT TV electron beam is intentionally low, the resulting high blur produces colour mixing of neighbouring pixel colours. Blur reduces the unwanted visible noise added by dithering in displayed images.

To faithfully simulate the actual output image of a ZX Spectrum, a modern emulator needs to employ a blur filter of significant strength. Simple bilinear filters introduce too much blur, while the extremely sharp Lanczos filter is inadequate. Therefore, the filter has to be specially constructed to simulate the effect of blur on a common CRT TV set. Most emulators employ filters of very low quality, causing the final image to appear extremely sharp and pixelated.[ citation needed ] Some emulators, like FUSE, employ available filters in an attempt to reduce the pixilation effect.[ citation needed ] Those filters produce the final image significantly different than the ZX Spectrum's real video output.

A low mutual contrast of some palette colour combinations allows improvement of the dithering effect by further reducing the amount of noise introduced by dithering. The table below demonstrates this effect - for example, the contrast of a white colour over a yellow background is extremely low, making the white text virtually invisible.

Colour contrast chart
0,00,000,00,010,00,020,00,030,00,040,00,050,00,060,00,07
0,01,000,01,010,01,020,01,030,01,040,01,050,01,060,01,07
0,02,000,02,010,02,020,02,030,02,040,02,050,02,060,02,07
0,03,000,03,010,03,020,03,030,03,040,03,050,03,060,03,07
0,04,000,04,010,04,020,04,030,04,040,04,050,04,060,04,07
0,05,000,05,010,05,020,05,030,05,040,05,050,05,060,05,07
0,06,000,06,010,06,020,06,030,06,040,06,050,06,060,06,07
0,07,000,07,010,07,020,07,030,07,040,07,050,07,060,07,07

Related Research Articles

<span class="mw-page-title-main">ZX Spectrum</span> 1982 series of home computers

The ZX Spectrum is an 8-bit home computer developed and marketed by Sinclair Research. It was first released in the United Kingdom on 23 April 1982, and around the world in the following years, most notably in Europe, the United States, and Eastern Bloc countries. In addition to being one of the most influential computers ever made, the Spectrum is also one of the bestselling models of computer ever with over five million units sold.

In computer graphics, planar is the method of arranging pixel data into several bitplanes of RAM. Each bit in a bitplane is related to one pixel on the screen. Unlike packed, high color, or true color graphics, the whole dataset for an individual pixel is not in one specific location in RAM, but spread across the bitplanes that make up the display. Planar arrangement determines how pixel data is laid out in memory, not how the data for a pixel is interpreted; pixel data in a planar arrangement could encode either indexed or direct color.

<span class="mw-page-title-main">SAM Coupé</span> 8-bit British home computer released in late 1989

The SAM Coupé is an 8-bit British home computer manufactured by Miles Gordon Technology (MGT), based in Swansea in the United Kingdom and released in December 1989.

Sinclair BASIC is a dialect of the programming language BASIC used in the 8-bit home computers from Sinclair Research, Timex Sinclair and Amstrad. The Sinclair BASIC interpreter was written by Nine Tiles Networks Ltd.

<span class="mw-page-title-main">Timex Sinclair 2068</span> Home computer released in 1983

The Timex Sinclair 2068, released in November 1983, was Timex Sinclair's third and last home computer for the United States market. It was also marketed in Canada, Argentina, Portugal and Poland, as Timex Computer 2068.

<span class="mw-page-title-main">Attribute clash</span>

Attribute clash is a display artifact caused by limits in the graphics circuitry of some colour 8-bit home computers, most notably the ZX Spectrum, where it meant that only two colours could be used in any 8×8 tile of pixels. The effect was also noticeable on MSX software and in some Commodore 64 titles. Workarounds to prevent this limit from becoming apparent have since been considered an element of Spectrum programmer culture.

<span class="mw-page-title-main">Hold-And-Modify</span> Display mode used in Commodore Amiga computers

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.

<span class="mw-page-title-main">ATM (computer)</span> ZX Spectrum clone developed in Moscow in 1991 by two firms, MicroArt and ATM.

The ATM Turbo, also known simply as ATM is a ZX Spectrum clone, developed in Moscow in 1991, by two firms, MicroArt and ATM.

<span class="mw-page-title-main">Timex Computer 2048</span> 1984 computer developed by Timex Portugal

The Timex Computer 2048 or TC 2048 is a 1984 computer developed by Timex Portugal, at the time part of Timex Sinclair. It was based on the Timex Sinclair 2048 prototype, with a similar redesign case, composite video output, Kempston joystick interface, and additional video modes, while being highly compatible with the Sinclair ZX Spectrum computer.

<span class="mw-page-title-main">Vector-06C</span>

Vector-06C is a home computer with unique graphics capabilities that was designed and mass-produced in USSR in the late 1980s.

<span class="mw-page-title-main">Komputer 2086</span>

The Unipolbrit Komputer 2086 was a Polish version of the home computer Timex Sinclair 2068, produced by a joint venture of the Polish state-owned Unimor and foreign company Polbrit International. Introduced in 1986, the computer had a cost of roughly 190000 zł.

Composite artifact colors is a designation commonly used to address several graphic modes of some 1970s and 1980s home computers. With some machines, when connected to an NTSC TV or monitor over composite video outputs, the video signal encoding allowed for extra colors to be displayed, by manipulating the pixel position on screen, not being limited by each machine's hardware color palette.

The TC 3256 or Timex Computer 3256 was a 1987 computer created by Timex of Portugal, a branch of Timex Corporation.

<span class="mw-page-title-main">ZX81 character set</span> Character encoding used in the Sinclair ZX81 computers

The ZX81 character set is the character encoding used by the Sinclair Research ZX81 family of microcomputers including the Timex Sinclair 1000 and Timex Sinclair 1500. The encoding uses one byte per character for 256 code points. It has no relationship with previously established ones like ASCII or EBCDIC, but it is related though not identical to the character set of the predecessor ZX80.

References

  1. Vickers, Steven (1982). "Introduction". Sinclair ZX Spectrum BASIC Programming. Sinclair Research Ltd. Archived from the original on 24 September 2006. Retrieved 23 August 2006.
  2. Vickers, Steven (1982). "Colours". Sinclair ZX Spectrum BASIC Programming. Sinclair Research Ltd. Archived from the original on 24 September 2006. Retrieved 23 August 2006.
  3. EPpatent 0107687,Richard Francis Altwasser,"Display for a computer",issued 6 July 1988, assigned to Sinclair Research Ltd
  4. "Database - ZX-Art". zxart.ee. Retrieved 14 April 2023.
  5. "48K ZX Spectrum Technical Information". worldofspectrum.org. Retrieved 28 December 2023.
  6. 1 2 "Spectrum Clone Design Blog".
  7. "48K ZX Spectrum Technical Information".
  8. "128K ZX Spectrum Technical Information".
  9. 1 2 Smith, Chris (2010). The ZX Spectrum ULA: How to Design a Microcomputer (1st ed.). United Kingdom: ZXDesign Technology and Media. pp. 224–227. ISBN   978-0-95-650710-5.
  10. "48K ZX Spectrum Technical Information". worldofspectrum.org. Retrieved 15 November 2023.
  11. 1 2 Smith, Chris (2010). The ZX Spectrum ULA: How to Design a Microcomputer (1st ed.). United Kingdom: ZXDesign Technology and Media. p. 74. ISBN   978-0-95-650710-5.
  12. "48K ZX Spectrum Technical Information". worldofspectrum.org. Retrieved 15 November 2023.
  13. Tišnovský, Pavel. "Grafika na osmibitových počítačích firmy Sinclair II". Root.cz (in Czech). Retrieved 15 November 2023.
  14. "For Newbies - C64 Video output explained". Lemon64 - Commodore 64. 24 September 2019. Retrieved 11 January 2024.
  15. 1 2 3 "Colours - Sinclair ZX Spectrum Introduction Manual [Page 27]| ManualsLib". www.manualslib.com.
  16. "S-video out for the ZX Spectrum +2A/+3, +2B, and +3B". zxnet.co.uk. Retrieved 20 December 2023.
  17. "Removing Blue/Yellow Ghosting from the 128/+2's Video Output". Spectrum for Everyone. Retrieved 20 December 2023.
  18. Farrow, Paul (2001). Spectrum 128 SCART Cable (PDF).
  19. TEA2000 PAL/NTSC Colour Encoder (PDF). Philips. September 1985.
  20. 1 2 "Spectrum Clone Design Blog". www.zxdesign.info.
  21. "48K ZX Spectrum Technical Information". worldofspectrum.org. Retrieved 14 November 2023.
  22. "Colours - Sinclair ZX Spectrum Introduction Manual [Page 27]". ManualsLib. Retrieved 14 November 2023.
  23. "Spectrum Clone Design Blog". www.zxdesign.info.
  24. "48K ZX Spectrum Technical Information". worldofspectrum.org.
  25. Belfield, Dean. "L Break Into Program - ZX Spectrum Screen Memory Layout".
  26. "World of Spectrum - Documentation - ZX Spectrum manual - Chapter 24". worldofspectrum.org.
  27. 1 2 3 "Timex I/O Ports". timex.comboios.info.
  28. 1 2 3 4 "Timex Technical Information". worldofspectrum.org.
  29. Weissenberg, Michael (19 December 1983). "InfoWorld". InfoWorld Media Group, Inc. via Google Books.
  30. 1 2 3 4 5 6 7 8 "ZX Spectrum extra graphics modes -- 8bit Projects For Everyone". 8bit.yarek.pl. Archived from the original on 15 June 2006. Retrieved 14 September 2006.
  31. "Extended Paint". www.timexsinclair.com. Retrieved 20 November 2022.
  32. MB-02+ Revolutionary Step Forward (PDF). 8 Bit Company Laboratories.
  33. "MB02+ download". www.128land.com.
  34. Gordon, Wright, Bruce, Andy (1990). SAM COUPE TECHNICAL MANUAL v3.0 (PDF). MILES GORDON TECHNOLOGY plc.{{cite book}}: CS1 maint: multiple names: authors list (link)
  35. "BIFROST*2 ENGINE at Spectrum Computing - Sinclair ZX Spectrum games, software and hardware". Spectrum Computing.
  36. "SuperColour at Spectrum Computing - Sinclair ZX Spectrum games, software and hardware". Spectrum Computing.
  37. "Spectrum Computing - ZX Spectrum games, software and hardware".
  38. "NIRVANA+ ENGINE at Spectrum Computing - Sinclair ZX Spectrum games, software and hardware". Spectrum Computing.
  39. "Database - ZX-Art".
  40. "Database - ZX-Art". zxart.ee.
  41. "ULAplus". sites.google.com.
  42. "ULAplus". sites.google.com. Archived from the original on 25 May 2013. Retrieved 20 November 2022.
  43. "ULAplus™ 10th Anniversary Collection by Source Solutions, Inc". itch.io. Retrieved 20 November 2022.
  44. "HAM256 Viewer at Spectrum Computing - Sinclair ZX Spectrum games, software and hardware". Spectrum Computing. Retrieved 20 November 2022.
  45. "HAM 8x1 at Spectrum Computing - Sinclair ZX Spectrum games, software and hardware". Spectrum Computing. Retrieved 20 November 2022.
  46. 1 2 3 Gabor, Tarjan (2021). "ZX Spectrum in the 21st Century?".
  47. "Interlace Demo at Spectrum Computing - Sinclair ZX Spectrum games, software and hardware". Spectrum Computing.
  48. "Database - ZX-Art". zxart.ee.
  49. "GFX ZONE - ZX-Spectrum graphics modes". gfxzone.planet-d.net.
  50. ZX Spectrum 128k: "Velesoft's Dragon in Giga Screen Simulator" Demo (2021) , retrieved 21 December 2023
  51. "Database - ZX-Art". zxart.ee.
  52. "ZX Prism: 16 Colour "colour-clash free" planar mode and Hardware Gigascreen". 17 July 2014.
  53. "Триколор — SpeccyWiki". speccy.info.
  54. "16col — SpeccyWiki".
  55. 1 2 "384x304 — SpeccyWiki".
  56. "Graphics modes of ZX Spectrum and compatibles supported on the eLeMeNt/MB platform".
  57. "LnxSpectrum HGFX Oxygene" via vimeo.com.
  58. "HGFX - ZX Planar - tutorial".
  59. "lnxspectrum:hgfx [ilnx.cz]". wiki.ilnx.cz.
  60. "Video Modes - SpecNext official Wiki".
  61. Farrow, Paul (2018). Summary of SPECTRA Display Modes (PDF). www.fruitcake.plus.com / www.zxresourcecentre.co.uk.
  62. "512x192 — SpeccyWiki".
  63. "Draw 512". www.timexsinclair.com. Retrieved 20 November 2022.
  64. "Tech-Draw". www.timexsinclair.com. Retrieved 20 November 2022.
  65. "Draw 512 at Spectrum Computing - Sinclair ZX Spectrum games, software and hardware". Spectrum Computing. Retrieved 20 November 2022.
  66. "Software for the TS 2068". www.timexsinclair.com. Retrieved 20 November 2022.
  67. MVV (18 July 2022), mvvproject/Spec256-Games , retrieved 26 November 2022
  68. "Spectrum Magic ZX games 256 colour". spectrummagic.emuunlim.com. Retrieved 26 November 2022.
  69. "EmuZWin v2.6 release 1.0".
  70. "EmuZWin 2". f0460945.xsph.ru. Retrieved 26 November 2022.
  71. "Es.pectrum manual". www.habisoft.com. Retrieved 26 November 2022.