Articulo de referencia

Adaptador de interfaz de televisión

Atari 2600 El adaptador de interfaz de televisión [ 1 ] ( TIA ) es el chip informático personalizado que, junto con una variante del MOS Technology 6502 , constituye el núcleo d...

Atari 2600

El adaptador de interfaz de televisión [ 1 ] ( TIA ) es el chip informático personalizado que, junto con una variante del MOS Technology 6502 , constituye el núcleo de la consola de videojuegos Atari Video Computer System de 1977. El TIA genera la visualización en pantalla, los efectos de sonido y lee los controladores. En la época en que se diseñó la Atari VCS, incluso pequeñas cantidades de RAM eran caras. El chip se diseñó sin el circuito adicional de un búfer de fotogramas , lo que requería una programación detallada para crear incluso una visualización simple. [ 2 ]

El desarrollo del TIA CO10444/CO11903 [ 3 ] fue liderado por 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 mayores capacidades gráficas y de sonido. Posteriormente, Miner lideró el diseño de los chips personalizados para la computadora Amiga .

Diseño

Placa base de la Atari VCS original de seis interruptores. El chip TIA de 40 pines se encuentra a la izquierda. El chip central de 28 pines es el MOS Technology 6507, y a su derecha, el chip MOS Technology 6352 Ram-I/O-Timer (RIOT) de 40 pines. La ranura de inserción del cartucho está justo a la derecha del chip RIOT.

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 los circuitos integrados de aplicación específica (ASIC) para videojuegos arcade y consolas de videojuegos domésticas. 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 usando sprites dibujados sobre un tablero de juego, que luego se traducían a una señal analógica para mostrarse en un CRT [ 5 ] Los sprites se almacenarían como un mapa de bits en un framebuffer , lo que requería memoria de acceso aleatorio (RAM). La RAM todavía era cara, costando decenas de miles de dólares por megabyte, [ 6 ] y mostrar un tablero de juego de dos colores en una pantalla de 80×48 habría costado miles de dólares en memoria. [ 4 ] En un televisor en color NTSC convencional , las resoluciones máximas generalmente se situaban 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 se reunieron con el diseñador del chip, Chuck Peddle , para hablar sobre el uso del 6502 como base para su consola de videojuegos programable. En el transcurso de un par de días, se definió 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 temporizador de E/S de RAM (RIOT) MOS Technology 6532 como núcleo del diseño. [ 8 ] Utilizando un prototipo en placa de pruebas para el adaptador de pantalla sobre un sistema de prueba 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 luz verde a la continuación del desarrollo. [ 4 ]

Mientras Decuir trabajaba en el diseño del resto del sistema, Jay Miner se centró en crear 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 elevado cuando el equipo comenzó su diseño, por lo que se descartó la opción de utilizar búferes de fotogramas basados ​​en memoria del diseño del TIA. [ 4 ]

Diseño sin RAM

Debido a la falta de RAM, el TIA se diferencia del framebuffer convencional en que, al usar el TIA, la pantalla se compone mediante 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 exploración a partir de sus respectivos registros, a diferencia de la técnica utilizada en un modelo mapeado por framebuffer, que requiere que el programa los actualice en cada línea de exploración. [ 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 puede reflejarse simétricamente o copiarse tal cual a la mitad derecha de la pantalla, ocupando 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 (véase más abajo) y se almacenaba en otros registros.

El TIA también admitía cinco objetos gráficos separados que consistían en:

  • Dos líneas horizontales de 8 píxeles que conforman los " sprites " del Jugador 1 y el Jugador 2. Son de un solo color, se pueden estirar por un factor de 2 o 4, y se pueden duplicar o triplicar.
  • Una "bola": una línea horizontal del mismo color que el área de juego. Puede tener uno, dos, cuatro u ocho píxeles de ancho.
  • Dos "misiles": otra línea horizontal del mismo color que su respectivo jugador. Puede tener uno, dos, cuatro u ocho píxeles de ancho.

Sin búferes de fotogramas basados ​​en RAM, la detección de colisiones también es compleja. El TIA cuenta con detección de colisiones por hardware para todos estos objetos mediante el uso de 15 biestables de activación/desactivación y almacena un mapa de bits de colisiones, que normalmente se leen durante el período VBLANK. [ 4 ] Los registros del TIA permiten al programador controlar el posicionamiento de los objetos gráficos y su color.

El TIA también proporciona dos canales de sonido de un bit. Cada canal ofrece 32 valores de tono y 16 posibles secuencias de bits. Hay un control de volumen de 4 bits. [ 4 ]

Por último, el TIA tiene entradas para leer hasta cuatro controladores de palanca analógicos mediante potenciómetros y para dos gatillos de joystick. [ 4 ]

Dibujando la pantalla

Como los registros almacenan datos para una sola línea de la pantalla, crear una pantalla completa requiere que el programa del juego actualice los registros sobre la marcha, un proceso conocido como " correr el haz ". [ 10 ]

Para iniciar el proceso, el programa del juego, que se ejecuta en la CPU basada en el chip MOS Technology 6502, carga los registros del TIA con los datos necesarios para dibujar la primera línea de la pantalla. A continuación, el TIA espera a que el televisor esté listo para dibujar la línea (bajo las órdenes del hardware analógico asociado al TIA) y lee los registros para generar la señal correspondiente. Durante el intervalo de borrado horizontal entre líneas, el 6502 modifica rápidamente los registros del TIA según sea necesario para la siguiente línea. Este proceso se repite a lo largo de la pantalla.

Esto se complica aún más porque el MOS Technology 6507 del 2600 es una versión con menos pines del 6502 y no admite 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 prepara para la siguiente. La interrupción activa el código necesario para actualizar la pantalla y luego regresa al programa principal. El 6507 omitió estos pines 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 dirección de registro determinada del TIA, este baja 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 cierta 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 está a punto de dibujarse, y que normalmente se ejecuta hasta completarse algún tiempo antes de que el TIA llegue al final de esa línea. Para facilitar la sincronización de la temporización del vídeo, la CPU escribe entonces en el registro que activa el retardo de sincronización a través de RDY, desperdiciando una cantidad variable de tiempo de CPU. [ 4 ]

Además, el TIA genera señales de sincronización vertical de forma semiautomática (para marcar el final de cada fotograma de vídeo y el comienzo del siguiente). El TIA puede insertar una señal de sincronización vertical en la señal de vídeo analógica de salida, pero no dispone de un contador de líneas de fotogramas, por lo que no puede determinar cuándo debe finalizar un fotograma. En su lugar, es el programa de la CPU el que activa las señales de sincronización vertical y cuenta las líneas de cada fotograma para determinar cuándo debe generarse una señal de sincronización vertical. Al igual que en el hardware RDY-wait, la señal de sincronización vertical se activa cuando la CPU escribe en una dirección de registro específica del TIA. Si nunca se escribiera en esa dirección y se permitiera que el TIA funcionara libremente, generaría un único fotograma infinito de líneas de trama activas, que normalmente aparecería en el televisor como una imagen en movimiento. La mayoría de los juegos publicados para la Atari 2600 generaban sincronización vertical después de cada 262 o cada 263 líneas (pero nada en el TIA impide que genere fotogramas de cualquier longitud, más cortos o más largos, aunque las pantallas de vídeo resultantes se desplazarían verticalmente en televisores normales).

Estos y otros detalles de la programación TIA implican que los programadores deben ajustar cuidadosamente el tiempo de ejecución de sus programas para que se ejecuten en el número exacto de ciclos necesarios para los distintos eventos relacionados con la pantalla. Si esto falla, la pantalla no se dibujará correctamente. La parte del programa que realiza esta función se conoce como el "núcleo" del programa. [ 11 ]

Dada esta complejidad, los primeros juegos que usaban el sistema tendían a tener un diseño simple, usando el TIA para crear campos de juego simétricos con los jugadores en la parte superior. 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 normalmente se organizaban 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 almacenar una única pantalla codificada. En este caso, el kernel simplemente avanzaba 20 bits a través de la ROM por cada línea a medida que el TIA avanzaba hacia abajo en la pantalla, una tarea que tomaba solo unos pocos ciclos de tiempo de CPU. Esto se puede reducir aún más utilizando los mismos datos para varias líneas, ya sea duplicándolos verticalmente o leyendo la lista en un sentido para la parte superior y luego en el sentido contrario para la parte inferior, lo que produce una visualización verticalmente reflejada de solo 240 bytes.

Efecto arcoíris visible en el juego Barnstorming.

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 mientras se dibujaba la imagen, creando una cantidad aparente de jugadores. Otro avance se logró al codificar (parcialmente) la pantalla como instrucciones de CPU en lugar de almacenarla como datos fijos en ROM. Adventure utiliza este concepto para producir una amplia variedad de mapas combinando diferentes porciones de los datos en ROM, saltando de un lado a otro a través de ellos durante el dibujo de la pantalla. [ 13 ] Esto permitió que el juego tuviera 30 habitaciones, que de otro modo habrían requerido 14 kB de ROM .

A medida que los programadores se acostumbraban a la sincronización compleja necesaria para que todo funcionara correctamente en pantalla, comenzaron a aprovechar la flexibilidad inherente del TIA para mejorar notablemente las visualizaciones. Una técnica común consistía en modificar los registros de color utilizados para dibujar los estados 1 y 0 del tablero de juego, lo que generaba efectos de arcoíris en las pantallas. Los juegos posteriores podían modificar la línea central del tablero para generar patrones asimétricos, reposicionando y cambiando los sprites de los jugadores en el centro de la pantalla para generar sprites adicionales.

Capacidades de color TIA

El 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 104 colores disponibles. [ 3 ] Finalmente, 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 en sus dos osciladores (o canales ) AUD0 y AUD1. Cada oscilador cuenta con un divisor de frecuencia de 5 bits y un registro de control de audio de 4 bits que manipula la forma de onda . Además, cada canal dispone de un registro de control de volumen de 4 bits .

Divisor de frecuencia (AUDF0/1)

Las frecuencias se generan tomando 31399 Hz (31113 Hz para PAL ) y dividiéndolo por el valor de 5 bits proporcionado. [ 14 ] El resultado es un divisor de frecuencia económico capaz de generar notas desafinadas y la frecuencia afinada impar. 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 . El TIA está sintonizado a la serie armónica invertida debido a que cada frecuencia es la frecuencia base dividida por un número entero.  

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:

Referencias

  1. "I. Teoría de funcionamiento". Manual de servicio de campo del sistema de videocomputadora Atari - Modelo 2600/2600A Doméstico (PDF) . Rev. 02. Atari, Inc. 21 de enero de 1983. págs. 1–4 . Archivado del original (PDF) el 15 de febrero de 2017. Recuperado el 10 de septiembre de 2010 . 
  2. Hague, James (10 de septiembre de 2013). "¿Por qué existen las consolas de videojuegos dedicadas?" . Programación en el siglo XXI .
  3. 1 2 3 Stilphen, Scott (5 de febrero de 2020). "ATARI VCS/2600 TIA CHIPS" . Recuperado el 24 de febrero de 2020 .
  4. 1 2 3 4 5 6 7 8 9 10 11 Decuir, Joe (julio de 2015). "Sistema informático de vídeo Atari: Trae historias de entretenimiento a casa" . Revista IEEE Consumer Electronics : 59–66 . doi : 10.1109/MCE.2015.2421572 .
  5. Chris Crawford, "ANTIC y la lista de visualización" , De Re Atari
  6. McCallum, John C. (13 de febrero de 2012). "Precios de la memoria (1957-2012)" . jcmit.net . Archivado del original el 26 de octubre de 2012. Recuperado el 27 de octubre de 2012 .
  7. Montfort y Bogost, pág. 27
  8. Goldberg, Marty; Vendel, Curt (2012). «Capítulo 5». Atari Inc: Business is Fun . Sygyzy Press. ISBN 978-0985597405.
  9. 1 2 Wright, Steve. "Guía del programador Stella" , (en español) 3 de diciembre de 1979. Archivado el 5 de marzo de 2016.
  10. Kohler, Chris (13 de marzo de 2009). "Racing the Beam: How Atari 2600's Crazy Hardware Changed Game Design" . Wired . Archivado del original el 12 de julio de 2014.
  11. Montfort y Bogost, pág. 34
  12. Más información sobre PAL, consulte "Especificaciones de Atari 2600". Archivado el 24 de mayo de 2011 en Wayback Machine .
  13. Robinett, Warren, "Aventura" , Universidad de Carolina del Norte . Archivado el 27 de enero de 2018.
  14. "Chips de sonido en ordenadores de 8 bits" . Portal FLOP Atari . Consultado el 14 de diciembre de 2023 .

Fuentes

  • Montfort, Nick; Bogost, Ian (2009). Racing the Beam: the Atari Video Computer System . MIT Press. ISBN 978-0-262-01257-7.
  • Programación de ATARI 2600 para principiantes
  • Información técnica de TIA
  • Manual técnico de TIA
  • Esquemas TIA
  • Imágenes de alta resolución de chips TIA
  • Programando la Atari 2600 y a mí mismo - Parte 1 , primera parte de una serie de 8 partes.
  • Desarrollo de la Atari 2600 por Joe Decuir