Buenas tardes.
Desde mi humilde (y frío trastero) os traigo mi nuevo proyecto árcade. Estoy en proceso de construir mi propio cabinet y de momento ando experimentando en distintas áreas. como la Pandora Box, de la que compartí la imagen RetroPan. Ahora toca el turno a la distro GroovyArcade. Una distribución linux destinada a convertir nuestro PC en el "cerebro" de un cabinet.
El tema del GroovyArcade es que no trae por defecto el RetroArch, que para mi "ahora mismo" es la mejor alternativa para la emulación. Aquí os pongo un tutorial de como conseguí aunar GroovyArcade y RetroArch consiguiendo una resolución pixel perfect en monitores CRT. Podría hacerse en monitores LCD, pero ahora mismo no está entre mis metas.
El equipo del que parto es modesto pero suficiente para emular árcades y consolas de los 80/90:
Core2Duo E8400
4GB Ram
ATI Radeon 4350
HDD SATA 1TB
Todos mis avances también los publico en un foro destinado al mundo árcade, por si alguna vez quereis visitarnos:
https://arcadeforever.forumfree.it/?t=76311512&st=0#entry627942332Me ha dado muchos dolores de cabeza instalar del USB Bootable a HDD en resolución para LCD. Al final opté por hacer la instalación y configuración arrancando en modo 15khz. De hecho podéis conectarla por VGA a un monitor LCD ya que se vera mejor que en el CRT, pero con un efecto gelatina.
Bien, una vez tenemos instalado GroovyArcade en el disco duro, arrancamos desde el mismo y elegimos como FrontEnd LXDE. Es un escritorio muy básico para la distro ArchLinux que monta pero nos sirve de sobra.
Inmediatamente después vamos al setup de Network y seleccionamos la interfaz que vamos a utilizar, le decimos que la configure con dhcp. Muy importante hacer esto o no tendremos red. Más adelante explico como evitar hacer esto y tener red siempre que iniciamos.
Lo primero de todo, y de forma urgente, desde el terminal lanzamos el comando:
$sudo pcmanfmEsto nos abre el navegador de ficheros en modo root (ojo con liarla) editamos el fichero <b>/etc/pacman.conf</b>. Tendremos que descomentar la linea que indica IgnorePkg = (quitando la almohadilla) y debemos indicarle lo siguiente:
IgnorePkg = linuxEsto es muy importante, ya que en un paso posterior actualizaremos el sistema y esto evitará que modifique el kernel. Si lo modifica... adiós 15khz
Vale, ahora nos vamos a asegurar tener red cada vez que arranquemos el sistema. En el terminal debemos poner:
$sudo systemctl start dhcpcd@eth0.serviceEsto hace que el servicio de dhcp se active en cada inicio. Claro está, siempre que tengamos una ip dinámica y que el puerto de red sea eth0. En caso de tener el eth1 o el wlan0 lo cambiamos por eth0 en el comando y listo.
Ahora vamos a instalar las dependencias necesarias para el RetroArch, en el terminal deberemos poner:
$sudo pacman -Sy qt5-baseAceptamos todo lo que nos pregunte... y esperamos que descargue e instale.
Ahora vamos con el tema "jodido", actualizar el sistema y no cargarnos el kernel. Por lo que si hemos modificado el pacman.conf tendremos mucho ganado. Ponemos en consola:
$sudo pacman -SyuNos hará algunas preguntas y le diremos yes, salvo en la que sale después de un warning (el que hemos creado nosotros) indicando que si queremos sustituir el pkg, en esa respondemos <b>no</b>.
Cuando nos pregunte de donde coge los paquetes nos da 2 opciones, una que pone algo de lib32 y otra que pone nvidia. Ponemos la 1 que es la de lib32. No creo que importe usar una u otra... pero por si las moscas.
Pues nada a esperar un ratito que descargue e instale todos los paquetes de la distro.
Una vez termine procedemos a instalar el RetroArch, en el terminal ponemos:
$sudo pacman -Sy retroarchUna vez termine en el apartado Games aparece el RetroArch. Podemos lanzarlo por consola:
$retroarchDebería salirnos su interfaz xbmc pero sin iconos, cerramos.
Vamos a (habilitar en el navegador de archivos ver los archivos ocultos) /home/arcade/.config/retroarch y editamos el retroarch.cfg. Cualquier ruta que exista del tipo "/usr/..." no nos vale.
Por ejemplo si tenemos la ruta:
/usr/share/retroarch/assets
La cambiamos por
~/config/retroarch/assets
Como veis sólo cambiamos la parte /usr/share/ por ~/config/
Ya que estamos con la configuración del retroarch buscamos el siguiente parametro: menu_show_core_updater, que estará a false y lo ponemos en true.
Volvemos a lanzar retroarch:
$retroarchUna vez abierto vamos a online updater y seleccionamos update assets, con esto ya tenemos iconos. Luego en core updater podemos descargar todos los que vayamos a necesitar. Yo en mi caso estoy con el fbalpha.
Pues ya tenemos retroarch medio funcionando, podemos ir a /home/roms y meter las roms en su carpeta correspondiente, o en el caso de FBA debemos crearla primero.
Ahora queda el tema del attract mode, que gracias a la actualización... a muerto
. Pero podemos rescatarlo. Desde la página oficial descargamos la ultima versión para linux (va empaquetada en un tar.gz) y la descomprimimos. Supongamos que hemos hecho todo en la carpeta /home/arcade/Downloads. Para su instalación haremos lo siguiente:
$cd Downloads/attract-2.5.1
$makeEsperamos un rato a que termine de compilar
$sudo make installYa tenemos el attract de regreso entre los muertos, pero aún nos quedan algunas cosillas. En la carpeta de /home/arcade/Downloads/attract-2.5.1 existe una carpeta llamada config, copiamos todo menos la carpeta emulator y los 3 archivos .cfg y pegamos, sustituyendo, en /home/arcade/.attract. Ahora si tenemos nuestro flamante FrontEnd actualizado. Yo por mi parte le he metido el theme Nevato.
Ahora debemos configurar el funcionamiento del attract. Lo primero es editar el fichero de configuración de /home/arcade/.attract/attract.cfg y ver que el emulador/es que nos interesan se muestran. En mi caso, al usar FBA, no hay entrada por lo tanto creo una copiando la de mame y en display y romlist le meto FBA.
Con eso ya sabe que queremos mostrar un nuevo emulador, pero necesitamos poder lanzar nuestras roms, para eso vamos a /home/arcade/.attract/emulators y editamos la configuración del emulador que queramos. En mi caso copié el fichero MAME.cfg renombrandolo a FBA.cfg y haciendo los siguientes cambios:
En executable puse retroarch
En args puse -L /home/arcade/.config/retroarch/cores/fbalpha_libretro.so /home/roms/FBA/roms/[name]Este argumento indica donde tenemos el core a lanzar (debe coincidir con la ruta que tenemos configurada en retroarch) y la ruta donde están localizadas las roms, [mame] es una variable que mantiene el nombre de la rom seleccionada.
En rompath puse /home/roms/FBA/romsCon esto podremos lanzar desde atrract nuestras roms con los cores de retroarch... pero estamos aún lejos de tener el pixel perfect. Para ello debemos hacer algunos cambios más.
Lo primero debemos ir al fichero de configuración de retroarch /home/arcade/.config/retroarch/retroarch.cfg y buscar el siguiente parámetro:
crt_switch_resolution, mostrará un 0, lo cambiamos por 1. Nos fijamos que en
crt_swith_resolution_super muestra 2560. Esta es la máxima resolución que podrán adquirir nuestras roms en horizontal. Esto se realiza con el fin de poder usar multiplicadores enteros, con lo que no obtenemos artefactos al reescalar las roms de modo que completen la pantalla. Normalmente la relación vertical/horizontal suele ser 1/6.
Si lanzamos ahora una rom en relación de aspecto ponemos custom, integer scale lo ponemos en false y, si sabemos la resolución original la indicamos. En caso contrario nos tocará movernos viendo buscando que, entre paréntesis, muestre un numero entero de multiplicador. Eso significa que estamos en pixel perfect. En super resolución, si ponéis la horizontal a una escala 1, tendréis una imagen totalmente concentrada en el centro. Debéis empezar con multiplicadores 6.
Y lo que hago es buscar la resolución original del juego, ponerla en la vertical y en la horizontal multiplicarla por 6 y ponerla.
Vale, pues ya estamos jugando con nuestra rom en pixel perfect. Vamos a cambiar de juego... damos a esc y el sistema se bloquea. Efectivamente no se "sobrepone" a la super resolución y las X se tildan. Hay dos maneras de recuperarnos de este susto: botonazo, o usar ctrl+alt+F2 donde abriremos otra consola y podemos poner:
$reboot
Una vez reiniciados ponemos comos FrontEnd el LXDE que aún nos faltan unos ajustes para evitar el desastre. He creado un plug-in que arregla el problema. Desde mi google drive podéis descargarlo:
ResetSreenEs el fichero ResetScreen.nut. Copiáis el fichero en la carpeta /home/arcade/.attract/plugins e inicias el attrac. Os vais a la configuración y activáis el plug-in ResetScreen (dejar en blanco el apartado emuladores y actuará en todos). Desactivar el Plug-in Res-Fix, porque no sirve para este problema y ambos chocan. Si tenéis un plug-in llamado HardReset (es en el que me baso), desactivarlo también; tampoco funciona y ambos chocan.
Bueno. Pues ya sólo queda poner el attract como FrontEnd por defecto y disfrutar de vuestro árcade pixel perfect
. En cuando tenga un rato os subo unas fotos.
Por cierto, esto ahora mismo no está finalizado. Queda pendiente:
- Crear una configuración personalizada por rom, para no andar jugando con el reescalado. Sino que la cargue correctamente en el inicio.
- Juegos verticales... chungo lo veo salvo poniendo de lado el monitor. Todas las pruebas que he hecho o pierdo pantalla o el escalado queda feo y se pierde el pixel perfect.
Me quedarían los agradecimientos, pero han sido tantas páginas las que he visto, tantos vídeos, tanto darme cabezazos... que sólo puedo agradecerle a Xtob su recomendación de usar GroovyArcade... y a toda la gente que aporta información de forma desinteresada en la red.
Cualquier opinión/aportación será bienvenida.
Un saludo.
Vídeo con la demo de uso:
Imágenes: