
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 utilizados en las computadoras Atari de 8 bits y la consola de videojuegos doméstica Atari 5200. En estos sistemas, un chip CTIA o GTIA trabaja junto con ANTIC para producir la visualización de video. ANTIC genera los gráficos del área de juego (texto y mapa de bits), mientras que CTIA/GTIA proporciona el color para el área de juego y agrega 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 ]
Color Television Interface Adaptor y Graphic Television Interface Adaptor son los nombres de los chips, tal como se indica en el manual de servicio 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" es de George. [ 3 ] [ 5 ] [ 6 ] [ 7 ]
Historia
Consola de juegos Atari 2600 y TIA
Atari creó su primer chip controlador de pantalla, el Adaptador de Interfaz de Televisión (TIA), como parte de la consola Atari 2600. [ 8 ] La pantalla TIA genera cuatro objetos principales en movimiento (dos "jugadores" y dos "misiles") sobre un fondo de "campo de juego". Todos los elementos de una línea de pantalla se generan a partir de datos simples en registros de memoria y producen señales digitales temporizadas que un convertidor digital-analógico y un modulador de RF pueden convertir en una línea de visualización de televisión. Entre líneas (durante el retroceso horizontal del haz de vídeo), el microprocesador 6507 de la 2600 podía cambiar el contenido de la siguiente línea actualizando los registros. Este esquema evitaba el uso de un búfer de fotogramas de vídeo, que habría sido demasiado caro con la tecnología y los precios de la RAM de mediados de la década de 1970. Con el tiempo, los programadores de la 2600 desarrollaron técnicas que mostraban más sprites actualizando los registros durante una línea para que repitiera los mismos sprites de hardware.
CTIA
Atari estimó inicialmente que la 2600 tendría una corta vida útil en el mercado de tres años cuando se diseñó en 1976, lo que significaba que la compañía necesitaría un nuevo diseño para 1979. [ 8 ] Al principio, este iba a ser una consola de juegos actualizada similar a la 2600, construida alrededor de un diseño básico similar mejorado. El trabajo en lo que se convertiría en la CTIA comenzó en 1977, y tenía como objetivo ofrecer el doble de resolución de pantalla con el doble de número de colores. Además, al variar el número de colores en el área de juego, se podían admitir resoluciones mucho más altas de hasta 320 píxeles horizontalmente. Los jugadores y los misiles también se actualizaron, permitiendo cuatro jugadores de 8 bits y cuatro misiles de 2 bits con un modo adicional que combinaba los cuatro misiles en un quinto jugador.
Poco después de que comenzara el diseño, en la segunda mitad de 1977, la revolución de las computadoras domésticas comenzó en serio. En respuesta, Atari decidió lanzar dos versiones de la nueva máquina: un modelo de gama baja como consola de juegos y un modelo de gama alta como computadora doméstica. [ 8 ] El juego de carreras de la 2600 fue un resultado inesperado pero bienvenido de su diseño de bajo costo y la compañía quería que la nueva máquina fuera igualmente flexible. [ 9 ] Para cualquiera de los modelos, se necesitaría un campo de juego más complejo, con soporte para gráficos de caracteres en el rol de computadora. El diseño del CTIA estaba muy avanzado en este punto, así que en lugar de un rediseño, se agregó un segundo chip que automatizaría efectivamente el proceso de carreras de la viga que el microprocesador de la 2600 había realizado. En lugar de que el microprocesador actualizara los registros del CTIA en función de su tiempo de interrupción , el nuevo chip ANTIC se encargaría de esta tarea leyendo datos de video de un búfer de fotogramas y escribiéndolos en el CTIA sobre la marcha.
Como resultado de estos cambios, los nuevos chips ofrecen una cantidad y selección de modos gráficos mucho mayores que los del TIA. En lugar de un único modo de juego con una resolución de 20 o 40 bits, el par CTIA/ANTIC puede mostrar seis modos de texto y ocho modos gráficos con diversas resoluciones y profundidades de color. Esto permite al programador elegir un equilibrio entre resolución, colores y uso de memoria para su pantalla.
CTIA vs. GTIA


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 que presentan 1 bit por píxel, 2 colores con píxeles de ancho de reloj de color de la mitad como 4 bits por píxel, hasta 16 colores, píxeles de ancho de reloj de color 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 encargado un lote de aproximadamente 100 000 chips CTIA sin los modos gráficos. Para no desechar 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 ese momento, todas las nuevas unidades Atari se equiparon con el nuevo chip, ahora llamado GTIA, que admitía los nuevos modos de interpretación de color. [ 6 ] [ 10 ]
El sistema operativo original de Atari 800/400 admitía los modos de interpretación de color alternativos GTIA desde el principio, [ 10 ] lo que permitía reemplazar fácilmente el CTIA por el GTIA una vez que estuviera listo. Los centros de servicio autorizados de Atari instalaban un chip GTIA en las 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 instaló en todos los ordenadores Atari XL y XE posteriores, así como 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 propio hardware, sin incluir los resultados obtenidos mediante interrupciones gestionadas por la CPU o núcleos de visualización que generan cambios frecuentes en los registros.
CTIA/GTIA es un dispositivo de interfaz de televisión con las siguientes características:
- Interpreta el flujo de datos gráficos del campo de juego procedente de ANTIC para aplicar color a la pantalla.
- Combina cuatro objetos de superposición de jugador y cuatro de misil (también conocidos como sprites ) con los gráficos del campo de juego de ANTIC. Las características del jugador/misil incluyen:
- El posicionamiento de píxeles del jugador/misil es independiente del área de juego:
- Los objetos Jugador/Misil funcionan con normalidad en las áreas de sobreexploración vertical y horizontal que se encuentran más allá del área de juego mostrada.
- Los objetos Jugador/Misil funcionan normalmente sin un Campo de juego ANTIC.
- Objetos Jugador de ocho bits de ancho y objetos Misil de dos bits de ancho, donde cada bit representa un píxel mostrado.
- Ancho de píxeles variable (1, 2 o 4 colores de ancho)
- Cada objeto Jugador/Misil tiene una altura vertical equivalente a la altura total de la pantalla.
- Altura de píxel variable cuando los datos son suministrados por ANTIC DMA ( líneas de escaneo simples o dobles por dato).
- Capacidad para desplazar de forma independiente cada objeto P/M una línea de escaneo verticalmente cuando se trabaja con líneas de escaneo dobles por dato.
- Cada jugador y su misil asociado tienen un registro de color dedicado, separado de los colores del tablero de juego.
- Múltiples esquemas de prioridad para el orden de las capas gráficas (gráficos P/M frente al área de juego).
- Fusión de colores entre los jugadores y el tablero de juego, lo que produce colores adicionales.
- Fusión de colores entre pares de jugadores que produce jugadores multicolores.
- Los misiles se pueden agrupar en un Quinto Jugador que utiliza un registro de color independiente.
- Detección de colisiones entre jugadores, misiles y gráficos del campo de juego.
- El posicionamiento de píxeles del jugador/misil es independiente del área de juego:
- No existen colores fijos para el modo de interpretación de color normal (CTIA). Todos los colores se generan mediante indirección a través de nueve registros de color. (Cuatro para los gráficos del jugador/misil, cuatro para el campo de juego y uno compartido entre el campo de juego y la función del quinto jugador).
- El modo de interpretación de color normal ofrece la posibilidad de elegir colores de una paleta de 128 colores (16 colores con 8 valores de luminancia cada uno).
- El modo de interpretación de color GTIA puede generar 16 luminancias por color, lo que proporciona una paleta de 256 colores.
- La versión GTIA del chip añade tres modos alternativos de interpretación de color para los gráficos del tablero de juego.
- 16 tonalidades de un mismo color , de las 16 posibles en la paleta de Atari. Esta función está disponible en Atari BASIC como Graphics 9.
- 15 tonalidades en un único valor de tono/luminancia más fondo. Esto está disponible en Atari BASIC como Graphics 11.
- Nueve colores en cualquier tono y luminosidad de la paleta, logrados utilizando todos los registros de color del Jugador/Misil y del Campo de Juego. Esto es accesible en Atari BASIC como Gráficos 10.
- Lee el estado de los gatillos del joystick (solo los botones inferiores en los controladores de Atari 5200).
- Incluye cuatro pines de entrada/salida que se utilizan de diferentes maneras según el sistema:
- En los ordenadores Atari de 8 bits, tres de los pines se utilizan para leer el estado de las teclas de la consola (Start/Select/Option).
- El cuarto pin controla el altavoz integrado en el Atari 400/800 para generar los clics del teclado. En los modelos posteriores no hay altavoz, pero el sonido de las teclas sigue siendo generado por GTIA y mezclado con la salida de audio normal.
- En el Atari 5200, los pines se utilizan como parte del proceso para leer los teclados del controlador.
Versiones
por número de pieza
- C012295 — NTSC CTIA [ 11 ] [ 12 ]
- C014805 — NTSC GTIA [ 13 ]
- C014889 — PAL GTIA [ 13 ]
- C020120 — SECAM GTIA francés (FGTIA) [ 13 ]
Atari, Inc. tenía la intención de combinar las funciones de los chips ANTIC y GTIA en un solo circuito integrado para reducir los costos de producción de las computadoras Atari y las consolas 5200. Se estaban desarrollando dos prototipos de estos circuitos, pero ninguno llegó a producirse en serie.
Diagrama de pines

Registros
Los ordenadores Atari de 8 bits asignan CTIA/GTIA a la página hexadecimal $D0xx , mientras que 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 tablero de juego, los gatillos del joystick y las teclas de la consola. Muchas direcciones de registro de CTIA/GTIA tienen doble función, ya que realizan distintas tareas como registros de lectura y escritura. Por lo tanto, ningún código debe leer los registros de hardware esperando recuperar el valor escrito previamente.
Este problema se resuelve para muchos registros de escritura mediante los registros de sombra del sistema operativo, implementados en la memoria RAM convencional para almacenar el último valor escrito en los registros. Estos registros se copian de la RAM a los registros de hardware durante el borrado vertical . Por lo tanto, cualquier escritura en los registros de hardware que tengan registros de sombra correspondientes será sobrescrita por el valor de dichos registros durante el siguiente borrado vertical.
Algunos registros de escritura no tienen registros de sombra correspondientes. Una aplicación puede escribir en ellos de forma segura sin que su valor se sobrescriba durante el borrado vertical. Si la aplicación necesita conocer el último estado del registro, es su responsabilidad recordar qué información escribió.
También existen registros de sombra del sistema operativo para algunos registros de lectura, donde la lectura del valor directamente del hardware en una etapa desconocida del 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 más significativo 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 pueden moverse a áreas de sobreexploración más allá del modo de Campo de juego actual.
Tenga en cuenta que, si bien los patrones de bits de los objetos Misile comparten el mismo byte para los píxeles mostrados ( GRAFM ), cada Misile puede posicionarse de forma independiente. Cuando se habilita la opción "quinto jugador" (consulte el registro PRIOR/GPRIOR ), que convierte los cuatro Misiles en un solo "Jugador", estos cambian su color, pasando de mostrar el objeto Jugador asociado a mostrar el valor de COLPF3. La posición del nuevo "Jugador" en pantalla debe establecerse especificando la posición de cada Misile individualmente.
Los píxeles del jugador/misil solo se renderizan dentro de las porciones visibles del motor de píxeles de GTIA. Los objetos del jugador/misil no se renderizan durante el espacio en blanco horizontal ni el espacio en blanco vertical. Sin embargo, un objeto puede estar parcialmente dentro del espacio en blanco horizontal. Los píxeles de los objetos que caen fuera del espacio en blanco horizontal están entonces dentro de la porción visible de la pantalla y aún pueden registrar colisiones. El rango de posición horizontal de los relojes de color visibles es de $22 hexadecimal /34 dec a $DD hexadecimal /221 dec .
Para eliminar un objeto Jugador/Misil del área de visualización visible, las posiciones horizontales (izquierda) 0 y (derecha) $DE hexadecimal /222 decimal (o superior) garantizarán que no se rendericen píxeles independientemente del tamaño del objeto Jugador/Misil y, por lo tanto, no se podrán marcar colisiones no intencionadas.
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 de color del reloj de los bordes izquierdo y derecho de los posibles tamaños del campo de juego, útiles para alinear los objetos del jugador/misil con los componentes del campo de juego:
Control del tamaño del jugador/misil
Se pueden elegir tres tamaños: Normal, Doble y Cuádruple. El borde izquierdo (ver Coordenadas horizontales ) es fijo y el ajuste de tamaño expande al jugador o misil hacia la derecha en todos los casos.
- Normal - 1 bit (pixel) is 1 color clock wide
- Double - 1 bit (pixel) is 2 color clocks wide
- Quad - 1 bit (pixel) is 4 color clocks wide
Note that in Quad size a single Player/Missile pixel is the same width as an Antic Mode 2 text character. Player/Missile priority selection mixed with Quad width Player Missile graphics can be used to create multiple text colors per Mode line.
Each Player has its own size control register:
SIZEP0 $D008 Write
Size of Player 0
SIZEP1 $D009 Write
Size of Player 1
SIZEP2 $D00A Write
Size of Player 2
SIZEP3 $D00B Write
Size of Player 3
Player size controls:
Values:
SIZEM $D00C Write
All Missile sizes are controlled by one register, but each Missile can be sized independently of the others. When the "fifth Player" option is enabled (See PRIOR/GPRIOR register) turning the four Missiles into one "Player" the width is still set by specifying the size for each Missile individually.
Values:
Player/Missile Graphics Patterns
Each Player object has its own 8-bit pattern register. Missile objects share one register with 2 bits per each Missile. Once a value is set it will continue to be displayed on each scan line. With no other intervention by CPU or ANTIC DMA to update the values the result is vertical stripe patterns the height of the screen including overscan areas. This mode of operation does not incur a CPU or DMA toll on the computer. It is useful for displaying alternate colored borders and vertical lines separating screen regions.
GRAFP0 $D00D Write
Graphics pattern for Player 0
GRAFP1 $D00E Write
Graphics pattern for Player 1
GRAFP2 $D00F Write
Graphics pattern for Player 2
GRAFP3 $D010 Write
Graphics pattern for Player 3
Each Player is 8 bits (pixels) wide. Where a bit is set, a pixel is displayed in the color assigned to the color register associated to the Player. Where a bit is not set the Player object is transparent, showing Players, Missiles, Playfield pixels, or the background color. Pixel output begins at the horizontal position specified by the Player's HPOS value with the highest bit output first.
GRAFM $D011 Write
Graphics pattern for all Missiles
Cada misil tiene un ancho de 2 bits (píxeles). Cuando un bit está activado, el píxel se muestra con el color asignado al registro de color del jugador asociado al misil. Cuando el quinto jugador está habilitado (ver PRIOR/GPRIOR ), todos los píxeles de los misiles muestran COLPF3. Cuando un bit no está activado, el objeto misil es transparente, mostrando los píxeles de los jugadores, los misiles, el 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 del bit más significativo primero.
Valores del misil:
Colisiones entre jugadores y misiles
CTIA/GTIA cuenta con 60 bits que permiten la detección automática de colisiones cuando los píxeles del jugador, el misil y el área de juego se superponen. Un bit indica que un píxel distinto de cero del objeto jugador/misil ha superpuesto un píxel de un registro de color específico. No se registra ninguna colisión para los píxeles renderizados con el registro/valor de color de fondo. Este sistema proporciona una comparación de superposición instantánea y precisa, sin necesidad de una costosa evaluación por parte de la CPU del cuadro delimitador o del enmascaramiento del mapa de bits de la imagen.
El valor de color real de un objeto no se tiene en cuenta. Si los registros de color del jugador, el misil, el campo de juego y el fondo tienen el mismo valor, lo que hace que los objetos sean prácticamente invisibles, las intersecciones de los objetos seguirán registrando colisiones. Esto resulta útil para crear objetos y paredes ocultos o secretos.
Las intersecciones ocultas también registrarán colisiones. Si la prioridad de un objeto Jugador está detrás de un registro de color del Campo de juego y la prioridad de otro objeto Jugador es mayor (primer plano) que la del Campo de juego, y los píxeles del Jugador en primer plano ocultan tanto el Campo de juego como el objeto Jugador que se encuentra detrás del Campo de juego, entonces la colisión entre el Campo de juego y los objetos Jugador en segundo plano y en primer plano se registrará junto con la colisión entre los objetos Jugador en primer plano y en segundo plano.
Cabe señalar que no hay colisión entre misiles.
Las colisiones entre el jugador y el misil solo pueden ocurrir cuando los píxeles del objeto se encuentran dentro de las partes visibles de la pantalla. Los objetos del jugador y del misil no se renderizan durante el borrado horizontal ni el borrado vertical. El rango de colores visibles es de 34 a 221, y las líneas de escaneo visibles van de la línea 8 a la línea 247. Los datos del jugador y del misil que se encuentren fuera de estas coordenadas no se renderizan y no registrarán colisiones. Un objeto puede estar parcialmente dentro del borrado horizontal. Los píxeles del objeto que quedan fuera del borrado horizontal se encuentran 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 rendericen píxeles independientemente del tamaño del objeto Jugador/Misil y, por lo tanto, no se podrán marcar colisiones no intencionadas.
Finalmente, la detección de colisiones de objetos de jugador, misil y campo de juego es en tiempo real, registrando una colisión a medida que los píxeles de la imagen se fusionan y se muestran. Si se comprueban los bits de colisión de un objeto antes de que CTIA/GTIA lo haya renderizado, no se detectará ninguna colisión.
Una vez establecidas, las colisiones permanecen activas hasta que se borran escribiendo en el registro HITCLR . Las rutinas de respuesta a colisiones eficaces deben ejecutarse después de que se hayan mostrado los objetos objetivo, o al final de un fotograma o durante el espacio en blanco vertical para reaccionar a las colisiones y borrarlas antes de que comience el siguiente fotograma.
Dado que las colisiones representan un solo bit, es evidente que no son aditivas. Independientemente de la cantidad de veces y la ubicación de las colisiones entre píxeles dentro de un fotograma, solo hay un bit que indica que hubo una colisión. Un bit de colisión activado le indica al programa que puede examinar los objetos relacionados para identificar las ubicaciones de las colisiones y, a continuación, decidir cómo reaccionar en cada una de ellas.
Dado que HITCLR y la detección de colisiones son en tiempo real, las interrupciones de la lista de visualización pueden dividir la visualización en secciones, utilizando HITCLR al principio de cada sección y realizando una evaluación de colisiones independiente al final de cada sección.
Cuando se habilita la opción "quinto jugador" (véase el registro PRIOR/GPRIOR ), el único cambio es que los misiles del 0 al 3 dejan de mostrar el color del objeto Jugador asociado y empiezan a mostrar el valor de COLPF3. Las nuevas colisiones del "Jugador" se siguen registrando para cada misil.
Colisiones entre jugador/misil y el campo de juego
Cada bit indica que un píxel del objeto Jugador/Misil ha colisionado con un píxel del objeto del color del Campo de juego especificado. No se ha registrado ninguna colisión para el color de fondo.
Las intersecciones ocultas también registrarán colisiones. Si la prioridad de un objeto Jugador/Misil está detrás de un registro de color del Campo de juego y la prioridad de otro objeto Jugador/Misil es mayor (primer plano) que la del Campo de juego, y los píxeles del Jugador/Misil en primer plano ocultan tanto el Campo de juego como el objeto Jugador/Misil que se encuentra detrás del Campo de juego, entonces se registrará la colisión entre el Campo de juego y los objetos Jugador/Misil tanto en segundo plano como en primer plano.
Los modos de píxeles de reloj de color de alta resolución y 1/2 ( modos ANTIC 2, 3 y F) se tratan de manera diferente. El color de "fondo" representado como COLPF2 donde los valores de los 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 ancho 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 las colisiones del campo de juego. En el modo GTIA 10, las colisiones del campo de juego se registrarán donde los píxeles del campo de juego utilicen COLPF0 a COLPF3.
M0PF $D000 Leer
Colisiones del misil 0 con el campo de juego
M1PF $D001 Leer
Colisiones del misil 1 con el campo de juego
M2PF $D002 Leer
Colisiones del misil 2 con el campo de juego
M3PF $D003 Leer
Colisiones del misil 3 con el campo de juego
P0PF $D004 Leer
Colisiones del jugador 0 con el campo de juego
P1PF $D005 Leer
Colisiones del jugador 1 con el campo de juego
P2PF $D006 Leer
Colisiones del jugador 2 con el campo de juego
P3PF $D007 Leer
Colisiones del jugador 3 con el campo de juego
Colisiones de misiles con jugadores
Los misiles chocan con los jugadores y los tableros de juego. No hay colisión entre misiles.
M0PL $D008 Leer
Colisiones del misil 0 con el jugador
M1PL $D009 Leer
Colisiones del misil 1 con el jugador
M2PL $D00A Leer
Colisiones del misil 2 con el jugador
M3PL $D00B Leer
Colisiones del misil 3 con el jugador
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 el jugador 0 y el jugador
P1PL $D00D Leer
Colisiones entre jugadores 1 y 2
P2PL $D00E Leer
Colisiones entre el jugador 2 y el jugador 3
P3PL $D00F Leer
Colisiones entre el jugador 3 y el jugador 3
Color y luminosidad del jugador/misil y del campo de juego
En el modo de interpretación de color CTIA/GTIA predeterminado, todos los píxeles de los objetos Jugador/Misil y del Campo de Juego utilizan la indirección para especificar el color. Esto significa que los valores de los datos de los píxeles no especifican directamente el color, sino que remiten a otra fuente de información. CTIA/GTIA contiene registros de hardware que establecen los valores utilizados para los colores, y la información de los píxeles hace referencia a estos registros. La paleta de Atari consta de 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 a la finalidad de su visualización.
Todos los registros de color de hardware tienen registros de sombra correspondientes.
COLPM0 $D012 Escribir
SOMBRA: PCOLOR0 $02C0
Color/luminancia del jugador y del misil 0.
Cuando se habilita el modo GTIA de 9 colores ( 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 del misil 1.
COLPM2 $D014 Escribir
SOMBRA: PCOLOR2 $02C2
Color/luminancia del jugador y del misil 2.
COLPM3 $D015 Escribir
SOMBRA: PCOLOR3 $02C3
Color/luminancia del jugador y del misil 3.
COLPF0 $D016 Escribir
SOMBRA: COLOR0 $02C4
Color/luminancia del área de juego 0.
COLPF1 $D017 Escribir
SOMBRA: COLOR1 $02C5
Color/luminosidad del Campo de juego 1.
Este registro se utiliza para los píxeles configurados (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, que se combina mediante una operación OR con el valor de color de COLPF2 . En otros modos de carácter y 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 área de juego en los modos de texto ANTIC 2 y 3, y en el modo de mapa F. Es decir, donde se utiliza el valor de píxel 0. En los demás modos de carácter y mapa, 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:
- Cuando los misiles se convierten en el "quinto jugador", dejan de mostrar el color del objeto jugador asociado y empiezan a mostrar COLPF3, además de cambiar su prioridad. Consulte el registro PRIOR/GPRIOR .
- Modos de texto del tablero de juego 4 y 5. Los caracteres de vídeo invertidos (bit alto $80 activado) hacen que CTIA/GTIA sustituya el valor COLPF3 por los píxeles COLPF2 en la matriz de caracteres. (Ver Representación de glifos de ANTIC ).
- Modos de texto del campo de juego 6 y 7. Cuando el valor del carácter tiene los bits 6 y 7 activados (rango de caracteres $C0-FF), se muestra toda la matriz de píxeles del carácter en COLPF3. (Consulte la representación de glifos de ANTIC ).
- Este registro también está disponible en el modo de color especial de GTIA de 9 colores con indirección de píxeles.
COLBK $D01A Escribir
SOMBRA: COLOR4 $02C8
Color/luminosidad del fondo del tablero de juego.
El color de fondo se muestra donde no aparece ningún otro píxel en toda el área de visualización de sobreexploración. Se dan las siguientes excepciones para el fondo:
- En los modos de texto 2 y 3 de ANTIC, y en el modo de mapa F, el fondo del área de juego donde se pueden renderizar los píxeles proviene de COLPF2 y el color COLBK aparece como un borde alrededor del área de juego.
- En el modo de interpretación de color GTIA $8 (9 indirecciones de color), el color de fondo de la pantalla lo proporciona el registro de color COLPM0, mientras que COLBAK se utiliza para el valor de píxel del campo de juego $8.
- En el modo de interpretación de color GTIA $C (15 colores en un nivel de luminancia, más el fondo) se utiliza COLBK para establecer el nivel de luminancia de todos los demás píxeles (valores de píxel $1 a $F). Sin embargo, el fondo en sí solo utiliza el componente de color establecido en el registro COLBK. El valor de luminancia del fondo se fuerza a 0.
Bits de los registros de color :
El nibble alto del registro de color especifica uno de los 16 colores color ($00, $10, $20... hasta $F0).
El nibble bajo del registro especifica uno de los 16 valores de luminancia ($00, $01, $02... hasta $0F).
En el modo de interpretación de color normal, el bit menos significativo no es relevante 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 consta de 128 valores de color.
En el modo de interpretación de color GTIA $4 (modo solo de luminancia), los 16 bits completos de valores de luminancia están disponibles para los píxeles del tablero de juego, lo que proporciona una paleta de 256 colores. Cualquier objeto de jugador o misil que se muestre en este modo se colorea mediante indirección, 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, que normalmente corresponden a los registros de color COLBK, COLPF0, COLPF1 y COLPF2, respectivamente. Los modos de texto en color también incluyen opciones para usar COLPF3 en ciertos rangos de valores de caracteres. Consulte los modos gráficos de ANTIC para obtener más información.
Cuando se habilitan los patrones gráficos del jugador/misil para su visualización, donde se establecen los bits de los patrones gráficos, el color que se muestra proviene de los registros asignados a los objetos.
Existen excepciones para la generación y visualización del color:
- Modos de texto ANTIC 2 y 3, y modo de mapa F:
- En estos modos, los valores de píxel son solo $0 y $1. Los píxeles $0 especifican el fondo del área de juego, que corresponde al registro de color COLPF2. Los píxeles $1 utilizan el componente de color de COLPF2 y la luminancia especificada por COLPF1. El borde alrededor del área de juego utiliza el color de COLBK.
- Los modos de texto 2 y 3 de ANTIC, y el modo de mapa F se comportan de manera diferente con los gráficos de Jugador/Misil que los demás modos. COLPF1, utilizado para los píxeles de glifos o gráficos, siempre tiene la máxima prioridad y no puede ser ocultado por Jugadores o Misiles. El color de COLPF1 siempre proviene del "fondo", que normalmente es COLPF2. Por lo tanto, cuando los Jugadores/Misiles y el Quinto Jugador tienen prioridad sobre COLPF2, los píxeles de glifos/gráficos de COLPF1 utilizan el componente de color del color de mayor prioridad (Jugador o Misile) y el componente de luminancia de COLPF1. Este comportamiento es consistente cuando los conflictos de prioridad de Jugador/Misil dan como resultado un negro verdadero para el "fondo". En resumen, el color que CTIA/GTIA finalmente determina usar "detrás" del píxel de alta resolución se utiliza luego para "teñir" los píxeles de glifos/gráficos de primer plano de COLPF1.
- Excepciones de GTIA
- El modo de interpretación de color GTIA $8 (9 indirecciones de color) utiliza el registro de color COLPM0 para el color de fondo y borde de la pantalla, mientras que COLBAK se utiliza para el valor de píxel del campo de juego $8.
- El modo de interpretación de color GTIA $C (15 colores en un nivel de luminancia, más el fondo) utiliza COLBK para establecer el nivel de luminancia de todos los demás píxeles (valores de píxel $1 a $F). Sin embargo, el fondo solo utiliza el componente de color establecido en el registro COLBK. El valor de luminancia del fondo se fuerza a 0. Cabe destacar que el componente de color del fondo también se combina mediante una operación OR con los colores de los demás píxeles. Por lo tanto, el número total de colores en este modo se reduce cuando el componente de color del fondo no es negro (numéricamente cero).
- Excepciones de jugador/misil:
- El valor de Prioridad de jugador/misil $0 (Ver PRIOR/GPRIOR ) hará que los píxeles superpuestos de Jugador y Campo de juego se combinen mediante OR mostrando un color diferente.
- Una configuración conflictiva de Prioridad de Jugador/Misil provocará que se muestre un negro puro (color 0, luminancia 0) donde se produzcan conflictos.
- La opción "Jugador/Misil multicolor" hará que los píxeles superpuestos del jugador se combinen mediante una operación OR para mostrar un color diferente.
Uso de registros de color por modos de caracteres ANTIC :
Uso de registros de color por modos de mapa ANTIC :
Uso de registros de color por modos GTIA (ANTIC F) :
Los colores del jugador/misil siempre están disponibles para los objetos del jugador/misil en todos los modos, aunque los colores pueden modificarse cuando los modos especiales GTIA (16 tonos/16 colores) están activos.
Controles varios del jugador/misil y GTIA
ANTERIOR $D01B Escribir
SOMBRA: GPRIOR $026F
Este registro controla varias funciones de gestión de color de CTIA/GTIA : el modo de interpretación de color del campo de juego de GTIA, los objetos de jugador multicolor, el quinto jugador y la prioridad de jugador/misil/campo de juego.
Interpretaciones de los colores del campo de juego de GTIA
CTIA incluye un único modo de interpretación de color predeterminado para el flujo de datos del campo de juego ANTIC. Esta es la funcionalidad básica que se asume en la mayoría de las discusiones sobre ANTIC y CTIA/GTIA, salvo 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 emparejando relojes de color adyacentes de ANTIC, por lo que los píxeles generados por GTIA siempre tienen un ancho de dos relojes de color. Si bien estos modos pueden activarse al mostrar cualquier modo de campo de juego ANTIC, la paleta de colores completa posible con estas opciones de procesamiento de color de GTIA solo se logra en los modos ANTIC basados en píxeles de 1/2 reloj de color (modos ANTIC 2, 3, F). Estas opciones de GTIA se utilizan con mayor frecuencia con una pantalla en modo F. Los modos especiales de procesamiento de color de GTIA también alteran la visualización o el comportamiento de los gráficos del jugador/misil de diversas 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 combinar de forma nativa en una misma pantalla los distintos modos de interpretación de color de GTIA con el modo CTIA predeterminado necesario para la mayoría de los campos de juego ANTIC. La combinación de modos de interpretación de color requiere que el software escriba en el registro PRIOR mientras se genera la pantalla (normalmente, mediante una interrupción de la lista de pantallas).
Los bits 7 y 6 de PRIOR proporcionan cuatro valores que especifican los modos de interpretación del color:
16 tonos
Este modo utiliza el registro COLBK para especificar el color de fondo. En lugar de usar indirección, los valores de los píxeles representan directamente la luminancia. Este modo permite usar los cuatro bits de luminancia de la paleta de colores de Atari, por lo que puede mostrar 256 colores.
En este modo, los gráficos de Jugador/Misil (sin la opción de quinto Jugador) se muestran correctamente; sin embargo, la detección de colisiones con el Campo de Juego está desactivada. La prioridad del Campo de Juego siempre se sitúa en la parte inferior. Cuando los Misiles se configuran para actuar como un quinto Jugador, en las zonas donde los objetos Misiles se superponen al Campo de Juego, la luminancia de los píxeles de los 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 de color. Los nueve registros de color funcionan en la pantalla para 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 ciclo de reloj de color (la mitad de un píxel en modo GTIA) al emitirse. Este desfase permite efectos interesantes. Por ejemplo, al pasar rápidamente de una página a otra en modo GTIA, 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 con valor de Playfield 0) en lugar de COLBK .
Los gráficos de Jugador/Misil se muestran correctamente, con la excepción de que el 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 del Jugador/Misil se modifican mediante la configuración de prioridades como si fueran objetos Jugador/Misil, por lo que pueden afectar a la visualización de Jugadores/Misiles. (Véase la explicación posterior sobre las prioridades de Jugador/Misil/Campo de juego).
Los píxeles del tablero que utilizan los colores del jugador o del misil no provocan colisiones cuando los objetos del jugador o del misil se superponen a ellos. Sin embargo, los gráficos del jugador o del misil que se superponen a los colores COLPF0 a COLPF3 del tablero sí 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 de 1 hexadecimal /1 decimal a F hexadecimal /15 decimales ). El bit menos significativo del valor de luminancia no se observa, 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 Luminancia, la indirección está deshabilitada y los valores de los píxeles representan directamente un color.
Tenga en cuenta que el componente de color del fondo también se fusiona con los píxeles del área de juego. Los colores distintos del negro para el fondo reducen la cantidad total de colores que se muestran en este modo.
En este modo, los gráficos de Jugador/Misil (sin la opción de quinto Jugador) se muestran correctamente; sin embargo, la detección de colisiones con el Campo de Juego está desactivada. La prioridad del Campo de Juego siempre se sitúa en la parte inferior. Cuando los Misiles se configuran para actuar como un quinto Jugador, en las zonas donde los objetos de Misiles se superponen al Campo de Juego, los píxeles de los 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 decimal, habilita los objetos Jugador multicolor. Cuando los píxeles de dos objetos Jugador/Misil se superponen, aparece un tercer color. Esto se implementa eliminando el procesamiento de prioridad entre pares de objetos Jugador/Misil, lo que resulta en que CTIA/GTIA realice una operación OR bit a bit entre los dos píxeles de color para generar un nuevo color.
Ejemplo: Un píxel de jugador con valor de color 98 hexadecimal /152 decimal (azul) se superpone a un píxel de jugador con valor de color 46 hexadecimal /70 decimal (rojo), lo que da como resultado un color de píxel DE hexadecimal /228 decimal (verde claro/amarillo).
Los pares de reproductores/misiles capaces de emitir luz multicolor:
- Jugador 0 + Jugador 1
- Misil 0 + Misil 1
- Jugador 2 + Jugador 3
- Misil 2 + Misil 3
Quinto jugador
El bit 4 de PRIOR, valor $10 hexadecimal /16 decimal, permite que los misiles se conviertan en un quinto jugador. No se produce ningún cambio funcional en el misil, salvo el procesamiento del color. Normalmente, los misiles se muestran con 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 retardo vertical y las colisiones entre jugadores y misiles siguen funcionando igual. La prioridad del Quinto Jugador para las intersecciones de píxeles de los objetos del jugador es COLPF3, pero los píxeles del Quinto Jugador tienen prioridad sobre todos los colores del Campo de Juego.
El cambio en el procesamiento del color también provoca algunas excepciones en la visualización de los misiles en los modos de color alternativos de GTIA:
- Modo GTIA 16 Shades: Cuando los píxeles del misil se superponen al área de juego, los píxeles heredan el valor de luminancia de los píxeles del área de juego.
- Modo GTIA de 16 colores: Cuando los píxeles del misil se superponen al área de juego, los píxeles heredan el valor de color de los píxeles del área de juego.
El Quinto Jugador introduce una excepción para el valor de Prioridad $8 (bits 1000) (Ver la discusión sobre Prioridad más abajo).
Prioridad
Los bits 3 a 0 de PRIOR proporcionan cuatro valores de prioridad para el Jugador/Misil y el Campo de Juego que determinan qué valor de píxel se muestra cuando los píxeles de los objetos del Jugador/Misil y los píxeles del Campo de Juego se superponen. Los cuatro valores proporcionan opciones específicas que se enumeran en la tabla de Prioridad a continuación. "PM" significa la implementación normal del Jugador/Misil sin el Quinto Jugador. El Quinto Jugador, "P5", se muestra donde corresponde su prioridad cuando está habilitado.
La tabla es precisa para los modos de personaje y mapa del tablero 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 alta resolución de 1/2 se comportan de manera diferente (como se indica más adelante).
Si se activan varios bits, cuando hay un conflicto, CTIA/GTIA emite 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 (1000 Bits). En este modo, los Campos de Juego 0 y 1 tienen mayor prioridad que los Jugadores, y los Jugadores tienen mayor prioridad que los Campos de Juego 2 y 3. Cuando los píxeles del Campo de Juego 0 o 1 se cruzan con cualquier píxel de Jugador, el resultado que se muestra es el píxel del Campo de Juego. Sin embargo, si el Quinto Jugador también se cruza con 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 máxima prioridad. Si se elimina el píxel del Campo de Juego 0 o 1 de esta intersección, el píxel del Quinto Jugador no tiene ningún píxel del Campo de Juego que sobrescribir y, por lo tanto, también queda por detrás de los píxeles de los Jugadores.
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 una operación OR, de forma similar a la función de Jugador Multicolor. En esta situación, los píxeles 0 y 1 del Jugador pueden mezclarse con los píxeles 0 y 1 del Campo de Juego, y los píxeles 2 y 3 del Jugador pueden mezclarse con los píxeles 2 y 3 del Campo de Juego. Además, cuando se utiliza la opción de Jugador Multicolor, el color resultante de la fusión de los Jugadores también puede mezclarse con el Campo de Juego, produciendo más colores. Al considerar todas las posibilidades de fusión de colores, el hardware CTIA/GTIA puede generar 23 colores por línea de exploración. Comenzando con el color de fondo como primer color, son posibles los 22 colores y fusiones de color restantes.
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 el Quinto Jugador está habilitado, los píxeles de los Misiles provocan la misma fusión de colores que se muestra para COLPF3 en la tabla anterior (colores del 19 al 22).
Modos de prioridad y alta resolución
El resultado de la prioridad difiere para los modos Carácter y Mapa que utilizan píxeles de reloj de color de alta resolución de 1/2 ( 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 área de juego y COLBK como el borde que la rodea. Los píxeles de los gráficos o glifos se emiten utilizando únicamente 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 según la tabla de prioridades que se muestra a continuación. Los píxeles de Jugador/Misil con mayor prioridad reemplazarán a COLPF2 como color de fondo. COLPF1 siempre tiene la máxima prioridad y no puede ser ocultado por Jugadores ni Misiles. Los píxeles de glifos/gráficos utilizan el componente de color del color de mayor prioridad (Campo de juego, Jugador o Misil) y el componente de luminancia de COLPF1. Cabe destacar que este comportamiento también se mantiene cuando los conflictos de prioridad entre Jugadores y Misiles dan como resultado un negro puro para el fondo. En efecto, el valor de color que CTIA/GTIA utiliza finalmente para el color de fondo "tiñe" los píxeles de glifos/gráficos de primer plano COLPF1.
VDELAY $D01C Escritura
Gráficos de retardo vertical P/M
Este registro se utiliza para proporcionar movimiento de una sola línea de exploración cuando la resolución Double Line Player/Missile está habilitada en el registro DMACTL de ANTIC . Esto funciona enmascarando las actualizaciones DMA de ANTIC a los registros GRAF* en las líneas de exploración pares, lo que provoca que el patrón gráfico se desplace una línea hacia abajo.
Dado que la resolución de línea única requiere actualizaciones ANTIC DMA en cada línea de exploración y VDELAY enmascara las actualizaciones en las líneas de exploración pares, este bit reduce la resolución de jugador/misil de línea única a línea doble.
GRACTL $D01D Escribir
Control gráfico
GRACTL controla la recepción de datos DMA del 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 recibirlos. Esto se logra mediante un par de bits en GRACTL que coinciden con un par de bits en el registro DMACTL de ANTIC , los cuales indican a ANTIC que envíe datos del jugador y 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 activados para que GTIA reciba datos del jugador/misil de ANTIC mediante DMA. Cuando la CPU opera directamente los gráficos del jugador/misil, estos bits deben estar desactivados.
Los registros de activación del joystick informan en tiempo real si el botón está pulsado o no. Si la frecuencia de sondeo de entrada del programa no es suficiente para detectar pulsaciones momentáneas del joystick, los disparadores se pueden configurar para que se bloqueen en el estado de cerrado/pulsado y permanezcan en él incluso después de soltar el botón. Al activar el bit 2 de GRACTL, se habilita el enclavamiento de todos los disparadores. Al desactivar este bit, los disparadores vuelven a su estado normal, sin enclavamiento y con información en tiempo real.
HITCLR $D01E Escribir
Colisiones claras
Cualquier escritura en este registro borra todos los bits de detección de colisión entre el jugador y el misil.
Otras funciones de CTIA/GTIA
Gatillos de joystick
TRIG0 $D010 Leer
SOMBRA: STRIG0 $0284
Joystick gatillo 0
TRIG1 $D011 Leer
SOMBRA: STRIG1 $0285
Joystick 1 gatillo.
TRIG2 $D012 Leer
SOMBRA: STRIG2 $0286
Joystick 2 gatillos.
TRIG3 $D013 Leer
SOMBRA: STRIG3 $0287
Joystick con 3 gatillos
Los bits 7 al 1 siempre son 0. El bit 0 indica el estado del gatillo del joystick. El valor 1 indica que el gatillo no está presionado. El valor 0 indica que el gatillo está presionado.
Los registros de activación informan de las pulsaciones de los botones en tiempo real. El estado de botón pulsado se borrará instantáneamente cuando se suelte el botón.
Los disparadores pueden configurarse para que se bloqueen en el estado de pulsado y permanezcan así hasta que se desactiven específicamente. El bit 2 de GRACTL habilita el comportamiento de bloqueo para todos los disparadores. Al desactivar el bit 2 de GRACTL, todos los disparadores vuelven a funcionar 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 a 1 (valor $f hexadecimal /15 decimal ), el sistema funciona en modo NTSC. Cuando los bits están a cero, el sistema funciona en modo PAL.
CONSPK $D01F Escribir
Altavoz de consola
Bit3 controla el altavoz interno de la Atari 800/400. En modelos posteriores, se eliminó el altavoz de la consola y el sonido se mezcló con las señales de audio POKEY habituales para su salida al puerto del monitor y al adaptador RF. El sistema operativo Atari utiliza el altavoz de la consola para reproducir el clic del teclado y el sonido del timbre/zumbador.
El sistema operativo configura el bit del altavoz durante la rutina de borrado vertical. Escribir repetidamente un 0 en este bit produce un zumbido de 60 Hz mientras el borrado vertical restablece el valor. Se pueden generar tonos útiles mediante código 6502 , lo que añade un quinto canal de audio, aunque este canal requiere tiempo de CPU para mantener los tonos.
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, Seleccionar y Opción. El valor del bit 0 indica que una tecla está presionada y el valor 1 indica que la tecla no está presionada. Valores de teclas/bits:
- Clave de inicio = Valor del bit $1
- Seleccionar clave = Valor de bit $2
- Clave de opción = Valor de bit $4
Operación de gráficos (sprites) del jugador/misil
El sistema de " sprites " por hardware es gestionado por CTIA/GTIA. El nombre oficial de ATARI para este sistema 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, los "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 transparentes ( ) del jugador no tienen efecto en el campo de juego y muestran un píxel del campo de juego o del fondo sin cambios. El ancho normal de los píxeles de todos los objetos jugador/misil es de un reloj de color. Un valor de registro puede establecer el ancho de los píxeles del jugador o del misil a 1, 2 o 4 relojes de color de ancho.
La implementación de Jugador/Misil de CTIA/GTIA es similar a la de TIA . Un Jugador es un valor o patrón de 8 bits en una posición horizontal específica que se repite automáticamente para cada línea de exploración o hasta que el patrón cambie en el registro. Los Misiles tienen un ancho de 2 bits y comparten un registro de patrón, de modo que cuatro valores de 2 bits ocupan el registro de patrón de 8 bits, pero cada misil tiene una posición horizontal y un tamaño independientes. Los objetos Jugador/Misil extienden la altura de la pantalla, incluyendo el borde. Es decir, la implementación predeterminada de los gráficos Jugador/Misil de CTIA/GTIA es una franja en la pantalla. Aunque aparentemente limitado, este método facilita el uso de los gráficos Jugador/Misil como bordes verticales o separadores de colores alternativos 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 para controlar el color del jugador/misil. El valor del registro PRIOR/GPRIOR puede alternar los cuatro misiles entre dos opciones de visualización de color: cada misil (0 a 3) expresa el color del objeto jugador asociado (0 a 3) o todos los misiles muestran el color del registro COLPF3/COLOR3 . Cuando los misiles tienen colores similares, pueden tratarse como un quinto jugador, pero su correcta colocación en pantalla requiere almacenar valores en los cuatro registros de posición horizontal de los misiles . 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 jugadores multicolores a costa de reducir el número de objetos disponibles. Finalmente, PRIOR/GPRIOR se puede usar para cambiar la superposición de capas de primer plano/fondo (denominada "prioridad") de los píxeles del jugador/misil frente a los píxeles del campo de juego, y puede crear conflictos de prioridad que afectan predeciblemente a los colores mostrados.
El sistema gráfico Player/Missile también incorpora la idea convencional de un sprite con una imagen/patrón que varía verticalmente. El chip ANTIC incluye una función para realizar DMA (acceso directo a memoria) y 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 exploración o para líneas alternas, lo que da como resultado píxeles Player/Missile de una o dos líneas de exploración de altura. De esta forma, el objeto Player/Missile podría considerarse un carácter extremadamente alto en una fuente, de 8 bits/píxeles de ancho, según la altura de la pantalla.
Mover los objetos Jugador/Misil horizontalmente es tan simple como cambiar un registro en CTIA/GTIA (en Atari BASIC, una sola instrucción POKE mueve un jugador o misil horizontalmente). Mover un objeto verticalmente se logra moviendo el bloque de definición del glifo a una nueva ubicación en el mapa de bits del Jugador o Misile, o rotando todo el mapa de bits del 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 lenguaje máquina 6502 , a pesar de que el 6502 carece de una instrucción de movimiento de 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 un byte en el 6502. Atari BASIC carece de un comando de movimiento de memoria de alta velocidad y mover memoria usando BASIC PEEK() y POKE(s) es extremadamente lento. Los programas de Atari BASIC que usan gráficos de Jugador/Misil tienen otras opciones para realizar movimientos de memoria de alta velocidad. Un método consiste en llamar a una rutina corta en lenguaje máquina mediante la función USR() para realizar los movimientos de memoria. Otra opción es utilizar una cadena larga como mapa de memoria del jugador/misil y ejecutar comandos de copia de cadena, lo que resulta en movimientos de memoria a la velocidad del lenguaje máquina.
El uso cuidadoso de los gráficos Player/Missile junto con las demás funciones gráficas del hardware de Atari puede simplificar significativamente la programación gráfica, en particular la de juegos.
Mejoras de GTIA
El chip GTIA es retrocompatible con el 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 exploración, 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 en 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 alta resolución de 1/2 ( es decir, los modos de texto ANTIC 2, 3 y el modo gráfico F) son capaces de expresar completamente las paletas de colores 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 una pantalla de modo F de 2 colores por píxel, 320 píxeles horizontalmente, una línea de exploración por línea de modo, a 16 colores y 80 píxeles horizontalmente. Las interpretaciones de color adicionales permiten lo siguiente:
- Modo de interpretación de color GTIA $4 : 16 tonalidades de un mismo color (definido por el color de fondo, COLBK) de las 16 posibles tonalidades de la paleta de Atari. También está disponible en Atari BASIC como Graphics 9.
- Modo de interpretación de color GTIA $8 : este modo permite 9 colores de indirección por línea horizontal en cualquier tono y luminancia de toda la paleta Atari de 128 colores. Esto se logra utilizando todos los registros de color del jugador/misil y del tablero de juego para los píxeles del tablero de juego. En este modo, el color de fondo lo proporciona el registro de color COLPM0, mientras que COLBAK se utiliza para el valor del píxel del tablero de juego $8. Este modo es accesible en Atari BASIC como Gráficos 10.
- Modo de interpretación de color GTIA $C : 15 tonalidades en un único valor de tono/luminancia, más el fondo. El valor del fondo, COLBK, establece el nivel de luminancia de todos los demás píxeles (valor de píxel $1 a $F ). El bit menos significativo del valor de luminancia no se observa, 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. Este modo es accesible en Atari BASIC como Graphics 11.
De estos modos, Atari BASIC Graphics 9 es particularmente destacable. Permite que el Atari muestre fotografías digitalizadas en escala de grises , que, a pesar de su baja resolución, resultaban muy impresionantes para la época. Además, al permitir 16 tonalidades de un mismo color, en lugar de las 8 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 se limita a este modo, que, debido a su baja resolución, no tuvo mucha difusión.
Los modos de texto Antic 2 y 3 pueden mostrar la misma gama de colores que los gráficos del modo F al usar las interpretaciones de color alternativas de GTIA. Sin embargo, dado que también se aplica la reducción de píxeles, convirtiendo 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 texto real, por lo que no son populares fuera de las demostraciones . Para un uso eficaz de la función de interpretación de color de GTIA con los modos de texto, se requiere un conjunto de caracteres cuidadosamente diseñado que trate los caracteres como píxeles. Este método permite mostrar un modo gráfico de GTIA de "alta resolución" que normalmente ocuparía 8 KB de RAM, pero que en cambio solo utiliza unos 2 KB (1 KB para el conjunto de caracteres y 1 KB para la RAM de pantalla y la lista de visualización).
GTIA también corrigió un error en CTIA que provocaba 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 monocromo de alta resolución mostrarían un par de colores diferente. [ 5 ] [ 16 ]
Los propietarios de Atari pueden determinar si su máquina está equipada con el chip CTIA o GTIA ejecutando el comando BASICPOKE 623,64 . Si la pantalla se oscurece tras la ejecución, la máquina está equipada con el nuevo chip GTIA. Si permanece azul, la máquina tiene un chip CTIA.
Insectos
Los últimos ordenadores Atari XE fabricados para el mercado de Europa del Este se construyeron en China. Muchos, si no todos, tienen un chip GTIA PAL defectuoso . Los valores de luminancia en Graphics 9 y versiones posteriores presentan fallos, apareciendo como rayas. Reemplazar el chip soluciona el problema. También se han realizado intentos de reparar chips GTIA defectuosos con circuitos externos .
Véase también
Referencias
- 1 2 3 Manual de servicio de campo para computadoras domésticas Atari - 400/800 (PDF) . Atari, Inc. págs. 1–10 . Consultado el 10 de septiembre de 2010 .
- ↑ Neubauer, Doug (2009-06-20). "Los años de Atari" . Doug Neubauer . Recuperado el 24 de julio de 2025 .
- 1 2 3 Sherer, Robin Alan (junio de 1988). "GTIA Joystick Painter: potente herramienta de animación para Atari" . ANTIC . 7 (2): 37. ISSN 0113-1141 . Recuperado el 26 de enero de 2011 .
- ↑ 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", emitida el 20 de octubre de 1981, asignada a Atari, Inc.
- 1 2 3 4 5 Patchett, Craig; Sherer, Robin (1984). "Chips especiales y ROM" . El mapa de memoria maestra para Atari . Reston, Va.: Reston Publishing Company. ISBN 0-8359-4242-2. Consultado el 26 de enero de 2011 .
- 1 2 3 4 5 Mace, Scott (15 de marzo de 1982). "Atari cambia discretamente a un chip gráfico de 16 colores" . InfoWorld . 4 (10). Palo Alto, CA: Popular Computing: 3–4 . ISSN 0199-6649 . Recuperado el 1 de febrero de 2011 .
- 1 2 Chamberlain, Craig (julio de 1982). "Atari Video Graphics y la nueva GTIA" . Compute! (26): 124. ISSN 0194-357X . Recuperado el 24 de enero de 2011 .
- 1 2 3 Decuir, Joe (15 de agosto de 1999). 3 Generaciones de arquitectura de máquinas de juegos . Classic Gaming Expo '99. AtariArchives (Presentación). Las Vegas. Archivado del original el 16 de julio de 2023. Recuperado el 16 de julio de 2023 .
- ↑ VCF East 2019 -- Joe Decuir -- Computadoras Atari Serie 800: 40 años . Vintage Computer Federation. 6 de mayo de 2019 [Presentación del 5 de mayo de 2019]. El evento tuvo lugar a las 22:09 . Recuperado el 24 de mayo de 2026 a través de YouTube.
- 1 2 Small, David; Small, Sandy; Blank, George (mayo de 1983). "Filosofía del diseño y demostraciones de GTIA" . The Creative Atari . Creative Computing Press. ISBN 978-0-916688-34-9. Consultado el 26 de enero de 2011 .
- ↑ Switzer, Steve (octubre de 1983). "Clínica Atari" . ANTIC . 2 (7): 103. ISSN 0113-1141 . Recuperado el 1 de febrero de 2011 .
- ↑ Michael Current, "¿Qué son los chips SALLY, ANTIC, CTIA/GTIA, POKEY y FREDDIE?" , Computadoras Atari de 8 bits: Preguntas frecuentes
- 1 2 3 4 5 Boris, Dan. "Fichas Atari" . Página de inicio de Dan B. Consultado el 1 de febrero de 2011 .
- ↑ Vendel, Curt. "Atari 800XLCR" . AtariMuseum.com . Archivado del original el 13 de septiembre de 2011. Consultado el 1 de febrero de 2011 .
- ↑ Vendel, Curt. "KERI Performance Tester" . AtariMuseum.com . Archivado del original el 13 de septiembre de 2011. Consultado el 1 de febrero de 2011 .
- ↑ Small, David; Small, Sandy; Blank, George, eds. (1983). «El mago, la princesa y el Atari». The Creative Atari . Creative Computing Press. ISBN 0916688348.
Enlaces externos
- De Re Atari , publicado por Atari Program Exchange.
- Mapeando el Atari, edición revisada por Ian Chadwick
- Hoja de datos del chip GTIA escaneada a PDF .
- Sitio de Jindroush (archivado) Información de GTIA
- Disparo mortal de CTIA
- Disparo mortal de GTIA
- Computadoras Atari de 8 bits
- chips gráficos
- circuitos integrados
- Estándares de visualización de computadoras