viernes, marzo 06, 2015

Creando una recreativa arcade con Raspberry PI 2 y Retropie

Como ya he comentado en alguna ocasión, además de desarrollar videojuegos independientes y advergaming profesionalmente, también dedico parte de mi tiempo libre a crear muebles arcade junto a mi padre (que es carpintero). Hace unas semanas anunciaron el lanzamiento del nuevo micro-ordenador Raspberry Pi 2  y la verdad es que no pude resistirme a comprarlo y trastear un poco de cara a incorporarlo en nuestras próximas creaciones. Tras probarlo bastante a fondo con el proyecto Retropie, tengo que decir que no me ha defraudado. A continuación os dejo un tutorial muy básico orientado a torpes ;-)

En este pequeño tutorial voy a explicar cómo hacer funcionar un mueble arcade con un Raspberry Pi 2 y Retropie de manera bastante sencilla. El material recomendado para seguir el tutorial es:
  • Mueble arcade "Basic", "Art" o "Electronics" de Crea tu Arcade. (El modelo full ya viene con todo configurado a falta de las ROMs, así que si tienes ese modelo no necesitas este tutorial).
  • Pack de botones y palancas, yo he usado unas X-Arcade, pero sirve cualquier otra. (Si tienes el mueble "Electronics" ya tendrás incorporadas las palancas, botones y cableado).
  • Minipac de Ultimarc.(El mueble "Electronics" también lo lleva ya incorporado).
  • Raspberry Pi 2 con el transformador AC-DC 5V 1A (Un cargador de móvil puede servir).
  • Tarjeta SD (4GB mínimo). 
  • Monitor HDMI y cable HDMI.
El primer paso será cablear el panel de la botonera, para ello utilizaremos el Kit de 2 palancas y 18 botones y un Minipac de Ultimarc (Esto nos ahorrará muchos dolores de cabeza ya que no tendremos que pelar cable, soldar, ni nada por el estilo). En mi caso elegí el "Mini-PAC Standard. With harness" que ya incluye todos los cables necesarios. Conectar los botones es muy sencillo y como he dicho antes, gracias al Minipac no es necesario realizar ninguna soldadura. Aquí tenéis un esquema:
Como veis, el Minipac se puede utilizar para botoneras de hasta 4 jugadores. En mi caso solamente usaré 2 jugadores.

El programa WinIPAC nos ayudará durante el cableado para ver si todo funciona correctamente. Además, este programa nos permite personalizar la tecla correspondiente a cada botón (por si nos hemos equivocado cableando por ejemplo). En mi caso usaré la versión más antigua del programa, ya que mi Minipac es anterior a 2015. Podéis conseguir la versión para Minipacs fabricados a partir de 2015 aquí.
Una vez cableado y comprobado el panel de la botonera, el siguiente paso será descargar el fichero de imagen de Retropie. Para ello iremos a la página de petrockblock. En mi caso elegí "RetroPie Project SD-card Image for Raspberry Pi 2" ya que mi Raspberry PI es la versión 2. También hay una versión compatible con el Raspberry anterior.

Para grabar la imagen en la tarjeta SD yo utilicé el programa Win32DiskImager y lo hice a través de un PC con Windows.
Una vez grabada la imagen, llega el momento de introducir nuestra tarjeta SD, conectar el Minipac, el HDMI y los altavoces a la Raspberry PI 2 y encenderla. Lo primero que veremos es un mensaje de bienvenida que nos invitará a pulsar una tecla de nuestra botonera. Al pulsarla, nos la detectará como un teclado y podremos configurar cada uno de los botones (esta configuración no es para las teclas de los emuladores, simplemente es para el interface de EmulationStation).
Acto seguido, nos aparecerá la interface gráfica EmulationStation con emuladores de Macintosh, IBM, Apple II, Ports, ScummVM y Amiga. Para que aparezcan el resto de emuladores disponibles es necesario incluir las ROMs, para ello debemos seguir los siguientes pasos:
  • Salir de la interface gráfica EmulationStation y ejecutar el siguiente comando: "sudo raspi-config". Después seleccionar la opción "Expand file system" (para utilizar todo el espacio de la tarjeta SD). Cuando termine, salimos y reiniciamos. Para realizar este paso es necesario tener un teclado conectado al Raspberry. 
  • Conectar un pendrive USB al Raspberry durante unos segundos. Esto creará una estructura de carpetas en nuestro pendrive que podremos ver desde Windows.
  • Insertar el pendrive en el PC donde tengamos las ROMs para copiarlas en la carpeta de su correspondiente emulador. (ROMs de MAME a la carpeta mame, ROMSs de Mega Drive a la carpeta megadrive, ROMs de Master System a la carpeta mastersystem, etc...).
  • Una vez copiadas las ROMs en el pendrive, lo extraemos y lo conectamos a nuestra Raspberry para que EmulationStation detecte las ROMs y las copie automáticamente a nuestra tarjeta SD. Cuando las ROMs se hayan copiado, nos aparecerá su correspondiente emulador en la pantalla principal de EmulationStation.
En principio, si hemos realizado estos pasos correctamente ya debería ser posible jugar a los emuladores. En mi caso he copiado ROMs de MAME, Master System, Mega Drive , Mega 32x , Super Nintendo y NES y no he tenido ningún problema para hacer funcionar varios miles de juegos. El emulador por defecto de MAME es Mame4all-pi y los del resto de consolas que he elegido son de RetroArch.

Para probar la configuración de los botones en Mame4all-pi elijo el videojuego Street Figher II y juego una partida a 2 jugadores para ver si los botones están en su sitio. Compruebo que el botón 5 y 6 del joystick del 2º jugador no funcionan correctamente, así que voy a la pantalla de configuración (tecla tab) y configuro las teclas que no funcionaban manualmente.
Posteriormente pruebo los emuladores de Mega Drive, Mega 32x, Master System, Super Nintendo y NES de RetroArch y compruebo que los botones no tienen una configuración muy cómoda, así que procedo a configurarlos. Los emuladores de RetroArch no tienen una interface gráfica para la configuración de teclas como tiene Mame4all-pi, así que salgo de EmulationStation y ejecuto "sudo nano /opt/retropie/configs/all/retroarch.cfg". En este fichero se pueden editar las teclas manualmente y dicha configuración se utilizará en todos los emuladores RetroArch.
Como veis, el proceso es muy sencillo y no son necesarios grandes conocimientos para hacer funcionar nuestra botonera y nuestro Raspberry con un montón de juegos. En las próximas semanas seguiré probando el resto de emuladores que incorpora Retropie  (NeoGeo, Nintendo 64, PSX, Amiga, GBA, etc...) y si os parece interesante os lo contaré en otro post ;-)

Aquí os dejo un pequeño video de mi mueble arcade funcionando. ¡Espero que os guste!:


51 comentarios:

Unknown dijo...

Me parece genial!, es posible que puedas subir un video o fotos de como corre el Street Fighter III: 3rd Strike ?. Me interesa mucho saber como funciona la CPS3 con este hardware, y si es que mantiene estable los 60fps de jugo. gracias!

David Ferriz dijo...

Hola Mario, cuando tenga un rato intentaré probar los juegos de CPS3 a ver qué tal corren. En principio deberían funcionar correctamente a través del emulador FBA.

Anónimo dijo...

Al poner el comando me dice command not found espero y me puedas ayudar, (para configurar el mando)

David Ferriz dijo...

Te refieres a "sudo nano /opt/retropie/configs/all/retroarch.cfg"?
En principio si lo escribes correctamente debería funcionar (ojo con las mayúsculas y minúsculas al escribir).

Raul dijo...

Hola, estoy probando y funciona, pero nu puedo salir de las roms, no se como hacer para asignar un boton para que vuelva al menu

David Ferriz dijo...

Hola Raúl,
¿Desde qué emulador?
Saludos!

Jordi dijo...

Hola,
tengo una rpi2 funcionando con openelec, ahora queria ponerle tambien el retropie en otra tarjeta sd para ir cambiando cuando quisiera, sigo todos los pasos hasta que pongo por primera vez la sd en la rpi2 y la arranco, y no hace nada, no se ve nada ni hace nada.
La tarjeta funciona porque la he probado con el pc, y la rpi2 tambien porque el openelec me funciona.
alguien podria ayudarme?
algun consejo? que puedo estar haciendo mal?

David Ferriz dijo...

Hola Jordi,
Asegúrate de haber descargado la versión de Retropie para rpi2 (RetroPie SD-card Image for Raspberry Pi 2 Version 2.6). Si descargas la de rpi1 no funcionará.
Saludos,

Jordi dijo...

Si si, me he asegurado, y me la he descargado un par de veces, tanto la 2.6 como la beta 3.0 y en ninguna de las dos me hace nada. Con el openelec no tengo problemas.
Ya no se que mas probar...

Jordi dijo...

Hola, si, eso ya lo he hecho. Me he asegurado, y por si acaso, lo he vuelto a descargar, tanto la version 2.6 como la beta 3.0. No se que puede estar pasando, pero es que no hace absolutamente nada.
No se que hacer ya...

Unknown dijo...

Funciona cojonudo, en algunos emuladores hay que copiar las Bios, las roms de N64 funcionan! (algunas) no lo había tocado desde el 2.3 de la Rpi B+. Me pasa lo mismo que a Raul, solo puedo salir de las roms de mame y FBA con la tecla Esc. de megadrive, master sysstem, nes, etc.. tengo que salir por SSH con sudo reboot, investigaremos la manera...

Unknown dijo...

Que tal david.
Acabo de terminar mi bartop por fin, a la cual le he incluido la raspberry y retropie, al cabo de mil tutoriales (porque el linux no es lo mio jejej)he aterrizado ya en el tema de configurar mi teclado arcade de 2 jugadores.
Acabo de leer en tu blog el tema del
(sudo nano/opt/retropie/configs/all/retroarch.cfg)... y ahi me he quedado con la pagina en blanco con el sudo 2.2 abierto pero desconociendo lo que sigue, que supongo( serarellenar los comandos del jugador y dos?) gracias de antemano y enhorabuena por tu blog.

David Ferriz dijo...

Hola Javi,
En Retroarch creo que no es posible configurar 2 jugadores a través del teclado. Para otros emuladores como mame4all o pifba no hay problema, pero para Retroarch quizá tengas que configurar uno de tus mandos como si fuese un mando USB en vez de un teclado.
Saludos,

tesla dijo...

Esta hermosa te felicito disculpa, mi pregunta si os parece un poco obvia, peor no he visto como configuras el monedero o si no lo haces, se podria?

David Ferriz dijo...

Hola Tesla,
Mi mueble no tiene monedero, así que está configurado con una tecla.
Saludos,

Jordi dijo...

Yo sigo atascado en la instalacion...

David Ferriz dijo...

Hola Jordi, Pues la verdad es que no sé cómo ayudarte. Yo he instalado Retropie en varias tarjetas y lo he utilizado en varios RaspBerrys y nunca he tenido ningún problema. ¿Con qué programa la estás grabando?

Lean Gutierrez dijo...

Jordi usa BerryBoot para iniciar el sistema. Aparte puedes ponerle el sistema que quieras, yo tengo RetroPie y OpenElec.

Daniel dijo...

Hola,

Al ir a comprar el Mini-PAC Standard. With harness pregunta el tipo de cable que deseamos que nos envíen 6.3mm (1/4in) connectors, 4.8mm connectors o 4.8-2.8 mm connectors (+€7.92)

Cuál de ellos debemos seleccionar?

Saludos.

David Ferriz dijo...

En mi caso siempre compro el de 4.8mm, pero depende de tus necesidades.
Un saludo!

Jordi dijo...

Buenas, vuelvo por aquí con novedades.
He vuelto a probar la instalacion, y ahora se me instala bien, no se bien bien cual era el problema.
La cuestion es que pongo las roms, ningun problema, configuro los mandos que tengo para la interfaz, ningun problema.
Ahora bien, no me funcionan los mandos en los juegos.
He probado a configurarlos en cada juego y nada, he probado con el archivo que comentais aquí y tampoco nada.
Guardo, salgo, vuelvo a entrar y no se ha guardado nada, como si no le hubiera configurado nada.
Alguna idea?
Tengo dos mandos imitacion de super nintendo pero con conectores usb.
Puede ser que los mandos no sean compatibles o algo asi?
Es mejor que me compre otro mando?

Anónimo dijo...

Buenas se puede hacer lo mismo en un tv crt?

Juan Carlos Ayala Pedreño dijo...

Buenas,

Cómo conseguiste configurar los controles de la arcade. En Mame me van perfectos, pero para el resto de emuladores me es imposible configurarlos. No me reconocen los botones. Gracias y enhorabuena por tu curro.

David Ferriz dijo...

Hola Juan Carlos,

Para configurar los botones en los emuladores de RetroArch debes seguir estos pasos:

Los emuladores de RetroArch no tienen una interface gráfica para la configuración de teclas como tiene Mame4all-pi, así que salgo de EmulationStation y ejecuto "sudo nano /opt/retropie/configs/all/retroarch.cfg". En este fichero se pueden editar las teclas manualmente y dicha configuración se utilizará en todos los emuladores RetroArch.

David Ferriz dijo...

Hola Jordi Peries,

No sabría decirte, yo solamente he probado a configurar los botones a través de un MINIPAC, no he trabajado con mandos USB así que no sé donde puede estar tu problema.

Lamento no poder ayudarte.

Unknown dijo...

Hola también valdrían el interface usb 2 player Xin-Mo estoy buscando manuales, pero no me aclaro que si driver para raspberry pi 2.algún tutorial fácil o algo así, gracias

Unknown dijo...

buenas compañeros!
necesito ayuda, veréis.
me estoy haciendo un bartop con una raspberry. le he instalado el retropie v3.1, he estado probando el mame ,que es el que mas uso le voy a dar, y resulta que si le doy a 2 players, con una palanca (mando arcade) muevo los 2 jugadores, ya no se si pensar si es "mala configuración" o es algo mal que haya conectado, cosa que creo que no,por que en administrador de juegos en Windows, me reconoce todo perfectamente por separado.
alguien me puede ayudar?
pd: cual es el botón (nombre) para salir de un juego y elegir otro?
saludos y gracias

Unknown dijo...

Hola,estas utilizando los mandos arcade Xin-Mo? Si es así tienes que descargarte los drivers o el kernel para que sea independiente los mandos.hay un buen tutorial en YouTube para este tipo de mandos, yo lo hize así y si me funcionó.

Unknown dijo...

Hola, he instalado la última versión de retropie a día de hoy en la raspberry pi2 y todo funciona normalmente hasta que le inserto el pen para copiar las carpetas de las Roma que no las graba, lo he intentado una y otra vez, viendo tutoriales y al parecer es lo más sencillo. Gracias.

David Ferriz dijo...

Hola Juan Gonzalez,

Si no lo consigues de ese modo, prueba a insertar la tarjeta SD en un PC con Linux, ahí podrás ver los directorios y copiar las ROMs directamente en la tarjeta.

Saludos,

Jose Antonio Marín dijo...

Hola!, cometar un problema que me ha surgido al terminar hoy al fin mi maquina arcade, y es que no me reconoce los mandos arcade de la maquina, en los esquemas los denomina usb jamma controller para 2 judadores, en windows lo testeo y sin problemas, pero en esta ultima version del Retropie nada.. lo lo detecta, que podria hacer?, muchas gracias!!

Unknown dijo...

Hola muy buenas, he de decir que soy nuevo en esto de retropie o raspberry.
Mi problema es el siguiente. He seguido varios tutoriales para configurar el retropie.
Primeramente, expando el almacenamiento para que coja la capacidad total de la tarjeta ( la SD es de 16 gb ), acto seguido me pide reiniciar, lo hago y paso a instalar los binarios de los emuladores, hasta ahì todo bien.
Ahora me toca el paso de meter el usb ( de 16 GB, formateado en ambos formatos NTSC y FAT32) y supuesta mente al introducir el usb el retropie comienza a pasar las carpetas del retropie al usb. Aquì es donde viene mi poblema.
Introduzco el usb y no hace nada, se enciende un led de indentificaciòn lo enchufo en mi pc y la carpeta esta vacia, solamente me dice que repare la unidad usb.
Pense, quizas puede ser por el formato del USB.
Segun tengo entendido en FAT32 te lo reconoce de una vez y comienza a copiar las carpetas, pero sin embargo, ami no me hace eso.
Pense en cambiar el formato a NTSC y segui un tutorial donde me indica que tengo que instalar el NTSC-3g para que lo reconozca ( el tutorial es con un disco externo pero viene siendo lo mismo) hago todos los pasos hasta sudo nano mount -t /media/usb y me dice que no encuentra el fichero.

Llevo un tiempo intentando averiguar cual es el problema, sin exito.
Si alguien sabe como lo puedo solucionar se lo agradeceria eternamente.
He de decir que he probado con usb de menos capacidad, con el mismo resultado.


Gracias de antemano.

He seguido este tutorial para NTSC http://www.babuleando.com/raspberry-pi-como-almacenar-juegos-en-un-disco-externo-en-retropie/

Voy a probar enchufandolo en un pc con ubuntu

David Ferriz dijo...

Hola Antero,
También puedes copiar las ROMs directamente en la SD. Si la introduces en un sistema Linux podrás ver todas las carpetas y copiar las ROMs directamente sin necesidad de un USB.
Saludos,

Loquillo dijo...

Hola, buen documento, el plano de las conexiones a la placa no está muy claro , pasas muy por encima pero gran artículo. Una pregunta, y el audio? ¿Por dónde sacas el audio de la raspberry? Monitor con altavoces ?

Saludos

David Ferriz dijo...

