# Modos gráficos del ZX Spectrum

En comparación con otros ordenadores de 8 bits de su época, como pueden ser el Commodore 64 o el MSX, se considera al Sinclair ZX Spectrum como un ordenador con más limitaciones gráficas, ello debido a la falta de un chip gráfico específico. Sin embargo, a lo largo de su vida comercial se han desarrollado varias técnicas para compensar esta falta de potencia gráfica.

## Paleta de color

El ZX Spectrum usa una variación de la de paleta RGBI de 4 bits. Esto da como resultado que cada uno de los colores de la paleta de 3 bits tenga una variante básica y una con brillo, con la excepción del negro. La mitad con brillo de la paleta se genera utilizando los niveles de voltaje máximo de la pantalla de vídeo para cada uno de los tres componentes de color R / G / B que cada color utiliza. La mitad básica de la paleta se muestra simplemente reduciendo estos voltajes.
En la codificación ZX Spectrum, los componentes de color están en orden GRB (del bit más significativo al menos significativo) en lugar del orden RGB más común. El orden GRB tiene la ventaja de que los números de color se ordenan mediante el incremento de la luminancia, de modo que si se visualiza en blanco y negro la secuencia ordenada 0-7 formaría un gradiente de negro a blanco. Concretamente, el azul tiene un peso binario de 1, el rojo tiene un peso de 2 y el verde tiene un peso de 4. Como con cualquier número binario, estos pesos se suman para producir un solo número decimal que coincide con el color mostrado, el efecto se puede ver en la tabla a continuación (preste especial atención a la columna "valor binario").
Para cualquier valor de n de 0 a 7, se pueden usar los siguientes comandos para configurar o alterar los colores de la pantalla:
* BORDER n, el color de la zona circundante fuera del mapa de bits principal.
* PAPEL n, el color de fondo (valor de bit de píxel de 0) para que la celda de color se altere.
* INK n, el color de primer plano (valor de bit de píxel de 1) para que la celda de color se altere.
Además, el comando BRIGHT puede usarse para cambiar el ajuste del indicador "brillo" de los comandos PAPER y INK (el I en RGBI), dándoles acceso a toda la paleta de 15 colores. Los ajustes de "0" y "1" activan y desactivan el modo luminoso (respectivamente). Dado que solo se utiliza un bit dentro de un octeto de atributo de color para seleccionar el brillo tanto para los colores de primer plano como de fondo en una celda de color, no es posible seleccionar los modos de color brillo y básico en la misma celda de color. El comando BORDER no utiliza un indicador de brillo, por lo tanto, solo se admiten los ocho colores básicos.
Contando desde el menor al bit más significativo, un byte de atributo dedica tres bits para el color de primer plano, tres bits para el color de fondo, un bit para el indicador de brillo y un bit para el efecto de parpadeo(flash)(lo que provoca que cambien los colores de primer plano y fondo periódicamente).
| Número de color | Valor binario | BRILLO 0(RGB) | BRILLO 1(RGB) | Nombre del color |
| 0 | 000 | #000000 | #000000 | negro |
| 1 | 001 | #0000D7 | #0000FF | azul |
| 2 | 010 | #D70000 | #FF0000 | rojo |
| 3 | 011 | #D700D7 | #FF00FF | magenta |
| 4 | 100 | #00D700 | #00FF00 | verde |
| 5 | 101 | #00D7D7 | #00FFFF | cian |
| 6 | 110 | #D7D700 | #FFFF00 | amarillo |
| 7 | 111 | #D7D7D7 | #FFFFFF | blanco |
Los colores simulados como RGB no tienen brillo al 85% de voltaje (0.55v) y si tienen brillo al 100% (0.65v). La visualización en una pantalla PAL estaría sujeta a la corrección gamma y por ello los valores sin brillo parecerían más claros. Cada modelo de ZX Spectrum usó tensiones diferentes para los colores, por lo que los valores aquí mostrados son sólo indicativos.

### Tramado

Esta paleta de colores tan escasa ha instado a los artistas gráficos (https://zxart.ee/ por ejemplo) a recurrir a diversas técnicas de tramado; El más simple de los cuales emplea patrones ordenados, como se muestra en el gráfico de la derecha. El tramado también funciona muy bien con la conexión de vídeo compuesto a una televisión PAL analógica, generando una mezcla de colores junto con líneas horizontales de píxeles.

## Modo estándar
### Implementación del hardware

El ZX Spectrum original tiene una resolución de pantalla de 256 × 192 píxeles. La información de color se superpone a esto como una cuadrícula de 8 × 8 regiones de píxeles conocidos como bloques de atributo; Dentro de cada bloque de atributo, solo se pueden utilizar dos colores de una paleta de 8 (negro, azul, rojo, magenta, verde, cian, amarillo y blanco). Por otro lado, el bloque de atributo completo puede ser designado como "brillo", dando como resultado un total de 15 colores posibles (tanto el negro brillante como el negro oscuro son del mismo color # 000000). En muchos programas, esta limitación era evidente como una colisión en los atributos.
       Detalles:
       Pixeles: 256 × 192
       Atributos: 32 × 24
       Colores: 15

### Resolución real sobre las conexiones de vídeo compuesto

Debido a las limitaciones de la conexión de vídeo compuesto a un televisor PAL analógico, los píxeles adyacentes se veían borrosos en horizontal (ver artefactos de color en vídeo compuesto). La resolución resultante dependía de la calidad del televisor y de las combinaciones de colores utilizadas por cada imagen en particular, pero en la mayoría de los casos era similar a ~ 128x192. Este efecto se utilizó para aumentar el número de colores visualizados en la pantalla por casi todos los diseñadores gráficos, utilizando técnicas de tramado. De esta forma se llegaba a unos 64 colores aparentes. Algunos emuladores actuales proporcionan algún tipo de procesamiento de desenfoque que intenta simular este efecto.
       Detalles:
       Pixeles: ~128 × 192
       Atributos: 32 × 24
       Colores: ~64 (usando tramado)

### Televisores y monitores monocromos

Mediante un monitor monocromo o TV en blanco y negro (o reduciendo el ajuste de color de un televisor de color), es posible aprovechar las diferencias de intensidad sobre el rango de color del ZX SPECTRUM para generar una imagen en escala de grises de 15 tonos a 256 × 192 resolución.
       Detalles:
       Píxeles: 256 × 192
       Atributos: 32 × 24
       Colores: 15 grises

## Hicolor (atributos 8*1)
### Implementación por hardware

Varios clones de Spectrum de terceros, incluyendo varias de las máquinas de Timex y al Pentagon, soportan un modo de pantalla en el que los bloques de atributo son de 8 × 1 píxeles en lugar de los habituales 8 × 8. Una pantalla en este modo ocupa 12 KB RAM. En el caso del Timex, este modo se activa mediante el comando OUT 255,2. Además, este modo de pantalla puede generarse mediante el uso del hardware DMA(acceso directo a memoria) del sistema de discos MB-02 (la técnica se conoce como Multitech) y también está disponible como Modo 2 en el SAM Coupé.
       Detalles:
       Píxeles: 256 × 192
       Atributos: 32 × 192
       Colores: 15

### Implementación por software
##### Atributos "8x1"

En otros modelos de Spectrum, este efecto puede replicarse recurriendo al hecho de que la ULA vuelve a leer la información de atributo en cada fila de píxeles al generar la salida de vídeo; Es posible escribir un nuevo valor en la posición relevante de la memoria entre líneas sucesivas, y así provocar que se muestre un par de colores diferente. Sin embargo, el procesador del ZX SPECTRUM no es lo suficientemente rápido para escribir en una fila entera de bytes de atributos en una línea de escaneo, por lo que los atributos 8 × 1 solo se pueden obtener en unas 18 columnas. Esta técnica es conocida como Hicolour, Multicolor, FLI o Rainbow Processor .
    Detalles:
    Píxeles: 256 × 192
    Atributos: 32 × 192 (limitado a un área de 18x192)
    Colores: 15

##### Atributos "8x2"

Una variación de este método consiste en cambiar la fila completa de atributos a lo largo de dos líneas de escaneo, dando como resultado bloques de atributo de 8 × 2 píxeles en todo el ancho de la pantalla. En esta situación, la pantalla de sombra del Spectrum 128K (véase más adelante) se utiliza comúnmente como un back-buffer para garantizar que el cambio de color suceda simultáneamente en todos los bytes de atributos.
    Detalles:
    Píxeles: 256 × 192
    Atributos: 32 × 96
    Colores: 15

##### Atributos "4x1"

Un caso especial consiste en alternar entre los dos colores disponibles por celda de atributo por cada 4 píxeles, permitiendo que cada región 4 × 1 sea tratada como un píxel independientemente coloreable (aunque la limitación de un nivel de brillo por celda 8 × 1 siga vigente).
       Detalles:
       Píxeles: 64 × 192
       Atributos: 64 × 192
       Colores: 15

## ULAplus

ULAplus es compatible con el estándar de pantalla de ZX Spectrum, si se utiliza solo para modificar los 16 colores básicos. Sin embargo, cualquier software que utilice los 64 colores completos activará los atributos "flash" del Spectrum original.
       Detalles:
       Pixeles: 256 x 192
       Atributos: 32x24
       Colores: 64 (de 256)
       Máquina: ZX Spectrum SE, Chloe 280SE, ZX-UNO, Sinclair Vega.

## Modos entrelazados / conmutados

Alternando entre dos pantallas en cada interrupción de fotograma( a 50 Hz), teóricamente es posible simular una duplicación de la resolución de visualización vertical de 192 a 384 líneas.
Los clones Timex y el ZX Spectrum 128K implementan un área de pantalla "sombra" que puede ser conmutada mediante el uso de un comando OUT, y esto se utiliza a menudo para cambiar rápidamente entre dos imágenes para este propósito (aunque esto se consigue solo mediante la copia de un bloque, no de toda la pantalla).
Cuando se ve en una pantalla de televisión CRT (el estándar en el momento), el parpadeo es menos notable que en un monitor moderno. La imagen está enlazada (advertencia: la imagen vinculada parpadea muy rápidamente, lo que podría potencialmente causar convulsiones en personas con epilepsia fotosensible).
De hecho, la técnica no consigue una visualización entrelazada real, ya que el Spectrum carece de la capacidad de sincronizar con el hardware de pantalla a un nivel tan bajo. Más bien, el efecto es similar al antialias, con ciertos píxeles que aparecen a media intensidad.
       Detalles:
       Píxeles: 256 × 384
       Atributos: 32 × 24
       Colores: 15

## GigaScreen

Los atributos (colores) de una imagen se alternan a 50 Hz en la pantalla, aprovechando el modo de codificación del sistema PAL para el mezclado. De esta manera, la paleta se incrementa a aproximadamente 36 colores. Para las máquinas como el Pentagon, está disponible una modificación de hardware que combina directamente dos áreas de pantalla alternas en la señal de vídeo, eliminando así el parpadeo asociado con este método. Además, las técnicas Gigascreen y Hicolor pueden emplearse conjuntamente para producir imágenes con colores más ricos; Este formato se ha denominado DithVIDE y BZither, ambos nombres se refieren a los métodos de tramado empleados al convertir imágenes de color verdadero al formato.
       Detalles:
       Píxeles: 256 × 192
       Atributos: 32 × 24
       Colores: 36

## 3 colores / Multicroma / RGB-3 / Intercroma

Tres imágenes separadas, que comprenden una capa roja, verde y azul, se muestran en la pantalla rápidamente, uno tras otro, basándose en la persistencia de visión para fusionar las tres capas en una imagen de un solo color. El resultado es una imagen de 8 colores donde cada píxel puede ser coloreado independientemente. Este efecto se simula en otra imagen vinculada aquí (advertencia: la imagen enlazada cambia de color muy rápidamente, lo que podría potencialmente causar convulsiones en personas con epilepsia fotosensible); El parpadeo es menos perceptible cuando se ve en una pantalla de televisión.
       Detalles:
       Píxeles: 256 × 192
       Atributos: 256 × 192
       Colores: 8

## Emulado
### 256 × 192, 256 colores, " Modo de color 256", sin atributos

Los emuladores SPEC256 y EmuZWin tienen un modo de pantalla 256 × 192 píxeles donde cada píxel puede tener uno de entre 256 colores. Esto se consigue extendiendo el tamaño de palabra del Z80 emulado de 8 bits a 64, haciendo disponibles ocho bits de datos para cada píxel; La pantalla ocupa así 48 kB de memoria. Este modo solo existe en el emulador y el software gráfico debe de ser modificado para utilizarlo.
       Detalles:
       Píxeles: 256 × 192
       Atributos: 256 × 192
       Colores: 256

## Máquinas compatibles

Máquinas posteriores compatibles con ZX Spectrum ofrecían modos de video adicionales. Estos se basan en el modo estándar 256x192 pero son incompatibles con el Spectrum original.

### 512 × 192 monocromo

Este modo se utilizó principalmente para mostrar pantalla de texto de 64 × 24 u 80 × 24 columnas y solo los ordenadores Timex Sinclair 2068 y algunos clones rusos pueden mostrarlo. Hay dos editores gráficos para este modo y es compatible con BASIC64 y algunas implementaciones del CP/M. También ocupa 12 kB (12 KiB) RAM.
       Detalles:
       Píxeles: 512 × 192
       Atributos: ninguno
       Colores: 2 (de 16)
       Máquina: Timex Sinclair

### 512 × 192x4

       Detalles:
       Píxeles: 512 × 192
       Atributos: 512 × 192
       Colores: 4 (de 128) por línea
       Máquina: Sam Coupé

### Layer/capa 2 (256*192*256)

       Detalles:
       Píxeles: 256 × 192
       Atributos: 256 × 192
       Colores: 256
       Máquina: ZX Spectrum Next

### 256 x 192 x 16

       Detalles:
       Píxeles: 256 × 192
       Atributos: 256 × 192
       Colores: 16 (de 128) por línea
       Máquina: Sam Coupé

### 384x304x16

       Detalles:
       Píxeles: 384 x 304
       Atributos: 48 × 38
       Colores: 16
       Máquina: Pentagon

### 512x384x2

       Detalles:
       Píxeles: 512x384
       Colores: monocromo
       Máquina: Pentagon, Timex Sinclair 2068

### 16c

       Detalles:
       Pixeles: 256 x 192
       Atributos: 256x192
       Colores: 16
       Máquina: ATM Turbo, Pentagon

### HAM256

       Detalles:
       Pixeles: 256 x 192
       Atributos: 32x192
       Colores: 32 por línea (de 256)
       Máquina: ZX Spectrum SE, Chloe 280SE, ZX-UNO (Sinclair Vega no lo soporta porque la emulación no permite el cambio de paleta durante la generación de la imagen, solo durante el retrazo vertical)

### Radastan

Modo a 128*96 con píxeles de tamaño doble. Cada píxel tiene un color. Los píxeles se almacenan en un búffer como cadenas de 4 bits(cada byte contendría 2 pixeles). Este búffer tiene un tamaño de 6144 bytes, ocupando la misma memoria ram que una imagen a 256*192.
       Detalles:
       Pixeles: 128x96
       Atributos: cada píxel tiene un color propio
       Colores: 16 (de entre 256)
       Máquina: ZX-Uno