stringtranslate.com

CTIA y GTIA

Chip NTSC GTIA fabricado por Okidata

El adaptador de interfaz de televisión en color [1] ( CTIA ) y su sucesor, el adaptador de interfaz de televisión gráfica [1] ( GTIA ), son chips personalizados que se utilizan en los ordenadores Atari de 8 bits y en la consola de videojuegos doméstica Atari 5200. En estos sistemas, un chip CTIA o GTIA trabaja junto con ANTIC para producir la pantalla de vídeo. ANTIC genera los gráficos del campo de juego (texto y mapa de bits), mientras que CTIA/GTIA proporciona el color para el campo de juego y añade objetos superpuestos conocidos como gráficos de jugador/misil ( sprites ). Bajo la dirección de Jay Miner , los chips CTIA/GTIA fueron diseñados por George McLeod con la asistencia técnica de Steve Smith. [2] [3] [4]

Adaptador de interfaz de televisión en color y Adaptador de interfaz de televisión gráfica son los nombres de los chips, tal como se indica en el manual de servicio de campo de Atari. [1] Varias publicaciones nombraron los chips de manera diferente, a veces usando la ortografía alternativa Adapter [5] [6] o Graphics [ 3] o afirmando que la "C" en "CTIA" significa Colleen/Candy [5] y la "G" en "GTIA" significa George. [3] [5] [6] [7]

Historia

2600 y TIA

Atari había construido su primer chip controlador de pantalla, el Adaptador de Interfaz de Televisión ( TIA), conocido universalmente como tal, como parte de la consola Atari 2600. [8] La pantalla TIA constaba lógicamente de dos conjuntos principales de objetos: los "jugadores" y los "misiles" , que representaban objetos en movimiento, y el "campo de juego", que representaba la imagen de fondo estática en la que se desarrollaba la acción. El chip utilizaba datos en registros de memoria para producir señales digitales que se convertían en tiempo real a través de un convertidor digital a analógico y un modulador de RF para producir una pantalla de televisión.

La forma convencional de dibujar el campo de juego es utilizar un mapa de bits almacenado en un búfer de cuadros , en el que cada ubicación de memoria en el búfer de cuadros representa una o más ubicaciones en la pantalla. En el caso del 2600, que normalmente utilizaba una resolución de 160x192 píxeles, un búfer de cuadros necesitaría tener al menos 160x192/8 = 3840 bytes de memoria. Construido en una época en la que la RAM era muy cara, la TIA no podía permitirse esta solución.

En su lugar, el sistema implementó un sistema de visualización que utilizaba un único registro de memoria de 20 bits que podía copiarse o reflejarse en la mitad derecha de la pantalla para crear lo que efectivamente era una pantalla de 40 bits. Cada ubicación podía mostrarse en uno de los cuatro colores, de una paleta de 128 colores posibles. El TIA también incluía otros objetos de visualización, los "jugadores" y los "misiles". Estos consistían en dos objetos de 8 bits de ancho conocidos como "jugadores", un único objeto de 1 bit conocido como la "pelota" y dos "misiles" de 1 bit. Todos estos objetos podían moverse a ubicaciones horizontales arbitrarias mediante configuraciones en otros registros.

La clave del sistema TIA y el bajo precio del 2600 era que el sistema implementaba sólo la memoria suficiente para dibujar una sola línea de la pantalla, toda la cual se almacenaba en registros. Para dibujar una pantalla completa llena de datos, el código de usuario esperaba hasta que la pantalla de televisión llegara al lado derecho de la pantalla y actualizaba los registros del campo de juego y del jugador/misiles para reflejar correctamente la siguiente línea en la pantalla. Este esquema dibujaba la pantalla línea por línea a partir del código del programa en el cartucho ROM , una técnica conocida como "carrera con el rayo".

CTIA

Atari inicialmente estimó que la 2600 tendría una vida útil de mercado corta de tres años cuando fue diseñada en 1976, lo que significaba que la compañía necesitaría un nuevo diseño para 1979. [8] Inicialmente, este nuevo diseño era simplemente una consola de juegos actualizada similar a la 2600, y se construyó alrededor de un diseño básico similar, simplemente actualizado. El trabajo en lo que se convertiría en el CTIA comenzó en 1977 y tenía como objetivo ofrecer un sistema con el doble de resolución y el doble de número de colores. Además, al variar el número de colores en el campo de juego, se podían admitir resoluciones mucho más altas de hasta 320 píxeles en sentido horizontal. Los jugadores y los misiles también se actualizaron, incluidos cuatro reproductores de 8 bits y cuatro misiles de 2 bits, pero también se permitió un modo adicional para combinar los cuatro misiles en un quinto jugador.

Poco después de que comenzara el diseño, la revolución de los ordenadores domésticos empezó en serio en la segunda mitad de 1977. En respuesta, Atari decidió lanzar dos versiones de la nueva máquina, un modelo de gama baja como consola de juegos y una versión de gama alta como ordenador doméstico. [8] En cualquiera de los dos roles, se necesitaría un campo de juego más complejo, especialmente soporte para gráficos de personajes en el rol de ordenador. El diseño del CTIA estaba muy avanzado en este punto, por lo que en lugar de un rediseño se proporcionó una solución inteligente añadiendo un segundo chip que automatizaría eficazmente el proceso de carrera del rayo. En lugar de que la programación del usuario actualizara los registros del CTIA en función de su tiempo de interrupción, el nuevo ANTIC se encargaría de esta tarea, leyendo datos de un búfer de cuadros y alimentándolos al CTIA sobre la marcha.

Como resultado de estos cambios, los nuevos chips ofrecen una cantidad y una selección de modos gráficos mucho mejores que los del TIA. En lugar de un único modo de campo de juego con 20 o 40 bits de resolución, el par CTIA/ANTIC puede mostrar seis modos de texto y ocho modos gráficos con distintas resoluciones y profundidades de color, lo que permite al programador elegir un equilibrio entre resolución, colores y uso de memoria para su visualización.

Comparación entre CTIA y GTIA

La paleta de 256 colores utilizada en el chip GTIA (solo NTSC) con 16 tonos y 16 valores de luminancia
Esto es lo que Atari TIA y CTIA usaron como paleta (sólo NTSC), con 16 tonos y sólo 8 valores de luminancia, lo que compone 128 colores únicos.

El diseño original del chip CTIA también incluía tres interpretaciones de color adicionales de los modos gráficos normales. Esta característica proporciona expresiones alternativas de los modos gráficos de alta resolución de ANTIC presentando 1 bit por píxel, 2 colores con píxeles de ancho de reloj de medio color como 4 bits por píxel, hasta 16 colores, píxeles de ancho de reloj de dos colores. Esta característica estaba lista antes del debut de las computadoras en noviembre de 1979, pero se retrasó tanto en el ciclo de desarrollo que Atari ya había pedido un lote de aproximadamente 100.000 chips CTIA sin los modos gráficos. No queriendo tirar a la basura los chips ya producidos, la compañía decidió usarlos en el lanzamiento inicial de los modelos Atari 400 y 800 en el mercado estadounidense. Las computadoras equipadas con CTIA, que carecían de los 3 modos de color adicionales, se enviaron hasta octubre-noviembre de 1981. [5] [6] A partir de este punto, todas las nuevas unidades Atari estuvieron equipadas con el nuevo chip, ahora llamado GTIA, que admitía los nuevos modos de interpretación de color. [6] [9]

El sistema operativo original Atari 800/400 admitía los modos de interpretación de color alternativos GTIA desde el principio, [9] lo que permitía reemplazar fácilmente el CTIA por el GTIA una vez que estaba listo. Los centros de servicio autorizados de Atari instalaban un chip GTIA en computadoras equipadas con CTIA sin cargo si la computadora estaba en garantía; de lo contrario, el reemplazo costaba $62.52. [6] [7]

GTIA también se montó en todos los ordenadores Atari XL y XE posteriores y en las consolas Atari 5200.

Características

La siguiente lista describe las capacidades de hardware inherentes de CTIA/GTIA, es decir, la funcionalidad prevista del hardware en sí, sin incluir los resultados logrados por interrupciones atendidas por la CPU o núcleos de visualización que impulsan cambios frecuentes de registros.

CTIA/GTIA es un dispositivo de interfaz de televisión con las siguientes características:

Versiones

por número de pieza

Atari, Inc. pretendía combinar las funciones de los chips ANTIC y GTIA en un solo circuito integrado para reducir los costes de producción de los ordenadores Atari y las consolas 5200. Se estaban desarrollando dos prototipos de circuitos de este tipo, pero ninguno de ellos entró en producción.

Distribución de pines

Distribución de pines del Atari GTIA (C014805)

Registros

Las computadoras Atari de 8 bits asignan CTIA/GTIA a la página hexadecimal $D0xx y la consola Atari 5200 lo asigna a la página hexadecimal $C0xx .

CTIA/GTIA proporciona 54 registros de lectura/escritura que controlan los gráficos del jugador/misil, los colores del campo de juego, los disparadores del joystick y las teclas de la consola. Muchas direcciones de registros CTIA/GTIA tienen propósitos dobles y realizan funciones diferentes como registro de lectura y de escritura. Por lo tanto, ningún código debería leer registros de hardware esperando recuperar el valor escrito previamente.

Este problema se resuelve para muchos registros de escritura mediante registros Shadow del sistema operativo implementados en la RAM normal como lugares para almacenar el último valor escrito en los registros. Los registros Shadow del sistema operativo se copian de la RAM a los registros de hardware durante el espacio en blanco vertical. Por lo tanto, cualquier escritura en registros de hardware que tengan registros Shadow correspondientes se sobrescribirá con el valor de los registros Shadow durante el próximo espacio en blanco vertical.

Algunos registros de escritura no tienen registros Shadow correspondientes. Una aplicación puede escribirlos de forma segura sin que el valor se sobrescriba durante el espacio en blanco vertical. Si la aplicación necesita saber el último estado del registro, es responsabilidad de la aplicación recordar lo que escribió.

Los registros de sombra del sistema operativo también existen para algunos registros de lectura donde leer el valor directamente desde el hardware en una etapa desconocida en el ciclo de visualización puede arrojar resultados inconsistentes.

En los listados de registros individuales que aparecen a continuación se aplica la siguiente leyenda:

Coordenadas horizontales del jugador/misil

Estos registros especifican la posición horizontal en los relojes de color del borde izquierdo (el bit alto de los patrones de bytes GRAF*) de los objetos Jugador/Misil. Las coordenadas siempre se basan en el motor de reloj de color del hardware de visualización, NO simplemente en el modo de visualización actual del Campo de juego. Esto también significa que los objetos Jugador/Misil se pueden mover a áreas de sobreexploración más allá del modo actual del Campo de juego.

Tenga en cuenta que, si bien los patrones de bits de los objetos Missile comparten el mismo byte para los píxeles mostrados (GRAFM), cada Missile puede posicionarse de forma independiente. Cuando la opción "quinto jugador" está habilitada (consulte el registro PRIOR/GPRIOR), al convertir los cuatro Missiles en un "Jugador", los Missiles cambian de mostrar el color del objeto Player asociado a mostrar el valor de COLPF3. La nueva posición del "Jugador" en la pantalla debe establecerse especificando la posición de cada Missile individualmente.

Los píxeles de jugador/misil solo se representan dentro de las partes visibles del motor de píxeles de GTIA. Los objetos de jugador/misil no se representan durante el espacio en blanco horizontal o vertical. Sin embargo, un objeto puede estar parcialmente dentro del espacio en blanco horizontal. Los píxeles de los objetos que quedan fuera del espacio en blanco horizontal se encuentran entonces dentro de la parte visible de la pantalla y aún pueden registrar colisiones. El rango de posición horizontal de los relojes de color visibles es $22 hex /34 dec a $DD hex /221 dec .

Para eliminar un objeto Jugador/Misil del área de visualización visible, las posiciones horizontales (izquierda) 0 y (derecha) $DE hex /222 dec (o mayor) garantizarán que no se representen píxeles independientemente del tamaño del objeto Jugador/Misil y, por lo tanto, no se podrán marcar colisiones no intencionales.

HPOSP0 $D000 Escribir

Posición horizontal del jugador 0

HPOSP1 $D001 Escribir

Posición horizontal del jugador 1

HPOSP2 $D002 Escribir

Posición horizontal del jugador 2

HPOSP3 $D003 Escribir

Posición horizontal del jugador 3

HPOSM0 $D004 Escribir

Posición horizontal del misil 0

HPOSM1 $D005 Escribir

Posición horizontal del misil 1

HPOSM2 $D006 Escribir

Posición horizontal del misil 2

HPOSM3 $D007 Escribir

Posición horizontal del misil 3

A continuación se muestran las coordenadas del reloj de color de los bordes izquierdo y derecho de los posibles tamaños del campo de juego, útiles al alinear objetos de jugador/misil con los componentes del campo de juego:

Control del tamaño del jugador/misil

Se pueden elegir tres tamaños: ancho normal, doble y cuádruple. El borde izquierdo (ver coordenadas horizontales) es fijo y el ajuste de tamaño expande al jugador o al misil hacia la derecha en todos los casos.

Tenga en cuenta que en tamaño Quad, un solo píxel de Jugador/Misil tiene el mismo ancho que un carácter de texto del Modo Antic 2. La selección de prioridad de Jugador/Misil combinada con los gráficos de Jugador/Misil de ancho Quad se pueden usar para crear múltiples colores de texto por línea de Modo.

Cada jugador tiene su propio registro de control de tamaño:

TAMAÑO0 $D008 Escribir

Tamaño del jugador 0

TAMAÑO1 $D009 Escribir

Tamaño del jugador 1

TAMAÑO2 $D00A Escribir

Tamaño del jugador 2

SIZEP3 $D00B Escribir

Tamaño del jugador 3

Controles del tamaño del jugador:

Valores:

TAMAÑO $D00C Escribir

Todos los tamaños de los misiles están controlados por un registro, pero cada misil puede tener un tamaño independiente de los demás. Cuando la opción "quinto jugador" está habilitada (ver registro PRIOR/GPRIOR) al convertir los cuatro misiles en un "jugador", el ancho se sigue configurando especificando el tamaño de cada misil individualmente.

Valores:

Patrones gráficos de jugador/misil

Cada objeto de jugador tiene su propio registro de patrón de 8 bits. Los objetos de misil comparten un registro con 2 bits por cada misil. Una vez que se establece un valor, este seguirá mostrándose en cada línea de escaneo. Sin ninguna otra intervención de la CPU o ANTIC DMA para actualizar los valores, el resultado son patrones de rayas verticales a la altura de la pantalla, incluidas las áreas de sobreescaneo. Este modo de operación no supone un gasto de CPU o DMA en la computadora. Es útil para mostrar bordes de colores alternativos y líneas verticales que separan las regiones de la pantalla.

GRAFP0 $D00D Escribir

Patrón gráfico para el jugador 0

GRAFP1 $D00E Escribir

Patrón gráfico para el jugador 1

GRAFP2 $D00F Escribir

Patrón gráfico para el jugador 2

GRAFP3 $D010 Escribir

Patrón gráfico para el jugador 3

Cada jugador tiene 8 bits (píxeles) de ancho. Cuando se establece un bit, se muestra un píxel en el color asignado al registro de color asociado al jugador. Cuando no se establece un bit, el objeto del jugador es transparente y muestra los jugadores, los misiles, los píxeles del campo de juego o el color de fondo. La salida de píxeles comienza en la posición horizontal especificada por el valor HPOS del jugador, con el bit más alto primero.

GRAFM $D011 Escribir

Patrón gráfico para todos los misiles

Cada misil tiene 2 bits (píxeles) de ancho. Cuando se establece un bit, se muestra un píxel en el color asignado al registro de color del jugador asociado al misil. Cuando se habilita el quinto jugador (consulte PRIOR/GPRIOR), todos los píxeles de los misiles muestran COLPF3. Cuando no se establece un bit, el objeto de misil es transparente y muestra los jugadores, los misiles, los píxeles del campo de juego o el color de fondo. La salida de píxeles comienza en la posición horizontal especificada por el valor HPOS del misil, con la salida de bit más alta primero.

Valores de los misiles:

Colisiones entre jugadores y misiles

CTIA/GTIA tiene 60 bits que proporcionan detección automática de colisiones cuando los píxeles del jugador, el misil y el campo de juego se intersecan. Un solo bit indica que un píxel distinto de cero del objeto del jugador o el misil ha intersecado un píxel de un registro de color específico. No se registra ninguna colisión para los píxeles renderizados utilizando el registro/valor de color de fondo. Este sistema proporciona una comparación de superposición perfecta de píxeles al instante sin una costosa evaluación de CPU del cuadro delimitador o el enmascaramiento de mapa de bits de la imagen.

No se tiene en cuenta el valor de color real de un objeto. Si los registros de color de Jugador, Misil, Campo de juego y Fondo tienen el mismo valor, lo que hace que los objetos sean "invisibles", las intersecciones de los objetos seguirán registrando colisiones. Esto resulta útil para crear objetos y paredes ocultos o secretos.

Las intersecciones oscurecidas también registrarán colisiones. Si la prioridad de un objeto de jugador está detrás de un registro de color del campo de juego y la prioridad de otro objeto de jugador es mayor (primer plano) que la del campo de juego, y los píxeles de jugador de primer plano oscurecen tanto el campo de juego como el objeto de jugador detrás del campo de juego, entonces la colisión entre el campo de juego y los objetos de jugador de primer plano y de fondo se registrará junto con la colisión entre los objetos de jugador de primer plano y de fondo.

Tenga en cuenta que no hay colisión entre misil.

Las colisiones de jugador/misil solo pueden ocurrir cuando los píxeles de los objetos de jugador/misil se encuentran dentro de las partes visibles de la pantalla. Los objetos de jugador/misil no se representan durante el espacio en blanco horizontal o vertical. El rango de relojes de color visibles es de 34 a 221, y las líneas de escaneo visibles van desde la línea 8 hasta la línea 247. Los datos de jugador/misil fuera de estas coordenadas no se representan y no registrarán colisiones. Un objeto puede estar parcialmente dentro del espacio en blanco horizontal. Los píxeles de los objetos que quedan fuera del espacio en blanco horizontal están dentro de la parte visible de la pantalla y aún pueden registrar colisiones.

Para eliminar un objeto Jugador/Misil del área de visualización visible, las posiciones horizontales (izquierda) 0 y (derecha) 222 (o mayores) garantizarán que no se representen píxeles independientemente del tamaño del objeto Jugador/Misil y, por lo tanto, no se podrán marcar colisiones no intencionales.

Por último, la detección de colisiones de objetos de jugador, misil y campo de juego se realiza en tiempo real y se registran cuando los píxeles de la imagen se fusionan y se muestran para su visualización. Si se comprueban los bits de colisión de un objeto antes de que CTIA/GTIA lo haya renderizado, no se mostrará ninguna colisión.

Una vez establecidas, las colisiones siguen vigentes hasta que se eliminan mediante una escritura en el registro HITCLR. Las rutinas de respuesta a colisiones efectivas deben ocurrir después de que se hayan mostrado los objetos objetivo, o al final de un cuadro o durante el espacio en blanco vertical para reaccionar ante las colisiones y eliminarlas antes de que comience el siguiente cuadro.

Como las colisiones son solo de un bit, es obvio que no son aditivas. No importa cuántas veces y en diferentes lugares ocurra una colisión entre píxeles dentro de un cuadro, solo hay un bit para indicar que hubo una colisión. Un bit de colisión establecido informa a un programa que puede examinar los objetos relacionados para identificar las ubicaciones de la colisión y luego decidir cómo reaccionar en cada ubicación.

Dado que HITCLR y la detección de colisiones se realizan en tiempo real, las interrupciones de la lista de visualización pueden dividir la visualización en secciones con HITCLR utilizado al comienzo de cada sección y una evaluación de colisiones separada al final de cada sección.

Cuando la opción "quinto jugador" está habilitada (ver registro PRIOR/GPRIOR), el único cambio es que los misiles 0 a 3 pasan de mostrar el color del objeto de jugador asociado a mostrar el valor de COLPF3. Las colisiones del nuevo "jugador" se siguen informando para los misiles individuales.

Colisiones entre jugadores y misiles contra el campo de juego

Cada bit indica que un píxel del objeto Jugador/Misil ha intersecado un píxel del objeto de color del campo de juego especificado. No se registra ninguna colisión para el color de fondo.

Las intersecciones oscurecidas también registrarán colisiones. Si la prioridad de un objeto de Jugador/Misil está detrás de un registro de color del Campo de Juego y la prioridad de otro objeto de Jugador/Misil es mayor (primer plano) que la del Campo de Juego, y los píxeles de Jugador/Misil en primer plano oscurecen tanto el Campo de Juego como el objeto de Jugador/Misil detrás del Campo de Juego, entonces se registrará la colisión entre el Campo de Juego y los objetos de Jugador/Misil en primer plano y en segundo plano.

Los modos de píxeles de reloj de color 1/2 de alta resolución ( modos ANTIC 2, 3 y F) se tratan de forma diferente. El color de "fondo" representado como COLPF2 donde los valores de píxeles son 0 no registra una colisión. Los píxeles de alta resolución se representan como el valor de luminancia de COLPF1. Los píxeles se agrupan en pares de reloj de color (píxeles 0 y 1, píxeles 2 y 3, continuando hasta los píxeles 318 y 319). Cuando cualquiera de los píxeles del par es 1, se detecta una colisión entre los píxeles del jugador o del misil y el color del campo de juego COLPF2.

Los modos GTIA 9 y 11 no procesan colisiones de campos de juego. En el modo GTIA 10, las colisiones de campos de juego registrarán dónde los píxeles de campos de juego usan COLPF0 a COLPF3

M0PF $D000 Leer

Colisiones del misil 0 con el campo de juego

M1PF $D001 Leer

Colisiones del misil 1 contra el campo de juego

M2PF $D002 Leer

Colisiones del misil 2 con el campo de juego

M3PF $D003 Leer

Colisiones del misil 3 contra el campo de juego

P0PF $D004 Leer

Colisiones entre el jugador 0 y el campo de juego

P1PF $D005 Leer

Colisiones entre el jugador 1 y el campo de juego

P2PF $D006 Leer

Colisiones entre el jugador 2 y el campo de juego

P3PF $D007 Leer

Colisiones entre el jugador 3 y el campo de juego

Colisiones entre misiles y jugadores

Los misiles chocan con los jugadores y los campos de juego. No hay colisión entre misiles.

M0PL $D008 Leer

Colisiones de misiles 0 contra jugadores

M1PL $D009 Leer

Colisiones del misil 1 con el jugador

M2PL $D00A Leer

Colisiones de misiles 2 contra jugadores

M3PL $D00B Leer

Colisiones de misiles 3 contra jugadores

Colisiones entre jugadores

Una colisión entre dos jugadores activa el bit de colisión en los registros de colisión de ambos jugadores. Cuando el jugador 0 y el jugador 1 colisionan, se activa el bit de colisión del jugador 0 para el jugador 1 y se activa el bit de colisión del jugador 1 para el jugador 0.

Un jugador no puede colisionar consigo mismo, por lo que su bit siempre es 0.

P0PL $D00C Leer

Colisiones entre jugadores 0 y 10

P1PL $D00D Leer

Colisiones entre jugadores 1 y 2

P2PL $D00E Leer

Colisiones de jugador 2 a jugador

P3PL $D00F Leer

Colisiones entre jugadores 3 y 4

Color y luminancia del jugador/misil y del campo de juego

Todos los píxeles de los objetos Jugador/Misil y todos los píxeles del Campo de Juego en el modo de interpretación de color CTIA/GTIA predeterminado utilizan indirección para especificar el color. Indirección significa que los valores de los datos de píxeles no especifican directamente el color, sino que apuntan a otra fuente de información para el color. CTIA/GTIA contiene registros de hardware que establecen los valores utilizados para los colores, y la información de los píxeles se refiere a estos registros. La paleta del Atari tiene 8 niveles de luminancia de 16 colores para un total de 128 colores. La flexibilidad de la indirección de color permite que un programa adapte los colores de la pantalla para que se ajusten al propósito de la visualización del programa.

Todos los registros de color de hardware tienen registros de sombra correspondientes.

COLPM0 $D012 Escribir

SOMBRA: PCOLOR0 $02C0

Color/luminancia del Jugador y Misil 0.

Cuando el modo GTIA de 9 colores está habilitado (valor PRIOR/GPRIOR $80), este registro se utiliza para el borde y el fondo (valor de píxel del campo de juego 0), en lugar de COLBK.

COLPM1 $D013 Escribir

SOMBRA: PCOLOR1 $02C1

Color/luminancia del Jugador y Misil 1.

COLPM2 $D014 Escribir

SOMBRA: PCOLOR2 $02C2

Color/luminancia del Jugador y Misil 2.

COLPM3 $D015 Escribir

SOMBRA: PCOLOR3 $02C3

Color/luminancia del Jugador y Misil 3.

COLPF0 $D016 Escribir

SOMBRA: COLOR0 $02C4

Color/luminancia del campo de juego 0.

COLPF1 $D017 Escribir

SOMBRA: COLOR1 $02C5

Color/luminancia del campo de juego 1.

Este registro se utiliza para los píxeles establecidos (valor 1) en los modos de texto ANTIC 2 y 3, y en el modo de mapa F. Solo se utiliza la parte de luminancia y se combina con el valor de color de COLPF2. En otros modos de caracteres y de mapa, este registro proporciona el color y la luminancia esperados para un píxel.

COLPF2 $D018 Escribir

SOMBRA: COLOR2 $02C6

Color/luminancia del campo de juego 2.

Este registro se utiliza para el color de fondo del campo de juego de los modos de texto ANTIC 2 y 3 y el modo de mapa F. Es decir, donde se utiliza el valor de píxel 0. En otros modos de caracteres y mapas, este registro proporciona el color y la luminancia esperados para un píxel.

COLPF3 $D019 Escribir

SOMBRA: COLOR3 $02C7

Color/luminancia del campo de juego 3

COLPF3 está disponible en varias circunstancias especiales:

COLBK $D01A Escribir

SOMBRA: COLOR4 $02C8

Color/luminancia del fondo del campo de juego.

El color de fondo se muestra donde no hay ningún otro píxel en toda el área de visualización de sobreescaneo. Se dan las siguientes excepciones para el fondo:

Bits de registros de color :

El dígito alto del registro de color especifica uno de los 16 colores ($00, $10, $20... a $F0).

El nybble bajo del registro especifica uno de los 16 valores de luminancia ($00, $01, $02... a $0F).

En el modo de interpretación de color normal, el bit más bajo no es significativo y solo están disponibles 8 valores de luminancia ($00, $02, $04, $06, $08, $0A, $0C, $0E), por lo que la paleta de colores completa es de 128 valores de color.

En el modo de interpretación de color GTIA $4 (modo de solo luminancia), los 16 bits completos de valores de luminancia están disponibles para los píxeles del campo de juego, lo que proporciona una paleta de 256 colores. Todos los objetos de jugador o misil que se muestran en este modo se colorean de forma indirecta, lo que sigue utilizando la paleta de 128 colores.

En el modo de interpretación de color normal, los valores de los píxeles van de 0 a 3 y apuntan a los registros de color COLBK, COLPF0, COLPF1 y COLPF2 respectivamente. Los modos de texto en color también incluyen opciones para utilizar COLPF3 para determinados rangos de valores de caracteres. Consulte los modos gráficos de ANTIC para obtener más información.

Cuando los patrones de gráficos de Jugador/Misil están habilitados para visualización, donde los bits de patrones de gráficos están configurados, el color mostrado proviene de los registros asignados a los objetos.

Existen excepciones para la generación y visualización de color:

Uso de registros de color según los modos de carácter ANTIC :

Uso de registros de color según los modos de mapa ANTIC :

Uso de registros de color por modos GTIA (ANTIC F) :

Los colores de Jugador/Misil siempre están disponibles para los objetos de Jugador/Misil en todos los modos, aunque los colores pueden modificarse cuando los modos especiales GTIA (16 tonos/16 colores) están en efecto.

Controles varios de jugadores, misiles y GTIA

ANTERIOR $D01B Escritura

SOMBRA: GPRIOR $026F

Este registro controla varias funciones de gestión de color CTIA/GTIA: el modo de interpretación de color del campo de juego GTIA, los objetos de jugador multicolor, el quinto jugador y la prioridad de jugador/misil/campo de juego.

Interpretaciones de colores del campo de juego GTIA

CTIA incluye solo un modo de interpretación de color predeterminado para el flujo de datos del campo de juego ANTIC. Esa es la funcionalidad básica asumida en la mayoría de las discusiones de ANTIC y CTIA/GTIA a menos que se indique lo contrario. GTIA incluye tres modos de interpretación de color alternativos para los datos del campo de juego. Estos modos funcionan mediante el emparejamiento de relojes de color adyacentes de ANTIC, por lo que los píxeles de salida de GTIA siempre tienen dos relojes de color de ancho. Aunque estos modos se pueden activar mientras se muestra cualquier modo de campo de juego ANTIC, la paleta de colores completa posible con estas opciones de procesamiento de color GTIA solo se realiza en los modos ANTIC basados ​​en píxeles de reloj de color de 12 (modos ANTIC 2, 3, F). Estas opciones GTIA se utilizan con mayor frecuencia con una pantalla de modo F. Los modos de procesamiento de color especiales de GTIA también alteran la visualización o el comportamiento de los gráficos de jugador/misil de varias maneras.

El control de interpretación de color es una función global de GTIA que afecta a toda la pantalla. GTIA no es capaz de mezclar en una pantalla los distintos modos de interpretación de color de GTIA y el modo CTIA predeterminado necesario para la mayoría de los campos de juego ANTIC. Mezclar los modos de interpretación de color requiere que el software escriba en el registro PRIOR a medida que se genera la pantalla (normalmente, mediante una interrupción de lista de visualización).

Los bits PRIOR 7 y 6 proporcionan cuatro valores que especifican los modos de interpretación del color:

16 sombras

Este modo utiliza el registro COLBK para especificar el color de fondo. En lugar de utilizar la indirección, los valores de los píxeles representan directamente la luminancia. Este modo permite utilizar los cuatro bits de luminancia en la paleta de colores de Atari y, por lo tanto, es capaz de mostrar 256 colores.

Los gráficos de Jugador/Misil (sin la opción de quinto Jugador) se muestran correctamente en este modo, sin embargo, la detección de colisiones con el Campo de Juego está deshabilitada. La prioridad del Campo de Juego siempre está en la parte inferior. Cuando se cambian los Misiles para que actúen como un quinto Jugador, entonces, donde los objetos de Misiles se superponen al Campo de Juego, la luminancia de los píxeles de Misiles se fusiona con el valor de luminancia de los píxeles del Campo de Juego.

9 colores

A diferencia de los otros dos modos especiales de GTIA, este modo se basa completamente en la indirección del color. Los nueve registros de color funcionan en la pantalla para los valores de píxel del 0 al 8. Los 7 valores de píxel restantes repiten los registros de color anteriores.

Los píxeles se retrasan un reloj de color (medio píxel del modo GTIA) cuando se muestran en la pantalla. Este desfase permite obtener efectos interesantes. Por ejemplo, si se pasa rápidamente de una página a otra de este modo a otro, se obtiene una pantalla con una resolución aparentemente mayor y una mayor cantidad de colores.

Este modo es único porque utiliza el registro de color COLPM0 para el borde y el fondo (píxeles de valor 0 del campo de juego) en lugar de COLBK.

Los gráficos de Jugador/Misil se muestran correctamente, con la excepción de que Jugador/Misil 0 no se distingue de los píxeles de fondo, ya que utilizan el mismo registro de color, COLPM0. Los píxeles del campo de juego que utilizan los colores de Jugador/Misil se modifican mediante la configuración de prioridades como si fueran objetos de Jugador/Misil y, por lo tanto, pueden afectar la visualización de Jugadores/Misiles. (Consulte la discusión posterior sobre las prioridades de Jugador/Misil/Campo de juego).

Los píxeles del campo de juego que utilizan los colores de jugador y misil no provocan colisiones cuando los objetos de jugador y misil se superponen a ellos. Sin embargo, los gráficos de jugador y misil que se superponen a los colores del campo de juego COLPF0 a COLPF3 provocarán la colisión esperada.

16 colores

Este modo utiliza el registro COLBK para especificar la luminancia de todos los píxeles del campo de juego (valores 1 hex /1 dec a F hex /15 dec ). No se observa el bit menos significativo del valor de luminancia, por lo que solo están disponibles los valores de luminancia estándar/CTIA 8 ( $0 , $2 , $4 , $ 6 , $8 , $A , $C , $E ). Además, el fondo en sí mismo utiliza solo el componente de color establecido en el registro COLBK. El valor de luminancia del fondo se fuerza a 0. Al igual que con el modo de luminancia, la indirección está deshabilitada y los valores de píxel representan directamente un color.

Tenga en cuenta que el componente de color del fondo también se fusiona con los píxeles del campo de juego. Los colores distintos del negro para el fondo reducen la cantidad total de colores que se muestran en el modo.

Los gráficos de Jugador/Misil (sin la opción de quinto Jugador) se muestran correctamente en este modo, sin embargo la detección de colisiones con el Campo de Juego está deshabilitada. La prioridad del Campo de Juego siempre está en la parte inferior. Cuando se cambian los Misiles para que actúen como un quinto Jugador, entonces, donde los objetos de Misiles se superponen al Campo de Juego, los píxeles de Misiles heredan el valor de Color de los píxeles del Campo de Juego.

Reproductor multicolor

El bit 5 de PRIOR, valor 20 hexadecimal /32 dec, habilita los objetos de reproductor multicolor. Cuando los píxeles de dos objetos de reproductor/misil se superponen, aparece un tercer color. Esto se implementa eliminando el procesamiento prioritario entre pares de objetos de reproductor/misil, lo que hace que CTIA/GTIA realice un OR bit a bit de los dos píxeles de color para generar un nuevo color.

Ejemplo: Un píxel de jugador con un valor de color 98 hex / 152 dec (azul) se superpone a un píxel de jugador con un valor de color 46 hex / 70 dec (rojo), lo que da como resultado un color de píxel de DE hex / 228 dec (verde claro/amarillo).

Los pares de jugadores/misiles capaces de generar salidas multicolor:

Quinto jugador

El bit 4 de PRIOR, valor $10 hex /16 dec permite que los Misiles se conviertan en un quinto Jugador. No se produce ningún cambio funcional en el Misiles, salvo el procesamiento de color de los Misiles. Normalmente, los Misiles se muestran utilizando el color del Jugador asociado. Cuando se habilita el Quinto Jugador, todos los Misiles muestran el color del Campo de Juego 3 (COLPF3). La posición horizontal, el tamaño, el retraso vertical y las colisiones entre Jugador y Misiles siguen funcionando de la misma manera. La prioridad del Quinto Jugador para las intersecciones de píxeles de los objetos de Jugador es COLPF3, pero los píxeles del Quinto Jugador tienen prioridad sobre todos los colores del Campo de Juego.

El cambio de procesamiento de color también provoca algunas excepciones en la visualización de los misiles en los modos de color alternativos de GTIA:

El quinto jugador introduce una excepción para el valor de prioridad $8 (bits 1000) (ver la discusión sobre prioridad a continuación).

Prioridad

