Si bien en internet van a encontrar muchos tutoriales al respecto, voy a dejarles un tutorial basado en mi experiencia por si se embarcan en este proyecto, que para mí es maravilloso. Va a ser súper básico porque todos los detalles se encuentran fácilmente, y ante cualquier duda, se consulta. Básicamente, con una Raspberry Pi (RPi) y unos controladores pueden fabricar en poco tiempo un dispositivo multiemulador de todo tipo de consolas clásicas utilizando el proyecto RetroPie. Este proyecto es la adaptación del frontend EmulationStation (ES a partir de ahora) con diferentes emuladores de forma de hacerlo compatible y optimizado en una RPi. Esto significa que técnicamente pueden hacer una máquina como esta con cualquier dispositivo linux. La ventaja de la RPi es que viene de fábrica con la salida para TV (para poder ver los juegos en su display original), y su tamaño es perfecto para armar una consolita multiuso transportable. Necesitan: - Una PC con Windows (obviamente hay alternativas!), - Una Raspberry Pi, - Una fuente microUSB tipo celu pero preferentemente que tire arriba de 1A (mientras más cosas conectemos a la Pi, más corriente necesita; un cargador de celu de 700mA me está alcanzando para un sólo joy, pero asumo que para uno más me va a quedar corto), - Una memoria SD, mientras más grande y rápida mejor, - Joysticks USB, - La imagen de RetroPie que bajan de la página, - Conección a internet vía ethernet, en red con la PC preferiblemente, y - Teclado y mouse USB. Primero: Instalar RetroPie en la nuestra RPi Para esto usamos la aplicación Win32DiskImager, que es bastante intuitiva. Sirve para copiar la imagen de RetroPie a la SD. Una vez hecho esto ya podemos arrancar la Pi. Insertamos la SD y conectamos joystick, mouse y teclado a la Pi, y luego le damos corriente. En el primer boot, el sistema reconocerá que tenemos un joystick conectado y nos pedirá que lo configuremos para navegar los menúes del frontend. Lo hacemos como queremos teniendo en cuenta que esto nada tiene que ver con la configuración de los controles para jugar dentro de los emuladores. Segundo: Actualizar todo! Lo segundo que vamos a hacer es actualizar tanto el sistema operativo como RetroPie y su paquete de emuladores RetroArch. En principio, se me ocurre que esto no sería obligatorio, ya que el sistema debiera andar así como viene, pero no está de más. Además en la actualización van a aparecer algunos emuladores que de otra forma no estarían disponibles. Además, lo hacemos una vez, y hasta que nada nos lo requiera, no lo hacemos más. Para esto debemos primero salir a la línea de comando presionando F4, lo cual cerrará ES. Una vez en la línea de comandos vamos a configurar algunas cosas. Lo primero será expandir la capacidad del SO para que utilice todo el espacio de la tarjeta SD. Para ello ingresaremos Código: sudo raspi-config lo que nos llevará a un menú donde la primera opción, según recuerdo, es la que nos permite expandir el sistema de archivos. Salimos del menú y reiniciamos, utilizando el comando Código: sudo reboot Lo siguiente será actualizar el SO. Para ello, utilizaremos el procedimiento que todo aquél acostumbrado a Linux conoce. Desde la línea de comando Código: sudo apt-get update sudo apt-get upgrade Estas dos operaciones van a llevar un buen ratito, así que no se desesperen. Al finalizar, reinicien, por si las moscas. Una vez actualizado el SO, vamos a actualizar RetroPie y sus componentes. Para ello, desde la línea de comandos vamos a ingresar: Código: cd RetroPie-Setup sudo ./retropie_setup.sh Esto ejecutará el script de administración de RetroPie. Posee muchas opciones y algunas de ellas no tengo la más puta idea de para qué sirven. Una de las opciones es la de actualizar el sistema, o los componentes que deseemos, desde los source. Esto es lo que nos permitirá tener las últimas actualizaciones de todos los emuladores, pero lleva MUCHÍSIMO TIEMPO (dependiendo de los componentes seleccionados, arriba de 10 horas), fuera de joda. Así que lo que vamos a hacer es: OPCIÓN 1: Instalar desde los binaries del proyecto, que no necesariamente son los últimos pero nos alcanza y sobra. Para eso vamos a seleccionar primero la opción 4 (para actualizar el script en sí), vamos a reiniciar el script saliendo y volviendo a ejecutarlo, y luego vamos a utilizar la opción 5 (para actualizar los binaries). Esto va a tomar otro buen ratito, así que calma. Una vez terminado este paso, vamos a rebootear. OPCIÓN 2: Si bajaron la última imagen disponible, y no pretenden usar más que algunos emuladores específicos, lo que podemos hacer es realizar una actualización específica desde los source. Para esto, primero actualicen el script con la opción 4, y luego entren en la opción correspondiente para la instalación desde source. Aquí debemos seleccionar SOLAMENTE las opciones que deseamos instalar, ya sean actualizaciones de sistema, de emuladores u otras cosas que nos interesen. Es muy importante que además de seleccionar los ítems deseados también tildemos la opción (una de las últimas; se me escapa el texto ahora) de configurar EmulationStation para incluir los emuladores nuevos (esto genera un archivo de configuración actualizado; más tarde nos ocuparemos de él). Al dar OK comenzará la instalación que tomará un tiempo considerable dependiendo de los componentes que seleccionaron. Esto se debe a que al instalar desde sources se deben descargar y luego compilar. Este es un excelente momento para hacer un backup de nuestro RetroPie. Para eso, vamos a utilizar el Win32DiskImager pero a la inversa, para crear una imagen de la SD por si nos metemos en problemas más tarde. La imagen va a ocupar tanto como la SD, tenga o no archivos. Lo siento mucho... peeeero, la comprimimos bien con WinRAR y no debiera ocupar más que el tamaño real ocupado por el sistema y ROMs. Tercero: Meter ROMs Los emuladores no se van a ver en el frontend a menos que tengan ROMs o juegos para correr. Para meter ROMs, lo que vamos a hacer es transferirlas desde la PC. Para eso necesitamos saber la dirección ip de la Pi, lo cual podremos determinar ejecutando desde la línea de comandos Código: ifconfig y tomando nota de la internet address. Con esa ip podremos acceder a la Pi desde la PC utilizando la dirección en el explorador (\\xxx.xxx.x.xxx). Cuando ingresemos veremos las carpetas correspondientes a cada uno de los sistemas emulados, dentro de las cuales podemos tirar las ROMs. Los emuladores que posean ROMs en sus carpetas aparecerán en el próximo reinicio en el frontend. Cuarto: Configurar los controles Esta es la parte que más me costó. Si tienen un controlador de XBox o PS3, o incluso Wii, en el setup del RetroPie que visitamos antes hay opciones para configurarlos fácilmente. Si, como yo, tienen un joy genérico USB, la cosa es un poco más compleja, pero tampoco la pavada. Lo primero que vamos a hacer es configurar el control para todos los emuladores de RetroArch. Para ello iremos a la línea de comando e ingresaremos Código: cd RetroPie/emulators/RetroArch/installdir/bin ./retroarch-joyconfig >> ~/RetroPie/configs/all/retroarch.cfg Esto ejecutará un protocolo para configurar el joystick. Al iniciar, nos indicará los botones que debemos ir apretando en el controlador, así que presten mucha atención para no confundirnos posteriormente. Si hay botones que no tenemos disponibles (ya que el protocolo trata de configurar un controlador tipo PS3), usemos un botón cualquiera para taparlos y después lo purgamos. Cuando terminamos de hacer esto, rebooteamos. Ahora todos los emuladores van a trabajar con esa configuración del controlador (no así el menú que va a conservar la configuración que le dimos originalmente). Este es otro gran momento para backupear la SD, ya que en caso de que nos mandemos cualquier cagada o le pase algo al sistema, podemos recuperar todo simplemente reinstalando la imagen. Cada tanto, si estuvimos modificando algo, o si cargamos muchas ROMs, conviene backupear de nuevo. En principio, con esto ya estaríamos en condiciones de jugar a lo que fuera. Pero veamos algunos extras para posibles problemas o mejoras. Cambiar el emulador utilizado para un sistema: Para esto vamos a necesitar iniciar la RPi con el teclado y un mouse conectados. Una vez iniciada, vamos a la línea de comando y ejecutamos Código: startx lo que abrirá el escritorio del sistema operativo LXDE que usa RetroPie. Aquí seguramente se sientan más cómodos EmulationStation funciona de la siguiente manera. Para cada una de las carpetas de plataformas, posee un emulador determinado con su comando específico, es decir que si ponen una ROM de Atari en la carpeta de NES, la va a intentar abrir con el emulador de NES. En la carpeta ".emulationstation", hay un archivo llamado "es_systems.cfg" (el que mencionamos más arriba que se actualiza con las instalaciones desde script) que posee la configuración para cada sistema, incluyendo las extensiones de archivo a considerar y el comando que se ejecuta al seleccionar una ROM en el frontend. Cuando tenemos más de un emulador para un determinado sistema, ya sea por defecto o porque nosotros lo instalamos personalmente, en el campo de COMMAND que determina la ejecución de la ROM encontraremos tanto la línea de comando específica que se ejecuta como otras alternativas. Con sólo editar este archivo podemos cambiar el emulador, y a su vez, las opciones de ejecución que queramos (formatos aceptados, opciones de ejecución y otras yerbas; es cuestión de darse maña). Problemas de audio: Si están usando video a través de HDMI, es común que no salga sonido por el jack de audio. Normalmente el audio está configurado en AUTO en la RPi, lo cual hace que al tener el video saliendo por HDMI, seleccione la misma vía para el audio. Si están usando una TV vía composite, el audio estará saliendo por el jack. Revisen en el raspi-config que hay una opción para forzar el audio a través de alguna salida en particular, independientemente del video. Después reinicien. Controles personalizados: Como les dije, puede ser que su joystick no tenga la cantidad de botones que configuraron. O puede ser, como en mi caso, que no quieran tener la misma configuración del controlador para todas las consolas. Si necesitamos hacer modificaciones específicas en la configuración de los joysticks, tendremos que modificar los archivos a mano. A través del explorador de archivos en LXDE vamos hasta la carpeta: Código: RetroPie/configs/all y allí encontraremos un cfg que posee la configuración del joystick que ingresamos en el último paso. Aquí es muy útil tomar nota de la identidad de los botones del joystick, ya que estarán identificados con números (hay un comando para identificarlos desde la línea de comandos, pero me lo olvidé ahora, sorry). Basta aquí eliminar aquellos botones ausentes en nuestro joystick para que no estorben por ningún lado. Si queremos utilizar una configuración distinta para un emulador específico, vamos a modificar el cfg dentro de la carpeta de dicho emulador. Lo más útil es copiar la configuración original y modificarla encima a gusto. Podemos hacer esto con todos los emuladores que queramos. En mi caso, quería que la Genesis tuviera una configuración de 3 botones en línea y Start arriba, mientras que la SNES serían 2+2 y Select + Start. De nuevo, ¡ojo con la identidad de los botones!. Si necesitamos agregar una configuración para otro joystick, podemos hacerlo desde los mismos archivos cfg. Si se fijan, arriba de la configuración establece el jugador para el que vale dicha configuración (input_player1...). Basta que repliquemos una para el player2 más abajo, y ya quedará establecida. No me pregunten qué pasa si el segundo joystick es distinto al primero, no tengo idea. Pero va por ahí el asunto. Último extra, relacionado a los controles. Cuando estemos utilizando nuestro juguete para jugar, lo piola es no necesitar teclado para nada. Por lo cual es útil configurar una combinación de botones que nos permita regresar al menú. Otras opciones útiles son Salvar y Cargar juegos, o resetear la consola. Para esto debemos agregar o buscar dentro del cfg (al general, y si crearon específicos para algún emulador a estos también, ya que anulan el general) las siguientes líneas: Código: input_enable_hotkey_btn = "" input_exit_emulator_btn = "" input_save_state_btn = "" input_load_state_btn = "" input_reset_btn = "" poniendo entre comillas los botones que deseemos. El botón seleccionado como Hotkey es el que activa la función de los otros. Hay que presionar simultáneamente el HotKey y el otro para utilizar la función programada. Dentro del mismo cfg también hay una línea para establecer un botón para entrar en el menú de RetroArch desde el emulador, lo cual es súper útil para varias cosas. Hay algunos emuladores disponibles en RetroPie que no utilizan los controles que configuramos en RetroArch. En particular, ahy dos de ellos que son bastante interesantes: Osmose (para Sega Master System) y DGen (para Genesis). En el caso de Osmose, no encontré forma de configurar los controles, y si bien los controles proconfigurados no son malos, no me permite utilizar accesos rápidos para resetear o volver al menú, así que dejé de usarlo. DGen sí se puede configurar bastante libremente, y si alguno le interesa se lo cuento; pero también dejé de usarlo ya que es muy difícil hacerlo andar con video por vía composite (al TV). La opción para estos casos en particular es utilizar el emulador Picodrive, que en caso de que no lo tengan instalado por defecto pueden hacerlo desde los source. No es el mejor, pero al menos anda y podemos conservar la teclas rápidas del joystick. El PiFBA que estoy usando para emular NeoGeo y el openMSX también usan sus propios controles. ---------- UPDATES! Qué logré hasta ahora: - Hacer andar el sistema en la TV (que no es lo mismo que un monitor HDMI) para jugar al menos Atari 2600, NES, SNES, SMS y Megadrive, con sus controles customizados incluyendo botones para salvar, cargar, resetear y volver al menú de emuladores. También botones para acceder al menú de RetroArch desde el juego (siempre y cuando esté usando uno de los emus del core RetroArch). - Efectivamente logré instalar openMSX desde la línea de comando e incluirlo en EmulationStation. Sale andando pero no anda muy fluido en todos los juegos. - ZX Spectrum emulado! Conseguí una versión de Fuse que funcionó bien (la versión sdl). Tengo que ver el tema de los controles todavía. Amstrad CPC, la misma vaina; no cargué muchas ROMs pero Knight Lore salió andando con joystick y todo. - Algunas ROMs de NeoGeo livianitas se pueden hacer andar con el emu FBA. Snow Bros y Cadillacs & Dinosaurs corriendo libres por la TV - Compré un adaptador de 2 joy de PS2 a un USB y andan fenómeno los dos. La configuración de los botones queda cómoda para casi todo, de una cuando los configurás. El único que no tiene los controles iguales es el de Genesis, que de tres en línea pasa a tres en cuña. Con el otro joy USB que tengo esto lo soluciono porque tiene 3 y 3 en línea (como el Genesis posterior), pero prefiero quedarme con los otros, ya que tengo los dos y una vez configurados ya quedan para todo.
Updates: - Emulando MSX a duras penas, parece pesado el bicho. - Algunas ROMs livianitas de NeoGeo andando también. - Todavía no logré hacer andar ZX, puta madre. Me muero de ganas de jugar a Knight Lore. - Joysticks: me compré un adaptador de PS2 a USB que acepta dos joysticks. Anda fenómeno. La única cagada es que para la genesis no podés tener tres botones en fila, ni hablar el de 6 botones. Pero queda con los tres en flecha, y es suficientemente cómodo para la mayoría de los juegos. Hoy con mi hermano casi terminamos el Captain Commando de SNES, pero el jefazo final es impossibru.
Estoy usando el modelo B (512 MB de RAM). EDIT on the go: LA BRONCA que tengo de que conecto el aparato para lucirme con mi primo y entre el "full set" de NES no están ni el Contra ni el Ice Climber. Full Set, mis calzones. Tengo ganas de buscar al que creó el torrent y darle una lección. Lo único que falta es que no aparezca el Antartic Adventure y lo asesino lo perdono, porque es original de MSX. EDIT 2: Tampoco estaba el Battle City o Battle Tank. No estaba el Contra. Vergüenza.
Compré/junté todos los chiches (lector de tarjeta SD, un par de tarjetas, dos joystick genéricos, teclado usb, wi-fi usb, transformador 5V2A, cable HDMI, un tele donde enchufarlo y creo que nada más)... La cosa es que pude hacer funcionar RetroPie 1.1 y los juegos que corren bajo RetroArch. Pero no con la configuración "manual" de los controles (jamás encontré dónde estaba el retroarch-joyconfig, no me funcionaba el comando con los directorios que figuraban acá y en internet), si no que dentro del menú de emuladores que botea al comienzo estaba la opción para configurar los joysticks de Retroarch (y de otros dos emuladores). Dió la casualidad de que hace poco subieron la nueva versión de RetroPie 2.2 que pintaba muy bien, viene con EmulationStation2, un selector de juegos de puta madre. La instalé en otra SD. El problema es que EmulationStation2 no tiene para configurar los joysticks de RetroArch como si tenía RetroPie 1.1!!! Ahora me veo forzado a buscar nuevamente el bendito retroarch-joyconfig y retroarch.cfg y no están por ningún lado! Los directorios están todos cambiados. Dentro del directorio Pi (el directorio base del usuario pi@raspberry) no hay ningún archivo retroarch.cfg, para llegar a él hay que ir a una carpeta que está fuera del directorio base (llegar ahí excede mis conocimientos de DOS, consola o lo que sea). Y el retroarch-joyconfig está metido en carpetas con nombres infinitamente largos dentro de /media/adkalsdjalskda.... En fin, un bardo que no haya un menú para configurar los controles de RetroArch en EmulationStation2. Puedo ver los juegos (le puse 750 de NES, 150 de MAME y miles de SEGA), pero no puedo jugarlos porque no puedo configurar el control. Busqué y busqué en internet pero no me funcionan los directorios existentes. En la página del update dice que relocalizaron el directorio de los extras de RetroPie (entre ellos RetroArch) en /opt/retropie, que me es inaccesible porque el directorio raíz de mi usuario es /home/pi :/ . Voy a tener que investigar un poco cómo modificar el root para dejarlo en "/". En fin, ya me saldrá, pero requiere bastante esfuerzo para un usuario no-linux-friendly. Gracias a Dios tengo Ubuntu, y puedo investigar los directorios desde mi PC, si tuviera que navegarlos todos con "dir" desde la Raspberry y sin la posibilidad de buscar archivos o carpetas con F3 me vuelvo mono. Cuándo haya podido configurar los joysticks genéricos aviso cuál fue el comando que usé en la terminal. Saludos! ---------- Conclusiones luego de 2 horas renegando: 1) El directorio del retroarch-joyconfig en Retropie 2.2 es: /opt/retropie/emulators/RetroArch/installdir/bin/retroarch-joyconfig 2) El directorio de retroarch.cfg NO ES /opt/retropie/emulators/RetroArch/retroarch.cfg, ese archivo no hace nada, el que sirve está en: /opt/retropie/configs/all/retroarch.cfg 3) Para ejecutar la orden en la terminal deben: - Usar el Super User (escribir "su", la contraseña es raspberry). Si no hacen ésto les negará el permiso. - No escribir "cd" al comienzo, ni colocar la ~, ambos me causaron errores de directorio. Ésto es exactamente lo que hay que escribir apenas ingresamos a consola, una vez que hayamos llegado al directorio superior escribiendo un par de veces "cd .." (recordar tener enchufado el joystick): Código: opt/retropie/emulators/RetroArch/installdir/bin/retroarch-joyconfig >> /opt/retropie/emulators/RetroArch/retroarch.cfg Nótese que al comienzo no pongo ni "cd" ni la primera barra /, pero en el segundo directorio si pongo / y NO coloco ~ como se indica en todos lados. Es lo que a mi me funcionó, repito, con la versión 2.2 de RetroPie. El problema de usar la ~ es que hace referencia al directorio raíz del usuario, y en éste caso la carpeta a la que vamos está FUERA de ese directorio (directorio del usuario: /home/pi , carpeta objetivo: /opt/retropie/...). PD: Tuve que intentar de 500 formas hasta que salió, ojalá vuelvan a poner poner una configuración desde EmulationStation2 como había en la versión 1.1, sin necesidad de teclado ni terminal. Si no fuera porque quería tener si o si la consola para mañana abandonaba al cuarto o quinto intento y volvía a la versión 1.1. PD2: Me estoy muriendo de sueño, mañana agrego un tutorial para configurar el player 2, 3 y 4 suponiendo que todos los joysticks sean iguales (si tenés joysticks distintos matate, o considerá seriamente comprar unos iguales, es MUCHO más sencillo configurar joysticks gemelos). PD3: Todavía no sé como configurar los controles de otros emuladores (Nintendo 64 y algún otro que no usa RetroArch), pero por ahora no me interesa porque ya me secó mucho el bocho configurar éstos.
jaja gracias Cartucho por compartir semejante experiencia con solución incluida! felicitaciones! ahora a viciar!
No hice el update al RetroPie 2 y no sé si lo haré, mientras siga conforme con la versión anterior. Así que vienen muy bien las explicaciones del Cartu. Lo que quiero agregar es que no es necesario configurar los controles desde la consola. Lo más sencillo es ingresar al escritorio de LXDE y navegar las carpetas desde ahí, y editar los archivos de los controles y etcétera.
Si, ya le entré a los Simpsons, Marvel vs Capcom y algún otro. Para Nintendo 64 (Mario Kart) le cuesta levantarlo en modo normal, voy a tener que overclockear un poco la consola. Si, es lo que hice para averiguar las rutas de los archivos, pero ahora para agregar el player 2, 3 y 4 a los controles (que hay que hacerlo mediante texto) estoy teniendo un problema gordo: los permisos. El archivo retroarch.cfg no me deja guardar cambios, y tampoco puedo cambiarle los permisos en propiedades. Voy a investigar un poco sobre los privilegios de usuario en LXDE a ver cómo se hace, en Ubuntu cuando no tenía permisos para algo me daba la opción de actuar como administrador. PD: Hacha, en tu versión de la pantalla de emuladores, ¿no tenés un menú blanco con letras negras para configurar los controles? Yo si tenía uno en la 1.10.1 . Apenas prendés la PI se abre RetroPie y te aparece el emulador de Apple. Le das a la izquierda una vez y sale un menú con varias opciones. Una te permite configurar los controles de RetroArch (y otros dos emuladores), le das al botón A y podés configurar todas las teclas de los 4 players sin tocar una linea de código. No sé porqué no lo incluyeron en ésta nueva versión. PD: Si tenés otra SD para probar, la versión 2.2 se ve genial. Ahora a los juegos podés agregarle una descripción, screenshot y puntaje (o podés bajarlos de una database en internet). No creo que haya ningún cambio en el rendimiento de los juegos, pero la interface de EmulationStation2 es muy buena.
Quisiera probarlo pero si me descajeta todos los controles y los emuladores extra que le puse, prefiero pasar por ahora. Sí tengo ese menú en el ES 1, yo diría que sirve para hacer la configuración básica pero después tenés que ir al archivo, y después a los de cada emulador, y pulirla un poco (y de paso copiarla para los otros jugadores).