Journal libretro - un seul émulateur pour les gouverner tous...

29
27
fév.
2014

[…] et dans les ténèbres les lier !
Je voulais vous faire part de ce projet qui me plaît assez et qui évolue rapidement depuis sa création.
Il s'agit avant tout de l'API libretro ainsi que d'une interface en ligne de commande appelée retroarch.
Ceux qui possèdent un raspberry pi y ont sans doute déjà eu affaire grace au script Retropie et sa gui emulationstation.

Concrètement, l'API libretro permet de mutualiser le code au maximum pour tout ce qui entoure le coeur de chaque émulateur : gui, instantanés, configuration, controles, réseau…

Mon expérience se limite pour l'instant au script retropie et je dois dire que l'ensemble a évolué à grande vitesse : un nombre impressionnant de "core" se sont ajoutés au fil du temps et ont beaucoup gagnés en performance notamment le core pcsx-rearmed dont l'émulation est quasi-parfaite.

Il est presque possible de jouer a la quasi-totalité des émulateur avec UN seul fichier de configuration ( évidemment un peu long) mais les options sont bien pensées et claires. Cette interface commune permet aussi de quitter l'émulateur via une touche et ajoute un sous-menu qui redonne accès a un très grand nombre d'options de l'emulateur . je pense qu'a terme il sera possible de grandement simplifier la configuration sinon de carrément s'en passer.

Cette API a également été portée sur un nombre important de plateformes : gnu/linux, windows, mais aussi smartphones Android, iOS, ps3, raspberry pi, cubieboard, Wii, Xbox, 360 et BlackBerry.

Dans les cores il y a les consoles classiques mais aussi des moteurs graphiques (doom quake et scumm)

  • # flemme

    Posté par (page perso) . Évalué à 6.

    Le « journal bookmark » sans lien c'est quand même fort !

    Pour voler quelques hits à Google, voici le lien

    Merci pour la nouvelle, mais maintenant je suis curieux, tu aurais un bout de ce fameux fichier de conf ?

    • [^] # Re: flemme

      Posté par . Évalué à 8. Dernière modification le 27/02/14 à 18:17.

      Je savais que ça allait râler ^

      navré j'ai écris ça du téléphone, mais je vais réparer cela en complétant tes liens.

      Pour faire du 3615 Mavie :
      Un de mes grands problèmes a été de pouvoir faire cohabiter xbmc et emulationstation sur la même bécane (problème évoqué plus bas dans les commentaires), et un des moyens que j'ai trouvé pour me passer de devoir brancher un clavier ou taper dans le ssh est d'utiliser ttyecho.

      Je voulais absolument une manette ps3 car j'adore la prise en main et pi vive le wireless du coup deux petites règles udev kivontbien (à adapter bien sûr si vous voulez refaire ça chez vous). Du coup on créé quelque chose comme /etc/udev/rules.d/98-sixaxis.rules :

      ACTION=="add", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0268", RUN+="/usr/local/sbin/sixpair"
      ACTION=="add", ATTRS{name}=="PLAYSTATION(R)3 Controller (38:C0:96:EE:C2:58)", RUN+="/usr/local/bin/startemu.sh"
      
      • J'ai configuré un autologin sur le tty1 en trifouillant /etc/initab (base raspbian !)
      • on lance startemu.sh qui est un bête script shell se contentant de stopper xbmc et de lancer emulationstation :

        !/bin/bash

        sudo service xbmc stop
        sudo /usr/local/sbin/ttyecho -n dev/tty1 emulationstation

      (oui oui on crache directement la commande dans le tty, du bon quick & dirty)

      Et pour terminer on ajoute ceci à la fin de /usr/bin/emulationstation :
      sudo service xbmc start

      Au final…. safékoi…

      vautrage sur canapé -> saisissage du sixaxis -> connexion/appairage -> udev "voit" la manette -> udev lance startemu.sh qui stoppe xbmc et lance emulationstation -> jouage

      Puis à la fin, quand on quitte emulationstation rembraye illico sur xbmc et yapuka maintenir le bouton de la manette pendant 10 secondes pour tout éteindre :)

      Retropie

      Emulationstation

      ttyecho

      qtsixa

      Il y a beaucoup de glané sur le net, évidemment des portes enfoncées… je suis pas sysadmin et pars pas du principe que tout le monde l'est ;)

      PS : La deuxième règle sixpair me permet d'une part de permettre aux manettes de réapprendre l'adresse de l'adaptateur bluetooth "maître"… déjà en cas de problème, mais aussi quand j'emmène les manettes chez des potes.

      • [^] # Re: flemme

        Posté par (page perso) . Évalué à 2.

        Je voulais absolument une manette ps3 car j'adore la prise en main

        Tu dois vraiment avoir des mains hors-normes alors, car même avec mes petites mains, la prise en main est désagréable avec les… excroissances (je sais pas comment les nommer) beaucoup trop courtes, du coup j'ai l'auriculaire voire l'annulaire qui se balladent. Sans oublier les sticks concaves :) (et j'émets toutes ces critiques en étant une Sony-whore, c'est dire).

        • [^] # Re: flemme

          Posté par . Évalué à 3.

          Ben étrangement non. Mes mains me paraissent normales et correctement proportionnées (pas genre knacki-ball en tout cas).
          Je tenais a l'aspect wireless et bricoler chacune des manettes rétro … C'était tentant mais trop lourd.
          La manette xbox me répugne au plus haut point et la manette Sony a toujours été pour moi celle qui offrait la meilleure prise en main ( enfin dans le fond c'est sans doute comme toujours une bête histoire d'habitude …)

          • [^] # Re: flemme

            Posté par (page perso) . Évalué à 3.

            De toute façon les vrais gamers jouent avec ça :) pad arcarde

            • [^] # Re: flemme

              Posté par . Évalué à 9.

              Les vrais gamers linuxiens jouent depuis un mode Emacs!

              ----------> [ ]

              • [^] # Re: flemme

                Posté par (page perso) . Évalué à 7. Dernière modification le 28/02/14 à 10:20.

                J'avoue, il n'y a pas assez de boutons dessus pour utiliser Emacs !

                Mais bon, sur un clavier non plus !

                :)

            • [^] # Re: flemme

              Posté par . Évalué à -1.

              Les vrais gamers jouent avec ça.

              Joli Clavier

              Notez le motif arc-en-ciel pour le combo troll.

  • # Retroplayer !

    Posté par . Évalué à 3.

    Hello

    Un projet d'inclusion dans XBMC est developpé par Garbear c'est assez prometteur

    Les technique actuel avec xbmc consiste a utiliser des launcher qui lance l’émulateur hors d'XBMC , la le concept est de remplacer le lecteur vidéo lors du lancement de rom.

    On reste donc dans xbmc et on garde les contrôle , on installe les core par le système d'addon xbmc etc etc !

    Forum
    FAQ (Y a même une video est premier développement)

    • [^] # Re: Retroplayer !

      Posté par . Évalué à 1.

      Enorme ! je désespérais de voir quelqu'un développer quelque chose comme ça ^ va falloir que je teste ça. Merci

      • [^] # Re: Retroplayer !

        Posté par . Évalué à 1.

        A noté l'integration aussi de l'addon Rom Collection Browser qui lance des emulateur externe
        En résumer les mecs de libretro et Rom collection browser bosse avec Garbear pour l'intégration clean dans XBMC

        Video

        Je ne sais pas quand ca sera intégré en officiel dans XBMC ( le dev de retroplayer se fait sur XBMC 13) car a priori le reste de la team XBMC a besoin que ca soit vraiement très fini pour l'intégré officiellement.

        • [^] # Re: Retroplayer !

          Posté par . Évalué à 1.

          Exact je m'étais penché dessus voulant me contenter de 2-3 ému (pas tout le barda retropie mais c'était avant d'y goûter ) mais je n'ai pas réussi à le faire fonctionner via RCB.

          Pour xbmc ça m'étonnerait pas vu la roadlist. Ce serait pas plus mal vu que beaucoup se sont cassés les dents sur le pilotage d'xbmc avec une six axis et un dev leur avait précisé que les améliorations de la versions 13 arrangeraient ça

  • # Interfaces

    Posté par (page perso) . Évalué à 3. Dernière modification le 27/02/14 à 16:32.

    Cette API est également utilisée par OpenEmu, une appli OS X dont la version 1.0, sortie récemment, a reçu pas mal de retours positifs.

    De notre côté, Kekun bosse sur un projet similaire pour Linux, nommé Badnik, et qui devrait également tirer parti de libretro (je suis censé y collaborer mais en ce moment, le temps me manque :-( ).

    • [^] # Re: Interfaces

      Posté par . Évalué à 1.

      De ce que j'ai cru comprendre, OpenEmu n'utilise pas vraiment libretro mais en emprunte seulement les cores qu'ils utilisent avec une API maison.

      L'appli en elle-même est assez géniale, je ne m'en passe plus pour ma collection d'oldies :)

    • [^] # Re: Interfaces

      Posté par (page perso) . Évalué à 4. Dernière modification le 28/02/14 à 06:45.

      Justement, j'ai commencé à bosser sur l'intégration de libretro depuis une semaine (une partie du boulot se trouve sur ce dépôt).

      Il manque beaucoup du code (qui mature un minimum chez moi) mais n'hésitez pas à rapporter des bugs !

      Le projet avance lentement car je n'ai que peu de temps (je prend en partie sur le temps de mes cours pour le faire avancer). Pendant ce temps sebn continue de travailler sur Badnik en écrivant des test unitaires et en améliorant le design du code.

      À terme, Badnik et retro-gobject se voudront être des briques de bases faciles à utiliser pour, respectivement, rechercher des jeux disponible et leur métadonnées, et y jouer. Prenant pour notre cas la forme de Video Games, une appli pour GNOME.

  • # Hein ?

    Posté par . Évalué à 7.

    J'ai rien compris ça émule quoi ?

    Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

    • [^] # Re: Hein ?

      Posté par (page perso) . Évalué à 1.

      Des consoles vidéo. Généralement, quand on parle d'émulateurs, on parle d'émulateurs de console vidéo ; quand je tape "émulateur" dans Google, la première page de résultats ne parle pratiquement que de consoles vidéo, excepté le premier résultat.

      Mais c'est vrai que c'est un abus de langage, et que le journal aurait pu être mieux rédigé.

      • [^] # Re: Hein ?

        Posté par . Évalué à 2.

        Sur linuxfr, j'ai pensé en premier lieu à un émulateur de terminal. On parle plus souvent de shell que de jeux vidéos. D'ailleurs une recherche linuxfr parle de jeux vidéo, mais pas que.

        Mais le problème n'est pas sur la définition des mots, je sais ce que c'est que l'émulation. C'est bien de lever un peu la tête avant de rédiger un journal histoire de se poser un peu et de penser à 2 ou 3 règles de bases :

        • mon interlocuteur n'est pas dans ma tête
        • si je veux parler quelque chose c'est bien de mettre le lien

        Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

        • [^] # Re: Hein ?

          Posté par . Évalué à 8.

          OK ok … Je suis pas pas un pro ni en linux, et j'avoue que j'ai pondu ça genre vite fait mal fait… J'ai déjà tâché de réparer ça avec mon commentaire.

          Ensuite je suis pas un posteur acharné … Un peu d'indulgence siouplé (pas taper je recommencerai plus !)

        • [^] # Re: Hein ?

          Posté par (page perso) . Évalué à 3.

          je n'avais rien compris non plus. Surtout qu'à la fin ça parlait de linux, windows, je pensais que c'était un genre de configuration pour qemu, l'« émulateur de machines ».

          En émulation, j'utilise beaucoup pour émuler des vieux systèmes style Atari, Amiga, C64, et pas trop des consoles de jeu, même si je sais que ça existe aussi pour ça.

          « I approve of any development that makes it more difficult for governments and criminals to monopolize the use of force. » Eric Raymond

  • # Pas seulement pour l'émulation

    Posté par (page perso) . Évalué à 4. Dernière modification le 27/02/14 à 17:34.

    Ce que je trouve vraiment intéressant avec ce projet, c'est qu'il est possible d'utiliser libretro comme une API de jeu à la place des classiques SDL/SFML et bénéficier des GUI comme Retroarch pour configurer la résolution, le son, les manettes…

    Même pour distribuer un jeu c'est pratique: on fournit juste une dll et c'est parti!

    http://devnewton.bci.im

    • [^] # Re: Pas seulement pour l'émulation

      Posté par . Évalué à 1.

      En effet même si je ne suis qu'un profane je vois aisément les avantages qu'il y aurait à ne plus s'occuper de tant d'éléments étrangers à l'émulation elle-même.

      J'ai vu que mupen64 (N64) était en cours de conversion libretro et même un core ffmpeg.
      L'amstrad cpc 6128 a débarqué à la dernière MAJ… pour que tout soit beau et merveilleux yapuka attendre que le sixaxis soit intégré mainline (prévu pour bluez 5.13 il me semble) et je pourrais faire du full bluetooth : clavier + souris + manettes

      J'ai demandé au dev du remake Head over Heels et de Batman s'il comptait porter son jeu sur le Pi et m'a répondu que c'était en projet, mais pas s'il comptait passer par l'API. Les sources sont certes indisponibles, mais c'est du super boulot.

    • [^] # Re: Pas seulement pour l'émulation

      Posté par . Évalué à 2.

      Techniquement, comment tu fais ? Tu aurais un tutoriel ou un jeu qui fait comme tu le décris ?

  • # Fonctionnalités

    Posté par . Évalué à 7.

    J'avais essayé le projet y a quelques temps quand il émulait uniquement la Super Nintendo avec le « core » Bsnes (maintenant Higan) et qu'il s’appelait SSNES ; l'évolution est saisissante. On peut maintenant émuler la plupart des systèmes des années 80/90 avec les émulateurs qu'il ont porté, la liste : http://www.libretro.com/index.php/ecosystem/ . L'interface de référence qu'il ont développé (RetroArch) est entièrement navigable à la manette avec la plupart des options avancées qui sont disponibles, et les divers shaders sont parmi les meilleurs que j'ai vu dans la « scène de l'émulation » : imitation du rendu d'un bonne vieille TV cathodique, filtres ntsc composites/S-Video… Et on peut même le lancer sans serveur X grâce à KMS (avec les pilotes compatibles évidemment), du très très bon boulot.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.