LO + BASICO SOBRE…
Parte 2: LA MASTER SYSTEM
CONOCIENDO A LA SMS (por dentro)
La SMS es una consola bastante potente para ser de 8 bits, gobernada por una CPU muy exitosa, que se ha usado mucho en otras consolas (GameBoy, Megadrive,...) y ordenadores personales (Spectrum, Amstrad,...). LA SMS tiene bastante más memoria RAM y de video que la NES, su rival más directo, a la que supera también en riqueza visual. Aunque cabe decir que no fue suficiente para desbancar a la todopoderosa Nintendo. En cuanto a variedad y numero de juegos, la NES supera a la SMS, al igual que en el mando. Pero aún así la SMS no deja de ser una gran consola con algunos titulos francamente geniales.
Cabe decir que el puesto de ‘consola de 8 bits más potente' es para la PC Engine/TurboGrafx, que casi puede pasar por una 16 bits. 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 muchas cosas.
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 64Kb 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 dedica los 64Kb de memoria así:
| 48Kb: Reservada para el juego. |
| 8Kb: WRAM. |
| 8Kb: Mirror de WRAM, 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á 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 gravable. En ese caso no hace falta mapeador. Pero el siguiente tamaño de ROM es 64Kb, que ya es más de los 48Kb que puede manejar la consola por sí misma.
La estrategia de mapeadores de la Master System es básicamente idéntica a la de NES, aunque a la hora de manejar los mapeadores hay diferencias. Pero la base es la misma.
Las roms de los juegos se parten en “trozos” de 16Kb, y en cada momento se permite el acceso simultáneo a 3 de esos “trozos”. Cuando se necesita otro, hay que retirar uno previamente, y colocarlo en su lugar. 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 48Kb del juego, pero ahora puede decidir CUALES de los 48Kb de la rom son accesibles en un momento dado, excepto el primer kilobyte, que siempre es el del principio del juego.
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: WRAM. |
| 8Kb: Mirror de WRAM, 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 al iniciar el sistema. Además, los puertos de la consola están entre las direcciones $DC y $F2, por lo que no puede haber información de la ROM mapeada en estas posiciones. Estos puertos sirven para controlar el chip de video, de sonido, o para registrar el estado de los pads.
(**) Los últimos 4 bytes se usan para controlar el mapeador.
Ejemplo: Si tenemos una rom de 256Kb, y la partimos en trozos de 16Kb, tenemos 16 bancos de 16Kb. En un momento dado, sólo 3 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 3, y los 3 se usan igual, con la única diferencia de que uno puede manejar menos memoria que los otros 2, y poco más.
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 3. Uno de estos 3 chips es el que se encarga de hacer el bloqueo zonal, para no poder jugar con juegos extranjeros. La SMS no tiene esta protección.
SOBRE 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.5Mhz del procesador Z80 de Zilog, que fue muy famoso en su época. |
| 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 sus 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 inferior en prestaciones al nuevo modo 4. |
| RAM | Memoria que usa como almacenamiento temporal. Se la suele llama WRAM (supongo que Work RAM). Es accesible desde la CPU, y tiene 8Kb de capacidad. Ningún juego que yo sepa usa más. |
| VRAM | Memoria que se emplea para almacenar los gráficos en uso, los niveles, sus atributos, los sprites,… solo 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. |
SOBRE LOS CARTUCHOS
Pero ¿qué hay dentro de los cartuchos?
Poca cosa. 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 3 juegos que yo sepa que permiten salvar partida, hay otro chip de SRAM. Es una memoria RAM 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 muy poco interesante, ¿no?
Los 3 mapeadores que hay para la SMS son:
315-5208
315-5235
315-5365
El primero puede manejar juegos de 128Kb, los otros 2 de hasta 512Kb, 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 315-5235. No se sabe si el 315-5365 lleva incorporada la lógica de control necesaria.