Entretien avec GValiente Ă  propos de Butano

Posté par  (site web personnel) . Édité par Julien Jorge, Arkem, Benoît Sibaud et palm123. Modéré par Julien Jorge. Licence CC By‑SA.
Étiquettes :
23
12
avr.
2024
Jeu

GValiente développe un SDK pour créer des jeux pour la console Game Boy Advance : Butano.

Cet entretien revient sur son parcours et les raisons qui l’ont amené à s’intéresser à cette console.

Game Boy Advance

Sommaire

Partie 1: présentation

Qui êtes-vous, quel est votre parcours et est-il lié aux jeux vidéos ?

Après des études d'informatique, j'ai travaillé dans plusieurs domaines autour du logiciel comme les pages web ou les applications graphiques Java/Swing.

Aujourd'hui je travaille plutôt en C et C++ dans l'embarqué, ainsi même si mon parcours professionel n'est pas directement lié aux jeux vidéos, mon boulot actuel en est plutôt proche.

Comme loisir, j'ai joué un peu avec RPG Maker 2K avant de commencer à programmer pour la GBA.

Pourquoi le retrogaming est-il important pour vous ?

D'abord pour la nostalgie : être capable de jouer à nouveau aux jeux de votre enfance est très important pour tout le monde. Malheureusement, pouvoir rejouer à de vieux jeux est quelque chose que nous sommes en train de perdre à cause des restrictions des jeux modernes (mode en ligne obligatoire, DRM…).

Ensuite, grâce aux émulateurs il est très facile de lancer sans problème des jeux que j'ai créés pour la GBA il y a 20 ans. Si je les avais fait pour Mandrake 8.0 à la place, ce ne serait pas aussi facile de les tester aujourd'hui sans recompiler du vieux code et autre.

Partie 2: Game Boy Advance

Comment en êtes-vous venu à vous intéresser à la Game Boy Advance ?

La GBA SP était un grand progrès par rapport au modèle original grâce à l'écran rétro-éclairé et la batterie intégrée, alors j'en ai acheté une dès qu'elle est sortie.

Les jeux 2D me manquaient après la N64 et la GameCube, alors pouvoir jouer à des classiques de la 2D comme Final Fight sur une console portable était génial.

Mais ce qui m'intéressait vraiment à propos de la GBA était la possibilité de créer des jeux grâce au HAM SDK et aux flashcarts.

La GBA SP

Qu’est-ce que cette console a de particulier ?

C'est la dernière console 2D. Le système graphique de la GBA fonctionne comme les consoles 16 bits classiques comme la SNES ou la Megadrive, avec des sprites, des arrières plans…

Toutefois elle utilise un processeur ARM 32 bits tourant à 16MHz, alors il n'est plus nécessaire ou aussi important de programmer en assembleur pour avoir de bonnes performances.

En plus, je trouve plus "magique" de voir votre jeu tourner sur un écran d'une vieille console portable que sur un écran de télévision.

Est-elle proche de la Game Boy ou de la SNES ?

Au niveau graphique, c'est comme une SNES avec plus de couleurs simultanées, plus d'arrière plans et beaucoup de sprites par scanline (proche d'une Neo Geo et en plus on peut leur appliquer une rotation !). Elle permets aussi d'utiliser un "framebuffer" qui rends le rendu "logiciel" plus facile. Les jeux 3D comme Doom sont beaucoup plus rapide sur la GBA grâce à ces modes. Malheureusement la résolution de l'écran est un peu trop basse (240x160 contre 256x224 pour la SNES par exemple).

Cependant, au niveau son, c'est pire que la SNES: la GBA partage le même canal PSG que la Game Boy originale avec deux nouveaux canaux directs pour jouer des samples PCM. Avoir seulement deux canaux PCM demande presque toujours de gâcher des tonnes de cycles CPU en mixage audio et même après cela sonne toujours pire que la SNES.

Comment fonctionne l'affichage (PPU, écran LCD) ?

Comme je l'ai dit, cela fonctionne comme une SNES : vous avez un nombre fixe d'arrière plans et de sprites, vous les configurez en écrivant des registres. La GBA a aussi des interruptions HDMA et H-Blank, donc vous pouvez faire beaucoup d'effets "raster" comme le fameux mode 7 de la SNES.

Néanmoins, quelques limitations pénibles du PPU de la SNES ont été retiré, ce qui rends le PPU de la GBA plus facile à programmer. Par exemple, la GBA permets d'écrire en VRAM pendant le "V-Draw" (quand le PPU rafraîchit l'écran). Cela permets d'utiliser toutes les tailles de sprites disponibles en même temps alors que la SNES ne permettait que deux tailles simultanément.

