Recalbox Forum

    • Register
    • Login
    • Search
    • Recent
    • Tags
    • recalbox.com
    • Gitlab repository
    • Documentation
    • Discord

    Emulstation/Autre - Script pour communiquer a Arduino le nom du jeu en cours

    Manettes/GPIO/Encodeurs
    script communiquer arduino nom cours
    4
    11
    1708
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • aigleblanc
      aigleblanc last edited by

      Bonjour a tous,

      Dans le projet d’intégrer ma recalbox dans un boîtier de Megadrive, je suis en train de faire la modification d'une cartouche pour que lorsque celle-ci est branché dans son slot, j'ai un écran qui s'allume et affiche le nom du jeu en cours !

      Je pense utiliser un script python pour communiquer cela en i2c vers un Arduino mini, mais, la grande question, est-ce que les devs de recalbox on prévu une "variable système", une solution pour connaître le nom du jeu ( voir d'autre info en prime ) en cours que mon script python soit capable de récupérer ?

      Merci beaucoup !

      Fabrice.

      1 Reply Last reply Reply Quote 0
      • ian57
        ian57 Staff last edited by

        @aigleblanc tu dois pouvoir récupérer le nom de la rom à coup de  ps et de grep une fois le jeu lancé...

        "UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." Dennis Ritchie

        1 Reply Last reply Reply Quote 0
        • aigleblanc
          aigleblanc last edited by

          Effectivement sans doute, faut que je regarde du coup tiens...
          Mais comme il y a une belle api web, je me suis dit qu'il existait sans doute une belle api utilisable en systeme 🙂

          1 Reply Last reply Reply Quote 0
          • aigleblanc
            aigleblanc last edited by aigleblanc

             2154 root     sh -c python /usr/lib/python2.7/site-packages/configgen/emulatorlauncher.pyc -p1index 0 -p1guid 03000000790000001100000010010000 -p1name "USB Gamepad " -p1nbaxes 2 -p1devicepath /dev/input/event0  -system megadrive -rom /recalbox/share/roms/megadrive/Alien\ Soldier\ \(Europe\).zip -emulator default -core default -ratio auto  2> /recalbox/share/system/logs/es_launch_stderr.log | head -300 > /recalbox/share/system/logs/es_launch_stdout.log
             2155 root     python /usr/lib/python2.7/site-packages/configgen/emulatorlauncher.pyc -p1index 0 -p1guid 03000000790000001100000010010000 -p1name USB Gamepad  -p1nbaxes 2 -p1devicepath /dev/input/event0 -system megadrive -rom /recalbox/share/roms/megadrive/Alien Soldier (Europe).zip -emulator default -core default -ratio auto
             2156 root     head -300
             2217 root     [kworker/u8:1]
             2234 root     /usr/bin/retroarch -L /usr/lib/libretro/picodrive_libretro.so --config /recalbox/share/system/configs/retroarch/retroarchcustom.cfg --appendconfig /recalbox/share/system/configs/retroarch/megadrive.cfg /recalbox/share/roms/megadrive/Alien Soldier (Europe).zip
            

            Effectivement, dans le ps il y a moyen de trouver le nom du jeu.

            Bonjour pour l'extraire... on va sortir la doc python pour grep tout ça.

            Je suis un peu trop habituer a bosser en php avec du json 😛


            Bon, emulatorlauncher.pyc est pre-compile donc impossible de lui rajouter une instruction dedans, dommage...

            voljega 1 Reply Last reply Reply Quote 0
            • voljega
              voljega Banned @aigleblanc last edited by

              @aigleblanc a priori c'est pas comme ça qu'il faut procéder pour ce que tu veux faire mais il te suffit d'effacet le pyc, modifier le py et le pyc sera regénéré au premier lancement

              aigleblanc 1 Reply Last reply Reply Quote 0
              • aigleblanc
                aigleblanc last edited by

                Ma logique de départ est sans doute mauvaise, developper h24 pour le web on prend des habitudes.

                Pour le coup, j'ai ecrit un code py pour choper la ligne qui charge le jeu et l'emulateur et j'en extrait les infos,

                Ensuite, me suffit de mettre ce script dans le .py qu'il faut, et rajouter mon code pour envoyer ca a l'arduino.

                import subprocess
                import re
                
                proc1 = subprocess.Popen(['ps', 'aux'], stdout=subprocess.PIPE)
                proc2 = subprocess.Popen(['grep', 'roms'], stdin=proc1.stdout,
                                         stdout=subprocess.PIPE, stderr=subprocess.PIPE)
                
                proc1.stdout.close() # Allow proc1 to receive a SIGPIPE if proc2 exits.
                out, err = proc2.communicate()
                
                a = out.split('\n')
                
                m = re.search('\/roms\/(.*)\/(.*)\.', a[1])
                
                print(m.group(1)); #emulateur
                print(m.group(2)); # jeux ( le nom du rom ... )
                

                A défaut de mieux, j'ai déjà ca 🙂

                1 Reply Last reply Reply Quote 1
                • aigleblanc
                  aigleblanc @voljega last edited by aigleblanc

                  @voljega said in Emulstation/Autre - Script pour communiquer a Arduino le nom du jeu en cours:

                  @aigleblanc a priori c'est pas comme ça qu'il faut procéder pour ce que tu veux faire mais il te suffit d'effacet le pyc, modifier le py et le pyc sera regénéré au premier lancement

                  Alors... humm, le pyc ne se régénère pas apres un reboot 🙂

                  Ni meme apres une relance d'un jeu ... ecran de load, noir et retour a la liste. pas de .pyc ...

                  Bon je le genere a la mano,

                  Reste a trouver pourquoi il lance pas mon script que j'ai foutu avec os. dedans... la decouverte de python est brutal la lol

                  nordicpower 1 Reply Last reply Reply Quote 0
                  • nordicpower
                    nordicpower @aigleblanc last edited by

                    @aigleblanc je te propose une solution plus simple à mon sens: il faut modifier le fichier es_systems.cfg pour chacune des plateforme.

                    La commande de lancement est la suivante :
                    <command>python /usr/lib/python2.7/site-packages/configgen/emulatorlauncher.pyc %CONTROLLERSCONFIG% -system %SYSTEM% -rom %ROM% -emulator %EMULATOR% -core %CORE% -ratio %RATIO% %NETPLAY%</command>

                    tu pourrais ajouter une commande avant le python en lui passant la variable %ROM% pour afficher le titre puis une commande après pour effacer. un truc du style ...
                    affiche.py %ROM% && python .... && clean_affiche.py

                    A réaliser pour chaque système....

                    aigleblanc 2 Replies Last reply Reply Quote 0
                    • aigleblanc
                      aigleblanc @nordicpower last edited by

                      @nordicpower said in Emulstation/Autre - Script pour communiquer a Arduino le nom du jeu en cours:

                      @aigleblanc je te propose une solution plus simple à mon sens: il faut modifier le fichier es_systems.cfg pour chacune des plateforme.

                      La commande de lancement est la suivante :
                      <command>python /usr/lib/python2.7/site-packages/configgen/emulatorlauncher.pyc %CONTROLLERSCONFIG% -system %SYSTEM% -rom %ROM% -emulator %EMULATOR% -core %CORE% -ratio %RATIO% %NETPLAY%</command>

                      tu pourrais ajouter une commande avant le python en lui passant la variable %ROM% pour afficher le titre puis une commande après pour effacer. un truc du style ...
                      affiche.py %ROM% && python .... && clean_affiche.py

                      A réaliser pour chaque système....

                      En effet, cela éviterait de modifier les fichiers de l'os, je vais explorer la piste la après avoir fini mes testes quand meme !! 🙂

                      Merci.

                      1 Reply Last reply Reply Quote 0
                      • aigleblanc
                        aigleblanc last edited by

                        Ahahahaha, ext4-fs error 🙂

                        Saloperie de carteSD

                        1 Reply Last reply Reply Quote 0
                        • aigleblanc
                          aigleblanc @nordicpower last edited by aigleblanc

                          @nordicpower said in Emulstation/Autre - Script pour communiquer a Arduino le nom du jeu en cours:

                          @aigleblanc je te propose une solution plus simple à mon sens: il faut modifier le fichier es_systems.cfg pour chacune des plateforme.

                          La commande de lancement est la suivante :
                          <command>python /usr/lib/python2.7/site-packages/configgen/emulatorlauncher.pyc %CONTROLLERSCONFIG% -system %SYSTEM% -rom %ROM% -emulator %EMULATOR% -core %CORE% -ratio %RATIO% %NETPLAY%</command>

                          tu pourrais ajouter une commande avant le python en lui passant la variable %ROM% pour afficher le titre puis une commande après pour effacer. un truc du style ...
                          affiche.py %ROM% && python .... && clean_affiche.py

                          A réaliser pour chaque système....

                          Je viens de tester... ca ne marche pas.

                              <command>python /usr/lib/python2.7/site-packages/configgen/emulatorlauncher.pyc %CONTROLLERSCONFIG% -system %SYSTEM% -rom %ROM% -emulator %EMULATOR% -core %CORE% -ratio %RATIO% && python /recalbox/share/scripts/game.py %ROM% %EMULATOR%</command>
                          

                          le jeu se lance, pas de log, et quand je quitte le jeu, j'ai un ecran vert, je pense qu'il n'est pas capable de lancer deux scripts...


                          Edit :

                          J'ai séparé les deux commandes par ; et c'est beaucoup mieux !

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post

                          Want to support us ?

                          77
                          Online

                          99.6k
                          Users

                          28.1k
                          Topics

                          187.1k
                          Posts

                          Copyright © 2021 recalbox.com