
El adaptador de interfaz de televisión [1] ( TIA ) es el chip de computadora personalizado que, junto con una variante del MOS Technology 6502 , constituye el corazón de la consola de juegos Atari Video Computer System de 1977. El TIA genera la visualización de la pantalla, los efectos de sonido y lee los controladores. En el momento en que se diseñó el Atari VCS, incluso pequeñas cantidades de RAM eran caras. El chip fue diseñado sin el circuito adicional de un búfer de cuadros , requiriendo en cambio una programación detallada para crear incluso una pantalla simple. [2]
El desarrollo del TIA CO10444/CO11903 [3] estuvo a cargo de Jay Miner , quien continuó en Atari ampliando el diseño del TIA para las computadoras Atari de 8 bits con los chips ANTIC , CTIA/GTIA y POKEY que permiten más capacidades gráficas y de sonido. Miner luego dirigió el diseño de los chips personalizados para la computadora Amiga .
Diseño

Fondo
Alrededor de 1975, los ingenieros de Atari en Cyan Engineering, liderados por Steve Mayer y Ron Milner, habían estado considerando alternativas al desarrollo de hardware dedicado, como circuitos integrados específicos de la aplicación (ASIC) para videojuegos arcade y consolas de videojuegos domésticos. Los microprocesadores programables habían llegado al mercado, pero Atari los consideraba demasiado caros para una aplicación doméstica. [4] Estaban limitados por el costo en las opciones para mostrar gráficos. En ese momento, la mayoría de los gráficos de computadora se generaban utilizando sprites dibujados sobre un campo de juego, que luego se traducían a una señal analógica para mostrarlos en un CRT [5] Los sprites se mantendrían como un mapa de bits en un búfer de cuadros , lo que requeriría memoria de acceso aleatorio (RAM). La RAM todavía era cara, costaba decenas de miles de dólares por megabyte [6] y mostrar un campo de juego de dos colores en una pantalla de 80 × 48 habría costado miles de dólares en memoria. [4] En un televisor color NTSC convencional , las resoluciones máximas generalmente oscilaban entre 256 y 320 píxeles por línea, y entre 192 y 240 líneas por pantalla. [7]
En septiembre de 1975, MOS Technology presentó el microprocesador 6502 , uno de los primeros microprocesadores de bajo costo en el mercado. Mayer y Milner acordaron hablar con el diseñador del chip, Chuck Peddle , sobre el uso del 6502 como base para su consola de videojuegos programable. En el transcurso de un par de días, se presentó el diseño básico de la Atari VCS, y Peddle ofreció a Atari el uso del procesador MOS Technology 6507 de menor costo y el MOS Technology 6532 RAM-I/O-Timer (RIOT) como núcleo del diseño. [8] Usando un prototipo de placa de pruebas para el adaptador de pantalla sobre un sistema de banco de pruebas 6502, Milner pudo demostrar la capacidad de programar una versión simple de su juego Tank . Joe Decuir fue contratado para ayudar a convertir la prueba de concepto de Milner en un prototipo funcional, suficiente para que Atari diera el visto bueno para que el desarrollo continuara. [4]
Mientras Decuir trabajaba en el diseño del resto del sistema, Jay Miner se centró en fabricar un ASIC para el adaptador de pantalla. [4] Al principio, el adaptador de pantalla ASIC se denominó Adaptador de Interfaz de Televisión (TIA). [4] El coste de la RAM seguía siendo alto cuando el equipo comenzó su diseño, por lo que la opción de utilizar framebuffers basados en memoria se eliminó del diseño del TIA. [4]
Diseño sin RAM
Debido a la falta de RAM, el TIA se diferencia del enfoque convencional de framebuffer en que la pantalla está compuesta por la manipulación de cinco objetos gráficos móviles (2 jugadores, 2 misiles y 1 pelota) y un objeto de campo de juego estático. Todos estos se generan en cada línea de escaneo desde sus respectivos registros, a diferencia de la técnica utilizada en un modelo mapeado en framebuffer, que requiere que el programa los actualice en cada línea de escaneo. [9] La resolución horizontal no es uniforme, ya que su tamaño depende del objeto gráfico en particular. La unidad más pequeña de píxel corresponde a 1 ciclo de reloj de color del chip, de los cuales hay 160 visibles en una línea. [9]
El objeto Playfield consta de un registro de dos bytes y medio (20 bits de ancho), que se puede reflejar simétricamente o copiar tal cual en la mitad derecha de la pantalla para un total de 40 bits (cada bit tiene un ancho de 4 ciclos de color). El color que se dibujaba si el bit era un 1 o un 0 se seleccionaba de una paleta predefinida de hasta 128 colores (ver a continuación) y se guardaba en otros registros.
La TIA también admitía cinco objetos gráficos independientes compuestos por:
- Dos líneas horizontales de 8 píxeles que forman los ' sprites ' Jugador 1 y Jugador 2. Son de un solo color, se pueden estirar por un factor de 2 o 4 y se pueden duplicar o triplicar.
- Una "pelota": una línea horizontal del mismo color que el campo de juego. Puede tener uno, dos, cuatro u ocho píxeles de ancho.
- Dos "misiles": otra línea horizontal del mismo color que el jugador correspondiente. Puede tener uno, dos, cuatro u ocho píxeles de ancho.
Sin los framebuffers basados en RAM, la detección de colisiones también es complicada. El TIA tiene detección de colisiones de hardware para todos estos objetos mediante el uso de 15 flip-flops de configuración/reinicio y almacena un mapa de bits de colisiones, que normalmente se leen durante el período VBLANK. [4] Los registros en el TIA permiten al programador controlar la posición de los objetos gráficos y su color.
El TIA también ofrece dos canales de sonido de un bit. Cada canal ofrece 32 valores de tono y 16 secuencias de bits posibles. Hay un control de volumen de 4 bits. [4]
Por último, el TIA tiene entradas para leer hasta cuatro controladores de paleta analógicos mediante potenciómetros y para dos disparadores de joystick. [4]
Dibujar la pantalla
Como los registros contienen datos para una sola línea de la pantalla, la creación de una pantalla completa requiere que el programa de juego actualice los registros sobre la marcha, un proceso conocido como " carrera con el rayo ". [10]
Para iniciar el proceso, el programa de juego que se ejecuta en la CPU basada en MOS Technology 6502 carga los registros del TIA con los datos necesarios para dibujar la primera línea de la pantalla. Luego, el TIA espera hasta que el televisor esté listo para dibujar la línea (bajo el comando del hardware analógico asociado del TIA) y lee los registros para producir una señal para esa línea. Durante el período de borrado horizontal entre líneas, el 6502 cambia rápidamente los registros del TIA según sea necesario para la siguiente línea. Este proceso continúa hacia abajo en la pantalla.
Esto se hace más difícil porque el MOS Technology 6507 en el 2600 es una versión de pines reducidos del 6502 sin soporte para interrupciones de hardware . Generalmente el lado analógico del sistema de visualización genera una interrupción cuando termina de dibujar una línea de trama y se está preparando para la siguiente. La interrupción activa el código necesario para actualizar la pantalla y luego regresa al programa "principal". El 6507 dejó estos pines fuera de la CPU para ahorrar dinero, sin embargo tiene un pin "RDY" para insertar estados de espera en los ciclos del bus de la CPU . El TIA fue diseñado específicamente para usar el pin RDY para sincronizar la CPU con la temporización de la línea de trama del video generado por el TIA: cuando la CPU escribe en una determinada dirección de registro del TIA, el TIA reduce su señal de salida RDY hasta el final de la línea actual, un comando de "espera de sincronización". [4] Esto suspende el funcionamiento de la CPU hasta el inicio (ciclo de reloj de color 0) del período de borrado horizontal justo antes de la siguiente línea, lo que proporciona una medida de sincronización automática. El uso previsto de este mecanismo es que la CPU ejecute código que configure los registros TIA para la línea que se va a dibujar, y que normalmente se ejecuta hasta su finalización algún tiempo antes de que el TIA llegue al final de esa línea. Para facilitar la sincronización de tiempo de vídeo, la CPU escribe en el registro que activa el retraso de sincronización a través de RDY, lo que desperdicia una cantidad variable de tiempo de CPU. [4]
Además, el TIA sólo genera de forma semiautomática señales de sincronización vertical (para marcar el final de cada fotograma de vídeo y el comienzo del siguiente). El TIA es capaz de insertar una señal de sincronización vertical en la señal de vídeo de salida analógica, pero no tiene un contador de líneas de fotogramas y, por tanto, no puede saber cuándo debe terminar un fotograma. En su lugar, se deja al programa de la CPU la tarea de activar las señales de sincronización vertical y contar las líneas de cada fotograma para determinar cuándo debe generarse una señal de sincronización vertical. Al igual que en el caso del hardware RDY-wait, la señal de sincronización vertical se activa cuando la CPU escribe en una dirección de registro TIA específica. Si nunca se realizó ninguna escritura en esa dirección y se permitió que el TIA funcionara libremente, generaría un único fotograma infinito de líneas de trama activas, que normalmente aparecerían en el televisor como una imagen continua. La mayoría de los juegos publicados para Atari 2600 generaban sincronización vertical después de cada 262 o cada 263 líneas (pero nada en el TIA le impide generar cuadros de cualquier longitud, más cortos o más largos, aunque las pantallas de video resultantes se mostrarían verticalmente en televisores normales).
Estos y otros detalles de la programación TIA implican que los programadores deben cronometrar cuidadosamente sus programas para que se ejecuten en el número exacto de ciclos necesarios para los diversos eventos relacionados con la pantalla. Si esto se hace mal, la pantalla no se dibujará correctamente. La parte de un programa que hace esto se conoce como el "núcleo" de ese programa. [11]
Dada esta complejidad, los primeros juegos que utilizaban el sistema tendían a tener un diseño simple, utilizando el TIA para crear campos de juego simétricos con los jugadores encima. Esta era la intención original del sistema: ejecutar el puñado de juegos arcade que Atari ya había producido, como Tank y Pong . En estos casos, los datos del campo de juego generalmente se presentaban en la memoria ROM de 2 kB en el cartucho del juego . Como cada línea usaba 20 bits de datos y había 192 líneas en una pantalla NTSC, [12] una pantalla con un diseño diferente en cada línea necesitaba solo 480 bytes (192 x 20 / 8) de los 4 kB del cartucho para contener una sola pantalla codificada. En este caso, el núcleo simplemente avanzaba 20 bits a través de la ROM para cada línea a medida que el TIA avanzaba por la pantalla, una tarea que solo requería unos pocos ciclos de tiempo de CPU. Esto se puede reducir aún más utilizando los mismos datos para múltiples líneas, ya sea duplicándolas verticalmente o leyendo en un sentido la lista para la parte superior y luego en el otro sentido para la parte inferior, lo que produce una visualización reflejada verticalmente de solo 240 bytes.

Un avance clave fue la concesión de licencias de Space Invaders para la plataforma, que requería muchos más gráficos de jugador para dibujar a los alienígenas enemigos. La solución fue cambiar los datos del jugador para cada línea a medida que se dibujaba la imagen, creando una aparente gran cantidad de jugadores. Otro avance se logró codificando (parcialmente) la pantalla como instrucciones de CPU en lugar de almacenarla como datos fijos en ROM. Adventure usa este concepto para producir una amplia variedad de mapas combinando diferentes porciones de los datos en ROM, saltando de un lado a otro durante el dibujo de la pantalla. [13] Esto permitió que el juego tuviera 30 habitaciones, lo que de otro modo habría requerido 14 kB de ROM .
A medida que los programadores se fueron acostumbrando a los tiempos extraños necesarios para que las cosas funcionaran correctamente en la pantalla, comenzaron a utilizar la flexibilidad inherente del TIA para mejorar enormemente las pantallas. Una técnica común era cambiar los registros de color que se utilizaban para dibujar los estados 1 y 0 del campo de juego, lo que daba como resultado pantallas con efectos similares a los del arco iris. Los juegos posteriores podían modificar la línea media del campo de juego para generar patrones asimétricos, reposicionando y cambiando los sprites de los jugadores en mitad de la pantalla para generar sprites adicionales.
Capacidades de color de TIA
La TIA utiliza diferentes paletas de colores según el formato de señal de televisión utilizado. Para el formato NTSC (número de pieza CO10444), [3] se proporciona una paleta de 128 colores, mientras que para PAL (número de pieza CO11903) solo hay disponibles 104 colores. [3] Por último, la paleta SECAM consta de solo 8 colores.
Paleta NTSC
Paleta PAL
Paleta SECAM
Generador de ruido/tono (AUD0/1)
El TIA es capaz de generar diferentes tipos de ondas de pulso y ruido blanco que se emiten a sus dos osciladores (o canales ) AUD0 y AUD1. Cada oscilador tiene un divisor de frecuencia de 5 bits y un registro de control de audio de 4 bits que manipula la forma de onda . También hay un registro de control de volumen de 4 bits por canal .
Divisor de frecuencia (AUDF0/1)
Las frecuencias se generan tomando 31399 Hz (31113 Hz para PAL ) y dividiéndolas por el valor de 5 bits suministrado. [14] El resultado es un divisor de frecuencia económico capaz de detectar notas desafinadas y frecuencias afinadas impares. El TIA no es un chip musical a menos que el compositor trabaje dentro de los límites de frecuencia o module entre dos frecuencias desafinadas para crear una nota afinada con vibrato .
Control de audio (AUDC0/1)
El registro de control de audio genera y manipula una onda de pulso para crear pulsos complejos o ruido. Las siguientes tablas (con duplicados diseñados) explican cómo se generan sus tonos:
Instrumentos
Aquí hay una tabla que muestra los instrumentos.
Código
Se muestra el código del combate.
MOTORES LDA AltSnd , X
Motor de dominio BEQ
; Sonido pong.
LDA #$04
STA AUD C0 , X
LDA #$07
STA AUDV0 , X
Conteo de rebotes de LDA , X
STA AUDF0 , X
Estrategia en tiempo real
;Sonido del motor.
MOTOR LDY GAMSHP
LDA SNDV , Y
AND GameOn ; Elimina el sonido si no hay ningún juego activo mediante AND
STA AUDV0 , X ; valor de volumen con valor sin juego de $00
LDA SNDC , Y
STA AUD C0 , X
CVX
LDA #$00
MOPIT0 DEY ; Este bucle establece el valor inicial para el sonido
IMC MOPIT1 ; tono basado en GAMSHP en Y (tanque,
ADC #$0C ; biplano o jet)
BPL MOPIT0
MOPIT1 ADC Vtemp , X ; Utilice la velocidad guardada para ajustar
TAY ; tono de sonido a través de la tabla SNDP
Acetato de tereftalato (TXA)
Lenguaje de señas americano
ADC SNDP , Y
STA AUDF0 , X
Estrategia en tiempo real
Referencias
- ^ "I. Teoría de funcionamiento". Manual de servicio de campo del sistema informático de vídeo Atari - Modelo 2600/2600A doméstico (PDF) . Rev. 02. Atari, Inc. 21 de enero de 1983. págs. 1– 4. Archivado desde el original (PDF) el 15 de febrero de 2017 . Consultado el 10 de septiembre de 2010 .
- ^ Hague, James (10 de septiembre de 2013). "¿Por qué existen las consolas de juegos dedicadas?". Programación en el siglo XXI .
- ^ abc Stilphen, Scott (5 de febrero de 2020). «ATARI VCS/2600 TIA CHIPS» . Consultado el 24 de febrero de 2020 .
- ^ abcdefghijk Decuir, Joe (julio de 2015). "Atari Video Computer System: Bring Entertainment Stories Home" (Sistema informático de vídeo Atari: llevar historias de entretenimiento a casa). IEEE Consumer Electronics Magazine : 59– 66. doi : 10.1109/MCE.2015.2421572 .
- ^ Chris Crawford, "ANTIC y la lista de visualización", De Re Atari
- ^ McCallum, John C. (13 de febrero de 2012). «Memory Prices (1957-2012)». jcmit.net . Archivado desde el original el 26 de octubre de 2012. Consultado el 27 de octubre de 2012 .
- ^ Montfort y Bogost, pág. 27
- ^ Goldberg, Marty; Vendel, Curt (2012). "Capítulo 5". Atari Inc: Los negocios son divertidos . Sygyzy Press. ISBN 978-0985597405.
- ^ ab Wright, Steve. "Stella Programmer's Guide", 3 de diciembre de 1979. Archivado el 5 de marzo de 2016.
- ^ Kohler, Chris (13 de marzo de 2009). "Racing the Beam: How Atari 2600's Crazy Hardware Changed Game Design" (Competir con la viga: cómo el loco hardware de Atari 2600 cambió el diseño de los juegos). Wired . Archivado desde el original el 12 de julio de 2014.
- ^ Montfort y Bogost, pág. 34
- ^ Más información sobre PAL, consulte "Especificaciones de Atari 2600" Archivado el 24 de mayo de 2011 en Wayback Machine .
- ^ Robinett, Warren, "Adventure", Universidad de Carolina del Norte . Archivado el 27 de enero de 2018.
- ^ "Chips de sonido en ordenadores de 8 bits". Portal Atari FLOP . Consultado el 14 de diciembre de 2023 .
Fuentes
- Montfort, Nick; Bogost, Ian (2009). Compitiendo con la viga: el sistema informático de vídeo Atari. MIT Press. ISBN 978-0-262-01257-7.
Enlaces externos
- Programación de ATARI 2600 para principiantes
- Información técnica de TIA
- Manual técnico de la TIA
- Esquemas de TIA
- Imágenes de matrices de alta resolución de TIA
- Programación del Atari 2600 y de mí: parte 1, parte 1 de una serie de 8 partes
- Desarrollo de Atari 2600 por Joe Decuir