Vue lecture

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.

GB Recompiled - Vos ROMs Game Boy traduites en C natif

La recompilation statique , je vous en avais parlé avec Zelda 64 et Sonic Unleashed. Le principe, en gros c'est qu'au lieu d'émuler bêtement le processeur et la mémoire d'origine, on traduit tout simplement le code assembleur du jeu directement en C natif. Du coup le jeu tourne nativement sur votre machine, sans couche d'émulation.

Et la bonne nouvelle du jour c'est que cette technique vient de parvenir jusqu'à la Game Boy avec GB Recompiled .

Vous filez à cet outil un fichier .gb et il vous sort OKLM un dossier avec du code C, un CMakeLists.txt et tout ce qu'il faut pour le compiler. Vous lancez cmake puis ninja, et votre vieux Pokemon Bleu tourne nativement sur votre PC plutôt que de passer par un émulateur qui simule le processeur Z80 à chaque frame.

Plutôt chouette non ???

Pour réussir ce tour de force, le recompilateur parse les opcodes Z80 de la cartouche, construit un graphe de contrôle de flux et résout les sauts indirects (genre les tables de jump, le truc qui rend la décompilation galère parce que l'adresse de destination dépend de la valeur d'un registre). Le taux de découverte dépasse alors les 98% même sur des RPGs bien touffus... pas mal pour de l'analyse purement statique !

Côté compatibilité, 7 jeux sont pour le moment validés : Tetris, Pokemon Blue, Donkey Kong Land, Kirby's Dream Land, Zelda Link's Awakening, Castlevania et Super Mario Land.

Par contre, attention, tous les jeux ne passent pas encore. Le runtime embarque un rendu PPU scanline , un système audio 4 canaux et les contrôleurs mémoire MBC1, MBC2, MBC3 et MBC5. Et comme tout ça tourne avec SDL2, du coup ça compile tranquillou sur macOS, Linux et Windows sans broncher !

Y'a aussi des outils de vérification assez bien pensés. Par exemple, un mode différentiel lance le binaire recompilé et un interpréteur Z80 côte à côte, puis compare l'exécution cycle par cycle avec une implémentation de référence. Tant que ça colle, le portage est fidèle !

Et y'a aussi un script Python basé sur PyBoy qui génère des traces d'exécution pour repérer les instructions que l'analyse statique aurait loupées. Voilà, ce que je veux vous dire c'est que c'est pas juste un traducteur tout bête. Y'a vraiment tout un pipeline de tests derrière pour assurer le meilleur portage possible.

Si vous avez suivi les autres projets autour de la portable de Nintendo, comme le GB Interceptor qui espionne le bus mémoire avec un adaptateur USB ou le Game Bub et son FPGA Xilinx, GB Recompiled choisit plutôt l'angle purement logiciel. Là où le FPGA reproduit les circuits et l'émulateur simule le CPU, la recompilation traduit le code source. Ce sont 3 philosophies différentes mais qui ont un seul et même objectif : Faire en sorte que ces jeux ne crèvent pas avec leurs cartouches en plastique gris.

Pour tester chez vous, c'est du classique : un petit terminal, un petit git clone, un cmake, un ninja, et vous passez votre fichier .gb au recompilateur.

git clone https://github.com/arcanite24/gb-recompiled.git
cd gb-recompiled
cmake -G Ninja -B build .
ninja -C build

# Générer le code C depuis la ROM
./build/bin/gbrecomp path/to/game.gb -o output/game

# Compiler la nouvelle version en C
cmake -G Ninja -S output/game -B output/game/build
ninja -C output/game/build

# Optionnel: Baisser ou augmenter le niveau d'optimisation
cmake -S output/game -B output/game/build -DGBRECOMP_GENERATED_OPT_LEVEL=2

# Et on lance !
./output/game/build/game

Voilà comment avec juste quelques commandes, votre bonne vieille cartouche GB peut enfin tourner nativement sur votre laptop. Notez que le support Game Boy Color est dans les tuyaux, ainsi qu'un build Android.

Le projet est franchement actif et ça sent très bon pour la suite !

Quand le set LEGO Game Boy prend vie

J’espère que votre semaine se passe bien. Moi c’est la course comme d’hab… Mais je viens de tomber sur un truc que j’ai trouvé super cool et je ne résiste pas à l’envie de partager ça avec vous. Vous avez vu le nouveau set LEGO Game Boy officiel (lien affilié) qui vient de sortir ? 421 pièces, une soixantaines d’euros, une réplique à l’échelle 1:1 avec des cartouches Link’s Awakening et Super Mario Land faits de briques… C’est joli, c’est nostalgique, mais ça ne fait strictement rien. C’est juste décoratif.

Et bien selon The Verge , une moddeuse australienne du nom de Natalie the Nerd a trouvé ça carrément abusé, alors elle a fait ce que ferait n’importe quel geek qui se respecte : elle l’a transformé en vraie console Game Boy fonctionnelle. Et attention, je ne vous parle pas d’un vulgaire Raspberry Pi Zero planqué dedans avec un émulateur. Non, non, non, elle y a mis des vrais morceaux de Game Boy, avec de VRAIES cartouches qui tournent, ainsi qu’un circuit imprimé qu’elle a conçu elle-même.

Bah oui, pourquoi faire simple quand on peut faire compliqué ?

Pour arriver à ses fins, elle a dû miniaturiser toute la logique d’une Game Boy sur un PCB de la taille d’un timbre-poste. Elle a installé l’écran le plus petit du marché (ce qui l’a obligée à retirer quelques briques LEGO au passage), passé un port USB-C pour l’alimentation, et même prévu des boutons totalement fonctionnels.

D’ailleurs, en août dernier, Natalie avait fait aussi le buzz avec une Game Boy Color entièrement transparente , circuit imprimé inclus. Elle a conçu un PCB en matériau acrylique transparent où on voit tous les fils de cuivre flotter dans le vide. Super beau, super technique, mais elle-même disait que c’était juste un projet artistique pour montrer son travail, et pas quelque chose de très pratique.

Elle a même fondé le Modded Gameboy Club , une communauté avec un Discord et un Wiki où les gens partagent leurs tutos pour réparer, modifier, upgrader leurs vieilles consoles Nintendo. Elle vend aussi des composants de seconde main pour les modders et partage ses designs de circuits en open source.

Et bonne nouvelle pour ceux qui voudraient reproduire sa version fonctionnelle de la LEGO Game Boy puisqu’elle a annoncé qu’elle publierait les schémas et les plans une fois qu’elle serait satisfaite du résultat final. Donc si vous avez des compétences en soudure et que l’idée de fabriquer un PCB custom ne vous fait pas peur, vous pourrez bientôt tenter l’aventure.

En tout cas, moi je trouve ça trop super méga génial !

Comment modder une Game Boy avec du matos basique de chez basique

Quand j’étais jeune, j’ai eu la chance d’avoir une Game Boy originale et au fil des années, j’avais accumulé pas mal de jeux. Malheureusement un jour, un membre malfaisant de ma famille a quasiment tout volé pour les revendre à je ne sais qui, mais j’ai quand même réussi à sauver ma GB d’origine et surtout Tetris qui est, encore aujourd’hui, mon jeu préféré.

Je n’y joue pas souvent, mais je sais que si un jour elle tombe en panne, grâce à ce projet, je pourrais la réparer sans souci et même avoir de nouvelles fonctionnalités super cools. D’ailleurs qui n’a jamais rêvé de pimper sa bonne vieille Game Boy tout en conservant son look d’origine indémodable ?

❌