
El conflicto de atributos (también conocido como conflicto de color o sangrado ) es un artefacto visual causado por las limitaciones de los circuitos gráficos de algunos ordenadores domésticos de 8 bits a color , especialmente el ZX Spectrum , donde solo se podían usar dos colores en cualquier mosaico de 8x8 píxeles. Este efecto también era perceptible en el software de MSX y en algunos títulos de Commodore 64. Existen soluciones para evitar que esta limitación se haga evidente.
Causas
El conflicto de atributos en el ZX Spectrum se debía a su peculiar diseño de memoria de pantalla, concebido para minimizar el uso de memoria del búfer de fotogramas y optimizar la visualización de texto en lugar de gráficos. En lugar de limitar la paleta de colores para ahorrar memoria, el diseño de Sinclair almacenaba la información de color y el mapa de bits de los píxeles en áreas separadas de la memoria. Mientras que el mapa de bits especificaba el estado de los píxeles individuales (encendido o apagado), la información de color (o "atributos") correspondía a la matriz de caracteres de texto (24 filas de 32 columnas), con un byte por celda de caracteres de 8x8 píxeles. Este byte codificaba dos valores de 3 bits, conocidos como INK (color de primer plano) y PAPER (color de fondo), según las instrucciones BASIC utilizadas para definir los valores de color. Un atributo incluía otros dos valores binarios: un bit BRIGHT que indicaba uno de los dos niveles de brillo para los dos colores, y un bit FLASH , que, al activarse, hacía que los dos colores se intercambiaran a intervalos regulares. Este esquema proporcionaba 15 colores diferentes: las ocho combinaciones de rojo, verde y azul en dos niveles de brillo (excepto el negro, que se veía igual en ambos niveles). Por lo tanto, cada bloque de 8×8 píxeles solo podía contener 2 colores de los 15 disponibles, los cuales debían pertenecer a la mitad BRILLANTE o a la mitad NO BRILLANTE de la paleta. Intentar añadir un tercer color en un área de 8×8 píxeles sobrescribiría uno de los colores anteriores.
El ZX Spectrum utilizaba 6144 bytes para el mapa de bits, donde un byte representaba ocho píxeles, y 768 bytes para los atributos de color. Esto da un total de 6912 bytes para toda la pantalla gráfica, una cantidad relativamente pequeña para un ordenador de la época del Spectrum con capacidad de "color". Esta arquitectura gráfica se mantuvo hasta los rediseños posteriores del Spectrum por parte de Sinclair y Amstrad , hasta el último modelo de Amstrad, el ZX Spectrum +3, a pesar de que los modelos posteriores contenían 128 KiB de RAM, lo que redujo la necesidad de ahorrar memoria de esta manera. La arquitectura se mantuvo para evitar la pérdida de retrocompatibilidad .
Los atributos se utilizaban en diversos ordenadores y consolas, como el Commodore 64 , el MSX y la NES , aunque el tamaño de los bloques de atributos y el número de colores por bloque variaban. Sin embargo, con el uso de sprites de hardware , se podía evitar el conflicto de atributos.
Los microordenadores Thomson MO5 y TO7 , el Oric 1 , la arquitectura MSX 1 y otros sistemas basados en el controlador de pantalla de vídeo Texas Instruments TMS9918 presentan una limitación muy similar: para cada grupo de ocho píxeles horizontalmente, solo hay dos colores disponibles de 16, lo que produce un efecto similar, aunque menos severo, que con el Spectrum. El MSX 1 no disponía de un único byte de atributo de color para un área completa de 8×8 píxeles, como ocurría con el Sinclair Spectrum, sino de ocho, con un byte de atributo para cada grupo de 8×1 píxeles. Así, mientras que el Spectrum estaba limitado a un par de colores para un área cuadrada de 8×8 píxeles, el MSX 1 solo estaba limitado a un par de colores para una "línea" de ocho píxeles adyacentes. Además, el MSX 1 podía usar sprites que no estaban sujetos a problemas de conflicto de atributos (aunque los sprites del MSX 1 tenían sus propias limitaciones, como ser monocromos).
Efectos

