Nuestra colección de máquinas ochenteras ya está tomando un tamaño considerable y nos cuesta decidir con cuál de ellas vamos a ponernos a trastear, que si el ZX Spectrum, el C64, Amiga 500, Amstrad CPC, Atari 2600, etc... Además, muchas veces hemos pensado, para poder solucionar esta controversia, en disponer de un único dispositivo que contuviera toda la emulación de nuestras máquinas preferidas, para así ahorrarnos el tener que sacar y conectar el sistema que queremos utilizar, con todo el despliegue de hardware que supone, que si el ordenador, disquetera, cableado y un sin fin de complementos, que nos quita mucho tiempo para el rato que finalmente vamos a estar utilizándolo.
Ante esto se nos presenta varias opciones, una de ellas son las basadas en FPGA, como son Mistica, Mister FPGA, ZX UNO, etc... Todos estos dispositivos tienen el inconveniente que para actualizarlos con nuevas arquitecturas o máquinas, supone tener un conocimiento y equipamiento, que si no lo tienes se nos puede hacer un mundo. Además, suelen seguir fielmente el funcionamiento de las máquinas originales, por lo que la apariencia de las interfaces de usuarios que presentan suelen ser bastante austeras sin posibilidad de visualizar contenido multimedia, como carátulas de las carcasas de los juegos, vídeos resumen, etc...
Para los puristas que quieren todo igual o casi igual que una máquina original, las máquinas FPGA puede ser una opción muy a tener en cuenta, para la gente común, que no quiere complicarse la vida y que quiere un producto versátil, completo y a buen precio, en mi opinión, una muy buena opción es una Raspberry Pi, que con todos los complementos (carcasa, disipadores, ventilador, tarjeta sd de 32 GB y cargador) la podemos encontrar por cerca de 50 €.
En mi caso, yo soy de los que dicen que como la máquina original no hay nada, porque es la única manera de conseguir una experiencia real, pero el sacar la máquina, conectarla y luego, después de utilizarla, desmontarla y volver a guardarla, quita mucho tiempo, y la Raspberry la puedes dejar conectada a la tele, ocupa muy poco espacio y con un mando inalámbrico se maneja perfectamente, además con la facilidad añadida de poder ir de una máquina a otra desde el mismo entorno y dispositivo.
La configuración que a mi personalmente me parece muy visual y completa es la siguiente:
Requisitos previos de instalación
Instalación Retropie
La forma más rápida de instalar Retropie es utilizando el programa de instalación de imágenes Raspberry Pi Imager. Este programa lo podemos descargar directamente de https://www.raspberrypi.org/downloads/, existen versiones para Windows, Ubuntu y MacOS. En mi caso utilizo la versión para Windows que está soportada a partir de Windows 7.
Una vez que lo hayamos descargado e instalado el programa Raspberry Pi Imager, insertamos la tarjeta micro-sd en el PC, utilizando un adaptador de tarjeta SD si fuera necesario.
Al ejecutar la aplicación salen tres botones, el primero nos pide elegir el sistema operativo, en mi caso elijo la última versión disponible, Retropie 4.6 - 2/3, ya que mi Raspberry es la 3B, pero si se tiene la Raspberry Pi 4, se elegiría Retropie 4.6 - 4. El siguiente botón nos pide la ubicación de la tarjeta micro-sd y el último botón es para grabar la imagen seleccionada en la tarjeta micro-sd. Si ya teníamos una versión previa en la tarjeta, ésta será borrada y reemplazada por la nueva, perdiendo todos los datos que tuviéramos, por lo que es recomendable hacer un backup o copia de seguridad antes de grabar esta nueva imagen en la tarjeta.
Al terminar la instalación, insertamos la tarjeta micro-sd en la Raspberry-Pi, y la encendemos.
Al encender la Raspberry, se entra en EmulationStation, si tenemos conectado un joystick, nos lo detectará y nos pedirá configurar los botones, si no tenemos el joystick conectado, no pasa nada, se puede configurar en cualquier momento.
Los botones, depende del tipo de joystick, si es de tipo Super Nintendo, tendrá menos botones que, por ejemplo, el de la PS3, como la configuración es común para cualquier modelo de joystick, saltaremos la configuración de los botones que no tengamos, esto lo haremos pulsando continuamente cualquier botón ya configurado. Por último nos pedirá configurar la tecla hotkey, elegiremos la tecla Select del joystick, que será la tecla comodín y que veremos su uso más adelante.
Una vez configurado el joystick, o también, si no lo hemos configurado, nos salimos de EmulationStation pulsando la tecla F4 del teclado para ir a la línea de comandos.
Lo primero que tenemos que hacer es configurar la conexión Wifi de la Raspberry. Para esto escribimos lo siguiente en la línea de comandos:
Nos saldrá la siguiente pantalla:
En el menú principal seleccionamos la opción 4 Localisation Options -->Change Timezone, elegimos Europe y luego Madrid.
Y también en la opción 4 Localisation Options, entramos en Change Wi-fi Country y elegimos ES (Spain).
Con raspi-config se puede configurar la wifi, pero es un proceso muy manual, por lo que recomiendo realizar esta configuración con RetroPie-Setup:
cd ~; cd RetroPie-Setup
sudo ./retropie_setup.sh
Nos saldrá una pantalla indicando que no es capaz de conectarse a internet y otros mensajes de error que vamos pasando pulsando <Ok>. Una vez llegados al menú principal:
Elegimos Configuration tools-->Wifi - Configure Wifi--> Connect to Wifi Network
Nos saldrá una lista de Wifis disponibles, elegimos a la que nos queremos conectar e introducimos la clave.
Al terminar la configuración nos saldrá una pantalla con la IP que se ha asignado a la Raspberry Pi. Esta IP nos la apuntamos para luego conectarnos en remoto con la aplicación Putty o cualquier otro cliente ssh desde el PC. Nos salimos de RetroPie-Setup, y volvemos a la línea de comandos.
Para ver desde la línea de comandos qué ip tiene asignada la Raspberry ejecutamos:
hostname -I
Volvemos a entrar en raspi-config ejecutando:
sudo raspi-config
Nos aparecerá el menú de configuración, y haremos dos cosas más, primero elegimos la opción:
7 Advanced Options-->A1 Expand Filesystem.
Y luego activamos el servidor SSH eligiendo la opción:
5 Interfacing Options-->SSH.
Una vez activo el SSH server, elegimos terminar (finish) y nos pedirá que hagamos reboot (reinicio), por lo que confirmamos con "yes".
Cuando se inicie la Raspberry, desde un PC nos conectamos a ésta utilizando la aplicación con el cliente ssh Putty, que nos la podemos descargar de https://www.putty.org/, también se podría utilizar cualquier cliente ssh, como el que viene con Windows 10, si optamos por esta opción, solamente hay que abrir una ventana CMD y desde ahí ejecutar el comando ssh -l pi dirección_ip_raspberry, al conectar pedirá la password que, si no la hemos cambiado, será raspberry.
Si optamos por instalar la aplicación Putty, al abrirla, nos saldrá una ventana donde configuraremos una conexión ssh y la ip de la Raspberry. Al conectar nos pedirá un usuario, pondremos pi y una password que será raspberry.
Nota: Para mayor comodidad y evitar errores a la hora de escribir directamente los comandos en la consola ssh, se puede hacer copy y paste de los comandos, para esto, solamente hay que seleccionar el texto y hacer copy de los comandos que os vais a encontrar a lo largo del documento y con el botón derecho del ratón hacemos el paste en la ventana del cliente ssh.
Cuando establezcamos la conexión con el cliente ssh, volvemos a entrar en RetroPie-Setup, escribiendo los siguientes comandos:
cd ~; cd RetroPie-Setup
sudo ./retropie_setup.sh
Y realizamos los siguientes pasos:
Al terminar los updates, hacemos reboot (Perform reboot).
Después de reiniciar nos volvemos a conectar a la Raspberry por línea de comandos con nuestro cliente ssh.
Instalación FFMPEG con soporte MMAL (Aceleración por HW de la decodificación de vídeo).
La instalación de FFMPEG suele dar bastantes problemas, sobre todo si se utiliza la descarga por git clone, a mí nunca me ha funcionado, por lo que podemos realizar esta otra forma de instalación, igual de valida que git clone, pero un poco más farragosa ya que igual tenemos que probar con distintas versiones hasta conseguir instalar la que nos funcione.
Para identificar cual es la versión que funciona de FFMPEG, recomiendo empezar a instalar la última versión más estable, y si esta falla en la compilación, intentarlo con la versión anterior, y así sucesivamente hasta que nos funcione. Por lo general la instalación de la última versión funciona, pero si no, habría que probar con una versión más antigua.
En nuestro PC entramos en la sección de descargas en la web de ffmpeg.org (https://ffmpeg.org/download.html) y en el apartado de Releases vemos cual es la última versión más estable, en el momento de elaborar este documento, la última era las 4.3.1.
Si accedemos a la url https://ffmpeg.org/releases/ podemos ver los nombres de los archivos de todas las versiones, buscamos la última con extensión .tar.bz2, en este caso la 4.3.1 y nos apuntamos el nombre del archivo.
Accedemos a la Raspberry Pi con nuestro cliente ssh. Una vez que hayamos entrado, ejecutamos, línea a línea, los siguientes comandos: cd ~/develop
wget https://ffmpeg.org/releases/ffmpeg-4.3.1.tar.bz2
tar -xf ffmpeg-4.3.1.tar.bz2
cd ffmpeg-4.3.1
./configure --enable-mmal --disable-debug --enable-shared
make
sudo make install
sudo ldconfig
cd ~; rm -r -f ./develop
Nota: el nombre del archivo .tar.bz2 utilizado para hacer wget tiene que coincidir con el de la versión que nos queremos descargar, en este caso era la 4.3.1, que en estos momentos coincide con la última versión, pero en el futuro pueden surgir nuevas versiones, por lo que hay que tener en cuenta que el nombre del archivo cambia.
Al ejecutar el comando make, tarda bastante, pero si al finalizar da algún error, no se podría continuar con el siguiente comando, sudo make install, y tendríamos que probar a descargarnos la versión anterior a la que nos ha fallado, repitiendo todos los comandos desde el wget.
Como se aprecia en la imagen, la compilación con make, aunque con varios warnings, terminó bien, es decir, que en la última línea no salió ningún mensaje de error, por lo que en este caso sí se puede ejecutar el siguiente comando make install, de lo contrario, tal como comentaba antes, tendríamos que volver a ejecutar el proceso de instalación con otra versión más antigua.
Una vez terminados todos los pasos de ejecución comprobamos que está todo bien instalado:
ffmpeg -version
Nos tiene que mostrar la versión, en este caso la 4.3.1, y las opciones de configuración --enable-mmal, --disable-debug y --enable-shared.
Por último reiniciamos la Raspberry:
sudo reboot
Instalación Attract Mode
Abrimos una conexión ssh y entramos de nuevo en RetroPie-Setup
cd ~; cd RetroPie-Setup
sudo ./retropie_setup.sh
Seleccionamos Manage Packages-->Manage Experimental Packages-->800 AttractMode:
Al pulsar aceptar elegimos la opción Install from pre-compiled binary y se acepta para iniciar la instalación. Al terminar, pulsamos back hasta volver al menú principal y elegimos Perform reboot.
Después de reiniciar, volvemos a abrir una conexión ssh a la Raspberry y ejecutamos lo siguiente:
nano menu.sh
Hacemos copy y paste del siguiente texto en el editor de texto abierto:
mkdir /home/pi/RetroPie/roms/setup
cat >> /home/pi/RetroPie/roms/setup/EmulationStation.sh << EOF
clear
echo "Switching default boot system to EmulationStation and rebooting"
echo ""
sed -i 's/attract/emulationstation/g' /opt/retropie/configs/all/autostart.sh
sudo reboot
EOF
cat >> /home/pi/RetroPie/retropiemenu/Attract-Mode.sh << EOF
echo "Switching default boot system to Attract-Mode and rebooting"
echo ""
sed -i 's/emulationstation/attract/g' /opt/retropie/configs/all/autostart.sh
sudo reboot
EOF
chmod +x /home/pi/RetroPie/retropiemenu/Attract-Mode.sh
echo "clear;echo loading Audio Settings Configuration;"sudo /home/pi/RetroPie-Setup/retropie_packages.sh retropiemenu launch /home/pi/RetroPie/retropiemenu/audiosettings.rp >> "/home/pi/RetroPie/roms/setup/Audio Settings.sh"
echo "clear;echo loading Bluetooth Configuration;"sudo /home/pi/RetroPie-Setup/retropie_packages.sh retropiemenu launch /home/pi/RetroPie/retropiemenu/bluetooth.rp >> /home/pi/RetroPie/roms/setup/Bluetooth.sh
echo "clear;echo loading Configuration Editor;"sudo /home/pi/RetroPie-Setup/retropie_packages.sh retropiemenu launch /home/pi/RetroPie/retropiemenu/configedit.rp >> "/home/pi/RetroPie/roms/setup/Configuration Editor.sh"
echo "clear;echo loading WiFi Configuration;"sudo /home/pi/RetroPie-Setup/retropie_packages.sh retropiemenu launch /home/pi/RetroPie/retropiemenu/wifi.rp >> "/home/pi/RetroPie/roms/setup/Configure Wifi.sh"
echo "clear;echo loading File Manager;"sudo /home/pi/RetroPie-Setup/retropie_packages.sh retropiemenu launch /home/pi/RetroPie/retropiemenu/filemanager.rp >> "/home/pi/RetroPie/roms/setup/File Manager.sh"
echo "clear;echo loading Raspberry Pi Configuration;"sudo /home/pi/RetroPie-Setup/retropie_packages.sh retropiemenu launch /home/pi/RetroPie/retropiemenu/raspiconfig.rp >> "/home/pi/RetroPie/roms/setup/Raspberry Pie Setup.sh"
echo "clear;echo rebooting;"sudo reboot >> /home/pi/RetroPie/roms/setup/Reboot.sh
echo "clear;echo loading RetroArch Configuration;"sudo /home/pi/RetroPie-Setup/retropie_packages.sh retropiemenu launch /home/pi/RetroPie/retropiemenu/retroarch.rp >> "/home/pi/RetroPie/roms/setup/Retroarch Setup.sh"
echo "clear;echo loading RetroArch Netplay Configuration;"sudo /home/pi/RetroPie-Setup/retropie_packages.sh retropiemenu launch /home/pi/RetroPie/retropiemenu/retronetplay.rp >> "/home/pi/RetroPie/roms/setup/Retroarch Netplay.sh"
echo "clear;echo loading RetroPie Configuration;"sudo /home/pi/RetroPie-Setup/retropie_packages.sh retropiemenu launch /home/pi/RetroPie/retropiemenu/rpsetup.rp >> "/home/pi/RetroPie/roms/setup/RetroPie Setup.sh"
echo "clear;echo loading RunCommand Configuration;"sudo /home/pi/RetroPie-Setup/retropie_packages.sh retropiemenu launch /home/pi/RetroPie/retropiemenu/runcommand.rp >> /home/pi/RetroPie/roms/setup/RunCommand.sh
echo "clear;echo finding IP Address;"sudo /home/pi/RetroPie-Setup/retropie_packages.sh retropiemenu launch /home/pi/RetroPie/retropiemenu/showip.rp >> "/home/pi/RetroPie/roms/setup/Show IP Address.sh"
echo "clear;echo powering off;"sudo poweroff >> /home/pi/RetroPie/roms/setup/Shutdown.sh
echo "clear;echo loading Splash Screen Configuration;"sudo /home/pi/RetroPie-Setup/retropie_packages.sh retropiemenu launch /home/pi/RetroPie/retropiemenu/splashscreen.rp >> "/home/pi/RetroPie/roms/setup/Splash Screen.sh"
sudo sh -c "echo '[attractmode]' >> /etc/samba/smb.conf"
sudo sh -c "echo 'comment = attractmode' >> /etc/samba/smb.conf"
sudo sh -c "echo 'path = \"/home/pi/.attract\"' >> /etc/samba/smb.conf"
sudo sh -c "echo 'writeable = yes' >> /etc/samba/smb.conf"
sudo sh -c "echo 'guest ok = yes' >> /etc/samba/smb.conf"
sudo sh -c "echo 'create mask = 0644' >> /etc/samba/smb.conf"
sudo sh -c "echo 'directory mask = 0755' >> /etc/samba/smb.conf"
sudo sh -c "echo 'force user = pi' >> /etc/samba/smb.conf"
mkdir /home/pi/RetroPie/roms/setup/box
mkdir /home/pi/RetroPie/roms/setup/cart
mkdir /home/pi/RetroPie/roms/setup/box
mkdir /home/pi/RetroPie/roms/setup/marquee
mkdir /home/pi/RetroPie/roms/setup/snap
mkdir /home/pi/RetroPie/roms/setup/video
mkdir /home/pi/RetroPie/roms/setup/wheel
cp /home/pi/RetroPie/retropiemenu/icons/audiosettings.png "/home/pi/RetroPie/roms/setup/snap/Audio Settings.png"
cp /home/pi/RetroPie/retropiemenu/icons/bluetooth.png /home/pi/RetroPie/roms/setup/snap/Bluetooth.png
cp /home/pi/RetroPie/retropiemenu/icons/configedit.png "/home/pi/RetroPie/roms/setup/snap/Configuration Editor.png"
cp /home/pi/RetroPie/retropiemenu/icons/wifi.png "/home/pi/RetroPie/roms/setup/snap/Configure Wifi.png"
cp /home/pi/RetroPie/retropiemenu/icons/filemanager.png "/home/pi/RetroPie/roms/setup/snap/File Manager.png"
cp /home/pi/RetroPie/retropiemenu/icons/raspiconfig.png "/home/pi/RetroPie/roms/setup/snap/Raspberry Pie Setup.png"
cp /home/pi/RetroPie/retropiemenu/icons/retroarch.png "/home/pi/RetroPie/roms/setup/snap/Retroarch Setup.png"
cp /home/pi/RetroPie/retropiemenu/icons/retronetplay.png "/home/pi/RetroPie/roms/setup/snap/Retroarch Netplay.png"
cp /home/pi/RetroPie/retropiemenu/icons/rpsetup.png "/home/pi/RetroPie/roms/setup/snap/RetroPie Setup.png"
cp /home/pi/RetroPie/retropiemenu/icons/runcommand.png /home/pi/RetroPie/roms/setup/snap/RunCommand.png
cp /home/pi/RetroPie/retropiemenu/icons/showip.png "/home/pi/RetroPie/roms/setup/snap/Show IP Address.png"
cp /home/pi/RetroPie/retropiemenu/icons/splashscreen.png "/home/pi/RetroPie/roms/setup/snap/Splash Screen.png"
chmod +x /home/pi/RetroPie/roms/setup/*.sh
wget http://attractmode.org/images/logo.png
mv logo.png /home/pi/RetroPie/retropiemenu/icons/Attract-Mode.png
wget https://assets.gitlab-static.net/uploads/-/system/project/avatar/2391891/es_raw.png
mv es_raw.png /home/pi/RetroPie/roms/setup/snap/EmulationStation.png
wget https://apprecs.org/gp/images/app-icons/300/0e/com.greatbytes.fastreboot.jpg
mv com.greatbytes.fastreboot.jpg /home/pi/RetroPie/roms/setup/snap/Reboot.png
wget https://icon-library.com/images/switch-off-icon/switch-off-icon-28.jpg
mv switch-off-icon-28.jpg /home/pi/RetroPie/roms/setup/snap/Shutdown.png
cat >> /home/pi/.attract/emulators/Setup.cfg << EOF
# Generated by Attract-Mode v2.5.1
#
executable /bin/bash
args "[romfilename]"
rompath /home/pi/RetroPie/roms/setup
romext .sh
system Setup
artwork box /home/pi/RetroPie/roms/setup/box
artwork cart /home/pi/RetroPie/roms/setup/cart
artwork flyer /home/pi/RetroPie/roms/setup/box
artwork marquee /home/pi/RetroPie/roms/setup/marquee
artwork snap /home/pi/RetroPie/roms/setup/video;/home/pi/RetroPie/roms/setup/snap
artwork wheel /home/pi/RetroPie/roms/setup/wheel
EOF
sed -i '/\<sound\>/i \display Setup' /home/pi/.attract/attract.cfg
sed -i '/\<sound\>/i \ layout Basic' /home/pi/.attract/attract.cfg
sed -i '/\<sound\>/i \ romlist Setup' /home/pi/.attract/attract.cfg
sed -i '/\<sound\>/i \ in_cycle yes' /home/pi/.attract/attract.cfg
sed -i '/\<sound\>/i \ in_menu yes' /home/pi/.attract/attract.cfg
sed -i '/\<sound\>/i \ filter all' /home/pi/.attract/attract.cfg
sed -i '/\<sound\>/i \ ' /home/pi/.attract/attract.cfg
sed -i 's/window_mode default/window_mode fullscreen/g' /home/pi/.attract/attract.cfg
attract -b Setup
sed -i '/<\<gameList\>>/a \ </game>' /opt/retropie/configs/all/emulationstation/gamelists/retropie/gamelist.xml
sed -i '/<\<gameList\>>/a \ <image>./icons/Attract-Mode.png</image>' /opt/retropie/configs/all/emulationstation/gamelists/retropie/gamelist.xml
sed -i '/<\<gameList\>>/a \ <desc>Change system boot to the Attract-Mode frontend and reboot.</desc>' /opt/retropie/configs/all/emulationstation/gamelists/retropie/gamelist.xml
sed -i '/<\<gameList\>>/a \ <name>Attract-Mode</name>' /opt/retropie/configs/all/emulationstation/gamelists/retropie/gamelist.xml
sed -i '/<\<gameList\>>/a \ <path>./Attract-Mode.sh</path>' /opt/retropie/configs/all/emulationstation/gamelists/retropie/gamelist.xml
sed -i '/<\<gameList\>>/a \ <game>' /opt/retropie/configs/all/emulationstation/gamelists/retropie/gamelist.xml
sudo reboot
Para guardarlo pulsamos ctrl+x y confirmamos que queremos guardarlo (y), saldrá el nombre del fichero y pulsamos la tecla enter para salir.
Al regresar a línea de comandos ejecutamos:
chmod +x menu.sh
./menu.sh
El script al ejecutarse realizará un reboot y al terminar, en EmulationStation-->RetroPie Configuration, nos saldrá la opción AttractMode. Al seleccionar AttractMode se reiniciará la Raspberry apareciendo en el arranque la interfaz básica de AttractMode con el menú Retropie, donde veremos opciones como configurar bluetooth, wifi, rapi-config, etc...
Pulsamos la tecla tabulador para ir al menú de configuración de AttractMode y elegimos la opción de menú Controls para configurar todos los botones del joystick y de esta forma no tener problemas en la navegación por los menús y temas de AttractMode.
Si las opciones del menú RetroPie no funcionan, por ejemplo, seleccionamos raspi-Config y no hace nada, entonces para arreglarlo, pulsamos tabulador y seleccionamos Emulators-->RetroPie, y editamos Command Arguments quitando la parte final: </dev/tty>/dev/tty.
Configurar la descodificación de vídeo con aceleración por HW y depuración del sonido
En AttractMode pulsamos la tecla tabulador para ir al menú de configuración, se elige la opción General-->Video Decoder, y seleccionamos mmal
Nota: las pantallas táctiles de 5 pulgadas, por un problema con el driver, no soporta la aceleración de hw de vídeo.
Para que el sonido funcione correctamente, tenemos que editar el fichero /boot/config.txt y descomentar la línea hdmi_drive=2:
sudo nano /boot/config.txt
Se busca en el fichero la entrada #hdmi_drive=2 y se quita el símbolo # para descomentarlo, dejándolo tal como se muestra en la imagen. Una vez hecho el cambio se guarda el fichero y se hace un reboot (sudo reboot)
Instalación de Robospin
En el siguiente enlace os podréis descargar el tema robospin:
Solo tenéis que pulsar el botón de color verde Code para descargaros el fichero .zip con el tema.
Una vez descargado el fichero .zip, se extrae el contenido en una carpeta que se llame robospin.
Con la aplicación WinSCP nos conectamos a la Raspberry, nos pedirá usuario y password (pi y raspberry) y al entrar nos encontramos una estructura de directorios:
Entramos en la carpeta .attract y luego en la carpeta layouts. Esta carpeta inicialmente está vacía, y aquí copiamos la carpeta robospin:
Para habilitar robospin como el layout a utilizar realizamos lo siguiente:
- En AttractMode pulsamos la tecla tabulador para entrar en el menú de configuración. Elegimos la opción Controls, seleccionamos Displays Menú-->Add input. Nos pedirá una nueva entrada y pulsamos la letra D del teclado. Para salirnos pulsamos back hasta llegar al menú de configuración.
- Entramos en General-->Startup Mode y seleccionamos con los cursores Show Displays Menu. Y regresamos al menú de configuración.
- En este mismo menú de General, en la opción Confirm Exit elegimos Yes, en Exit Command escribimos el comando sudo shutdown -h now, y en Exit Message escribimos Apagar Raspberry. Esto es opcional, pero si no lo hacemos, al salir de AttractMode se irá a línea de comandos, al ser una máquina retroarcade, lo que nos interesa es que al salir se apague la Raspberry. Si vas a trabajar directamente con el teclado y la Raspberry, deja esta configuración para cuando hayas terminado de configurar todo, ya que en el proceso de instalación se necesita ir varias veces a la línea de comandos para ejecutar distintas acciones de configuración.
- Por último elegimos Displays-->'Displays Menu' Options-->Menu Style/Layout y con los cursores elegimos robospin y pulsamos enter.
- En Layout Options-->Select BG art, elegimos el fondo blue. Existen múltiples opciones de configuración del layout robospin, solamente hay que entrar en esta opción y experimentar, pero ahora inicialmente solo configuramos el background art. Pulsamos back hasta salirnos del menú de configuración.
- Si no nos sale el tema de robospin, pulsamos la tecla D y ya nos debería salir el layout configurado.
A partir de este momento, cada vez que arranquemos, aparecerá este tema en el inicio.
Instalación del tema The Great Themes Collection v5.6
Instalarlo es muy sencillo, una vez que hayamos descomprimido el fichero que nos hemos descargado con WinSCP realizamos lo siguiente:
- Transferir el contenido que se encuentra en la carpeta layouts del fichero descargado al interior de la carpeta .attract/layouts.
- Se copian las carpetas sounds, videos y letters en la carpeta .attract.
Para seleccionar un tema para una máquina, por ejemplo, el ZX Spectrum, pulsamos la tecla tabulador del teclado, nos saldrá el menú de configuración y elegimos Displays-->ZX Spectrum-->Layout-->Sinclair ZX Spectrum.
Si en AttractMode abrimos ZX Spectrum, nos saldrá el layout seleccionado para este sistema sin configurar y sin ningún tipo de contenido. No os preocupéis, todavía nos queda bastante trabajo por delante.
Instalación skyscraper
Una vez instalado RetroPie, AttractMode y descargadas las ROMs de los sistemas o consolas de las que estamos interesados, el siguiente paso es descargarnos el contenido multimedia con las carátulas de las carcasas de los cassettes, los vídeos con las previsualizaciones de los juegos, los wheels de los títulos para verlos en el menú de selección, etc...
El contenido multimedia que nos podemos descargar es:
Para descargarse todo este media se necesita un scraper, existen varias alternativas, para mí los dos mejores son Skyscraper que lo podemos encontrar como un paquete adicional o experimental en el setup de RetroPie, o la aplicación para PC Skraper de Screenscraper. En esta configuración voy a utilizar Skyscraper, ya que no quiero emplear elementos externos, como es el PC, y de esta forma hago toda la configuración en la propia Raspberry Pi.
Para instalar Skyscraper, en la línea de comandos de la Raspberry Pi, en el directorio $HOME/RetroPie-Setup, ejecutamos el script retropie_setup.sh.
Ejecutar:
cd $HOME/RetroPie-Setup
sudo ./retropie_setup.sh
O entramos por el menú de Retropie en AttractMode y elegimos Retropie Setup.
Elegimos la opción Manage packages-->Manage optional packages y seleccionamos Skyscraper.
Nota: si no encontramos Skyscraper en los optional packages, estará posiblemente en los experimental packages. Pulsamos aceptar y elegimos install from pre-compiled binary. Al terminar la instalación regresamos al menú principal y elegimos la opción Perform reboot para reiniciar.
Copiar ROMs
Antes de hacer el scraping, nos hace falta tener las ROMs de los juegos descargadas en la Raspberry. Para transferir los ficheros a la Raspberry utilizaremos de nuevo el programa WinSCP. En la carpeta $HOME/RetroPie/roms se encuentran todos los directorios de las máquinas emuladas, por ejemplo, si queremos transferir las ROMs del ZX Spectrum a la Rapsberry estas se tienen que copiar en la carpeta $HOME/RetroPie/roms/zxspectrum.
Por lo general los juegos vienen en ficheros .zip, que no es necesario descomprimir, y se copian tal cual a la Raspberry.
Scraping de contenido multimedia
Una vez instalado Skyscraper y transferidas las ROMs a la Raspberry, dentro de RetroPie-Setup existe un menú con todas las opciones para ejecutar Skyscraper, pero solo es válido para EmulationStation y no para AttractMode, en nuestro caso no lo vamos a utilizar ya que nuestro frontend favorito va a ser AttractMode.
Para realizar el scraping no tenemos más remedio que hacerlo por línea de comandos, por lo que nos conectamos con nuestro cliente SSH favorito a la Raspberry.
Una vez que estemos conectados, lo primero que vamos a hacer es crear un enlace simbólico al ejecutable de Skyscraper, de esta forma se puede ejecutar desde cualquier sitio sin tener que poner el path de donde se encuentra.
Ejecutar:
sudo ln -s /opt/retropie/supplementary/skyscraper/Skyscraper /usr/local/bin/Skyscraper
Existen multiples sitios en internet donde está todo el contenido multimedia que queremos descargar, algunos de los soportados por Skyscraper son:
- Screenscraper: Para mí el mejor y más completo, es preferible registrarse en su página web (www.screenscraper.fr) y el contenido multimedia que soporta son: cover, screenshot, wheel, marquee y vídeo.
- TheGamesDB: Soporta cover, screenshot, Wheel y marquee. El problema de este sitio es que está limitado a 3000 invocaciones del API al mes y no contiene los vídeos para previsualizar los juegos.
- ArcadeDB: Soporta todos los formatos, pero es solo para juegos arcade del Mame y muy posiblemente el mejor sitio de contenido multimedia de los juegos arcade.
- OpenRetro: Soporta cover, screenshot y marquee y muy recomendable para hacer scraping de los juegos de Commodore Amiga.
- World of Spectrum: Soporta cover y screenshot, y como el nombre del sitio indica, es solo válido para juegos de ZX Spectrum.
La lista completa con todos los sitios soportados por Skyscraper la podemos encontrar en su guía de uso:
Antes de descargarnos el contenido multimedia, tenemos que preparar cómo queremos visualizar las carcasas, los títulos, screenshots, etc... de las ROMs del sistema que queremos visualizar en AttractMode. Por ejemplo, podemos empezar con el ZX Spectrum. Para esto tenemos que editar el fichero artwork.xml que se encuentra en el directorio $HOME/.skyscraper. Este artwork es común para todos los sistemas, por lo que si queremos algo especial para un sistema en concreto lo tendremos que editar antes de ejecutar el programa Skyscraper.
Existe un artwork.xml por defecto, que compone un screenshot, con el propio screenshot, el Wheel y una caja de juego en 3D compuesto con el Wheel y el cover. En mi caso quiero dejar todos los ficheros igual que el original menos el cover que quiero visualizarlo en 3D, el original es en 2D, para que aparezca la caja del juego en AttractMode:
<?xml version="1.0" encoding="UTF-8"?>
<!-- This is the default artwork.xml provided by Skyscraper. More examples can be found in '~/.skyscraper'. Be sure to check the full artwork documentation here: https://github.com/muldjord/skyscraper/blob/master/docs/ARTWORK.md -->
<artwork>
<output type="screenshot" resource="screenshot"/>
<output type="wheel" resource="wheel"/>
<output type="marquee" resource="marquee"/>
<output type="cover" resource="cover">
<layer resource="cover">
<gamebox side="wheel" rotate="90"/>
<shadow distance="5" softness="5" opacity="70"/>
</layer>
</output>
</artwork>
En el mismo directorio de .skyscraper se encuentra el fichero config.ini que tenemos que editar para habilitar las siguientes opciones desactivadas en la sección [main]:
mediaFolder="/home/pi/RetroPie/roms"
videos="true"
Por último en AttracMode, pulsamos tabulador, nos sale el menú de configuración, seleccionamos Emulators-->ZX Spectrum--> y en snap pulsamos enter. Nos saldrá una nueva pantalla y editamos Artwork Path cambiando el contenido a:
/home/pi/RetroPie/roms/zxspectrum/video
Volvemos para atrás seleccionando back, hasta el menú Edit Emulator, y añadimos un nuevo artwork para que se muestren las cajas de los casetes de los juegos seleccionando Add Arwork:
- Artwork Label: Escribimos boxart
- Artwork Path: Escribimos /home/pi/RetroPie/roms/zxspectrum/flyer
Volvemos hacia atrás hasta salirnos del menú de configuración.
Una vez que esté todo listo, se ejecuta el programa Skyscraper para empezar a descargarnos el media del sistema ZX Spectrum, ejecutamos el siguiente programa:
Skyscraper -p zxspectrum -f attractmode -e "ZX Spectrum" -s screenscraper -u Nombre_Usuario:Password --flags videos
Los parámetros son:
-p: indicamos la plataforma y este tiene que ser el mismo nombre que aparece en el directorio $HOME/RetroPie/roms. Por ejemplo, para ZX Spectrum, en el directorio de roms aparece el nombre zxspectrum, que es el que tenemos que utilizar junto a éste parámetro.
-f: Skyscraper si no indicamos nada se descargará todo el media para EmulationStation, pero como en este caso queremos que sea para AttractMode tenemos que indicarlo con este parámetro.
-e: se indica el nombre del emulador, este tiene que ser exactamente el mismo nombre del fichero de configuración de la plataforma que aparece en el directorio $HOME/.attract/emulators. Es decir, que si el fichero de configuración del ZX Spectrum es 'ZX Spectrum.cfg', el nombre que tenemos que pasar en este parámetro para hacer el scraping de esta plataforma, sería "ZX Spectrum". De la misma forma, si queremos hacer scraping de Atari 2600, si el fichero de configuración es 'Atari 2600.cfg', el nombre que hay que utilizar es "Atari 2600".
-s: Se indica el nombre del servidor que vamos a utilizar para la descarga, en este caso screenscraper.
-u: Para descargarnos todo el media del Screen Scraper se necesita un usuario y password, para esto hay que registrarse previamente en la web www.screenscraper.fr.
--flags videos: Por defecto no se descargan los vídeos con los resúmenes de los juegos, pero si queremos descargarlos hay que utilizar este parámetro.
Al ejecutarlo nos sale la siguiente pantalla:
Tenemos que responder a las preguntas que nos va haciendo, la letra en mayúscula es la respuesta por defecto:
Una vez que empieza a descargarse el contenido multimedia, el tiempo que tarde depende del número de ROMs, por lo que recomiendo hacer una preselección antes, y si no, pues armarnos de paciencia ya que unas 4000 ROMs puede tardar en torno a las 4 horas.
Según se va descargando el contenido nos muestra en pantalla por cada ROM qué es lo que se está descargando.
Cuando termine la ejecución, hay que ejecutar el siguiente comando para que se vuelquen a directorio los ficheros que se han guardado en caché. Esta ejecución será más rápida, solo necesitará unos pocos minutos, debido a que no se tiene que descargar ningún fichero más de Internet.
Skyscraper -p zxspectrum -f attractmode -e "ZX Spectrum"
Para comprobar que finalmente se ha volcado todo el contenido multimedia, entramos el directorio $HOME/RetroPie/roms/zxspectrum y ejecutamos el comando ls -lart, si aparecen las carpetas wheel, video, marquee y flyer, y al entrar en estas están los ficheros de los juegos esto quiere decir que sí ha funcionado el volcado.
Completado todo, ya solo queda comprobar como ha quedado entrando en ZX Spectrum en AttractMode, mostrándonos una pantalla tipo old school, donde a la derecha podemos ver un spin con los wheels de los juegos, una TV antigua con el vídeo, el nombre del juego y la fecha de comercialización, y la caja del cassette:
Puede que haya contenido multimedia que no se haya descargado por lo que es recomendable, en el caso de ZX Spectrum, volver hacer scraping utilizando esta vez el servidor thegamesdb:
Skyscraper -p zxspectrum -f attractmode -e "ZX Spectrum" -s thegamesdb --flags videos
Comentar que Skyscraper guarde en caché todo el media descargado, tiene ventajas e inconvenientes, la ventaja principal es que si queremos modificar el artwork.xml para mostrar las imágenes con una composición más elaborada incluyendo distintos layers, no hace falta descargarse de nuevo todo el contenido multimedia, ya que utilizará el que ya se dispone en caché, pero obviamente esto tiene un precio, y es que se utiliza el doble de espacio, siendo esto un inconveniente si el espacio disponible en la tarjeta sd es escaso.
Scraping de nuevos juegos
Si posteriormente queremos añadir nuevos juegos, simplemente con el programa WinSCP los transferimos a la Raspberry, y ejecutamos de nuevo Skyscraper para bajarnos el contenido multimedia desde Internet:
Skyscraper -p zxspectrum -f attractmode -e "ZX Spectrum" -s screenscraper -u Nombre_Usuario:Password --flags videos
Cuando nos pregunten "Do you want to skip already existing game list entries (y/N)?" respondemos con y, ya que solo queremos que se descargue el contenido multimedia de los nuevos juegos que hemos añadido. Por ejemplo, añado el juego Alien Storm y solo se hace el scraping de este fichero:
Por último ejecutamos el siguiente comando para volcar los ficheros de la caché a los directorios con contenido multimedia:
Skyscraper -p zxspectrum -f attractmode -e "ZX Spectrum"
En este caso nos realizará dos preguntas, una por si queremos sobrescribir el fichero con las ROMs que ya se ha hecho el scraping, y si no queremos hacer scraping de las roms existentes, a las dos preguntas le respondemos que sí (y):
Configurar el emulador lr-fuse para ZX Spectrum
Por defecto, el emulador que viene instalado para el ZX Spectrum es el lr-fuse, aunque se puede instalar otro, vamos a ver la configuración de este emulador que aunque básico, nos puede valer.
Los formatos que soporta son:
sna .szx .z80 .tap .tzx .gz .udi .mgt .img .trd .scl .dsk
Para poder utilizar el joystick hay que introducir la siguiente línea en el fichero de configuración /opt/retropie/configs/zxspectrum/retroarch.cfg, para configurarlo como kempstom joystick:
input_libretro_device_p1 = "513"
Al entrar en el juego, podemos utilizar el teclado embebido en pantalla pulsando la tecla hotkey, en mi caso select, del mando. Con este teclado podemos seleccionar las distintas opciones de menú del un juego.
Con los botones L1 y R1 del joystick se simulan dos teclas importantes, con L1 la tecla Enter y con R1 la tecla espacio, esto es muy útil ya que hay juegos que tienen dos botones de disparo, y por lo general el segundo botón es la tecla de espacio, o si queremos salirnos de la pantalla de carga, puslamos L1 (enter) para acceder al menú del juego.
Si dentro del juego pulsamos los botones del joystick Hotkey+X, en mi caso el botón Select+botón X, nos sale el menú de configuración de Retroarch.
El menú de Retroarch tiene muchas opciones de configuración, por ejemplo, en Options podemos elegir el Spectrum en el que queramos ejecutar la ROM, por defecto es el Spectrum 128K (toastrack), si queremos redefinir los botones y mapearlo a una tecla del teclado lo hacemos en joypad mapping, el tiempo de respuesta de las teclas, y otras múltiples opciones de configuración para hacernos sentir más a gusto a la hora de jugar a nuestro juego favorito.
Si sois de teclas de toda la vida, os recomiendo que en lugar de utilizar este emulador, instaléis desde retropie_setup.sh el emulador Fuse.
Configurar el menú de inicio
El menú de inicio lo tenemos configurado con el tema de robospin, pero en el wheel de las máquinas en lugar de aparecer el logo aparecen interrogaciones u otros iconos indicando que el sistema no tiene un logo asociado.
Para solventar esto no podemos utilizar Skyscraper, ya que solo sirve para descargar el contenido multimedia de las ROMs, por lo que tendremos que buscar en internet los logos y ponerlos a mano.
Podríamos descargarnos los logos de las máquinas desde Internet, pero hay un layout que instalamos con The Great Themes, que tiene un directorio systems con varios logos de máquinas:
$HOME/.attract/layouts/Nintendo Entertainment System - Lava/systems
Tan solo hay que copiar el logo del sistema a visualizar, en nuestro caso ZX Spectrum.jpg con el nombre exacto que nos aparece en AttractMode para poder visualizarlo. En este caso coincide el nombre del fichero ´ZX Spectrum'.jpg con el nombre del sistema 'ZX Spectrum'. Para tener ya todos los logos, copiamos todos los ficheros al directorio wheel del directorio de AttracMode menu-art:
cp $HOME/.attract/layouts/'Nintendo Entertainment System - Lava'/systems/* $HOME/.attract/menu-art/wheel
Para que los cambios queden reflejados, nos salimos de AttracMode y volvemos a entrar de nuevo. (Si salimos a línea de comandos, para volver a entrar, se ejecuta el comando attract)
Al realizar la copia, se copian tanto archivos .jpg como .png, para el ZX Spectrum hay dos ficheros, uno .jpg y otro .png, se nos mostrará el .jpg, pero si queremos ver el png, tan solo hay que renombrar el .jpg, para que tenga un nombre distinto a 'ZX Spectrum' y se mostraría el que tiene extensión .png.
El archivo 'ZX Spectrum.png' lo copiamos al directorio $HOME/.attract/main-art/marquee. Y en mi caso, he cogido el vídeo del juego Target Renegade, y lo he copiado a la carpeta $HOME/.attract/main-art/snap renombrándolo a 'ZX Spectrum.mp4', de esta forma al salir y volver a entrar en AttractMode, me sale el siguiente contenido con el tema robospin:
Otros ajustes
Si hay juegos que, después de ejecutar Skyscraper, no se ha descargado algún contenido multimedia, por lo general siempre son algún logo o vídeo del juego, en EMUMOVIES podemos buscar y descargar los logos, vídeos o cualquier otro contenido que nos falte.
Al tener que hacer, en este caso, la configuración manualmente, con el programa WinSCP transferimos a la Raspberry los ficheros que nos hemos descargado de Emumovies. Por ejemplo, si nos ha faltado un logo de algún juego, copiamos éste al directorio $HOME/RetroPie/roms/zxspectrum/wheel. Una vez transferido, con el propio porgrama WinSCP, vamos a directorio anterior ($HOME/RetroPie/roms/zxspectrum/) en el explorador de archivos buscamos el nombre del juego, y copiamos el nombre de éste sin la extensión, luego regresamos de nuevo a la carpeta wheel, buscamos el nombre del png que transferimos, y le cambiamos el nombre, haciendo paste, para que de esta forma tenga exactamente el mismo nombre que la ROM, ya que para que aparezca en AttractMode es necesario que el nombre se exactamente el mismo.
Si tenemos muchos juegos, recorrerse toda la lista para llegar al juego que queremos jugar nos puede llevar un tiempo, para evitar esto, podemos activar la búsqueda por teclado. Para hacer esto, en AttractMode pulsamos la tecla tabulador, nos saldrá el menú de configuración, seleccionamos Plug-ins, y activamos el plugin keyboardSearch. Al entrar dentro, cambiamos enabled a yes, y la opción Trigger, que indica el botón que tenemos que pulsar para poder realizar la búsqueda, el valor que tiene es Custome1, por lo que hay que ir a configurarlo al menú de configuración de AttractMode-->Controls. En mi caso el botón Custome1 lo he asociado a la tecla S del teclado, por lo que si en algún momento dado quiero realizar una búsqueda, pulso la tecla S, y me saldrá una ventana para introducir un texto de búsqueda, que puede ser solamente la inicial del juego o cualquier texto que pueda estar contenido dentro del título del juego.
El tema The Great themes Collection es muy configurable, y tiene múltiples opciones para cambiar la interfaz gráfica y así dejarla totalmente a nuestro gusto, os dejo los siguientes links de youtube con varias demos de uso y configuración de este tema para AttractMode
¡A jugar...!
Después de todo el trabajo realizado, es obligado echarse unas partidas con nuestro emulador favorito. Pero sin relajarse demasiado, porque hay mucho trabajo por hacer y son muchos los emuladores que hay que configurar. Lo ideal sería configurarse los emuladores que realmente vayamos a utilizar y eliminar de AttractMode los que no nos interesen.
Este tutorial la configuración de AttractMode se ha realizado para la máquina ZX Spectrum, pero el procedimiento es el mismo para cualquier otro emulador de Amstrad CPC, Commodore 64, Commodore Amiga, MAME, consolas, etc... Eso sí, cuantos más emuladores tengamos más ROMs de juegos tendremos y por lo tanto se necesitará más espacio en la tarjeta de memoria, por este motivo, si uno es ambicioso y quiere tenerlo todo, necesitará una tarjeta de memoria con un gran tamaño de almacenamiento, pero si eres de los que se conforma con tener solo las máquinas ochenteras de 8 bits, posiblemente la tarjeta de memoria de 32GB sea más que suficiente.
Ya por último, y como recomendación, para apreciar mejor todo este entorno gráfico de AttractMode, donde mejor va es en una tele grande. La Raspberry la tengo conectada a una tele LCD de 40 pulgadas, y solo puedo decir que la calidad de imagen es impresionante, el entorno de AttractMode llena toda la pantalla, y es aquí donde realmente se pone en valor nuestra máquina retroarcade.
D.R Spectrum
Muy bien explicado y documentado, es lo suyo tener una Raspberry para tener todos nuestros "cacharrejos" en 1 :D
ResponderEliminarGracias, es una opción muy digna para dejar descansar por un rato a nuestros ya ancianos equipos.
Eliminar