Nintendo 64: Especificaciones Técnicas y Funcionamiento Interno

La Nintendo 64 (N64) fue una consola revolucionaria que marcó una época en la industria de los videojuegos. Para comprender su impacto, es crucial conocer a fondo sus especificaciones técnicas, su funcionamiento interno y las estrategias de programación que permitieron a los desarrolladores exprimir al máximo su potencial.

Hardware de la N64

El centro de operaciones de la consola es el RCP (Reality Co-Processor), crucial para el procesamiento gráfico y de audio. A diferencia de otras consolas de la época, la CPU no tiene DMA (Acceso Directo a Memoria), lo que implica una gestión particular de los datos.

Funcionamiento de la Consola

Para entender cómo la N64 lleva la información del cartucho a la pantalla, es esencial conocer los pasos que realiza para generar cada frame de video y procesar el audio. Nintendo proporcionó información valiosa sobre cómo optimizar el uso de la consola, destacando que la memoria tiene una latencia alta (~640 ns) y un ancho de banda cercano a 562.5 MB/s. Además, la consola cuenta con una caché de texturas de solo 4KB, que debe renovarse continuamente con nuevas texturas. La recomendación era pintar todas las texturas posibles antes de cargar la siguiente y aprovechar la CPU mientras el RDP (Reality Display Processor) está ocupado.

En muchos casos, los juegos mantenían el uso del RCP al 99%, pero la CPU estaba siendo desaprovechada. El rendimiento de la máquina no solo dependía de los micro códigos, sino también de la estructura del programa. Además, el uso excesivo del Z-buffer limitaba aún más el fillrate.

La historia de NINTENDO 64 (Video Ensayo - Documental)

Un programador de Boss Studios da más detalles de la consola. Usar Z-buffer limitaba el fillrate de la consola, por eso juegos como World Driver Championship (uno de los juegos que más polígonos mueve de la consola lo lleva desactivado con una gestión manual), el equipo tomó el riesgo de desactivarlo sin tener la certeza de que Nintendo lo aprobara, además detalla otro tipo de información igual de interesante.

Los juegos de Boss Studios usaban un tracker para las melodias, también explica como efectivamente Top Gear Rally usaba la CPU para procesar el sonido, pero en World Driver lo movieron de nuevo al RCP al ver que no era el verdadero cuello de botella que estaban teniendo.

Detalles de como surgio el primer Top Gear Rally de N64 (los siguientes no los programo Boss Studios) y también habla de sus físicas una de las cosas que más gustó del juego.

Memoria Unificada

A diferencia de otras consolas de la generación, la N64 no tenía memoria dedicada para gráficos o sonidos. En su lugar, utilizaba un bloque de memoria unificada donde se almacenaba toda la información. La consola venía con 4MB u 8MB con expansión. ¿Cómo se gestionaba esta memoria?

  • Frame Buffer: El tamaño y color eran variables. Un juego a 320x240 y 16 bits de color ocupaba 300KB (double buffer). La N64 podía cambiar la resolución al vuelo, y al usar el Expansion Pak, movía el framebuffer a los bancos de memoria 2 o 3, que correspondían a los 4MB extra de la expansión.
  • Sonido: Solía consumir entre 512KB y 1MB, aunque podía ser variable según las necesidades del programa. La N64 requería memoria adicional para trabajar con samples y generar melodías.
  • Texturas: Normalmente ocupaban 4KB (o 2KB con mip mapping activado). Tener 128 texturas de 64x64 ocupaba 512KB.
  • Buffers Adicionales: Podían existir para efectos o sombras, variando en tamaño y profundidad de color. También había buffers internos como el Vertex y el Z-buffer.
  • Programa y SO: El resto de la memoria RAM se dedicaba al programa, listado de visualización/audio y una parte reservada al SO de la N64.
  • Micro Código: Se cargaba en 4KB adicionales en el RCP.

Tanto texturas, como sonidos, como partes del programa podían cargarse en streaming desde del cartucho, algo que hizo Factor 5 en Indiana Jones.

Desventajas de la Memoria Unificada

Al ser memoria unificada cuando aparece un problema es más difícil de trazar de donde proviene, cualquier desliz o pise de memoria en el programa podría corromper datos sensibles de audio o vídeo y provocar un cuelgue aleatorio después, muchos fallos no se manifiestan en el momento del error sino cuando surge la excepción. (en DK64 fue imposible descubrir de donde venía uno de los fallos).

Sonido

La consola podía reproducir entre 1 a 100 canales en 48kHz/16bit/estéreo. Al no disponer de un chip de sonido dedicado, la reproducción de sonidos iba a cargo del combo CPU-RCP, lo que permitía flexibilidad según las necesidades del momento.

Neil Voss, compositor de Tetrisphere, arrojó más luz sobre el asunto en una entrevista en IGN: generalmente usaban 16 canales de sonido, coincidiendo con las especificaciones comunes.

  • La música requiere RAM adicional. PSX tenía 512KB de sonido dedicado, pero la N64 podía acceder fácilmente al cartucho para actualizar los samples (música dinámica como la de Banjo Kazooie).
  • El micro código de audio también era programable.

El cartucho, ese enemigo del sonido, aunque la consola fuera muy capaz de generar sonido en alta calidad en los juegos se veían forzados a reducir la calidad del sonido a incluso cosas como usar samples para voces a 16khz o 8bit, o incluso compresiones más salvajes como 8khz.

En una entrevista a Graeme Norgate (Goldeneye 007) da detalles sobre cuanto espacio tuvieron en el cartucho para música y sonidos FX (es un cartucho de 12MB)In the end, I had 700k for music data and instrument samples, and about the same for sound effects… basically, all the data could have fit onto a 3.5inch floppy disk….so it was a, let’s say, a creative challenge cramming everything in.

Ejemplos de Optimización y Problemas

Algunos ejemplos ilustran cómo los desarrolladores optimizaban los juegos y los problemas que enfrentaban:

  1. Top Gear Rally: Boss Studios usaba la CPU para procesar el audio, lo que permitía un juego fluido.
  2. Mortal Kombat 4: El equipo dedicó 8 meses a la versión de N64, logrando 60fps estables.
  3. Donkey Kong 64: Tuvieron que usar la expansión y incluirla con el cartucho debido a un bug que causaba cuelgues aleatorios.

Estos ejemplos muestran la complejidad de la programación en N64 y cómo la optimización era clave para obtener el máximo rendimiento de la consola.

Tabla de Especificaciones Técnicas Clave

Componente Especificación
CPU MIPS R4300i a 93.75 MHz
Memoria RAM 4 MB (ampliable a 8 MB con Expansion Pak)
Ancho de banda de la memoria 562.5 MB/s
Latencia de la memoria ~640 ns
Resolución 240p a 480i
Paleta de colores 16.7 millones
Audio Hasta 100 canales a 48kHz/16bit/estéreo (dependiendo del uso de la CPU)

tags: #motocicleta #msk #hawk