Sortie d'img2gb 1.0

Petit article rapide pour vous présenter le petit outil img2gb et vous annoncer la sortie de sa version 1.0.

Pour les besoins de mes articles sur le développement GameBoy, et pour mes propres développements, j'avais besoin d'un outil capable de transformer une image, dessinée avec n'importe quel logiciel de dessin moderne, en quelque chose d'utilisable sur la GameBoy. Je voulais que cet outil soit simple, en ligne de commande, disponible sous Linux, et si possible Open Source... autant vous dire que j'ai pas trouvé grand-chose pour me satisfaire. J'ai donc décidé de le développer moi-même, c'est comme qu'a démarré le projet img2gb.

Concrètement, img2gb transforme les images en code source C à travers les étapes suivantes :

  • il prend donc une image (PNG, JPEG,...) en entrée,
  • la découpe en petits morceaux de 8×8 pixels, appelés « tuiles » (la GameBoy ne sait pas afficher autre chose que ces tuiles),
  • il encode ensuite ces tuiles dans le format spécifique à la GameBoy (pour plus d'information, vous pouvez lire l'article que j'ai écrit sur l'encodage des images pour la GameBoy),
  • et enfin, il génère des fichiers en langage C (.c et .h) qui pourront être utilisés dans un projet GameBoy.

img2gb peut également générer une tilemap, c'est-à-dire un tableau indiquant à la GameBoy où afficher chaque tuile pour recomposer une image.

Les premières versions de cet outil (branche 0.x) ont été développées rapidement, car j'en avais besoin immédiatement pour poursuivre mes articles et mes projets. Je n'avais du coup pas forcément pris le temps de réfléchir aux évolutions de l'outil et à une ligne de commande pratique. Cette version 1.0 corrige donc tout ça. Voici les principales nouveautés :

  • La génération des tilesets et des tilemaps se font maintenant en deux opérations séparées. Cela permet beaucoup plus de souplesse, et permet de configurer plus finement le résultat final souhaité.
  • La ligne de commande (CLI) a été entièrement repensée pour être plus logique et plus facile à utiliser.
  • L'API en Python a elle aussi été retravaillée, et j'ai ajouté des fonctions de haut niveau permettant à ceux qui voudraient juste scripter la génération de leurs ressources de ne pas s'embêter avec le fonctionnement interne d'img2gb.
  • J'ai rajouté quelques options spécifiques aux sprites (une option d'inversion de couleurs pour utiliser la palette alternative, et une option pour ré-agencer les tuiles pour faciliter l'utilisation de sprites de 8×16 px),
  • J'ai également profité de l'occasion pour ajouter des tests unitaires (tout n'est pas testé à fond, mais c'est déjà un bon début).
  • Enfin, j'ai rédigé une doc complète, en anglais, pour que tous ceux qui le souhaitent puissent s'en servir relativement facilement.

Étant donné que cette version change pas mal de choses, j'ai également pris le temps de mettre à jours mes exemples de programmes GameBoy, ainsi que le 5ème article de ma série sur le développement GameBoy qui contient toutes les explications nécessaires à l'utilisation d'img2gb.

Si vous êtes intéressés par cet outil, voici quelques liens qui vous seront utiles :

Voilà, c'est tout pour cette fois, et je vous donne rendez-vous dès demain pour la sortie du 7ème article sur le développement GameBoy qui parlera des sprites. :)