Configurar un Mando que da Problemas en RetroPie

La mayoría de los mandos se conectan y configuran perfectamente en RetroPie. Pero en algunas ocasiones, los mandos dan algún que otro problema: botones que no funcionan correctamente, no se asignan bien, fallos con emuladores concretos, etc.

Algunos emuladores concretos son quizá un poco más problemáticos que el resto. La mayoría de los emuladores más problemáticos son los que no se encuentran en Retroarch. Sin irnos a emuladores más antiguos, los de más interés que suelen fallar son: Dreamcast, Nintendo 64, PiBFA. Por suerte, esto tiene muy fácil arreglo. Y para solucionarlo, lo único que tenemos que hacer es acceder a los archivos y configurarlos manualmente. Así que vamos manos  a la obra.

Pasos Previos

Lo primero que tenemos que hacer es encender nuestra máquina y averiguar como están puestos los números de los botones de los controles. Para esto, vamos a conectar un teclado a nuestra máquina (RetroPie) y vamos a pulsar F4.

Esto va a cerrar EmulationStation y a abrir la consola de comandos. Una vez dentro, tecleamos lo siguiente:

sudo jstest /dev/input/js0

Nos aparecerá algo como esto:

Configurar mando complicado en RetroPie

Con esto, cada vez que pulsemos un botón, analógico o cruceta, unos de los valores va a pasar de off a on. En mi caso, voy a pulsar el que yo he configurado como botón A y pasa lo siguiente:

Configurar mando complicado en RetroPie

Como podemos comprobar, en este mando, al pulsar lo que quiero que sea el botón A, me indica que es el botón número 4. Toca entonces pulsar 1 a 1 los botones, y apuntar a que se corresponde cada botón en el mando

Y bien. Ahora que ya sabemos como va la distribución de los botones, pulsamos Ctrl + C para salir del sistema de reconocimiento de botones y vamos a proceder a configurar manualmente los emuladores más “quisquillosos“.

Emulador de Nintendo 64

Para modificar el archivo de configuración de Nintendo 64, tenemos que escribir lo siguiente:

cd /opt/retropie/configs/n64

Después, vamos a editar el archivo InputAutoCfg.ini con el siguiente comando:

sudo nano InputAutoCfg.ini

Nos va a parecer algo parecido a lo siguiente:

Configurar mando complicado en RetroPie

He marcado en la imagen los 2 mandos que yo tengo conectados a mi máquina con RetroPie. Ambos se llaman usb gamepad. Pero en vuestro caso, el nombre puede ser diferente. Como se puede ver, en la lista tenemos enumerados los diferentes botones que hay y cómo están asignado. Para modificarlos, tan sólo tenemos que cambiar el valor correspondiente por el nuevo valor de entre los botones que hemos guardado antes. Eso si, tened cuidado de no tener botones repetidos:

Z Trig = button(1)
Start = button(9)
C Button D = button(4)
A Button = button(2)
R Trig = button(0)
C Button U = button(8)
B Button = button(3)
L Trig = button(7)
X Axis = axis(0-, 0+)
Y Axis = axis(1-, 1+)

Ahora sustituyo por la nueva configuración y la cosa queda así:

Configurar mando complicado en RetroPie

Una vez que hayamos colocado correctamente los números correspondientes al botones, pulsamos Ctrl + o para guardar los cambios y después Ctrl + x para salir.

Emulador PiFBA

Este es un emulador de arcade que se usa como “sustitutivo” del emulador FB Alpha. No he detectado ningún problema con él en RetroPie normalmente. Pero si que lo he detectado cuando se trata de mandos arcade. Muchos de ellos no se configuran correctamente. Así mismo, algunas placas de drivers de mandos arcade de la marca Xin Mo Controller, no se detectan correctamente en RetroPie. He visto casos de estas placas en las que no funcionaban los Axis (donde se conectan los joystick). Esto obliga a conectar los joystick a botones normales de la controla dora. Pues bien. PiFBA no reconoce los mandos de esta manera. Por lo que vais a tener un problema en estas situaciones. Aun así, si encontráis problemas con él, podemos acceder a él de la siguiente manera:

cd /opt/retropie/configs/fba

Después, vamos a editar el archivo fba2x.cfg con el siguiente comando:

sudo nano fba2x.cfg

nos va a aparecer un texto como el siguiente:

[Joystick]
# Get codes from "jstest /dev/input/js0"
# from package "joystick"
# Defaults to XBOX 360 Controller
A_1=1
B_1=2
X_1=0
Y_1=3
L_1=4
R_1=5
START_1=8
SELECT_1=7
#Joystick axis
JA_LR=1
JA_UD=0
#player 2 button configuration
A_2=1
B_2=0
X_2=2
Y_2=3
L_2=4
R_2=5
START_2=7
SELECT_2=6
#Joystick axis
JA_LR_2=0
JA_UD_2=1

Al igual que antes, sólo tenemos que colocar los botones correspondientes al primer jugados (A_1, B_1, X_1, Y_1, L_1, R_1, START_1, SELECT_1) y los del jugador 2 (A_2, B_2, X_2, Y_2, L_2, R_2, START_2, SELECT_2). Y una vez que lo hayamos hecho, pulsamos de nuevo Ctrl + o para guardar los cambios y después Ctrl + x para salir.

Emulador de Dreamcast

Este es quizá el más complicado de todos. Pero tampoco es una locura. Para poder configurarlo, primero hay que meter el comando donde está la ruta de configuración (como en los casos anteriores):

cd /opt/retropie/configs/dreamcast/mappings

Pero en este caso, tenemos que saber como se llama el archivo de configuración del mando. Para ello tecleamos:

ls

Nos va a aparecer algo parecido a esto:

Configurar mando complicado en RetroPie

En mi caso, como hemos visto ya con anterioridad, mi mando es usb gamepad. Por lo que se corresponderá al archivo: controller_usbgamepad.cfg. Así que escribimos a continuación:

sudo nano controller_usbgamepad.cfg

Y ahora es donde vais a ver porque esto es un poco más difícil. Nos va a aparecer un documento parecido a este:

[emulator]
mapping_name = usb gamepad           
btn_escape = 294

[dreamcast]
btn_a = 290
btn_b = 292
btn_c =
btn_d =
btn_x = 291
btn_y = 296
btn_z =
btn_start = 297
btn_dpad1_left =
btn_dpad1_right =
btn_dpad1_up =
btn_dpad1_down =
btn_dpad2_left =
btn_dpad2_right =
btn_dpad2_up =
btn_dpad2_down =
axis_x = 0
axis_y = 1
axis_trigger_left =
axis_trigger_right =

[compat]
btn_trigger_left = 289
btn_trigger_right = 288
axis_dpad1_x =
axis_dpad1_y =
axis_dpad2_x =
axis_dpad2_y =
axis_x_inverted = no
axis_y_inverted = no
axis_trigger_left_inverted =
axis_trigger_right_inverted =

Como podéis ver, los números no corresponden a los números reales de los botones. EN todos los casos que yo he visto, lo números arrancan en el 288. Por lo que la opción mas fácil es ir probando a ojimetro. Primero arrancáis un juego, pulsáis los botones para ver que hacen y los apuntáis. Y mirando el esquema de configuración del mando de la dreamcast, que es este:

Configurar mando complicado en RetroPie

Los reconocéis como más os gusten y listo. Una vez más, Ctrl + o para guardar los cambios y después Ctrl + x para salir.

Y con esto podemos dar por terminada la configuración de los mandos en nuestra máquina Retropie. Si tenéis alguna dudo o no lográis configurar algo correctamente, no dudéis en preguntarme lo que necesitéis en los comentarios.

8 replies on “Configurar un Mando que da Problemas en RetroPie

  • Fernando

    Muy buenas y gracias por el completo tutorial, muy detallado.

    Mi mando es tipo XBOX (no el original, uno chino) y al no reconocerme el Shenmue de la Dreamcast probé a seguir estos pasos.

    Mi problema es que después de haber entrado en sudo nano controller_(nombre_ de_mi_mando).cfg cambié un número y me han desaparecido todas las letras del documento que aparecen debajo de [emulator].

    ¿Existiría alguna forma de revertir esto? Muchísimas gracias y a tope con lo retro.

    Responder
    • César Santiago Molina

      Hola Fernando.

      Claro que se puede. Tienes 3 opciones. Revísate las 3 a ver cual te convence más antes de empezar.

      La más rápida y fácil. Volver a configurar los mandos con la opción de configuración del menú de RetroPie. Lo malo de esto es que si cambiaste la configuración de mandos de algún otro emulador, te la va a machacar.

      La otra es que arranques el sistema que muestra como se nomenclaturizan los botones en dreamcast y después los asignes manualmente. Se hace del siguiente modo:

      Con un teclado conectado pulsas F4 (como se ve en el tutorial para acceder a la consola de comandos). Una vez que te la carga, pones:

      evtest
      

      Al ponerlo, te va a mostar el conjunto de mandos que te detecta y les asignará un número a cada uno de ellos. Al final te va a preguntar que mando es el que estás tratando de mirar. Tienes que meter el número correspondiente. Una cosa parecida a esta:

      No device specified, trying to scan all of /dev/input/event*
      Not running as root, no devices may be available.
      Available devices:
      /dev/input/event0:	usb gamepad           
      /dev/input/event1:	USB USB Keyboard
      /dev/input/event2:	USB USB Keyboard
      Select the device event number [0-2]:
      

      Vamos a suponer que quieres configurar el mando 0. Pones un 0 y le das a intro. Te va a mostrar algo como esto:

      Input driver version is 1.0.1
      Input device ID: bus 0x3 vendor 0x810 product 0xe501 version 0x110
      Input device name: "usb gamepad           "
      Supported events:
        Event type 0 (EV_SYN)
        Event type 1 (EV_KEY)
          Event code 288 (BTN_TRIGGER)
          Event code 289 (BTN_THUMB)
          Event code 290 (BTN_THUMB2)
          Event code 291 (BTN_TOP)
          Event code 292 (BTN_TOP2)
          Event code 293 (BTN_PINKIE)
          Event code 294 (BTN_BASE)
          Event code 295 (BTN_BASE2)
          Event code 296 (BTN_BASE3)
          Event code 297 (BTN_BASE4)
        Event type 3 (EV_ABS)
          Event code 0 (ABS_X)
            Value    127
            Min        0
            Max      255
            Flat      15
          Event code 1 (ABS_Y)
            Value    127
            Min        0
            Max      255
            Flat      15
        Event type 4 (EV_MSC)
          Event code 4 (MSC_SCAN)
      Properties:
      Testing ... (interrupt to exit)
      

      Si te fijas, te está mostrando todos los números que tienes y su código. Fíjate que pone: Testing … (interrupt to exit). Si pulsas cualquier botón, te va a indicar el valor del mismo. Tal que así:

      Event: time 1487236362.260921, type 4 (EV_MSC), code 4 (MSC_SCAN), value 90003
      Event: time 1487236362.260921, type 1 (EV_KEY), code 290 (BTN_THUMB2), value 1
      Event: time 1487236362.260921, -------------- EV_SYN ------------
      

      Al pulsar el botón que he pulsado, me ha indicado que ese es el que corresponde al 290. Así puedes averiguar que es cada 1 de ellos. Cierras con ctrl + C y ya puedes volver al archivo de configuración.

      Existe una tercera opción. Pero a mi no me ha dado buenos resultados. También es cierto que sólo la he usado 1 vez. Pero existe un sistema para configurar únicamente el mando en reicast. Se accede de la siguiente forma:

       cd /opt/retropie/emulators/reicast/bin
      

      Después tecleas el comando:

      ./reicast-joyconfig
      

      Te va a pedir el mando que estás configurando. Una vez se lo pongas, te va a decir que metas uno a uno lo botones, crucetas y analógicos pulsándolos. Cuando acabes, se supone que el mando estará configurado. Pero a mi esto no me a llegado a funcionar bien realmente la vez que lo he probado. Y después de hacerlo tuve que reajustar manualmente los mandos. Eso si, si lo que ocurre es quede te han perdido los mandos, con esto se reconfiguran de nuevo.

      Espero haberte ayudado.

      Responder
      • Fernando

        Bonísima y completísima respuesta. Lo voy a dar por imposible, si bien tu ayuda ha sido inmejorable. De intentar configurarlo durante más tiempo la vía correcta sería llevarlo a la tienda, que para eso está.

        He copiado los códigos resultado de pulsar los diferentes botones del mando en el “evtest” y los he introducido en el menú [emulator] que sale tras poner sudo nano controller (nombre_de_mi_mando).cfg.

        Tal que así.
        Si debajo de [emulator] aparecía
        [dreamcast]
        btn_a= 0x130
        btn_b= 0x131

        puse en su lugar

        btn_a= 304
        btn_b= 305

        Y así y sigue sin funcionar. No sé si es porque puse el código que me daba la opción de evtest de esa forma o porque debería haber puesto 0x304.

        Mil gracias por todo.

        Responder
        • César Santiago Molina

          Siempre te queda:

           cd /opt/retropie/emulators/reicast/bin
          ./reicast-joyconfig
          

          Con eso los puedes configurar y te crea el archivo de nuevo.

          Cualquier duda que tengas yo estoy encantado de resolvertela siempre que sepa claro 🙂

          Responder
          • Fernando

            Ya probé a utilizar esa opción del reicast, que no la había utilizado antes porque no recordaba donde estaba el botón de guión en mi teclado (ya lo hallé hoy) y era similar a la del “evtest”, por lo que sin resultado.

            También introduje correctamente el comando “sudo nano controller” (había puesto los códigos que me daba el “evtest” en otro mando equivocado, porque el correcto no alcanzaba a teclearlo por el guión medio y otras teclas que no obtuve hasta hoy) y coloqué ahí los códigos en las líneas btn_a =, btn_b= y tampoco, el resultado fue que seguía sin reconocerme el Shenmue el teclado.

            Pero me doy por satisfecho por lo aprendido y por haberlo intentado lo máximo posible, habiendo recibido un soporte que ni los de la tienda me han provisto, lo cual es muy de agradecer (me ofrecieron ir si lo necesitaba, pero también es cierto que tampoco me respondieron a un correo solicitándoles que me configuraran el mando analógico y me entregaron la Raspberry con una tarjeta de 32GB en la que no funcionaba ningún juego de Neo Geo).

            Solo me queda agradecer tu eterno altruísmo y dedicación a lo retro.

            P.D: Si necesitáis ayuda para sacar los caracteres especiales del teclado Rii Mini i28C por si alguien os lo pregunta o algo que sepa, no dudéis en preguntármelo.

            Te deseo mucho éxito en tu empresa 🙂

          • César Santiago Molina

            Para mi es un placer ayudar. Con cualquier cosa.

            Lo del teclado creo que se arregla cambiándole la localización en el menú para que esté en región ES. Supongo que haré otro tutorial de eso. Yo por línea general accedo usando Terminal, ya que trabajo con Mac. Por lo que no necesito conectar teclado a RetroPie. Y lo de los juegos de Neo Geo es normal. En la mayoría de sitios lo que hacen es que bajan un paquete de juegos, los meten y a volar. Ni prueban ni nada. Yo los de arca de al menos los compruebo. A parte de que uso los paquetes adaptados específicamente a la versión del emulador que trae RetroPie. Esto desde luego minimiza errores. Y aun así, los hay.

            Gracias. Y una vez más, para lo que necesites, ya sabes donde encontrarme!

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *