2020-04-15 RG350 xMAME

xMAME

xMAME es un port para UNIX del conocido multiemulador de máquinas arcade MAME. Vamos a ver cómo instalarlo y configurarlo en la consola RG350.

Instalación

El OPK que utilizaremos para instalarlo es sólo eso, un instalador. Una vez que la instalación haya terminado podremos borrarlo. El proceso es el siguiente:

  1. Bajar éste OPK
  2. Copiarlo a una de las dos rutas que explora GMenu2X para mostrar los lanzadores, es decir:

    • Tarjeta interna: /media/data/apps
    • Tarjeta externa: /media/sdcard/apps
  3. Localizar el lanzador del instalador en GMenu2X:

    xMAME Installer

  4. Abrir el instalador. Se nos preguntará si queremos instalar xMAME en la tarjeta interna o la externa. La selección de uno u otro destino se hace pulsando izquierda o derecha:

    xMAME Installer internal xMAME Installer external

  5. Confirmamos la instalación con Start o cancelamos con Select. Al pulsar Start veremos una pantalla de texto durante un minuto aproximadamente (el error que se ve al principio en realidad no es del instalador sino un resíduo del log de GMenu2X). Al finalizar la instalación aparece brevemente un mensaje que nos indica que podemos borrar el instalador:

    xMAME Installer progress xMAME Installer end

  6. Al regresar a GMenu2X ya deberíamos ver el nuevo icono lanzador:

    xMAME Launcher

Configuración

Si tratamos de abrir xMAME recien instalado, se cerrará mostrando brevemente un mensaje de error:

xMAME First launch

Como vemos se queja de que no encuentra ROMs. xMAME tiene un comportamiento particular. Para empezar, en su versión 1.3, incluye tres versiones distintas de romsets:

  • 0.37b16, también conocido como 0.52
  • 0.69
  • 0.84

Cada uno de estos romsets apuntan a un directorio diferente:

  • 0.52 => /media/data/local/share/xmame/xmame52/roms
  • 0.69 => /media/data/local/share/xmame/xmame69/roms
  • 0.84 => /media/data/local/share/xmame/xmame84/roms

Nota

Las rutas anteriores corresponden a cuando la instalación ha sido hecha sobre la tarjeta interna. En caso de hacerlo sobre la externa la ruta base es /media/sdcard/apps/xmame

Es aquí donde debemos colocar al menos una ROM para que el programa se mantenga abierto y nos muestre su frontend:

xMAME Frontend

Gestión unificada de ROMs

Existe una forma de evitar tener que triplicar las ROMs entre los tres directorios y es sustituirlos por tres enlaces simbólicos hacia una única ruta. Esto lo podemos lograr ejecutando los siguientes comandos por consola (por SSH por ejemplo). La ruta utilizada deberá existir previamente (/media/data/roms/ARCADE/ en el ejemplo):

# rm -rf /media/data/local/share/xmame/xmame52/roms
# rm -rf /media/data/local/share/xmame/xmame69/roms
# rm -rf /media/data/local/share/xmame/xmame84/roms
# ln -s /media/data/roms/ARCADE/ /media/data/local/share/xmame/xmame52/roms
# ln -s /media/data/roms/ARCADE/ /media/data/local/share/xmame/xmame69/roms
# ln -s /media/data/roms/ARCADE/ /media/data/local/share/xmame/xmame84/roms

Previews

Como la mayoría de emuladores, xMAME soporta un sistema de previsualización de las ROMs para ayudar a identificar los juegos en el listado. Las imágenes tienen que colocarse en el directorio /media/data/local/share/xmame/resource/snap y llamarse igual que las ROMs excepto por la extensión .png. Por ejemplo para previsualizar la ROM /media/data/local/share/xmame/xmame52/roms/bombjack.zip tendrá que existir el fichero /media/data/local/share/xmame/resource/snap/bombjack.png. Si es así, en el listado de ROMs veremos lo siguiente:

xMAME Preview

En realidad puede haber más de una imagen por ROM. Se puede poner una secuencia de imágenes que aparecerán en sucesión en el frontend (cada 3 ó 4 segundos aproximadamente). Los nombres de las imágenes deben ser como cuando la imagen es única, es decir con el mismo nombre de la ROM, más un número correlativo de dos cifras empezando por 00. Por ejemplo, para el caso de la ROM comentada antes, una serie de 5 imágenes se conseguiría con los ficheros: bombjack.png, bombjack00.png, bombjack01.png, bombjack02.png y bombjack03.png. No es casualidad que el directorio donde se almacenan los snapshots o pantallazos del juego (se hacen con la combinación de teclas Start + Abajo), terminen en el mismo directorio de las previews, y que los nombres de estos pantallazos vayan incorporando esta numeración sucesivamente. De esta forma, cada pantallazo que hagamos se incorporará a la secuencia de previews.

Previews compatibles con GMenu2X

Como siempre nos interesa hacer compatible este sistema de previews con el propio de GMenu2X para así evitar tener las imágenes duplicadas en dos rutas distintas. Vamos a partir de la situación en la que hemos unificado la ruta de las ROMs del truco anterior, es decir que los tres directorios correspondientes a los tres romsets apuntan a /media/data/roms/ARCADE/. En este caso el directorio de previews debería ser: /media/data/roms/ARCADE/.previews/. Para convertir este directorio en el que utiliza xMAME, de nuevo haremos un parche en el sistema de ficheros con un enlace simbólico:

# rm -rf /media/data/local/share/xmame/resource/snap
# ln -s /media/data/roms/ARCADE/.previews/ /media/data/local/share/xmame/resource/snap

Como recopilar todas las previews de las ROMs es una tarea inabarcable manualmente, podemos como siempre utilizar un scraper, o bajar un lote preparado ya por alguien como éste.

Integración en frontends

Para que un emulador sea integrado correctamente en un frontend como EmulationStation, PyMenu o SimpleMenu necesitamos que el emulador pueda ser ejecutado por linea de comando y que acepte como argumentos la ruta de la ROM a emular. En el caso de xMAME hay tres ejecutables que se pueden invocar de esta forma, uno por cada versión de romset. Los ejecutables son los siguientes:

  • /media/data/local/share/xmame/xmame52/xmame.SDL.52
  • /media/data/local/share/xmame/xmame69/xmame.SDL.69
  • /media/data/local/share/xmame/xmame84/xmame.SDL.84

En frontends que sólo admitan un ejecutable como EmulationStation no tendremos más remedio que elegir uno de los tres (lo más lógico es escoger el romset 84). En frontends como PyMenu o SimpleMenu podemos indicar los tres ejecutables para seleccionarlos luego antes de lanzar la ROM. Por ejemplo en SimpleMenu tendríamos:

[MAME]
execs = /media/data/local/share/xmame/xmame52/xmame.SDL.52,/media/data/local/share/xmame/xmame69/xmame.SDL.69,/media/data/local/share/xmame/xmame84/xmame.SDL.84
romDirs = /media/data/roms/ARCADE/,/media/sdcard/roms/ARCADE/
romExts = .zip
aliasFile = /media/home/.simplemenu/alias.txt
onlyFileNamesNoPathOrExtension = yes

Controles

A continuación se muestra una recopilación de controles de xMAME:

Control Situación Función
Arriba / Abajo En frontend Seleccionar ROM una a una
Izquierda / Derecha En frontend Seleccionar ROM página a página
Select En frontend Salir
Start En frontend Refresca lista de ROMs
L1 En frontend Cambia el filtro de ROMs entre Available Game, Available Clones, Favourites y All Games
R1 En frontend Cambia entre las versiones de xMAME: 0.52, 0.69 y 0.84
A En frontend Arranca un juego y selección de opciones
Y En frontend Añade/quita de favoritos
Select + R1 En juego Insertar moneda
Select + L1 En juego Comenzar 1P
Select + L1 + R1 En juego Salir
L1 + R1 En juego Pausa
Start + R1 En juego Mostrar FPS
Start + L1 En juego Menú de configuración
Start + Abajo En juego Hacer captura de pantalla (se almacena en /media/data/local/share/xmame/xmameVV/snap)
Start + Izquierda En juego Guardar state. Luego seleccionar casilla de guardado (por letras, hay 29) y pulsar A
Start + Derecha En juego Recuperar state. Luego seleccionar casilla donde se guardó y pulsar A