lunes, 16 de enero de 2012

Retroinformática: Colisión de atributos

La colisión de atributos, también conocido como colisión de colores o sangrado de colores, era un efecto que se producía al dibujar gráficos con los primeros ordenadores de 8 bits, especialmente en el Sinclair ZX Spectrum.

Spectrum Double Dragon.png
Los precarios circuitos gráficos de la época y la gestión de memoria de vídeo de estos ordenadores, eran incapaces de dibujar más de dos colores por área de 8x8 pixeles, lo que producía el desagradable efecto que podemos ver en la captura del Double Dragon para ZX Spectrum a la izquierda de estas líneas.






En los primeros juegos para ordenadores domésticos, el problema existía y simplemente era ignorado, pero conforme la calidad de los juegos aumentaba, los programadores empezaron a buscar maneras de evitar este efecto y mejorar así la calidad gráfica del producto.

Una de las maneras para conseguir gráficos a todo color, consistía en sincronizar los refrescos de color con los refrescos de la televisión, que era generalmente el monitor de los ordenadores para casa de la época. Este sistema ofrecía unos muy buenos resultados para imagenes fijas, pero no tenía ninguna utilidad cuando se trabajaba con imagenes en movimiento ya que si uno solo de los píxeles del bloque de 8x8 se re-coloreaba en la animación, el bloque completo se volvía del mismo color, anulando todo el esfuerzo anterior.

Knight lore 3.gif
Esta solución fue adoptada principalmente en la demoscene, donde con unos pocos trucos, muchísima calidad de programación y prestando mucha atención al dibujo de cada  línea, se consiguieron efectos muy interesantes para un sistema gráfico tan básico.

Otra solución fue hacer juegos monocromo con información estática alrededor de la pantalla en la que se podía leer la puntuación, vidas restantes, nivel...

Esta técnica presentaba la desventaja de ser visualmente pobre ya que aunque los juegos corrian  bastante más rápido (al hacer la zona de scroll más pequeña) y evitaba el problema, los resultados terminaban siendo muy cansados para la vista. Y eso que hay muchos títulos míticos que usaron esta técnica.



ZX trapdoor1.pngAlgunos programadores optaron por adaptar los juegos al problema y desarrollaron gráficos que aprovechaban la totalidad de los 8x8 pixeles, y esforzandose para que los gráficos no parecieran completamente cuadrados. Es el ejemplo de 'The Trap Door', programado por Don Priestley . La desventaja de esta técnica consistía en que había que desarrollar el juego alrededor de los gráficos y no al revés como es habitual.


Otro de los ordenadores de la época, el mítico MSX, también estaba afectado por el problema, aunque en mucha menor medida, ya que los bloques que sufrían de colisión de atributos eran de 8x1 pixeles en vez de los famosos 8x8. MSX también tenía la posibilidad de utilizar sprites, lo cual evitaba completamente el problema (aunque tenía otras limitaciones).

La diferencia gráfica era abismal en el momento, y los poseedores de un MSX eramos la envídia de nuestros amigos, nuestros juegos eran visualmente mejores y además cargaban desde cartucho sin esperar media hora.




Pero con el port masivo de juegos, MSX sufrió como el que más, ya que las compañias de software no se esforzaron en utilizar las ventajas que MSX y los sprites les daban, sino que directamente copiaban y pegaban el sotware de Spectrum, con lo que el problema aparecía igualmente en el MSX y los juegos portados, que tenían todos los defectos de la máquina para la que habían sido escritos.

Hoy en día es fácil hablar de juegos con gráficos multitexturizados, sombras realistas y efectos de todo tipo, pero los pioneros en videojuegos tuvieron que adaptarse a un hardware que estaba muy limitado para sacar adelante auténticas obras maestras que mantuvieron pegados a la tele a miles de niños y no tan niños de hace 30 años.

Fuente: Wikipedia, archivos MSX y Spectrum

4 comentarios:

  1. Es curioso, pero los niños spectruneros de entonces no concebiamos un ordenador sin atribute clash de alguna forma. Ya en aquella epoca habia ordenadores que usaban la estrategia de asignar colores individuales a los pixels, pero en general era muy limitado, 4 colores en baja resolucion y monocromo en alta resolucion. Por ello, no eran muy vendidos.

    Asi que el tema de los atributos era una de las tecnicas mas populares para tener color sin que la simple memoria de video se comiera todo la RAM disponible. Un spectrum con 16 colores por pixel (el spectrum tenia 8 colores con 2 brillos, asi que mas o menos se puede decir que tenia 16 colores) necesitaria 6 Kb x 4 = 24 kb, la mitad de la memoria solo para la memoria de video, quedaria muy poco sitio para programas.

    Lo que jorobaba al spectrum es que no tenia modo de evitar el atribute clash. El MSX o el C64 tenian los sprites, por ejemplo, que facilitaban mucho la creacion de juegos "limpios".

    De todas formas, hay que recordar que por aquella epoca, el PC no tenia graficos ningunos (en general) y el primer Mac era monocromo. El "super" color no llego hasta los ordenadores domesticos de 16 bits como el QL, el Atari ST y sobre todo el Amiga.

    ResponderEliminar
  2. Por cierto, tengo entendido que habia un software en aquella epoca que hacia una conversion automatica de un juego de spectrum a MSX. Aqui en Europa se usaba mucho, asi que las conversiones de muchos juegos a MSX eran bastante truñosas. MSX tuvo bastante exito en España, asi que Dinamic, Topo y usaron mucho la maquinita de convertir.

    ResponderEliminar
  3. buf, menudos recuerdos al ver el "penguin adventure"... horas y horas de viciadas... la gorra voladora, las zapatillas para correr mas

    y que nunca me lo llegara a acabar entero...

    ResponderEliminar
  4. Anonimo, yo me pase varias veces el penguin adventure, en ocasiones eras suficientemente rápido y la princesa aún estaba viva y creo que te casabas con ella... en otras ocasiones era demasiado tarde y no podías salvarla con la manzana de oro :) un juegazo

    ResponderEliminar