A decir verdad, el programa principal está escrito en puro ensamblador 65816 y el controlador de música en ensamblador SPC700. No encontrarás ninguna de las comodidades disponibles en equipos del siglo XXI.
Sin embargo, Nintendo, Intelligent Systems y Ricoh distribuyeron algunas herramientas para facilitar la vida de los programadores, entre ellas :
- Distintos tipos de unidades de desarrollo, capaces de ser controladas por un depurador desde una máquina anfitriona (normalmente con MS-DOS).
- Cartuchos programables (alias Flashcarts) — no para piratería, sino para que los desarrolladores pudieran probar su código en unidades comerciales.
- Ensambladores de 65816 y SPC700.
- Manuales de desarrollo que explicaban desde una perspectiva de bajo nivel cómo funciona esta consola, con directrices y normas que los desarrolladores debían cumplir para obtener la aprobación de Nintendo (requisito para la distribución).
Curiosamente, varios estudios —entre ellos Argonaut Software, Accolade y SN Systems— desarrollaron su propio equipamiento interno que ofrecía más capacidades que las herramientas oficiales (por ejemplo, editores de memoria, lectores de disquetes, devkits en forma de tarjeta ISA, etc.) .
Configuración de cartuchos
En cuanto al acceso al cartucho, las cosas se complican bastante más que con el modelo de mapeado relativamente sencillo de la NES. Es un asunto que merece atención, especialmente por lo que revela sobre sus posibilidades de expansión.
El 65C816 cuenta con un bus de direcciones de 24 bits que le permite acceder a hasta 16 MB de datos. No obstante, debido a la arquitectura de la consola, parte del espacio de direcciones queda reservada para componentes mapeados en memoria. Además, el 65C816 solo dispone de 16 líneas de dirección, que se combinan con registros internos para construir una dirección de 24 bits. Esto es análogo a alojar un mapeador interno y requerir cambio de bancos para acceder a datos adicionales más allá de los límites del bus de direcciones. Si has explorado otros sistemas de la misma generación, esta metodología te resultará familiar.

Placas de cartucho de ejemplo diseñadas con distintas configuraciones .
De arriba a abajo: LoROM (ROM dual con SRAM con batería), LoROM (ROM única con SRAM con batería) y LoROM (ROM única).
Dicho esto, a la hora de diseñar un cartucho existen múltiples formas de conectar eléctricamente los pines de dirección entre la ROM y la CPU, cada una aprovechando el cambio de bancos de un modo diferente.
Hay dos modelos fundamentales que permiten acceder a hasta 4 MB de ROM y 64 KB de SRAM , y funcionan así:
- Con el modelo LoROM, los datos de ROM se organizan en bloques de 32 KB con 128 bancos disponibles . La SRAM, aunque cabe en dos bancos, es accesible a través de 15 bancos, donde también está presente la ROM.
- Esta configuración requiere cambios de banco frecuentes durante la ejecución. A cambio, la mitad de los bancos también están mapeados a la WRAM, lo que significa que se puede acceder a ROM, SRAM y WRAM sin cambiar de banco.
- Con el modelo HiROM, el espacio de ROM se estructura en bancos completos, con datos disponibles en bloques de 64 KB en 64 bancos. Esto reduce la necesidad de cambiar de banco, pero a costa de no poder leer ROM, WRAM y SRAM dentro del mismo banco.
En ambos casos, una porción significativa del espacio de ROM se duplica en el área sobrante del espacio de direcciones de la CPU. Lo interesante es que una mitad del espacio opera a ~2,68 MHz mientras que la otra puede alcanzar 3,58 MHz — pero solo si el chip de ROM soporta la velocidad mayor y el flag FastROM de la CPU está habilitado .
Además, los cartuchos que incluyen SRAM deben alojar un chip MAD-1 (o similar) para realizar la decodificación de direcciones. Este componente es fundamental para gestionar correctamente los pines que seleccionan entre los chips de ROM y SRAM .
Más allá de la convención
Cuando los programadores necesitan más espacio, entran en juego los modelos derivados de LoROM y HiROM. Dos variantes habituales, conocidas como ExHiROM y ExLoROM, amplían el espacio de direccionamiento de la ROM reduciendo el área duplicada. Ambas pueden acceder a ~7,9 MB de ROM.

Star Fox (1993) usa el chip Super FX GSU para renderizar superficies 3D. En segundo plano, la S-PPU solo ve una capa de fondo compuesta de tiles erráticos.
Alternativamente, y lo más importante, LoROM y HiROM también pueden adaptarse para alojar chips de mejora dentro del cartucho: procesadores adicionales que amplían las capacidades de la consola. Algunos ejemplos de nuevas configuraciones:
- El modelo MMC permite el cambio de banco mediante el chip de mejora local. Lo usaron componentes como el S-DD1 o el SPC7110, ambos descompresores de tiles por hardware.
- El modelo Super Accelerator System se diseñó para el aclamado SA-1, una CPU secundaria basada en el 65C816 que opera a 10,74 MHz con funcionalidad adicional. Se basa en el modelo MMC e incorpora nueva circuitería para los componentes mapeados en memoria adicionales.
- Dos configuraciones extra —una basada en LoROM y la otra en HiROM— abren paso a la serie de chips DSP, derivados de la CPU NEC µPD77C25 pero ejecutando un programa distinto. Proporcionan cálculos de vectores y matrices , y varios juegos los han utilizado para transformaciones afines, descompresión de gráficos y cálculos de ruta más corta.
- El modelo SFX apunta al popular chip Super FX GSU. Esta configuración mapea hasta 8 MB de ROM, de los cuales 2 MB se comparten entre la CPU principal y el Super FX. El resto del espacio de direcciones incluye RAM adicional de respaldo y SRAM. Desarrollado por Argonaut, el Super FX es un procesador propietario especializado en renderización de superficies 3D y transformaciones afines 2D; los resultados se transmiten como tiles para que la S-PPU los muestre. Un puñado de juegos destacados lo utilizaron para renderizar modelos 3D o extender el Modo 7 a los sprites (el Modo 7 solo puede transformar fondos).
Es difícil ignorar el impacto que esta ingeniería tuvo en los juegos de los años 90: muchos títulos superaron con creces las expectativas de la consola sin necesitar módulos de expansión ni nada por el estilo. Podría decirse que esto complicó los planes de Nintendo para un sucesor, lo que quizás explica la cancelación de juegos avanzados como Star Fox 2.