La Neo Geo AES era la versión doméstica de la placa recreativa del mismo nombre de la empresa japonesa SNK. Es famosa por sus cartuchos de alta capacidad, lo cual se traducía en videojuegos a precios desorbitados para la época. Con el tiempo se ha convertido en una plataforma de culto, especialmente entre los coleccionistas de lo retro, al mismo tiempo que muy mitificada. ¿Cómo era por dentro y cómo se comparaba con otros sistemas de la época?
Neo Geo por dentro
La particularidad de Neo Geo es que no se trata de una consola de videojuegos, sino de toda una placa recreativa con todo lo que ello conlleva. Su CPU principal es un Motorola 68000 funcionando a 12 MHz, por lo que si descontamos el Mega CD, se trata de la consola de 16 bits con el mejor microprocesador de todos. A nivel gráfico supera incluso al X68000 y, aunque no llega al nivel del FM Towns, hemos de tener en cuenta que se trata de una consola de transición. Lanzada en enero de 1990 en Japón, la consola de SNK es la demostración de que ciertos conceptos ya no eran necesarios realmente, por lo que podríamos llamarla una consola de transición a la era de los 32 bits.
¿El mayor mito? Llamarla consola de 24 bits por sus capacidades gráficas, realmente no deja de ser una consola de 16 bits, pero glorificada. Gracias sobre todo al uso de cartuchos de memoria con tamaños excesivos para la época y un chip gráfico mucho más potente que el de las consolas de SEGA y Nintendo. Sin embargo, como casi todo, la potencia de Neo Geo tiene una serie de secretos y es por ello que hemos decidido desgranarlos.
Los cartuchos de Neo Geo
Si hay algo en lo que destaca Neo Geo es en sus cartuchos, los cuales eran gigantescos y con una gran cantidad de chips de memoria. Esto se debe a que, en vez de concentrar toda la información en unos pocos chips ROM, los datos se repartían entre varias memorias, lo que no solo le permitía tener una mayor capacidad de almacenamiento en los juegos, sino también evitar que hubiera conflictos a la hora de acceder a los diferentes datos.
Desde el momento en que la CPU del sistema era un Motorola 68000 la cantidad de memoria que soportaba el sistema debería ser de 256 Megabits (16 MB), pero la consola era famosa por el famoso mensaje MAX 330 MEGA PRO-GEAR SPEC que marcaba que soportaba cartuchos de esa capacidad y que aparecía justo al encender la consola.
Sin embargo, en la Neo Geo, el 68000 tiene asignados unos 64 KB de memoria RAM, 128 KB en forma de ROM en la máquina, puede acceder a la la Color RAM del LPSC. Y dentro del cartucho como mucho puede acceder hasta 2 MB de memoria al cartucho, divididos en dos bancos que son llamados P ROMS. Por lo que el resto de datos, hasta llegar a los 330 Megabits corresponden a gráficos y sonido.
Tipo de ROM | Función principal | Tamaño típico | Notas adicionales |
---|---|---|---|
C-ROM | Almacenan los bitplanes de los sprites (tiles de 16×16 px), divididos en dos módulos. | 8 MiB cada una (16 MiB en total) | Organizadas en pares (C1/C3… y C2/C4…) para formar los 4 bitplanes de cada sprite. |
M1 ROM | Programa de control de audio para la CPU Z80 (driver y secuencias), no contiene samples. | 64 KiB (básico); paginable hasta 512 KiB/4 MiB con mapper | A través de NEO-ZMC o NEO-ZMC2 puede bankswichear si supera los 64 KiB. |
S ROM | Gráficos de la “Fix Layer” (tiles de 8×8 px para texto, HUD y menús). | 128 KiB | Si es mayor, se utiliza el chip NEO-CMC para bankswitching; en MVS puede encontrarse también como SFIX. |
V ROM | Contienen los samples ADPCM-A (y en juegos tardíos ADPCM-B) para el chip YM2610. | 4 MiB cada una (≈8 MiB en total) | Inicialmente separadas para ADPCM-A y ADPCM-B; luego unificadas en el mismo módulo mediante el PCM demux del chip. |
Gráficos en la Neo Geo
El chip gráfico de la Neo Geo es llamado LPSC (acortamiento de Line Sprite Controller), el cual es capaz de manejar hasta 380 sprites de 16 x 16 píxeles en formato de 16 colores (4 bits por píxel) por frame con una capacidad de hasta 96 sprites por línea de escaneo. Por lo que nos encontramos con el último chip cuyo funcionamiento deriva del TMS9918A y se trató del último dentro de una tradición que definió a la arquitectura de las consolas japonesas durante una década entera.
En cuanto a la memoria asignada, el chip gráfico de Neo Geo tenía acceso a las siguientes:
- 68 KB de VRAM donde se almacenaban las tablas SCB1 a SCB4 donde se encuentran las diferentes tablas de atributos de los diferentes sprites, así como el búfer de línea.
- 16 KB de Color RAM, que le permite a Neo Geo almacenar en 2 bancos hasta 256 paletas con 16 colores por paleta para un total de 4096 colores, gracias a su DAC de 12 bits. Claro está que desde que al menos uno de los colores ha de ser transparente, la cosa se queda en 3840 colores.
- En cuanto a los patrones gráficos, estos no se encontraban en la VRAM, sino que el LPSC los lee directamente de la C-ROM del cartucho a través de un bus de datos dedicado de 16 bits a 8 MHz para ello.
La mayor limitación de Neo Geo a nivel gráfico es que, al contrario de Super NES y Mega Drive, la consola carece de una unidad DMA para poder enviar la información con la suficiente celeridad a la VRAM en forma de tablas SCB para construir el frame. Es decir, la consola de SNK estaba limitada por CPU, ya que solo puede enviar 2 MB/s de datos, lo que se traduce en 33 KB por frame, lo que esta por debajo de los 64 KB donde se almacenan los SCB y la capa fija.
Sprites
Una de las características del LPSC de Neo Geo es la enorme cantidad de memoria en chip que puede manejar respecto a otras máquinas de la época. Para escoger el patrón gráfico correspondiente, la consola utiliza un índice de 20 bits, esto se traduce en que el sistema puede manejar hasta 1 millón de sprites diferentes, cuyo tamaño mínimo es de 128 bytes. Recordemos que cada sprite es de 16 x 16 píxeles con 4 bits de color por píxel, lo que se traduce en 128 MB solo almacenar los patrones como límite real, esto es 1 Gigabit, mucho más que los 330 Megabits como límite para los cartuchos de la consola.
No obstante, nunca se llegó a ese límite por el alto precio de la memoria ROM, por lo que el juego oficial más grande es el King of Fighters 2003, que llegaba a ocupar 716 Megabits, 89 MB de tamaño aproximadamente. Son embargo, el hecho de poder contar de forma inmediata con una gran cantidad de patrones gráficos le daba a la consola una increíble ventaja de cara a la animación en los gráficos, por desgracia esto tenía un coste y no es otro que el alto precio de los juegos de la consola, los cuales eran inviables para el 99% del público que no tenía la economía para comprarlos.
Tabla | Byte | Bit | Función |
---|---|---|---|
SCB1 | Byte | 0-7 | Selección de sprite |
Byte 1 | 0-7 | ||
Byte 2 | 4-7 | ||
0 | El patrón gráfico se dibuja horizontalmente a la inversa | ||
1 | El patrón/sprite se dibuja verticalmente a la inversa. | ||
2-3 | Sirve para marcar que los siguientes 8 patrones en la ROM son animaciones sucesivas al actual sprite. | ||
Byte 3 | 0-7 | Selección de paleta | |
SCB2 | Byte 0 | 0-7 | Controla cuantos píxeles podemos escalar cada sprite verticalmente. |
Byte 1 | 0-3 | Controla cuantos pixeles podemos escalar cada sprite horizontalmente. | |
SCB3 | Byte 0 | 0-4 | Sirve para marcar el tamaño vertical del patrón/sprite. Los patrones patrones/sprites de hasta 16×512 pixeles se realizan a partir de uno de 16×16 base utilizando como referencia este valor en el SCB3. |
Byte 0 | 6 | Esta bit nos sirve para marcar si el patrón/Sprite forma parte del anterior en la lista. | |
Byte 0 | 7 | Posicion vertical del patrón/sprite en pantalla, | |
Byte 1 | 0-7 | ||
SCB4 | Byte 0 | 7 | Posicion vertical del patrón/sprite en pantalla, |
Byte 1 | 0-7 |
Sprites como fondos
Con una resolución de 320 x 224 píxeles, la cantidad de sprites que puede manejar Neo Geo por pantalla es mayor que lo que se puede mostrar en pantalla. Es más, al contrario de otras consolas de la época, el sistema de SNK no usaba ningún tipo de Tilemap para los fondos. ¿Cómo lo hacía? Pues con el hecho de que, si bien solo podían ser de 16 píxeles de ancho, en cuanto a altura, podían llegar a los 512 píxeles en un mismo sprite.
Por lo que solo podía manejar una capa de gráficos en pantalla, pero sabemos que los juegos de la consola de SNK representaban varias capas en pantalla. Pues por el hecho de que el Pixel Clock (24 MHz) le permite dibujar hasta 1536 píxeles por línea de escaneo, las cuales se reparten en 4 capas de 384 píxeles cada una. ¿La trampa? Neo Geo usa un búfer de línea donde se almacenan todos los píxeles correspondientes a la línea de escaneo, incluyendo aquellos fuera de la sincronización horizontal. Por lo que no envía los píxeles directamente al televisor.
Dicho búfer de línea se basa en dos memorias que trabajan en paralelo, en una se almacenan los 192 píxeles pares y en la otra los 192 píxeles impares con una información de 12 bits por píxel (4 bits para el valor en la paleta actual y 8 bits para escoger paleta) que son los referenciados en la tabla SCB1.
Capa fija
La capa fija es una capa utilizada en Neo Geo para mostrar texto, marcados de vida y puntuación, etc. Es decir, se utiliza para mostrar elementos estáticos en pantalla, y a diferencia del resto de los gráficos, no se generan a partir de sprites de 16 x 16 píxeles, sino que se trata de la única parte que funciona como un tilemap tradicional compuesto por patrones de 8 x 8 píxeles. A la hora de mostrarse en pantalla, la Fix Layer es la que tendrá prioridad sobre las otras capas en los lugares donde se utilice.
No obstante, debido a que la capa fija es la que tiene mayor prioridad a la hora de dibujarse, esta se superpone a las otras, de ahí que no se considere una capa de fondos como un Tilemap tradicional. Por otro lado, su resolución es solo de 320 x 256 píxeles, por lo que no se desplaza y se queda fija de forma superpuesta hasta que se desactiva.
Audio en la Neo Geo
La forma de generar sonido de la Neo Geo es muy similar al de la Mega Drive de SEGA, con un Zilog Z80 a 4 MHz controlando el sistema de audio de la consola, lo que ayuda a ahorrarle ciclos de reloj al 68000 y poder utilizarlos para otras cosas. No obstante, al contrario que Mega Drive, no tiene acceso al espacio de memoria asignado al 68000, ya que como hemos comentado antes, Neo Geo carece de una unidad DMA, pero si a su propia RAM. Además, para manejar el audio de los juegos accede a la ROM M1 de hasta 64 KB de tamaño, donde se encuentran las instrucciones que indican lo que el Z80 puede hacer para manejar el sonido de la consola.
En cuanto al chip de sonido, este es el YAMAHA YM2610, un chip que puede manejar hasta 4 canales de Síntesis FM que puede manejar 4 operadores por canal. Además, incluye un generador de sonido programable (PSG) de 3 canales al estilo del AY-3-8910 para efectos de sonido simples y 7 canales de audio PCM (ADPCM) al mismo tiempo. Para acceder a la información del audio, este tiene acceso directo a las V ROM (Voice ROM) dentro de los cartuchos de Neo Geo a las que tiene acceso directo, por lo que no necesita precargar el audio en una pequeña memoria local a la hora de reproducir las muestras. La cosa no termina ahí, sino que el sistema dispone como DAC externo para el audio el YM3016, también de YAMAHA, lo que le permite reproducir 16 bits por muestra.
Neo Geo CD
La Neo Geo CD fue una versión de consola que integró un lector CD-ROM en lugar de un slot para cartuchos. Si bien su hardware era prácticamente el mismo, dada la lentitud de los discos compactos para acceder a la información, se tuvo que rediseñar por completo la estructura de la memoria RAM. Y es que esta variante de la consola de SNK dispone de 7 MB de memoria, que es desde donde opera la consola realmente, ya que los datos son volcados desde el disco a dicha memoria, la cual se organiza de la siguiente manera:
- 1 MB para el audio (funciones equivalentes a la V-ROM).
- 4 MB para patrones gráficos (C ROM).
- 2 MB para hacer las funciones de la P-ROM.
La única diferencia respecto a la Neo Geo clásica es el añadido de una unidad DMA encargada de realizar las copias de datos desde el CD-ROM a la RAM del sistema, pese a ser más rápida que el 68000, la enorme cantidad de memoria hizo que los tiempos de carga de la máquina fueran insufribles, destrozando por completo la experiencia y convirtiéndola en un sistema infame. La consola llegó a tener una última variación, la Neo Geo CDZ, cuya diferencia era un lector más rápido y una unidad DMA más veloz para reducir los insufribles tiempos de carga.