Emulstation/Autre - Script pour communiquer a Arduino le nom du jeu en cours
-
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.
-
@aigleblanc tu dois pouvoir récupérer le nom de la rom à coup de
ps
et degrep
une fois le jeu lancé... -
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 -
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...
-
@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
-
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
-
@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
-
@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.pyA réaliser pour chaque système....
-
@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.pyA 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.
-
Ahahahaha, ext4-fs error
Saloperie de carteSD
-
@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.pyA 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 !