Problème de touches Recalbox / Picade



  • Bonjour à tous,

    Je viens vers vous puisque j'ai un gros problème.

    Après m'être monté mon propre bartop Picade, avoir installé Recalbox et mis des ROMs dessus, j'ai voulu y jouer (logique).

    Seulement voilà, seules 2 de mes 6 touches du panneau central ont un effet lorsque je joue. Et ceci ne change pas lorsque je reconfigure les touches autrement sur le menu recalbox (je précise en revanche que lorsque je change le mapping, chaque touche fonctionne correctement sur le menu recalbox : tout problème de branchement / dysfonction est donc à exclure).

    En revanche, aucun souci avec ma manette xbox 360 (mais bon, j'aimerais bien pouvoir jouer avec ce que je me suis acheté tout de même).

    Petite précision : ce phénomène survient pour n'importe quel émulateur et n'importe quel jeu associé que j'ai pu tester.

    Aussi, si vous pouviez m'aider à résoudre ce problème, je vous en serais reconnaissant.

    Merci d'avance !


  • Moderator
    Team

    Yo

    Pourrais-tu préciser comment tes boutons sont cablés par rapport au pi ? Sur GPIO ou sur une carte d'interface genre encodeur USB ? Si tu as une telle carte et qu'elle traduit ton stick en clavier, ca va etre compliqué ouisqu'on ne supporte pas les claviers, même si on a éventuellement un élément de solution.



  • Salut,

    Tout d'abord, merci de t'intéresser à mon cas :).

    Alors, le néophyte que je suis ne saurait te répondre avec certitude, mais en tous cas, mon Pi est bien relié à une autre carte par USB.

    Une image du montage en question si ça peut t'aider à mieux comprendre :

    alt text

    Donc la carte que tu vois au milieu est reliée à mon Pi par USB.

    Autre précision : lorsque je configure mes touches, Recalbox considère que je configure un clavier, avec :

    • le joystick : haut noté "Key up", droit noté "Key right", etc
    • les boutons du panneau central notés "Key left shift, Key left CTRL, Key Z, Key Left Alt, Key space, Key X"
    • les boutons en bas (ceux censés être utilisés pour introduire des pièces / Select, et faire start) respectivement Key C (à gauche) et Key S (à droite)
    • les boutons à droite "Key return" et "Key escape"

    Et donc, pour être précis, en jeu, seuls fonctionnent :

    • le joystick
    • Key Z (bouton 5 sur l'image)
    • Key X (bouton 6)
    • Key return (qui sert toujours de bouton START, quel que soit ce que je configure)
    • Key escape (qui sert toujours de bouton "échap / retour du jeu vers l'écran d'accueil")
    • et selon les jeux, quelquefois Key S.

    Voilà, désolé du pavé ; j'ai vraiment essayé de détailler au maximum.

    En tous cas, merci de ton aide :).


  • Moderator
    Team

    Bonjour
    as tu essayé de modifier le firmware de l encodeur usb ?
    info provenant de glooobule https://forum.recalbox.com/topic/1751/stick-clavier-arduino-2-joueurs/16
    https://github.com/DsChAeK/Picade



  • Bonjour,

    Non, je n'avais pas essayé ça (ne savant pas trop quoi faire).

    Je viens donc d'essayer à l'instant, et je rencontre un problème : j'ai suivi toutes les étapes, jusqu'à arriver à l'avant-avant-dernier point : "Select "Tools -> Port -> COMx (Arduino Leonardo)".
    Celui-ci m'est irréalisable puisque la zone "Port", censée déboucher sur un menu déroulant, est grisée ; je ne peux donc rien choisir (et rien n'est sélectionné de base), à la différence des zones Programmer et Board, que j'ai configurées comme il est écrit.

    J'ai tout de même essayé de poursuivre, et ai cliqué sur "Verify/compile", après quoi survient le "error compiling" suivant :

    Arduino: 1.6.5 (Windows 8.1), Board: "Arduino Leonardo"

    Using library EEPROM in folder: C:\Users\Michel\Desktop\Résolution problème touches Picade\arduino-1.6.5-r5\hardware\arduino\avr\libraries\EEPROM

    C:\Users\Michel\Desktop\Résolution problème touches Picade\arduino-1.6.5-r5\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega32u4 -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_LEONARDO -DARDUINO_ARCH_AVR -DUSB_VID=0x2341 -DUSB_PID=0x8036 -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Leonardo" -IC:\Users\Michel\Desktop\Résolution problème touches Picade\arduino-1.6.5-r5\hardware\arduino\avr\cores\arduino -IC:\Users\Michel\Desktop\Résolution problème touches Picade\arduino-1.6.5-r5\hardware\arduino\avr\variants\leonardo -IC:\Users\Michel\Desktop\Résolution problème touches Picade\arduino-1.6.5-r5\hardware\arduino\avr\libraries\EEPROM C:\Users\Michel\AppData\Local\Temp\build4444332636490846625.tmp\Picade.cpp -o C:\Users\Michel\AppData\Local\Temp\build4444332636490846625.tmp\Picade.cpp.o

    Picade.ino:2:20: fatal error: config.h: No such file or directory
    compilation terminated.
    Error compiling.

    Une idée sur ce qui cloche ?



  • Je viens de réessayer avec la version la plus récente de Arduino (1.6.9).
    Cette fois, l'onglet "Tools --> Port" débouche bien sur un "COM3 (Arduino Leonardo)", que j'ai donc sélectionné.

    En revanche, après avoir effectué le "Verify/compile", il y a à nouveau une erreur de compilation.

    Pour les plus courageux et bonnes âmes d'entre vous, je vous mets ci-dessous les erreurs du message :

    Arduino: 1.6.9 (Windows 8.1), Board: "Arduino Leonardo"

    In file included
    from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\USBAPI.h:38:0,
    from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\CDC.cpp:19:

    C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\CDC.cpp:56:71: error: 'USB_EP_SIZE' was not declared in this scope
    D_ENDPOINT(USB_ENDPOINT_OUT(CDC_ENDPOINT_OUT),USB_ENDPOINT_TYPE_BULK,USB_EP_SIZE,0),

    C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\USBCore.h:272:22: note: in definition of macro 'D_ENDPOINT'
    { 7, 5, _addr,_attr,_packetSize, _interval }

    C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\CDC.cpp:57:71: error: 'USB_EP_SIZE' was not declared in this scope
    D_ENDPOINT(USB_ENDPOINT_IN(CDC_ENDPOINT_IN),USB_ENDPOINT_TYPE_BULK,USB_EP_SIZE,0)

    C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\USBCore.h:272:22: note: in definition of macro 'D_ENDPOINT'
    { 7, 5, _addr,_attr,_packetSize, _interval }

    C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\CDC.cpp:66:16: error: 'bool CDC_Setup' redeclared as different kind of symbol
    bool CDC_Setup(USBSetup& setup)

    In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\CDC.cpp:19:0:

    C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\USBAPI.h:263:6: error: previous declaration of 'bool CDC_Setup(Setup&)'
    bool CDC_Setup(Setup& setup);

    C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\CDC.cpp:66:16: error: 'USBSetup' was not declared in this scope
    bool CDC_Setup(USBSetup& setup)

    exit status 1
    Error compiling for board Arduino Leonardo.

    Quelqu'un aurait-il une idée sur quoi faire ?


  • Moderator
    Team

    non du tout. Mais en tout cas tu m'as confirmé que ta carte simule un clavier et non un joystick. Donc soit tu reprogrammes ta carte pour faire du joystick, soit tu me donnes la liste des touches renvoyées par le picade et je pourrai te dire si on a un autre moyen ou pas

    Vraisemblablement ce que tu dois faire c'est https://github.com/DsChAeK/Picade



  • Yep, c'est ce qu'acris m'indiquait de faire, et que j'ai tenté de faire ; mais je ne dépasse pas le stade "Verify/compile" : message d'erreur à chaque fois (malgré les différentes manips que j'ai pu tenter jusque-là) ...

    Si l'erreur vient de ma part, alors je suppose que c'est de la phrase "Extract it and replace the files from your arduino installation directory ../Arduino/hardware/arduino/avr/cores/arduino with those from the extracted subdirectory /USB_HID/ (backup recommended!)" dont j'ai du mal à saisir le sens (personnellement, je comprends qu'il faut remplacer les fichiers du dossier Arduino/hardware/arduino/avr/cores/arduino par ceux (2 fichiers) contenus dans le sous-dossier USB_HID du source.code (.zip) de https://github.com/DsChAeK/Picade, ce qui aboutit à un message d'erreur ; j'ai ensuite essayé d'y mettre également les autres fichiers, sans plus de succès).

    Sinon, pour les touches :

    • joystick : haut = key up, bas = key down, gauche = key left, droite = key right
    • bouton 1 = key left ctrl
    • bouton 2 = key left alt
    • bouton 3 = key space
    • bouton 4 = key left shift
    • bouton 5 = key Z
    • bouton 6 = key X
    • bouton 1/4 "quarter" (devant la borne, à gauche) = key C
    • bouton 1 up (devant la borne, à droite) = key S
    • bouton ENT (à droite de la borne, au fond) = key return

    3 boutons non configurables :

    • bouton ESC (à droite de la borne, plus proche de moi) = key escape
    • bouton Volume + : ne renvoie rien lors du mapping (mais augmente le volume)
    • bouton Volume - : ne renvoie rien lors du mapping (mais diminue le volume).

  • Moderator
    Team

    En attendant : https://github.com/recalbox/recalbox-os/wiki/keyboard-encoder-configuration-(EN))

    Pour la doc, je comprends que tu dois les remplacer HID.cpp et USBAPI.h de Arduino studio par ceux livrés dans picade. Ensuite, tu dois ouvrir le picade.ino qui lui est le projet à compiler



  • Bonjour ici,

    C'est bon, j'ai réussi à modifier le firmware !
    Du coup, maintenant, lorsque je configure mes boutons, Recalbox détecte une "manette Arduino LLC Arduino Leonardo" ; et les boutons fonctionnent dans les jeux !

    Si jamais quelqu'un se trouve dans la même situation que moi, voici ce qu'il fallait faire :

    • remplacer les HID et USBAPI de Arduino par ceux contenus dans le sous-dossier USB_HID, comme écrit ici
    • placer tous les autres fichiers téléchargés (config.h, joystick.cpp, ...) dans Arduino --> hardware --> arduino --> avr --> libraries --> EEPROM, puis faire verify/compile dans Arduino IDE ; et là c'est bon
    • puis upload.

    Concernant l'upload, il est apparemment très fréquent que celui-ci plante. Les raisons sont extrêmement variées et multiples (présence de virtual daemon tools, souris bluetooth, problème de détection de périphérique, ...), et j'ai passé 2 heures à les chercher sans succès.
    J'ai alors tenté sur un autre ordinateur, et l'upload a fonctionné du premier coup (ce dernier était sur windows 10 alors que le premier était sur windows 8 ; allez savoir si ça a un lien ou non).

    En revanche, j'ai un petit souci, puisque je n'ai plus que 8 boutons configurables sur les 10 possibles. Je ne sais pas si ça pose problème dans la mesure où les jeux d'arcade ne nécessitent pas beaucoup de touches, mais c'est un peu dommage quand même. Les 2 boutons qui ne réagissent plus sont ceux de devant : le 1UP et le 1/4.

    Et puisque j'y suis, j'aurais voulu savoir si vous connaissiez un moyen autre que celui-ci (déjà tenté, ça n'a rien modifié) pour forcer recalbox à prendre le son via HDMI.

    En tous cas, merci à vous !


  • Moderator
    Team

    On gère 13 boutons par joueur, donc ton histoire me surprend. Sûrement que ton 1UP et 1/4 ne renvoient pas des évènements joystick. Le mec qui a fait le projet pour basculer ne picade en pad utilise recalbox (DsChAeK)

    Tu peux tester qqc ? Connecte-toi en SSH, tape evtest, selectionne ton arduino, et regarde si tes boutons réagissent et s'ils renvoient bien qqc (que tu devrais me montrer d'ailleurs).

    Forcer le son en HDMI ? Explique moi pk. Au pire c'est dans le /boot/config.txt que tu peux le faire



  • Après avoir fait la manip que tu m'as indiquée, il s'avère que les boutons 1UP et 1/4 (et volumes + et -, mais eux fonctionnent), à la différence des autres, ne renvoient absolument rien :( (j'ai tout de même vérifié, et ces boutons sont bien branchés).

    Pour le son, je demandais parce qu'il était instable ; mais je viens de vérifier et c'était dû à ma prise jack qui était mal enfoncée. Tout va mieux depuis.


  • Moderator
    Team

    Je te laisse voir avec l'auteur pourquoi il manque des boutons



  • Ça marche, je vais faire ça.
    S'il y a du nouveau, je re-posterai pour en faire part à tous.

    Merci pour ton aide en tous cas :).



  • Problème résolu !

    J'ai contacté l'auteur, et quelques heures après, il m'a indiqué avoir résolu le problème.

    La démarche est la même qu'avant, il a juste apporté quelques correctifs à son patch, qui est donc maintenant à sa version 1.3 (que vous pouvez trouver au même endroit qu'auparavant).

    En espérant que ça en aide certains,

    Merci pour votre aide !


  • Moderator
    Team

    Faudrait un tuto sur le wiki ...
    En tout cas c'est chouette tu as permis à l'auteur d'améliorer son hack :)



  • bonsoir
    je n'arrive toujours pas a televerser le firmware 1,3 dans le pcb
    (arduino 1,6,5) (picade 1,3) verif et compille ok
    mais televersement annule cause usb io board pas trouvee
    avez vous une idée merci



  • Hello la communauté, j'ai le même souci que @jofamilly13. Arduino 1.6.5 / Picade 1.3 > lors du upload, j'ai une erreur USB IO Board.


  • Moderator
    Team

    @benjamin-col Ce n'est pas ici qu'on pourra résoudre ton problème ...


Log in to reply
 

Want to support us ?

Join us on :

353
Online

25345
Users

13305
Topics

100816
Posts

Looks like your connection to Recalbox Forum was lost, please wait while we try to reconnect.