Hack Astro City Mini

Avant-propos

Le hack, flash ou jailbraik (selon votre préférence) de l’Astro City 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 clé USB.

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 Astro City 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 clé USB : c’est très pratique.

Il y a plein de petits bugs ou manques de finalisation : par exemple le son est toujours à fond, il y a des problèmes de tearing, des bugs de sortie HDMI, 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, même sur MAME 2003+. Par rapport à l’Egret 2 Mini (basée sur le même hardware), l’Astro City Mini n’a pas beaucoup de RAM, et beaucoup de jeux (comme les gros jeux NeoGeo type Garou, Metal Slug 3+, KoF 99+…) ne marchent pas.

Nécessaire et prérequis

Afin de hacker l’Astro City 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 la machine : 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 clé USB de 16Go minimum.

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’Astro City 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 Astro City Mini et utilisez Balena Etcher pour la flasher sur la clé USB.
  • Retirez la clé puis remettez-la dans votre PC : Windows va vous proposer de formater une partition inconnue, laissez-le faire. La clé 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 clé, 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 acm-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 l’Astro City Mini, débranchez tous les câbles, mettez l’interrupteur sur OFF.
  • Insérez la clé USB dans l’ACM
  • Mettez l’interrupteur de l’ACM 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 « acm-backup-and-install.bat » (ou .sh sur Mac et Linux)
  • Attendez de voir le message « *** PRESS A KEY WHEN READY AND THEN CONNECT THE ACM 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 l’ACM, 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 l’Astro City 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 ACM. The ACM will reboot when the custom boot has been installed ». Ne touchez à rien ! L’écran de l’ACM 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. Personnellement ça ne change rien et le volume est toujours à fond, mais chez d’autres personnes ça fonctionne.
  • 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.video_allow_rotate=false

# 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

Sauvegardez, remettez la carte SD dans l’Astro City Mini et démarrez-la.

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

  • Si l’écran est pivoté : System > Screen Rotation : 90
  • 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 et optimize for small screens : 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

ACMBatoceraEquivalent SNESNum. (.cfg)Action
AsudB1bouton 1
BestA5bouton 2
CR1R4bouton 3
DouestY2bouton 4
EnordX0bouton 5
FL1L3bouton 6
créditselect
Hotkey
selectcrédit
startstartstartstart

Le bouton crédit sert de bouton spécial RetroArch « hotkey », à utiliser en combinaison avec d’autres : hotkey+start pour revenir à l’accueil depuis un jeu ; hotkey + A pour redémarrer le jeu ; hotkey + 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.

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.

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’ouvrir le menu RetroArch > core options > 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 ». TODO : comment ouvrir le service mode sur MAME2003+.

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.

Bouton turbo / auto-fire

Pour définir un bouton turbo : ouvrez le menu RetroArch avec hotkey+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).