La Nintendo Entertainment System o NES, también conocida como la Nintendo 8 bits o la Famicom en Japón, fue la consola más popular de la tercera generación. Famosa por ser el punto de partida de sagas emblemáticas, no solo las de Nintendo como Super Mario, Metroid o Zelda, sino también de muchas otras como MegaMan, Castlevania, Final Fantasy, etcétera. En este artículo hablaremos de su hardware, el cual, si tenemos en cuenta lo modesta que fue la consola, acabamos concluyendo que se trata de una máquina impresionante.
El hardware de la NES (Famicom) por dentro
Una de las cosas que más sorprenden de la Famicom/NES es el hecho que Nintendo decidiese crear sus propios chips o al menos personalizar una serie de tecnologías ya existentes para lanzar un sistema que si bien se podría considerar una deconstrucción de otras ideas ya existentes, da como resultado algo totalmente nuevo y que le da su propia personalidad.
Lo primero a destacar es la CPU, la cual es fabricada por Ricoh y recibe el nombre de 2A03. En principio es un MOS 6502 al uso que funciona a 1.79 MHz, pero con algunos cambios. Por ejemplo, las instrucciones que permiten operar con números decimales han sido totalmente eliminadas, pero dado que hablamos de una tecnología de 1976 en una máquina de 1982, esto permite un nivel de integración más alto.
Por lo que Nintendo decidió implementar un generador de sonidos programable dentro de la propia CPU, pero esta vez distinto al resto, ya que reemplazaba uno de los canales de onda cuadrada por una de onda triangular, lo que le da un sonido característico a los juegos de esta consola que los diferencian de otros sistemas de la época. En todo caso, hemos de decir que no somos expertos en chiptunes, y su capacidad no es mejor que la del SID del Commodore 64.
Memoria RAM y cartuchos
En cuanto a memoria, tenemos solo 2 KB de memoria SRAM, además, al ser una consola principalmente de cartuchos, asigna la mitad del direccionamiento a estos, los cuales sin el uso de chips especiales integrados en el cartucho que permitan múltiples bancos de memoria no pueden ser superiores a 32 KB en cuanto a capacidad.
Sin embargo, Nintendo encontró una forma de ampliar la capacidad inicial, que no es otra que usar dos memorias ROM, una para gráficos y otra para datos. Llamadas PGR-ROM y CHR-ROM, aunque hay casos donde se requiere una gran cantidad de memoria RAM en ambos casos, donde terminan recibiendo el nombre de PGR-RAM y CHR-RAM.
Los chips MMC
Dado que el procesador 2A03/6502 solo podía direccionar hasta 64 KB de memoria (16 bits), de los cuales destinaba 32 KB al cartucho, los chips MMC (Memory Management Controllers) permitieron que la consola pudiera ejecutar juegos mucho más grandes, de hasta 1 MB (8 megabits). Estos chips también mejoraban el acceso a la PPU, facilitando el uso de diferentes bancos de patrones y sprites, lo que permitía a la consola manejar una variedad de gráficos y patrones al permitir más memoria que los límites de direccionamiento que venían de serie.
Chip | PGR-ROM/PRG-RAM | CHR-ROM/CHR-RAM | Características | Videojuegos |
---|---|---|---|---|
MMC1 | Hasta 512 KB/ 32 KB | 256 KB/8 KB | Permite alternar entre scroll vertical y horizontal. | Metroid, The legend of Zelda, Megaman 2 |
MMC2 | Hasta 256 KB/ – | 128 KB/- | Permite usar dos bancos CHR-ROM simultáneos | Punch-Out |
MMC3 | Hasta 512 KB/ 256 KB | 256 KB/8 KB | Añade un contador de lineas horizontales. Permite scroll parallax | Super Mario Bros 3 |
MMC4 | Hasta 256 KB/- | 128 KB/- | MMC2 mejorado (inedito en NES) | Fire Emblem, Fire Emblem Gaiden y Famicom Wars |
MMC5 | 1 MB/1 MB | 1 MB/16 KB | MMC3 mejorado que añade 2 canales de audio de onda cuadrada adiconales | Castlevania III: Dracula’s Curse |
Hemos de aclarar que tanto la CPU como la PPU no tenían acceso a esa cantidad de memoria, sino que esta se encontraba en múltiples bancos de capacidad más limitada. Simplemente, por motivos de espacio, hemos tenido que separar la tabla en dos diferentes, por lo que a continuación os dejamos la capacidad máxima por banco de cada uno de los chips MMC de la Famicom/NES.
Chip | PGR-ROM | PGR-RAM | CHR-ROM | CHR-RAM |
---|---|---|---|---|
MMC1 | 32 KB | 8 KB | 8 KB /4+4 KB (serial) | 8 KB /4+4 KB (serial) |
MMC2 | 8+24 KB | No usa | 8 KB /4 +4 KB (paralelo) | No usa |
MMC3 | 8 KB + 8 KB + 16 KB. | 8 KB | 2 KB x +1 KB x 4 (serial) | 2 KB x 2/ 1 KB x 4 (paralelo) |
MMC4 | 16 KB + 16 KB | No usa | 8 KB /4 +4 KB (paralelo) | No usa |
MMC5 | 8 KB, 16 KB o 32 KB | 8 KB o 16 KB | 1 KB, 2 KB, 4 K u 8 KB | 1 KB, 2 KB, 4 K u 8 KB |
No obstante, los chips MMC fueron una solución tardía en comparación con el lanzamiento de la consola. Nintendo no tenía planificado lanzarlos, pero el enorme éxito de Super Mario Bros en Japón y la falta de un hardware más potente por parte de la empresa de Kyoto hizo que Nintendo apostará por dicha solución de cara a permitir juegos más complejos, la cual, termino ganándole el pulso en el tiempo otro concepto inventado por Nintendo para superar los límites de almacenamiento, el Famicom Disk.
El Famicom Disk
Sin embargo, los chips MMC no se lanzaron junto con la consola, sino años mucho más tarde; en su lugar, la Famicom se diseñó en 1983 para cargar juegos con un límite de 32 KB de PRG-ROM/PRG-RAM y unos 8 KB de CHR-ROM/CHR-RAM en los cartuchos. Esta restricción llevó a Nintendo a considerar una expansión para aumentar la capacidad de almacenamiento, dando origen al Famicom Disk System, una unidad de discos magnéticos que permitía almacenar hasta 112 KB por disco.
Debido a que los discos flexibles no tienen la misma velocidad que la memoria física, este se vendía con un cartucho con 32 KB de PGR-RAM y 8 KB de CHR-RAM, mientras que el periférico se conectaba a la parte inferior de la Famicom. Sin embargo, el periférico se quedó en Japón y la sensibilidad de los disquetes a borrar fácilmente su contenido hizo que el dispositivo no fuese muy popular. Es más, cuando los MMC pasaron a permitir juegos más complejos en cartucho, el Famicom Disk quedó totalmente desfasado. Es más, nunca se planteó el lanzamiento de un NES Disk fuera de Japón.
El otro motivo fue el hardware adicional añadido en algunos MMC para NES y Famicom que era imposible de reproducir en el Famicom Disk como es contador de líneas de escaneo con una señal de petición de interrupción en el MMC3 y el MMC5, por ejemplo.
¿Llego a existir el Famicom Disk para NES?
Pues no, y la respuesta es un «fallo» de diseño de la propia NES y es que se necesitaría que hubiese un cable que pasará desde el cartucho hacia el puerto de expansión de la parte inferior de la consola donde se encontraría la unidad de disquetes. Sin embargo, no tenemos imágenes de ningún tipo del NES Disk, lo que nos hace pensar que ni tan siquiera llegó a plantearse como proyecto.
Lo que sí que existe es una versión adaptada a NES hecha por unos aficionados que permite usar el Famicom Disk japonés, pero no tenemos constancia de la unidad de disquetes para la consola de 8 bits de Nintendo para el mercado occidental.
El puerto inferior de la NES
Sí, el Famicom Disk no se planeó jamás para occidente, ¿entonces para qué sirve el puerto que se encuentra en la parte inferior de la consola? Para empezar, esto no es más que un reducto de la Famicom, donde los mandos están cableados a la consola y los periféricos extra utilizan dicho puerto. En la NES, en cambio, se prefirió usar los dos puertos para mandos para conectar los periféricos, por lo que el puerto de expansión quedó como algo atávico.
La utilidad del puerto es para aquellas funciones que entraban en conflicto con los puertos para mandos. Es por ello que cosas como el NES Four Score que permitían conectar cuatro mandos usaban la conexión para mandos en su versión occidental, mientras que en la japonesa se conectaban en el puerto de expansión frontal, el cual no se encontraba en la parte inferior, sino en el frente.
El único proyecto que se conoce era el de un sistema de loterías telemático en Minnesota, mucho antes que el de internet. Consistía en un cartucho licenciado que mostraba los números premiados cada cierto tiempo en pantalla y el modem conectado al puerto inferior.
Se diseñó para usarse en bares y de cara al uso de lotería exprés, pero no vio jamás la luz. No fue la única idea para lanzar un modem para la NES y permitir el juego online, ya que otro producto jamás lanzado fue el Telegames que también iba a basarse en un módem en la parte inferior usando el puerto de expansión que se encuentra en la parte inferior de la consola.
a
s
Picture Processor Unit
El equipo de Uemura no se conformó con tomar el TMS9918A tal cual y colocarlo en la consola, sino que hicieron un chip gráfico bajo la misma filosofía y con un funcionamiento similar, pero con unos cambios lo suficientemente profundos como para ser considerado otro chip. No obstante, decidieron tomar ideas ya aplicadas en otros sistemas para la creación de la PPU de NES/Famicom.
Con tal de evitar problemas legales con Texas Instruments, pero especialmente con Yamaha, quien tenía la licencia del TMS9918A en Japón, por lo que hicieron cambios en buena parte del chip. Una de ellas fue eliminar el mecanismo de refresco de la DRAM, dado que al final usaron 2 KB de memoria SRAM, que se usaba para almacenar el mapa de caracteres. El resto de la información se encontraba en la CHR-ROM del cartucho, a la cual la PPU de la Famicom/NES accedía de forma directa.
No obstante, los cambios no se limitan a cómo accede a la RAM, sino que estos van mucho más allá y dan como resultado un salto generacional que sitúan a la consola de Nintendo en la tercera generación de consolas y que a continuación vamos a explicaros uno por uno, siendo el primero de ellos que la resolución sea de 256 x 224 píxeles en vez de los 256 x 192 píxeles de los sistemas basados en el TMS9918A.
Gestión de memoria en la PPU
El chip gráfico de la consola, que tiene un direccionamiento de 14 bits (16 KB) pero que en la consola solo dispone de 2 KB que sirven para almacenar los Tile Maps, llamados Name Tables en la jerga utilizada por Nintendo en la consola.
Debido a ello, solo podemos tener 8 KB de memoria para almacenar patrones de los diferentes caracteres.
- En el direccionamiento de memoria de la PPU, podemos tener dos tablas de patrones o sprites ubicadas entre las direcciones $0000-$0FFF y $1000-$1FFF, alojadas en la CHR-ROM o CHR-RAM.
- Cada tabla ocupa 4096 bytes, sumando un total de 8 KB de CHR-ROM/CHR-RAM disponible por escena.
- Esto permite almacenar hasta 256 patrones o sprites por banco, cada uno de 16 bytes (8×8 píxeles y 2 bytes por píxel).
- Aunque se pueden utilizar patrones de 8×16 píxeles, estos son menos comunes y están limitados a solo 2 colores.
Patrones y color en la NES/Famicom
Al igual que otras consolas de la época, la forma de componer la pantalla era a través de un mapa de caracteres para dibujar los fondos, los cuales son totalmente fijos, y luego los llamados sprites, los cuales son aquellos que tienen animación y movimiento dinámico en pantalla. No obstante, respecto al TMS9918A nos encontramos con que la primera mejora es el soporte de sprites multicolor, lo que permite 4 colores por sprite (3 de base + transparente).
A diferencia de la Colecovision, que emplea una única paleta para todo, la Famicom/NES utiliza dos paletas distintas: una para el fondo y otra para los sprites. Aunque la Famicom/NES cuenta con una paleta de «64 colores», debido a la forma en que se generan, solo alrededor de 52 son realmente útiles.
Otra diferencia respecto al VDP de Texas Instruments es el hecho de que maneja dos paletas diferentes en pantalla, una para fondos que se encuentra en la direcciones de memoria $3F00-3F0F y la otra que se encuentra en las direcciones de memoria $3F10-3F1F, dentro de la memoria interna de la PPU. Cada paleta es de 16 colores, pero se divide en 4 subpaletas de 4 colores cada una, donde el valor 00 de cada una marca el color transparente.
Object Attribute Memory
La OAM son unos 256 bytes de memoria interna donde se almacenan las tablas de atributos correspondientes a los 64 sprites que se verán moviéndose en pantalla. El hecho de tener esta memoria dentro de la PPU de la NES/Famicom reduce la cantidad de ciclos para acceder a ella, lo que le da suficiente velocidad al chip gráfico de la consolas 8 bits de Nintendo para manejar 8 sprites por línea de escaneo. No solo eso, sino que esta tiene un pequeño mecanismo DMA automatizado que accede a la RAM de la CPU para copiar en pocos ciclos las tablas de atributos en cada frame, en menos ciclos de lo que tardaría en copiarlo el 2A03/6502 de la consola.
No obstante, no almacenan la información de los atributos de los sprites de la misma forma que en el TMS9918A, dado que hay una serie de cambios:
- Byte 0: posición vertical en la pantalla
- Byte 1: localización en la CHR-ROM/CHR-RAM del patrón/sprite.
- Byte 2 (bit 0): voltea el sprite original verticalmente si está activo. Lo que significa que el contador vertical cuenta al revés y envia las lineas del patrón no de arriba a abajo, sino de abajo a arriba.
- Byte 2 (bit 1): voltea el sprite original horizontalmente si está activo. En este caso, reordena los bits de la línea horizontal del sprite a la inversa.
- Byte 2 (bit 2): bit de prioridad, se utiliza para hacer efectos en los que se busca que el sprite se dibuje por debajo del fondo.
- Byte 2 (bit 4-7): Selección de la paleta a utilizar.
- Byte 3: Posición horizontal en la pantalla del patrón/sprite en la pantalla.
Name Tables
Las Name Tables no son más que los mapas de caracteres o tilemaps que se usan para generar los fondos. Técnicamente, la Famicom/NES puede generar almacenar el fondo de hasta 4 pantallas, cada una de ellas toman unos 1024 bytes de memoria (en realidad 960 bytes). Sin embargo, habréis observado que solo tenemos 2 KB de SRAM en la PPU, por lo que es necesario añadir esa memoria adicional en el cartucho para tener acceso a dicha capacidad.
En el direccionamiento de memoria de la PPU, podemos tener dos tablas de patrones o sprites ubicadas entre las direcciones $0000-$0FFF y $1000-$1FFF, alojadas en la CHR-ROM o CHR-RAM. Cada tabla ocupa 4096 bytes, sumando un total de 8 KB de CHR-ROM/CHR-RAM disponible por escena. Esto permite almacenar hasta 256 patrones o sprites por banco, cada uno de 16 bytes (8×8 píxeles y 2 bytes por píxel). Aunque se pueden utilizar patrones de 8×16 píxeles, estos son menos comunes y están limitados a solo 2 colores.
El hecho de tener en memoria dos pantallas permite tanto el scroll horizontal como el vertical a través de hardware sin la intervención de la CPU para ello, además con precisión píxel, una característica inexistente en el TMS9918A que Nintendo copió de manera literal del sistema de la Atari 800, y que funciona de la misma manera en la NES de Nintendo.
Famicom versus NES
Pese a basarse en el mismo hardware, ambas no son exactamente el mismo sistema y no, no nos referimos solo a la estética. Y es que Nintendo, para evitar el uso de réplicas ilegales, añadió 12 pines más a cada cartucho en NES que no estaban en Famicom para colocar un chip de control DRM, el llamado 10 NES que evitaba que otros, excepto Nintendo, fabricasen cartuchos para la consola.
En realidad, el sistema estaba compuesto por dos chips, uno en el cartucho y otro en la consola. Dicha solución no se encuentra en Famicom, lo que lleva a que sea imposible cargar juegos de Famicom en NES y viceversa. No obstante, esa no es la única diferencia entre ambos sistemas en cuanto a hardware.
La segunda diferencia es que el Famicom Disk no salió en occidente, sino que los títulos salían en cartucho, usando un sistema de passwords o una batería para guardar partidas. Sin embargo, perdían la capacidad de usar el chip de audio mejorado del periférico, de ahí que los juegos en versión Famicom Disk tengan mejor audio, ya que la versión de NES solo usan los canales de audio del 2A03. No fue el único caso, algunos juegos usaban chips especiales hechos por sus desarrolladores. La negativa de Nintendo a pagarles por distribuir los juegos hizo que muchos no saliesen del país del sol naciente.