stringtranslate.com

Adaptador de interfaz de televisión

Atari 2600

El Adaptador de interfaz de televisión [1] ( TIA ) es el chip de computadora personalizado , junto con una variante de la tecnología MOS 6502, que constituye el corazón de la consola de juegos Atari Video Computer System de 1977 . El TIA genera la visualización en 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 tener un búfer de cuadros, sino que requirió una programación detallada para crear incluso una pantalla simple. [2]

El desarrollo del TIA CO10444/CO11903 [3] fue dirigido por Jay Miner, quien continuó en Atari ampliando el diseño del TIA para las computadoras Atari de 8 bits con los chips ANTIC y CTIA/GTIA . Más tarde, Jay Miner dirigió el diseño de los chips personalizados para la computadora Amiga .

Diseño

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

Fondo

Alrededor de 1975, los ingenieros de Atari en Cyan Engineering, dirigidos por Steve Mayer y Ron Milner, habían estado considerando alternativas al desarrollo de hardware dedicado, como circuitos integrados de aplicaciones específicas (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 por computadora se generaban mediante el uso de sprites dibujados sobre un campo de juego, que luego se traducían a una señal analógica para mostrarla en un monitor de video CRT . [5] Los sprites se mantendrían como un mapa de bits en un framebuffer , 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 en color NTSC convencional , las resoluciones máximas generalmente caían 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 coste del 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 diseñó el diseño básico del 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] Utilizando un prototipo de placa para el adaptador de pantalla encima de 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 continuara el 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 costo de la RAM se mantuvo alto cuando el equipo comenzó su diseño y, por lo tanto, la opción de usar framebuffers basados ​​en memoria se eliminó del diseño de la TIA. [4]

Diseño sin RAM

Debido a la falta de RAM, el TIA se diferencia del enfoque framebuffer convencional en el que la pantalla se compone de 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 a partir de sus respectivos registros, a diferencia de la técnica utilizada en un modelo mapeado con 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 puede reflejarse simétricamente o copiarse tal cual en la mitad derecha de la pantalla para un total de 40 bits (cada bit tiene 4 ciclos de color). ancho). El color que se dibujó si el bit era 1 o 0 se seleccionó de una paleta predefinida de hasta 128 colores (ver más abajo) y se mantuvo en otros registros.

La TIA también admitía cinco objetos gráficos separados que constan de:

Sin framebuffers basados ​​en RAM, la detección de colisiones también es complicada. La 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 el posicionamiento de los objetos gráficos y su color.

El TIA también proporciona dos canales de sonido de un bit. Cada canal proporciona 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 paletas analógicas mediante potenciómetros y para dos disparadores de joystick. [4]

Dibujando 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 del juego actualice los registros sobre la marcha, un proceso conocido como " carrera contra el haz ". [10]

Para iniciar el proceso, el programa de juego que se ejecuta en la CPU basada en MOS Technology 6502 carga los registros de TIA con los datos necesarios para dibujar la primera línea de la pantalla. Luego, la TIA espera hasta que el televisor esté listo para trazar la línea (bajo el comando del hardware analógico asociado de la 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 la tecnología MOS 6507 en el 2600 es una versión con 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 ráster 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 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 sincronización de la línea rasterizada 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 "esperar 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, proporcionando 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 está a punto de dibujarse, y que generalmente se ejecuta hasta su finalización algún tiempo antes de que TIA llegue al final de esa línea. Para facilitar la sincronización del tiempo de video, la CPU luego escribe en el registro que activa el retraso de sincronización a través de RDY, desperdiciando una cantidad variable de tiempo de CPU. [4]

Además, el TIA solo genera semiautomáticamente señales de sincronización vertical (para marcar el final de cada fotograma de vídeo y el inicio 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 cuadros y, por lo tanto, no puede determinar cuándo debe finalizar un cuadro. En cambio, corresponde al programa de la CPU activar señales de sincronización vertical y contar las líneas en cada cuadro para determinar cuándo se debe generar una señal de sincronización vertical. Al igual que con el 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 escribiera en esa dirección y se permitiera que el TIA funcionara libremente, generaría un único cuadro infinito de líneas rasterizadas activas, que normalmente aparecerían en el televisor como una imagen en movimiento. 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 fotogramas de cualquier longitud, más cortos o más largos, aunque las pantallas de vídeo resultantes se mostrarían verticalmente en televisores normales).

Estos y otros detalles de la programación TIA significan que los programadores deben cronometrar sus programas cuidadosamente para que se ejecuten en el número exacto de ciclos necesarios para diversos eventos relacionados con la pantalla. Hacer esto mal significa que la pantalla no se dibuja correctamente. La parte de un programa que hace esto se conoce como "núcleo" de ese 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 cima. 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 guardaban en la memoria ROM de 2 kB del cartucho del juego . Como cada línea utilizaba 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 sólo 480 bytes (192 x 20/8) de los 4 kB del cartucho para contener una pantalla única codificada. En este caso, el kernel simplemente avanzó 20 bits a través de la ROM para cada línea a medida que el TIA avanzaba por la pantalla, una tarea que tomó sólo 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ándolas verticalmente o leyendo la lista en un sentido para la parte superior y luego en sentido contrario para la parte inferior, lo que produce una visualización reflejada verticalmente de solo 240 bytes.

Efecto arcoíris visible en el juego Barnstorming

Un avance clave fue la licencia 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 aparentemente una gran cantidad de jugadores. Otro avance se logró codificando (parcialmente) la pantalla como instrucciones de la CPU en lugar de almacenarla como datos fijos en la ROM. Adventure utiliza este concepto para producir una amplia variedad de mapas combinando diferentes partes de los datos en ROM, saltando hacia adelante y hacia atrás durante el dibujo de la pantalla. [13] Esto permitió que el juego tuviera 30 salas, que de otro modo habrían requerido 14 kB de ROM .

A medida que los programadores se acostumbraron más 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 usaban para dibujar los estados 1 y 0 del campo de juego, lo que daba como resultado visualizaciones con efectos similares a los de un arco iris. Los juegos posteriores podrían modificar la línea media del campo de juego para generar patrones asimétricos, reposicionando y cambiando los sprites de los jugadores en la mitad de la pantalla para generar sprites adicionales.

Capacidades de color 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 solo hay 104 colores disponibles para PAL (número de pieza CO11903). [3] Finalmente, la paleta SECAM consta de sólo 8 colores.

paleta NTSC

paleta amiga

paleta SECAM

Generador de ruido/tono (AUD0/1)

El TIA es capaz de generar diferentes tipos de ondas de pulso y salida de ruido blanco 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 desafinar notas y alguna que otra frecuencia sintonizada. 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 o ruido complejos. La siguiente tabla (con duplicados diseñados) explica cómo se generan sus tonos:

Referencias

  1. ^ "I. Teoría del 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. Archivado desde el original (PDF) el 15 de febrero de 2017 . Consultado el 10 de septiembre de 2010 .
  2. ^ La Haya, James (10 de septiembre de 2013). "¿Por qué existen las consolas de juegos dedicadas?". Programación en el siglo XXI .
  3. ^ abc Stilphen, Scott (5 de febrero de 2020). «CHIPS ATARI VCS/2600 TIA» . Consultado el 24 de febrero de 2020 .
  4. ^ abcdefghijk Decuir, Joe (julio de 2015). "Atari Video Computer System: lleve las 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 desde el original el 26 de octubre de 2012 . Consultado el 27 de octubre de 2012 .
  7. ^ Montfort y Bogost, pág. 27
  8. ^ Goldberg, Marty; Vendel, Curt (2012). "Capítulo 5". Atari Inc: Los negocios son divertidos . Prensa Sygyzy. ISBN 978-0985597405.
  9. ^ ab 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: cómo el loco hardware de Atari 2600 cambió el diseño del juego". Cableado . Archivado desde el 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 computadoras de 8 bits". Portal FLOP Atari . Consultado el 14 de diciembre de 2023 .

Fuentes

enlaces externos