Installation de RetroPie sur PC
Ce tutoriel décrit l'installation et la configuration de la distribution Linux RetroPie sur un PC dédié à l'émulation de jeux vidéo. Ce PC peut-être intégré sous forme de borne d'arcade ou de console de jeu.
L'objectif est donc d'obtenir un système dédié, c'est à dire que dès l'allumage une interface proposera l'accès aux jeux.
Nous considérons qu'un système Debian basique a été installé sur le PC. Recommandations pour la suite de ce tutoriel:
- pas d'interface graphique ni de bureau installé,
- un accès SSH,
- on considère ci-après que le nom de l'utilisateur par défaut créé lors de l'installation est pi, sans permission particulière,
- une maîtrise minimale du shell Linux est fortement conseillée,
- une installation 64-bits est recommandée.
Configuration globale du système
Depuis un shell root, directement sur la machine, on autorise pi à avoir les droits root:
apt install sudo
usermod -aG sudo pi
apt install sudo
usermod -aG sudo pi
Pour que l'utilisateur pi n'aie pas besoin de mot de passe pour avoir les droits root, éditer la configuration de sudo:
sudo visudo
sudo visudo
et ajouter:
# No password for user pi
pi ALL=(ALL) NOPASSWD:ALL
# No password for user pi
pi ALL=(ALL) NOPASSWD:ALL
(ceci est déconseillé sur un PC classique).
Notez l'adresse IP de la machine sur le réseau local:
ip a
ip a
la suite du tutoriel peut-être faite depuis un shell SSH à partir d'une autre machine:
ssh pi@<adresse_ip>
ssh pi@<adresse_ip>
Installation des paquets requis pour la suite, pour l'affichage et l'audio:
sudo apt install xorg openbox pulseaudio alsa-utils curl
sudo apt install xorg openbox pulseaudio alsa-utils curl
Ajout de pi au groupe input:
sudo usermod -aG input pi
sudo usermod -aG input pi
Installation des pilotes graphiques
Pour améliorer le rendu 3D, il peut-être intéressant d'installer les pilotes officiels de votre carte graphique.
La procédure ci-dessous décrit l'installation pour une Geforce GTS 450. Si une autre carte graphique qu'une est utilisée, la procédure sera similaire, référez-vous à la documentation sur le wiki de Debian: https://wiki.debian.org/fr/GraphicsCard
Editer /etc/apt/sources.list et ajouter contrib et non-free, exemple:
deb http://httpredir.debian.org/debian/ stretch main contrib non-free
deb http://httpredir.debian.org/debian/ stretch main contrib non-free
Ensuite installer les composants nécessaires:
sudo apt update
sudo apt install linux-headers-$(uname -r|sed 's/[^-]*-[^-]*-//') nvidia-driver
sudo apt update
sudo apt install linux-headers-$(uname -r|sed 's/[^-]*-[^-]*-//') nvidia-driver
Démarrage immédiat sans timeout Grub
Editer /etc/default/grub et changer GRUB_TIMEOUT à 0. Puis exécuter:
sudo update-grub2
sudo update-grub2
Installation de Retropie
Tout d'abord:
sudo groupadd admin
sudo usermod -aG admin pi
sudo groupadd admin
sudo usermod -aG admin pi
Ensuite, suivre le tutoriel officiel, pour faire une "Basic install": https://retropie.org.uk/docs/Debian/
Démarrage automatique d'EmulationStation
La procédure ci-dessous permet au PC de démarrer directement sur EmulationStation.
On va automatiquement connecter l'utilisateur pi, puis automatiquement lancer Xorg ensuite, démarrer le bureau OpenBox puis EmulationStation.
Autologin d'un utilisateur
Exécuter:
sudo systemctl edit getty@tty1
sudo systemctl edit getty@tty1
Et entrer le contenu suivant:
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin pi --noclear %I $TERM
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin pi --noclear %I $TERM
Démarrage automatique de Xorg au login
Ajouter dans le fichier ~/.profile:
[ "$(tty)" = "/dev/tty1" ] && startx
[ "$(tty)" = "/dev/tty1" ] && startx
Retirer le curseur de souris
Editer /etc/X11/xinit/xserverrc et ajouter l'option -nocursor comme suit:
exec /usr/bin/X -nolisten tcp "$@" -nocursor
exec /usr/bin/X -nolisten tcp "$@" -nocursor
Démarrage automatique d'openbox
Créer le fichier ~/.xinitrc, le rendre exécutable, et y insérer:
xrandr -s 1440x900
amixer set Master unmute
xset -dpms s off
openbox-session
xrandr -s 1440x900
amixer set Master unmute
xset -dpms s off
openbox-session
Changer la résolution d'écran dans la ligne xrandr ci-dessus pour la valeur optimale de l'écran utilisé.
La ligne amixer permet de s'assurer que la sortie audio n'est pas en mode muet.
La ligne xset désactive l'écran de veille et le DPMS (Display Power Management Signaling) pour s'assurer qu'aucun écran noir ne survienne pendant qu'un jeu est lancé.
Démarrage automatique d'EmulationStation
Exécuter:
sudo RetroPie-Setup/retropie_setup.sh
sudo RetroPie-Setup/retropie_setup.sh
et aller dans Configuration / Tools > autostart > activer Autostart Emulation Station after login
Quitter l'outil, et exécuter:
sudo chown pi .config/autostart/retropie.desktop
sudo chown pi .config/autostart/retropie.desktop
Editer ~/.config/autostart/retropie.desktop et changer la valeur de Exec par:
Exec=~/run_emulationstation.sh
Exec=~/run_emulationstation.sh
Créer un fichier ~/run_emulationstation.sh, le rendre exécutable:
touch ~/run_emulationstation.sh
chmod +x ~/run_emulationstation.sh
touch ~/run_emulationstation.sh
chmod +x ~/run_emulationstation.sh
et y insérer:
#!/bin/bash
xterm -fg white -bg black -e emulationstation --no-splash
xterm -fg white -bg black
#!/bin/bash
xterm -fg white -bg black -e emulationstation --no-splash
xterm -fg white -bg black
la dernière ligne lance xterm au cas où l'on quitte emulationstation.
Personnalisation d'OpenBox
Créer la configuration:
mkdir ~/.config/openbox
mkdir ~/.config/openbox
la configuration est à faire dans ~/.config/openbox/rc.xml, qui doit contenir au minimum:
<?xml version="1.0" encoding="UTF-8"?>
<openbox_config xmlns="http://openbox.org/3.4/rc" xmlns:xi="http://www.w3.org/2001/XInclude">
</openbox_config>
<?xml version="1.0" encoding="UTF-8"?>
<openbox_config xmlns="http://openbox.org/3.4/rc" xmlns:xi="http://www.w3.org/2001/XInclude">
</openbox_config>
les nouvelles configurations sont à ajouter dans le bloc openbox_config.
Retirer la décoration des fenêtres
Dans le fichier ~/.config/openbox/rc.xml, dans la section openbox_config:
<applications>
<application class="*"> <decor>no</decor> </application>
</applications>
<applications>
<application class="*"> <decor>no</decor> </application>
</applications>
Terminal en plein écran
Ajouter dans la section applications:
<!-- Xterm fullscreen -->
<application name="xterm" class="XTerm" type="normal">
<decor>no</decor>
<fullscreen>yes</fullscreen>
<layer>below</layer>
</application>
<!-- Xterm fullscreen -->
<application name="xterm" class="XTerm" type="normal">
<decor>no</decor>
<fullscreen>yes</fullscreen>
<layer>below</layer>
</application>
Musique de fond
L'objectif est d'avoir une musique de fond quand on est dans le menu d'EmulationStation, la musique doit s'arrêter lorsque l'on lance un jeu.
Télécharger le script music_player.py à cette adresse: https://mathieu-abati.com/resources/guides/versusbox/music_player.py et le placer dans ~/music_player.py. Le rendre exécutable:
chmod +x ~/music_player.py
chmod +x ~/music_player.py
Editer le script et personnaliser la configuration dans l'en-tête du script.
Installer les dépendances du script:
sudo apt install python-pygame
sudo apt install python-pygame
Pour le lancement automatique de la musique, créer un fichier ~/.config/autostart/music_player.desktop et y insérer:
[Desktop Entry]
Type=Application
Exec=~/music_player.py
X-GNOME-Autostart-enabled=true
Name=music_player
[Desktop Entry]
Type=Application
Exec=~/music_player.py
X-GNOME-Autostart-enabled=true
Name=music_player
Vous n'avez plus qu'à placer des musiques dans le répertoire configuré en en-tête du script.
Paramétrage du système de jeu
NeoGeo en mode AES
Le mode AES est le mode console de salon de la NeoGeo.
Editer /opt/retropie/configs/all/retroarch-core-options.cfg et modifier fba-neogeo-mode en AES.
Choix de l'ordre des manettes
Installer Retropie Joystick Selection en suivant les instrtuctions ici: https://github.com/meleu/RetroPie-joystick-selection/#installation
Redémarrer, Joystick Selection est accessible par le menu RetroPie dans EmulationStation.
Résolution des problèmes
Illegal instruction au lancement d'emulationstation
GDB a révélé que le problème se trouvait dans libSDL2. Une réinstallation a corrigé le problème:
sudo apt remove --purge libsdl2-2.0-0 libsdl2-dev
sudo apt install libsdl2-2.0-0 libsdl2-dev
sudo apt remove --purge libsdl2-2.0-0 libsdl2-dev
sudo apt install libsdl2-2.0-0 libsdl2-dev
La configuration des manettes n'est pas mémorisée après redémarrage / n'est pas effective dans les jeux
Quitter EmulationStation puis Exécuter:
sudo RetroPie-Setup/retropie_setup.sh
sudo RetroPie-Setup/retropie_setup.sh
Aller à Manage Packages >> Manage Core Packages >> EmulationStation >> Configuration / Options >> Clear / Reset EmulationStation Input Configuration et réinitialiser la configuration.
Quitter l'outil de configuration et redémarrer. Reconfigurer les manettes, ça devrait fonctionner correctement.