stringtranslate.com

TMS9918

VDP TMS9918A
VDP TMS9918A
VDP TMS9928A
Prototipo VDP TMP9118NL

El TMS9918 es un controlador de pantalla de video (VDC) fabricado por Texas Instruments , en los manuales denominado "Video Display Processor" (VDP) e introducido en 1979. [1] El TMS9918 y sus variantes se utilizaron en ColecoVision , CreatiVision , Memotech MTX , MSX , Computadora personal NABU , SG-1000 / SC-3000 , Spectravideo SV-318 , SV-328 , Sord M5 , Tatung Einstein , TI-99/4 , Casio PV-2000 , Coleco Adam , Hanimex Pencil II y Tomy Tutor .

El TMS9918 genera gráficos de caracteres basados ​​en cuadrículas (utilizados para mostrar texto o imágenes de fondo) y sprites utilizados para mover objetos en primer plano.

Las características clave de este chip son, como se destacó en una presentación de 1980 de Karl Guttag (uno de los diseñadores): [1]

Familia de productos

Por lo general, se hace referencia a todos los circuitos integrados de esta familia con el nombre TMS9918, a veces con un sufijo 'A'. La 'A' indica una segunda versión del chip que agregó nuevas características, entre las que destaca la adición de un modo de mapa de bits (Gráfico II).

TMS9918

El TMS9918 sólo se utilizó en la TI-99/4; la TI-99/4A y las otras computadoras tenían la versión A VDC.

TMS9918A, TMS9928A y TMS9929A

El TMS9918A y el TMS9928A emiten una señal de vídeo de 60 Hz , mientras que el TMS9929A ​​emite una señal de vídeo de 50 Hz. La diferencia entre '1' y '2' en 'TMS9918A' y 'TMS9928A' es que la versión '1' emite vídeo NTSC compuesto , mientras que las versiones '2' (incluido el TMS9929A) emite vídeo analógico YPbPr [2] (Y luminancia y señales de diferencia de color Pr (RY) y Pb (BY) . La necesidad de este último era predominante en el mundo de 50 Hz , incluida Europa, debido a los diferentes estándares de señal de vídeo PAL y SECAM . Era más rentable generar Y, Pr y Pb y codificarlos en PAL o SECAM en el modulador de RF , que intentar tener una consola diferente para cada estándar de color diferente. La versión '1' también cuenta con una entrada de video compuesto externa que lo convirtió en un chip útil para usar en "tituladores" de video que podrían superponer texto o gráficos en video, mientras que la versión '2' no.

Las variantes originales del TMS9918 eran NMOS de carga de agotamiento y se fabricaban en un proceso de 4,5 μm; Fue uno de los primeros chips NMOS de carga de agotamiento que fabricó Texas Instruments, en contraste con el microprocesador TMS9900 que utilizaba el proceso NMOS de carga de mejora más antiguo que requería tres voltajes de suministro. Debido al gran tamaño del troquel y a la velocidad interna relativamente alta, el TMS9918 se calentó lo suficiente como para necesitar un disipador de calor; algunos dispositivos como la consola DINA taiwanesa (un híbrido Colecovision/SG-1000) no instalaron disipadores y sufrieron fallos de funcionamiento de el chip. En 1983, Texas Instruments había reducido el tamaño del troquel a 3 μm, lo que funcionaba a menor temperatura y ya no requería un disipador; las máquinas MSX y la Sega SG-1000 usaban el nuevo TMS9918 de 3 μm, mientras que la mayoría de las Colecovisions tenían la variante original de 4,5 μm (la versión final). de las consolas producidas en 1985 tenían el modelo más nuevo TMS9918).

TMS9118, TMS9128 y TMS9129

Una variante posterior de los chips de la serie TMS9918, el TMS9118 , TMS9128 y TMS9129 , se lanzó a mediados de la década de 1980, pero nunca fue muy popular. Se cambia la función de un pin y el mapeo de la memoria de video permite usar dos chips de 16K×4 bits en lugar de los ocho chips de 16K×1 bits que necesita el TMS99xx. Por lo demás, los chips son completamente idénticos a los TMS9918A, TMS9928A y TMS9929A ​​respectivamente.

Interfaces externas

RAM de vídeo

El VDP tiene 16K × 8 bits de memoria de vídeo externa. Esta memoria está fuera del espacio de direcciones de la CPU . Tener un espacio de direcciones separado significa que la CPU tiene que hacer más trabajo para escribir o leer esta memoria, pero también significa que el VDC no ralentiza la CPU cuando lee periódicamente esta memoria para generar la pantalla. Además, deja más espacio de direcciones disponible para la CPU para otra memoria y hardware asignado a la memoria.

Dependiendo del modo de pantalla que se utilice, es posible que no se necesite toda la memoria de video para generar la visualización. En estos casos, la CPU puede utilizar la memoria de vídeo adicional para otros fines. Por ejemplo, un uso es como bloc de notas para descomprimir gráficos o datos de sonido almacenados en la ROM del cartucho. Otro uso popular es crear una segunda copia de algunos o todos los datos de la pantalla para eliminar el parpadeo y el corte, una técnica conocida como doble almacenamiento en búfer .

UPC

La CPU se comunica con el VDP a través de un bus de 8 bits . Un pin controlado por la CPU separa este bus en dos "puertos", un puerto de control y un puerto de datos. Para escribir o leer un byte de memoria de video, la CPU primero tiene que escribir dos bytes en el puerto de control del VDP en el registro de direcciones interno del VDC . A continuación, la CPU realiza la escritura o lectura real en el puerto de datos del VDP. A medida que se escribe o lee un byte de datos, el TMS9918 incrementa automáticamente el registro de dirección interna. Esta función de incremento automático acelera las escrituras y lecturas de bloques de datos. El puerto de control también se utiliza para acceder a varios registros internos.

Gráficos

El TMS9918 tiene dos tipos de gráficos distintos y separados: personajes y sprites .

Personajes

Los caracteres se utilizan normalmente para crear texto o imágenes de fondo. Aparecen detrás de los duendes.

Modos de pantalla

El TMS9918 tiene varios modos de pantalla que controlan las características de los personajes.

Documentado

Hay cuatro modos de pantalla documentados disponibles en el TMS9918A (como se mencionó anteriormente, el TMS9918 carece del modo Gráfico 2):

Detalles del modo de pantalla 2

Técnicamente, el modo 2 es un modo de personaje con un conjunto de personajes colorido. La pantalla está dividida horizontalmente en tres áreas de 256×64 píxeles, cada una de las cuales tiene su propio conjunto de caracteres. Al imprimir secuencialmente los caracteres del 0 al 255 en las tres áreas, el programa puede simular un modo de gráficos donde cada píxel se puede configurar individualmente. Sin embargo, el framebuffer resultante no es lineal.

El programa también puede utilizar tres juegos de caracteres idénticos y luego tratar la pantalla como un modo de texto con un juego de caracteres colorido. Los patrones de fondo y los sprites constan de personajes coloridos. Esto se usaba comúnmente en los juegos, porque solo sería necesario mover 32 × 24 bytes para llenar y desplazar toda la pantalla.

El desafío de usar TMS9918 modo 2 era que cada área de 8×1 píxeles podía tener solo dos colores, primer plano y fondo. Se podían elegir libremente entre la paleta de 16 colores, pero para cada área de 8×1, sólo podían existir dos colores. Al manipular la pantalla en BASIC con el LINEcomando, uno fácilmente podría exceder el máximo de 2 colores por área de 8×1 y terminar con un " derrame de color ".

indocumentado

Texas Instruments originalmente solo documentó los cuatro modos enumerados anteriormente. Sin embargo, la parte que habilita el modo 2 es más interesante de lo que parece inicialmente. Se describe mejor como un bit modificador para los otros modos. Habilitarlo hace tres cosas: [3]

  1. Expande el tamaño de la tabla de colores.
  2. Divide la pantalla horizontalmente en tercios.
  3. Cambia dos bits de dirección de las tablas de patrones y colores en bits de máscara, lo que controla si cada tercio de la pantalla tiene su propio patrón y tabla de colores o no.

Teniendo esto en cuenta, son posibles tres modos adicionales. Tenga en cuenta que, aunque los chips TMS9918A originales admiten estos modos, es posible que los clones y emuladores no lo hagan.

Desplazamiento

El TMS9918 no tiene registros de desplazamiento , por lo que el desplazamiento debe realizarse mediante software. Además, el desplazamiento sólo se puede realizar en los límites de los caracteres, no píxel por píxel. [ cita necesaria ]

duendes

Los sprites se utilizan normalmente para crear objetos de primer plano en movimiento. Aparecen delante de los personajes (mosaicos).

Los modos 1, 2 y 3 pueden representar sprites. Puede haber hasta 32 sprites monocromáticos de 8×8 o 16×16 píxeles en la pantalla, cada sprite con su propio color único. La ilusión de sprites multicolores se puede crear apilando varios sprites uno encima del otro.

No puede haber más de 4 sprites en una sola línea de exploración; Los píxeles horizontales de cualquier sprite adicional se eliminan. Los sprites con mayor prioridad se dibujan primero. El VDP informa en un registro de estado el número del primer sprite eliminado. La CPU puede sortear esta limitación rotando las prioridades de los sprites para que se dibuje un conjunto diferente de sprites en cada cuadro; en lugar de desaparecer por completo, los sprites parpadearán. Esta técnica se conoce como multiplexación de sprites.

El VDP no maneja el movimiento automático de sprites. En cambio, en la práctica, la CPU detectará la interrupción vertical del VDP , una salida VDP estándar, que se activa automáticamente una vez cada 50 o 60 segundos (dependiendo de la variante del chip), al inicio del VBI ( intervalo de supresión vertical). ). Luego, la CPU salta a una rutina de manejo de sprites en el software, que a su vez le indica al VDP dónde reposicionar los sprites.

Cuando dos píxeles no transparentes en cualquier par de sprites chocan, se activa la bandera de colisión de sprites. Esto es útil para activar rutinas de detección de colisiones más avanzadas dentro del software que luego pueden determinar la ubicación exacta de la colisión y actuar en consecuencia, ya que el VDP es incapaz de informar qué dos sprites han chocado.

Bandera

Los chips de la familia TMS9918 utilizaban una paleta de vídeo compuesto . Los colores se generaron basándose en una combinación de valores de luminancia y crominancia para el TMS9918A y los valores Y , RY y BY son para el TMS9928A/9929A.

Valores de la hoja de datos

El TMS9918 tiene una paleta fija de 16 colores , compuesta por 15 colores mostrados y un color "transparente".

Según la "Tabla 2.3 - Asignaciones de colores" en la hoja de datos [5], los niveles de salida son los siguientes:

Notas: Los colores son meramente ilustrativos y se convirtieron de los valores YPrPb (MS9928A/9929A) a sRGB teniendo en cuenta la corrección gamma . La colorimetría SMPTE C no se tuvo en cuenta; consulte la siguiente sección para conocer conversiones de colores alternativos.

pantalla CRT

[ investigación original? ]

Para convertir Y, RY y BY a RGB es necesario considerar cómo se originó Y, es decir:

Y = R * 0,30 + G * 0,59 + B * 0,11

Por lo tanto es necesario utilizar las siguientes fórmulas:

R = RY + Y B = POR + Y G = (Y - 0,30 * R - 0,11 * B) / 0,59

Pero al principio hay que prestar atención al hecho de que para todos los colores que no tienen crominancia (por ejemplo, negro, gris y blanco), RY y BY no son 0% sino que todos tienen una compensación del 47%. Por lo tanto, al principio debes restar este desplazamiento de todos los valores RY y BY. Debido a que en la práctica este paso nunca se realizará solo, no hay problema en que algunos resultados sean negativos:

Ahora puedes hacer la conversión a RGB. Todos los resultados deben estar en el rango del 0% al 100%:

Podría llegar a la conclusión de que el valor erróneo del 113 % para R del color "rojo claro" se debe a un error tipográfico en la hoja de datos y que RY no debe ser superior al 80 %. Pero si mides las señales de salida del chip con un osciloscopio , encontrarás que todos los valores de la tabla son correctos. Entonces, el error está dentro del chip y hace que la señal roja se sature. Por este motivo este valor debe corregirse al 100%.

Además, hay que tener en cuenta que hasta entonces sólo había tubos de rayos catódicos disponibles para monitores de ordenador y televisores, y que estos CRT tenían una gama gamma . Los chips de la serie TMS9918 habían sido diseñados para funcionar con televisores y sus CRT tenían una gamma de 1,6 (observación: los CRT de los monitores Macintosh tenían 1,8 y los CRT de los monitores de PC tenían 2,2). Las pantallas planas no tienen gamma . Por esta razón, los colores del TMS9918 se ven algo pálidos aquí, como puede ver en la primera tabla de arriba. La siguiente tabla utiliza los valores corregidos con gamma, que son (escritos en hexadecimal porque así lo necesita la codificación de Wikipedia):

Nota: Los pasos utilizados son: Redondear todos los valores a dos decimales, luego elevarlos a la potencia de 1,6 para la corrección gamma y finalmente transformar el rango de valores de 0...100 a 0...255.

Presupuesto

Legado

El TMS9918A de Texas Instruments fue sucedido por el V9938 de Yamaha , que agregó modos de mapa de bits adicionales, sprites más coloridos , un registro de desplazamiento vertical de pantalla completa, registros de desplazamiento vertical y horizontal, un blitter de hardware y una paleta personalizable . El V9938 fue diseñado para el estándar de computadoras MSX2 y luego se usó en una actualización de terceros para la TI-99/4A : la 'computadora en una tarjeta' Geneve 9640 .

El V9938, a su vez, fue sucedido por el V9958 , que añadió algunos modos adicionales de alto color y un registro de desplazamiento horizontal de dos páginas. Estos chips se utilizaron en los sistemas MSX2+/ turboR .

Toshiba hizo un clon llamado T6950 y no admite la función de enmascaramiento de tabla de colores/patrones no documentados en el modo de gráficos 2. [6] [ se necesita una mejor fuente ] Más tarde, Toshiba lanzó el motor MSX T7937A con un VDP incorporado y corrigió las funciones de enmascaramiento. Ambos VDP de Toshiba presentan una paleta ligeramente diferente a la de los VDP de Texas, con colores más vivos.

El TMS9918 fue la base de los chips VDP en Master System , Game Gear y Mega Drive de Sega . La PPU de Nintendo utilizada en Famicom/NES también se basó libremente en el TMS9918. Utilizaron modos de visualización y registros adicionales, y agregaron capacidades de desplazamiento de hardware y otras funciones avanzadas.

Ver también

Referencias

  1. ^ ab "Borrador del simposio técnico de Arizona TMS9918 - Desarrollo - ¡SMS Power!". www.smspower.org .
  2. ^ "Espacios de color YUV, YCbCr, YPbPr | DiscoveryBiz.Net". www.discoverybiz.net .
  3. ^ Procesador de visualización de video / Modos híbridos, que también se utiliza.
  4. ^ ab Procesadores de visualización de vídeo: guía del programador (PDF) . Instrumentos de Texas.
  5. ^ Texas Instruments (1982), Procesadores de visualización de video TMS9918A / TMS9928A / TMS9929A ​​(PDF) , consultado el 2 de noviembre de 2018
  6. ^ "Modo indocumentado 1 + 2: encuesta/discusión | Centro de recursos MSX (página 2/4)".

Enlaces externos