Introduction

En grand nostalgique que je suis, j'aime rejouer à The Legend of Zelda - Ocarina of Time sur Nintendo 64 ou encore un bon Metal Slug sur NeoGeo. J'ai passé une bonne partie de mon adolescence sur tout un tas de consoles émulées, du pur bonheur.

Et il faut croire qu'à force d'en parler, j'ai enfin réussi à motiver Sarita , ma compagne, de s'y mettre. À ce détail près qu'elle ne jure que par Super Mario Land sur la Game Boy.

Et l'idée m'est venue, presque spontanément, d'écrire mon propre émulateur. Bravo, cerveau !

Il existe déjà pléthore d'émulateurs pour la Game Boy, mais il se trouve que j'ai justement besoin d'un nouveau projet, et celui-ci semble parfait. Ce projet s'inscrit bien dans la suite des autres.
Alors pourquoi un émulateur ? D'abord parce que je ne sais absolument pas où je mets les pieds. Ensuite parce que ça représente un défi de taille, je sais d'ores et déjà que c'est parti pour durer. Enfin, d'aucun pense qu'il faut avoir écrit son propre compilateur dans sa carrière de développeur, pour moi ça sera un émulateur.


Le projet : PyGameBoy

Nom de code  : Sarita.
Le code source est sous license MIT et disponible sur ce dépôt GitHub : PyGameBoy.

Objectif :

python -m gameboy "Super Mario Land (JUE) (V1.1) [!].gb"

# Ou, une fois packagé :
pygameboy "Super Mario Land (JUE) (V1.1) [!].gb"

Il n'est pas question d'en faire une usine qui émule la totalité du catalogue de la Game Boy. L'objectif n°1 est de pouvoir jouer à Mario. Je ne ferme pas la porte au futur, mais l'objectif initial doit rester simple.

Technologie : Python 3.6.5, voire même 3.7 (elle arrive à grands pas ) et PyGame. Le tout en respectant les normes de codage de la PEP8, bien évidemment.

Et puis quelques idées d'améliorations qui aideront à orienter certains choix techniques :

  • Affichage à des échelles différentes.
  • Pouvoir scripter l'émulateur (pour apprendre à jouer à la machine, par exemple).
  • Multiplateforme.
  • Nuikta pour le packaging ?

« Bon chance ! »


La suite

J'écrirai une liste d'articles spécifiques à ce projet afin d'exposer mes avancées, les problèmes rencontrés ou simplement pour avoir un état des lieux de temps en temps. Les articles seront regroupés sous l'étiquette PyGameBoy, dont les plus importants sont :

  1. Contenu d'une ROM (à venir)