Hack Taito Egret 2 Mini

Avant-propos

Le hack, flash ou jailbraik (selon votre préférence) de la Taito Egret 2 Mini est une modification logicielle (aucun bricolage nécessaire) qui permet de lancer d’autres jeux que ceux installés par défaut. Cela fonctionne en flashant la machine, ce qui lui permet de démarrer sur une carte SD insérée dans le lecteur.

Je vous transmet ici mon expérience avec ce hack, que je n’ai pas développé moi-même. Je ne pourrais pas être tenu responsable de quoi que ce soit, et vous faites ces manipulations à vos risques et périls.

Le hack officiel est disponible ici : Release Batocera v36 for Egret II Mini alpha 0.1 · acm-cfw/acm-cfw.github.io ; si vous avez un doute sur ce que j’ai écrit ici, allez voir le readme officiel, je peux m’être trompé.

Problèmes connus

Le hack est encore en version « alpha » : peu stable, parfois lent, pas mis à jour depuis plusieurs années, et il fait assez « bricolage » ; il est bien utile, mais loin d’être parfaitement au point. Cela dit, comme il s’installe en parallèle du système d’origine, si vous souhaitez revenir à la version de base, il suffit de retirer la carte SD : c’est très pratique.

Il y a plein de petits bugs ou manques de finalisation : par exemple il y a des problèmes de tearing, des bugs de sortie HDMI, des incohérences sur la rotation de l’écran, et autres petits problèmes du genre, ainsi que des problèmes de performance. Certains peuvent être résolus ou atténués, d’autres non.

Le système n’est pas du tout optimisé, et beaucoup de jeux sont sont trop lents, que ce soit sur FBNeo ou MAME 2003+ : par exemple Darius Gaiden est au mieux à 40fps, alors qu’il marche très bien sur le système de base. D’autres tournent très bien, comme la NeoGeo ou le CPS1/CPS2, ou ont des ralentissements ponctuels : il faudra tester par vous-même pour vous faire une idée, mais abandonnez l’espoir d’une borne « parfaite » pour le moment, en tout cas pas dans cette catégorie.

Nécessaire et prérequis

Afin de hacker la Taito Egret 2 Mini, vous aurez besoin du matériel suivant :

  • Un ordinateur : il n’est pas possible d’effectuer la manipulation sans ordinateur, mais cela fonctionnera avec Windows, Linux ou MacOS (avec processeur Intel).
  • Un câble qui permette de se brancher en USB-A sur l’Egret 2 Mini : soit USB-A vers USB-A (embout « rectangulaire » des deux côtés), soit USB-C vers USB-A si vous avez un port USB-C sur votre ordinateur, soit avec un adaptateur. Attention, certains câbles ne transmettent pas les données (ils ne peuvent servir qu’à charger) et ne fonctionneront donc pas.
  • Une carte SD « normale » de 16Go minimum, ou bien une micro-SD avec un adaptateur mais je ne sais pas si c’est fiable.
  • Un lecteur de carte SD pour votre ordinateur, forcément.

Installez ensuite les drivers nécessaires :

  • Si vous êtes sous Windows, vous devrez installer Zadig et/ou Classic Driver/libwdi. Je ne sais pas lequel des deux est nécessaire, j’ai installé les deux et ça a marché.
  • Si vous êtes sous Mac, il faudra utiliser Homebrew pour installer quelques dépendances : brew install libusb ldns dtc. Si comme moi vous avez un ancien Mac bloqué sur un « ancien » OS, vous ne pourrez pas les installer ; il n’y a plus qu’à booter sous Windows avec Boot Camp.
  • Si vous êtes sous Linux, bonne chance ; il doit être possible de booter en utilisant une image installée sur une clé USB.

Flash de l’Egret 2 Mini

Comme précisé ci-dessus, je partirai du principe que vous êtes sous Windows, n’ayant moi-même pas réussi à faire fonctionner le hack sous MacOS.

  • Téléchargez l’image de Batocera pour la Egret Mini et utilisez Balena Etcher pour la flasher sur la carte SD.
  • Retirez la carte SD puis remettez-la dans votre PC : Windows va vous proposer de formater une partition inconnue, laissez-le faire. La SD aura ensuite une partition d’environ 2 ou 3 Go avec le système, et une partition vierge sur le reste de la carte (si le total est inférieur à la taille de la carte, c’est que la 2e partition est trop petite ; supprimez-la et re-créez-la avec l’utilitaire de disques de Windows).
  • Installez les drivers ci-dessus (Zadig et Classic Driver) sur votre ordinateur et redémarrez.
  • Téléchargez le fichier egret2-install et dézippez-le quelque part.
  • Ouvrez une ligne de commande dans ce répertoire : faites un clic droit sur le dossier en maintenant la touche « maj » et sélectionnez « ouvrir une commande ici ».

Vous êtes prêt.

  • Eteignez la Egret Mini, débranchez tous les câbles, mettez l’interrupteur sur OFF.
  • Insérez la carte SD flashée dans la Egret Mini.
  • Mettez l’interrupteur de la Egret Mini sur la position ON mais ne branchez pas encore l’alimentation.
  • Branchez le câble USB-A sur le port « 2P » de la machine mais ne le branchez pas encore à votre ordinateur.
  • Dans la ligne de commande sur votre ordinateur, lancez « e2m-backup-and-install.bat » (ou .sh sur Mac et Linux)
  • Attendez de voir le message « *** PRESS A KEY WHEN READY AND THEN CONNECT THE E2M TO THE USB *** » ; vérifiez qu’il n’y a pas de message d’erreur du type « driver not found », si c’est le cas, eh bien installez les drivers, redémarrez, et bonne chance.
  • Appuyez sur une touche sur votre ordinateur ; cela ouvrira une fenêtre qui affichera un message en boucle de tentative de connexion ; c’est normal.
  • Branchez l’alimentation de la Egret Mini, ce qui la fera démarrer.
  • Sans attendre, branchez l’USB-A à votre ordinateur : cela doit être fait avant que la machine ait fini de démarrer.

Si le timing est respecté, l’installation va continuer ; si ce n’est pas le cas, et que la Egret Mini termine de démarrer ou que votre ordinateur affiche un message d’erreur, c’est que vous avez raté quelque chose ; débranchez tout et recommencez, j’ai dû m’y reprendre à plusieurs fois avant d’avoir le bon timing.

La ligne de commande sur votre ordinateur affichera plusieurs barres de progression, puis un message : « Done. The installation will continue on the E2M. The E2M will reboot when the custom boot has been installed ». Ne touchez à rien ! L’écran de l’Egret Mini va rester noir quelques secondes/minutes, le temps que tout soit installé. Le système patché va ensuite démarrer : d’abord en affichant un logo rond, puis Batocera va s’installer durant quelques minutes pour le premier démarrage ; les suivants prendront moins de temps.

Une fois que vous avez accès au menu de Batocera, vous pouvez l’éteindre (bouton bleu puis « shutdown ») : il est temps de terminer la configuration.

Copie des roms et scrape

Reprenez la carte SD et remettez-la dans votre ordinateur : dans la partition vierge, Batocera y aura créé un ensemble de dossiers, notamment : bios, roms, et system.

Les jeux arcade

Cette version de Batocera comporte 3 émulateurs arcade : FBNeo, MAME 2003+ et MAME 2010. FBNeo a moins de bugs, mais est plus lent ; MAME2003+ a parfois des jeux complètement pétés, mais va plus vite ; MAME 2010 est entre les deux. Pour vous simplifier la vie, prenez MAME2003+ pour toutes vos roms arcade, car trop de jeux sont trop lents avec FBNeo, et les quelques jeux absents de MAME 2003+ (ou qui ne marchent pas) sont trop lents en utilisant un autre émulateur.

Le reste du tutoriel suppose que vous utilisez MAME2003+ en tant qu’émulateur arcade.

Pour installer les roms arcade :

  • Téléchargez le romset MAME2003+ ici : MAME 2003 Reference: MAME 0.78 ROMs, CHDs, and Samples (archive.org) ; téléchargez bien l’ensemble (cliquez sur « zip » dans la partie « download options » à droite), notamment les dossiers « roms » et « samples ». Attention, si vous utilisez le Torrent, il ajoutera des fichiers « padding » cachés, que vous pouvez supprimer pour gagner de la place.
  • Copiez le contenu du répertoire « samples » sur la SD, dans bios/mame2003-plus/samples
  • Téléchargez et installez Arcade Manager ici : cosmo0/arcade-manager (github.com)
  • Lancez-le, sélectionnez l’assistant puis « MAME 2003+ », et sélectionnez les listes que vous voulez. Faites pointer le « romset complet » vers ce que vous avez téléchargé, et la « sélection » vers la carte SD (roms/mame).

A noter : certains jeux qui tournent un peu trop lentement se jouent très bien avec un framerate divisé par deux : faites blanc+A > core options > video > frameskip > 6. Cela passe les jeux à 30fps (seule une image sur deux est générée) mais ne gêne pas les jeux qui n’ont pas besoin d’une grande précision ou réaction. D’autres sont encore lents même avec cette option ; il faudra essayer au cas par cas.

Pour rappel : les jeux arcade émulés ont souvent une étape de vérification du matériel lors de leur démarrage (souvent sautée dans les émulateurs commerciaux) qui peuvent donner l’impression d’être plantés, avec des couleurs partout, des trucs qui clignotent, du texte qui défile, etc. Attendez quelques secondes avant de penser que le jeu a planté. Il arrive également que le jeu démarre en mode « diagnostic » : tentez de relancer le jeu (parfois ça suffit), ou bien regardez si le DIP switch « diagnostic » n’est pas enclenché (voir plus bas).

Les jeux console

Pour les jeux console :

  • Téléchargez un pack de bios ici : full-pack-bios-batocera-v-36 directory listing (archive.org)
  • Décompressez l’archive, ouvrez le répertoire « bios », triez par taille, et supprimez les plus gros fichiers : les bios DSi, PS3 et Mac, que la machine ne sait pas émuler de toute façon. Copiez le reste des fichiers dans dans le répertoire « bios » de la SD (vous pouvez ignorer les dossiers, sauf les systèmes en question vous intéressent). Il y aura beaucoup plus de bios que nécessaire, mais c’est pas hyper lourd.

Il faudra ensuite récupérer des jeux. Le plus efficace est d’utiliser /r/Roms Megathread (r-roms.github.io) et de chercher les systèmes qui vous intéressent ; personnellement je préfère récupérer quelques jeux qui m’intéressent et les télécharger individuellement sinon on passe parfois plus de temps à chercher un jeu qu’à jouer. Sur une mini-borne arcade comme l’Egret 2 Mini, j’ai préféré sélectionner des jeux « typés arcade » (courts), ou des portages de jeux qui ne tournent pas en version arcade (comme Virtua Fighter 32X) car je n’envisage pas de jouer à un RPG de 30h sur cette machine.

Petit tips : pour les machines qui utilisent des CD, préférez le format CHD, beaucoup plus pratique (et compact).

Voici ma sélection de jeux consoles portages arcade (qui tournent mal en version arcade) ou typés arcade, si ça peut vous donner des idées :

  • Megadrive : Bonanza Bros, Crack Down, Dick Tracy, Elemental Master, Rolling Thunder 2, Shinobi 3, Sonic 3 + Knuckles, Streets of Rage 2, Thunder Force 4, World of Illusion
  • Mega CD : Mortal Kombat, Prince of Persia, Road Avenger, Robo Aleste, Silpheed
  • 32X : After Burner Complete, Knuckle’s Chaotix, Star Wars Arcade, Virtua Fighter, Virtua Racing
  • SNES : Contra 3, Killer Instinct, Mighty Morphin Power Rangers The Fighting Game, NBA Jam TE, Pocky and Rocky, R-Type 3, Shin Kidou Senki Gundam W – Endless Duel, Super Aleste, Teenage Mutant Ninja Turtles – Turtles in Time, The Ninja Warriors
  • PC Engine : Blazing Lasers, Devil’s Crush, Final Soldier, Soldier Blade, Super Star Soldier
  • PC Engine CD : Castlevania Rondo of Blood, Ginga Fukei Densetsu Sapphire, GoTzenDiener, Kaze Kiri Ninja Action, Nexzr
  • Playstation : Bushido Blade, G Darius, Gundam Battle Assault, Moto Racer, Puzz Loop, R4 Ridge Racer 4, RayCrisis, Soul Edge, Tekken 3, Tobal 2

Vous avez bien compté, il y en a 5 ou 10 par système pour un total de 50 ; je trouve ça largement suffisant et permet d’éviter de passer plus de temps à chercher un jeu qu’à jouer.

Pour « scraper » les roms, afin d’avoir de jolies images dans le menu (et des vidéos mais ça prend de la place) :

  • téléchargez et installez Skraper
  • lancez-le, puis choisissez Recalbox comme système (c’est très proche)
  • faites pointer le dossier des roms vers le répertoire « roms » de la SD
  • lancez le scrape (ça peut prendre beaucoup de temps si vous avez beaucoup de jeux)

Configuration du système

Dans le dossier « system » de la SD, ouvrez le fichier « batocera.conf » avec un éditeur de texte.

  • Vous pouvez passer « kodi.enabled » à 0 pour désactiver ce lecteur de vidéos que vous n’utiliserez probablement pas sur cette borne.
  • Changez « audio.volume » pour modifier le volume de démarrage ; je l’ai passé à 50, et la valeur configurée dans les menus viendra l’écraser.
  • Passez « audio.bgmusic » à 0 pour désactiver la musique de fond dans les menus (quelle idée ?!).
  • A la fin du fichier, rajoutez les lignes suivantes :
# screen rotation
global.retroarch.input_rotate_landscape_btn = "14"
global.retroarch.input_rotate_portrait_btn = "15"

# default buttons mapping
global.retroarch.input_player1_a = "b" 
global.retroarch.input_player1_a_btn = "5" 
global.retroarch.input_player1_b = "a" 
global.retroarch.input_player1_b_btn = "1" 
global.retroarch.input_player1_x = "e"
global.retroarch.input_player1_x_btn = "0"
global.retroarch.input_player1_y = "d" 
global.retroarch.input_player1_y_btn = "2" 
global.retroarch.input_player1_l = "f" 
global.retroarch.input_player1_l_btn = "3" 
global.retroarch.input_player1_r = "c" 
global.retroarch.input_player1_r_btn = "4" 
global.retroarch.input_player1_l3 = "x" 
global.retroarch.input_player1_l3_btn = "8" 
global.retroarch.input_player1_start_btn = "6" 
global.retroarch.input_player1_select_btn = "7" 

# improve performances
global.bezel=none
global.runahead=0
global.vrr_runloop_enable=1
global.rewind=0
global.retroarch.video_vsync = "false"
global.retroarch.vrr_runloop_enable = "true"

# change RA GUI look
global.retroarch.menu_driver=rgui
global.secondinstance=0

# use mame2003 by default
mame.core=mame078plus
mame.emulator=libretro

Pour faire fonctionner l’interrupteur d’alimentation, dans le dossier « system/configs », créez un fichier multimedia_keys.conf avec le contenu suivant :

KEY_POWER       0               shutdown -h now
KEY_HOME+KEY_F 1                  batocera-audio setSystemVolume +5
KEY_HOME+KEY_C 1                  batocera-audio setSystemVolume -5
KEY_PLAYCD        1               /usr/bin/rotate_screen.sh 0
KEY_PAUSECD       1	          /usr/bin/rotate_screen.sh 1

Sauvegardez, remettez la carte SD dans la Egret 2 Mini et démarrez-la.

Ouvrez le menu principal (bouton bleu) puis réglez quelques petites choses supplémentaires :

  • Si les boutons valider/annuler par défaut ne vous conviennent pas : System Settings > Frontend Developer Options > cocher « Switch A/B buttons in EmulationStation »
  • Game settings
    • Game Rendering and Shaders > smooth games (bilinear filtering) sur ON pour atténuer les problèmes de scrolling (ils sont toujours là mais se voient moins)
    • Decorations > Decorations set > none
  • User interface settings
    • List transition : instant
    • Game launch transition : fade
    • Theme configuration : transition animations : no
  • System settings
    • Splash setting : mettre sur « Batocera splash image » pour réduire légèrement le temps de boot
    • Language > français

Puis redémarrez le système en passant par les menus.

Configuration du stick et des boutons

EgretBatoceraEquivalent SNESNum. (.cfg)Action
AsudB1bouton 1
BestA5bouton 2
CR1R4bouton 3
DouestY2bouton 4
EnordX0bouton 5
FL1L3bouton 6
roseselectselectcrédit
bleustartstartstart
blancHotkey
+ L3 (stick gauche)
(aucun)Hotkey
+ menu MAME

Le bouton blanc est le bouton spécial RetroArch, à utiliser en combinaison avec d’autres : blanc + bleu pour revenir à l’accueil depuis un jeu ; blanc + A pour redémarrer le jeu ; blanc + B pour ouvrir le menu RetroArch ; etc. Il y a d’autres raccourcis pour créer ou charger une save state et faire plein d’actions.

Vous pouvez aussi inverser select et start ou bien mettre la « hotkey » sur select.

C’est aussi le bouton blanc qui permet d’ouvrir le menu MAME depuis un jeu. Faites-le, sélectionnez « Inputs (general) » (attention ici il y a un bug, c’est B qui valide et A qui annule), puis configurez les boutons suivants :

UI Select : A
UI Cancel : B
P1 button 1/2/3/4/5/6 : A/B/C/D/E/F

Avec cette configuration, la ligne des pieds et poings est inversée dans les Street Fighter (les pieds sont en haut et les poings en bas). Si vous ne vous y faites pas, mettez les boutons 1/2/3 sur la ligne du haut et 4/5/6 sur ligne du bas, mais le bouton d’action principal sera en haut en jeu, et en bas sur le système. Il arrive également que la configuration des boutons ne corresponde pas à la configuration du jeu (par exemple avec Power Instinct 2 où pieds et poings sont mélangés). Dans ce cas il faudra reconfigurer de la même manière, mais utiliser « Inputs (this game) » pour reconfigurer spécifiquement pour ce jeu.

Configuration des manettes supplémentaires

Si vous branchez une manette ou un stick, vous devrez passer par le menu pour la configurer : paramètre des manettes > configurer une manette puis appuyez quelques secondes sur un bouton. Utilisez le tableau au-dessus pour correctement mapper les boutons.

Si vous souhaitez utiliser un pad ou un autre stick en tant que contrôleur « joueur » 1, il faut aller dans les options des contrôles et forcer la manette comme contrôleur « joueur 1 » ; malheureusement il semble y avoir un bug dans ce cas, et les boutons font n’importe quoi, vous ne pourrez donc utiliser un pad supplémentaire qu’en « joueur 2 », ou vous accommoder des contrôles pétés.

Alternativement, une fois le pad configuré dans Batocera, lancez un jeu avec MAME, ouvrez le menu (bouton blanc), sélectionnez « Inputs (general) » puis ajoutez les contrôles de votre pad externe aux contrôles du joueur 1, mais vous devrez peut-être le refaire à chaque fois que vous débranchez le pad (MAME supprime automatiquement ce qu’il ne détecte plus).

Il existe un contrôleur officiel pour l’Egret 2 Mini contenant à la fois un trackball et un spinner, vendu avec 10 jeux (dont 3 épisodes d’Arkanoid). Malheureusement, après plusieurs heures de bidouilles, je n’ai pas réussi à le faire fonctionner sur cette version de Batocera, mais il semble que ce soit possible sur PC ou avec d’autres distributions ; si vous trouvez la bonne configuration, n’hésitez pas à me prévenir. Au pire, il fonctionne avec la borne non-hackée.

Configuration jeu par jeu

Paramètres des jeux

Pour régler la difficulté des jeux, il faut changer ce qu’on appelle les « DIP switches » ; originellement des interrupteurs (physiques) présents sur la carte mère du jeu.

Pour la plupart des jeux sous MAME il suffit d’utiliser le bouton blanc puis sélectionner « DIP switches ».

La NeoGeo utilise des DIP switchs « logiciels » : en utilisant l’Unibios, au démarrage du système, durant l’affichage du logo du bios, il faut maintenir appuyés les boutons B+C+D. Allez ensuite dans « setting up the soft dip », choisissez le jeu en SLOT 1, changez les paramètres, revenez avec C puis EXIT. Pour savoir si vous avez l’Unibios c’est très simple : c’est affiché au démarrage (Universe BIOS). Si c’est le cas : blanc + A pendant un jeu NeoGeo > core options > specify NeoGeo BIOS > unibios33. Attention, comme c’est un réglage logiciel, il faudra faire un save state si vous voulez mémoriser les réglages.

Pour le CPS1 et 2 (Street Fighter et beaucoup de jeux Capcom) ainsi que beaucoup d’autres systèmes, il faut passer par un « service mode ». Le plus simple est de configurer aussi le bouton blanc pour l’ouvrir. Ensuite, une fois en jeu, appuyez sur le bouton blanc, ce qui ouvrira à la fois le menu MAME et le service mode ; fermez le menu MAME pour régler le jeu. Là aussi, c’est un réglage logiciel, donc il faudra faire un save state pour les mémoriser. Sur FBNeo le raccourci par défaut est bleu + C + F (qui correspond à start + L + R).

Vous pouvez aussi activer la création automatique de save state : dans les paramètres de Batocera > game settings > auto save/load. Pratique aussi pour conserver vos high scores.

Modification des contrôles

Certains jeux utilisent par défaut les gâchettes ou le stick droit, par exemple les jeux de course ; pour les reconfigurer, sous MAME ouvrez le menu (bouton blanc) puis « inputs (this game) » et changez les boutons assignés aux actions.

Sur FBNeo : ouvrez le menu RetroArch (blanc + A) > controls > port 1 controls et définissez les actions sur les boutons que vous voulez utiliser. Ensuite, remontez d’un niveau dans les menus > manage remap files > save game remap file.

Pour rendre certains jeux jouables si vous n’avez pas de stick analogique : menu RetroArch > core options > analog speed et réduisez la valeur jusqu’à quelque chose d’utilisable sur le jeu en cours.

Bouton turbo / auto-fire

Pour définir un bouton turbo : ouvrez le menu RetroArch avec blanc+A > remontez avec B > settings > input > turbo fire : turbo mode définit le fonctionnement, et turbo default button définit le bouton dont l’appui sera simulé (écrit ici en « équivalent SNES »). Revenez ensuite, puis « Port 1 Controls » > tout en bas « Turbo » > définissez le bouton sur lequel vous appuierez pour déclencher le mode turbo.

Les différents modes s’utilisent ainsi :

  • Classic : appuyez sur le bouton turbo, puis sur un autre bouton : ce dernier sera matraqué.
  • Single button (toggle) : appuyez une fois sur le bouton turbo : le bouton défini est matraqué automatiquement.
  • Single button (hold) : maintenez le bouton turbo pour simuler un matraquage du bouton défini.

Il devrait être possible d’enregistrer la configuration jeu par jeu, mais toutes mes tentatives ont été infructueuses ; si vous avez réussi, je suis preneur. En attendant, il faudra sans doute refaire cette configuration à chaque jeu (ou bien l’enregistrer pour tous).