Bartop : Construction de ma borne d’arcade #5 : Software

Dans le premier article concernant la construction de la borne d’arcade, je vous parlais du montage de la structure du caisson, la partie esthétique de la borne si je puis dire.

Dans cet article, je vais vous présenter la partie software, il n’y a pas énormément de chose à comprendre et à faire mais il va falloir tout de même être attentif les enfants ;).

Comme vous le savez, j’ai choisi de me servir d’un Raspberry Pi B+ pour des raisons de coût (29€) et de consommation électrique. Voulant émuler principalement de la NeoGeo et de la Super Nintendo, le micro PC est réellement l’outil idéal.

si vous souhaitez faire tourner des jeux N64 et PlayStation One, le Raspberry Pi B+ (ancienne version) est trop juste pour ce niveau d’émulation

Avant toute chose, il faut savoir que le RPi est propulsé par une puce spécialement conçu par Broadcom, sous architecture ARM.
Il n’y a pas de possibilité d’installer un Windows 8.1 et antérieur sur la machine. Windows a bien une version IOT mais rien de suffisamment complet pour faire de l’émulation.

A noter également la sortie de la toute nouvelle version du Raspberry Pi 2. Six fois plus puissant pour le même prix et les même ports. Préférez ce nouveau modèle si vous souhaitez faire tourner des jeux Nintendo 64 et PlayStation One, le Raspberry Pi B+ (ancienne version) est trop juste pour ce niveau d’émulation. Il faudra vous munir de Raspbian, une distribution de Linux tout spécialement conçu pour la mini-machine.

Pas trop d’inquiétude, si vous ne connaissez pas Linux sur le bout des doigts, les outils de fabrication d’image sont très bien fait et je vais essayer de vous détailler les quelques manipulations à faire pour être au top du retrogaming (yeah ;)).

En créant cette petite borne, je ne voulais surtout pas voir une interface d’OS ou un terminal sous forme de ligne de commande pour démarrer mes jeux.
Bien heureusement, les surcouches d’interfaces et autres modifications de distributions que vous allez voir plus bas prennent en compte ce genre d’évidence…

Autre avantage d’être sous un système d’exploitation léger comme Linux, le démarrage ne se fera que plus rapidement. Faites attention cependant à prendre une carte Micro SD de classe 10 minimum (je vous conseille un transfert de 40 Mo/s minimum histoire d’avoir un transfert de data qui envoie le patté de sa grand mère).

Comptez 20 à 25 secondes pour arriver sur l’interface du système (plutôt cool non ?). Après pas mal de recherche ici et là, j’ai repéré que Raspicade ou encore Retropie sont les plus souvent utilisés pour réaliser une mini console retrogaming.

Chose très sympathique pour ces distributions modifiées, elles bootent automatiquement sur le choix de console (Super Nintendo, NeoGeo, N64, Nes, Megadrive…).

IMG_7825 (Large)

Préparation de la carte SD

Le moyen le plus simple d’installer ces OS reste encore de posséder un PC ou un Mac, pour installer l’image de l’OS directement sur la carte, il vous faudra :

EmulationStation est la surcouche visuelle qui gère des thèmes différents pour afficher vos consoles et le détail de vos jeux.
Vous pourrez par la suite, demander un « scan » de vos fichiers (roms) afin qu’il retrouve et stocke des informations concernant vos jeux sur votre machine : pochette, description, note, date de sortie, développeur…

IMG_7818 (Large)

Grâce à Retropie, vous pourrez jouer aux plateformes suivantes (si vous le souhaitez) :

  • Amiga (UAE4ALL)
  • Apple II (LinApple)
  • Atari 800 (Atari800)
  • Atari 2600 (RetroArch/Stella)
  • Atari ST/STE/TT/Falcon (Hatari)
  • Apple Macintosh (Basilisk II)
  • C64 (VICE)
  • Amstrad CPC (#CPC4Rpi)
  • Final Burn Alpha (RetroArch/PiFBA, RetroArch/FBA)
  • Game Boy (RetroArch/Gambatte)
  • Game Boy Advance (GpSP)
  • Game Boy Color (RetroArch/Gambatte)
  • Sega Game Gear (Osmose)
  • Intellivision (jzIntv)
  • MAME (RetroArch/mame4all-pi, RetroArch/mame4all)
  • MSX (openMSX)
  • PC – x86 (rpix86)
  • NeoGeo (PiFBA, GnGeo)
  • Nintendo Entertainment System (RetroArch/FCEUmm)
  • Nintendo 64 (Mupen64Plus-RPi)
  • TurboGrafx 16 – PC Engine (RetroArch/Mednafen/pce_fast)
  • Ports – CaveStory (RetroArch/NXEngine) – Doom (RetroArch/PrBoom) – Duke Nukem 3D (eDuke)
  • ScummVM
  • Sega Master System / Mark III (RetroArch/Picodrive, Osmose, DGen)
  • Sega Mega Drive / Genesis (RetroArch/Picodrive, DGen)
  • Sega Mega-CD / CD (RetroArch/Picodrive, DGen)
  • Sega 32X (RetroArch/Picodrive, DGen)
  • Playstation 1 (RetroArch/PCSX ReARMed)
  • Super Nintendo Entertainment System (RetroArch/Pocket SNES, snes9x-rpi)
  • Sinclair ZX Spectrum (Fuse, FBZX)

Une fois votre image chargée sur votre carte SD, il ne vous reste plus qu’à l’insérer dans votre Framboise.
Branchez votre sortie HDMI, un clavier et une manette (de XBox 360 filaire par exemple) puis enfin branchez l’alimentation pour démarrer la machine. Normalement au premier lancement, EmulationStation vous demandera de configurer un Device en laissant appuyer quelques secondes sur une touche. Faite le avec votre manette USB, afin de contrôler EmulationStation (et non pas les émulateurs malheureusement), c’est à dire simplement cette surcouche d’affichage pour faire le choix de console et des jeux correspondant.

Voila, vous pouvez maintenant bouger au sein de l’interface. Si ce n’est pas le cas, pas de problème, vous pouvez tout de même utiliser les touches de votre clavier qui sont configurées par défaut :

  • Touche entrée : Start (fait entrer dans le menu de EmulationStation)
  • Touche A : Valide
  • Touche Z : Annuler / Retour

A partir de là, comme vous avez bien suivi mes consignes, votre machine est sur votre réseau local, vous aurez donc accès à la machine « retropie » et plus spécifiquement à deux dossiers, Roms et Bios. Insérez ici les bios des machines qui les demandent dans le dossier en question :

EMULATEURLOCATION
gba/opt/retropie/emulators/gpsp/raspberrypi/gba_bios.bin
pc engine /turbografx-16/bios/syscard3.pce
psx/BIOS/scph7502.bin
neo geo/roms/neogeo/neogeo.zip OU/roms/fba/neogeo.zip OU /roms/fba-libretro/neogeo.zip
sega cd/BIOS/us_scd1_9210.bin OU eu_mcd1_9210.bin OU jp_mcd1_9112.bin pour l’Europe et le Japon respectivement

Pour ce qui est des Roms, il suffit de les mettre dans les répertoires correspondant de chaque support, rien de plus facile. Attention cependant, vous devez posséder les jeux physiques pour pouvoir les utiliser en roms en toute légalité.

Les configurations indispensables

Il vous faudra passer par l’indispensable configuration du Raspberry avant de pouvoir jouer. Première chose à faire, configurer l’OS en lui même. Démarrer votre machine et attendez l’affichage du choix des consoles, à partir de là, appuyez sur la touche F4 de votre clavier pour accéder au mode terminal :

sudo raspi-config
IMG_7860 (Large)

(la commande sudo vous permet d’exécuter votre requête en tant qu’administrateur)

Configuration du clavier

Modifiez la configuration de la machine comme ci-dessous :

  • Allez sur la ligne : configure_keyboard Set keyboard layout » Select
  • Keyboard model : Generic 105-key (intl) PC
  • Keyboard layout : Other
  • Country of origin for the keyboard : French
  • Keyboard layout : French
  • Key to function as AltGr : The default for the keyboard layout
  • Compose key : No compose key
  • Use Control+Alt+Backspace to terminate the X server? : No

Changement de la langue du système

Allez sur la ligne : change_locale Set locale » Select Locales to be generated, Décochez la case :

en_GB.UTF-8 UTF-8

Cochez les cases :

[*] fr_FR ISO-8859-1
[*] fr_FR.UTF-8 UTF-8

Default locale for the system environement : fr_FR.UTF-8

Changement du fuseau horaire :

  • Allez sur la ligne : change_timezone Set timezone » Select
  • Geographic area : Europe
  • Time zone : Paris

Pour finalisez l’ensemble des modifications, terminer par :

sudo reboot

La configuration des manettes

Après le reboot, revenez dans le mode terminal (F4). Nous allons nous attarder sur la configuration des manettes. Comme je vous l’ai dit plus haut, la configuration de base est une peu légère. Nous allons à présent lancer l’installation des drivers de manettes Xbox360

sudo apt-get install xboxdrv

une fois installé, lancez :

sudo nano /etc/rc.local

Placez votre curseur entre « fi » et « exit 0? et tapez :

xboxdrv --trigger-as-button --id 0 --led 2 --deadzone 4000 --silent & sleep 1

Si vous disposez d’une manette supplémentaire tapez en dessous de la ligne précédente :

xboxdrv --trigger-as-button --id 1 --led 3 --deadzone 4000 --silent & sleep 1

Dans le cas où il s’agirait d’une manette sans fil, remplacez –id par –wid Pour enregistrer, pressez Ctrl+X puis Y et Enter, il ne reste plus qu’a redémarrer :

sudo reboot

Maintenant, nous allons vérifier que la manette est bien détectée par la machine, pour cela, on entre encore dans le terminal (F4) puis on tape la commande suivante :

jstest /dev/input/js0

js0 représente la première manette, js1 la deuxième… Le but étant de repérer l’association des commandes pour les répercuter dans les fichiers de configuration des émulateurs. Vous allez voir un truc du genre :

Axes: 0:      0  1:      0: Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off
IMG_7856 (Large)

Dés que vous cliquerez sur bouton ou un axe de vos différentes commandes, vous verrez qu’une entrée sera détectée en affichant « on » (pour les boutons) ou un chiffre (pour les axes). Si c’est le cas, tout va bien, il vous suffit juste de noter les correspondances avec vos boutons physiques).