Hola Loquillo,
Gracias por tu comentario. El cableado de la botonera da para un post entero. Cuando tenga algo de tiempo me gustaría escribir uno más detallado al respecto.
Con respecto al audio, puedes sacarlo por el HDMI para los altavoces del monitor, o puedes sacarlo por la salida de audio analogica. Puedes configurarlo desde el rc.local así:

sudo nano /etc/rc.local

amixer cset numid=3 1 (analógico)
amixer cset numid=3 2 (HDMI)

hagbard23 dijo...
Este comentario ha sido eliminado por el autor.
pedro dijo...

Antes de nada decir que buen aporte este tuto gracias david...
A la pregunta de como salir de las roms que e leido que hay dudas es pulsando selec y start a la misma vez
Tambien decir que para configurar los joystick he recurrido a otro tuto que me a funcionado de perlas ya queven este no esta muy muy detallado ya queves un tuto para inespertos supuestamente pero por lo de mas genial david miles de gracias.

Unknown dijo...

Hola pedro, me puedes decir donde has conseguido ese tuto para configurar los joysctick,te lo agradecería mucho.

Efrén dijo...

Para los que tengan problemas con el joystick 2 de Xin-Mo, con este cambio y reiniciándo la Raspberry 2 lo reconoce:
https://github.com/RetroPie/RetroPie-setup/wiki/Xin-Mo-Controller

Making RetroPie identify 2 players instead of one with the Xin-Mo

Add the following to /boot/cmdline.txt (just add a space to the existing entry so its all on one line)
usbhid.quirks=0x16c0:0x05e1:0x040

Saludos

Unknown dijo...

Me Encanta tu tutoria y voy a desarrollarlo, me intereza la configuracion del monedero o de la tecla que asigna creditos para juego ya que pondre la recreativa en un salon de juego que poseo con consolas xbox ya he hecho un bartop para los juegos retro si seria tan amable de ayudarme. mail.ngarciara@gmail.com

Unknown dijo...

Introduzco usbhid.quirks=0x16c0:0x05e1:0x040 justo después de toda la línea dejando un espacio in tengo guardar con control+o y me sale un mensaje de error.....error writing permisos deniega. ..me estoy volviendo loco.....que hago mal????
Gracias de antemano...

sebastian dijo...

y si quisiera usaar un monedero para asignar creditos y recien se pueda jugar? si se configurar y conectar el monedero y asignarlo a una tecla especifica pero como configuraria eso en general en retropie

Unknown dijo...

Hola David,

Ante todo felicitarte por el bog.
Una pregunta, hay alguna alternativa al Win32DiskImager para mac?

muchas gracias y un saludos

Anónimo dijo...

buenos dias, cambie la forma de ingresar al menu con TAB y ya no se como ingresar, me pueden ayudar? muchas gracias

Anónimo dijo...

Hola quite que tab fuera para ingresar al menu de configuracion y ya no puedo acceder a el, me pueden decir como hago para colocar de nuevo que sea tab?

Unknown dijo...

Hola David, soy Raul...
Tengo una Bartop hecha con un i3 dentro, una maravilla..
He intentado hacer una para un familiar pero con la Raspberry 3, sus mandos y botonera arcade, bueno, le he puesto una placa jamma de 2 player y no tengo pantalones a que echen a andar los dos jugadores, es como si RetroPie solo reconociese un jugador.
Se que los mandos están bien conectados porque los he probado a través de USB con un emulador en Windows...
Sabrías decirme que demonios hago mal?
Un saludo u muchas gracias.

David Ferriz dijo...

Hola Raul,
Nunca he trabajado con Jamma y RetroPie juntos, así que no sabría decirte :-(
Suerte!

Unknown dijo...

David que monitor me aconsejas para mi maquina recreativa 4:3 que esta dificil de encontrar o 16:9 i poder jugar a pantalla completa si rallas negras

Unknown dijo...

Hola David... muy buena explicación. Tengo una situación: instale todo con el teclado.. incluida la configuración del teclado para probar.... ahora que quiero conectar los botones no los reconoce, solo las teclas del teclado... qué debo hacer.... los botones son led... encienden al pulsarlos. Saludos desde El Salvador

Unknown dijo...

Quieres conectar unos mandos arcade mediante xinmo o otra interface, lo mejor es recalbox.

Adan dijo...

Hola que tal, tengo una pregunta en el caso de tener juegos de emuladores como PSX, N64, GBA, etc.Como puedo hacer un contador de tiempo, como lo puedo programar, es decir si inserto una moneda esta tvalga 5 minutos se termina el tiempo y se requiere insertar otra para seguir jugando, como puedo hacer algo de este tipo