Los bits 3 a 0 de PRIOR proporcionan cuatro valores de prioridad de Jugador/Misil y Campo de juego que determinan qué valor de píxel se muestra cuando los píxeles de los objetos de Jugador/Misil y los píxeles del Campo de juego se cruzan. Los cuatro valores proporcionan opciones específicas que se enumeran en el cuadro de prioridades que aparece a continuación. "PM" significa implementación normal de Jugador/Misil sin el Quinto jugador. El Quinto jugador, "P5", se muestra donde aparece su prioridad cuando está habilitado.

La tabla es precisa para los modos de personajes y mapas del campo de juego ANTIC que utilizan el modo de interpretación de color predeterminado (CTIA). Los modos de interpretación de color GTIA y los modos ANTIC basados ​​en píxeles de reloj de color de 12 de alta resolución se comportan de manera diferente (se indica más adelante).

Si se configuran varios bits, entonces, donde hay un conflicto, CTIA/GTIA genera un píxel negro. Tenga en cuenta que negro significa negro real, no simplemente el color de fondo, COLBK.

Aunque el quinto jugador se muestra con el valor COLPF3, su prioridad está por encima de todos los colores del campo de juego. Esto produce una excepción para el valor de prioridad $8 (Bits 1000). En este modo, el campo de juego 0 y 1 tienen mayor prioridad que los jugadores, y los jugadores tienen mayor prioridad que el campo de juego 2 y 3. Cuando los píxeles del campo de juego 0 o 1 intersecan cualquier píxel del jugador, el resultado que se muestra es el píxel del campo de juego. Sin embargo, si el quinto jugador también interseca la misma ubicación, su valor se muestra sobre el campo de juego, lo que hace que parezca que el campo de juego 3 tiene la mayor prioridad. Si el píxel del campo de juego 0 o 1 se elimina de esta intersección, entonces el píxel del quinto jugador no tiene ningún píxel del campo de juego para anular y, por lo tanto, también se queda detrás de los píxeles del jugador.

Cuando todos los bits de prioridad son 0, se produce un efecto diferente: los píxeles del jugador y del campo de juego se combinan lógicamente mediante OR de una manera similar a la función del reproductor multicolor. En esta situación, los píxeles 0 y 1 del jugador se pueden mezclar con los píxeles 0 y 1 del campo de juego, y los píxeles 2 y 3 del jugador se pueden mezclar con los píxeles 2 y 3 del campo de juego. Además, cuando se utiliza la opción del reproductor multicolor, el color resultante de la fusión de los jugadores también se puede mezclar con el campo de juego, lo que produce más colores. Cuando se consideran todas las posibilidades de fusión de colores, el hardware CTIA/GTIA puede generar 23 colores por línea de escaneo. Comenzando con el color de fondo como primer color, los 22 colores restantes y las fusiones de colores son posibles:

Cuando todos los bits de prioridad son 0, los colores de los misiles funcionan de la misma manera que los jugadores correspondientes, como se describió anteriormente. Cuando se habilita el quinto jugador, los píxeles de los misiles provocan la misma fusión de colores que se muestra para COLPF3 en la tabla anterior (colores 19 a 22).

Modos de prioridad y alta resolución

Los resultados de prioridad difieren para los modos Carácter y Mapa que utilizan píxeles de reloj de color de 12 de alta resolución (modos ANTIC 2, 3 y F). Estas diferencias en el manejo de prioridades se pueden aprovechar para producir texto o gráficos en color en estos modos que tradicionalmente se consideran "monocromáticos".

En estos modos ANTIC, COLPF2 se emite como el "fondo" del campo de juego y COLBK se emite como el borde alrededor del campo de juego. Los píxeles de gráficos o glifos se emiten utilizando solo el componente de luminancia de COLPF1 mezclado con el componente de color del fondo (normalmente COLPF2).

La relación de prioridad entre Jugadores/Misiles y COLPF2 funciona de acuerdo con la tabla de prioridades que aparece a continuación. Los píxeles de Jugadores/Misiles con prioridades más altas reemplazarán a COLPF2 como color de "fondo". COLPF1 siempre tiene la prioridad más alta y no puede ser oscurecido por Jugadores o Misiles. Los píxeles de glifos/gráficos usan el componente de color del color de mayor prioridad (Campo de juego, Jugador o Misiles) y el componente de luminancia de COLPF1. Tenga en cuenta que este comportamiento también es consistente cuando los conflictos de prioridad de Jugadores/Misiles dan como resultado un negro verdadero para el "fondo". En efecto, el valor de color que CTIA/GTIA usa finalmente para el color de "fondo" "tiñe" los píxeles de glifos/gráficos de primer plano de COLPF1.

VDELAY $D01C Escribir

Gráficos P/M con retardo vertical

Este registro se utiliza para proporcionar un movimiento de línea de escaneo único cuando la resolución de jugador/misil de línea doble está habilitada en el registro DMACTL de ANTIC . Esto funciona enmascarando las actualizaciones de DMA de ANTIC en los registros GRAF* en líneas de escaneo pares, lo que hace que el patrón gráfico se desplace hacia abajo una línea de escaneo.

Dado que la resolución de línea única requiere actualizaciones de ANTIC DMA en cada línea de escaneo y VDELAY enmascara las actualizaciones en líneas de escaneo pares, este bit reduce la resolución de jugador/misil de línea única a línea doble.

GRACTL $D01D Escribir

Control de gráficos

GRACTL controla la recepción de datos DMA de jugador/misil por parte de CTIA/GTIA desde ANTIC y alterna el modo de entrada del disparador del joystick.

La recepción de datos DMA del jugador/misil requiere que CTIA/GTIA esté configurado para recibir los datos. Esto se hace con un par de bits en GRACTL que coinciden con un par de bits en el registro DMACTL de ANTIC que le indican a ANTIC que envíe datos del jugador y datos del misil. El bit 0 de GRACTL corresponde al bit 2 de DMACTL, lo que permite la transferencia de datos del misil. El bit 1 de GRACTL corresponde al bit 3 de DMACTL, lo que permite la transferencia de datos del jugador. Estos bits deben estar configurados para que GTIA reciba datos del jugador/misil de ANTIC a través de DMA. Cuando los gráficos del jugador/misil están siendo operados directamente por la CPU, estos bits deben estar desactivados.

Los registros de activación del joystick informan el estado presionado/no presionado en tiempo real. Si el sondeo de entrada de un programa no es lo suficientemente frecuente como para detectar pulsaciones momentáneas de botones del joystick, los disparadores se pueden configurar para que se bloqueen en el estado cerrado/presionado y permanezcan en ese estado incluso después de soltar el botón. La configuración del bit 2 de GRACTL permite el bloqueo de todos los disparadores. Borrar el bit hace que los disparadores vuelvan al comportamiento desbloqueado en tiempo real.

HITCLR $D01E Escribir

Colisiones claras

Cualquier escritura en este registro borra todos los bits de detección de colisión entre jugador y misil.

Otras funciones de CTIA/GTIA

Disparadores de joystick

TRIG0 $D010 Leer

SOMBRA: STRIG0 $0284

Joystick 0 gatillo

TRIG1 $D011 Leer

SOMBRA: STRIG1 $0285

Joystick 1 gatillo.

TRIG2 $D012 Leer

SOMBRA: STRIG2 $0286

Joystick 2 gatillo.

TRIG3 $D013 Leer

SOMBRA: STRIG3 $0287

Joystick 3 gatillo

