Manette megadrive par DB9/GPIO



  • Bonjour, je cherche à intégrer un RPI3 dans une megadrive mais en gardant le plus possible de la megadrive d'origine.
    Pour l'instant en phase de tests j'ai réussi à câbler un bouton power, reset et une led grace au wiki.

    Là où ça se complique c’est pour les manettes !
    Je n'ai pas trouvé le câblage des GPIO -> DB9 pour des manettes megadrive (6 boutons de préférence).
    Et je ne sais pas quoi mettre non plus dans le recalbox.conf :

    DB9 Controllers

    Enable DB9 drivers for atari, megadrive, amiga controllers (0,1)

    controllers.db9.enabled=1
    ICI je pense en toute logique que ça doit être "1"

    db9 arguments

    controllers.db9.args=map=1
    Mais là...

    Si quelqu'un a de la doc sur les drivers DB9 ça m’intéresse !


  • Moderator
    Team

    Yo

    Mon premier message ne va pas etre super encourageant, parce que le pad megadrive n'est pas super adapté à recalbox à cause de l'impossibilité d'avoir une hotkey (qui est indispensable). On a un moyen de contournement en cours en utilisant le bouton reset cela dit, mais pas encore disponible au public, meme si son auteur t'aiderait très certainement



  • Aie effectivement ça part mal.
    C'est étrange cette impossibilité de bouton. J'ai pourtant consulté quelques sujets de conversions de nes/snes avec pads d'origine. Il y a une différence ?
    Ne pourrait-on pas utiliser le bouton mode du pad 6 boutons qui de toute façon est inutile 99% du temps ?

    Après je peux sacrifier le bouton reset de la console pour en faire un hotkey.
    Je veux bien tester cette méthode.


  • Moderator
    Team

    Pour nes et snes, on uyilise select comme.hotkey (puisque hotkey ne parche qu'en combinaison la plupart du temps)

    Le bouton mode ... J'ai peur qu'il soit interne au pad, mais je ne peux etre affirmatif.

    @supernature2k tu peux aider pour le reset sur gpio pour quitter l'émulateur en cours ou c'est trop tôt ?

    Je regrderai la doc pour le driver db9


  • Moderator
    Team
    Creator
    Moderator

    @subs, oui le script est déjà fonctionnel


  • Moderator
    Team

    Pour la doc, étrangement celle de recalbox a l'air à l'ouest, mais sinon chez retropie :

    https://github.com/RetroPie/RetroPie-Setup/wiki/GPIO-Modules#db9_gpio_rpi



  • Bonne nouvelle j'ai réussi à faire fonctionner une manette megadrive.
    Je l'ai câblée comme indiqué dans le lien de @subs .
    Pour activer sa détection j'ai envoyée cette commande (avec putty) :

    modprobe db9_gpio_rpi map=6,0
    

    6 étant le code pour une manette megadrive 6 boutons et 0 pas de deuxième manette.
    Par contre je dois rentrer la commande à chaque démarrage sinon la manette n'est pas détectée.
    Ça doit pas être bien compliqué de l'activer au démarrage mais je ne sais pas comment faire.

    Mon montage provisoire n'était pas extra mais j'ai quand même pu tester un peu et jouer.
    Pour l'instant le bouton mode n'a pas l'air de fonctionner.

    @supernature2k du coup ton script m’intéresse car effectivement ça manque le bouton hotkey !


  • Moderator
    Team

    Bonjour
    as tu essayé de l'activer dans recalbox.conf ?

    ## DB9 Controllers
    ## Enable DB9 drivers for atari, megadrive, amiga controllers (0,1)
    controllers.db9.enabled=1
    ## db9 arguments
    controllers.db9.args=map=6,0
    


  • Oui j'ai exactement ça dans mon recalbox.conf.
    Mais la manette n'est pas détectée.


  • Moderator
    Team

    Sans avoir lancé la commande manuellement.
    Poste le résultat entier de cette commande : https://github.com/recalbox/recalbox-os/wiki/Lister-les-modules-chargés-(FR)


  • Moderator
    Team

    @Yurek meme après un reboot ?

    Si c'est le cas, gros bug là



  • @acris Le voici :

    # lsmod
    Module                  Size  Used by    Tainted: G
    ipv6                  325729 30 [permanent]
    hidp                   12425  2
    bnep                    9932  2
    bluetooth             307447 12 hidp,bnep
    uinput                  6897  0
    snd_bcm2835            18527  2
    snd_pcm                70976  2 snd_bcm2835
    snd_timer              18137  1 snd_pcm
    snd                    49082  6 snd_bcm2835,snd_pcm,snd_timer
    evdev                   9707  3
    joydev                  8821  0
    brcmfmac              166680  0
    brcmutil                5425  1 brcmfmac
    cfg80211              396344  1 brcmfmac
    rfkill                 14498  4 bluetooth,cfg80211
    bcm2835_gpiomem         2759  0
    bcm2835_rng             1666  0
    uio_pdrv_genirq         2869  0
    uio                     7487  1 uio_pdrv_genirq
    #
    

    J'ai vérifié juste avant le recalbox.conf et redémarré.


  • Moderator
    Team

    Bonjour @Yurek
    refais la même chose mais en lançant la commande juste avant modprobe db9_gpio_rpi map=6,0



  • Ok @acris :

    # modprobe db9_gpio_rpi map=6,0
    # lsmod
    Module                  Size  Used by    Tainted: G
    db9_gpio_rpi            6437  0
    ipv6                  325729 30 [permanent]
    hidp                   12425  2
    bnep                    9932  2
    bluetooth             307447 12 hidp,bnep
    uinput                  6897  0
    snd_bcm2835            18527  2
    snd_pcm                70976  2 snd_bcm2835
    snd_timer              18137  1 snd_pcm
    snd                    49082  6 snd_bcm2835,snd_pcm,snd_timer
    evdev                   9707  3
    joydev                  8821  0
    brcmfmac              166680  0
    brcmutil                5425  1 brcmfmac
    cfg80211              396344  1 brcmfmac
    rfkill                 14498  4 bluetooth,cfg80211
    bcm2835_gpiomem         2759  0
    bcm2835_rng             1666  0
    uio_pdrv_genirq         2869  0
    uio                     7487  1 uio_pdrv_genirq
    #

  • Moderator
    Team

    @Yurek
    tu me confirmes que dans ton recalbox.conf tu as bien activé le pilote db9 ?

    ## DB9 Controllers
    ## Enable DB9 drivers for atari, megadrive, amiga controllers (0,1)
    controllers.db9.enabled=1
    

    parce que on voit clairement que le pilote n'est pas lancé.
    @subs @digitaLumberjack


  • Moderator
    Team

    @acris je dois tester et verifier le code



  • J'ai de nouveau testé et je confirme que je n'arrive pas à activer le pilote db9 par le recalbox.conf mais que je dois entrer la commande manuellement.

    Ceci dit, une fois lancé ça fonctionne bien.

    Chez vous quand vous modifiez le recalbox.conf le pilote apparaît dans la commande lsmod ?



  • J'ai de nouveau fait des tests ce soir et je suis assez content du résultat.

    Finalement il est possible d'attribuer la touche mode et donc je l'ai mise à select et hotkey sans soucis.
    On a donc autant de boutons qu'une manette super nes.

    J'ai aussi testé une manette 3 boutons. Ça fonctionne bien avec "map=4". Normal c'est le code pour une manette megadrive 3 boutons.
    Mais ça fonctionne aussi avec un "map=6" (code pour manette megadrive 6 boutons) et donc on peut passer d'une manette à l'autre sans changer les réglages du pilote.
    Il faut tout de même refaire l'attribution des boutons dans emulationstation mais c'est déjà ça.

    Il reste juste ce bug de recalbox.conf. Vous avez des pistes @subs @acris ?
    Je peux être votre testeur si vous avez des trucs à essayer.


  • Moderator
    Team

    @Yurek Le code dit que controllers.gpio.enabled doit êtrà 0 pour que le db9 soit chargé. Par défaut, il me semble que ce n'est pas le cas. Comme je n'ai pas vu ton recalbox.conf en entier, je ne peux pas savoir



  • @subs je viens de vérifier et c'est bien à 0.

    Voici la partie controllers de mon recalbox.conf :

    # -------------- D - Controllers ----------------- #
    # Enable support for standard bluetooth controllers
    controllers.bluetooth.enabled=1
    
    
    ## Please enable only one of these
    # -------------- D1 - PS3 Controllers ------------ #
    ##Enable PS3 controllers support
    controllers.ps3.enabled=0
    ## Choose an driver between official, shanwan and gasia if you have dualshock clones (official,shanwan,gasia)
    controllers.ps3.driver=official
    
    
    # ------------ D2 - XBOX Controllers ------------ #
    ## Xbox controllers are already supported, but xboxdrv can solve some compatibility issues 
    ## Enable xboxdrv driver, disable this if you enabled ps3 controllers (0,1)
    controllers.xboxdrv.enabled=0
    ## Set the amount of controllers to use with xboxdrv (0..4)
    controllers.xboxdrv.nbcontrols=2
    
    
    # ------------ D3 - GPIO Controllers ------------ #
    ## GPIO Controllers
    ## enable controllers on GPIO with mk_arcarde_joystick_rpi (0,1)
    controllers.gpio.enabled=0
    ## mk_gpio arguments, map=1 for one controller, map=1,2 for 2 (map=1,map=1,2)
    controllers.gpio.args=map=1,2
    
    
    ## DB9 Controllers
    ## Enable DB9 drivers for atari, megadrive, amiga controllers (0,1)
    controllers.db9.enabled=1
    ## db9 arguments
    controllers.db9.args=map=6,6
    
    ## Gamecon controllers
    ## Enable gamecon controllers, for nes, snes psx (0,1) 
    controllers.gamecon.enabled=0
    ## gamecon_args
    controllers.gamecon.args=map=1
    
    ## XGaming's XArcade Tankstik and other compatible devices
    controllers.xarcade.enabled=0
    

    Je n'ai toujours pas le pilote activé quand je fais un lsmod.


Log in to reply
 

Want to support us ?

303
Online

24285
Users

12903
Topics

97754
Posts

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