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
-
Partie 2: Game Boy Advance
- Comment en ĂȘtes-vous venu Ă vous intĂ©resser Ă la Game Boy Advance ?
- Quâest-ce que cette console a de particulier ?
- Est-elle proche de la Game Boy ou de la SNES ?
- Comment fonctionne l'affichage (PPU, écran LCD) ?
- La console peut-elle faire de la 3D ?
- Comment fonctionne le son ?
- Comment marche la rétrocompatibilité avec les précédentes Gameboy ?
- La machine possĂšde une ROM interne, Ă quoi sert-elle ?
- La GB possĂšde un dispositif anti piratage, comment fonctionne-t-il ?
- Comment fonctionne le réseau (Game Boy Link) ?
- Les cartouches peuvent-elles embarquer des coprocesseurs ?
- Les émulateurs sont-ils bons ?
- Quels sont vos jeux commerciaux préférés sur cette console ?
- Quels sont vos jeux "homebrew" préférés sur cette console ?
-
Partie 2 : Butano
- Pourquoi crĂ©er un SDK aujourdâhui pour si vieux systĂšme ?
- Est-ce que vous participez vous mĂȘme Ă la crĂ©ation de jeux ?
- Quels ont été les difficultés pour créer Butano ?
- Vous aimeriez vivre du développement de ce logiciel libre?
- Est-ce que Butano gĂšre les accessoires (e-Reader, WormCam, Play-Yan...) de la console ?
- Quels conseils donneriez-vous Ă quelquâun qui veut se lancer dans le dĂ©veloppement de jeux Game Boy Advance ?
- Quels sont les outils pour créer/préparer des graphismes utilisable par Butano ?
- Quels sont les outils pour créer/préparer des musiques et des sons utilisable par Butano ?
- Est-il possible de créer ses propres cartouches ?
- Pourquoi le choix de C++ pour ce SDK ?
- Est-ce qu'il existe d'autres SDK libres pour ces consoles ?
-
Partie 3: pour finir
- En dehors du travail, quels logiciels libres utilisez-vous, sur quel OS ?
- Au travail, quels logiciels libres utilisez-vous, sur quel OS ?
- Quelle est votre distribution GNU/Linux préférée et pourquoi, quels sont vos logiciels libres préférés ?
- Quelle question auriez-vous adorĂ© quâon vous pose ?
- Quelle question auriez-vous dĂ©testĂ© quâon vous pose ?
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.
Comment fonctionne le réseau (Game Boy Link) ?
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:
- Goodboy Galaxy ;
- Demons of Asteborg DX ;
- GBADoom, un portage opensource de Doom ;
- SNESAdvance ;
- OpenLara ;
- Super Wings ;
- Symbol Merged ;
- Anguna
- Vulkanon ;
- Inheritors of the Oubliette ;
- Demoscene entries like all Shitfaced Clowns prods ;
- et les jeux que j'ai fait bien sûr.
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
constexprpermet 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
- Butano (98 clics)
- Un article sur l'architecture de la Game Boy Advance (113 clics)
- Le dossier de Grospixels sur cette console (86 clics)
# VO
PostĂ© par devnewton đș (site web personnel) . ĂvaluĂ© Ă 6. 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.
Ce post est offensant ? Prévenez moi sur https://linuxfr.org/board
[^] # Re: VO
PostĂ© par bobo38 . ĂvaluĂ© Ă 2.
trĂšs cool cette interview ! merci !
[^] # Re: VO
PostĂ© par BAud (site web personnel) . ĂvaluĂ© Ă 2. 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 devnewton đș (site web personnel) . ĂvaluĂ© Ă 3. DerniĂšre modification le 12 avril 2024 Ă 20:39.
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 :-)
Ce post est offensant ? Prévenez moi sur https://linuxfr.org/board
[^] # Quelques coquilles
PostĂ© par dovik (site web personnel) . ĂvaluĂ© Ă 2.
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 jseb . ĂvaluĂ© Ă 5.
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 libera / #gamedev-fr
# Lost in translation ?
PostĂ© par GuieA_7 (site web personnel) . ĂvaluĂ© Ă 4.
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" ?
[^] # Re: Lost in translation ?
PostĂ© par devnewton đș (site web personnel) . ĂvaluĂ© Ă 3.
Mmh en angliche la phrase est All the Simphony of the Night like Castlevanias.
Ce post est offensant ? Prévenez moi sur https://linuxfr.org/board
[^] # Re: Lost in translation ?
PostĂ© par GuieA_7 (site web personnel) . ĂvaluĂ© Ă 6. DerniĂšre modification le 13 avril 2024 Ă 18:56.
"Simphony of the Night like" est sûrement à prendre comme "Doom-like" (jeux comme Doom), donc les "Castlevania semblables à SotN" (il me semble qu'en français on n'accorde pas les noms propres).
[^] # Re: Lost in translation ?
PostĂ© par devnewton đș (site web personnel) . ĂvaluĂ© Ă 3.
J'ai fait une correction pour que ce soit plus clair de lune.
Ce post est offensant ? Prévenez moi sur https://linuxfr.org/board
# Commentaire supprimé
PostĂ© par Anonyme . ĂvaluĂ© Ă 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 Pepelle . ĂvaluĂ© Ă 0.
Il n'y aurait pas une erreur sur la partie
Cela parle de son, et ressemble grandement Ă la partie
Merci pour cet article, trÚs intéressant, et chapeau pour le travail de GValiente!
# Commentaire supprimé
PostĂ© par Anonyme . ĂvaluĂ© Ă 0. DerniĂšre modification le 06 mai 2024 Ă 10:08.
Ce commentaire a Ă©tĂ© supprimĂ© par lâĂ©quipe de modĂ©ration.
Suivre le flux des commentaires
Note : les commentaires appartiennent Ă celles et ceux qui les ont postĂ©s. Nous nâen sommes pas responsables.