LO + BASICO SOBRE…
Parte 1: LA NES
CONOCIENDO A LA NES (por dentro)
A pesar de su tremendo éxito, la NES es una consola de escasa potencia, gobernada por una CPU lenta, y que dispone de muy poca memoria RAM y de video. No obstante se las apañó francamente bien para hacer muchas, y muy grandes cosas. Ha demostrado con creces que su capacidad es suficiente para hacer buenisimos juegos. Introduciré un poco los términos que se manejan en el mundo de la NES.
MAPEADORES
Los mapeadores son la clave para entender como funcionan los cartuchos de la NES. La CPU de esta consola sólo puede manejar 64Kb de memoria, contando con la memoria interna de la consola, la memoria del cartucho, es decir, el juego, y si éste tiene memoria extra, para salvar partidas o para lo que sea.
La NES dedica los 64Kb de memoria así:
| 8Kb: Los primeros 8Kb los usa para acceder a su RAM interna. |
| 8Kb: Los siguientes son para acceder a diversos registros de la maquina. |
| 8Kb: Esta zona es para diversas cosas que no vienen a cuento ;) |
| 8Kb: Dedicada a la posible memoria WRAM del cartucho. |
| 32Kb: Esta zona se reserva para el juego. |
O sea que sólo se pueden manejar juegos de 32Kb sin ayuda extra. Realmente hoy en día se puede meter poca cosa en 32Kb, y sino que se lo digan al Windows XP. Hoy, en una época en la que los juegos ocupan 4 Gigas, cuesta pensar que algo pueda ser tan pequeño. No ocupa 32Kb ni el “Bloc de notas” (sin comentarios). Pero, y en la época de la NES?
Sorprendentemente, hay juegos de NES que son suficientemente pequeños como para poder ser manejados por la CPU sin ayuda, en concreto, todos los que ocupan como mucho 32Kb. El Super Mario Bros es un ejemplo (su memoria de programa es de sólo 32Kb, aunque el cartucho dispone de otros 32Kb que almacenan los gráficos, pero esta memoria es accedida por el procesador gráfico, por lo que no cuenta). Si queremos un juego más grande, lo cual no es difícil, tenemos que inventarnos algo. Y lo que Nintendo decidió fue mapear, es decir, partir las roms de los juegos en “trozos” de 16Kb, e ir permitiendo el acceso a dos de estos “trozos”, pero los llamamos bancos , que eso de “trozos” suena muy poco técnico. La CPU sigue teniendo acceso a sólo 32Kb del juego, pero ahora puede cambiar CUALES de los 32Kb de la rom son accesibles en un momento dado. Cuando uno ya se haya usado, lo “sacamos” y “metemos” otro en su lugar.
Esta técnica de ir cambiando de bancos se denomina bankswitching. Y quien controla el tema del bankswitching? El MAPEADOR .
Ejemplo: Si tenemos una rom de 128Kb, y la partimos en trozos de 16Kb, tenemos 8 bancos de 16Kb. En un momento dado, sólo dos de esos bancos serán accesibles.
Existen distintos mapeadores, para ser más concretos, en el caso de la NES son los ciento y pico, aunque los más comunes son el MMC1 y el MMC3.
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 simplificada del procesador 6205, a 1.79 Mhz, que fue bastante famoso en su época. |
| PPU | Picture procesing unit, o en español, unidad de proceso de imagen. Este chip le da a la NES casi todo lo que tiene. Se encarga de manejar y dibujar los gráficos y los sprites, del scroll, etc. Ha sido diseñada específicamente para la NES, y es distinta en la versión NTSC que en la PAL. |
| RAM | Memoria que usa como almacenamiento temporal. Se la suele llama WRAM (supongo que Work RAM). Es accesible desde la CPU, y sólo tiene 2Kb de capacidad. Los juegos que requieren más, necesitan incorporarla dentro del cartucho. Esta memoria suele ser de 8Kb, lo que da un total de 10Kb. |
| VRAM | Memoria que se usa para almacenar los gráficos en uso, los niveles, sus atributos, los sprites,… solo es accesible a través de la PPU, al igual que la CHR-ROM, y CHR-RAM, por lo que no cuenta como espacio dentro del mapa de memoria de 64Kb de la CPU. |
| CIC | Seguro que mucha gente sabe que las consolas no pueden funcionar con juegos extranjeros que no hayan salido para la zona donde se compró. Realmente hay tres grandes zonas, Europa (PAL), Estados Unidos (NTSC) y Japón (NTSC). El CIC es el mecanismo que usó Nintendo para evitar que se pudiera jugar con juegos de otras zonas en una NES, y es un chip que va en la consola, y otro en el cartucho. Hay un CIC para versiones PAL, y un CIC para versiones NTSC. Al encender la consola, su CIC y el del cartucho se comunican. Si la consola es de una zona y el juego de otra, los CIC de consola y cartucho serán distintos, y por lo tanto, el sistema se bloquea (queda como en estado de reset indefinido). |
SOBRE LOS CARTUCHOS
Como todos sabéis, la NES se “alimenta” de cartuchos, quiero decir, que los juegos van dentro de cartuchos. Pero qué hay dentro de los cartuchos?
| PGR ROM | Es la memoria que almacena el código del programa. Como mucho 32Kb son accesibles a la vez, como ya he comentado. |
| CHR ROM ó VROM | Es la memoria que almacena los gráficos, basados en tiles de 8x8 píxeles. Es opcional . Es decir, algunos cartuchos no la tienen. Se accede a ella a través de la PPU. |
| CHR RAM | Sólo existe en los cartuchos que no hay CHR ROM. Los gráficos se meten dentro de la PGR, y para mandarlos a la NES, primero se copian a esta memoria RAM, para que haga como si fuera una CHR ROM de un solo banco. |
| WRAM | Sinónimo de SRAM. Es una memoria RAM que sirve para diversas tareas, y que es opcional . No todos los juegos la tienen. Algunos la usan como expansión de la escasa RAM de la NES, como ya dije, otros para salvar partidas, siempre y cuando el cartucho traiga 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. Así que la pila mantiene nuestras preciosas partidas a salvo n_n |
| Mapeador | Chip encargado de manejar roms de juegos cuya PGR ROM sea mayor de 32Kb, es decir, de casi todos. Hay muuuchos tipos de mapeadores en la NES (por desgracia, creo). Ejemplos conocidos son el MMC1 o el MMC3. |
| MMC | Multi Memory Controller. Así se llamaban los mapeadores hechos por Nintendo. En la GameBoy los llamaron MBC (Memory Bank Controller). |
OTROS
Mirroring : La NES no puede normalmente almacenar el nivel de un juego al completo, solo puede almacenar el equivalente en tamaño a dos pantallas de televisor. El mirroring hace referencia a cómo se colocan esas dos pantallas, si una al lado de la otra, o una sobre la otra. El primero se llama mirroring vertical, muy útil en juegos de scroll lateral, y el segundo se llama mirroring horizontal, adecuado para juegos donde el scroll es hacia arriba.