« Arquitectura de la Sega Master System (index)

Arquitectura de la Sega Master System

Chapter 5: Gráficos


Tabla de contenidos

  1. Organizando el contenido
  2. Construyendo el frame
    1. Tiles
    2. Capa de fondo
    3. Sprites
    4. Resultado
  3. Secretos y limitaciones
    1. Detección de colisiones
    2. La necesidad de modularidad
    3. Gafas 3D
  4. Salida de vídeo

Los gráficos en pantalla los genera un chip propietario denominado Video Display Processor o 'VDP'. Internamente, este comparte el mismo diseño que el Texas Instruments TMS9918 (utilizado en la SG-1000) , aunque incorpora mejoras que se detallarán en las siguientes secciones.

Organizando el contenido

Image
Arquitectura de memoria del VDP.

Al VDP van conectados 16 KB de VRAM, accesibles únicamente para el VDP mediante un bus de datos de 16 bits (Sega modificó el diseño original para acceder simultáneamente a dos chips de memoria con buses de 8 bits ). Si vuelves a observar la foto de la placa base, notarás que los chips de RAM y VRAM son prácticamente iguales, salvo que la VRAM utiliza el modelo de chip terminado en '20', que ofrece menor latencia .

En la Master System, la VRAM almacena todo lo que el VDP necesita para renderizar (salvo la Colour RAM). La CPU rellena la VRAM escribiendo en registros específicos del VDP, que a su vez propagan los valores a la VRAM. Dado que el acceso al VDP se realiza a través de puertos de E/S, la CPU debe usar las instrucciones IN y OUT.

Construyendo el frame

El VDP renderiza frames con una resolución de hasta 256×192 píxeles. Las posteriores revisiones añadieron compatibilidad con 256×224 y 256×240 píxeles. No obstante, para mantener la compatibilidad con todos los modelos, los desarrolladores se ciñeron a la resolución estándar. Este chip tiene el mismo modus operandi que la PPU de Nintendo; en otras palabras, los gráficos se renderizan sobre la marcha.

Además, el VDP dispone de cuatro modos de operación distintos, que modifican las características del frame (profundidad de color y resolución):

Veamos ahora cómo se dibuja un frame paso a paso. Para ello, utilizaré los recursos gráficos de Sonic The Hedgehog. Además, para facilitar las explicaciones, este análisis se centrará en la disposición de memoria estándar que Sega sugiere para organizar el contenido gráfico (sin olvidar que el VDP es muy flexible y permite a los juegos optimizar dicha disposición).

Tiles

Image
Todos los tiles.

Image
Un tile individual.

Tiles encontrados en la VRAM.

El Modo IV se basa en el sistema de tiles. Como ya vimos en explicaciones anteriores, los tiles son simplemente bitmaps de 8×8 píxeles que el motor de renderizado recupera para dibujar los gráficos del juego. En el caso del VDP, el frame se compone de dos planos: la capa de fondo y la capa de sprites.

Dentro de la VRAM existe una zona dedicada a los tiles llamada Character generator (Sega denomina 'Characters' a los tiles), con un tamaño de 14 KB. Cada tile ocupa 32 bytes, por lo que se pueden almacenar hasta 448 tiles.

Cada tile contiene 64 píxeles, y el VDP exige que cada uno use 4 bits, lo que permite elegir entre 16 colores. Estos bits indexan una entrada de la Colour RAM o 'CRAM', ubicada dentro del VDP, que almacena las paletas de colores. Los sistemas de paleta reducen el tamaño de los tiles en memoria y permiten a los programadores alternar los colores sin necesidad de almacenar múltiples copias.

La Colour RAM almacena dos paletas de 16 colores cada una. Cada entrada ocupa 6 bits, y cada grupo de 2 bits define un color del modelo RGB. Esto ofrece un total de 64 colores a elegir.

Capa de fondo

Image
Screen map asignado.

Image
Screen map asignado con el área seleccionada marcada.

La capa de fondo es un extenso plano donde se dibujan los tiles estáticos. Para ubicar contenido en ella, existe otra zona en la VRAM llamada Screen map, que ocupa 1,75 KB.

Esto permite a los desarrolladores construir una capa de 896 tiles (32×28 tiles) , pero si hacemos los cálculos, vemos que esta capa es mayor que la resolución de salida de la consola. En realidad, solo 768 tiles (32×24) son visibles, por lo que el área visible se selecciona manualmente a discreción del programador. Además, al desplazar lentamente las coordenadas X e Y del área seleccionada se consigue un efecto de desplazamiento.

Cada entrada del mapa ocupa 2 bytes (coincidiendo con el ancho del bus de datos del VDP) y contiene la dirección del tile en el Character generator, junto con los siguientes atributos:

Curiosamente, hay tres bits sin usar en cada entrada que el juego puede aprovechar para otros propósitos (por ejemplo, flags adicionales de apoyo al motor del juego).

Sprites

Image
Capa de sprites renderizada.

Los sprites son esencialmente tiles que pueden moverse libremente. El VDP puede rasterizar hasta 64 sprites usando un tile individual (8×8 px) o dos tiles apilados verticalmente (8×16 px).

La Sprite Attribute Table es una zona de 256 bytes en la VRAM que contiene una lista de todos los sprites definidos. Sus entradas son similares a las de la capa de fondo, salvo que cada sprite incluye dos valores adicionales que representan las coordenadas X/Y.

El VDP está limitado a un máximo de ocho sprites por línea de escaneo horizontal . Además, si varios sprites se superponen, se muestra el primero de la lista.

Resultado

Image
¡Tachán!

El VDP mezcla automáticamente las dos capas para formar el frame final. El proceso de renderizado se realiza línea de escaneo a línea de escaneo, por lo que el VDP no sabe realmente cómo quedará el frame; algo que solo el usuario percibe una vez que el televisor muestra la imagen completa.

Si examinas la imagen de ejemplo , quizás notes una columna vertical en el lado izquierdo del frame. Esto ocurre porque el Screen map es lo suficientemente alto para ofrecer desplazamiento vertical sin generar artefactos, pero no lo suficientemente ancho para el desplazamiento horizontal. Para solventarlo, el VDP puede enmascarar el extremo izquierdo con una columna de 8 px para evitar que se muestren tiles incompletos.

Para actualizar los gráficos del siguiente frame sin interrumpir la imagen que se está mostrando, el VDP envía dos tipos de interrupciones a la CPU. La primera notifica que el televisor CRT ha terminado de emitir un número determinado de líneas de escaneo (llamada interrupción horizontal), mientras que la otra señala que el CRT ha completado el dibujo de la última línea de escaneo (llamada interrupción vertical), lo que indica que el frame ha finalizado. Durante estos eventos, el haz del CRT se reposiciona para dibujar la siguiente línea de escaneo (intervalo de blanking), por lo que cualquier modificación del estado del VDP no romperá la imagen. El blanking horizontal dispone de un margen de tiempo más corto que el vertical, aunque sigue siendo suficiente para cambiar, por ejemplo, la paleta de colores. Esto permite producir ciertos efectos.

Secretos y limitaciones

A primera vista, el VDP puede parecer otro chip con funcionalidad mínima que hoy damos por descontada. Sin embargo, logró atraer considerable atención frente a la propuesta de Nintendo en su momento. ¿Por qué?

Detección de colisiones

En primer lugar, el VDP podía detectar si dos sprites colisionaban. Para ello bastaba con consultar su registro status . Aunque no podía identificar qué sprites concretos colisionaban, los desarrolladores podían 'triangular' la posición leyendo otros registros, como el scan-line counter.

Esta función no era nueva: el TMS9918 también la incluía, por lo que la SG-1000 también disponía de detección de colisiones.

La necesidad de modularidad

Al analizar el diseño de la PPU de Nintendo, puse el énfasis en su arquitectura interna de memoria. Aunque limitadas, algunas restricciones resultaron beneficiosas en cierta medida, ya que permitían ampliar el sistema con hardware adicional incluido en el cartucho, reduciendo así los costes.

El VDP no aprovecha este enfoque modular. En cambio, Sega implementó una solución diferente que, a su vez, reduce los costes del cartucho. La capa de fondo más reducida y las interrupciones horizontales son ejemplos de ello.

Gafas 3D

Image
Gafas Sega 3-D . La variante americana se conectaba a través del puerto de tarjeta.

Resulta que Sega también comercializó unas 'gafas 3D' como accesorio oficial. Estas funcionaban sincronizadas con el CRT. Durante el gameplay, el juego alternaba la posición de los objetos entre frames. Cada lente contenía una pantalla LCD que se volvía negra para bloquear la visión. La combinación adecuada de parpadeo gráfico y obturadores alternos generaba en la mente del usuario una imagen estereoscópica, produciendo así el efecto '3D'.

Los obturadores se controlan mediante varias direcciones de memoria, pero ninguna indica si las gafas están realmente conectadas. Por ello, los juegos compatibles con este accesorio incluyen una opción en los ajustes para activar manualmente esta función.

Los controladores LCD se conectan mediante un cable jack que se enchufa a la consola. Las versiones europea y americana no incluían la entrada jack, por lo que dependen del puerto de tarjeta para conectar un adaptador (más adelante veremos más sobre esta ranura).

Salida de vídeo

El conector de salida de vídeo de este sistema es increíblemente versátil. Este expone tanto señales composite como RGB, que pueden considerarse los dos 'extremos' de la calidad de vídeo.

El inconveniente es que no transporta 'sincronización compuesta', por lo que usar la salida RGB requiere capturar la señal de sincronización del composite, cuya calidad no es óptima.


Previous: 4. CPU

Next: 6. Audio


Rodrigo Copetti © 2026 RSS Feed

Ir a la edición moderna

Inicio · Escritos · Soporte · Acerca del autor · Acerca del sitio web