Tuto faire fonctionner Xbox 360 Filaire sous Retroarch (l2 et r2 compris)



  • Bonjour, Je pense avoir réussi à configurer complètement la manette xbox 360 Filaire voici mes avancées: Tout d'abord le récapitulatif du mappage des boutons et des axes avec les numéros pour une MANETTE XBOX360 FILAIRE. Boutons: A = bouton no 0 B = bouton no 1 X = bouton no 2 Y = bouton no 3 Bouton index gauche (l) = bouton no 4 Bouton index droit (r) = bouton no 5 Back/Select = bouton no 6 Start = bouton no 7 Bouton Xbox = bouton no 8 Joystick de gauche pressé = bouton no 9 Joystick de droite pressé = bouton no 10 Joystick gauche: Gauche = -0 Droite = +0 Haut = -1 Bas = +1 Joystick droit: Gauche = -3 Droite = +3 Haut = -4 Bas = +4 Trigger Gauche: Appuyé = +2 Relaché = -2 Trigger Droit: Appuyé = +5 Relaché = -5



  • Voici la partie interessante de mon fichier es_input.cfg qui se trouve dans root/.emulstation/ (à modifier/éditer manuellement)

    <inputConfig type="joystick" deviceName="Microsoft X-Box 360 pad" deviceGUID="030000005e0400008e02000010010000">
                    <input name="a" type="button" id="1" value="1" />
                    <input name="b" type="button" id="0" value="1" />
                    <input name="down" type="hat" id="0" value="4" />
                    <input name="hotkey" type="button" id="8" value="1" />
                    <input name="joystickleft" type="axis" id="0" value="-1" />
                    <input name="joystickup" type="axis" id="1" value="-1" />
                    <input name="left" type="hat" id="0" value="8" />
                    <input name="pagedown" type="button" id="5" value="1" />
                    <input name="pageup" type="button" id="4" value="1" />
                    <input name="right" type="hat" id="0" value="2" />
                    <input name="select" type="button" id="6" value="1" />
                    <input name="start" type="button" id="7" value="1" />
                    <input name="up" type="hat" id="0" value="1" />
                    <input name="x" type="button" id="3" value="1" />
                    <input name="y" type="button" id="2" value="1" />
                    <input name="triggerleft" type="trigger" id="2" value="1" />
                    <input name="triggerright" type="trigger" id="5" value="1" />
                    <input name="joystickrightleft" type="axis" id="3" value="-1" />
                    <input name="joystickrightup" type="axis" id="4" value="-1" />
            </inputConfig>


  • Ensuite le fichier CreateRetroarchConfig.sh (uniquement les parties interessantes) (à modifier/éditer manuellement): declare -A retroarchjoysticks retroarchjoysticks['joystickup']='l_y' retroarchjoysticks['joystickleft']='l_x' retroarchjoysticks['triggerleft']='l2' retroarchjoysticks['triggerright']='r2' retroarchjoysticks['joystickrightleft']='r_x' retroarchjoysticks['joystickrightup']='r_y' declare -A typetoname typetoname['button']='btn' typetoname['hat']='btn' typetoname['axis']='axis' typetoname['trigger']='trigger' typetoname['key']='key' if [[ "$type" == "hat" ]]; then #checking if dir if [[ ${retroarchdir[$input]} ]]; then echo "input_${retroarchhat[$value]}btn = h${id}${retroarchhat[$value]}" >> "$configfile" fi fi **if [[ ${retroarchspecials[$input]} ]]; then if [[ "$type" == "hat" ]]; then echo "input${retroarchspecials[$input]}${typetoname[$type]} = h${id}${retroarchhat[$value]}" >> "$configfile" else echo "input${retroarchspecials[$input]}${typetoname[$type]} = $id" >> "$configfile" fi fi** if [[ $input == "hotkey" ]] && [ "$player" == "1" ]; then sed -i "s/input_enable_hotkey.*/input_enable_hotkey_${typetoname[$type]} = $id/g" "$retroarch_config" fi # Gestion des joystick supplementaires if [[ ${retroarchjoysticks[$input]} ]] && [[ "$type" == "axis" ]];then echo "input_${retroarchjoysticks[$input]}minus${typetoname[$type]} = $id" >> "$configfile" if [[ "$value" == "-1" ]]; then newaxis="+$originid" else newaxis="-$originid" fi echo "input_${retroarchjoysticks[$input]}plus${typetoname[$type]} = $newaxis" >> "$configfile" fi if [[ ${retroarchjoysticks[$input]} ]] && [[ "$type" == "trigger" ]];then echo "input_${retroarchjoysticks[$input]}_axis = +$id" >> "$configfile" fi



  • Le résultat est observable dans le fichier Microsoft X-Box 360 pad.cfg dans le repertoire /recalbox/configs/retroarch/inputs (Ce fichier n'est pas a éditer manuellement puisque qu'il s'auto-écrit tout seul à chaque fois que vous essayez de lancer un jeu avec retroarch, il n'est donc pas nécessaire de l'éditer manuellement, c'est complètement inutile puisque votre édition sera effacée par le script de configuration des manettes par contre je mets ici le contenu du fichier pour que vous puissiez comparer avec le votre une fois que le script ce sera exécuté. Si cela ne correspond pas cela signifie que vos modifications des deux fichiers juste au dessus ne sont pas correctes...). input_device = "Microsoft X-Box 360 pad" input_driver = "udev" input_a_btn = 1 input_b_btn = 0 input_menu_toggle_btn = 0 input_down_btn = h0down input_state_slot_decrease_btn = h0down input_l_x_minus_axis = -0 input_l_x_plus_axis = +0 input_l_y_minus_axis = -1 input_l_y_plus_axis = +1 input_left_btn = h0left input_rewind_btn = h0left input_r_btn = 5 input_l_btn = 4 input_screenshot_btn = 4 input_right_btn = h0right input_hold_fast_forward_btn = h0right input_select_btn = 6 input_start_btn = 7 input_exit_emulator_btn = 7 input_up_btn = h0up input_state_slot_increase_btn = h0up input_x_btn = 3 input_load_state_btn = 3 input_y_btn = 2 input_save_state_btn = 2 input_l2_axis = +2 input_r2_axis = +5 input_r_x_minus_axis = -3 input_r_x_plus_axis = +3 input_r_y_minus_axis = -4 input_r_y_plus_axis = +4



  • Ensuite lorsque je lance recalbox puis l'emulateur snes puis dans les options de retroarch, toute la manette xbox 360 filaire est reconnue automatiquement et configurée automatiquement. J'ai essayé d'être le plus clair possible et de partager un maximum mais comme je suis une grosse quiche en informatique ça ne correspond peut être pas à vos attentes... Je reste disponible si nécessaire... Amitié à tous et encore merci d'avoir partagé le projet recalbox!


  • Staff
    Developer
    Global moderator
    Team

    Salut, Dans la 3.29 en l'état les hats devraient marcher :

    input_state_slot_increase_btn = h0up

    type= »trigger »

    Cela ne marche pas avec les buttons ? Emulationstation te met le type trigger ? Tu utilise le mapping snes pour les touches alors ?



  • Dans la 3.29 en l’état les hats devraient marcher : input_state_slot_increase_btn = h0up

    Je pense que oui, dans la version antérieure qui ne fonctionnait pas, la ligne était initialement celle-ci: input_state_slot_increase_btn = 0 C'est pour cette raison que j'avais rajouté/modifié la condition sur le "hat":

    if [[ ${retroarchspecials[$input]} ]]; then
    if [[ « $type » == « hat » ]];
    then
    echo « input_${retroarchspecials[$input]}_${typetoname[$type]} = h${id}${retroarchhat[$value]} » >> « $configfile »
    else
    echo « input_${retroarchspecials[$input]}_${typetoname[$type]} = $id » >> « $configfile »
    fi
    fi


  • Pour le type "trigger" que j'ai du rajouter cela vient de Retroarch/Emustation. Il semblerait que Retroarch classifie le trigger comme un axe mais qui à la différence des axes classiques (joypad par exemple) n'a qu'une valeur (positive ou négative au lieu des deux. Je m'explique cf fichier Microsoft X-Box 360 pad.cfg: Pour le joystick de gauche par exemple on a:

    input_l_x_minus_axis = -0
    input_l_x_plus_axis = +0
    input_l_y_minus_axis = -1
    input_l_y_plus_axis = +1
    

    Alors que pour les gachettes on aura (pour que cela fonctionne c'est à dire pour que l'autoconfiguration fonctionne) uniquement: input_l2_axis = +2 (Il n'y a plus le 'minus_' ou le 'plus_'). Un détail très important: le signe '+' devant le '2' est vital pour que l'autoconfiguration fonctionne. Pour que le script CreateRetroarchConfig.sh fasse la difference j'ai été obligé de créer le type 'trigger' et de rajouter la ligne:

    if [[ ${retroarchjoysticks[$input]} ]] && [[ « $type » == « trigger » ]];then
    echo « input_${retroarchjoysticks[$input]}_axis = +$id » >> « $configfile »
    fi
    

    Dans la ligne ci-dessus le point clef est le '_axis' et surtout pas autre chose d'où la difficulté de faire reconnaître correctement les gachettes. Bien entendu il faut aussi avoir modifié le fichier es_input.cfg de cette manière cf premier post de ce thread.

    <input name="triggerleft" type="trigger" id="2" value="1" />
    <input name="triggerright" type="trigger" id="5" value="1" />


  • Tu utilise le mapping snes pour les touches alors ?

    J'ai gardé les conventions que tu as choisi (pour conserver la cohérence) Pour clarifier: le bouton A (pad Xbox 360) qui a un code 0 devient sous Retroarch le bouton B (pad snes) le bouton B (pad Xbox 360) qui a un code 1 devient sous Retroarch le bouton A (pad snes) le bouton X (pad Xbox 360) qui a un code 2 devient sous Retroarch le bouton Y (pad snes) le bouton Y (pad Xbox 360) qui a un code 3 devient sous Retroarch le bouton X (pad snes) Cela se traduit dans le fichier es_input.cfg (le reste du fichier est au début de ce thread) par:

    <input name="a" type="button" id="1" value="1" />
    <input name="b" type="button" id="0" value="1" />
    <input name="x" type="button" id="3" value="1" />
    <input name="y" type="button" id="2" value="1" />
    

    Je suis en déplacement jusqu'a vendredi soir (sans accès au pi mais avec un accès au net). Je reste disponible si une partie n'est pas claire... Je me doute que c'est pas forcément évident! Amitié,


  • Staff
    Developer
    Global moderator
    Team

    name="triggerleft" type="trigger"

    Je bloque la dessus. type="trigger" c'est toi ou emulationstation ? Faudrait vraiment que je me prenne une manette xbox360



  • <input name="triggerleft" type="trigger" id="2" value="1" />
    <input name="triggerright" type="trigger" id="5" value="1" />
    <input name="joystickrightleft" type="axis" id="3" value="-1" />
    <input name="joystickrightup" type="axis" id="4" value="-1" />
    

    C'est moi qui ait rajouté à la main ces 4 lignes dans le fichier. Le reste est généré d'office dans recalbox (par l'un de tes scripts ou par emulationstation, je ne saurai dire...). Par contre je n'ai aucune idée de la manière dont est généré initialement le fichier es_input.cfg? Ni comment fonctionne l'interface que tu as développé pour configurer manuellement les manettes dans emulationstation... C'est la raison pour laquelle j'ai rajouté manuellement les 4 lignes dans es_input.cfg. Ps: Lorsque l'on fait un copié coller sans la balise 'code', le site recalbox change les double cotes (touche 3 du clavier au dessus du 'e' en double chevron >>. (cf ton post du dessus) Donc attention à ceux qui voudront faire des copier coller des lignes de codes dans leurs propres fichiers... Amitié,


  • Staff
    Developer
    Global moderator
    Team

    <input name="pagedown" type="button" id="2" value="1" />

    Et avec ca ca passais pas ? J'ai pas eu vent de probleme avec les L1 et R1.



  • Le type "button" passera pour L1 et R1 car après le passage par la moulinette CreateRetroarchConfig.sh ils ressortiront en: input_r_btn = 5 input_l_btn = 4 Cette appellation correspond à celle attendue par Retroarch et donc ils seront configuré automatiquement. C'est donc normal que ça fonctionne pour L1 et R1. Par contre le type "button" ne passera 'jamais' pour L2 et R2 car ils apparaitraient alors après passage de la moulinette CreateRetroarchConfig.sh en: input_l2_btn = ??? Alors que Retroarch attend l'entrée suivante: input_l2_axis = +2 C'est le '_axis' qui permet la bonne configuration automatique par Retroarch.



  • Bonjour, est-ce qu'il serait possible d'avoir le fichier  CreateRetroarchConfig en attachement pour pouvoir comparer avec le mien?   Merci d'avance!



Want to support us ?

300
Online

81.4k
Users

22.2k
Topics

161.4k
Posts