Esta es una versión actualizada de la entrada de la antigua serie «Gráficos en Consolas Antiguas» sobre esta consola pero reconstruida, recordad que estas entradas las hago construyendo haciendo referencias cruzadas entre los diferentes sistemas dado que existe tecnologia en común entre ellos que no necesita volver a ser explicada.

#1 Historia Temprana

El desarrollo de una consola de videojuegos por parte de Nintendo empieza en Junio de 1982, cuando Hiroshi Yamauchi se da cuenta que el mercado Japonés esta siendo ignorado por todos y cada uno de los fabricantes de consolas americanos y tienen la oportunidad de ocupar dicho mercado sin competencia alguna. La tarea le fue encargada a Masayuki Uemura quien empezó el proyecto que inicialmente se llamaba Gamecom pero por influencia de su mujer paso a ser Famicom, que es el acortamiento de Family Computer.

Nintendo lanzo Famicom el 15 de Julio de 1983 en Japon, a un precio de 15.000 yenes en Japón. La primera remesa de consola salieron defectuosas y Nintendo se gasto el dinero en masa para realizar una devolución. En esos momentos Nintendo no tenía planeada una versión para fuera de Japón, pero las malas relaciones entre Nintendo y Coleco llevaron a Yamauchi a tomar la decisión de planear el lanzamiento de la Famicom en los EEUU en 1983, la cual inicialmente iba a ser lanzada por Atari pero la gente de GCC convenció  a la por aquel entonces directiva de Atari para que apostaran por la 3600 que más tarde se convirtió en la 7800.

Fue en 1985 en un mercado limitado pero realmente en 1986 cuando Nintendo realizo el desembarco de la Nintendo Entertainment System. En un mercado donde la idea general era que las consolas eran algo del pasado e innecesarias se lanzo la NES sin ningún tipo de competencia real en esos momentos y con un hardware muy superior a lo que podían ofrecer otras consolas de la época incluyendo la Colecovision. Pero antes de eso Nintendo influenciada por el negativismo anti-consolas se planteo el lanzamiento de la Famicom como un ordenador al que llamaron Advanced Video System o AVS.

avs_1g

El AVS utilizaba el mismo hardware que la Famicom pero incluía de serie una serie de periféricos que en el caso de Japón se vendieron por separado con el objetivo que la gente pudiese convertir su consola en un ordenador. Estos eran el Famicom BASIC que era un cartucho con un Interprete BASIC y un teclado y el Famicom Data Recorder que era una unidad de casette complementaría al Famicom Basic. Nintendo al final cancelo la idea y decidió lanzar lo que todos acabamos conociendo como la NES.

Las entrañas de la Famicom/NES

famicom-circuit-ppu.jpg

La idea de Uemura era lanzar una consola que reprodujese el arcade Donkey Kong en versión doméstica con la mayor fidelidad posible. En Junio de 1982 la consola que más se había acercado era la Colecovision pero a Nintendo no les gusto del todo la conversión que hizo la gente de Coleco ya que no era del todo fiel al original (los niveles tenían una composición distinta) y la representación del color no era la adecuada. Por lo que Uemura empezó el diseño de la Famicom haciendo ingeniería inversa sobre el TM9928A de la Colecovision con tal de cambiar la paleta de colores de la consola para que reprodujese los colores de la recreativa de Donkey Kong aunque en el proceso llego a realizar cambios mucho más profundos hasta tener un generador de patrones/sprites con el mismo funcionamiento pero lo suficientemente distinto como para ser considerado un chip por si mismo, al que llamaron PPU que son las siglas de Picture Processing Unit o Unidad de Procesamiento de Imagen.

Famicom empezo su andadura como un sistema con una CPU de 16 bits, seguramente con el 68K pero por motivos de cose acabaron optando por la misma CPU que se había utilizado en la recreativa de Donkey Kong que además era la misma CPU que la Colecovision, la Z80. Pero Ricoh que fue el fabricante de chips escogido por Nintendo en aquel momento convenció a Uemura para que probasen con el 6502. La argumentacion detrás de ello es que el 6502 ocupaba 1/4 del tamaño del Z80 por lo que el chip resultaría más barato, ni Ricoh ni Nintendo querían pagar regalías a MOS (en aquel momento propiedad de Commodore) y realizaron un cambio en el diseño original al eliminar el modo BCD y añadirle el hardware de sonido dentro del chip ahorrando en la cantidad de chips en placa. La velocidad de reloj escogida fue de 1.79 Mhz e inicialmente que por barreras idiomáticas desconocia por completo como funcionaba el TMS9928A era reacía a cambiar de CPU pero lo acabo haciendo tras comprobar que la arquitectura del TMS9928A que estaban tomando como referencia para la creación de la PPU funcionaba con cualquier tipo de CPU.

Las ordenes de Yamauchi eran muy claras, hacer la consola lo más barata posible y dar el sablazo economico con los juegos. Esto provoco un cambio curioso en la estructura de la memoria de la Famicom, cuyo mapa de memoria es el siguiente:

Dirección Asignado a: Tamaño:
$0000-$07FF RAM 2048
$0800-$0FFF RAM (Espejo de $0000-$07FF) 2048
$1000-$17FF RAM (Espejo de $0000-$07FF) 2048
$1800-$1FFF RAM (Espejo de $0000-$07FF) 2048
$2000-$2007 Registros PPU 8
$2008-$3FFF Registros PPU (Espejo de $2000-$2007, repetido cada 8 bytes) 512
$4000-$4017 Registros de Audio y de E/S 8
$4018-$401F Solo para el test de fábrica. 8
$4020-$FFFF Espacio del cartucho (PGR-ROM/PRG-RAM y chips MMC) Variable

Unos 2KB de memoria RAM en una consola de 1983 era una cifra normal, pero el cambio real se produjo en como Nintendo organizo los cartuchos de la Famicom, dividiendo la memoria de estos en dos bloques distintos llamados PRG-xxx para la CPU y CHR-xxx para la GPU donde xxx es ROM o RAM. El motivo es que con ello Nintendo se ahorraba el tener que colocar los 16KB de memoria a su clon del TMS9928A aunque lo dejaba con 2KB para almacenar las Name Tables como memoria local de la PPU, esto significo cambios en la interfaz de memoria de la PPU, la cual en la Famicom/NES tenía acceso al cartucho para acceder a la CHR-ROM o la CHR-RAM. Dado que es memoria local para la PPU a la que la CPU no tiene acceso no cuenta para el limite de direccionamiento de memoria del 6502. la Famicom/NES soportaba solo 8KB de memoria de video adicional a través del cartucho, por lo que contando también la memoria en el sistema para la PPU como mucho podía disponer de poco más de 10KB de memoria para gráficos. En cuanto a los PGR-xxx podian ser memoria RAM o ROM donde se almacena el programa principal sin los gráficos.

En otras consolas contemporaneas los datos gráficos y de programa se almacenaban juntos ocupando los 32KB de memoria asignados a los cartuchos. Pero la principal novedad de la Famicom/NES en consolas fue el uso de los chips MMC (Memory Mapper Controller) que aumentaban la cantidad de memoria disponible más allá de los limites. Dado que el 6502 solo podía direccionar 16 bits de memoria (64KB), de los cuales asignaba 32KB al cartucho, pues bien, gracias a los chips MMC era posible cargar en la consola juegos con un tamaño mucho más grande (hasta 1MB (8 Megabits), los chips MMC tambien podian aplicarse de cara al acceso a la PPU dandole acceso a diferentes bancos de patrones/sprites y otorgandole la capacidad a la consola de tener una variación en cuanto a los patrones/sprites que no tenía ninguna consola de 1983.

Pero los chips MMC no fueron lanzados junto a la consola sino que se lanzaron posteriormente, la Famicom se diseño en 1983 con la idea de cargar juegos con 32KB de PGR-ROM/PRG-RAM y unos 8KB de CHR-ROM/CHR-RAM en los cartuchos, limitación que hizo que Nintendo se planteara una expansión para aumentar la capacidad llamada Famicom Disk, una unidad de discos magnéticos con una capacidad de 112KB por disco en total.

famicom-disk-system

El Famicom Disk se encontro con un problema, el electromagnetismo eliminaba muy rapidamente los datos de los juegos y Nintendo se vio forzada a buscar una solución que llego en forma de los MMC que le dieron la capacidad a la Famicom/NES de cambiar de banco de memoria en cada momento cuando era necesario. Pero sobretodo hizo posible en la consola de 8 bits de Nintendo juegos que hubiesen sido imposibles por su complejidad y diversidad gráfica en la Colecovision y la Atari 5200, es por ello que la consola es definida como la primera consola de tercera generación, no solo por sus capacidades visuales

#3 Pixel Processing Unit

Lo que para Uemura fue un cambio en el TMS9928A de la Colecovision para corregir el color acabo con cambios muy profundos hasta generar un generador de patrones/sprites mucho más avanzado en lo que a la capacidad visual se refiere. Recordad que el TMS9928A de la Colecovision lo trate en su día la entrada de dicha consola y en la entrada de la Colecovision, por lo que os recomiendo una visita a una de esas dos entradas.

El funcionamiento en general es igual pero hay una serie de cambios importantes:

  • Cada patrón/sprite/caracter de 8×8 puede combinar hasta 4 colores por escaneo  linea de escaneo (en realidad son 4 colores por patrón/sprite/caracter) en comparación de los 2 colores del TMS9928A estandar de la Colecovision. Esto significa que estos están almacenados en la CHR-ROM en formato donde cada 2 bits y no 1 bit representan un pixel.
  • Soporta hasta 8 patrones/sprites/caracteres distintos por linea de escaneo, mientras que el TMS9928A estandar soporta solo unos 4.
  • Hasta 64 patrones/sprites/caracteres distintos por pantalla, en contra de los 32 del TMS9928A. Las tablas se almacenan en una memoria interna de 256 bytes.
  • Se han añadido registros adicionales para el soporte de scroll por hardware, la Colecovision y el MSX carecen de ello y tienen que calcular el scroll por software. La Famicom/NES tiene dos registros especiales para ello, uno para scroll horizontal y otro para scroll vertical. Cuyo desplazamiento se puede definir entre 1 pixel y 8 pixeles.
  • La Famicom/NES al contrario que la Colecovision funciona con dos paletas distintas, una para el fondo y otra para los patrones/sprites. El TMS9928A utiliza una sola paleta para todo.
  • La Famicom/NES tiene una paleta de «64 colores» pero por la forma en la genera el color se queda realmente en unos 52 útiles realmente.descarga.jpg

Con esto deberíamos tener suficiente, pero no son los únicos cambios realizados por Uemura y su equipo.

#3.1 Object Attribute Memory

La OAM son unos 256 bytes de memoria interna donde se almacenan las tablas de atributos 64 patrones/sprites que se utilizarán en dicha escena. No almacena los patrones/sprites porque para ello serían necesarios solo sin contar el color unos 16 bytes por patrón/sprite, lo que almacenan es el equivalente al SAT del TMS9928A…

sat

Pero la forma en la que esta organizada la tabla es completamente distinta en el caso de la PPU:

  • Byte 0: Posicion vertical en la pantalla
  • Byte 1: Localización en la CHR-ROM/CHR-RAM del patrón/sprite.
  • Byte 2 (bit 0): Voltea el patrón/sprite original verticalmente si esta activo
  • Byte 2 (bit 1): Voltea el patrón/sprite original horizontalmente si esta activo
  • Byte 2 (bit 2): Bit de prioridad, marca si el patrón/sprite corresponde el primer plano o al fondo, en el caso de que pertenezca al fondo el mecanismo de detección de colisiones incluido en la PPU no se activa al interactuar con un patrón/sprite del primer plano.
  • Byte 2 (bit 3): No se utiliza
  • 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 pantalla.

Podemos tener dos tablas de patrones/sprites situada una entre las direcciones de memoria $0000-$0FFF y entre 1000-$1FFF del direccionamiento de memoria de la PPU por lo que se encuentran en la CHR-ROM/CHR-RAM. Cada una de ellas es de 4096 bytes haciendo el total de 8KB de CHR-ROM/CHR-RAM que se pueden colocar por escena. Tenemos unos 256 patrones/sprites por banco, cada uno de ellos siento un patrón/sprite de unos 16 bytes (8×8 pixeles y 2 bytes por pixel) aunque es posible colocar patrones de 8×16 pixeles no son muy comunes y se ven limitados a solo 2 colores.

#3.2 Name Tables

El cambio en la CPU resulto en un cambio en la PPU, el Z80A tenía la particularidad de crear la Name Table en la memoria de la CPU muy lentamente al necesitar unos 4 ciclos de reloj para enviar un dato a los puertos del TMS9928A pero con el 6502 la velocidad de envio era de 1 ciclo pese a que la velocidad fuese 1/2 por lo que Uemura y su equipo se dieron cuenta que podían enviar las Name Tables al doble de velocidad respecto a a Colecovision.

Tecnicamente la Famicom/NES puede generar por fotograma hasta unas 4 Name Tables.  ocupando cada una de ellas unos 1024 bytes, de los cuales unos 960 bytes (32×30 que son unos 256×240 pixeles) que hacen hacen referencia a la posición de los objetos en pantalla.

castlevania-grid.png

La forma de componerlas es la misma que en los hardware basados en el TMS9928A pero con una diferencia enorme, el sistema puede dibujar hasta 4 pantallas distintas en este caso, las cuales se situan cada una en diferentes partes consecutivas de la memoria de la PPU.

Four_nametables_diagram.png

Pero solo tenemos unas 2048 bytes de memoria para las Name Tables en el hardware base de la Famicom/NES por lo que es necesario colocar CHR-RAM en el cartucho para conseguir tener juegos donde el scroll no solo sea vertical u horizontal sino de ambas maneras:

0212uiew.png

Si no esta la CHR-RAM adicional para almacenar las Name Tables adicionales situadas en las direcciones $2800 y $2C00 van a funcionar como espejo de las disponibles en $2000 y $2400 respectivamente. Como es obvió en pantalla solo se mostrará una sola Name Table… Aunque internamente se generaran dos.

nametable-mirror.png

Cuando se lleguen a los 256 pixeles dibujados en la linea de escaneo, la PPU forzará un salto en el escaneo de linea, pero al desplazar con el scroll tanto horizontal como verticalmente la PPU desplazará lo que muestre en pantalla.

SMB1_scrolling_seam.gif

En ciertos juegos donde existe una pantalla de items a seleccionar pulsando el boton start en todo momento dicha pantalla de items es generada como la Name Table en $2400, es por ello que las transiciones de una pantalla a otra en juegos de este tipo es más brusca respecto a los juegos de otros géneros en la misma consola.

Y con esta simple explicación sabéis como funcionan los gráficos de la NES.

#4 Famicom vs NES

La Famicom y la NES realmente son sistemas distintos por la diferencia en los cartuchos, Nintendo había observado por la experiencia de Atari que los clones de los cartuchos de la VCS que podía fabricar cualquiera inundaban el mercado. Atari con la 7800 creo un sistema de seguridad que Nintendo al verse asustada de la enorme piratería de la VCS en los EEUU pero sobretodo de la Famicom en Hong-Kong decidió realizar un cambio en el hardware de la versión occidental, cambiando el pinout de los cartuchos para añadir un chip de control llamado 10NES que era necesario para que los juegos funcionaran en la consola.

10nes.JPG

Esto le dio el monopolio absoluto a Nintendo de los juegos fabricados para su consola, algo que se convirtio en polémica cuando Atari Games (no confundir con Atari Corporation que era la de los Tramiel) a través de la marca Tengen creo una serie de cartuchos compatibles fabricados por ellos mismos haciendo ingenieria inversa sobre el 10NES.

dscn0115.jpg

Nintendo cancelo la distribuición de sus juegos y consolas oficiales a aquellos que vendiesen juegos de Tengen. Lo que provoco uno de los juicios más famosos de la historia donde al final venció Nintendo creando el precedente que aún dura de que el control de la producción del software pertenece al propietario intelectual de la plataforma. Esto aún dura hoy en día e incluso se aplica a la distribución digital.

#5 Nintendo vs la competencia en los 8 bits

Ambas versiones de la consola barrieron por completo el suelo con sus rivales. Cuando en 1983 fue lanzada en Japón su rival fue la SG-1000 de Sega, Nintendo la derroto facilmente  y forzo a Sega a realizar para 1985 su Sega Mark III/Master System pero dicha consola fue derrotada en el mercado japonés por el boom de Super Mario Bros que catapulto las ventas de la Famicom al éxito más alto y le dio para los años sucesivos el monopolio absoluto del mercado japonés.

En occidente la competencia dependió del lugar, en Europa dada la popularidad de los ordenadores de 8 bits a finales de los 80 no tuvo tanto éxito como en los EEUU donde la consola por falta de competencia que estuviese a la altura rapidamente se comio el mercado y se convirtió en una sensación de masas. Sega no era lo que sería bajo el mandato de Tom Kalinkse en la era Genesis/Mega Drive y Atari no era rival que no paraba de dispararse a si misma continuamente y el catálogo de la 7800 no llegaba a la altura por lo que Nintendo tuvo en bandeja de plata el mercado americano sin competencia a la altura de 1986 a 1990 en la parte baja del mercado.

El dominio de la NES fue tal que el control sobre la producción de los juegos por parte de Nintendo se convirtió en una polémica enorme en los EEUU, principalmente porque nadie podía programar libremente para Nintendo sino que era Nintendo la que tenia que que escogerte a ti y con el mercado de los 8 bits estando cada vez más limitado a la NES era un problema. Aparte que Nintendo no quería ports de otros sistemas sino versiones exclusivas de contenido durante unos dos años. El dominio de Nintendo termino en 1990 ante el principio del juicio por practicas de monopolio, Nintendo se acojono tanto ante eso y ante como quedaría su imagen que bajo las barreras y permitió que de 1990 a 1994 el mercado americano se llenase de cartuchos de baja calidad y en gran número, lo que le ocurrió a la VCS en el crack de 1983, pero las situación resultante fue distinta porque hubo una transición a la generación de los 16 bits en ese mismo momento.

Y con esto terminamos la entrada sobre la Famicom/NES.