Master System

La Master System (SMS) es una consola bastante potente, para ser de 8 bits, gobernada por una CPU muy exitosa, que se ha usado en otras consolas (Game Gear, Megadrive,...) y ordenadores personales (ZX Spectrum, Amstrad CPC,...). LA SMS dispone de serie de bastante más memoria que la NES, lo que elimina la necesidad de incluir memoria adicional en los cartuchos, como es común en la consola de Nintendo. La supera también en riqueza visual, sobretodo en riqueza de color, quedando quizá un poco por detrás en el apartado sonoro. En cualquier caso, la ligera superioridad técnica de la consola de SEGA no fue suficiente para desbancar a Nintendo del primer puesto en éxito comercial. En cuanto a variedad y numero de juegos, la NES gana, al igual que en el mando. Pero aún así la SMS no deja de ser una gran consola con algunos titulos francamente geniales.

"Ya abierto el melón", cabe decir que el puesto de ?consola 8 bits más potente es para la PC Engine/TurboGrafx de NEC, que en algunos aspectos casi roza el nivel de una 16 bits. Aunque es cierto que funciona a mayor velocidad que la NES y la SMS, este no es el único motivo. De hecho, muchos creen que los bits o los MHz de la CPU van a decidir si es más potente respecto a otra consola, pero en realidad el rendimiento global depende de un cúmulo de factores, sobretodo en máquinas que tienen un propósito específico, como el caso de una máquina para jugar.

Mapeadores

Al igual que la NES, la Master System necesita usar mapeadores, ya que de lo contrario no podría manejar mucha memoria. De hecho, ningún juego que yo conozca de Master System es tan pequeño como para poder ser accedido sin mapeador. Y al igual que la NES, esto es debido a que la CPU de la Master System también está limitada a un máximo de 64Kbytes de memoria, contando con la memoria interna de la consola y la del cartucho (tanto del juego como la posible memoria para salvar partidas).

La Master System reparte los 64Kbytes de memoria de este modo:

48Kb: Reservada para el juego.
8Kb: RAM.
8Kb: Mirror de RAM, excepto los últimos 4 bytes.

Según este esquema, la Master System sólo pueden manejar juegos de 48Kb sin apoyo externo. Esto sirve de poco, porque es muy poca memoria.

Como ya he comentado, ningún juego que conozca de SMS es tan pequeño. La NES sí tiene algunos juegos famosos, de los primeros, que no requieren mapeador, pero eso es porque en la NES los juegos están divididos en memoria de programa (PGR-ROM) y memoria de gráficos (CHR-ROM). Sólo la de programa es accedida por la CPU, la de gráficos es manejada por el chip de video. En SMS el juego está contenido en una sola ROM, y tanto programa como gráficos son accedidos por la CPU.

Teóricamente podrían existir juegos de Master System de 32Kb, ya que se pueden hacer ROMs caseras de ese tamaño y ejecutarlas en un cartucho regrabable. En ese caso no hace falta mapeador.

La estrategia de mapeadores de la Master System es básicamente idéntica a la de NES, y aunque a la hora de manejar los mapeadores hay diferencias, pues son incompatibles, la base es la misma.

La ROM del juego se parte en ?trozos? de 16Kbytes, y en cada momento se permite el acceso simultáneo a tres de esos ?trozos?. Cuando se necesita acceso a otra zona de la ROM, hay que retirar uno de los trozos previamente accesibles, y colocar el nuevo en su lugar. En realidad no se mueve la información, sino sólo dónde parece estar de cara a la CPU. A estos ?trozos? se los llama marcos (frames). En la NES se llaman bancos, pero se refiere exactamente a lo mismo, sólo que con otro nombre.

La CPU de la SMS sigue teniendo acceso a sólo 48Kbytes del juego, pero ahora puede decidir cuáles de los 48Kb de la rom son accesibles en un momento dado, excepto el primer kilobyte, que siempre es el del principio del juego (debido a que contiene información vital para el funcionamiento de la consola; los vectores de interrupción).

Esta técnica de ir cambiando de marcos se denomina bankswitching, y el mapeador es el chip encargado de controlarlo.

El mapa de memoria de la CPU en mayor detalle queda así:

16Kb: Primer marco de la ROM*.
16Kb: Segundo marco de la ROM
16Kb: Tercer marco de la ROM
8Kb: RAM.
8Kb: Mirror de RAM, excepto los últimos 4 bytes**

(*) Ojo. El primer kilobyte es siempre el del principio de la ROM. Si se mapea otro marco en los primeros 16Kb, sólo los 15 últimos kilobytes pueden ser accedidos. El primero será siempre el primer kilobyte de la ROM.

Esto es porque al principio de la ROM hay unas direcciones necesarias para la consola (vectores de interrupción), y que deben ser accesibles para poder iniciar el sistema.

(**) Los últimos cuatro bytes se usan para controlar el mapeador.

Ejemplo: Si tenemos una rom de 256 Kbytes, y la partimos en trozos de 16Kbytes, tendremos 16 bancos de 16Kbytes. En un momento dado, sólo tres de esos bancos serán accesibles.

Al contrario que ocurre con la NES, para la que hay muchos tipos distintos de mapeadores, en la Master System hay sólo tres, y se usan casi de la misma manera, con la única diferencia de que uno puede manejar menos memoria que los otros dos, y poco más, a nivel básico.

También al contrario que la NES, muy a menudo el mapeador se mete dentro del mismo chip que almacena la ROM del juego. Por lo que es habitual que dentro de los cartuchos haya un solo chip, mientras que en uno de NES no habrá menos de tres. Uno de estos chips es el que se encarga de hacer el bloqueo zonal, para no poder jugar con juegos de otra zona (PAL / NTSC). La SMS no tiene esta protección.


La consola...


CPU

La unidad central de proceso, en otras palabras, el chip encargado de procesar los programas, y de controlar el sistema. Es una versión de 3,5 Mhz del procesador Z80 de Zilog, que fue muy famoso en su época, y cuyos descendientes siguen en fabricación.

VDP

Video Display Processor, o procesador de video. Este chip le da a la SMS casi todo su potencial gráfico. Se encarga de manejar y dibujar los gráficos y los sprites, del scroll, etc. Ha sido diseñada específicamente para la SMS, pero es una modificación del TMS9918 de Texas Instruments, bastante mejorada por cierto, al que añade un modo gráfico específico, el modo 4, que usan casi todos los juegos. El TMS9918 original fue usado en otras consolas como las predecesoras de la Master System, la SG-1000 y SC-3000, o el ordenador MSX, y proporcionaba 4 modos gráficos (del modo 0 a modo 3), que eran bastante inferiores en prestaciones al nuevo modo 4.

Al contrario que en la NES, este chip parece ser el mismo en la versión NTSC que en la PAL. Con una sencilla modificación se puede hacer que una consola PAL funcione a 60Hz, en lugar de 50Hz, pudiendo así disfrutar de los juegos a la velocidad a la que fueron diseñados (las versiones PAL de los juegos se mueven a menor velocidad; ver página "PAL/NTSC" en la sección de documentación).

RAM

Memoria que usa como almacenamiento temporal. Es accesible directamente desde la CPU, y tiene 8 Kbytes de capacidad. Ningún juego de esta consola, que yo sepa, requiere más memoria.

VRAM

Memoria que se emplea para almacenar los gráficos en uso (tiles), el plano de scroll y sus atributos (mapa) y los sprites. Para la paleta la consola dispone de otra pequeña memoria adicional en el interior del chip gráfico (32 bytes). Sólo es accesible a través de la VDP, por lo que no cuenta como espacio dentro del mapa de memoria de 64Kb de la CPU.

Sprite Attribute Table (SAT) es la zona de VRAM dedicada a almacenar los sprites, es decir, su posición y el gráfico asociado a ellos, y requiere sólo 256 bytes.

Para el mapa, o la disposición de los tiles en el plano de scroll, se requieren 1792 bytes de VRAM. Tiene un tamaño en pantalla de 32x28 tiles, o 256x224 píxels.

Esto deja 14.336 bytes libres para almacenar gráficos, lo que da para 448 tiles de 8x8 píxels. Estos tiles pueden ser usados tanto en el plano de scroll como por los sprites. Esto es lo más habitual, pero en la NES, por ejemplo, mapa y sprites disponen de conjuntos de tiles separados.

Para poder escribir en la memoria de vídeo, el procesador debe hacer solicitarlo al VDP a través del uso de puertos. Al contrario que muchos otros sistemas, no dispone de ningún tipo de mecanismo de DMA para acelerar la transferencia de datos, ni siquiera de los sprites, entre la memoria principal de la CPU y la memoria de vídeo.


Los cartuchos...


¿Qué hay dentro de los cartuchos?

Casi siempre un solo chip que contiene la ROM del juego y el mapeador. En este caso se trata de un chip diseñado exclusivamente para la consola.

Otras veces la ROM va en un chip, y el mapeador en otro. En este caso la ROM es una ROM estándar.

En los tres juegos que yo sepa que permiten salvar partida, hay otro chip de SRAM. Es una memoria RAM estática que sirve para salvar partidas, que quedan retenidas gracias a una pila. Esto es debido a que la SRAM se borra cuando se desconecta de la alimentación, en nuestro caso cuando sacamos el cartucho. Si cada vez que apagáramos la consola perdiéramos las partidas salvadas, sería un fastidio, y seguramente, una función bastante inútil.

Los tres mapeadores para la SMS de los que tengo constancia son:

315-5208

315-5235

315-5365

Sí, los nombres no son precisamente pegadizos (si lo son para tí, quizá deberías hacer una visita a tu médico de cabecera).

El primero puede manejar juegos de 128 Kbytes, los otros dos de hasta 512 Kbytes, que es el máximo tamaño que puede ocupar una ROM de Master System. Por lo visto para los juegos que salvan partida sólo se usa el mapeador 315-5235. Desconozco si el 315-5365 lleva incorporada la lógica de control necesaria.