Texas Instruments TMS9918

De El Museo de los 8 Bits
Revisión del 03:48 17 oct 2021 de Museo8bits (discusión | contribs.) (1 revisión importada)
(difs.) ← Revisión anterior | Revisión actual (difs.) | Revisión siguiente → (difs.)
Ir a la navegación Ir a la búsqueda
VDP TMS9918A
VDP TMS9918A

El Texas Instruments TMS9918 es un VDP (Video Display Processor : chip de gráficos) desarrollado por Texas Instruments, inicialmente para su uso en su gama de ordenadores TI-99

Especificaciones

  • VRAM: 16 KB
  • Modos de Texto : 40 x 24 y 32 x 24
  • Resolución: 256 x 192 (16 colores)
  • Sprites: 32, 1 color, max 4 por línea horizontal.

Modos de Pantalla

Hay un total de 4 modos de pantalla diferentes para el TMS9918A (como se indicó antes, el TMS9918 original carece del Mode 2):

Mode 0 (Texto): 40×24 caracteres en 2 colores (monocromo). Como la pantalla tien un ancho de 256 pixels, el juego de caracteres tienen un ancho de 6 pixels. Este modo no soporta sprites, ni establecer un color diferente para el borde de pantalla.

Mode 1 (Grafico 1): 32×24 caracteres (bitmap de 256×192), de los que por cada 8 caracteres en el set de caracteres los valores del color de papel y tinta pueden modificarse. Por ejemplo, los caracteres "0"-"7" tienen todos los mismos atributos.

Mode 2 (Grafico 2): 32×24 caracteres (bitmap de 256×192), con una limitación de dos colores por cada 8 pixels de ancho en un carácter.

Mode 3 (Multicolor): modo de 64×48, muy cuadrado y raramente usado. Cada 'pixel' puede tener su propia definición de colores, de ahí el nombre. Los sprites en cambio tienen la misma resolución que en los Modes 1 y 2.

El TMS9918 tiene una paleta de 16 colores, fijada por hardware. Por ejemplo el color 4 es siempre azul oscuro.

Sprites

En los modos 1, 2, y 3, el VDP puede manipular sprites. Son en total 32 sprites de 8×8 o 16×16 pixels cada uno con su propio color (sólo uno por sprite). Sólo puede haber 4 sprites en la misma scanline; cualquier otro sprite adicional es despreciado. Los sprites se dibujan de acuerdo con su orden de prioridad. La CPU puede manipular esta limitación rotando las prioridades de los sprites para qe se dibuje un diferente set de sprtes en cada frame. En lugar de desaparecer por completo, parpadean. Esta técnica se denomina multiplexar sprites.

Cuando dos pixels no transparentes de un par de sprites colisionan, se levanta el indicador de colisión de sprites. Esto es útil para disparar rutinas más avanzadas de detección de colisiones en el software que determinen la localización exacta y actúen en consecuencia. Téngase en cuenta que el VDP no informa al programa de qué dos sprites han colisionado.

Detalle del Mode 2

Técnicamente, el Mode 2 es un modo de caracteres con un colorido set de caracteres. La pantalla está dividida verticalmente en tres áreas de 256×64 pixels, cada una de las cuales dispone de su propio set de caracteres. Imprimiendo secuencialmente los caracteres 0 a 255 en las tres áreas, el programa puede simular un modo gráfico donde cada píxel puede setearse individualmente. Sin embargo el framebuffer resultante no es linear.

El programa pude usar también tres sets de caracteres idénticos, y jugar con la pantalla como un modo de texto con un colorido set de caracteres. Los fondos de plantilla y sprites consisten entonces en caracteres coloridos. Esto era de uso común en los juegos, porque para llenar / desplazar la pantalla entera, sólo había que trasladar 32 × 24 bytes. Los juegos en otros ordenadores domésticos como el Commodore 64 también trabajan con una base de caracteres. Los gráficos debían prepararse de tal manera que los bordes del área de 8×8 pixels no fueran demasiado evidentes, un arte donde Konami es especialmente conocida por su excelencia.

Este es el reto del Mode 2 del TMS9918 : cada área de 8×1 pixels tiene dos colores, primer plano y fondo. Ambos pueden ser libremente elegidos de los 16 de la paleta de colores. Pero dentro de cada zona de 8×1 pixels, sólo pueden existir 2 colores diferentes. Cuando se manipula la pantalla en BASIC con el comando LINE, es fácil superar el límite de dos colores por cada área de 8×1 pixels y provocar un "derrame de colores".

En comparación, el Commodore 64 tiene un límite de 4 colores por área de 4×8 pixels. Esto significa que hay menos restricciones de color local, pero más globales: en realidad, sólo tres de los 4 colores pueden elegirse libremente de los 16, el otro color tiene que ser el mismo en toda la pantalla. Ese color puede ser redefinido para cada línea de barrido de pantalla con resultados diversos.

El TMS9918 no tiene registros de scroll. El desplazamiento debe implementarse por software.

Trucos usados en juegos

Algunos juegos han tratado de superar el límite del scroll de 8 pixels, desplazando el conjunto de caracteres en sí. Esto es muy lento para ser viable,por lo que el juego rellena el conjunto de caracteress con 8 diferentes versiones de un sólo carácter.

Circus Charlie (MSX) hace scroll horizontal, y cae por ello en el límite del máximo de 2 colores por área de 8×1. Los gráficos fueron "monochromizados" y eso provoca algunos problems técnicos medio cubiertos con sprites.

Pippols (MSX) hace scroll vertical. Por ello no se ve afectado por el límite del área de 8×1, el jugador puede desplazarse a pie sin problemas a lo largo de las coloridas flores y otros gráficos florales. Sin embargo no son muchos los distintos objetos en pantalla, ya que el conjunto de caracteres se reduce por el factor 8. Pippols parece estar incluso por debajo de ese límite por algún factor.

Cuando se corre a plena velocidad en Road Fighter (MSX, juego de carreras con scroll vertical), la pantalla se mueve 8 pixels por cada frame. Ello se traduce en un buen scroll a pesar de los saltos de 8 pixels. Sin embargo, para muchos juegos de esta velocidad de desplazamiento no es posible.

En Knightmare (MSX), la escena se desplaza verticalmente tan lentamente que los saltos de 8 pixels no molestan demasiado. Zanac tiene un scroll vertical bastante rápido, pero debido a los fondos sencillos con los que nunca colisionas, es una cuestión menor. Es más problemático en Némesis ( juego tipo "R-Type" de scroll horizontal). On the other hand, the Nemesis 2 backgrounds are really of "16 bit" beauty. Por otra parte, los fondos en Némesis 2 tienen realmente un acabado de "16 bits".

Herramientas actuales

Los TMS9918 tienen hoy en día muchos fans que siguen creando y manteniendo herramientas de PC (o sobre Linux) para el diseño de caracteres, sprites y conversión de imágenes en color verdadero a Modo 2. Respecto de esto último, hay que destacar el uso de algoritmos de difuminado (por ejemplo Floyd-Steinberg), a fin de superar para el problema de colisión de atributos y las limitaciones de la paleta fija.

Se pueden encontrar herramientas implementando difuminado en conversión a Modo 2 en: