Nous mettons nos archives à disposition mais la mise en page n’est pas encore corrigée

Tests : NESGBSNESN64GBANGCDSWii3DSWii U

Satoru Iwata et ses exploits de programmeur

Le

par

Satoru Iwata est probablement une des figures les plus connues de Nintendo, voire de l’industrie du jeu vidéo elle-même. Ancien PDG de Nintendo, papa de la Wii et de la DS, le bonhomme s’est en plus pas mal montré dans les Nintendo Directs, où il présentait personnellement les annonces de jeux et se mettait régulièrement en scène de manière burlesque avec d’autres membres du staff de Nintendo. Mais on sait moins, en revanche, ce qu’il a fait avant de devenir PDG de Nintendo. Et croyez-moi, ça vaut le coup d’œil. La plupart des sites de jeu vidéo en ont pas mal parlé au moment de sa mort, donc j’ai probablement un peu de retard, mais ce coup-ci, c’est à moi de m’amuser.

Le monde merveilleux de la programmation informatique


Je sais que ça ressemble à du chinois pour une bonne majorité de gens, mais la programmation informatique suit les mêmes conventions que n’importe quel autre langage : il y a plusieurs manières de formuler une même idée, de celle dans un français impeccable soutenu aux atroces fote d’ortograf qui font saigner les oreilles même à l’oral.

Et bien, c’est pareil en informatique : certains codent leurs fonctionnalités avec le cul. Par exemple, en 2010, l’antivirus McAfee a identifié comme virus… un fichier capital de Windows, foutant en l’air l’ordinateur d’un nombre important de gens qui utilisaient cet antivirus.

On a aussi des antivirus comme Norton, qui dans un éclair de stupidité (ou de lucidité, selon votre cynisme sur la question), se reconnaissent eux-mêmes comme des virus et tentent de se supprimer. Ce serait simplement drôle si lesdits antivirus n’étaient pas conçus avec des défenses pour empêcher des programmes tiers de les supprimer et rentrent donc en conflit avec eux-même, bloquant au passage l’ordinateur et demandant des procédures complexes pour être débloqués.



Ici, toute la tour est éclairée de façon réaliste, alors que le lion rouge (le petit point rouge vers le bas de l’écran) est éclairé en cel-shading.

Dans un genre différent, plus proche du jeu vidéo, le tristement célèbre Sonic the Hedgehog 2006 souffre d’atroces temps de chargement… parce que les devs ont programmé le jeu pour qu’il charge l’intégralité du niveau chaque fois qu’on a besoin de faire / voir quelque chose dans ledit niveau… Oui, même pour une cinématique de 3 secondes ou pour un boss dont la salle fait 10% du niveau, le jeu charge le niveau entier, occasionnant des temps de chargement inutilement longs et extrêmement mal placés.

Pourquoi je vous parle de tout ça alors que c’est sensé être un article sur Iwata ?
Eh bien parce que de l’autre coté de l’échelle, il y a les gens qui programment dans un langage plus qu’impeccable. Des gens qui sont capables de faire des trucs qui sont censés être impossibles à réaliser avec le matériel à leur disposition.

Par exemple, le jeu Rollercoaster Tycoon est incroyablement fluide même sur de très vieilles machines, alors qu’il gère une chiée d’informations sur toutes les variables du jeu. Le secret ? Le jeu est codé intégralement en assembleur. Je vous passe les détails, mais l’assembleur, c’est le niveau de langage juste au-dessus des purs 0 et 1 qui composent nos ordinateurs. Programmer un jeu dans ce langage exige de faire quelque chose d’extrêmement optimisé si on veut pas se perdre soi-même dans son code et rendre un truc qui fonctionne.

Similaire et chez Nintendo, Xenoblade Chronicles X est apparemment plus grand que Fallout 4, The Witcher 3 et Skyrim réunis. Et là où ces trois là avaient un bon paquet de temps de chargement sur les machines moyennes de leur époque respective (qui étaient déjà toutes plus puissantes que la Wii U, soyons clair), Xenoblade X n’a qu’un seul temps de chargement au début du jeu d’une quinzaine de secondes, plus 5 à 10 secondes en cas de téléportation éloignée. En dehors de ça, le jeu charge son immense univers et tout ce qu’il contient d’une seule traite. Pour une machine décriée pour ses performances comme la Wii U, c’est un tour de force qui mérite d’être salué (circonstances aggravantes pour Skyrim qui, sur du matériel supérieur, avec de moins bons graphismes s’il est foutu en basse définition, a toujours bien plus de chargements que X).

On peut aussi noter Super Smash Bros. Brawl et Zelda : The Wind Waker, qui, sans rentrer dans les détails fastidieux, utilisent un type précis d’éclairage pour 99% de leur contenu et utilisent un autre éclairage précis pour certains éléments… Sur des machines qui n’étaient pas en mesure de gérer deux types d’éclairage.

Et on en arrive enfin au lien avec Iwata. C’est que ce mec était un génie de la programmation (c’était pas DU TOUT ton titre mec). Et dans cet article, je vous propose de découvrir ses différentes réussites.

Ton intro était beaucoup trop longue, mec

UNDERSTANDING INTENSIFIES

Je m’en fous, quand on aime on ne compte pas.

Avant de commencer l’énumération des jeux à proprement parler, il y a une anecdote que j’aimerais partager avec vous et qui reflète bien le genre de personne qu’était Iwata. Lorsqu’il était jeune et qu’il a eu son premier ordinateur, il a commencé à vouloir comprendre son fonctionnement et, comme il n’avait pas mieux sous la main, il a commencé à recopier des memory dumps de son PC pour comprendre comment ça marchait. À UNE ÉPOQUE OU L’IMPRIMANTE N’EXISTAIT PAS. Et vous voulez la blague dans l’histoire ? Quand il est entré chez Nintendo, la NES (enfin, la Famicom au Japon) utilisait le même processeur que son ordinateur. Ce qui fait qu’il est littéralement arrivé en connaissant mieux le fonctionnement de la NES que n’importe qui d’autre chez Nintendo. Okaaaaaaaaaaaaaaay, tout va bien se passer mec. Bon, Maintenant, commençons vraiment la liste, du plus simple au plus ahurissant.

1. Il a débuggé Melee

I SAVED MELEE, PLEASE UNDERSTAND.

Petite remise en contexte : nous sommes 3 semaines avant la date de la sortie de Super Smash Bros. Melee, ce jeu qui deviendra le Street Fighter 2 des joueurs de Smash Bros., et qui est encore joué en tournoi aujourd’hui. 3 semaines avant, donc, et le jeu souffre toujours d’une multitude de bugs et autres problèmes. Et comme à l’époque, on ne peut pas simplement publier un patch correctif à télécharger et balancer le jeu tel quel, Nintendo a le choix entre retarder la sortie du jeu et le sortir tel quel. Sauf qu’en fait, il y a une troisième option : demander à Satoru Iwata de débugger le jeu. Oui. A lui tout seul, en trois semaines, il a entièrement débuggé Melee. Oui. Sans lui, Melee ne serait peut-être pas ce jeu extraordinaire qui continue de faire de l’ombre à ses successeurs plus de dix ans après.

2. Il a transposé les combats de Pokémon Rouge à Pokémon Stadium



Nous sommes en 1998. Après le succès de la première génération de Pokémon, il est question de créer Pokémon Stadium sur N64. Sauf que les mecs chargé du jeu ne sont pas les employé habituels de Game Freaks, qui planchent encore sur les versions Or et Argent. Ils envoient donc le code source des épisodes GB aux chargés de la création du jeu. Sauf qu’il y a eu un petit problème. S’ils ont bien envoyé le code des versions Rouge / Verte à l’équipe, ils ont complètement oublié de fournir une quelconque documentation technique… Vous savez, le genre de document qui est vital pour espérer que des gens qui découvrent votre code comprennent ce que vous avez voulu faire, à quoi sert tel bout, à quoi sert ceci…

Allez. Challenge : vous portez ce code sur N64. Vous ne pouvez évidemment pas faire un simple copier-coller par la différence entre les deux consoles. Et vous devez vous plonger dans le code source et trouver par vous-mêmes comment le porter.

C’est à ce moment là qu’une personne entre dans la pièce en disant « CHALLENGE ACCEPTED. ». Devinez qui. Vous savez, j’suis censé être en train d’écrire un dossier sur cette personne, si ça peut vous aider.
Oui, Iwata a transposé seul le système de combat de pokémon. EN MOINS DE DEUX SEMAINES. À L’EPOQUE OÙ IL ÉTAIT PRÉSIDENT DE HAL LABORATORY. PARCE QUE POURQUOI PAS.

3. Il a compressé Pokémon Or et Argent


La limite de taille des cartouches a toujours été un défi pour la série Pokémon. Originellement, la première génération remplissait la cartouche à ras bord avec seulement 150 Pokémons. Ce n’est qu’après avoir retiré les outils de débug, inutiles aux joueurs, que les développeurs ont réalisé qu’ils avaient juste assez de place pour foutre un 151ème Pokémon. Ce qui explique aussi pourquoi Mew a toujours été si caché dans le jeu, ne pouvant être obtenu que sur la version verte en ayant les 150 autres, et uniquement par corruption mémoire dans les autres versions (dont celles qui sont arrivés chez nous). Les devs n’avaient simplement plus le temps, ni la place, d’implémenter le Pokémon dans le jeu à proprement parler.

Au temps des épisodes DS, on peut constater que les mêmes problèmes sont toujours là : Perle, Diamant, Platine, Heartgold et Soulsilver font tous 256 Mo, ce qui était la taille maximale d’une cartouche à l’époque. Cette limite a ensuite été rehaussée à 512 Mo pour permettre à un jeu d’exister : Pokémon Noir / Blanc 2.

Bref, Pokémon a toujours été un bouffeur de taille. Alors quand est venu le tour des versions Or et Argent, ça a été la cata. Les développeurs avaient déjà rempli la cartouche à ras bord alors que seule la région de Johto était implémentée, et encore de manière incomplète à ce moment-là.

Puis Iwata est passé par là et a compressé le jeu.

Oui. C’est la raison précise pour laquelle il est possible de se rendre à Kanto dans les versions Or, Crystal et Argent, seuls épisodes de la série à permettre ça. Parce que quand Iwata en a eu fini avec l’optimisation du code, il restait tellement de place que les devs ont réussi à inclure Kanto dans son intégralité (moins deux endroits et au coût d’une région plus « vide » que dans l’original). RESPECT.

4.Il a fait de Pokémon ce qu’il est aujourd’hui

Nous sommes en 1996. Pokémon a commencé à prendre forme en 1990 et il a fallu six ans pour sortir les premiers jeux. Les mecs de Game Freaks n’ont qu’une envie, se mettre activement à la deuxième génération de Pokémon, prévue à l’époque pour être la dernière, qui est déjà retardée par les versions Bleue et Jaune, sortis après les deux premiers jeux. À l’époque, localiser le jeu en dehors du japon est un rêve insensé auquel l’équipe ne peut se consacrer. Pourtant, le PDG de l’époque, Hiroshi Yamauchi, donne comme directive de localiser la première génération, tout en se magnant de sortir Or et Argent… Ce qui sur le coup ressemble à une blague : les deux objectifs s’excluent mutuellement, et l’équipe décide d’en rester à son objectif initial.

C’est lui qui, aidé seulement de Teruki Murakawa, a réalisé tout le travail de modification et d’adaptation nécessaire à une régionalisation des versions Bleue et Rouge. Oui. C’est Iwata qui a fait de Pokémon un phénomène mondial. C’est à lui que nous devons ce phénomène de notre enfance et ces moments de joueurs, tel que les échanges dans les cours de récré et la course aux 150. Je rappelle qu’à l’époque, il était alors PDG de HAL Laboratory, et avait donc autre chose à faire que son travail de développeur. Respect.

Dans la même veine, il a été révélé à sa mort qu’il avait été impliqué de manière similaire dans le processus de traduction anglaise de Dragon Warrior, le premier Dragon Quest. On a cependant peu de détails sur le sujet, la source étant un tweet du créateur de Dragon Quest à sa mort.

5. Il a sauvé EarthBound


Probablement l’un de ses plus grands exploits de programmeur, et probablement celui qui a le goût le plus amer.
À l’époque, les gars à l’origine de ce qui deviendra la série Mother traversent une période difficile. Leur second jeu, EarthBound, connaît de grosses difficultés : le code est ingérable, inachevé, rempli de bugs, le jeu court même le risque d’être annulé. ET PUIS IWATA EST VENU FILER UN COUP DE MAIN. Après avoir regardé le code, voici plus ou moins ce qu’il leur a dit : « Messieurs, ne le prenez pas pour vous, si on continue avec votre code, on en a pour encore au moins deux ans, et votre jeu se sera probablement fait annuler entre temps. Mais si vous me laissez le ré-encoder de zéro et faire le boulot, il peut sortir dans six mois. »

Et c’est ce qui s’est passé. Il a effectivement ré-encodé à lui tout seul EarthBound de manière fonctionnelle en seulement six mois, sauvant la série au passage. okaaaaaaaaaaaaaaaaaaaay.

Mais la médaille a un revers, car c’est précisément ce travail d’orfèvre qu’il a réalisé qui rend si difficile la fantrad (et probablement la traduction officielle) d’EarthBound dans diverses langues, même aujourd’hui.

En gros, le jeu a été codé dans un langage extrêmement avancé. Je vous passe les termes techniques, mais disons que le jeu est codé dans un langage doté de fonctionnalités qui le rendent similaires à un processeur. À un point où, si on altérait correctement le code du système de défilement de texte, on pourrait faire un émulateur avec. Oui, on pourrait émuler EarthBound dans EarthBound en modifiant son défilement de texte. Ce serait bien évidemment lent comme un embouteillage sur le périph en raison des limitations du support, mais on pourrait.





Le problème, c’est que ce code est aussi incroyablement complexe. Tenez, voici ci-dessous le code nécessaire pour écrire ces deux lignes de textes montrées ci-contre :

[GOSUB C69082][FLAGON 00B][1F 41 05][1F EB 03 06][1F 15 03 00 0E 01 01][1F 61][1F E7 03 00][1F F3 03 00 03][DELAY 3C][1F F4 03][LINE][OPENWIN 01]@Ah![DELAY 14] Here’s the problem, and it’s not too tough to fix.[PAUSE][LINE]@Hang on for a second or two…[PAUSE][CLOSEALLWIN][DELAY 1E][1F EA 03 00][1F 61][1F 00 00 B3][1F F1 E2 01 10 01][1F 61][1F E6 E2 01][1F 07 02][DELAY 3C][1F 03][OPENWIN 01]@There![PAUSE][LINE]@That should do it![PAUSE][LINE]@Now, if [GOSUB C91FBA] board,[DELAY 0F] the Sky Runner will take [GOSUB C91FDB][PAUSE][LINE]@back to Winters.[PAUSE][LINE]@With Dr. Andonuts’ help,[DELAY 0F] I can modify the machine to fly to Summers.[PAUSE][LINE]@…If Dad, I mean Dr. Andonuts,[PAUSE][LINE]@is not available, I’ll have to figure it out by myself.[PAUSE][LINE]@Anyway, let’s go back to the lab in Winters.[PAUSE][LINE]@…That’s it…[DELAY 14][LINE] Go, machine,[DELAY 0F] go![PAUSE][CLOSEALLWIN][1F 15 6A 00 0F 01 01][DELAY 01][1F EF 6A 00][1F E8 FF][1F 61][1F EB FF 06][FLAGON 28F][GOSUB C7DD7D][1F ED][1F E5 FF][1F E9 E2 01][1F 61][DELAY 0F][1F 1E E0 01 06][DELAY 5A][1F 15 D1 00 A2 00 FF][1F 15 E6 00 A5 00 FF][1F 21 C2][1F EF E6 00][1F E8 FF][DELAY 01][1F 61][1F ED][1F 15 D1 00 96 00 FF][1F 21 BB][1F EF D1 00][1F 61][1F ED][1F 15 D1 00 9E 00 FF][1F 15 E6 00 A0 00 FF][1F 21 C0][1F EF E6 00][1F 61][1F ED][1F 15 D1 00 97 00 FF][1F 21 BB][1F EF D1 00][1F 61][1F ED][1F 15 D1 00 9A 00 FF][1F 15 E6 00 9C 00 FF][1F 21 BE][1F EF E6 00][1F 61][1F ED][1F 15 D1 00 98 00 FF][1F 21 BB][1F EF D1 00][1F 61][1F ED][1F 15 D1 00 A6 00 FF][1F 21 BA][1F EF D1 00][1F 61][1F ED][FLAGON 26D][1F 21 DA][1F 17 6F 02 A7 00 01][DELAY 64][1F 17 6D 02 A8 00 01][1F 61][FLAGOFF 28F][GOSUB C7DD7D][1F 15 6A 00 A9 00 01][DELAY 01][1F EF 6A 00][1F EC FF 01][1F 61][1F ED][1F E5 FF][1F F1 69 02 8D 00][1F 61][1F E6 67 02][1F E6 69 02][1F E6 6A 02][GOSUB C6CB97][1F F1 6A 02 8E 00][1F 61][1F E6 6A 02][GOSUB C6CC31][1F F1 6A 02 90 00][1F 61][1F F1 69 02 8F 00][1F 61][19 26 06][FLAGOFF 26D][FLAGOFF 2EC][FLAGOFF 030][FLAGOFF 305][FLAGON 276][FLAGOFF 00B][1F 41 06][1F E8 FF][END]


I SAVED MELEE, EARTHBOUND, AND I MADE POKEMON THE GLOBAL PHENOMENON HE NOW IS. PLEASE UNDERSTAND, HATERS – ce que devrait être l’épitaphe de sa pierre tombale.

Et c’est ce qui fait que vingt ans après, les romhackeurs n’ont toujours pas fini de découvrir à quoi servent tous les codes de contrôles et ont mis tellement de temps à faire une fantrad fr du jeu.

Et le problème est sans doute le même pour Nintendo lui-même : il est déjà très improbable que des documents ou le code source du jeu aient été conservés sur une telle durée. Square Enix a par exemple dû entièrement ré-encoder Kingdom Hearts 1 à partir d’une version commerciale lorsqu’ils ont créé leur remake PS3 parce que le code source n’avait pas été conservé. Et on parle d’une période de temps de seulement 5 à 6 ans, alors comparé à EarthBound / aujourd’hui…

S’ajoute à ça le fait que, même s’ils avaient encore le code source, la seule personne (ou l’une des seules, en tout cas) qui savait vraiment comment marchait ce langage est morte (et avait probablement oublié après toutes ces années). Je comprends tout à fait qu’absolument personne n’ait eu envie chez Nintendo de se fouler à sortir une VF du jeu. Si EarthBound doit un jour sortir traduit officiellement, il est plus que probable que ce sera à l’occasion d’un remake du jeu, où le jeu sera donc programmé de manière beaucoup plus simple. Il est très fortement improbable que Nintendo décide de concentrer une main-d’œuvre importante pour traduire cet enfer simplement pour faire plaisir aux quelques fans de la série qui ne veulent pas faire le jeu en anglais.

Mais bon, c’était le prix à payer pour sauver la série.

Je le dis sans hésiter : Satoru Iwata, vous étiez un grand homme. On peut reprocher plein de choses à Nintendo, mais on ne pourra jamais vous reprocher d’être un incompétent qui ne donnait pas tout pour son boulot. Huge respect.