Amigos,
Muchos amigos me han preguntado ¿por qué los juegos de ZX Spectrum se ven con dos colores? ¿Por qué los personajes son transparentes? o ¿Por qué se mezclan los colores?
La respuesta: ahorro!!!
Ejemplo: Personaje de Yie ar Kung Fu es transparente y toma los colores del fondo.

A continuación, trataré de explicar el display del ZX Spectrum:
El ZX Spectrum usa un método conocido como "memory-mapped display file". Esto significa que la pantalla está mapeada a direcciones de memoria, por ejemplo: si se escribe un valor en la dirección 16384 (ej: POKE 16984,255) se va a ver un cambio inmediato en la pantalla.
La pantalla del ZX Spectrum está formada por 256x192 pixeles.
En un sistema monocromo un pixel puede tener dos valores 0 ó 1, por lo tanto se necesita sólo un bit para representarlo, entonces se necesita: 256x192x1bit= 6144 bytes de memoria visual.
Si queremos usar 16 colores se necesitan 4 bits para representar todas la combinaciones, entonces se necesitan 256x192x4bit= 24576 bytes.
Los 24K eran demasiada memoria y encarecían demasiado el ZX Spectrum... lo que hicieron entonces fue diseñar un sistema simple y económico que permitiera desplegar múltiples colores en un pixel sin tener que usar mucha memoria...
El método fue: dividir la pantalla en caracteres. Cada caracter correspondía a una matriz de 8x8 pixeles. Una pantalla tenía 24 filas y 32 columnas, es decir, 768 caracteres.
Cada caracter podía tener los siguientes atributos:
- INK: color si un pixel estaba a uno (3 bits)
- PAPER: color si un pixel estaba a 0 (3 bits)
- BRIGHT: indica si se debía aplicar brillo (1 bit)
- FLASH: indica si el caracter está parpadeando (1 bit).
================
Total= 8 bits por caracter
Nota: El flash intercambia el INK y el PAPER de un caracter constantemente.
Es decir los colores de 8x8 pixeles (64 pixeles) podían tener sólo 1 INK, 1 PAPER, BRIGHT o FLASH común a todos ellos.
Con esto la memoria necesaria para almacenar la pantalla completa era: 6144 bytes (pixeles) + 768 bytes (atributos) = 6912 bytes!!! Sólo un 12% más que un sistema monocromo.
Dado que los pixeles no podían tener colores en forma individual, cuando un personaje de un juego se movía hacia un objeto de otro color se producía un "choque de colores" tan característico en los juegos del ZX Spectrum.
Ejemplo: personaje de 3 Weeks in Paradise cambia el color de la planta.

Para evitar esto muchos desarrolladores decidieron hacer juegos con dos colores. Un ejemplo clásico de buen gusto es la técnica Filmation de Ultimate (hoy RARE) que utiliza sólo dos colores para la porción de pantalla donde se produce la acción:

Para los que le interese:
- Direcciones de los pixeles: 16384 a 22527
- Direcciones de los atributos: 22528 a 23295
Cabe destacar que otros sistemas usaban otras técnicas, tales como el uso de sprites para ahorrar en memoria visual. El ZX Spectrum no soporta sprites en hardware.
A continuacion la patente que se presentó por el display del ZX Spectrum, donde se indica el ahorro de memoria para un display en colores y alta resolución:

Más información sobre esta patente
aquí.
Este post fue publicado originalmente en Atarichile.
Saludos
JF