stringtranslate.com

Choque de atributos

El efecto del choque de atributos en sistemas MSX 1 cuando se utiliza el modo de alta resolución 256×192 de MSX 1 (en este ejemplo, bloques de 8×1 píxeles comparten el mismo color de primer plano, por lo que el efecto es similar a un ZX Spectrum)

El choque de atributos (también conocido como choque de colores o sangrado ) es un artefacto de visualización causado por limitaciones en los circuitos gráficos de algunas computadoras domésticas de 8 bits en color , más notablemente el ZX Spectrum , donde significaba que solo se podían usar dos colores en cualquier 8. ×8 mosaico de píxeles. El efecto también fue notable en el software MSX y en algunos títulos de Commodore 64 . Desde entonces, se han considerado soluciones alternativas para evitar que este límite se haga evidente como un elemento de la cultura del programador de Spectrum.

Este problema también ocurre con los "modos semigráficos" (modos de texto con características gráficas) de Color Computer y Dragon , pero esos equipos también tienen gráficos sin atributos y con mejor resolución. Varias consolas de videojuegos de la época tenían modos de vídeo que causaban tales limitaciones, pero generalmente permitían más de dos colores por mosaico: la NES (Famicom) tenía solo un modo, que también era "semigráfico", y permitía cuatro colores por 16 × 16 "bloques" (grupo de cuatro mosaicos de 8 × 8) pero 16 por pantalla. La Super NES permitía 16 colores por mosaico pero 256 por pantalla (entre otras mejoras), y esto hizo que el artefacto fuera mucho más difícil de notar, si es que lo notaba (excepto para aquellos que tenían que programar el dispositivo).

Causas

El choque de atributos en el ZX Spectrum fue causado por su diseño idiosincrásico de la memoria de visualización, diseñado de tal manera que minimice el uso de memoria del frame buffer y optimice la visualización de texto en lugar de gráficos. En lugar de limitar la paleta de colores para conservar la memoria, el diseño de Sinclair almacenó mapas de bits de píxeles e información de color en áreas separadas de la memoria. Mientras que el mapa de bits especificaba el estado de los píxeles individuales (ya sea activado o desactivado), 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 codificó dos valores de 3 bits, conocidos como INK (color de primer plano) y PAPER (color de fondo) después de las instrucciones BÁSICAS utilizadas para definir los valores de color. Se incluyeron otros dos valores binarios en un atributo; un bit BRIGHT que indica uno de los dos niveles de brillo para los dos colores, y un bit FLASH que, cuando se establece, provoca que los dos colores se intercambien a intervalos regulares. Este esquema proporcionó 15 colores diferentes: las ocho combinaciones de rojo, verde y azul en dos niveles de brillo (excepto el negro, que parecía igual en ambos niveles de brillo). Por lo tanto, cada bloque de 8x8 píxeles solo podría contener 2 colores de los 15 disponibles, los cuales deben ser ambos de la mitad BRILLANTE o no BRILLANTE de la paleta. Intentar agregar un tercer color en un área de 8x8 píxeles sobrescribiría uno de los colores anteriores.

El ZX Spectrum usó 6144 bytes para el mapa de bits, donde un byte representa ocho píxeles, y usó 768 bytes para los atributos de color. Esto da un total de 6912 bytes para toda la pantalla gráfica, un total relativamente pequeño para una computadora de la era del Spectrum con capacidades de "color". Esta arquitectura gráfica se mantuvo hasta los rediseños posteriores del Spectrum de Sinclair y Amstrad , hasta el modelo final 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 compatibilidad con versiones anteriores .

Los atributos fueron utilizados por una variedad de otras computadoras y consolas, incluidas la Commodore 64 , la MSX y la NES , aunque el tamaño de los bloques de atributos y la cantidad de colores por bloque variaban. Sin embargo, con el uso de sprites de hardware , se podría evitar el choque de atributos.

Los microordenadores Thomson MO5 y TO7 , el Oric 1 , la arquitectura MSX 1 y otros sistemas basados ​​en el controlador de visualización de vídeo TMS9918 de Texas Instruments presentan una limitación muy similar: para cada grupo de ocho píxeles en horizontal, sólo están disponibles dos colores de 16 , dando un efecto similar pero menos severo que con el Spectrum. El MSX 1 no tenía un solo byte de atributo de color disponible para un área completa de 8x8 píxeles, como era el caso del Sinclair Spectrum, sino 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 8x8 píxeles, el MSX 1 sólo estaba limitado a un par de colores para una "línea" de ocho píxeles adyacentes. Además, MSX1 podía utilizar sprites que no estuvieran sujetos a ningún problema de conflicto de atributos (aunque los sprites de MSX 1 sí tenían sus propias limitaciones, como ser monocromáticos).

En la práctica, esta ventaja técnica a menudo no ayudaba a los sistemas MSX 1 a producir mejores imágenes. El problema para el MSX 1 fue que muchas compañías de software europeas que convirtieron los juegos de Spectrum a MSX 1 ignoraron todas las mejoras que el MSX 1 tenía sobre el Spectrum y, por lo tanto, las versiones resultantes de MSX 1 tuvieron la misma cantidad de conflictos de atributos que los juegos de Spectrum originales. ( Jack the Nipper II: In Coconut Capers es un ejemplo de esto). Para facilitar la conversión, los desarrolladores de software simplemente copiaron el valor de byte de atributo único del Spectrum a los ocho bytes de atributo correspondientes del MSX 1. Por la misma razón, las compañías de software también ignoraron las capacidades de sprites del MSX 1, y debido a que el vídeo Por lo demás, las capacidades de visualización eran bastante similares (resolución de 256 × 192, 16 colores), ambos sistemas produjeron pantallas prácticamente idénticas para el mismo juego. Por el contrario, los juegos japoneses de MSX 1 [ ¿cuáles? ] utilizó todas las capacidades de MSX 1, lo que a menudo resultó en juegos más atractivos [ cita necesaria ] .

Efectos

Para evitar conflictos de atributos, las pantallas gráficas estáticas debían construirse con cuidado. Los gráficos en color con gran detalle eran imposibles, ya que el color sólo se podía aplicar en bloques de 8×8 píxeles. Un diseño cuidadoso podría lograr resultados impresionantes, al igual que sincronizar los cambios de color con la frecuencia de actualización de la pantalla, generalmente un televisor.

Sin embargo, las pantallas animadas eran más difíciles, un claro inconveniente en una máquina cuyo uso principal era jugar videojuegos . Si solo se cambiara el color de un píxel en un bloque de 8 × 8 porque una parte móvil de la pantalla lo tocara, todo el bloque cambiaría de color. Así, los gráficos en movimiento detallados provocaban que grandes franjas feas de colores que cambiaban rápidamente los siguieran.

Soluciones alternativas

Los primeros software simplemente ignoraron el problema. Posteriormente, la solución estándar fue utilizar color para elementos de visualización estáticos (como un borde decorativo alrededor de los bordes de la pantalla, que podría incluir visualizaciones de partituras, etc., o alguna forma de instrumentación) con un área monocromática central más pequeña que contenía todos los elementos. gráficos animados. Esto también hizo que los gráficos fueran más rápidos, ya que era necesario actualizar menos parte de la pantalla: una región más pequeña, además de cambiar solo la información de los píxeles y dejar intacta el área de color.

Algunos programas de Spectrum, como Light Force de FTL , utilizaron un diseño gráfico extremadamente cuidadoso para lograr gráficos en movimiento a todo color, esencialmente limitando tanto el diseño de los elementos en pantalla como sus trayectorias de movimiento a límites de resolución de color de 8×8. Por lo tanto, los elementos móviles eran relativamente grandes y más bien en bloques o cuadrados, y su movimiento estaba limitado, pero esto no era visualmente obvio y la vista de gráficos en movimiento a todo color fue enormemente impresionante para los propietarios de Spectrum.

Ningún desarrollador convencional pudo encontrar una solución integral adecuada para el problema del conflicto de atributos, sino que prefirió 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.

Fue posible, prestando especial atención al tiempo, modificar el área de atributos de la RAM en ciertos momentos específicos mientras se dibujaba la pantalla: deje que el hardware de la pantalla dibuje una línea de la pantalla, luego cambie el atributo de RAM antes de que se dibuje la siguiente línea para dar el efecto de diferentes atributos para cada línea individual. Estos cambios debían realizarse en software y su programación requería mucho tiempo, lo que significaba que esta técnica generalmente se limitaba 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 ignoraron el choque de atributos. Algunos juegos posteriores, como Knight Tyme y Three Weeks in Paradise, permitieron a los jugadores seleccionar entre dos modos de choque de atributos: uno que ignoraba los atributos del personaje principal, fusionando al personaje con el fondo y viceversa, priorizando la combinación de colores del personaje sobre las imágenes de fondo. .

Otra solución fue simplemente renderizar los gráficos en dos colores, también conocidos como monocromáticos, como se hizo con la versión Spectrum de Knight Lore en 1984.

Muchos juegos usaban fondos a todo color y "desplazamiento de personajes" (donde el entorno se desplazaba ocho píxeles a la vez), pero los sprites monocromáticos que eran efectivamente transparentes, como en Double Dragon , se dibujaron de tal manera que se destacaran, evitando dependencia del color. Muchos juegos utilizaron este método con un desplazamiento suave píxel a píxel, pero el choque de atributos cuando los elementos de un bloque de caracteres se "pasaban" al siguiente era claramente visible.

Un ejemplo destacado (y menos exitoso) del uso de gráficos a todo color fue la conversión de Spectrum de Altered Beast . El juego sufre un considerable choque de atributos.

El programador Don Priestley desarrolló un estilo distintivo para varios de sus juegos mediante el uso de grandes sprites parecidos a dibujos animados que fueron cuidadosamente diseñados para abarcar bloques completos de personajes sin que parezcan excesivamente cuadrados. Una desventaja de esta técnica era que la jugabilidad tenía que diseñarse en torno a los gráficos, por lo que no era útil para ports de otras plataformas. Los juegos que utilizaron esta técnica incluyeron Popeye , The Trap Door , Through the Trapdoor y Flunky . Otros desarrolladores que utilizaron una técnica similar fueron Mike Singleton , con Dark Sceptre , y Gang of Five, con Dan Dare: Pilot of the Future .

En 1994, el programador Igor Maznitsa desarrolló una plataforma conceptual de múltiples CPU "ZX-Poly" basada en ZX-Spectrum-128; la plataforma permite evitar conflictos de atributos e incluso puede colorear muchos juegos antiguos sin cambios en el código ejecutable.

Referencias