martes, 4 de octubre de 2016

MAME: una máquina recreativa en tu PC

Recuerdo en mi lejana niñez aquellas vivencias mágicas y sorprendentes en torno a las máquinas recreativas. Ahorraba con ansia algunas monedas de cinco duros (25 pesetas) para controlar aquellos monigotes de luz que surgian de la pantalla: naves, monos, hamburguesas, guerreros, soldados, coches, superhéroes... podías interpretar y controlar casi cualquier personaje y hacer cosas increíbles.

Me vienen a la cabeza títulos como Asteroids, Space Invaders, Galaga, Pacman, Moon Cresta, R-Type, Commando, Green Beret, Tetris, Golden Axe, Altered Beast, Outrun, Ghost'n'Goblins, Bomb Jack, Street Fighter, Double Dragon, Donkey Kong, Metal Slug, 1942... La lista parece interminable, y los recuerdos y experiencias afloran como un incansable manantial.

Podemos revivir todos aquellos juegos gracias al emulador de MAME (Multi Arcade Machine Emulator), el cual está disponible de forma gratuita para Windows, MacOS y Linux, en la siguiente URL: http://www.mame.net


Instalación de MAME


En este artículo explicaré cómo instalar el emulador de MAME en Linux, más concretamente para distribuciones basadas en Ubuntu.

Para ello, abriremos la consola de comandos y ejecutaremos el siguiente comando:

sudo apt-get install mame mame-extra mame-tools mess gnome-video-arcade

Recomiendo también instalar la librería SDL (Simple Directmedia Library, https://wiki.libsdl.org/FrontPage), una librería especial multiplataforma diseñado para proveer una capa para acceso a audio, teclado, joystick y hardware via OpenGL y Direct3D, y es utilizada por emuladores de juegos:

sudo apt-get install libsdl2-dev libsdl-ttf2.0-dev

La interfaz de usuario no es muy atractiva que digamos, por lo que ejecutaremos el siguiente comando:

sudo ln -s /usr/share/games/mame /usr/share/games/xmame

Otra interfaz alternativa es ejecutar directamente Gnome Video Arcade desde la consola:

gnome-video-arcade

La primera vez tardará bastante, pues creará una base de datos con todos los juegos instalados, y analizará cada uno de ellos en búsqueda de problemas.

Cuando instales nuevos juegos, puedes reconstruir la base de datos mediante el siguiente comando:

gnome-video-arcade -b



Nota: Si tienes problemas al instalar los paquetes, posiblemente necesitarás configurar previamente los repositorios:

sudo add-apt-repository ppa:c.falco/mame


Configuración previa


Antes de empezar, hemos de crear el directorio de configuración y generar el archivo de configuración mame.ini mediante estos comandos (atención al punto previo a "mame"):

mkdir $HOME/.mame
cd $HOME/.mame
mame -cc

Si editamos el fichero mame.ini veremos una línea con el parámetro rompath, el cual, por defecto, apunta a las siguientes rutas:

/usr/local/share/games/mame/roms;/usr/share/games/mame/roms

Este parámetro indica al emulador de MAME dónde se encuentran los juegos (o ROMS). Podemos dejar estas rutas, pero prefiero una ruta más fácil de recordar, por lo que la he cambiado por:

rompath        $HOME/mame/roms

Guardo los cambios realizados y creo dicha ruta con los siguientes comandos:

mkdir $HOME/mame
mkdir $HOME/mame/roms

Por último, en el directorio $HOME/.mame deben existir las siguientes carpetas (si no existen, hay que crearlas):
  • cfg
  • comments
  • diff
  • inp
  • memcard
  • nvram
  • roms
  • snap
  • sta

Configurar el joystick o el gamepad

Si vas a utilizar un joystick o un gamepad para disfrutar de tus juegos, será conveniente saber como instalar el joystick en Linux.

El comando lsusb de Linux listará los dispositivos conectados a los puertos USB, para detectar si el joystick o el gamepad está conectado y reconocido.

Con el siguiente comando:

ls -l /dev/input | grep js

Mostrará, de forma secuencial, las conexiones de joystick. Así, el primer joystick será js0, el segundo joystick será js1, y así, sucesivamente.


Si no lo detecta, necesitaremos la herramienta joystick.

En Debian/Ubuntu/Linux Mint:

sudo apt-get install joystick


En Fedora:

su -c 'yum install joystick'

Para que los juegos puedan calibrar el joystick o gamepad, será preciso que configuremos el dispositivo en el directorio correspondiete, para que tenga todos los permisos de escritura y lectura:

sudo chmod 666 /dev/input/js0
sudo chmod 666 /dev/input/js1


Instalar las BIOS de MAME

De fábrica, el emulador de MAME posee un conjunto básico de BIOS, por lo que muchos juegos no funcionarán, y aparecerá un mensaje que vuelve loco a más de uno:

The selected machine is missing one or more required ROM or CHD images. Please select a different machine

Hay que recordar que cada máquina era de un fabricante y tenía su propia BIOS. A veces, había juegos con BIOS específicas y requerían de otros sets.

Podemos conocer la lista de BIOS necesarias en la siguiente URL:

http://www.mamedb.com/category/BIOS

Name Year Manufacturer File Category Score
Acclaim PSX  1995  Acclaim  acpsxBIOS7.51
Arcadia System BIOS  1988  Arcadia Systems  ar_biosBIOS7.50
Atari PSX  1996  Atari  atpsxBIOS3.29
Atlus PSX  1996  Atlus  atluspsxBIOS4.08
Baby Phoenix/GV System  1995  Konami  konamigvBIOS8.00
Crystal System BIOS  2001  BrezzaSoft  crysbiosBIOS7.11
DECO Cassette System  1981  Data East Corporation  decocassBIOS7.00
Hyper NeoGeo 64 Bios  1997  SNK  hng64BIOS6.95
Max-A-Flex  1984  Exidy  maxaflexBIOS7.60
Mega Play BIOS  1993  Sega  megaplayBIOS6.62
Mega-Tech  1989  Sega  megatechBIOS6.57
Multi Amenity Cassette System BIOS  1995  I'Max  macsbiosBIOS8.00
Neo-Geo  1990  SNK  neogeoBIOS6.83
Nintendo Super System BIOS  1969  Nintendo  nssBIOS7.45
PGM (Polygame Master) System BIOS  1997  IGS  pgmBIOS7.57
PlayChoice-10 BIOS  1986  Nintendo of America  playch10BIOS6.50
PS Arcade 95  1997  Eighting / Raizing  psarc95BIOS7.00
ST-V Bios  1996  Sega  stvbiosBIOS7.26
Super Kaneko Nova System BIOS  1996  Kaneko  sknsBIOS7.75
System GX  1994  Konami  konamigxBIOS5.00

Name Year Manufacturer File Category Score
Taito FX1  1995  Taito  taitofx1BIOS7.36
Taito GNET  1997  Taito  taitognBIOS8.20
TPS  1997  Tecmo  tpsBIOS6.45
ZN1  1995  Capcom  cpzn1BIOS7.90
ZN2  1997  Capcom  cpzn2BIOS9.00

Y descargar las BIOS buscando entre las ROMS de Emuparadise:

http://www.emuparadise.me/M.A.M.E._-_Multiple_Arcade_Machine_Emulator_ROMs/7

También podemos buscar las BIOS necesarias y descargarlas individualmente (vienen empaquetadas y comprimidas en archivos ZIP):

http://www.emulab.it/test/index-bios.php?t=1&order=2&dir=ASC

También lo puedes encontrar aquí:

http://www.emuline.org/topic/692-all-bios-mame

Pero es recomendable buscar una BIOS pack, en el que tendrás todas las BIOS en un único archivo comprimido. En esta URL puedes descargarte la BIOS pack:

http://www.planetemu.net/roms/mame-bios-pack

Una vez descargado, hay que descomprimir el archivo. Aparecerán todas las BIOS estándar disponibles, cada una en un fichero ZIP.

El siguiente paso será copiar todos esos archivos al directorio configurado para las ROMs (en mi caso en $HOME/mame/roms).

IMPORTANTE: Para asegurar el máximo éxito en la ejecución de los juegos, asegúrate que las BIOS son las más actuales. La versión de la BIOS pack debería coincidir con la última versión (o la más aproximada) a la versión del emulador de MAME (ver en la página oficial de MAME). La última versión en Septiembre de 2016 es la v0.178).


Descargar e instalar los juegos

Ahora viene la parte interesante: los juegos.

Los juegos para las máquinas recreativas estaban encapsulados en chips de memoria no volátil, es decir, que ya estaban grabados y eran imborrables y no reutilizables. Estos chips eran memorias de sólo acceso, o ROMs. Hay multitud de sitios en los cuales descargar juegos para la MAME. He aquí algunos de ellos:

Emuparadise: http://www.emuparadise.me/M.A.M.E._-_Multiple_Arcade_Machine_Emulator_ROMs/7
Free ROMS: http://www.freeroms.com/mame.htm
Cool ROM: http://coolrom.com/roms/mame
ROM World: http://www.rom-world.com/dl.php?name=MAME
Planet Emu: http://www.planetemu.net/roms/mame-roms

Particularmente, prefiero Emuparadise. Además de tener una colección muy completa, posee una gran información sobre cada ROM, en donde podemos conocer qué BIOS pack mínima es necesaria y qué otras BIOS o CHDs son necesarios para que el juego funcione.

Por ejemplo, si buscamos el juego Ghost'n Goblins (seleccionando la letra 'G' en la parte superior),  al bajar hasta la sección "Direct Download Links", además de tener el enlace a la ROM, debajo de éste encontraremos que necesita de una ROM "padre" (o parent ROM) llamada "Ghost'n Goblins (World? set 1)". Sin esta ROM, el juego no funcionará, con el consabido mensaje.


Archivos CHD


Los juegos arcade más modernos, a partir de los años 90, necesitaban muchos más datos para funcionar, y para ello, utilizaban unidades de disco duro, disco láser o CD ROMs. En MAME, Estos juegos necesitan estas unidades comprimidas en archivos CHD, como el Street Figher III.

Para instalar un archivo CHD y poder disfrutar de tu juego, además de la ROM zipeada e instalada en tu directorio ROMS, necesitarás el archivo CHD. Este archivo suele estar zipeado, pero tendrás de descomprimirlo y obtener así el archivo CHD. Una vez obtenido, tendrás que copiarlo en una carpeta con el mismo nombre que el juego, la cual debe estar dentro del directorio ROMS. Así, por ejemplo, en el juego de Street Fighter III, la ROM principal se llama sfiii y el archivo es sfiii.zip. Este archivo se copia a la carpeta ROMS. Este juego posee dos archivos CHD (sf3000.chd y cap-sf-3.chd). Ambos archivos se deben copiar a la carpeta sfiii dentro de la carpeta ROMS.

En Emuparadise, las ROMs de los juegos suelen incluir también los enlaces a sus archivos CHD correspondientes. No obstante, en DOPEROMS podrás encontrar los CHDs que puedas necesitar. El enlace es el siguiente: http://www.doperoms.com/roms/Mame_Chd/S.html


¿Por qué no funcionan algunas ROMS de MAME?


Tranquilo, no eres el único al que le pasa. Intentas lanzar un juego y MAME te dice que faltan algunos ficheros, que el juego no funciona al 100%, que falta alguna ROM...

Intentaré explicar por qué pasa.

Una de las razones es por el cambio de releases de MAME. Si te fijas en Emuparadise, el enlace de descarga de cada ROM viene acompañada de la release o versión de MAME a partir de la cual funciona.

Algunos juegos requieren de su propia BIOS. Esto lo encontrarás en juegos de Neo-Geo, Playchoice-10, Convertible Video System, Deco Cassette, MegaTech, MegaPlay, ST-V Titan u otros. De las BIOS ya hablamos al principio, y se instalan como si fueran ROMs de juegos.

Otra razón es que algunos juegos requieren de CHDs. Como se comentó anteriormente, un CHD es un dispositivo de almacenamiento adicional (disco duro, CDROM, Laser Disc) que necesita el juego. El contenido de este dispositivo es comprimido en un archivo especial llamado CHD, y debe incluirse en el directorio de juego correspodiente.

Algunos juegos son clones de juegos originales, o bien versiones alternativas de dichos juegos. Estos juegos se solapan y modifican propiedades tales como fechas de copyright, bootlegs, etc.  Para conocer los juegos clonados, puedes ejecutar desde la consola el comando mame -listclones

De un juego pueden aparecer multitud de versiones. Tanto las versiones como algunos juegos clonados necesitan de una ROM padre (parent ROM), la cual debe estar alojada en el directorio ROMS para que puedan funcionar.

Podemos comprobar si una ROM es correcta mediante el siguiente comando:

mame -verifyroms

Por ejemplo, para verificar el juego Combat School, utilizaremos:

mame -verifyroms combatsc

Si encontrase algún problema, informaría sobre el mismo, indicando qué archivo/s está/n generando dicho problema.


Consejos para descargar ROMs

EmuParadise es una gran base de datos que incluye ROMs de diversas máquinas, en diferentes idiomas y las diferentes versiones que éstas lanzaron. He aquí algunos consejos para no volvernos locos:

1) Evitar aquellas ROMs que no vienen acompañadas de una screenshot (pantallazo)
2) Evitar aquellas ROMs que son de máquinas lúdicas, propias de casinos o casas de apuestas. Las reconocderás rápidamente por que, además de venir sin screenshot, en el nombre, entre paréntesis, indican que máquina es. He aquí algunas de ellas: Scorpion, Bellfruit, Maygay, Ace, Empire, Mazooma. Casino, Barcrest, Mdm, Vivid. JPM, SYSTEM5, Bwb, Crystal, Impulse, EPOCH...
3) Evitar aquellas ROMs que sean de máquinas de Pinball. Se reconocen rápidamente porque en la Screenshot aparecerá el texto Pinball.
4) ROMs que funcionan en un alto porcentaje: las de NeoGeo y Deco Cassete (no olvidar tener estas BIOS instaladas), las de Taito
5) Entre varias ROMs, buscar la versión más alta o bien la ROM padre
6) Fijarse bien si necesita de otras ROMs o de CHDs. En tal caso, descargar también éstas
7) Hay muchos clones de juegos originales. Desde luego, si utilizas solamente el original, te evitarás tener varios juegos clonados, a no ser que el clon sea algo diferente del original y te guste.
8) Entre varios lenguajes, te recomiendo descargar la inglesa (US o USA) o la internacional (World)
9) Los ROMs de tipo "bootleg" son ediciones no autorizadas que se hacen pasar como originales. Por tanto, puedes ahorrarte esta descarga