La console peut-elle faire de la 3D ?

La GBA n'a pas d'accélération 3D matérielle, mais son CPU est assez rapide pour faire du rendu logiciel (à un faible taux de rafraîchissement). Il y a quelques techniques pour dessiner des polygones 3D avec des sprites 2D, mais cela vient avec des tonnes de limitations. Dans Varooom 3D, j'ai utilisé des sprites 2D poour dessiner des lignes horizontales, ce qui m'a permis de dessiner quelques polygones non texturés à 60 images par seconde.

Comment fonctionne le son ?

Je ne sais pas très bien comment fonctionne l'audio de la GBA, car je n'en ai pas eu besoin : il y a de très bonnes bibliothèques disponibles et j'ai préféré les intégrer plutôt que d'implémenter ma propre solution.

Comment marche la rétrocompatibilité avec les précédentes Gameboy ?

Il y a 3 modèles de GBA disponible: GBA, GBA SP and GBA Micro. Seules les deux premières sont compatibles avec la Game Boy originale.
La rétrocompatibilité est transparente pour le développeur et la plupart des fonctionnalités de la Game Boy sont indisponibles en mode "natif" : un jeu GBA ne peut pas utiliser le CPU de la Game Boy par exemple.

La machine possède une ROM interne, à quoi sert-elle ?

La GBA démarre depuis le BIOS, une petite ROM qui montre l'écran d'accueil et exécute le jeu après cela. Il a aussi quelques fonctions liées à l'énergie, comme arrêter le CPU jusqu'au V-Blank ou mettre la console en veille. Enfin, il propose quelques routines comme des fonctions mathématiques, mais je ne les utilise pas pour des questions de performances. Cela aide aussi à éviter les bugs d'émulation du BIOS.

La GB possède un dispositif anti piratage, comment fonctionne-t-il ?

Je préfère vous renvoyer à l'article de copetti.org sur le sujet.

Comme pour l'audio, je ne sais pas trop comment cela fonctionne, car j'ai préféré intégrer une bibliothèque.
En général je préfère une bonne bibliothèque plutôt que passer du temps à implémenter une plus mauvaise solution.

Les cartouches peuvent-elles embarquer des coprocesseurs ?

Bien sûr, mais le CPU est tellement puissant par rapport à ceux des consoles 16 bits, qu'il n'y en a pas souvent besoin. Le meilleur exemple d'une cartouche officielle avec un coprocesseur dont je me rappelle est la Play-Yan : elle semble embarquer un VideoCore 1 pour jouer des musiques mp3 et des vidéos mp4 depuis une carte SD.

Les émulateurs sont-ils bons ?

Extraordinaires. Les émulateurs GBA sont si bons que vous n'avez presque jamais besoin de tester sur du vrai matériel. Si votre jeu fonctionne sur la plupart des émulateurs modernes, alors votre jeu a toutes les chances de fonctionner sur une console réelle sans souci. D'ailleurs la plupart des membres actifs de gbadev ne possèdent même pas de GBA.

Quels sont vos jeux commerciaux préférés sur cette console ?

Beacoup :

  • des joyaux de Treasure comme Astro Boy Omega Factor et Gunstar Super Heroes ;
  • d'autres jeux d'action comme Ninja Five-0, Dragon Ball Advanced Adventure et Final Fight ;
  • tous les Castlevanias (qui sont proches du Simphony of the Night de la PS1) ;
  • les ports de Doom ;
  • bien sĂ»r les classiques de Nintendo comme Wario Ware et Zelda the Minish Cap ;
  • des RPGs bien connus comme Mother 3, Mario and Luigi et Final Fantasy I&II ;
  • quelques RPGs moins connus comme Riviera et CIMA the Enemy.

Astro Boy Omega Factor

Quels sont vos jeux "homebrew" préférés sur cette console ?

Il y en a beaucoup aussi, mais mon préféré est de loin GBA Microjam '23: c'est une collection de mini jeux très amusants à la Wario Ware.
Ce qui le rend très spécial, c'est que chaque mini-jeu a été fait par un membre différent de gbadev, c'est un jeu "communautaire".

D'autres très bons:

gba-microjam-23

Partie 2 : Butano

Pourquoi créer un SDK aujourd’hui pour si vieux système ?

L'objectif de Butano était de pouvoir travailler avec le PPU de la GBA et le reste du système aussi facilement que possible sans perdre trop de cycles CPU. Et je pense que j'y suis arrivé : avec Butano, vous pouvez créer, afficher et détruire des sprites, des arrière plans, du texte, des effets raster et plus encore avec une seule ligne de C++.

Les prémisses de Butano étaient une bibliothèque interne à mes jeux. Je n'avais pas de plan pour rendre ça public à part faire quelques exemples et de la documentation.

Finalement je suis content d'avoir rendu ça public : le plus grand accomplissement de Butano est le grand nombre de jeux de qualité fait avec.

Est-ce que vous participez vous même à la création de jeux ?

Oui, Butano vient avec le code source de deux jeux que j'ai fait : Butano Fighter et Varooom 3D.

Varooom 3D

Quels ont été les difficultés pour créer Butano ?

Pour être honnête, je n'ai pas eu beaucoup de difficultés grâce au grand nombre de bibliothèques, tutoriaux, émulateurs et outils disponibles pour la GBA.

Vous aimeriez vivre du développement de ce logiciel libre?

Bien sûr, mais à moins de travailler à plein temps sur un jeu homebrew à grand succès, c'est difficile voire impossible de vivre de ça.

Est-ce que Butano gère les accessoires (e-Reader, WormCam, Play-Yan…) de la console ?

Il gère les accessoires les plus communs : SRAM, rumble et l'horloge temps réel / real time clock (RTC).

Pour les accessoires plus exotiques, je pense qu'il est préférable d'utiliser d'autres bibliothèques.

Quels conseils donneriez-vous à quelqu’un qui veut se lancer dans le développement de jeux Game Boy Advance ?

Premièrement, vous devez apprendre les bases du C/C++ : la plupart des nouveaux connaissent uniquement des langages de haut niveau comme Javascript ou Python, malheureusement ils sont un peu trop lourds pour la pauvre GBA.

Après, vous pouvez suivre cet excellent guide plutôt que suivre mes modestes conseils.

Quels sont les outils pour créer/préparer des graphismes utilisable par Butano ?

J'utilise Gimp et Usenti (un logiciel proche de MS Paint pour la GBA et notamment une gestion des couleurs 15 bits et des palettes). Toutefois, la plupart des outils permettant de produire des images indexées peuvent faire l'affaire.

Pour le travail des cartes, j'aimais utiliser Tiled par le passé.

Quels sont les outils pour créer/préparer des musiques et des sons utilisable par Butano  ?

OpenMPT est l'outil audio le plus populaire pour la GBA, les musiques étant généralement créées avec un tracker. Il a aussi de bons outils pour travailler avec les samples. D'autres utilisent hUGETracker et Furnace.

Est-il possible de créer ses propres cartouches ?

Je ne suis pas juriste, mais comme Butano est sous licence zlib, tant que vous respectez cette licence et celles des autres dépendances, vous pouvez faire vos propres cartouches et même les vendre.

Je pense que ce que font la plupart des gens aujourd'hui, c'est acheter des cartouches pirates Pokémon pas chères, et les flasher pour y mettre leurs propres jeux.

Pourquoi le choix de C++ pour ce SDK ?

Comme je l'ai dit, un langage de haut niveau avec ramasse miettes est généralement trop pour la GBA.

Entre C et C++, j'ai choisi ce dernier, car il permet de réduire grandement la quantité de code sans gâcher trop de CPU.

Par exemple:

  • les destructeurs de C++ permettent de ne pas avoir Ă  Ă©crire trop de code pour nettoyer les ressources, ce qui est une source de bugs importante sur les grands projets GBA ;
  • la GBA ne gère pas les nombres flottants en hardware, donc utiliser des nombres en virgule fixe est essentiel. Grâce Ă  la surcharge d'opĂ©rateurs, C++ permets d'Ă©crire des classes qui se comportent comme des nombres flottants.
  • L'opĂ©rateur constexpr permet de gĂ©nĂ©rer et stocker des tables de correspondance (lookup tables) ou autres constantes en ROM sans avoir Ă  utiliser d'outils externes.

Est-ce qu'il existe d'autres SDK libres pour ces consoles ?

Il y a beaucoup de SDK pour GBA, mais malheureusement (Ă  mon avis) la plupart sont de plus bas niveau que Butano.

Voici une liste de ressources (compilers, toolkits, libraries, etc.) pour la GBA: resources GBA.

Partie 3: pour finir

En dehors du travail, quels logiciels libres utilisez-vous, sur quel OS ?

J'utilise généralement Windows à cause du boulot et de certains jeux PC, mais la plupart des programmes que j'utilise sont libres.

L'éditeur de code que j'utilise presque toujours est Qt Creator, il est génial pour C++.

À part les logiciels libres pour le développement GBA, j'utilise Firefox, Notepad++, VLC, 7-Zip, LibreOffice, TortoiseGit, VirtualBox et bien sûr les émulateurs pour les vieilles consoles et bornes d'arcade.

Au travail, quels logiciels libres utilisez-vous, sur quel OS ?

Pour le développement embarqué, j'utilise GCC et les outils GNU. Pour les applications de bureau, j'utilise Qt avec MinGW.

GCC est aussi le compilateur le plus populaire pour le développement GBA, alors je n'aurais pas pu l'éviter même si j'avais voulu.

D'autres logiciels que j'utilise au travail : Thunderbird, Putty and WinSCP.

Quelle est votre distribution GNU/Linux préférée et pourquoi, quels sont vos logiciels libres préférés ?

Ubuntu est bien pour le peu d'usage de Linux que je fais.

Mes logiciels libres favoris sont ceux avec lesquels je passe le plus de temps : Firefox, Qt Creator, GCC, les émulateurs.

Quelle question auriez-vous adoré qu’on vous pose ?

Mmh… rien qui me vienne à l'esprit.

Quelle question auriez-vous détesté qu’on vous pose ?

Pourquoi perdez-vous votre temps avec des consoles vieilles de 20 ans ?

Maintenant que j'y pense… J'aurais adoré qu'on me demande ça.

Aller plus loin

  • # VO

    Posté par  (site web personnel) . Évalué à 5 (+2/-0). Dernière modification le 12 avril 2024 Ă  17:05.

    GValiente parlant espagnol et moi anglais comme une vache espagnole, cet entretien est une adaptation libre de nos Ă©changes dans la langue d'Iron Maiden.

    Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

    • [^] # Re: VO

      Posté par  . Évalué à 2 (+1/-0).

      très cool cette interview ! merci !

    • [^] # Re: VO

      Posté par  (site web personnel) . Évalué à 2 (+1/-1). Dernière modification le 12 avril 2024 Ă  19:00.

      boah, il aurait pu mettre ses réponses en espagnol et sa traduction anglaise :-)

      une fois au fosdem, j'avais rencontré 2 contributeurs Mageia qui ne parlaient pas bien anglais et mieux l'espagnol (ou leur langue natale arabe), donc bon on a passé la soirée à parler espagnol :p Franchement, c'est ma LV2 mais j'ai eu moins de mal à me mettre à l'oral avec quelques voyages en Espagne que lorsque j'ai dû parler ma LV1 — donc l'anglais — en contexte international sur une mission… bon dans l'équipe, un russe, un allemand, un indien, un pakistanais, un japonais, un chinois, un américain de souche, heureusement mon responsable d'origine portugaise étant depuis 10 ans aux USA faisait des efforts pour nous pauvres français :D) alors que j'étais à l'époque quasi bilingue anglais… (mais pas à l'oral, ni pour le colloquial ni la réunionite d'équipe :/)

      hmmm, Ă  le relire, il a dĂ» directement Ă©crire en anglais :D
      t'acceptes les PR pour ton texte ? (ya 5-6 coquilles, sbon hein :p), pas vu de fautes dans les réponses, hormis cart qui est sans doute l'abréviation de cartridge

      • [^] # Re: VO

        Posté par  (site web personnel) . Évalué à 3 (+0/-0). Dernière modification le 12 avril 2024 Ă  20:39.

        t'acceptes les PR pour ton texte

        Pourquoi pas, mais c'est plus un brouillon qu'autre chose. Ce serait plus intéressant de travailler directement dans l'espace de rédaction de linuxen.org :-)

        Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

        • [^] # Quelques coquilles

          Posté par  (site web personnel) . Évalué à 2 (+1/-0).

          Merci pour la dépêche !

          Astroboy Omega Factor, monsieur a du goût ! Et je vais télécharger la démo de Goodboy Galaxy, ça a l'air très bien.

          Quelques coquilles Ă  corriger :

          Beacoup -> Beaucoup

          les classiques de Nintendo classics comme -> les classiques de Nintendo comme (car si il existe une collection de jeux "NES classic" sur GBA, WarioWare et Minish Cap n'en font pas partis)

          ils sont un peu trop lourd -> ils sont un peu trop lourds

          générallement -> généralement

          j'utlise Firefox -> j'utilise Firefox

  • # excellente interview

    Posté par  . Évalué à 5 (+3/-0).

    Toujours un plaisir de lire vos questions pertinentes, Dave, et surtout les réponses. Parce que les questions, c'est toujours les mêmes.

    Discussions en français sur la création de jeux videos : IRC freenode / #gamedev-fr

  • # Lost in translation ?

    Posté par  (site web personnel) . Évalué à 4 (+2/-0).

    tous les Simphony of the Night comme Castlevanias.

    Castlevania est une série de jeux.
    Symphony of the Night (SotN) est épisode de cette série (voir le tableau dans mon lien), surtout connu pour sa sortie sur PlayStation, et il n'est pas sorti sur GBA.
    Il y a 3 épisodes sur GBA ("Circle of the Moon", "Harmony of Dissonance" & "Aria of Sorrow"), qui sont clairement dans la lignée de SotN, et qui font parti d'un genre qu'on nomme souvent MetroidVania (de la contraction de Metroid & de CastleVania, donc des jeux avec un seul grand monde ouvert dont on ouvre les parties grâce aux pouvoirs qu'on acquiert au fur et à mesure + une composante RPG avec des caractéristiques qu'on améliore avec de l'expérience).

    Du coup s'agissait-il de "Tous les CastleVania inspirés de Symphony of the Night" ?

  • # Commentaire supprimĂ©

    Posté par  . Évalué à 0 (+0/-0). Dernière modification le 15 avril 2024 Ă  13:51.

    Ce commentaire a été supprimé par l’équipe de modération.

  • # petite erreur sur la partie rĂ©seau?

    Posté par  . Évalué à 0 (+0/-0).

    Il n'y aurait pas une erreur sur la partie

    Comment fonctionne le réseau (Game Boy Link) ?

    Cela parle de son, et ressemble grandement Ă  la partie

    Comment fonctionne le son ?

    Merci pour cet article, très intéressant, et chapeau pour le travail de GValiente!

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.