Para evitar conflictos de atributos, las pantallas gráficas estáticas debían diseñarse con sumo cuidado. Los gráficos a color con gran detalle eran imposibles, ya que el color solo podía aplicarse en bloques de 8x8 píxeles. Un diseño meticuloso permitía obtener resultados impresionantes, al igual que la sincronización de los cambios de color con la frecuencia de actualización de la pantalla, generalmente un televisor.
Sin embargo, las animaciones resultaban más difíciles de manejar, una clara desventaja en una máquina cuyo uso principal era jugar videojuegos . Si tan solo un píxel de un bloque de 8x8 cambiaba de color debido al contacto con una parte móvil de la pantalla, todo el bloque cambiaba de color. Por lo tanto, los gráficos en movimiento con gran detalle provocaban que aparecieran grandes y antiestéticas franjas de colores que cambiaban rápidamente.
Soluciones alternativas
El software inicial simplemente ignoraba el problema. Posteriormente, la solución habitual consistía en usar color para los elementos estáticos de la pantalla, como un borde decorativo que podía incluir la partitura o algún tipo de instrumentación, con un área monocromática central más pequeña que contenía todos los gráficos animados. Esto también aceleraba la carga de los gráficos, ya que se actualizaba menos superficie de la pantalla: una región más pequeña y, además, solo se modificaba la información de los píxeles, dejando intacta la zona de color.
Algunos programas para Spectrum, como Light Force de FTL , empleaban un diseño gráfico extremadamente cuidadoso para lograr gráficos en movimiento a todo color, limitando tanto el diseño de los elementos en pantalla como sus trayectorias a una resolución de color de 8x8 píxeles. Por lo tanto, los elementos en movimiento eran relativamente grandes y de forma algo tosca o cuadrada, y su movimiento estaba restringido, pero esto no era visualmente evidente y la visión de gráficos en movimiento a todo color resultaba sumamente impresionante para los usuarios de Spectrum.
Ningún desarrollador convencional fue capaz de encontrar una solución integral adecuada para el problema del conflicto de atributos, prefiriendo en cambio utilizar el método de gráficos monocromáticos cuando se necesitaban gráficos rápidos y claros, y gráficos a todo color cuando la situación lo permitía.
Prestando mucha atención a la sincronización, era posible modificar el área de atributos de la RAM en momentos específicos mientras se dibujaba la pantalla: se permitía que el hardware de visualización dibujara una línea y, a continuación, se cambiaba la RAM de atributos antes de dibujar la siguiente, para así lograr el efecto de diferentes atributos para cada línea. Estos cambios debían realizarse mediante software y su programación era laboriosa, por lo que esta técnica solía limitarse a efectos especiales. Esta técnica también fue muy popular en la demoscene .
El problema y las soluciones
La mayoría de los juegos anteriores a 1987 ignoraban el choque de atributos. Algunos juegos posteriores, como Knight Tyme y Three Weeks in Paradise, permitían a los jugadores seleccionar entre dos modos de choque de atributos: uno que ignoraba los atributos del personaje principal, integrando al personaje en el fondo, y otro que priorizaba la combinación de colores del personaje sobre las imágenes de fondo.
Otra solución consistía simplemente en renderizar los gráficos en dos colores, lo que se conoce como monocromo, como se hizo con la versión de Knight Lore para Spectrum en 1984.
Muchos juegos utilizaban fondos a todo color y el desplazamiento de personajes (donde el entorno se desplazaba de ocho píxeles en ocho píxeles), pero los sprites monocromáticos, que eran prácticamente transparentes, como en Double Dragon , se dibujaban de forma que destacaran, evitando la dependencia del color. Muchos juegos empleaban este método con un desplazamiento suave píxel a píxel, pero el choque de atributos al pasar elementos de un bloque de personajes al siguiente era claramente visible.
Un ejemplo destacado (aunque menos exitoso) del uso de gráficos a todo color fue la conversión de Altered Beast para Spectrum . El juego sufre de un considerable conflicto de atributos.
El programador Don Priestley desarrolló un estilo distintivo para varios de sus juegos mediante el uso de sprites grandes, de estilo caricaturesco, cuidadosamente diseñados para abarcar bloques de personajes completos sin parecer excesivamente cuadrados. Una desventaja de esta técnica era que la jugabilidad debía diseñarse en función de los gráficos, por lo que no resultaba útil para las adaptaciones de otras plataformas. Entre los juegos que utilizaron esta técnica se encuentran Popeye , The Trap Door , Through the Trapdoor y Flunky . Otros desarrolladores que emplearon una técnica similar fueron Mike Singleton , con Dark Sceptre , y Gang of Five, con Dan Dare: Pilot of the Future .
Referencias
- "Preguntas frecuentes: Referencia" . WorldOfSpectrum.org .
- Surman, David. "Arcade Colour, Illustration and Attribute Clash 1979–89" . Academia.edu . Consultado el 4 de junio de 2025 .
- Smith, Tony (23 de abril de 2012). "Feliz 30 cumpleaños, Sinclair ZX Spectrum" . The Register .
- artefactos gráficos por computadora
- ZX Spectrum