stringtranslate.com

TMS9918

VDP TMS9918A
VDP TMS9918A
VDP TMS9928A
VDP TMP9118NL prototype

The TMS9918 is a video display controller (VDC) manufactured by Texas Instruments, in manuals referenced as "Video Display Processor" (VDP) and introduced in 1979.[1] The TMS9918 and its variants were used in the ColecoVision, CreatiVision, Memotech MTX, MSX, NABU Personal Computer, SG-1000/SC-3000, Spectravideo SV-318, SV-328, Sord M5, Tatung Einstein, TI-99/4, Casio PV-2000, Coleco Adam, Hanimex Pencil II, and Tomy Tutor.

The TMS9918 generates both grid-based character graphics (used to display text or background images) and sprites used for moving foreground objects.

The key features of this chip are, as highlighted on a 1980 presentation by Karl Guttag (one of the designers):[1]

Product family

All of the ICs in this family are usually referred to by the TMS9918 name, sometimes with an 'A' postfix. The 'A' indicates a second version of the chip which added new features, most prominently the addition of a bitmap mode (Graphic II).

TMS9918

The TMS9918 was only used in the TI-99/4; the TI-99/4A and the other computers had the A version VDC.

TMS9918A, TMS9928A and 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) emiten 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.

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 .

Caracteres

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 ".

indocumentados

Texas Instruments originalmente solo documentaba 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 propia tabla de patrones y 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.

Colores

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

[ ¿ investigacion 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.

Especificaciones

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 . [ cita necesaria ] 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 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