Llevo unos días sin escribir entradas, el motivo ha sido que no he tenido mucho tiempo para dedicar al emulador y el poco que tenía lo he pasado corrigiendo los testes del ZEXALL que no funcionaban (ya está todo correcto, al final era lo más tonto, la llamada a la macro SCF se me coló como CCF que es otra macro y claro, ejecutaba la que no era y por eso el checksum no salía correcto…)

Bueno, ya me he puesto a implementar el VDP (Video Display Processor), el procesador gráfico de la Master System, así que voy a hablaros un poco de él.

Este procesador está basado en un TMS9918A de Texas Instruments pero con algunos aspectos mejorados.

La resolución “oficial” del modo de video 4 (este procesador tiene 16 modos de video, pero solo el 4 es el documentado por SEGA) es de 256×192 píxeles.

Cuenta con dos memorias RAM internas al propio chip.

La primera es la llamada CRAM (Color RAM) que se encarga de almacenar las paletas de colores que se pueden usar en pantalla (hablaré de los modos gráficos paletizados, para quien no sepa qué son, en próximas entradas) y tiene un tamaño de 32 bytes (64 en la Game Gear) lo que nos da 32 colores RGB distintos de 6 bits cada uno (2 bits para almacenar cada tono: rojo, verde y azul) de un total de 64.

La segunda memoria es la VRAM (Video RAM) y tiene un tamaño de 16 KBytes. Esta memoria se divide en tres zonas:

  • Screen Map (1792 bytes): es una zona dedicada a almacenar un mapa con la información de los tiles que forman el fondo (32×24 tiles de 8×8 píxeles).
  • Attribute Table (256 bytes): una zona dedicada a almacenar una tabla con los atributos de un máximo de 64 sprites simultáneos.
  • Character Generator (14336 bytes): es la zona de memoria donde se almacenan los patterns (no me sale una traducción apropiada), es decir, pequeños gráficos de 8×8 píxeles de los que están formados los tiles y sprites.
Por otro lado, el VDP cuenta con 11 registros internos de 8 bits que sirven para determinar su comportamiento.

Cabe mencionar que el Z80 “ve” al VDP a través de dos puertos de Entrada/Salida, concretamente los 0xBF (comandos) y 0xBE (datos).

Bueno, de momento lo dejo por hoy, a ver si me da tiempo a hacer algunas pruebas antes de cenar. Mañana os seguiré hablando del VDP.