Los bits 7 a 1 siempre son 0. El bit 0 informa el estado del disparador del joystick. El valor 1 indica que el disparador no está presionado. El valor 0 indica que el disparador está presionado.

El disparador registra las pulsaciones de los botones en tiempo real. El estado del botón presionado se borrará instantáneamente cuando se suelte el botón.

Los disparadores pueden configurarse para que se bloqueen, es decir, se enganchen, en el estado presionado y permanezcan así hasta que se los borre específicamente. El bit 2 de GRACTL habilita el comportamiento de enganche para todos los disparadores. Borrar el bit 2 de GRACTL hace que todos los disparadores vuelvan al comportamiento en tiempo real.

PAL $D014 Leer

Banderas PAL.

Este registro informa sobre el estándar de visualización del sistema. Cuando los bits 3 a 0 están configurados en 1 (valor $f hex /15 dec ), el sistema está funcionando en modo NTSC. Cuando los bits están en cero, el sistema está funcionando en modo PAL.

CONSPK $D01F Escribir

Altavoz de consola

Bit3 controla el altavoz interno del Atari 800/400. En los modelos posteriores, se quita el altavoz de la consola y el sonido se mezcla con las señales de audio POKEY normales para la salida al puerto del monitor y al adaptador RF. El sistema operativo Atari utiliza el altavoz de la consola para emitir el clic del teclado y el sonido de la campana/zumbador.

El sistema operativo configura el bit del altavoz durante la rutina de borrado vertical. Si se escribe repetidamente 0 en el bit, se producirá un zumbido de 60 Hz a medida que el borrado vertical restablece el valor. Se pueden generar tonos útiles utilizando el código 6502, agregando efectivamente un quinto canal de audio, aunque se trata de un canal que requiere tiempo de CPU para mantener los tonos de audio.

CONSOL $D01F Leer

Teclas de consola

Se asigna un bit para informar el estado de cada una de las teclas especiales de la consola: Inicio, Selección y Opción. El valor de bit 0 indica que se presionó una tecla y 1 indica que no se presionó una tecla. Valores de tecla/bit:

Operación de gráficos (sprites) de jugador/misil

CTIA/GTIA se encarga de un sistema de " sprites " de hardware. El nombre oficial de ATARI para el sistema de sprites es "Player/Missile Graphics", ya que fue diseñado para reducir la necesidad de manipular la memoria de visualización para objetos que se mueven rápidamente, como el "jugador" y sus armas, "misiles", en un juego de disparos .

Un jugador es esencialmente un glifo de 8 píxeles de ancho y 256 líneas de TV de alto, y tiene dos colores: el fondo (transparente) ( 0en el glifo) y el primer plano ( 1). Un objeto misil es similar, pero solo tiene 2 píxeles de ancho. CTIA/GTIA combina los píxeles de los objetos jugador/misil con los píxeles del campo de juego según su prioridad. Los 0píxeles de jugador transparentes ( ) no tienen efecto en el campo de juego y muestran un píxel de campo de juego o de fondo sin cambios. El ancho de píxel normal de todos los objetos jugador/misil es un reloj de un color. Un valor de registro puede establecer el ancho de los píxeles del jugador o del misil en 1, 2 o 4 relojes de color de ancho.

La implementación de Jugador/Misil por CTIA/GTIA es similar a la de TIA . Un Jugador es un valor o patrón de 8 bits en una posición horizontal especificada que se repite automáticamente para cada línea de escaneo o hasta que se cambie el patrón en el registro. Los misiles tienen 2 bits de ancho y comparten un registro de patrón, de modo que cuatro valores de 2 bits de ancho ocupan el registro de patrón de 8 bits de ancho, pero cada misil tiene una posición horizontal y un tamaño independientes. Los objetos Jugador/Misil extienden la altura de la pantalla, incluido el borde de la pantalla. Es decir, la implementación predeterminada de los gráficos Jugador/Misil por CTIA/GTIA es una franja a lo largo de la pantalla. Si bien parece limitado, este método facilita el uso de los gráficos Jugador/Misil como bordes verticales de colores alternativos o separadores en una pantalla, y cuando se establecen valores de prioridad para colocar los píxeles Jugador/Misil detrás de los píxeles del campo de juego, se pueden usar para agregar colores adicionales a una pantalla. Todos los Jugadores y Misiles configurados con el ancho máximo y colocados uno al lado del otro pueden cubrir todo el ancho normal del Campo de juego.

CTIA/GTIA admite varias opciones que controlan el color del jugador y del misil. El valor del registro PRIOR/GPRIOR puede cambiar los cuatro misiles entre dos opciones de visualización de color: cada misil (0 a 3) expresa el color del objeto de jugador asociado (0 a 3) o todos los misiles muestran el color del registro COLPF3/COLOR3. Cuando los misiles tienen colores similares, se los puede tratar como un quinto jugador, pero la ubicación correcta en la pantalla aún requiere almacenar valores en los cuatro registros de posición horizontal del misil. PRIOR/GPRIOR también controla una función que hace que los píxeles superpuestos de dos jugadores generen un tercer color, lo que permite objetos de jugador multicolores a expensas de reducir la cantidad de objetos disponibles. Finalmente, PRIOR/GPRIOR se puede utilizar para cambiar la superposición de capas de primer plano/fondo (llamada "prioridad") de los píxeles de jugador/misil frente a los píxeles del campo de juego, y puede crear conflictos de prioridad que afecten de manera predecible los colores mostrados.

La idea convencional de un sprite con una imagen/patrón que varía verticalmente también está incorporada en el sistema de gráficos Player/Missile. El chip ANTIC incluye una función para realizar DMA para alimentar automáticamente nuevos patrones de píxeles a CTIA/GTIA a medida que se genera la pantalla. Esto se puede hacer para cada línea de escaneo o cada dos líneas de escaneo, lo que da como resultado píxeles Player/Missile de una o dos líneas de escaneo de alto. De esta manera, el objeto Player/Missile podría considerarse un carácter extremadamente alto en una fuente, de 8 bits/píxeles de ancho, por la altura de la pantalla.

Mover los objetos Jugador/Misil horizontalmente es tan sencillo como cambiar un registro en el CTIA/GTIA (en Atari BASIC, una única instrucción POKE mueve un jugador o misil horizontalmente). Mover un objeto verticalmente se logra moviendo en bloque la definición del glifo a una nueva ubicación en el mapa de bits Jugador o Misil, o rotando todo el mapa de bits Jugador/Misil (128 o 256 bytes). La rotación en el peor de los casos de todo el mapa de bits sigue siendo bastante rápida en el lenguaje de máquina 6502, aunque el 6502 carece de una instrucción de movimiento en bloque que se encuentra en el 8080. Dado que el sprite tiene exactamente 128 o 256 bytes de longitud, la indexación se puede acomodar fácilmente en un registro de ancho de byte en el 6502. Atari BASIC carece de un comando de movimiento de memoria de alta velocidad y mover la memoria usando BASIC PEEK()s y POKE(s) es dolorosamente lento. Los programas BASIC de Atari que utilizan gráficos de Jugador/Misil tienen otras opciones para realizar movimientos de memoria a alta velocidad. Un método consiste en llamar a una rutina corta en lenguaje de máquina a través de la función USR() para realizar los movimientos de memoria. Otra opción consiste en utilizar una cadena grande como mapa de memoria de Jugador/Misil y ejecutar comandos de copia de cadena que dan como resultado un movimiento de memoria a velocidad de lenguaje de máquina.

El uso cuidadoso de los gráficos Jugador/Misil con las demás características gráficas del hardware de Atari puede hacer que la programación de gráficos, particularmente de juegos, sea significativamente más sencilla.

Mejoras de GTIA

El chip GTIA es compatible con versiones anteriores del CTIA y añade 3 interpretaciones de color para los 14 modos gráficos "normales" del campo de juego ANTIC. La interpretación de color normal del chip CTIA está limitada, por línea de escaneo, a un máximo de 4 colores en los modos de mapa o 5 colores en los modos de texto (más 4 colores para los gráficos de jugador/misil) a menos que se utilicen técnicas de programación especiales. Las tres nuevas interpretaciones de color del GTIA proporcionan un total teórico de 56 modos gráficos (14 modos ANTIC multiplicados por cuatro posibles interpretaciones de color). Sin embargo, solo los modos gráficos basados ​​en píxeles de reloj de color de 12 de alta resolución (es decir, los modos de texto Antic 2, 3 y el modo gráfico F) son capaces de expresar por completo las paletas de color de estas 3 nuevas interpretaciones de color. Las tres interpretaciones de color adicionales utilizan la información de dos relojes de color (cuatro bits) para generar un píxel en uno de los 16 valores de color. Esto cambia la visualización en modo F de 2 colores por píxel, 320 píxeles en sentido horizontal y una línea de escaneo por línea de modo a 16 colores y 80 píxeles en sentido horizontal. Las interpretaciones de color adicionales permiten lo siguiente:

De estos modos, destaca especialmente Atari BASIC Graphics 9, que permite al Atari mostrar fotografías digitalizadas en escala de grises, que a pesar de su baja resolución eran muy impresionantes en su momento. Además, al permitir 16 tonos de un mismo tono en lugar de los 8 tonos disponibles en otros modos gráficos, aumenta la cantidad de colores diferentes que el Atari podía mostrar de 128 a 256. Desafortunadamente, esta función está limitada para su uso solo en este modo, que debido a su baja resolución no se usaba ampliamente.

Los modos de texto Antic 2 y 3 pueden mostrar los mismos rangos de color que los gráficos del modo F cuando se utilizan las interpretaciones de color alternativas de GTIA. Sin embargo, dado que la reducción de píxeles también se aplica y convierte un texto de 8 píxeles de ancho y 2 colores en bloques de 2 píxeles de ancho y 16 colores, estos modos no son adecuados para el texto real, por lo que estos modos gráficos no son populares fuera de las demostraciones. El uso efectivo de la función de interpretación de color de GTIA con modos de texto requiere un conjunto de caracteres cuidadosamente construido que trate a los caracteres como píxeles. Este método permite la visualización de un modo gráfico GTIA de "alta resolución" aparente que normalmente ocuparía 8K de RAM para utilizar en su lugar solo unos 2K (1K para el conjunto de caracteres y 1K para la RAM de la pantalla y la lista de visualización).

GTIA también corrigió un error en CTIA que causaba que los gráficos se desalinearan en "medio reloj de color". El efecto secundario de la corrección fue que los programas que dependían de artefactos de color en modos monocromáticos de alta resolución mostraban un par de colores diferente. [5] [15]

Los propietarios de Atari pueden determinar si su máquina está equipada con el CTIA o GTIA ejecutando el comando BASICPOKE 623,64 . Si la pantalla se vuelve negra después de la ejecución, la máquina está equipada con el nuevo chip GTIA. Si permanece azul, la máquina tiene un chip CTIA en su lugar.

Insectos

Las últimas computadoras Atari XE fabricadas para el mercado de Europa del Este se fabricaron en China. Muchas, si no todas, tienen un chip GTIA PAL defectuoso . Los valores de luminancia en Graphics 9 y superiores son defectuosos y aparecen como rayas. Reemplazar el chip soluciona el problema. Además, ha habido intentos de reparar chips GTIA defectuosos con algún circuito externo.

Véase también

Referencias

  1. ^ Manual de servicio técnico de Atari Home Computer - 400/800 (PDF) . Atari, Inc. págs. 1–10 . Consultado el 10 de septiembre de 2010 .
  2. ^ Neubauer, Doug (20 de junio de 2009). "Los años de Atari, por Doug Neubauer. Star Raiders, Solaris y Pokey". DougNeubauer.com .
  3. ^ abc Sherer, Robin Alan (junio de 1988). "GTIA Joystick Painter: una potente herramienta de animación para Atari". ANTIC . 7 (2): 37. ISSN  0113-1141 . Consultado el 26 de enero de 2011 .
  4. ^ Patente estadounidense 4296476, Mayer, Steven T.; Miner, Jay G .; Neubauer, Douglas G.; Decuir, Joseph C., "Sistema de procesamiento de datos con generador de gráficos programable", expedida el 20 de octubre de 1981, asignada a Atari, Inc. 
  5. ^ abcde Patchett, Craig; Sherer, Robin (1984). "Chips especiales y ROM". El mapa maestro de memoria para Atari. Reston, Va.: Reston Publishing Company. ISBN 0-8359-4242-2. Recuperado el 26 de enero de 2011 .
  6. ^ abcde Mace, Scott (15 de marzo de 1982). «Atari cambia silenciosamente a un chip gráfico de 16 colores». InfoWorld . 4 (10). Palo Alto, CA: Popular Computing: 3–4. ISSN  0199-6649 . Consultado el 1 de febrero de 2011 .
  7. ^ ab Chamberlain, Craig (julio de 1982). "Atari Video Graphics And The New GTIA". Compute! (26): 124. ISSN  0194-357X . Consultado el 24 de enero de 2011 .
  8. ^ abc Joe Decuir, "Tres generaciones de arquitectura de máquinas de juego", CGEXPO99
  9. ^ ab Small, David; Small, Sandy; Blank, George (mayo de 1983). "Filosofía de diseño y demostraciones de GTIA". The Creative Atari. Creative Computing Press. ISBN 978-0-916688-34-9. Recuperado el 26 de enero de 2011 .
  10. ^ Switzer, Steve (octubre de 1983). «Atari Clinic». ANTIC . 2 (7): 103. ISSN  0113-1141 . Consultado el 1 de febrero de 2011 .
  11. ^ Michael Current, "¿Qué son los chips SALLY, ANTIC, CTIA/GTIA, POKEY y FREDDIE?", Computadoras Atari de 8 bits: preguntas frecuentes
  12. ^ abcde Boris, Dan. "Fichas Atari". Página de inicio de Dan B. Consultado el 1 de febrero de 2011 .
  13. ^ Vendel, Curt. "Atari 800XLCR". AtariMuseum.com . Archivado desde el original el 13 de septiembre de 2011. Consultado el 1 de febrero de 2011 .
  14. ^ Vendel, Curt. "KERI Performance Tester". AtariMuseum.com . Archivado desde el original el 13 de septiembre de 2011. Consultado el 1 de febrero de 2011 .
  15. ^ Small, David; Small, Sandy; Blank, George, eds. (1983). "El mago, la princesa y el Atari". El Atari creativo. Creative Computing Press. ISBN 0916688348.

Enlaces externos