El hardware de la NES. Capítulo I: Conceptos básicos

Imagen de Diskover
El hardware de la NES

La intención de este artículo no es más que la de demostrar las maravillas que se consiguieron hacer con una NES a lo largo de su vida útil y más tarde en el entorno de la scene homebrew que tan viva está hoy en día. No puedo ser muy técnico debido a mi falta de cualidades en entornos de programación o conocimientos, pero intentaré ser lo más preciso posible.

Partimos de una máquina limitada que a lo largo de los once años de estancia en el mercado (1983-1994), fue evolucionando tanto técnicamente como por hardware, compitiendo cara a cara contra Sega Master System, PC-Engine, SNES y Mega Drive.

Originalmente, debido al hecho de abaratar costes, la NES fue diseñada para que fuese ampliable constantemente. Algo muy inteligente para su diseñador, Masayuki Uemura. De hecho, el tiempo le dio la razón.

Así pues, la consola al desnudo, originalmente, nos presentaba una máquina escueta y limitada pero muy por encima de su competencia, lo cual era todo un logro. Estamos hablando del año 1983, y sus competidoras más cercanas en aquella época se reducian a la Atari 2600, Colecovision, Intellivision, etc... máquinas tambien de 8 bits (Intellivision es de 16 bits, ojo), pero muy escuetas o vagas en el resto de sus apartados.

Para entender esto, debemos repasar las características técnicas con las que la NES (Famicom en Japón) salió al mercado:

CPU (procesador): RP2A03, 1,79 MHz (NTSC) o RP2A03, 1,63 MHz (PAL) fabricado por Ricoh y basado en el MOS 6502.

- Dispositivo DAC.

- Controlador DMA.

RAM: 2Kb.

PPU (procesador gráfico): RP2C02, 5,37 MHz (NTSC) o RP2C07, 5,32 MHz (PAL).

- Paleta: Compuesta por 48 colores y cinco grises de base; rojo, verde, y azul se pueden oscurecer individualmente en regiones específicas de la pantalla usando código temporizado. Esta paleta dicen que fue seleccionada por el propio Shigeru Miyamoto y le supuso un verdadero dolor de cabeza. Es un tanto extraña dado que abundan los tonos azules pero sin embargo escasea el tono rojo.

- Colores en pantalla: 52 colores en una línea de escaneo (color de fondo + 4 conjuntos de 3 colores de cuadro + 4 conjuntos de 3 colores de sprite).
- Animaciones (sprites) apoyadas por hardware.
- Sprites en pantalla: 64 (sin recarga en mitad de pantalla).
- Tamaños de sprite: 8x8 u 8x16 pixeles.
- Memoria de video: PPU conectada a 32 KB de vídeo RAM. PPU contiene 2 KB de RAM interno atribuible/de cuadro; 256 bytes de RAM de posición de sprite; 28 bytes de RAM de paleta (que permite selección de color de fondo); 8 KB de ROM/RAM de patrones de cuadros en el cartucho.
- Resolución: 256x240 píxeles.

La forma de funcionar la PPU se merece un artículo más grande que próximamente se desarrollará. Pero debeís saber que podemos tener por cada fondo 4 paletas de colores con 1+3 colores distintos. Y en los sprites tambien: 4 paletas de colores con 1+3 colores distintos.
Esto significa que aunque tengamos nuestras cuatro paletas con cuatro colores, al menos un color debe de ser compartido entre todas ellas. En el caso de los background es el color que se usa como fondo plano, y en el caso de los sprites, es el color que se usa como transparente.

SONIDO: Generadores de tonos (dos cuadrados, un triángulo, un ruido, y generador PCM). Se llegaron ha hacer auténticas maravillas con estos canales. Para muestra, la OST del videojuego Super Spy Hunter (Battle Formula en Japón) de Sunsoft, compañía que dominó ampliamente este chip de sonido sin ningún apoyo externo de hardware.

Los dos generadores de tonos cuadrados y el triangular se encargaban de generar la sintonía del juego; tonos agudos y graves. Mientras que el canal de ruido se encargaba de hacer las percusiones. Además, gracias al PCM se podian reproducir samples que normalmente se usaban para introducir sonidos nuevos o incluso voces, aunque debido al tamaño tan grande que estos tenían, se limitaban muchas veces a sonidos simples de medio segundo.

Todos estos canales se usaban indistintamente para música como para sonido, por lo que muchas veces era un problema reproducir una banda sonora completa ya que en intervalos de tiempo, un cenal podía ser interrumpido por un sonido, cortandose la sintonía. Males menores con las que tuvimos que sobrevivir.

A partir de estos componentes básicos se desarrollarón casí un millar de videojuegos diferentes, y demostraron la evolución de una época y una máquina a la par.

Una vez sabido esto hay que comentar que cuando se desarrolla un juego básico en NES, los cartuchos constan de un chip llamado PRG de 16Kb o de hasta 32Kb, que es donde se introduce todo el código lógico de los juegos; el programa en si. Y otro chip llamado CHR de hasta 8Kb que es donde se almacenan los gráficos, divididos en dos bancos de memoria de 256 azulejos (tiles) cada uno, lo que nos da 512 azulejos distintos divididos en dos bancos de memoria: uno para usar en los backgrounds (fondos), y otro para usar en sprites.

Comúnmente a este tipo de juegos se les conoce como NROM por no tener ningún tipo de mapeador de memoria ampliable (mapper), chips que aparecieron más tarde.

Estas capacidades básicas son las que la NES puede paginar por si misma de golpe por el bus de datos, que son 32Kb de PRG ROM/RAM y 8Kb de CHR ROM/RAM.

Con esta base hubo una primera tirada de juegos muy básicos entre 1983 y 1985, donde podíamos encontrarnos con juegos tan simples como Donkey Kong o más complejos como Super Mario Bros. A estos se les cataloga dentro de la “Primera Epoca de la Famicom/NES”.

Es a partir de 1985 cuando la cosa empieza a cambiar y empiezan a aparecer los primeros mappers, que permitían paginar mucha más memoria, tanto en PRG como en CHR con lo cual se conseguían hacer juegos más grandes hasta llegar a los 712Kb en juegos oficiales (en piratas y no oficiales se llegó a más).

En general, una buena parte de los juegos de la NES usaron el mapper de Nintendo MMC1 o más tarde el MMC3. En otro artículo hablaré de ellos.

Con los nuevos mappers se incluían más bancos de memoria PRG o CHR, y un selector de banco tipo 74XX para poder seleccionar en todo momento el banco que se desease leer. Dado que la NES solo puede leer de golpe 32Kb de ROM y 8Kb para los gráficos, lo que se hacia era constantemente cambiar de bancos para leer datos y poder mostrar mas funciones o gráficos distintos. Con el paso de los años esto se fue perfeccionando, las compañías sacaron partido a los mappers y algunas crearon los suyos propios, mientras otras exprimieron las que proporcionaba la propia Nintendo donde pudimos llegar a ver genialidades como Kirby´s Adventures.

En el próximo artículo nos adentraremos de lleno en los cartuchos de NES.

Etiquetas: