Questions sur l'API et son avenir
-
Me semble que @substring devait me concocter un truc pour le lancement des jeux qui est BEAUCOUP plus simple que ce qui est fait actuellement. À voir si mon invocation va porter ses fruits... ^^
-
@kjbstar si si tu peux récupérer ca dans le log de ES ou dans le recalbox.log. Après tu connais juste la commande qui a été invoquée, pas si le jeu tourne encore. Mais peut-etre que ...
Pour l'API, pas vu neolao depuis trèèèèèèèèèèèèèèèès longtemps ...
-
@Substring Hmmm dans logs/recalbox.log ? J'ai l'info uniquement lorsque je sors du jeu pour revenir à ES. C'est balo ^^
J'avais justement pensé à fouiller dans les logs d'ES, mais je n'ai pas trouvé où c'est ^^ Je regarderais ce soir !
-
Hummm ça n'a été ajouté qu'en 4.1 il me semble.
-
@kjbstar sisisi il y a une ligne dans ~/.emulationstation/es_log.txt :
lvl2: Configure emulators command : -p1index 0 -p1guid 030000006d04000018c2000010010000 -p1name "Logitech Logitech RumblePad 2 USB" -p1nbaxes 4 -p1devicepath /dev/input/event2 lvl2: Controllers config : -p1index 0 -p1guid 030000006d04000018c2000010010000 -p1name "Logitech Logitech RumblePad 2 USB" -p1nbaxes 4 -p1devicepath /dev/input/event2 lvl2: python /usr/lib/python2.7/site-packages/configgen/emulatorlauncher.pyc -p1index 0 -p1guid 030000006d04000018c2000010010000 -p1name "Logitech Logitech RumblePad 2 USB" -p1nbaxes 4 -p1device path /dev/input/event2 -system psp -rom /recalbox/share/roms/psp/Ultimate\ Ghouls\'n\'Ghosts.iso -emulator default -core default -ratio auto
Mais ca se trouve elle est générée APRES le retour sous ES
Sinon au pire regarder la liste des process qui ont
python /usr/lib/python2.7/site-packages/configgen/emulatorlauncher.pyc
-
Rha bondiou c'était là ! Merci, je regarderais ce soir si c'est (aussi) généré qu'en sortie de jeu.
Puis je plongerais dans le JS voir si je peux faire un truc rapide...
-
@Substring Je confirme c'est généré après le retour sous ES.
J'ai tenté une alternative : lancer retroarch en verbose, ça marche bien on a tout plein d'infos (--verbose > /tmp/retroarch.txt 2>&1). Nouveau fichier à chaque jeu, ca paraissait pas mal.
Après je l'ai ajouté dans /recalbox/scripts/emulatorlauncher.sh (j'ai remonté le disque en écriture) :
retroarchbin="/usr/bin/retroarch --verbose > /tmp/retroarch.txt 2>&1"
Mais visiblement je suis pas au bon endroit, la commande est toujours exécutée sans cette option lorsque je lance un jeu.
C'est tout pour aujourd'hui, les yeux piquent ce soir
-
@kjbstar je te déconseille cette méthode, certains emulateurs sont très verbeux.
La seule vraie methode c'est avec un ps.
On n'utilise plus ce emulatorlauncher.sh depuis un bail cela dit
-
Bon, avant de repartir dans cette recherche d'infos de jeu en cours, j'ai remis le nez dans la base de l'idée, à savoir faire prendre en charge le bouton Hotkey pour ensuite se servir de la fonction "combo" pour voir si on peut gérer la sortie de jeu, la sauvegarde, etc.
Autant ajouter le Hotkey c'est simple, autant j'ai perdu 2h ensuite, entre l'api qui marchait plus pour le gamepad au 1er reboot du Rpi (et c'est parti pour l'install de la dév sur une VM rapide, et des tests sur la VM finalement injoignable niveau API...), pour finalement bêtement redémarrer une 2nde fois le Rpi, et ô miracle l'API remarche.
Sauf qu'après quarante-douze mille tentatives d'envois de combos et de pressions de touches, je me suis rendu compte qu'en fait le gamepad virtuel (de l'API) ne fonctionne pas ingame, seulement dans ES.
Le comble, c'est que je testais sur un jeu SNES, et que le gamepad virtuel est justement SNES.Tout mon truc tombe à l'eau, c'est balo ^^
-
@kjbstar je te l'ai dit : le jeu en cours c'est en scrutant les process (ou une autre méthode en python avec configgen)
-
@Substring Oui, je voulais juste retenter l'idée de base avant, pour valider ou non mon projet d'écran "compagnon" (et donc savoir si oui ou non j'achète un tactile à cet usage).
J'ai retenté ce matin pour le virtual gamepad, mais bon je suis obligé de laisser tomber. Obligé de configurer le gamepad sur le joueur 1 pour avoir accès à Hotkey (1er problème), et la fonction Combo de l'API ne semble tout simplement pas fonctionner. J'ai juste réussi à déclencher 1 fois le menu de Retroarch en bourrinant de désespoir les envois "touche par touche".
Bref, des touches dédiées sauvegarde & co sur un écran déporté, c'est pas demain la veille
Je checkerais quand même par curiosité pour ce que tu me dis, même si du coup je risque de pas m'en servir. Merci en tout cas !
-
@kjbstar la fonction combo ne pourra jamais marcher puisque qu'elle implique activer des évènements d'un périphérique matériel (et donc autonome) par logiciel. Pas possible. Tu veux faire quoi exactement ? Regarde vers les commandes réseau de retroarch par exemple.
Tu ferais bien d'unier tes forces avec https://forum.recalbox.com/topic/5777/relier-à-un-écran-et-afficher-du-texte/
-
@Substring L'idée c'était de faire une interface très simple via navigateur, avec des gros boutons, à utiliser sur écran tactile.
A la base c'était juste 2 fonctions :
- sauvegarder
- restaurer
Car intégration dans borne d'arcade, et le kit que je prévois a l'emplacement pour le hotkey sur sur la face verticale du panel. Donc un peu plus chiant que bouger 2 pouces sur une manette, pour sauver dans le feu de l'action.
Faire un truc de feiniasse, quoi !
Je me disais ensuite qu'éventuellement ça pouvait être sympa que je détecte le jeu lancé pour afficher les movelists, dans le cas des bourre-pifs.
Et même afficher un listing des différentes savestates pour se repérer dans les dates et charger celle souhaitée, quand on reprend un jeu X temps après.J'ai vu le topic oui ce matin, je voulais tenter de faire sortir le nom du jeu en json sur une url propre et donc facile à récupérer pour une autre machine sur le local, mais j'ai pété le recalbox manager là, mes premières joies du python
EDIT : je ne savais pas du tout que RetroArch avait cette possibilité de commandes réseaux. Ca m'a l'air de répondre à ce besoin, merci !
-
@kjbstar on a déjà un bout de code python pour les network commands retroarch (donc en local), faut demander à @supernature2k
Mais si toi tu gères ta page web dans tn coin sans rien appeler de recalbox mais juste envoyer les commandes reseau à retroarch, pani pwoblemIdée : si ton jeu est scrapé, tu afficher des données tant qu'il edt en cours genre l'image, l'annee etc ... Tu peux aussi afficher le core etc ...
Et si tut'y connais et que n'es pas un amateur, tu peux partger tes sources sur github
-
@Substring Vu le désastre que j'ai fais dans le Recalbox Manager rien qu'en me contentant de dupliquer la page de monitoring (vue et fichier python) et créer une route, je crois que je vais laisser tomber Python. D'ailleurs il se remettra bien comme il faut quand je mettrais à jour ? Je suis en 4.0.1.
J'ai fais une première page vite fait, le plus long ayant été de capter que mes tests merdaient car j'avais des sauts de lignes pourris dans les fichiers sh... Hosté sur une VM, à terme ce sera sur un Raspi Zero, qui aura donc son p'tit écran.
Petite démo : https://youtu.be/9pSU0wJu16U
Pas con pour l'idée, mais juste en techno web, sur une machine à part, je crains que je vais être coincé pour aller lire les gamelist, non ?
Pour le github, of course, ce sera l'occasion de faire un truc propre, et j'aurais enfin un repo utile
-
@kjbstar excellent ca dis donc ! quelle techno derriere ?
-
@Substring Thx ! C'est du bête JS/jQuery qui appelle un bête php qui exec la bête commande donnée en exemple sur le wiki de Retroarch. Mais c'est très moche là, tout est en triple, je voulais juste tester en speed. Le vrai truc propre ce sera plus tard
Surtout que ta suggestion me titille... Je posterais des news sur ce fil quand j'aurais avancé (ou bloqué !). -
@kjbstar on a nodejs sur recalbox, donc tu pourrais tout faire avec
-
@Substring Ce serait le mieux et le plus logique oui, mais j'ai jamais fait de nodejs. Pas trop le temps de m'y mettre, même si j'aimerais bien. Je serais plus rapide en php et js "à l'ancienne". J'ai quelques pistes, je vais voir un peu demain.
-
@kjbstar je me disais la même chose après 8 ans de dev full php et je suis passé dev full js