[RASPBERRY-PI] Réaliser une "Rétro-Gaming Box" avec une Framboise



Hello amis Rétro-Gamers,

Cela faisait déjà quelques temps que je voulais tester les capacités du raspberry en matière de Rétro-Gaming, mais sans jamais franchir le cap. 
C'est le visionnage de quelques vidéos disponibles sur le net qui ont fini de me convaincre, en particulier celle-ci: 



Pourquoi un rapsberry ? Et bien tout simplement parce que cette machine est fabuleuse. Peu coûteuse et suivie par une communauté hyper-active, elle offre de multiples possibilités (MediaCenter, Serveur dédié, Retro-Gaming, Domotique, Electronique...)
Ayant déjà un pi en ma possession, mais celui-ci dédié serveur HTTP/FTP/téléchargement, il me fallait m'en procurer un nouveau. J'ai donc craqué pour un Pi B+, dernière version en date de la machine.
Cette révision offre 4 ports USB, le support Micro-SD, une meilleure gestion de l'alimentation, une sortie jack gérant la vidéo et le son (analogique)... 


Pi B+

Pour les contrôles, j'aurai pu utiliser une manette Xbox 360, mais je voulais quelques chose de plus rétro. 
C'est donc tout naturellement que je me suis dirigé vers les manettes bluetooth de chez 8Bitdo la NES30 et la FC30, que nous avait présenté k0en dans un précédent article :)



Pour le système j'ai choisi EmulationStation, un FrontEnd multi-plateforme (Windows, Linux, Raspberry). Dans la version raspberry, le FrontEnd est couplé à RetroPie (un package d'émulateurs). 
Le tout est mise à disposition dans une image prête à l'emploi prenant en charge l'émulation des systèmes suivants:
- Amiga (UAE4All)
- Apple II (Basilisk II)
- Arcade (PiFBA)
- Atari 800
- Atari 2600 (RetroArch)
- Atari ST/STE/TT/Falcon
- C64 (VICE)
- CaveStory (NXEngine)
- Doom (RetroArch)
- Duke Nukem 3D
- Final Burn Alpha (RetroArch)
- Game Boy Advance (gpSP)
- Game Boy Color (RetroArch)
- Game Gear (Osmose)
- Intellivision (RetroArch)
- MAME (RetroArch)
- MAME (AdvMAME)
- NeoGeo (GnGeo)
- NeoGeo (Genesis-GX, RetroArch)
- Sega Master System (Osmose)
- Sega Megadrive (DGEN, Picodrive)- Nintendo Entertainment System (RetroArch)
- N64 (Mupen64Plus-RPi)
- PC Engine / Turbo Grafx 16 (RetroArch)
- Playstation 1 (RetroArch)
- ScummVM
- Super Nintendo Entertainment System (RetroArch, PiSNES, SNES-Rpi)
- Sinclair ZX Spectrum (Fuse)
- PC / x86 (rpix86)
- Z Machine emulator (Frotz)

Voila, le but de cet article est simple, vous faire découvrir cette formidable machine et vous guider dans la réalisation de votre propre Box Rétro-Gaming. 

Remarque: Il s'agit ici de ma configuration personnelle et plusieurs étapes ne sont pas indispensables, mais il est préférable d'en prendre connaissance (à vous de voir). 
Le système une fois installé étant quasiment Plug And Play, vous pouvez directement passer au paragraphe Configurer EmulationStation/RetroPie.

  • Achats des Prérequis

Pour ma part j'ai tout commandé sur www.amazon.fr, bien-sur vous pouvez le faire sur d'autres sites, comme par exemple:
https://www.modmypi.com/
http://www.planete-domotique.com/

Ce qu'il vous faut:

- Un Raspberry b+
- Un boitier transparent pour profiter de l'esthétique de la bête.
- Des dissipateurs thermiques nécessaire en cas d'overcloking, ce qui devrait être utile dans notre cas.
- Une alimentation pour donner du jus au pi.
- Une carte Micro-SD (16GO ou +, class 10 de préférence). J'ai pris l'option de mettre mes roms dessus, une alternative pourrait être d'utiliser une clé USB (formatage ext4).
- Un dongle bluetooth pour appareiller les deux manettes au pi.
Remarque: les manettes peuvent également marcher en filaire. Dans ce cas le dongle n'est pas obligatoire.
Budget: 65.6 Euros

Prévoir également:

- un câble réseau (c'est mon cas) ou un dongle WIFI pour vous connecter à votre réseau (disponible sur amazon ou modmypi).
- un câble HDMI ou composite (c'est mon cas, il faut un câble pour ipod)
- un clavier/souris si vous souhaitez administrer votre machine sur votre TV. 
Remarque: Dans mon cas j'utilise un mini clavier/souris de chez iclever. La manette ne disposant pas assez de boutons pour assigner une touche de sortie pour certains émulateurs (en général ESC).

Pour les manettes NES30 et FC30, elles sont disponibles chez notre partenaire WillGoo (voir l'article de k0en).

Budget: 49.4 Euros

  • Hardware



Une fois toutes les pièces réceptionnées, il va falloir assembler tout ça. Et bien rassurez vous, il s'agit certainement de l'étape la plus simple, rien de compliqué ici l'assemblage des différents composants s’effectue de manière "easy":

- Disposer les dissipateurs thermiques sur le pi.

- Encastrer le pi dans le boitier.
- Connecter le pi à votre TV (HDMI ou composite). 
- Connecter le pi au réseau (câble ou WIFI, dans ce cas il faut une étape de paramétrage supplémentaire).
- Brancher l'alimentation, sans la relier au secteur pour l'instant.






Remarque: l'ajout du dongle bluetooth se fera plus tard, durant la phase de configuration du système.

  • Software 

Maintenant que l'assemblage est fait, il va falloir passer à la partie exploitation. Pour cela nous allons installer une image EmulationStation.

Remarque: Sachez qu'en cas de problèmes, il est possible à tout moment de revenir en arrière. Il suffit pour cela de réinstaller l'image sur votre carte Micro-SD.


    • Téléchargement / Installation

Il existe plusieurs alternatives à EmulationStation:
Lakka/RetroArch (http://www.lakka.tv/get/linux/rpi/ | https://github.com/lakkatv/Lakka/wiki)
XBMC (avec le plugin rom collection browser)
- PIMAME (http://beunlike.com/pimame-une-borne-darcade-pour-le-raspberry-pi/)
- RaspiCade (http://www.morere.eu/spip.php?article176)
PYRHARCKADE (http://pyrharckade.tuxme.net/)
...

Mais EmulationStation offre une interface simple et épurée qui me convient très bien.


Installation: http://www.emulationstation.org/gettingstarted.html#install_rpi_retropie

Dans un premier temps, il vous faut récupérer la dernière version du système (2.3) disponible ici: http://blog.petrockblock.com/download/retropie-project-image/


Une fois le téléchargement terminé, l'installation devrait s'effectuer simplement. Pour cela il vous faut un PC sous Windows (sinon la procédure diffère) ainsi qu'un lecteur de carte Micro-SD (dont vous devez certainement disposer, sinon il vous faudra le rajouter à la liste de vos achats). 

- Se procurer le logiciel win32diskimager (http://sourceforge.net/projects/win32diskimager/) qui va vous permettre de copier votre image sur votre Micro-SD.
- Installer le logiciel. Next, Next, Next...
- Insérer la Micro-SD dans votre lecteur de carte, puis le connecter à votre PC.
- Lancer le logiciel.
- Sélectionner le lecteur de votre carte (attention à ne pas vous tromper), puis l'image du système et cliquez sur Write



- Une fois l'opération terminée, il vous suffit de détacher votre lecteur de carte et d'insérer votre Micro-SD dans votre pi.

Vous pouvez maintenant connecter votre pi au secteur, à partir de cet instant il devrait automatiquement booter sur EmulationStation


    • Configurer votre PI

Pour administrer la bête plusieurs possibilités s'offrent à vous. 
La plus simple consiste à utiliser votre écran ou téléviseur, la seconde consiste à utiliser une autre machine pour accéder à votre pi à distance (pas forcément plus compliqué). 
Personnellement j'ai choisi cette dernière solution, à vous de choisir celle qui vous convient le mieux.

Si vous choisissez la première solution, il vous faudra connecter un clavier/souris à votre pi. Pour obtenir le shell (une invite de commande), il suffit de quitter EmulationStation via le Menu ou avec la touche F4. 
Pour relancer le FrontEnd il suffit de taper la commande:
$ emulationstation

Remarque: dans ce cas de figure les deux paragraphes suivants ne vous concernent pas, mais les informations sont tout de même bonnes à prendre.

Pour administrer votre pi a distance vous aurez besoin de son adresse IP. Sur votre ordinateur, ouvrez une fenêtre de commandes DOS (cmd.exe) et lancez la commande suivante:
> ping raspberrypi

Si tout va bien, votre pi doit vous répondre et afficher son adresse IP. Vous pouvez également la retrouver au niveau de l'interface d'administration de votre routeur dans la liste de vos appareils connectés.



      • SSH (Administration en mode console)

Le protocole SSH va vous permettre d'ouvrir une session distante sur votre pi. Pour cela il vous suffit de récupérer le logiciel putty sur votre ordinateur.

Télécharger putty: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html


Une fois le logiciel installé et lancé, rentrez les informations de connexion ci-dessous:



HostName: mettre l'adresse IP récupérée précédemment
Port: 22
Connection Type: SSH

Cliquez sur Save pour sauvegarder votre configuration, puis faire un double-clic sur votre nouvelle connexion pour lancer une session.

Si tout va bien un prompt doit apparaître, il vous suffit de saisir votre login/password.
Par défaut les identifiants sont les suivants:
login: pi
password: raspberry



      • WinSCP (Transférer/Modifier des fichiers via SCP)

WinSCP va vous permettre de modifier à distance les fichiers de votre pi.
Remarque: Vous pouvez également utiliser cette méthode pour transférer vos roms.


Télécharger WinSCP: http://winscp.net/eng/download.php

Une fois le logiciel installé et lancé, créez un Nouveau Site et rentrez les informations de connexion ci-dessous:




File Protocol: SCP
Nom d'hôte: mettre l'adresse IP récupérée précédemment
Port: 22
User name: pi
Password: raspberry


Sauvegardez votre configuration, puis faire un double-clic sur votre nouvelle connexion pour lancer une session.

Remarque: en vous connectant avec le user pi, vous n'aurez pas le droit de modifier tous vos fichiers. Pour cela il faut utiliser l'utilisateur root "at your own risk".

      • Xming (Administration en mode graphique)

Remarque: ce paragraphe n'est pas obligatoire, l’administration du pi s'effectue très facilement en utilisant uniquement Putty et WinScp

Pour administrer votre machine à distance en disposant d'une interface graphique comme sous Windows, il faut installer Xming sur votre ordinateur. 

Télécharger Xming: http://sourceforge.net/projects/xming/

Une fois le logiciel installé et lancé, la configuration s'effectue de la manière suivante:
Select display settings > Choisir l'option One Window ou FullScreen
Select how to Start Xming > Choisir l'option Start a program
Start program > renseignez les informations ci-dessous:


Configuration complete > cliquez sur le bouton Save Configuration
La sauvegarde du paramétrage va créer un fichier qui vous permettra de lancer une session par un simple double-clic.


      • First Installation

Une fois connecté au pi de la manière que vous aurez choisi: avec écran, à  distance, en mode console ou graphique...
Nous allons passer aux choses sérieuses à savoir la configuration de votre système.

Remarque importante: un "ctrl + c" permet de quitter toute commande en cours d’exécution. Il ne faut pas saisir les caractères " $ " et " > " dans les commandes (il s'agit du prompt).

- Utilisation d'une IP Dynamic ou Static:

Personnellement j'ai laissé mon adresse IP en Dynamique c'est le routeur qui se charge d'en affecter une à mon pi. 
Le souci d'utiliser une adresse Dynamique c'est qu'il faut être capable de localiser la machine sur le réseau (vu que l'adresse est susceptible de changer à chaque reboot).
Pour cela nous allons donner un nom à notre pi (hostname). Comme nous l'avons vu précédemment, le nom par défaut de la machine est raspberrypi.

Attention! si vous changez ce nom, il vous faudra changer les configurations que vous avez effectué précédemment (putty, winscp, xming).



Pour changer de hostname, il suffit éditer le fichier /etc/hostname avec la commande:
$ sudo nano /etc/hostname

Remplacez "raspberrypi" par votre nouveau nom de machine dans mon cas pi-estation
"crtl + x" pour sortir de l'éditeur et "Y" pour sauvegarder vos modifications.

Puis éditez le fichier /etc/hosts avec la commande:
$ sudo nano /etc/hosts

Le fichier doit ressembler à ça:
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback

fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.1.1 raspberrypi

Il faut modifier la dernière ligne en changeant l'ancien nom par le nouveau. 
"crtl + x" pour sortir de l'éditeur et "Y" pour sauvegarder vos modifications.

Après ça vous pouvez redémarrer votre pi:
$ sudo reboot

Faite de nouveau un ping à partir d'une autre machine, vous devriez obtenir le résultat ci-dessous:
> ping pi-estation



- La Commande raspi-config:
La commande suivante permet d'effectuer quelques paramétrages de base (overcloking, gestion des paramètres locaux, étendre la partition...): 

$ sudo raspi-config 

La configuration de base du pi est stockée dans le fichier config.txt, visible sur votre carte Micro-SD soit à partir d'un explorateur Windows. Soit directement depuis votre pi /boot/config.txt.

Plus d'informations sur la commande: 
http://www.raspberrypi.org/documentation/configuration/raspi-config.md

- Etendre la partition:
Par défaut, le système ne prend pas toute la place disponible sur votre carte Micro-SD, pour y remédier vous pouvez utiliser la commande précédente, il s'agit de l'option 1. 

Une fois la modification effectuée, il faut rebooter le pi:
$ sudo reboot

Pour vérifier le résultat utilisons la commande suivante:
$ df -h


- Changement de password:
A vous de voir, personnellement je ne l'ai pas fait (pour l'instant). 

Tapez la commande suivante:
$ sudo passwd

Suivez les instructions:
Changing password for pi.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

      • Installation du dongle bluetooth

Les manettes 8Bitdo sont bluetooth, c'est donc pour en profiter pleinement que j'ai acheté un dongle bluetooth. Vous pouvez également les utiliser en mode filaire, elles devraient être directement reconnues par le pi. De la même manière vous pouvez aussi utiliser des manettes xbox 360, sony sixaxis...

Attention! il vous faut le firmware 2.5 pour corriger le BUG du joystick qui est reconnu comme un clavier.
ici: http://download.8bitdo.com/Firmware/bluetooth_firmware_V2.5.zip
firmwares: http://www.nes30.com/firmware.html

Pour faire reconnaître votre dongle par le pi, rien de plus simple, il faut exécuter les commandes suivantes:

MAJ de votre système:
$ sudo apt-get update
S sudo apt-get upgrade

Installation du dongle:
$ sudo apt-get install bluetooth bluez-utils blueman

Une fois terminé (c'est un peu long), il faut arrêter votre pi:
$ sudo halt

Vous pouvez maintenant connecter votre dongle et reconnecter votre pi au secteur.

Vérifiez que votre dongle est bien reconnu:
$ lsusb

Vous devriez voir apparaître la ligne suivante:
Cambridge Silicon Radio, Ltd Bluetooth Dongle

Vérifiez que le service est bien démarré:
$ /etc/init.d/bluetooth status

A partir de là, vous pouvez scanner et appareiller vos manettes.
Pour information:
Pour allumer la manette maintenez le bouton "start + R" pendant 3s (démarrage en mode Joystick).
Pour éteindre la manette maintenez le bouton "start" pendant 3s.

Pour scanner, les appareils bluetooth:
$ hcitool scan

Vous devriez voir apparaître votre manette, notez son adresse mac, puis exécutez les commandes suivantes en remplaçant l'adresse par la votre:
$ sudo bluez-simple-agent hci0 75:EF:82:69:D2:83
$ sudo bluez-test-device trusted 75:EF:82:69:D2:83 yes
$ sudo bluez-test-input connect 75:EF:82:69:D2:83

Normalement la manette devrait être connectée (lumière bleue fixe).
Attention! n'hésitez pas a refaire une commande en cas d'échec, comme sur tous les devices l'appareillage bluetooth est capricieux.

Par défault, le pi n'est pas capable de reconnecter automatiquement les manettes, j'ai donc réalisé un petit script qui va s'en charger (disponible ici)
GitHub: https://github.com/frthery/ES_RetroPie/tree/master/scripts

Il faut éditer le fichier pour remplacer les adresses mac des variables bt1 et bt2 par vos adresses récupérées plus haut.

Il faut copier le fichier dans le répertoire /home/pi/ et lui donner les droits en exécution:
$ sudo chmod 755 btDaemon.sh

Pour démoniser votre script et faire en sorte qu'il s'exécute à chaque démarrage de la machine, il faut modifier le fichier /etc/rc.local et ajouter la ligne suivante en fin de fichier (juste avant la ligne exit 0):
sudo /home/pi/./btDaemon.sh&

Pour éditer le fichier:
$ sudo nano /etc/rc.local

"crtl + x" pour sortir de l'éditeur et "Y" pour sauvegarder vos modifications.

Il existe différentes manière d’exécuter le script. Ces alternatives sont expliquées ici: 
http://raspberrywebserver.com/serveradmin/run-a-script-on-start-up.html

MAJ:
Suite a des soucis de lags (ingame) avec le script, je me suis dirigé vers une solution service. Cette solution va nous permettre de démarrer et d'arrêter le script à la demande.

Récupérez le script btService ici.
Copiez le fichier dans le répertoire /home/pi/ et lui donner les droits en exécution:
$ sudo chmod 755 btService

Déplacez le fichier dans le répertoire /etc/init.d:
$ sudo mv btService /etc/init.d

Comment utiliser le service:
Démarrer:
$ sudo /etc/init.d/btService start
Arrêter:
$ sudo /etc/init.d/btService stop
Afficher le statut du service:
$ sudo /etc/init.d/btService status

Pour faire en sorte que le service démarre à chaque reboot de la machine, exécutez la commande suivante:
$ sudo update-rc.d btService defaults

Maintenant pour éviter que le script ne tourne en permanence (et ainsi éviter les lags ingame), nous allons modifier le script runcommand.sh

Ce script ce charge de lancer la plupart des émulateurs de RetroPie. Nous allons le modifier pour arrêter notre service avant exécution de l'émulateur et le relancer après fermeture.


Pour cela, il faut éditer le fichier (voir le fichier):
$ sudo nano /opt/retropie/supplementary/runcommand/runcommand.sh

Ajoutez la ligne suivante avant # set cpu governor profile performance :
sudo /etc/init.d/btService stop
Ajoutez la ligne suivante avant le exit 0:
sudo /etc/init.d/btService start

"crtl + x" pour sortir de l'éditeur et "Y" pour sauvegarder vos modifications.

Attention! Avec cette configuration, vos manettes ne seront détectées que sous emulationtstation.

Vous pouvez maintenant rebooter votre pi. A partir de là vos manettes devraient se connecter automatiquement (l'opération peut parfois prendre un peu de temps). 

TIPS: Comment monitorer le service ?
Pour voir en temps réel les logs du service, il suffit d’utiliser la commande:
$ tail -f /var/log/btDaemonLogger.log
(ctrl + c pour arrêter le monitoring)

Plus d'informations concernant l'installation du dongle bluetooth:
https://www.modmypi.com/blog/installing-the-raspberry-pi-nano-bluetooth-dongle

http://www.ctheroux.com/2012/08/a-step-by-step-guide-to-setup-a-bluetooth-keyboard-and-mouse-on-the-raspberry-pi/

      • Samba (partager des fichiers sur votre réseau)

Samba va vous permettre de créer un espace de partage visible sur votre réseau. C'est sur ce partage que nous allons stocker nos ROMS. 

Samba doit déjà être installé et prêt configuré. En effet u
n partage est déjà disponible: /home/pi/RetroPie/roms/

Éditez le fichier /etc/samba/smb.conf avec la commande:
$ sudo nano /etc/samba/smb.conf

A la fin, on retrouve la configuration du partage:
[roms]
comment = roms
path = /home/pi/RetroPie/roms
writeable = yes
guest ok = yes
create mask = 0644
directory mask = 0755
force user = pi

Personnellement j'ai ajouté un nouveau répertoire de Partage appelé storage. Pour cela il vous suffit de copier/coller la configuration de base et changer les valeurs du path, comment et le tag au dessus de la config.
Vous pouvez également changer le chemin pour que le Partage pointe sur une clé USB, de préférence formaté en ext4.

Avec ce paramétrage le partage n'est pas sécurisé. Ce qui veut dire que toutes les personnes de votre réseau peuvent y accéder.

Pour accéder à votre partage, il vous suffit d'ouvrir un explorateur Windows (ou autre) à l'adresse suivante: \\pi-estation\




Voila, il ne vous reste plus qu'à copier/coller vos ROMS.

Remarque: N'oubliez pas notre sélection de BestSets et de FullSets, disponibles ici et ici.

    • Configurer EmulationStation/RetroPie

Après le système, passons à la configuration du FrontEnd et de RetroPie.

Je ne détaillerai pas ici toute la configuration, mais seulement quelques principes de base (configuration des manettes, ajout de systèmes, scraper...). 
En effet il appartient à chacun de configurer ses émulateurs comme bon lui semble.

Les liens ci-dessous devraient vous permettre d'aller plus loin dans la configuration:

http://blog.petrockblock.com/retropie/
https://github.com/petrockblog/RetroPie-Setup/wiki
https://github.com/Aloshi/EmulationStation/blob/master/README.md
https://github.com/libretro/RetroArch/wiki

      • Configurer le FrontEnd EmulationStation

La configuration s'effectue à partir de fichiers xml: es_systems.cfg, es_input.cfg, es_settings.cfg ...
Ces derniers sont situés dans le répertoire .emulationstation de votre répertoire personnel.

/home/pi/.emulationstation/


La configuration peut se faire:
- Avec Putty avec la commande: $ sudo nano <<fichier>>
- Avec WinSCP, pour cela il suffit d'éditer puis sauvegarder le fichier souhaité. 

Remarque: Pour que le FrontEnd se lance correctement, il faut qu'au moins un système avec une ROM soit configuré correctement.

- Configuration de la manette:

Remarque: pour éviter tout conflit de devices, le mieux est de toujours les allumer avant le démarrage du pi.



La configuration se fait au premier démarrage de EmulationStation et par la suite via le Menu. 
Plusieurs devices sont configurables, c'est ce que j'ai fait en paramétrant une manette et mon mini clavier. 
(pour bypasser une configuration de touche il suffit d'appuyer sur un bouton pendant 3s)

Une fois terminée la configuration est stockée dans le fichier es_input.cfg (voir un exemple de fichier)

- Ajout de systèmes:
Le fichier es_systems.cfg permet de configurer vos systèmes (répertoires des roms, émulateurs utilisés...). 

Personnellement (pour l'instant) j'ai configuré les systèmes suivants: SuperNintendo, Megadrive, Nes, FBA, MAME, PC-engine, DOOM, GB, GBC

Ci-dessous u
n exemple de configuration système:

<system>
   <fullname>Sega Mega Drive / Genesis</fullname>
   <name>megadrive</name>
   <path>~/RetroPie/roms/megadrive</path>
   <extension>.smd .SMD .bin .BIN .gen .GEN .md .MD .zip .ZIP</extension>
        <command>/opt/retropie/supplementary/runcommand/runcommand.sh 4 "/opt/retropie/emulators/RetroArch/installdir/bin/retroarch -L /opt/retropie/emulatorcores/picodrive/picodrive_libretro.so --config /opt/retropie/configs/all/retroarch.cfg --appendconfig /opt/retropie/configs/megadrive/retroarch.cfg  %ROM%"</command>
   <!-- alternatively: <command>/opt/retropie/supplementary/runcommand/runcommand.sh 1 "/opt/retropie/emulators/dgen-sdl/installdir/bin/dgen -f -r /opt/retropie/configs/all/dgenrc %ROM%"</command> -->
   <!-- alternatively: <command>export LD_LIBRARY_<path>"/opt/retropie/supplementary/dispmanx/SDL12-kms-dispmanx/build/.libs"; /opt/retropie/emulators/dgen-sdl/dgen %ROM%</path></command> -->
   <platform>genesis,megadrive</platform>
   <theme>megadrive</theme>
</system>

- <path> : chemin de vos roms megadrive

- <extension> : les extensions de vos roms
- <command> : la commande qui exécute l'émulateur, ici il s'agit de retroarch avec le core picodrive. 
Remarque: en commentaire "alternatively" on retrouve des commandes alternatives pour exécuter d'autres émulateurs. A vous de tester et de choisir celui qui vous convient le mieux.

Pour ajouter un nouveau système c'est assez simple, il existe un fichier es_systems.cfg disponible ici: /etc/emulationstation/ (Voir le fichier)
Celui-ci contient de nombreux systèmes prés-configurés, il vous suffit donc de copier/coller les systèmes qui vous intéressent dans votre propre fichier: /home/pi/.emulationstation/es_systems.cfg

- Scraper:
Le scraper est un outil qui va vous permettre de récupérer les informations relatives à vos ROMS (cover, description...). 
Le scraper est accessible directement à partir du Menu du FrontEnd et se base sur différentes sources thegamedb, mamedb, scummvm, ...

      • Configurer les émulateurs RetroPie

Alors là, on attaque la partie la plus compliquée, et qui sera différente pour chacun d'entre nous...

Retropie est stockée ici /opt/retropie/ 





- configs: contient les fichiers de configuration de retroarch.
- emulatorcores: contient les cores retroarch.
- emulators: contient les émulateurs.
- supplementary: contient des outils.

Par défaut Retroarch utilise un fichier de base /opt/configs/all/retroarch.cfg (voir le fichier) qui est surchargé pour chaque système (cores) dans les répertoires correspondants /opt/configs/?

Pour configurer chaque core, il suffit d'éditer le fichier spécifique et d'y ajouter les options que vous souhaitez.
Pour connaitre ces options, il vous suffit d'éditer le fichier de base qui contient de nombreux commentaires.

Pour configurer votre manette, le plus simple est de passer par l'outil retroarch-joyconfig, disponible ici: /opt/retropie/emulators/RetroArch/installdir/bin/


Pour l'exécuter:
$ ./retroarch-joyconfig

Utilisation de l'outil:
( -o for output file, -p for player, -j for joystick id )
-j 0 correspondant au premier joystick et -j 1 au deuxième.

L'outil va vous demander d'appuyer sur les touches de votre manette (pour bypasser certaines touches, il suffit d'appuyer sur une autre, il vous faudra la supprimer par la suite). Une fois toutes les touches assignées, il vous reste à copier le configuration générée et la coller dans le fichier système concerné.

Exemple de configuration Player 1 (NES30) / Player 2 (FC30):
input_driver = "udev"

input_enable_hotkey_btn = "17"
input_exit_emulator_btn = "18"

input_player1_joypad_index = "0"
input_player1_b_btn = "14"
input_player1_y_btn = "11"
input_player1_select_btn = "17"
input_player1_start_btn = "18"
input_player1_up_axis = "-1"
input_player1_down_axis = "+1"
input_player1_left_axis = "-0"
input_player1_right_axis = "+0"
input_player1_a_btn = "13"
input_player1_x_btn = "12"
input_player1_l_btn = "15"
input_player1_r_btn = "16"

input_player2_joypad_index = "1"
input_player2_b_btn = "14"
input_player2_y_btn = "11"
input_player2_select_btn = "17"
input_player2_start_btn = "18"
input_player2_up_axis = "-1"
input_player2_down_axis = "+1"
input_player2_left_axis = "-0"
input_player2_right_axis = "+0"
input_player2_a_btn = "13"
input_player2_x_btn = "12"
input_player2_l_btn = "15"
input_player2_r_btn = "16"

TIPS: Comment combiner deux touches pour sortir de retroarch ?
Il suffit d'ajouter les lignes suivantes:
input_enable_hotkey_btn = "17"
input_exit_emulator_btn = "18"

La combinaison SELECT + START permet maintenant de sortir de l'émulateur.

TIPS (Merci à bazola pour cette astuce!): Comment régler le problème de configuration des deux gamepads ?
Par défaut le clavier rentre en conflit avec les directions des gamepads, pour régler le problème, il suffit de remplacer les directions clavier par la valeur "nul".
Fichier retroarch.cfg dans /opt/retropie/configs/all/:
input_player1_left = "nul"
input_player1_right = "nul"
input_player1_up = "nul"
input_player1_down = "nul"


Pour les autres émulateurs, il faudra assigner les touches directement dans les fichiers de configuration (piFBA dans le fichier fba2x.cfg, imame4all en appuyant sur la touche tab ingame, ...). 
Remarque: la combinaison SELECT + START est également reconnue par piFBA.
La configuration des émulateurs se fait dans leurs répertoires respectifs: /opt/emulators/

Pour vous aider dans la configuration des touches vous pouvez installer ce package:
$ sudo apt-get install joystick

La commande suivante permet de debugger votre manette. Elle signale par un Ok la touche pressée (js0 correspondant au premier joystick, js1 au deuxième):
$ sudo jstest /dev/input/js0

Vous pouvez également utiliser la commande suivant en remplaçant le ? par l'index de votre gamepad :
$ sudo evtest /dev/input/event?

Pour connaitre l'index de votre gamepad:
$ cat /proc/bus/input/devices | grep -w 'I:\|N:\|H:'


NES30 Layout (/dev/input/js0)

TIPS: Comment modifier certains émulateurs via WinSCP ?
Il suffit de changer le propriétaire du répertoire, exemple avec l'utilisateur pi:
$ sudo chown -R pi:pi "/opt/retropie/emulators/pifba/"

Plus d'informations sur la configuration des joysticks: 
- PAD xbox 360: https://github.com/petrockblog/RetroPie-Setup/wiki/Setting-up-the-XBox360-controller
- https://wiki.archlinux.org/index.php/joystick
http://mpolaczyk.pl/raspberry-pi-series-reverse-engineering-of-joystick-usb-communication-protocol/

  • Pour aller plus loin

- Overcloking: 
Avec son petit processeur le pi, montre très rapidement ses limites, c'est pour cette raison que nous allons le booster un peu.

$ sudo raspi-config



Personnellement j'utilise le preset Turbo, si vous constatez que votre machine devient instable (freeze, plantages, corruption de carte...) vous pouvez en tester un autre.

-Retropie_Setup:
Cette commande permet d'effectuer quelques paramétrages supplémentaires, comme les mises à jours de RetroPie, installation de drivers (ex: manette 360), installation d'émulateurs, ... 

Dans le répertoire: /home/pi/RetroPie-Setup/
$ sudo ./retropie_setup.sh



Plus d'informations sur le script: 
http://blog.petrockblock.com/2012/07/22/retropie-setup-an-initialization-script-for-retroarch-on-the-raspberry-pi/

TIPS: Comment compiler et mettre à jour simplement vos émulateurs et cores ?
Voir le tutoriel disponible sur le forum d'Open-Consoles.

- alsamixer:
Par défaut le son en sortie du pi été trop bas pour moi.

Pour y remédier, il suffit d’exécuter la commande:
$ alsamixer




A partir de là vous pouvez augmenter le volume puis fermer l'application.
Pour sauvegarder les settings, utilisez la commande suivante:
$ sudo alsactl store

- Backup:
Une fois que votre système est correctement configuré, vous pouvez en faire une sauvegarde. 
C'est simple, il suffit d'utiliser l'outil que nous avions utilisé pour installer l'image emulationstation.

Il suffit de mettre un nom d'image, de sélectionner votre lecteur de carte et de cliquer sur Read


Attention! si votre carte fait 16GO, l'image fera la même taille, vous pourrez par la suite la compresser (sauf si votre système est full) 

  • En Conclusion

Voila, votre Retro-Gaming Box est prête, il ne vous reste plus qu'à en profiter :)


Place à mon avis personnel sur la bête. 
Et bien si vous voulez jouer à des systèmes inférieurs à 32bits, cette machine est faite pour vous. Au delà quelques jeux PS1 sont jouables, mais pour la plupart c'est lent. En ce qui concerne la N64 c'est inenvisageable à l'heure actuelle. 

Toutefois ce manque de puissance est largement compensé par son encombrement mini, son prix imbattable, linux, son silence, sa flexibilité, sa communauté hyper-active...
Vous pouvez tout faire avec cette machine et changer de système comme bon vous semble en un clin d’œil, tout simplement en remplaçant votre carte Micro-SD. Donc même si en matière de Retro-Gaming le pi ne vous convient pas vous trouverez toujours quelque chose à lui faire faire. D’ailleurs je prévois de monter une carte avec XBMC (RaspBMC ou OpenELEC), que je voulais également tester depuis longtemps.

Pour mon utilisation Retro-Gaming Arcade (FBA/MAME), SNES, Megadrive, NES, PC-Engine, ... et couplé aux manettes de chez 8Bitdo la machine remplit complètement le contrat. Reste maintenant à voir comment vont évoluer la communauté et la bête dans l'avenir, et pourquoi pas un jour transformer une framboise en une Box Ultime :)

Voila, j'espère que cet article vous a convaincu et vous aidera dans vos futurs achats. N'hésitez pas à nous laisser vos commentaires ici, mais aussi sur le Forum.


---

Je vous laisse avec ces quelques liens, pour en apprendre un peu plus. 
Liens de référence EmulationStation/RetroPie:
http://www.emulationstation.org/
http://blog.petrockblock.com/
http://blog.petrockblock.com/forums/forum/retropie-project-forum/
Share on Google Plus
    Commentaire
    Commentaire

9 commentaires :

  1. Hello ! Merci beaucoup pour ton article ! Personnellement j'ai opté pour une solution avec Debian qui boote sous AdvanceMenu, et ce dernier configuré pour lancer divers émulateurs (très simple, on spécifie le chemin de l'émulo, des roms et des snaps). Ça peut faire une mosaïque animée sympa avec des fichiers vidéos .mng par exemple.

    Bref, ma question est : quelle version de MAME utilises-tu ? Dans mon expérience, seule mame4all (de squid) est vraiment exploitable (d'un point de vue vélocité). Je le complète avec le port de squid de Final Burn (pifba) qui est vraiment rapide mais où j'ai remarqué un peu d'input lag. Le souci aussi c'est que le filtrage bilinéaire me fait mal aux yeux, mais les scanlines que l'on peut mettre ne sont pas satisfaisantes. Sur ces points, cela donne quoi avec la version de MAME que tu utilises ? Merci !!

    RépondreSupprimer
  2. Merci pour ce tutoriel extraordinairement complet et le script pour les manettes! Je ne connais rien en codage, mais vous me donnez envie d'en apprendre plus. Encore merci!

    RépondreSupprimer
  3. Hello et merci pour vos retours.

    J'utilise effectivement mame4all et piFBA. Ce dernier offre de meilleurs performances sur les jeux les plus gourmands, par contre je n'ai pas rencontré d'input lag, peut être parce que par défaut je n'utilise aucun filtre sur les émulateurs (j'ai un bon vieux crt). En fait je jongle entre les deux Mame et FBA, en fonction de la compatibilité.

    RépondreSupprimer
  4. Super tuto. Par contre, j'ai une petite question. J'ai acheté la même manette que toi, la NES30 mais impossible qu'elle soit reconnue en filaire (je n'ai pas encore testé le bluetooth). As-tu eu ce problème?

    RépondreSupprimer
  5. Hello, désolé je n'ai pas testé en filaire. Etrange, j'ai déjà lu des posts pour qui ça marché :/

    RépondreSupprimer
  6. Après essai avec le Bluetooth de la Manette NES30 le dongle est bien reconnu par contre impossible de faire le scan. Cela me met cette inscription: Device is not available: No such device.

    RépondreSupprimer
  7. Salut, j'ai essayé PYRHARCKADE (http://pyrharckade.tuxme.net) avec pimame et c'est pas mal aussi ... faut juste savoir un minimum comment est gaulé linux ;) De ce que j'ai vu le mec prépare une distrib ou une images sd toute faite

    RépondreSupprimer