Hold-And-Modify , generalmente abreviado como HAM , es un modo de visualización de la computadora Commodore Amiga . Utiliza una técnica muy inusual para expresar el color de los píxeles, lo que permite que aparezcan en la pantalla muchos más colores de los que serían posibles de otro modo. El modo HAM se usaba comúnmente para mostrar fotografías digitalizadas o fotogramas de video, arte de mapa de bits y ocasionalmente animación. En el momento del lanzamiento del Amiga en 1985, esta pantalla casi fotorrealista no tenía precedentes para una computadora doméstica y fue ampliamente utilizada para demostrar la capacidad gráfica del Amiga. Sin embargo, HAM tiene importantes limitaciones técnicas que impiden que se utilice como modo de visualización de propósito general.
Fondo
El chipset Amiga original utiliza una pantalla plana con un espacio de color RGB de 12 bits que produce 4096 colores posibles.
El mapa de bits del campo de juego se mantuvo en una sección de la memoria principal conocida como chip RAM , que se compartía entre el sistema de visualización y la CPU principal . El sistema de visualización usualmente usaba un sistema de color indexado con una paleta de colores .
El hardware contenía 32 registros que podían configurarse en cualquiera de los 4096 colores posibles, y la imagen podía acceder a hasta 32 valores usando 5 bits por píxel. El sexto bit disponible podría ser utilizado por un modo de visualización conocido como Extra Half-Brite que redujo la luminosidad de ese píxel a la mitad, proporcionando una manera fácil de producir efectos de sombreado. [1]
Modo de mantener y modificar
El chipset Amiga se diseñó utilizando un modelo de color HSV ( tono , saturación y luminancia ), como era común en los primeros ordenadores domésticos y consolas de juegos que dependían de televisores para su visualización. HSV se asigna más directamente al espacio de color YUV utilizado por los televisores en color NTSC y PAL , lo que requiere una conversión electrónica más simple en comparación con la codificación RGB .
La televisión en color, cuando se transmite a través de un enlace de video compuesto o RF , utiliza un ancho de banda de croma mucho más reducido (codificado como dos componentes de diferencia de color, en lugar de tono + saturación) en comparación con el tercer componente, luma . Esto reduce sustancialmente la memoria y el ancho de banda necesarios para una determinada fidelidad de visualización percibida, al almacenar y transmitir la luminancia a resolución completa, pero la crominancia a una resolución relativamente más baja, una técnica compartida con técnicas de compresión de imágenes como JPEG y MPEG , así como en otros modos de vídeo basados en HSV / YUV, como la codificación YJK del chip V9958 MSX-Video (utilizado por primera vez en MSX2 + ).
La variante de codificación HSV utilizada en la forma original de HAM permitió priorizar la actualización de la información de luminancia sobre el tono y particularmente la saturación, cambiando entre los tres componentes según sea necesario, en comparación con el entrelazado más regular de luma (Y) de resolución completa con individual Cromas de media resolución o un cuarto de resolución (U + V) como se utilizan en los estándares de vídeo digital posteriores. Esto ofreció considerables beneficios de eficiencia sobre RGB.
A medida que el diseño de Amiga migró de una consola de juegos a una computadora doméstica de uso más general , el conjunto de chips de video se cambió de HSV al modelo de color RGB moderno , aparentemente negando gran parte de los beneficios del modo HAM. El líder del proyecto Amiga, Jay Miner, relata:
Hold and Modify vino de un viaje para ver simuladores de vuelo en acción y tuve una especie de idea sobre un tipo primitivo de realidad virtual . NTSC en el chip significaba que podía mantener el tono y cambiar la luminancia alterando solo cuatro bits. Cuando cambiamos a RGB, dije que ya no era necesario porque no era útil y le pedí al encargado del diseño del chip que se lo quitara. Regresó y dijo que esto dejaría un gran agujero en el medio del chip o tomaría un rediseño de tres meses y no podíamos hacer eso. No pensé que nadie lo usaría. Me equivoqué de nuevo, ya que eso realmente le ha dado al Amiga su ventaja en términos de paleta de colores.
La forma final de Hold-And-Modify fue, en términos de hardware, funcionalmente igual que el concepto HSV original, pero en lugar de operar en esos tres componentes descriptivos (principalmente priorizando el componente V), modifica uno de los tres canales de color RGB. . HAM puede considerarse una técnica de compresión con pérdida , similar en funcionamiento y eficiencia a JPEG menos la etapa DCT ; en el modo HAM6, un campo de reproducción efectivo de 4096 colores (12 bits) se codifica en la mitad de la memoria que normalmente se requeriría, y HAM8 lo reduce aún más, a aproximadamente un 40%. Sin embargo, hay una recompensa por esta compresión simplista: se logra una mayor fidelidad general del color a expensas de los artefactos horizontales, causados por la incapacidad de establecer un solo píxel en un valor arbitrario de 12 (o 18, 24) bits. En el extremo, se pueden necesitar tres píxeles para cambiar de un color a otro, lo que reduce la resolución efectiva en ese punto de un modo de "320 píxeles" a aproximadamente "106 píxeles" y hace que las manchas y las sombras se extiendan a lo largo de una línea de exploración. a la derecha de una característica de alto contraste si los 16 registros de paleta disponibles resultan insuficientes.
La "descompresión" del espacio de color codificado por HAM se logra en tiempo real mediante el hardware de visualización, a medida que se muestran los datos del búfer de gráficos. Cada píxel codificado actúa como un índice normal para los registros de la paleta de colores o como un comando para alterar directamente el valor contenido en el DAC de salida (algo así como actualizar solo un tercio del registro de la paleta activa), y se actúa inmediatamente como tal como pasa a través del chipset.
Uso
Cuando se lanzó el Amiga en 1985, el modo HAM ofrecía una ventaja significativa sobre los sistemas de la competencia. HAM permite la visualización de los 4096 colores simultáneamente, aunque con las limitaciones antes mencionadas. Esta pantalla pseudo-fotorrealista no tenía precedentes para una computadora doméstica de la época y permitía la visualización de fotografías digitalizadas e imágenes 3D renderizadas. En comparación, el entonces estándar IBM-PC EGA permitía 16 colores en pantalla de una paleta de 64. El sucesor de EGA, VGA, lanzado en 1987 con su modo de juegos insignia, Mode 13h , permitía 256 colores en pantalla de 262.144. El modo HAM se usaba con frecuencia para demostrar la capacidad de Amiga en exhibiciones de tiendas y presentaciones comerciales, ya que el hardware de la competencia no podía igualar la profundidad de color. Debido a las limitaciones descritas anteriormente, HAM se utilizó principalmente para la visualización de imágenes estáticas y los desarrolladores evitaron en gran medida su uso con juegos o aplicaciones que requieren animación.
Con la introducción de la Arquitectura Gráfica Avanzada, una imagen plana convencional podría tener una paleta de 256 colores, ofreciendo una fidelidad de color significativamente mayor. El modo HAM original con su resolución de color limitada se volvió mucho menos atractivo para los usuarios de una máquina AGA, aunque todavía se incluyó por compatibilidad con versiones anteriores. El nuevo modo HAM8 fue mucho menos útil para el conjunto de chips AGA que el modo HAM para el conjunto de chips original, ya que los modos indexados de 256 colores (así como de mayor rendimiento, planos de 128 y 64 colores) aumentaron enormemente las opciones al artista sin sufrir los inconvenientes de HAM. Un modo de paleta "en rodajas" bien programado podría resultar más útil que HAM8, con hasta 256 colores únicos por línea, suficiente para definir directamente un color distinto para cada píxel si se definiera un modo de vídeo de 256 píxeles de ancho. y en resoluciones más altas, incluso una sola paleta de 256 colores para toda la pantalla, y mucho menos cada línea, permitía una simulación mucho más efectiva y precisa de profundidades de color más altas usando difuminado de lo que se podría lograr con solo 32.
El propósito original de HAM, que era permitir una mayor resolución de color a pesar del tamaño de búfer de video limitado y el ancho de banda de memoria limitado, se había vuelto en gran medida irrelevante gracias al levantamiento de esos límites. Como las computadoras más modernas son intrínsecamente capaces de mostrar pantallas de color verdadero de alta resolución sin ningún truco especial, ya no hay necesidad de técnicas de visualización como HAM; Dado que las tarjetas gráficas de estilo PC que ofrecen modos como 800x600 SVGA en color alto (16 bpp o 65536 colores seleccionables directamente) ya estaban disponibles para el Amiga en los últimos días de la plataforma, es poco probable que se desarrollen más desarrollos de la plataforma. la técnica habría sido molestada si hubiera sobrevivido hasta el día de hoy.
Limitaciones
El modo HAM impone restricciones al valor de los píxeles adyacentes en cada línea horizontal del campo de juego. Para renderizar dos colores arbitrarios de forma adyacente, pueden ser necesarios hasta dos píxeles intermedios para cambiar al color deseado (si los componentes rojo, verde y azul deben modificarse todos). En el peor de los casos, esto reduce la resolución cromática horizontal de 320 ~ 360 píxeles a tan solo 106 ~ 120 (aunque, a modo de comparación, las tecnologías contemporáneas como VHS tenían una resolución cromática tan baja como 40 "líneas", aproximadamente equivalente a 80 píxeles, pero manchado mucho más suavemente). Este problema es particularmente notable en áreas de contraste nítido ( gradientes de imagen horizontales fuertes ), donde puede aparecer un artefacto indeseable de varios tonos o una "franja". Se utilizaron varias técnicas de renderizado para minimizar el impacto de las "franjas" y las pantallas HAM a menudo se diseñaron para incorporar gradientes de color horizontales sutiles, evitando bordes y contrastes verticales.
La visualización de una imagen a todo color en el modo HAM requiere un procesamiento previo cuidadoso. Debido a que HAM solo puede modificar uno de los componentes RGB a la vez, las transiciones de color rápidas a lo largo de una línea de escaneo se pueden lograr mejor utilizando uno de los registros de color preestablecidos para estas transiciones. Para renderizar una imagen arbitraria, un programador puede optar por examinar primero la imagen original en busca de la más notable de estas transiciones y luego asignar esos colores a uno de los registros, una técnica conocida como paletas adaptativas . Sin embargo, con solo 16 registros disponibles en el modo HAM original, es común cierta pérdida en la fidelidad del color.
Además, el modo HAM no permite fácilmente una animación arbitraria de la pantalla. Por ejemplo, si una parte arbitraria del campo de juego se va a mover a otra posición en la pantalla, los valores de Hold-and-Modify pueden tener que ser recalculados en todas las líneas de origen y destino para mostrar la imagen correctamente (una operación no adecuado para la animación). Específicamente, si el borde más a la izquierda del objeto animado contiene píxeles de 'modificación', o si la imagen inmediatamente a la derecha del objeto contiene píxeles de 'modificación', entonces esos valores de Mantener y modificar deben volver a calcularse. Un intento de mover un objeto por la pantalla (como con el uso del blitter ) creará franjas notables en los bordes izquierdo y derecho de esa imagen, a menos que los gráficos estén especialmente diseñados para evitar esto. Para evitar volver a calcular los valores de Hold-and-Modify y evitar las franjas, el programador tendría que asegurarse de que el píxel más a la izquierda de cada objeto blitter y el píxel más a la izquierda de cada línea de un campo de juego con desplazamiento sea un píxel 'establecido'. La paleta tendría que diseñarse de modo que incorpore todos los píxeles situados más a la izquierda. Alternativamente, una pantalla HAM se puede animar generando valores de píxeles a través de la generación de procedimientos , aunque esto generalmente es útil solo para imágenes sintéticas, por ejemplo, los efectos de 'arco iris' utilizados en demostraciones .
Sin embargo, tenga en cuenta que Mantener y modificar solo se aplica a los píxeles del campo de juego. Todavía están disponibles 128 píxeles de datos de sprites (en modo DMA) por línea de exploración para colocarlos en la parte superior del campo de juego de HAM.
Implementaciones
Modo HAM del conjunto de chips originales (HAM6)
El modo HAM6, llamado así por los 6 bits de datos por píxel, se introdujo con el conjunto de chips original y se retuvo en el conjunto de chips mejorado y la arquitectura de gráficos avanzada . HAM6 permite mostrar hasta 4096 colores simultáneamente con resoluciones de 320 × 200 a 360 × 576.
La codificación HAM6 utiliza seis bits por píxel: dos bits para el control y cuatro bits para los datos. Si los dos bits de control se ponen a cero, los cuatro bits restantes se utilizan para indexar uno de los 16 registros de color preestablecidos, operando en la forma de un mapa de bits indexado normal. Los otros tres patrones de bits de control posibles indican que se debe usar el color del píxel anterior (a la izquierda) en la línea de exploración y que los bits de datos deben usarse para modificar el valor del componente rojo, verde o azul. En consecuencia, hay cuatro posibilidades: [1]
- Establecer : utilice los 4 bits de datos para indexar un color de la paleta de 16 colores. Use ese color para este píxel.
- Modificar rojo : mantenga los componentes de color verde y azul del píxel anterior. Utilice los 4 bits de datos como el nuevo componente de color rojo de este píxel.
- Modificar verde : mantenga los componentes de color rojo y azul del píxel anterior. Utilice los 4 bits de datos como el nuevo componente de color verde de este píxel.
- Modificar azul : mantenga los componentes de color rojo y verde del píxel anterior. Utilice los 4 bits de datos como el nuevo componente de color azul de este píxel.
También está disponible un modo similar, HAM5, pero es bastante inútil. En HAM5, el sexto bit siempre es cero, por lo que solo se puede modificar el componente de color azul. [1]
Modo jamón rebanado (SHAM)
El Chipset Original Amiga incluía un chip de soporte conocido como "Cobre" que maneja las interrupciones y otras tareas de temporización y limpieza independientemente de la CPU y el sistema de video. Con el cobre, es posible modificar los registros del chipset o interrumpir la CPU en cualquier coordenada de la pantalla de forma sincronizada con la salida de vídeo. Esto permite a los programadores usar Copperlist o código de CPU para efectos de video con una sobrecarga muy baja.
Usando esta técnica, los programadores desarrollaron el modo Sliced HAM o SHAM , también conocido como Dynamic HAM . SHAM cambia algunos o todos los registros de color en las líneas de exploración seleccionadas para cambiar la paleta durante la visualización. Esto significa que cada línea de escaneo puede tener su propio conjunto de 16 colores base. Esto elimina algunas restricciones causadas por la paleta limitada, que luego se puede elegir por línea en lugar de por imagen. Las únicas desventajas de este enfoque son que Copperlist usa ciclos de reloj adicionales de la RAM del chip para los cambios de registro, que la imagen no es solo mapa de bits y la complejidad adicional de configurar el modo SHAM.
Esta técnica no se limita a HAM, y también se usó ampliamente con los modos gráficos más convencionales de la máquina. Dynamic HiRes utiliza una técnica de cambio de paleta similar para producir 16 colores por línea en los modos de alta resolución, mientras que HAM está limitado a baja resolución pero permite tanto 16 colores indexados como modificaciones de ellos.
La idea de SHAM quedó en desuso cuando se introdujo HAM8 con el chipset AGA , [2] ya que incluso una imagen HAM8 sin cortar tiene mucha más resolución de color que una imagen HAM6 cortada. Sin embargo, SHAM sigue siendo el mejor modo HAM disponible en aquellos Amigas con chipsets originales o ECS.
Modo HAM de arquitectura gráfica avanzada (HAM8)
Con el lanzamiento de la Arquitectura de gráficos avanzada (AGA) en 1992, el modo HAM original pasó a llamarse "HAM6" y se introdujo un nuevo modo "HAM8" (el sufijo numerado representa los planos de bits utilizados por el modo HAM respectivo). Con AGA, en lugar de 4 bits por componente de color, Amiga ahora tenía hasta 8 bits por componente de color, lo que resulta en 16.777.216 colores posibles ( espacio de color de 24 bits ).
HAM8 funciona de la misma manera que HAM6, utilizando dos bits de "control" por píxel, pero con seis bits de datos por píxel en lugar de cuatro. Los conjunto selecciona de operación de una paleta de 64 colores en lugar de 16. Los Modificar modifica de operación de los seis bits más significativos de o bien el componente de color rojo, verde o azul - los dos bits menos significativos de que el color no puede ser alterada por esta operación y permanecen según lo establecido por la operación de configuración más reciente. En comparación con HAM6, HAM8 puede mostrar muchos más colores en pantalla. Se informó ampliamente que el número máximo de colores en pantalla con HAM8 era de 262144 colores (espacio de color RGB de 18 bits). De hecho, el número máximo de colores únicos en pantalla puede ser superior a 262144, dependiendo de los dos bits menos significativos de cada componente de color en la paleta de 64 colores. En teoría, los 16,7 millones de colores podrían mostrarse con una pantalla lo suficientemente grande y una paleta base adecuada, pero en la práctica, las limitaciones para lograr una precisión total significan que los dos bits menos significativos generalmente se ignoran. En general, la profundidad de color percibida de HAM8 es aproximadamente equivalente a una pantalla de alto color .
Las resoluciones de pantalla vertical para HAM8 son las mismas que para HAM6. La resolución horizontal puede ser 320 (360 con overscan) como antes, duplicada a 640 (720 con overscan) o incluso cuadriplicada a 1280 píxeles (1440 con overscan). El chipset AGA también introdujo resoluciones aún más altas para los modos de visualización plana tradicionales. El número total de píxeles en una imagen HAM8 no puede exceder los 829,440 (1440 × 576) usando los modos PAL, pero puede exceder los 1,310,720 (1280 × 1024) usando hardware de pantalla de terceros (Indivision AGA flicker-fixer ).
Al igual que el modo HAM original, una pantalla HAM8 no puede mostrar ningún color arbitrario en ninguna posición arbitraria, ya que cada píxel depende de una paleta limitada o depende de hasta dos componentes de color del píxel anterior. Al igual que con el modo HAM original, los diseñadores también pueden optar por "cortar" la pantalla (ver más abajo) para eludir algunas de estas restricciones. También está disponible un modo HAM7, pero no se utiliza mucho.
Emulación HAM
HAM es exclusivo de Amiga y sus distintos conjuntos de chips. Para permitir la reproducción directa de imágenes heredadas codificadas en formato HAM, se han desarrollado emuladores HAM basados en software que no requieren el hardware de visualización original. Las versiones anteriores a 4.0 de AmigaOS pueden usar el modo HAM en presencia del chipset nativo Amiga. AmigaOS 4.0 y superior, diseñado para hardware radicalmente diferente, proporciona emulación HAM para su uso en hardware de gráficos grueso moderno . Los emuladores dedicados de Amiga que se ejecutan en hardware no nativo pueden mostrar el modo HAM mediante la emulación del hardware de pantalla. Sin embargo, dado que ninguna otra arquitectura de computadora utilizó la técnica HAM, ver una imagen HAM en cualquier otra arquitectura requiere una interpretación programática del archivo de imagen. La decodificación fiel basada en software producirá resultados idénticos, dejando de lado las variaciones en la fidelidad del color entre configuraciones de pantalla.
Sin embargo, si el objetivo es simplemente mostrar una imagen SHAM en una plataforma que no sea de Amiga, los valores de color requeridos pueden calcularse previamente en función de las entradas de la paleta que se programan a través de la lista de cobre, independientemente de si la paleta se modifica en en medio de una línea de exploración. Siempre es posible convertir una imagen HAM o SHAM sin pérdidas a una paleta de 32 bits.
Implementaciones de HAM de terceros
Un dispositivo producido por Black Belt conocido como HAM-E fue capaz de producir imágenes con profundidad de color HAM8 a baja resolución horizontal desde un Amiga con un chipset original. [3]
El Amiga estaría configurado para producir imágenes de alta resolución (640 píxeles de ancho, 720 con sobreexploración). Esto requirió el uso de cuatro planos de bits a 70 ns por píxel. Las primeras líneas de la información codificada de imagen para configurar la unidad HAM-E. Luego, cada par de píxeles se codificó con información para la unidad HAM-E, que convirtió la información en un píxel de 140 ns (generando una imagen de 320 píxeles de ancho, o 360 con sobreexploración, a una profundidad de color de ocho planos de bits). Por tanto, la calidad de HAM-E era comparable a la de una imagen HAM8 de baja resolución. La técnica HAM-E aprovechó el hecho de que una imagen de alta resolución con cuatro planos de bits ofrece un tercio más de ancho de banda de memoria y, por lo tanto, un tercio más de datos que una imagen de baja resolución con seis planos de bits.
Ver también
- Conjunto de chips original
- Modo Amiga Halfbrite
- Sony ARW 2.0 (los archivos de imagen RAW de ARW 2.0+ utilizan una técnica similar para su compresión delta con pérdida [4] )
Referencias
- ↑ a b c Commodore-Amiga, Inc. (1991). Manual de referencia del hardware Amiga . Serie de referencias técnicas de Amiga (tercera edición). Addison-Wesley. ISBN 0-201-56776-8.
- ^ Estándares y especificaciones: el formato de archivo de intercambio (IFF) (consulte JAMÓN y queso) [1]
- ^ "Black Belt HAM-E" . 2004-12-22 . Consultado el 6 de noviembre de 2017 .
- ^ Paul, Matthias R. (18 de marzo de 2014) [7 de enero de 2013]. "SLT-A99V: 14-Bit-Aufnahmen nur bei Einzelaufnahmen, 12 Bit o 14 Bit in RAWs?" . Minolta-Forum (en alemán). Archivado desde el original el 8 de agosto de 2016 . Consultado el 8 de agosto de 2016 .
Otras lecturas
- Especificación para el conjunto de chips Advanced Amiga (AA) , Commodore-Amiga
enlaces externos
- Una demostración animada renderizada en modo HAM: versión HAM-6 y versión HAM-8 (se requiere Java ).