Raspberry Pi, cómo configurar dos mandos en RetroPie
En la entrada Raspberry Pi, una consola de juegos con RetroPie vimos cómo configurar nuestra Raspberry para convertirla en una videoconsola retro y de este modo volver a disfrutar con aquellos juegos memorables de los 90. Con el tiempo, este artículo se ha posicionado como el más visitado del blog y el video más visto en el canal de YouTube, hasta la fecha, siendo además el que más comentarios ha recibido. Una de las dudas más recurrentes era cómo configurar dos mandos en RetroPie y esto es lo que vamos a ver.

Estos comandos los he realizado sobre una Raspberry Pi 2 modelo B, utilizando la distribución RetroPie 3.0 BETA 4, para configurar dos mandos de Sony PlayStation 3 conectados a través de cable USB, pero deberían funcionar sin problemas en los demás modelos de Raspberry y usando otros modelos de mandos. También debería funcionar con otras distribuciones anteriores de RetroPie – quizás cambie la ruta de algunos ficheros, pero te explico cómo buscarlos – , aunque si puedes, recomiendo que actualices siempre a la última versión, que además de incluir mejoras de funcionalidad, también resuelve errores y seguramente ganarás en estabilidad.
Pasos para configurar dos mandos en RetroPie
Supongo que si estás leyendo estos pasos es porque ya tienes una Raspberry Pi configurada con RetroPie. Si no la tienes configurada o si no sabes cómo conectarte a tu Raspberry para ejecutar comandos, pásate por la entrada que comentaba al principio de este tutorial: Raspberry Pi, una consola de juegos con RetroPie, que allí te explico cómo hacerlo. Si ya lo has hecho, sigue leyendo…
Busca la herramienta retroarch-joyconfig y anota la ruta donde se encuentra ubicada:
sudo find / -name retroarch-joyconfig
En RetroPie 3.0 BETA 4, el ejecutable se encuentra en dos rutas diferentes. Puedes usar el que quieras:
/opt/retropie/emulators/retroarch/bin/retroarch-joyconfig /opt/retropie/emulators/retroarch/retroarch-joyconfig
Busca el archivo de configuración general para todos los emuladores:
sudo find / -name retroarch.cfg
Dependiendo de los emuladores que tengas instalados, verás una salida similar a esta:
/opt/retropie/configs/gb/retroarch.cfg /opt/retropie/configs/sg-1000/retroarch.cfg /opt/retropie/configs/gbc/retroarch.cfg /opt/retropie/configs/atarilynx/retroarch.cfg /opt/retropie/configs/atari7800/retroarch.cfg /opt/retropie/configs/n64/retroarch.cfg /opt/retropie/configs/doom/retroarch.cfg /opt/retropie/configs/fba/retroarch.cfg /opt/retropie/configs/all/retroarch.cfg /opt/retropie/configs/videopac/retroarch.cfg /opt/retropie/configs/atari2600/retroarch.cfg /opt/retropie/configs/megadrive/retroarch.cfg /opt/retropie/configs/psx/retroarch.cfg /opt/retropie/configs/fds/retroarch.cfg /opt/retropie/configs/vectrex/retroarch.cfg /opt/retropie/configs/segacd/retroarch.cfg /opt/retropie/configs/gba/retroarch.cfg /opt/retropie/configs/pcengine/retroarch.cfg /opt/retropie/configs/sega32x/retroarch.cfg /opt/retropie/configs/mastersystem/retroarch.cfg /opt/retropie/configs/quake/retroarch.cfg /opt/retropie/configs/cavestory/retroarch.cfg /opt/retropie/configs/msx/retroarch.cfg /opt/retropie/configs/gamegear/retroarch.cfg /opt/retropie/configs/mame-mame4all/retroarch.cfg /opt/retropie/configs/snes/retroarch.cfg /opt/retropie/configs/nes/retroarch.cfg /opt/retropie/emulators/retroarch/retroarch.cfg
Sitúate en el directorio donde se encuentra este archivo:
cd /opt/retropie/configs/all/
Ejecuta este comando para configurar el mando para el jugador 1:
/opt/retropie/emulators/retroarch/retroarch-joyconfig -o jugador1.cfg -p 1 -j 0
En el comando anterior, el parámetro -p viene seguido por un 1, que indica el número de jugador (player 1 = p1) y el parámetro -j viene seguido del puerto utilizado (port #0 para el jugador 1).
A continuación, si tienes conectados los dos mandos, los verás en las siguientes líneas identificados con su nombre y puerto:
RetroArch: udev_add_pad: [udev]: Plugged pad: Sony PLAYSTATION(R)3 Controller (054c:0268) on port #0. RetroArch: udev_add_pad: [udev]: Pad #0 (/dev/input/event1) supports 0 force feedback effects. RetroArch: udev_add_pad: [udev]: Plugged pad: Sony PLAYSTATION(R)3 Controller (054c:0268) on port #1. RetroArch: udev_add_pad: [udev]: Pad #1 (/dev/input/event2) supports 0 force feedback effects. RetroArch: input_joypad_init_first: Found joypad driver: "udev". Found joypad driver: udev Using joypad: Sony PLAYSTATION(R)3 Controller
Debemos pulsar algunos botones del mando y los joysticks, para asegurarnos que el mando elegido aún no ha sido configurado y a continuación pulsar la tecla Enter:
Joypads tend to have stale state after opened. Press some buttons and move some axes around to make sure joypad state is completely neutral before proceeding. When done, press Enter ...
En este punto, toma el mando para el jugador 1 y asocia los botones a tu gusto:
Configuring binds for player #1 on joypad #0. B button (down) Joybutton pressed: 14 Y button (left) Joybutton pressed: 13 Select button Joybutton pressed: 0 Start button Joybutton pressed: 3 Up D-pad Joybutton pressed: 4 Down D-pad Joybutton pressed: 6 Left D-pad Joybutton pressed: 7 Right D-pad Joybutton pressed: 5 A button (right) Joybutton pressed: 13 X button (top) Joybutton pressed: 12 L button (shoulder) Joybutton pressed: 10 R button (shoulder) Joybutton pressed: 11 L2 button (trigger) Joybutton pressed: 8 R2 button (trigger) Joybutton pressed: 9 L3 button (thumb) Joybutton pressed: 1 R3 button (thumb) Joybutton pressed: 2 Left analog X+ (right) Joyaxis moved: Axis 0, Value 20175 Left analog X- (left) Joyaxis moved: Axis 0, Value -25828 Left analog Y+ (down) Joyaxis moved: Axis 1, Value 30712 Left analog Y- (up) Joyaxis moved: Axis 1, Value -21459 Right analog X+ (right) Joyaxis moved: Axis 2, Value 27371 Right analog X- (left) Joyaxis moved: Axis 2, Value -21716 Right analog Y+ (down) Joyaxis moved: Axis 3, Value 20689 Right analog Y- (up) Joyaxis moved: Axis 3, Value -27627
Una vez configurado el primer mando, ejecuta el mismo comando, cambiando los parámetros, para configurar el mando para el jugador 2:
/opt/retropie/emulators/retroarch/retroarch-joyconfig -o jugador2.cfg -p 2 -j 1
Verás ambos mandos, pero la configuración se realizara sobre el segundo:
RetroArch: udev_add_pad: [udev]: Plugged pad: Sony PLAYSTATION(R)3 Controller (054c:0268) on port #0. RetroArch: udev_add_pad: [udev]: Pad #0 (/dev/input/event1) supports 0 force feedback effects. RetroArch: udev_add_pad: [udev]: Plugged pad: Sony PLAYSTATION(R)3 Controller (054c:0268) on port #1. RetroArch: udev_add_pad: [udev]: Pad #1 (/dev/input/event2) supports 0 force feedback effects. RetroArch: input_joypad_init_first: Found joypad driver: "udev". Found joypad driver: udev Using joypad: Sony PLAYSTATION(R)3 Controller Joypads tend to have stale state after opened. Press some buttons and move some axes around to make sure joypad state is completely neutral before proceeding. When done, press Enter ... Configuring binds for player #2 on joypad #1. [...]
Para finalizar, copia ambas configuraciones en el archivo de configuración general y reinicia la RPi para aplicar los cambios:
cat jugador*.cfg >> /opt/retropie/configs/all/retroarch.cfg sudo reboot
Si visualizas el fichero anterior, verás que se ha copiado la configuración para ambos mandos al final del mismo. En mi caso, he configurado ambos mandos de la misma forma. Si tienes dos mandos de PS3, puedes incluso copiar éstas líneas al final de tu fichero retroarch.cfg y ahorrarte los pasos anteriores:
input_player1_joypad_index = "0" input_player1_b_btn = "14" input_player1_y_btn = "13" input_player1_select_btn = "0" input_player1_start_btn = "3" input_player1_up_btn = "4" input_player1_down_btn = "6" input_player1_left_btn = "7" input_player1_right_btn = "5" input_player1_a_btn = "13" input_player1_x_btn = "12" input_player1_l_btn = "10" input_player1_r_btn = "11" input_player1_l2_btn = "8" input_player1_r2_btn = "9" input_player1_l3_btn = "1" input_player1_r3_btn = "2" input_player1_l_x_plus_axis = "+0" input_player1_l_x_minus_axis = "-0" input_player1_l_y_plus_axis = "+1" input_player1_l_y_minus_axis = "-1" input_player1_r_x_plus_axis = "+2" input_player1_r_x_minus_axis = "-2" input_player1_r_y_plus_axis = "+3" input_player1_r_y_minus_axis = "-3" input_player2_joypad_index = "1" input_player2_b_btn = "14" input_player2_y_btn = "13" input_player2_select_btn = "0" input_player2_start_btn = "3" input_player2_up_btn = "4" input_player2_down_btn = "6" input_player2_left_btn = "7" input_player2_right_btn = "5" input_player2_a_btn = "13" input_player2_x_btn = "12" input_player2_l_btn = "10" input_player2_r_btn = "11" input_player2_l2_btn = "8" input_player2_r2_btn = "9" input_player2_l3_btn = "1" input_player2_r3_btn = "2" input_player2_l_x_plus_axis = "+0" input_player2_l_x_minus_axis = "-0" input_player2_l_y_plus_axis = "+1" input_player2_l_y_minus_axis = "-1" input_player2_r_x_plus_axis = "+2" input_player2_r_x_minus_axis = "-2" input_player2_r_y_plus_axis = "+3" input_player2_r_y_minus_axis = "-3"

Has realizado una configurado de tus mandos que será común para todos los emuladores, pero sin quieres personalizar la configuración para un emulador en concreto, simplemente debes repetir los mismos pasos modificando el fichero sobre el que se copia la configuración final. Es decir, si quieres que esta configuración sólo tenga efecto en el emulador de Super Nintendo, deberías realizar todos los pasos y finalmente hacer:
cat jugador*.cfg >> /opt/retropie/configs/snes/retroarch.cfg sudo reboot
Espero que te haya resultado útil este pequeño tutorial. Si tienes cualquier duda o problema durante el proceso, ¡deja tu comentario!
¡Nos leemos en Twitter! 😉