Par la suite, on va configurer les commandes pour les émulateurs grâce à RetroArch qui est une sorte de configuration général.
En gros, un paramétrage se répercutera sur chaque fichier de config de chaque émulateur. Pour configurer RetroArch, rendez-vous sur le dossier dudit programme :

cd /opt/retropie/emulators/retroarch/

Avant de démarrer la commande, on va vérifier que les droits d’utilisateurs sont bons pour le répertoire qui contient les fichiers de configurations :

sudo chmod +rw /opt/retropie/configs/all/

On peut maintenant lancer la configuration pour chacun des joueurs :

./retroarch-joyconfig -o /opt/retropie/configs/all/p1.cfg -p 1 -j 0

./retroarch-joyconfig -o /opt/retropie/configs/all/p2.cfg -p 2 -j 1

./retroarch-joyconfig -o /opt/retropie/configs/all/p3.cfg -p 3 -j 2

./retroarch-joyconfig -o /opt/retropie/configs/all/p4.cfg -p 4 -j 3

Avec -o le fichier de sortie, -p pour le joueur, -j pour l’id de la commande, comme vu plus haut dans l’article). Il suffit de suivre les instructions en appuyant ou il faut et tout devrait bien se passer ;)
Je conçois que tout ceci n’est pas évident à mettre en place mais une fois le tout installé, faite une copie de l’image avec le même outils de gestion que pour l’installation de l’OS (vu plus haut).

N’hésitez pas à me dire si vous avez besoin d’aide ou si l’article a pu vous aidez ;)

