Joshua Barretto
En coulisse

Une histoire de portage impossible : « Super Mario 64 » sur la Game Boy Advance

Un développeur a bricolé un portage de « Super Mario 64 » pour Game Boy Advance sur son temps libre avec une seule idée en tête : prouver que ce projet soi-disant irréalisable était bel et bien possible.

Super Mario 64 est une référence dans l’histoire du jeu vidéo. En 1996, ce jeu de plateforme révolutionnaire a réussi à transposer le gameplay classique de jump’n’run des jeux Mario 2D dans la troisième dimension. La commande intuitive dans l’espace tridimensionnel et les superbes graphiques 3D ont épaté les fans de Nintendo.

« Super Mario 64 » a établi une nouvelle référence dans la conception de jeux 3D.
« Super Mario 64 » a établi une nouvelle référence dans la conception de jeux 3D.
Source : Nintendo

Le développeur de logiciels Joshua Barretto s’est fixé pour objectif de transférer le légendaire jeu 3D sur la Game Boy Advance (GBA). Cette dernière ne renfermant ni matériel 3D dédié, ni la puissance de calcul nécessaire pour afficher des paysages et des modèles de personnages aussi complexes...

« T’es dingue », « C’est impossible »… Telles ont été les premières réactions du milieu des développeurs GBA lorsque Joshua a annoncé son projet. Il a donc tout mis en œuvre pour prouver que ce projet impossible était finalement possible.

J’ai échangé avec Joshua sur ses motivations, le contexte technique et ses futures intentions pour le projet.

Un premier prototype qui fait sensation

À presque 30 ans, Joshua a toujours été fan de Nintendo. Au début des années 2000, il était l’heureux propriétaire d’une Game Boy Advance violette et aurait adoré pouvoir jouer à Super Mario 64 dessus. Il se rappelle même « avoir naïvement envisagé d’adresser une pétition à Nintendo pour demander le portage ». Vingt ans plus tard, Joshua réalise lui-même ce rêve !

Le 8 mai 2024, le développeur poste sur sa chaîne YouTube une première vidéo de son projet Super Mario 64 pour GBA. On y voit le point de départ du jeu avec le château de Peach et le jardin, un petit triangle rouge court et bondit dans tous les sens. Le prototype tourne certes à un taux de rafraîchissement faible, les textures et la géométrie déforment le paysage vide au moindre mouvement pour en faire de l’art abstrait... Mais il fonctionne ! Et le système physique et la détection des collisions aussi.

La vidéo s’est répandue comme une traînée de poudre parmi la communauté de développeurs rétro et GBA... Cette même communauté qui l’avait mis en garde contre ce projet « infaisable » ! Ça n’avait pas effrayé Joshua outre mesure et l’avait même motivé : « J’adore faire et défaire des hypothèses ».

Des progrès constants

Pour les prochaines mises à jour, Joshua se concentre sur la modélisation des personnages et les optimisations techniques. Le triangle abstrait est d’ores et déjà de l’histoire ancienne. Désormais, un « vrai » Mario arpente ce monde pixellisé, même s’il n’est pas encore animé et reste figé en pose en T. On peut en outre explorer l’intérieur du château de Peach ainsi que le premier niveau du jeu. Celui-ci est d’ailleurs beaucoup plus fluide, Joshua atteint même 30 fps dans certaines scènes.

Joshua utilise le langage de programmation Rust pour ce projet. Comme il a réécrit tout le code, il ne s’agit pas d’un portage à proprement parler, mais d’un remake développé pour la GBA. Au vu des limitations techniques du matériel, le terme « demake » est donc plus adapté.

Il est incroyablement difficile de développer à partir de zéro un jeu 3D aussi complexe pour la petite console portable de Nintendo. Le matériel présente énormément de limites que Joshua a été forcé de contourner dans son codage. Par exemple, le mode de calcul de la GBA ne comprend que les nombres entiers, et pas les nombres à virgule flottante. La console portable ne possède par ailleurs pas de matériel 3D dédié, il faut donc tout reproduire pixel par pixel, comme c’était le cas pour Doom et Quake :

La RAM trop légère (32 Ko de mémoire rapide, 256 Ko de mémoire lente) et la faible puissance de calcul ont aussi causé quelques problèmes : « La GBA est plusieurs milliers de fois plus lente qu’un ordinateur portable moyen d’aujourd’hui ».

Joshua doit son expertise sur la GBA à plusieurs développeurs pionniers : « J’aimerais remercier des projets comme OpenLara et différentes personnes comme 3DSage d’avoir montré à tout le monde ce qu’il est possible de faire sur la GBA avec les connaissances actuelles ».

En dépit de ses limites, la GBA révèle des forces insoupçonnées.
En dépit de ses limites, la GBA révèle des forces insoupçonnées.
Source : Shutterstock

Malgré ces limites, Joshua accomplit des progrès significatifs en un temps record. Environ un mois après le début du projet, Mario court à travers le monde avec de vraies animations. Le plombier moustachu a également réappris certains mouvements du jeu original : plongeon, salto avant et arrière, saut en longueur, triple saut, on dirait le vrai jeu ! Le taux de rafraîchissement est lui aussi plus stable et plus élevé grâce à diverses optimisations en arrière-plan.

Point sur la situation actuelle et perspectives d’avenir

Joshua a continué de travailler sur d’autres contenus pour cette dernière mise à jour. On peut désormais collectionner les étoiles et les portes qui transportent le petit plombier d’un niveau à l’autre fonctionnent. Mario a appris d’autres mouvements (charge au sol, saut mural et glissade murale) ; les animations plus fluides et un jeu de caméra amélioré lui permettent de se déplacer de façon beaucoup plus naturelle dans son environnement.

Mais Joshua n’est pas tout à fait satisfait : « La prochaine étape, c’est d’ajouter des éléments plus complexes comme les ennemis. Reste à voir si cela rentre dans le budget ».

Pour pouvoir intégrer plus d’éléments, Joshua travaille avec acharnement à l’optimisation du jeu. La modélisation de Mario ne contient pour l’instant que 134 triangles, contre 764 (!) pour l’original sur N64. Joshua m’a assuré que la version actuelle de son jeu fonctionne réellement sur une GBA originelle : « C’est encore mieux sur la GBA parce que le LCD a un effet de ''ghosting'' qui fait que les images se fondent les unes dans les autres. Tout s’enchaîne de façon beaucoup plus fluide ».

Voilà à quoi ressemble le Mario modélisé par Joshua.
Voilà à quoi ressemble le Mario modélisé par Joshua.
Source : Joshua Barretto

Le moddeur ne souhaite pas reproduire l’intégralité de Super Mario 64 et tous ses niveaux : « Mon objectif est simplement de montrer que c’est faisable ». Si cela fonctionne, il envisage plutôt de coder un tout nouveau jeu 3D pour la GBA : « Je suis un grand fan des jeux en monde ouvert et je pense qu’un jeu de ce genre montrerait remarquablement ce dont la console est capable lorsqu’on l’exploite à fond ».

Plus particulièrement intrigué par les moteurs voxel, Joshua se voit bien plancher sur un demake de Minecraft pour la GBA. Il possède déjà une certaine expérience des mondes de jeu ouverts en voxels, puisqu’il travaille depuis longtemps sur le RPG Veloren disponible gratuitement sur Windows, Mac et Linux.

« Veloren » est assez beau.
« Veloren » est assez beau.
Source : Joshua Barretto

Il y a toutefois peu de chances que Joshua publie le projet Super Mario 64 : « Nintendo protège férocement sa propriété intellectuelle, je ne peux donc pas diffuser ce qui leur appartient. Mais je vais nettoyer le code source et le partager pour que d’autres puissent en apprendre quelque chose voire compilent le jeu pour y jouer eux-mêmes ».

Photo d’en-tête : Joshua Barretto

Cet article plaît à 46 personne(s)


Ces articles pourraient aussi vous intéresser

  • En coulisse

    La DS : la console portable la plus vendue de tous les temps

    par Cassie Mammone

  • En coulisse

    Jeux de plateforme en 3D : essor et déclin

    par Cassie Mammone

  • En coulisse

    Joyeux anniversaire « Mario Kart 8 » ! Le meilleur Mario Kart de tous les temps fête ses dix ans

    par Domagoj Belancic

Commentaire(s)

Avatar