Raspberry Pi : les subtilités d’Emulationstation
Dans les numéros précédents, nous avions :
La news de pésentation du rPi
Raspberry Pi : installation système pour retrogaming et mediacenter
Ce tuto va être à priori plus court que le premier. Par contre, il sera appelé à s’enrichir de vos retours et de vos expériences : une cinquantaine d’émulateurs ou de portages, ça prend UN PEU de temps à maitriser.
Configuration de la manette
Si vous étes sur Kodi, vous lancez le switch (raccourci-manette) Bouton central + bouton haut droit.
Au premier lancement, Emulationstation va vous demander de configurer la manette. Il y a un petit piège : il souhaite utiliser la croix directionnelle pour naviguer dans ses menus, mais surtout pour gérer les déplacements principaux dans les jeux. Je ne sais pas si vous êtes comme moi, mais maintenant que les manettes ont des joysticks, j’ai choisi de mépriser le feeling original du déplacement au pad.
Donc, quand il commence par me demander le déplacement du D-PAD, je ruse et lui montre le joystick de gauche. Et quand on passera à ce qu’il souhaite être le joystick de gauche, je lui répondrai avec le D-PAD. Cette petite fourberie a cependant des limites : pour la N64 (je crois que c’est tout de mémoire) on héritera de la croix directionnelle (logique…). On ira donc faire un tour dans un fichier pour aller régler ça.
Chaque fois que vous reconfigurerez le périphérique d’entrée, les réglages de contrôle par défaut seront répercutés sur tous les émulateurs. Bien pratique en cas d’erreur insurmontable, absolument agaçant dès que l’on a commencé à personnaliser nos réglages. Donc, quand vous configurez vos contrôles pour un émulateur (ou toute autre chose, d’ailleurs), gardez une copie du fichier sur votre ordinateur pour retrouver vos petits plus tard (et n’hésitez pas à la commenter).
Si vous voulez réinitialiser les réglages de la manette, allez dans options (start) > configure input.
Tout est en place pour jouer ? Oui. Maintenant, il va falloir la ranger, cette chambre.
Lancez le client sftp sur votre ordinateur en ciblant l’adresse du PI avec un protocole sftp / port 22. Vous arrivez par défaut dans votre maison. Allez dans le dossier Retropie, puis dans le dossier roms, vous verrez la liste des émulateurs disponibles. Remplissez les dossiers qui vous intéressent avec des roms idoines. Si vous êtes déjà sur Emulationstation, relancez-le (touche start, Menu Quit > Restart EmulationStation ) pour rafraichir la liste des jeux disponibles.
Au fait, pourquoi passer par du sftp ? J’ai vu que Emulationstation pouvait lancer un serveur smb ?
Parce que le but du jeu, c’est aussi d’alléger au possible le travail du PI. Faire tourner un serveur smb pour un confort qui n’en est pas réellement un, ça ne fait pas de sens. Autant utiliser un protocole natif.
Certains émulateurs (NeoGeo, Playstation, liste complète ici) nécessitent l’ajout d’un BIOS, qui viendra se ranger dans /home/pi/RetroPie/BIOS/
.
Avec des images, c’est plus joli
Pour le scrapping, on va privilégier l’outil fourni par Retropie, et laisser de côté celui intégré à Emulationstation (lent, pas toujours pertinent).
On quitte Emulationstation, et on relance le script d’installation de Retropie
cd
cd RetroPie-Setup
sudo ./retropie_setup.sh
On va dans Setup / Configuration
, puis dans Scraper for Emulationstation
Et on le met au travail (si vous avez beson de détails, le mode d’emploi est ici).
On relance Emulationstation en tapant emulationstation
si un clavier est connecté, ou tout simplement en relançant le PI (Bouton central + bouton haut gauche).
Si certains jeux ne sont pas reconnus (ça arrive), vous pouvez tenter le scraper interne : select > Edit this Games Metadata > scrape.
Retrouver ses petits
Configurer Retropie, c’est devoir jongler avec beaucoup de fichiers de configuration : ceux d’Emulationstation, ceux de libretro et ceux de chaque émulateur. Ils sont présents dans plusieurs endroits, et se contredisent éventuellement. On va regarder le schéma global de plus près.
/etc/emulationstation/es_systems.cfg
Ce fichier (XML) décrit les émulateurs, leurs chemins d’accès, les extensions reconnues. Pas trop de raisons d’y toucher mais ça peut arriver : par exemple pour la Playstation.
Le dossier /opt/retropie/configs/all/
Le premier répertoire important. Il contient le tronc commun des options qui vont être appliquées à tous les émulateurs.
Dans le fichier retroarch.cfg
on va vérifier :
-
que l’option rewind_enable est désactivée (cette option permet de revenir en arrière sur un jeu en cas de bétise, mais elle est gourmande en ressources sur un rPi)
rewind_enable = "false"
-
que le rendu vidéo utilise du multi-threading - bref, ça marche mieux (Pi2 et Pi3)
video_threaded = "true"
Normalement, depuis quelques versions, pour quitter un jeu (sauf pour mame, mais on y reviendra), on appuie sur select+start. Si jamais ça ne marchait pas on rajoute dans le fichier.
input_enable_hotkey_btn = “6”
input_exit_emulator_btn = “7”
NB: ce dernier point est à confirmer, sur les anciennes versions, je m’en sortais comme ça…
Ce fichier contient BEAUCOUP d’autres options, qui sont heureusement documentées dans les commentaires. Mais ces deux vérifications suffisent pour démarrer.
Ensuite, nous avons un dossier de configuration par émulateur dans /opt/retropie/configs/
. Dans chacun de ces répertoires, nous allons trouver en général un fichier retroarch.cfg qui viendra surclasser le fichier global décrit plus haut. Certains émulateurs ont de plus des fichiers de configuration complémentaires, avec une syntaxe toute personnelle. Les options sont très souvent expliquées dans la page wiki de retropie.
Et les mises à jour ?
En règle générale, quand ça marche, on n’y touche pas ! Par contre, quand quelque chose ne marche pas aussi bien que prévu, ça peut être une très bonne idée d’updater l’émulateur récalcitrant. Dernier exemple en date, l’émulateur PS1 qui tourne fabuleusement bien sur mon Pi2 avait décidé de hacher tous les sons sur mon Pi3. Pensant d’abord à un problème d’échantillonage ou d’émulation DSP, j’ai du passer deux soirs à tester les paramètres de configuration, sans succès… Un update plus tard, c’était devenu parfait… Donc, un problème de jeunesse de la version Pi3.
Marche à suivre :
cd
cd Retropie-Setup
sudo ./retropie_setup.sh
On met à jour le script Retropie-Setup, et on va choisir le ou les émulateurs à mettre à jour. Si vous visez une mise à jour très récente, il vaut mieux choisir la source (et donc compiler soi-même le binaire). Les réglages de votre émulateur vont aussi être réinitialisés. Mais ça n’est pas grave, vous en aviez fait un backup avant ;-).
OK. On peut essayer de jouer maintenant ?
Au lancement, un menu apparait (encore un ?). Ce menu va nous permettre plusieurs choses vitales (qui sinon seraient une tannée en ligne de commande) :
- Choix de l’émulateur (quand il y en a plusieurs disponibles). Tous les émulateurs ne sont pas égaux pour un jeu donné. Là, on va pouvoir essayer et trouver l’émulateur parfait.
- Paramètres d’affichage : résolution, ratio et fréquence. De quoi afficher parfaitement vos pixels, même si ils font la taille de votre main.
- Dans certains cas, suivant les émulateurs, on aura aussi accès à la résolution de calcul de l’image.
- Et des options pour jouer en réseau. Je n’ai pas encore testé cette partie. Vos retours sont bienvenus.
A noter, on peut choisir les comportements pour un jeu précis (le réglage sera mémorisé) ou pour l’ensemble des jeux.
Pour activer ce menu, il faut appuyer (un instant ou deux) sur la touche A de votre manette. Parfois, suite à un bug stupide de buffer d’affichage, cet écran est invisible (on a juste un écran noir). C’est pour cette raison que j’ai mappé la touche Ctrl
sur le bouton central (logo xBox) : ça va nous permettre de récupérer l’affichage.
Récapitulatif des raccourcis indispensables :
- Start + Select : quitter le jeu en cours
- Select (sur les émulateurs de bornes : mame, NeoGeo) : ajouter un crédit
Les présentations étant faites, on va pouvoir s’intéresser aux émulateurs.
Bonne nouvelle, une grande majorité fonctionne parfaitement en l’état ! Il y en a d’autres où il va falloir aller bricoler un peu : PS1, N64, certaines versions de Mame.
Playstation (PSX)
C’est un peu gros un CD, en fait
Les jeux Playstation ont la particularité d’être gros (enfin, du point de vue d’une carte SD…), donc, soit vous en visez quelques uns que vous faites tenir sur la carte SD, soit on va s’amuser à monter un partage réseau, au démarrage du Pi.
On va “monter” un partage dans le dossier “/media”. On commence par créer un répertoire “psx” qui va accueillir nos images de jeux.
cd /media
sudo mkdir psx
On va éditer le fichier /etc/fstab (responsable des partitions que le Pi monte au démarrage) en imaginant que l’on a stocké nos images sur un partage windows.
sudo nano /etc/fstab
#On ajoute à la fin
//192.168.xx.yy/NomDuPartage /media/psx cifs user=NomUser,password=MotdePasse,uid=1000,gid=1000,rw 0 0
#on sauve, on referme (ctrl+O, enter, Ctrl+X)
Donc evidemment, il faut adapter à votre configuration les xx.yy, NomDuPartage, NomUser et MotdePasse.
Cet exemple est donc pour un partage windows (le protocole est indiqué par cifs). Si vous souhaitez utiliser un autre protocole, voici la liste de ce que l’on peut faire.
Une fois ceci fait, on redémarre, puis on va vérifier dans /media/psx
que les images de disque sont bien là.
cd /media/psx
ls
Avoir une liste propre
On va commencer par mettre à jour le chemin de stockage des images (si on utilise le volume réseau).
sudo nano /etc/emulationstation/es_systems.cfg
On défile jusqu’à la section PSX, on change le path
.
<path>/home/pi/RetroPie/roms/psx</path>
#devient donc
<path>/media/psx</path>
Quand vous utilisez le combo .bin (l’image disque) + cue (la table des matières), les jeux sont listés en double. On va nettoyer ça.
Toujours dans la section PSX, on va éditer la propriété extension
et on supprimer les .bin et les .BIN.
On sauve (ctrl+O
puis enter
) on referme (ctrl+X
).
On redémarre Emulationstation.
Remettre la manette en ordre
Les touches A et B sont inversées. C’est pas bien méchant, juste désagréable, on va les remettre dans l’ordre.
nano /opt/retropie/configs/psx/retroarch.cfg
et on rajoute juste après la ligne
input_remapping_directory = "/opt/retropie/configs/psx/"
ça
input_player1_joypad_index = 0
input_player1_b_btn = 0
input_player1_a_btn = 1
input_player1_y_btn = 3
input_player1_x_btn = 3
#on sauve, on referme (ctrl+O, enter, Ctrl+X)
N64
LA console que j’aime d’amour, même un tout petit peu plus que la Playstation (mais que j’aime aussi d’amour)…
Sortie en 1996, la N64 ne se laisse pas émuler aussi facilement qu’une Playstation sur le rPi. En cause, une architecture 64 bits ambitieuse co-développée par Silicon Graphics - qui a d’ailleurs toujours donné beaucoup de fil à retordre aux développeurs. Rareware reste l’un des trop rares studios à l’avoir brillament exploité : Banjo-Kazooie, Donkey Kong 64… Pour se rendre compte de ce que signifie l’émulation N64 d’un point de vue technique, vous pouvez aller faire un tour sur le blog du développeur de glideN64, un plug-in de mupen64plus…
Bref, l’émulation N64 sur rPi est encore en pleine évolution, n’hésitez pas à mettre à jour vos émulateurs régulièrement : de bonnes surprises ne sont pas impossibles.
Pour voir ce qui est “jouable” je vous conseille de jeter un coup d’oeil à ce tableau relativement complet. Ceci dit, tout n’est pas à prendre au pied de la lettre : certains jeux se comportent de manière contraire aux indications du tableau en fonction de la version de la rom, de l’émulateur et de sa version… Oui, il faudra essayer.
Les émulateurs disponibles
On a deux familles principales, basées sur mupen64plus : la version libretro (lr-mupen64plus) et des versions plus nerveuses agrémentées de plugins. La version libretro, qui avait le mérite d’exister, est aujourd’hui complètement à la traine : performances, bug graphiques, etc.
On va donc se concentrer uniquement sur les émulateurs mupen64plus-plugin. Quand vous essayez un jeu, commencez par la version gles2rice, puis essayez les autres. Chaque cas est vraiment particulier. Autre tip : on peut, sur le rPi3, calculer les jeux en 640x480 ou plus. Des fois, ça marche pas trop mal, mais souvent un retour au 320x240 sera salvateur.
Premiers réglages
On va s’intéresser au fichier /opt/retropie/configs/n64/mupen64plus.cfg
. Ce fichier, découpé en sections aux intitulés explicites (Audio-SDL, Core, etc) va gérer le comportement générique de l’émulateur. Mais attention, il va rentrer en collision avec le fichier /home/pi/.config/mupen64plus/mupen64plus.cfg
. Chaque section commence par un numéro de version, qui sert en fait fait à définir le fichier “qui a raison”. Et ce, section par section… Donc, quand on change quelque chose, on commence par augmenter le numéro de version dans la section (par exemple, on va transformer le 1.000000 en 1.50000), comme ça on n’éditera pas dans le vide…
Le son [Audio-SDL]
DEFAULT_FREQUENCY = 33600
on le laisse comme ça, il ne sera pas exploité (hahaha) il sert juste pour les Zelda
RESAMPLE = “trivial” ou “speex-fixed-0”
Ce paramètre est le plus important pour le confort de jeu. Il va permettre de se débarrasser de pas mal de grésillements (qui sinon ruinent l’expérience). Toutes les autres options (qui se révèlent utiles sur un pc) vont donner un résultat désastreux en terme de performances. Sur un rPi nu, on va choisir le trivial, si on a une carte type hifiberry, on ira sur speex-fixed-0.
Sauvegarde des fichiers de jeu
Point agaçant chez mupen64plus, il va stocker les sauvegardes des jeux dans un répertoire planqué de la home de l’utilisateur PI (là où tous les autres émulateurs les stockent au même niveau que le jeu).
On va éditer la section [Core]
.
Là aussi, on augmente le numéro de version, pour prendre la priorité. et on rajoute juste après les lignes suivantes (je n’ai pas fouillé plus, mais si on ne les met pas juste après le numéro de version, ils ne seront pas pris en compte…) :
ScreenshotPath = "/home/pi/RetroPie/roms/n64"
SaveStatePath = "/home/pi/RetroPie/roms/n64"
SaveSRAMPath = "/home/pi/RetroPie/roms/n64"
On laisse les autres options en l’état, ça marche plutôt bien.
Le joystick
Si vous avez suivi ma ruse (cf plus haut) pour le dpad / joystick, j’expliquais que l’on hériterait du dPad au lieu du joystick. Dans ce cas, on va rectifier le tir maintenant.
On file sur le fichier /opt/retropie/configs/n64/InputAutoCfg.ini
. Avant de commencer, on va en faire une copie.
cp /opt/retropie/configs/n64/InputAutoCfg.ini /opt/retropie/configs/n64/InputAutoCfg.ini.back
Vous devez retrouver une section ‘xbox Gamepad blah blah’. On va y coller les lignes suivantes (attention, les numéros de bouttons correspondent aux réglages de la première partie du tuto, si vous avez changé des éléments, il faudra donc adapter).
; Xbox Gamepad (userspace driver)_START
[Xbox Gamepad (userspace driver)]
plugged = True
plugin = 2
mouse = False
AnalogDeadzone = 4096,4096
AnalogPeak = 32768,32768
Mempak switch =
Rumblepak switch =
C Button D = axis(3+)
C Button L = axis(2-)
C Button U = button(2) axis(3-)
C Button R = axis(2+)
A Button = button(0)
B Button = button(1)
Start = button(7)
R Trig = button(5)
L Trig = button(4)
Z Trig = button(10)
X Axis = axis(0-,0+)
Y Axis = axis(1-,1+)
DPad R = hat(0 Right)
DPad L = hat(0 Left)
DPad D = hat(0 Down)
DPad U = hat(0 Up)
; Xbox Gamepad (userspace driver)_END
Bravo, on est maintenant pas mal. Next step : il va falloir tester les combos émulateurs / roms / versions de roms / réglages… mais ça, ça devient un autre jeu, le votre !
MAME
Après la PS1 la N64, Multiple Arcade Machine Emulator est le troisième graal de l’émulation : on parle de toutes ces machines (à sous) qui ont envahi les cafés et les salles de jeu depuis le début des années 80. On va pouvoir faire tourner à peu près vingt ans d’histoire, ça va devenir sérieux… Cette fois, on a trois familles principales d’émulateurs : advmame, mame4all et libretro. Chacun ayant en plus des déclinaisons (au lancement).
Cette fois-ci, la présence d’un clavier est obligatoire, au moins pour faire les premières configurations. Suivant les synergies entre les roms et les émulateurs, la manette n’est pas du tout reconnue. Quand elle l’est, on retrouve nos petits : start+select pour quitter l’émulateur, select pour ajouter des crédits.
Le clavier doit être branché avant de lancer l’émulateur. Le principe est toujours le même. On appuie sur la touche tab
qui va nous faire apparaitre un menu en surimpression. Une fois dans le menu, à priori on peut se déplacer au joystick. C’est plutôt bien rangé, on a des options de configurations (ENCORE) où l’on va pouvoir régler les inputs, l’affichage vidéo, la gestion du son, et éventuellement des hacks si la rom les supporte.
Il faudra refaire ces réglages pour chaque émulateur MAME utilisé.
Interface générale
Input (general) > User interface (les noms peuvent changer suivant les émulateurs, mais l’idée est là)
Config menu (tab
) : pour faire apparaitre le menu, et ne plus avoir besoin de clavier pour le lancer. En général, j’utilise le click sur le joy de gauche.
UI Cancel (esc
) : pour quitter l’émulateur en cours. Donc, comme pour tout le monde start+select.
Contrôles joueur 1
on va mapper ici les déplacements, les boutons, le crédit (select), etc…
En général, on se déplace dans les menus avec le joystick, et on appuie sur la touche A de la manette pour éditer la correspondance.
###Ah oui, la NeoGeo, aussi !###
Ici, tout marche nickel (enfin chez moi… pas rencontré de soucis particuliers au brut d’installation). Vous utiliserez au choix le set NeoGeo ou Final Burn Alpha en fonction des compatibilités, des rendus et du feeling.
Il vous reste encore plein de machines magiques à (re)découvrir : NES, SNES, MegaDrive, PC-Engine, ScummVM et tant d’autres. Celles que j’ai essayées tournent parfaitement, mais je suis sur que vous allez rencontrer des surprises. Mais maintenant, c’est moins grave, vous êtes familiarisés avec les configuration à tiroir de Retropie / LibRetro.
GLHF!