11 réflexions sur « Bartop : Construction de ma borne d’arcade #5 : Software »

  1. Toinou

    Salut, merci pour tes articles sur la construction de ta borne qui sont super intéressants (même si je trouve qu'ils manquent parfois d'un peu de détail ^^ ).

    Je suis moi-même en train de débuter une mini-borne, à partir d'un raspi 2. Par contre pour la partie logicielle, j'ai selectionné, pour l'instant, Recalbox qui est créé par un français. Je verrai ce que cela donne à l'usage.

    J'en profite pour te poser une question : pour les roms, on trouve souvent des fichiers .zip avec plusieurs images par jeu dedans. Est-ce que cela marche en mettant directement le ZIP dans le dossier ou faut-il extraire le tout et sélectionner la bonne image ? (Sachant que s'il y a beaucoup de jeux, ça peut prendre un temps considérable..)

    Merci à toi et bonne continuation :)

    1. Paduction

      Merci pour ton commentaire ;) Certains type de Roms possède en effet plusieurs fichiers, réunis dans un seul ZIP pour des raisons pratique (Neo Geo par exemple). Mais la réponse à ta question dépend finalement de l'émulateur utilisé, en général le ZIP est lu sans problème par les émulateurs d'aujourd'hui..

      Attention cependant, il ne lise qu'un seul jeu dans un ZIP et non pas plusieurs jeux dans un même ZIP.
      En espérant avoir répondu à ta question, n'hésite pas à me dire où ça manque de détails dans les articles pour que je puisse les compléter.

      Bonne chance pour ta borne, n’hésite pas à nous montrer le résultat ;)

  2. Rayan

    Salut !

    Pour la distrib' retro gaming, je peut te conseiller Lakka qui est pour moi très bien, et qui dispose d'une très bonne communauté.

    Sinon je te suis depuis quelque mois déjà et je tiens à te félicité :)

    Personnellement, j'ai du stopper la réalisation de ma borne, problème de flouz toussa toussa.. Mais une fois l'article fini et avec un peu de sous en poche, je me ferai un énorme kiff à la continuer :)

    1. Paduction

      Lakka est très bien aussi, encore une fois c'est un choix personnel pour Raspicade, mais j'invite chacun à fouiller un peu le web pour voir les merveilles qui s'y trouvent. J'aime moins son interface par rapport à Emulstation.

      Bon courage pour la suite de ta borne en tout cas et merci pour ton commentaire ;)

  3. François

    Bonjour,

    Je viens de parcourir vos articles concernant la construction de votre Bartop. Je trouve votre travail d'une très belle qualité et c'est pourquoi je vais surement reproduire ce que vous avez fait en l'adaptant pour 2 joueurs.

    Je me posais juste une question en lisant la partie configuration des touches. Vous configurez les touches à partir des manettes de Xbox mais qu'en est-il des boutons de la borne elle même? (et pourquoi passer par une manette Xbox et pas directement par les boutons de la borne?)

    Merci d'avance pour la réponse et un grand bravo pour le travail effectué sur votre Bartop :)

    1. Paduction

      Je me suis peut être mal exprimé sur l'article. J'ai utilisé une manette arcade de Xbox, ce qui signifie que j'ai configuré mon pad comme une manette Xbox en utilisant les drivers de la manette (c'est la même chose qu'une manette classique). Cependant, on peut également démonter une manette Xbox classique et remplacer simplement les boutons de cette dernière par des boutons poussoirs acheter séparément (2€ pièces environ), ce qui facilite grandement la conception de cette partie. Merci pour votre commentaire et n'hésitez pas si vous avez d'autres questions ;)

  4. François

    Ah d'accord! Merci pour la précision. :) Je verrais à partir de la semaine prochaine (début du projet :P) si j'ai de nouvelles questions à poser :)

  5. Maxime

    Bonjour,

    J'aimerai savoir s'il est toujours d'actualité ce tuto ? Je vois que la partie 6 est toujours en cours.

    Cordialement

    Maxime

    1. Paduction

      @Maxime : Oui, les articles sont à jour et le prochain arrivera aujourd'hui ou demain en fonction de mon temps ;)
      Ce ne sera pas une présentation de la borne mais un article complémentaire avec cependant une vidéo incluse.

  6. staccato

    Bonjour,

    Bravo pour à la fois le boulot fait sur ta borne, et la présentation détaillée et soignée sur le site. Vraiment du très bon travail !

    Saurais tu préciser ou tu as trouvé le chant en chine? j'ai cherché sur différents sites et je nai trouvé que des protections pour bébés en mousse!

    Merci et bonne continuation

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *