J'aime de plus en plus le Raspberry Pi, qui permet de fabriquer toutes sortes de machines à bas coût et bas encombrement. 😉

Cette fois-ci, j'ai fabriqué une station de rétrogaming avec Recalbox. C'est un projet open source visant à émuler de façon simple et abordable tout un tas de vieilles consoles sur un bête Raspberry Pi. Le 4 n'est pas encore supporté, mais ça marche très bien sur un 3 B+. 😉

Ingrédients nécessaires

  • Un Raspberry Pi. N'importe quel modèle sauf le 4 et les A/A+. Même le Zero est supporté ! Je conseille quand même un 3, pour de meilleures performances.
  • Une carte microSD de 16 Go minimum. Essayez d'avoir une carte de 128 Go ou plus pour les besoins de cette réalisation.
  • Une image de Recalbox, chez Recalbox.
  • Rufus, pour écrire l'image sur la carte microSD, ou tout autre utilitaire de votre choix.
  • Un câble HDMI, une manette USB, une alimentation microUSB de qualité. Un boîtier pour Raspberry Pi, pour ne pas qu'il roule dans la poussière à faire des courts-circuits. 😆
  • Un écran où afficher l'image. 😅 Télé, moniteur, tant que la connectique le permet. 😉

C'est parti !

On lance Rufus pour écrire l'image Recalbox sur la carte microSD, on l'insère dans le Raspberry Pi, on connecte écran, manette et alimentation.

La Recalbox démarre, effectue son installation et c'est prêt. 😁 L'interface se contrôle à la manette, les touches sont expliquées en bas de l'écran, c'est simplissime.

On va quand même changer la langue du système et configurer le réseau (nécessaire pour ajouter des jeux).

Appuyez sur Start sur la manette, pour ouvrir le menu général. Sélectionnez System Settings et changez la langue.

Revenez sur la menu général, passez sur Options réseau. Si vous êtes connecté en filaire, vous devriez avoir votre adresse IP affichée (notez-la au cas où). Sinon, connectez-vous en WiFi le cas échéant, je n'ai pas mon Recalbox sous la main, mais il s'agit de fournir un SSID et un mot de passe, c'est pas sorcier. 😉

Et maintenant on joue à quoi ?

Bien... Il y a des jeux libres de droits inclus dans l'image, donc la Recalbox est utilisable telle quelle.

Ensuite, on peut trouver des ROMs de jeux divers dans les allées sombres du net, Google est toujours votre ami. 😆

Mais personnellement, j'ai une solution légale pour avoir des milliers de jeux !

MAME

MAME, Multiple Arcade Machine Emulator, est un émulateur de bornes d'arcade open source. Et il est inclus dans Recalbox. 😉

C'est une chose d'avoir l'émulateur, mais il faut des jeux ! Et c'est là qu'Internet Archive nous vient en aide. Internet Archive est une organisation à but non lucratif qui collecte les media de tous types et de tous horizons pour les préserver. Et les jeux vidéos font partie de ces media. 😉

Internet Archive propose donc des archives Zip de ROMs de jeux d'arcade destinés à MAME. L'archive MAME 2015 Reference: Full Non-Merged Arcade Romsets propose des milliers titres de jeux d'arcade (la presque totalité inconnus toutefois), dont une bonne partie ne fonctionne pas, pour diverses raisons de compatibilité ou de manque de support par absence de support logiciel (BIOS qui manque).

Mais cette archive permet quand même de jouer à des jeux célèbres comme Street Fighter II, Mercs, torutes Ninja et j'en passe. 😁

Par contre, l'archive fait plus de 80 Go compressée. Ce qui dépasse de loin la capacité de la carte de 16 Go... Si vous avez une carte de 128 Go, vous pouvez vous connecter à votre Recalbox en réseau pour copier l'intégralité du contenu de l'archive dans \share\roms\mame.

Ajouter des jeux

Mais de quoi il parle ?! 😮

Le Raspberry Pi dispose d'un connecteur Ethernet (sauf Zero), et les 3 ont même du WiFi intégré. On a configuré le réseau précédemment (sinon remontez à C'est parti), la Recalbox est accessible en SMB, tapez \\recalbox dans l'explorateur (Mac users, ça sera cifs://recalbox pour vous 😋), et vous tombez sur le partage \share. Dans ce partage, il y a un dossier roms où se trouvent les dossiers relatifs aux divers émulateurs. Les noms sont assez explicites, vous devriez vous retrouver. Si vous n'avez pas la possibilité de connecter la Recalbox au réseau, tout n'est pas perdu, voyez dans Ajout de stockage externe plus bas.

Pour ce qui nous intéresse, c'est le dossier mame. Copiez toute l'archive dans ce dossier. Le contenu, pas l'archive elle-même, hein ? Ça prendra des heures, c'est normal. 😒

Une fois les jeux copiés, appelez le menu (touche Start), Options de l'interface, Mettre à jour les listes de jeux.

Et là, allez dans la liste de jeux MAME, c'est la caverne d'Ali Baba ! Utilisez le saut par lettre dans le menu de l'émulateur (Start) pour naviguer plus facilement. 😉

Comme je disais il y a plein de jeux qui ne fonctionnent pas, je vous laisse le soin de chercher des solutions si vous voulez absolument y jouer. 😉

Ajout de stockage externe

Dans mon cas, j'ai utilisé une carte microSD de 32 Go dont je ne me servais pas. C'est très insuffisant pour l'archive MAME... 😑 Mais heureusement Recalbox permet l'utilisation de stockage externe !

Insérez votre périphérique de stockage USB dans le Raspberry Pi, et dans le menu général (Start), Options Système, choisissez Media de stockage, et sélectionnez votre périphérique de stockage. La Recalbox redémarre alors, et crée les dossiers adéquats sur le périphérique.

Vous pouvez alors éteindre la Recalbox, débrancher le périphérique de stockage, et le connecter à votre ordinateur pour copier les ROMs dans les dossiers idoine. Rebranchez le périphérique sur la Recalbox, rallumez-la, mettez à jour la liste de jeux (Start, Options de l'interface, Mettre à jour les listes de jeux) et à vous les machines d'arcade ! 😁

Ah, dernier détail, c'est la touche Select pour mettre des pièces, Bouton XBox/PS + Start pour quitter un jeu, et Bouton XBox/PS + A (celui du bas) pour les options du jeu.

Have fun ! 😉

Plein d'astuces que j'ai apprises en quelques jours...

Améliorer la compatibilité de MAME

Déjà, je disais que la plupart des jeux de l'archive MAME ne marchait pas. Et malheureusement les jeux Neo Geo aussi... 😑 Mais il y a un moyen simple d'y remédier : éditer le fichier recalbox.conf dans\share\system, et ajouter la ligne suivante :

mame.core=mame2015

Neo Geo

Il y a aussi le problème des jeux Neo Geo, qui ne se lancent pas... Il faut changer l'émulateur, toujours dans recalbox.conf, changer la ligne neogeo.emulator=libretro en neogeo.emulator=fba2x. Il y a aussi un fichier neogeo.zip dans l'archive. C'est le BIOS de la Neo Geo. Il me semble que le recopier dans \share\bios aide certains jeux a tourner.

BIOS

Et en parlant de BIOS, Recalbox a besoin des BIOS de certaines machines pour les émuler. Mais elles ne sont pas toutes libres de droits, donc il va falloir les dénicher... ici. 😉 il suffit de coller le contenu de l'archive dans \share\bios. Si le lien meurt ça doit être trouvable ailleurs. 😅

Délai de lancement des jeux lors de l'utilisation de manettes 8bitdo

J'ai des manettes 8bitdo SF30 Pro et SN30 Pro, que j'utilisais avec la Switch. J'ai changé le mode des manettes en XInput (commes les manettes XBox), elle s'associent bien, mais les jeux mettent une bonne minute à se lancer... Long. 😒 J'ai fini par apprendre que les dernières versions d'Emulation Station sur lequel est basé Recalbox avaient introduit beaucoup de changements, et que le mode recommandé était DInput (comme les manettes Android).

En effet, la différence est spactaculaire, les jeux se lancent instantanément ou presque !

Mais.

La manette n'est plus reconnue une fois dans le jeu... 😑

Après moult péripéties, j'ai fini par mettre à jour le firmware des manettes, et les réinitialiser (tableau explicatif des modes recommandés pour chaque manette). Et enfin, elles sont correctement reconnues en jeu, et les jeux se lancent normalement ! Ouf ! 😆

J'ai aussi eu des problèmes de latence sur les manettes Bluetooth... Et il suffit d'un paramètre pour y remédier. Il faut encore éditer recalbox.conf et y ajouter :

controllers.bluetooth.ertm=1

Trier les jeux

Maintenant on a des milliers de jeux. Mais il y en a quand même plein en double (clones), d'inintéressant, qui ne fonctionnent pas, qui requièrent des appareils spécifiques ou qui sont des affichages de... flippers !

Heureusement il est possible de trier assez facilement les ROMs, avec deux petits utilitaires, Romcenter et MARRT.

Romcenter est un gestionnaire de ROMs MAME. Il va nous permettre de filtrer (la plupart) des clones. Romcenter peut constituer une dabe de données à partir d'un MAME installé, donc on va devoir lui en fournir un. Téléchargez MAME 2015, dézippez-le sur votre ordinateur, et placez les ROMs de l'archive MAME 2015 dans roms (ayez une sauvegarde au cas où).

Lancez Romcenter.exe, et cliquez sur New. Sélectionnez votre executable MAME dans Get data from..., indiquez un chemin où stocker la bade de données avec Save data as..., et cliquez sur Filter settings. Ça va tourner un moment, il y a beaucoup de fichiers à parcourir.

Une fois la fenêtre de filtre affichée, cliquez sur Games Filtering, et enlevez les coches sur Clones et No dumps dans les imports, et cochez au moins Mechanical et Empty games dans les exclusions. Personnellement j'enlève aussi Slots/Poker/fruit et Preliminary games. Validez les filtres, et cliquez sur Create sur la fenêtre principale. Et ça mouline encore.

Une fois la base de données créée, Romcenter affiche la liste de tous les jeux compris dans le Romset. Il faut maintenant lui indiquer où sont les fichiers de ROMs. Cliquez sur Add dans le menu, et sélectionnez le dossier roms de votre MAME. Romcenter va balayer le contenu (encore de l'attente).

Sélectionnez roms sous Rom files de l'arborescence de la fenêtre principale, cliquez sur Fix / Remove useless files dans le menu. Romcenter supprime alors tous les jeux filtrés à l'étape précédente.

Ça fait un bon tri, déjà, la plupart des jeux restants sont opérationnels (sauf exceptions, la base de données de Romcenter ne semble pas exhaustive). Il reste maintenant à sucrer les types de jeux dont on ne veut pas, dont les érotiques...

MARRT, pour MAME Adult Rom Removal Tool, permet précisément cela. Il se base sur les Catlist de mameworld.info pour effacer ou déplacer les ROMs indésirables. Installez MARRT (peut demander .Net Framework 1.1, installez la version 32 bits), et téléchargez les listes Cat32 (New Files / MAME32 Files / Cat32 sur le site).

Commençons par enlever (la plupart) des jeux érotiques, but premier de MARRT. Placez le fichier mature.ini de Cat32 dans le répertoire de MARRT (C:\MAME\MARRT par défaut), et lancez MARRT. Vérifiez que la liste ROMs To Delete: est bien populée (sinon vous avez le fichier de test). Indiquez l'emplacement de vos ROMs dans Please Enter Your MEME ROMs Directory:, et choisissez d'effacer (Delete ROMs) ou de déplacer (Move ROMs to). Indiquez l'emplacement des ROMs filtrées dans le cas échéant. Cliquez sur Delete ROMs (ou Move ROMs), et les jeux érotiques sont retirés de votre liste.

L'archive Cat32 contient en fait bien plus que la liste des ROMs érotiques. Elle contient les noms des archives de jeux triées par genre. Catlist.ini liste les jeux par genre et sous-genre. L'astuce ici est de copier les listes des genres non désirés et de les coller dans mature.ini, après la ligne [*Mature*], et de repasser MARRT sur les ROMs. Adieu jeux de baseball ! 😆

Scraper

C'est bien d'avoir des milliers de jeux, mais on a juste une liste de noms, et à moins de les lancer un par un, impossible de savoir de quoi il s'agit (à part les jeux célèbres).

La solution au problème, c'est le scrapper. Il s'agit de rechercher le jeu dans une base de  données qui liste les détails des jeux. Ensuite Recalbox liste les jeux avec leur description (année, genre, nombre de joueurs, descriptif du jeu, illustration), ce qui rend la navigation plus aisée. Recalbox propose un Scraper de base, mais chez moi il plante systématiquement sur les listes MAME (trop d'entrées je pense).

Heureusement il y a un how-to chez Recalbox, mais il est un peu daté, il faut quelques ajustements.

Il faut d'abord récupérer le programme scraper de sselph. Copiez l'exécutable dans le dossier roms de MAME (celui qu'on vient de nettoyer, au hasard 😉), ouvrez une ligne de commande (soit par le menu contextuel soit par le menu Démarrer), allez dans roms, et lancez la commande suivante :

.\scraper.exe -mame -mame_img "m,t,s" -image_path="./media/images" -no_thumb=true -max_width=375

Le chemin est erroné sur le how-to officiel, il mentionne l'ancien chemin de la base des scraps.

Scraper génère un gamelist.xml, et range les illustrations dans media/images. Le dossier de ROMs de MAME est alors prêt à être transféré sur la Recalbox. Placez le contenu de roms de votre MAME d'ordinateur dans \share\roms\mame. Attention à ne pas recopier roms dans mame hein, c'est bien le contenu qu'il faut copier. 😉

Redémarrez la Recalbox, et magie, chaque jeu (ou presque) est illustré et renseigné, et (presque) tous les jeux indésirables sont partis ! 🎉 Il reste quand même encore des milliers de jeux (chez moi dans les 7500), dont plein de doubles (encore, souvent les déclinaisons régionales où seul le texte d'avertissement change 😒), mais ça dégraisse bien (chez moi ça m'a gagné 30 Go !) et ça laisse des heures de découverte et d'amusement ! 😁

Mais je n'ai pas de Raspberry Pi et je voudrais jouer aux jeux d'arcade aussi !

Je ne l'ai pas mentionné avant, mais c'est parfaitement possible. 😉 Il faut l'archive 0.197 d'Internet Archive, et MAME 0.197 (ou n'importe quelle combinaison de version correspondantes MAME/Romset). Piochez la bonne version pour votre ordinateur (l'installeur 64 bits devrait convenir à tout le monde), installez MAME, et décompressez l'archive dans le répertoire roms de MAME. 😉