Préface du rédac’ chef (G. Verdin) : Après le récit passionnant de la conception de Maze, l’ancêtre des FPS, sseb22 nous propose de revenir (un peu) plus près de nous pour évoquer le portage de Donkey Kong (1981) sur Atari 2600. Une conversion comme il y en a eu tant pourrait-on se dire, sauf que premièrement, c’est le légendaire Garry Kitchen (Keystone Kapers) qui s’y colle, deuxièmement, porter le classique séminal de Nintendo sur la vénérable VCS tient de l’exploit et, troisièmement, cette adaptation a été éditée par Coleco… À l’heure où les gamers se plaignent que les exclusivités ne veulent plus rien dire, cette histoire nous rappelle qu’on n’a pas attendu Microsoft pour voir un constructeur sortir un jeu dont il a acquis les droits sur une console rivale, quand c’est plus rentable que de le garder pour soi ! En outre, cela fait un joli pont avec l’une des mes toutes premières chroniques sur le Mag, au sujet de l’obtention de la licence par Coleco.
À quoi j’ai passé mon été 1982
La création de Donkey Kong sur Atari 2600
Par Garry Kitchen, publié sur The Startup le 28 octobre 2020
La vie est étrange.
À l’été 1982, j’ai passé environ trois mois à créer une liste de 4 096 nombres, vérifiant méticuleusement que chaque nombre avait la bonne valeur et était à la bonne place dans la liste. Quand j’eus fini, la seule preuve tangible de mon travail était cette longue liste de nombres.
Quand la liste fut complète, après presque 1 000 heures de travail, l’ancienne Connecticut Leather Company¹ assembla les nombres dans le bon ordre au sein d’une puce mémoire et d’un boîtier en plastique et vendit cela dans des magasins à travers le pays. Et des gens l’ont vraiment achetée.
La liste de nombres que j’ai créée était connue, auprès du public, comme la version Atari 2600 du jeu d’arcade à succès Donkey Kong. Pour créer cette liste, j’ai écrit un programme pour ordinateur en langage assembleur pour 6502 en environ trois mois et en dormant peu. Devant l’énorme pression pour finaliser le code à temps pour les ventes de Noël, j’ai terminé le jeu avec un crunch de 72 heures d’affilée à mon bureau, après lesquelles on m’a dit que je ressemblais à un zombie.
Voici l’histoire de la création de cette liste.
…
Pour rappel, Donkey Kong de Nintendo (le jeu d’arcade) a marqué une avancée dans le game design et a été une des bornes d’arcade qui a rencontré le plus de succès au début des années 1980. Soyons clairs : je n’ai pas inventé Donkey Kong. Le jeu a été conçu par le légendaire Shigeru Miyamoto qui est depuis devenu l’un des concepteurs de jeux vidéo les plus reconnus de l’histoire. C’était le premier jeu incluant Mario qui a ensuite connu gloire et fortune dans la série de jeux Super Mario Bros. (même si, dans Donkey Kong, il n’était connu que par le sobriquet de Jumpman). Donkey Kong fut l’un des premiers jeux vidéo à utiliser des animations et une narration proches de celles des dessins animés afin de plonger le joueur dans l’action. Mon rôle s’est limité à créer une version Atari 2600 du chef d’œuvre de Miyamoto (NdR : cette précision semblera superflue pour vous mais beaucoup de gens attribuent encore Pac-Man voire Tetris à Atari…).
L’action de Donkey Kong se situe dans un chantier de construction². Pauline, la demoiselle en détresse et petite amie de Mario, a été enlevée par un grand singe têtu (NdT : ou « stubborn ape »³ en anglais). En tant que Mario, le héros intrépide, votre travail consiste à sauver la princesse des griffes de l’impertinent primate. La version arcade du jeu est visible ci-dessous :
Dans le premier niveau du jeu, le but est de courir et grimper sur les poutres métalliques de l’immeuble en construction pour atteindre Pauline (remarquez ladite demoiselle en détresse s’écriant « à l’aide ! » en haut de l’écran). Le joueur contrôle Mario avec un joystick et un bouton. Le joystick permet de déplacer Mario vers le haut, le bas, la droite et la gauche et le bouton de sauter. Pour empêcher Mario d’atteindre Pauline, le grand singe lance un flot continu de tonneaux le long des poutres inclinées pour entraver sa progression.
Si Mario arrive à éviter les tonneaux et atteindre le haut de l’immeuble, il attrape Pauline et passe au niveau 2. Le jeu d’arcade inclut quatre niveaux en tout, avec des défis de gameplay et des échappatoires similaires dans différentes parties du chantier.
En 1982, Donkey Kong était l’un des plus gros hits d’arcade, aspirant les pièces de monnaie à un rythme record. Même les gens qui ne jouaient pas aux jeux vidéo en avaient entendu parler.
…
Au même moment, le marché du jeu vidéo de salon était au milieu d’une véritable poussée de croissance. [Dix ans plus tôt], au début des années 1970, le gadget électronique typique se connectant à la télévision familiale permettait [uniquement] de jouer à un ou plusieurs jeux avec une raquette et une balle façon Pong.
Tous les jeux de la sélection se ressemblaient à peu près mais leur intitulé était choisi astucieusement (tennis, ping-pong, hockey…) pour faire croire que vous jouiez à autre chose que Pong. Une fois que vous vous ennuyiez avec ces jeux, la machine était reléguée au placard (ou finissait à la poubelle).
En 1977, l’Atari Video Computer System (la VCS ou la 2600) a été commercialisée. La 2600 a fait une belle incursion sur le marché des jeux vidéo de salon lors de ses deux premières années de commercialisation malgré un prix plus élevé que ses prédécesseurs grâce, entre autres, à ses cartouches de jeux interchangeables. Pouvoir acheter de nouveaux jeux sous la forme de cartouches allongea grandement la durée de vie de la machine et permit aux familles d’essayer quelque chose de nouveau lorsqu’elles avaient eu assez de jouer et rejouer aux jeux qu’elles possédaient.
Cependant, l’événement qui propulsa les ventes de l’Atari 2600 dans la stratosphère fut le lancement de la cartouche de jeu Space Invaders en 1980. Space Invaders, un énorme succès d’arcade conçu par Tomohiro Nishikado, de la société japonaise Taito, fut un des premiers jeux à licence d’un méga hit d’arcade sur le marché des jeux vidéo de salon. Quand il débarqua sur l’Atari, non seulement le jeu se vendit comme des petits pains mais la console quadrupla ses ventes du jour au lendemain car une foule de joueurs voulaient cette machine pour jouer au jeu.
L’industrie apprit une importante leçon. Obtenir une licence pour un jeu d’arcade à succès et le porter sur une console de salon avait le potentiel de se transformer en poule aux œufs d’or.
…
Et maintenant, revenons à ma version de l’histoire. Au milieu des années 1970, alors étudiant dans le New Jersey, j’avais la chance d’avoir un travail à temps partiel dans une société d’électronique composée de quatre personnes. Son cœur de métier était la conception et l’ingénierie de gadgets comme des calculatrices, des horloges numériques et, finalement, des jouets électroniques. Étant tout en bas de l’échelle, mes premières responsabilités consistaient surtout à aller chercher à déjeuner pour les ingénieurs.
Avec le temps, et dans une société avec des gens brillants mais des ressources limitées et la mauvaise habitude de trop promettre, je fus obligé d’apprendre rapidement sur le tas, principalement car j’étais sans cesse jeté dans l’arène. Ce n’était certes pas facile mais incroyablement gratifiant et, surtout, déterminant dans mon futur choix de carrière.
En 1979/1980, même si je n’avais pas encore décroché mon diplôme universitaire, j’étais un ingénieur à part entière et autodidacte. À ce moment-là, la société dont j’avais été le quatrième employé avait bien grandi et avait concentré ses efforts sur les jouets électroniques portables (une histoire pour un autre article). J’adorais travailler sur les jouets électroniques mais j’étais aussi fasciné par les succès commerciaux de la console Atari. Avec la bénédiction de mes supérieurs, j’achetai une machine Atari et la désossai pour comprendre comment elle fonctionnait, un processus appelé rétro-ingénierie. Peu après, je concevais et programmais mon premier jeu Atari 2600 (et, en fait, mon premier jeu vidéo tout court), Space Jockey, sorti en 1982.
Après cela, je décidai de tourner la page de ce premier travail d’ingénieur. Ma carrière était florissante et il était temps pour moi de trouver quelque chose de plus gratifiant.
…
En mai 1982, en tant qu’indépendant, on m’avait proposé un contrat pour le développement d’une version de Donkey Kong compatible avec l’Atari 2600. Coleco (la Connecticut Leather Company susmentionnée), voyant le succès commercial de la version console de salon de Space Invaders sur l’Atari, alla voir Nintendo et dégota les droits exclusifs (NdR : cf. cette chronique) du plus célèbre jeu d’arcade au monde à cette époque, pour console de salon. Même si ces droits avaient été obtenus principalement pour la ColecoVision, une concurrente de l’Atari 2600 qui allait bientôt sortir, il aurait été suicidaire pour Coleco de ne pas sortir une version VCS qui avait la plus grande part du marché des consoles de salon.
Heureusement pour moi, peu d’ingénieurs avaient le savoir-faire pour écrire un jeu Atari. Il y avait les employés d’Atari (très occupés et indisponibles), les game designers chez Activision (créée par des ex-employés d’Atari, ils étaient complètement occupés et donc non disponibles) et pas beaucoup d’autres. Quant à moi, j’étais sans emploi depuis peu, volontaire et capable, donc j’ai accepté le projet.
Ça n’allait pas être une tâche facile, comme je l’explique plus bas. Je connaissais bien le jeu d’arcade et son gameplay, ses animations et ses graphismes novateurs. Mais il fallait tout de même ici créer une version commercialement viable d’une borne d’arcade à $3 000 sur une cartouche Atari à $30.
Les défis étaient nombreux, notamment :
- J’avais environ trois mois pour l’écrire. Je n’aurais pas dit non à un an.
- J’avais à disposition 4 096 octets de mémoire (NdT : pour info, ça correspond à moins d’une seconde de musique compressée en MP3) pour stocker l’intégralité du code, des graphismes et des effets sonores. En outre, je n’avais que 128 octets de RAM pour suivre ce qui se passait (note de l’auteur : pas des kilooctets mais bien des octets). Le jeu était programmé pour tourner sur un microprocesseur 8 bits à 1 MHz. Ces chiffres mettraient à genoux presque n’importe quel programmeur chevronné.
- En plus des contraintes ci-dessus, la console sur laquelle je programmais, l’Atari 2600, était sévèrement (mais vraiment sévèrement) limitée d’un point de vue technique (ce qui mériterait une discussion à part entière), surtout quand on la compare à une borne d’arcade à $3 000. L’Atari 2600 était initialement conçue pour faire fonctionner deux jeux – Pong et Combat. Par conséquent, elle était limitée, pour l’affichage, à deux (2) sprites (des objets mouvants et pouvant être animés) plus une (1) balle et deux (2) missiles. La balle et les missiles étaient de simples objets carrés ou rectangulaires servant de projectiles tandis que la taille des deux sprites faisait 8 pixels avec la possibilité d’avoir quelques étapes d’animation rudimentaire.
Pong comprenait une raquette à gauche, une raquette à droite et une balle. Combat avait le tank du Joueur 1, celui du Joueur 2 et deux missiles, un pour chaque joueur. Atari était parti du principe, en concevant la 2600, que tous les futurs jeux comprendraient deux sprites qui bougent et jusqu’à trois projectiles. C’était en contraste total avec la borne Donkey Kong qui était capable d’afficher « 128 sprites de 16×16 pixels chacun sur l’avant-plan ».
En plus de la limitation du nombre d’objets à l’écran, à cause de contraintes mémoire, l’Atari 2600 ne pouvait afficher un décor de fond seulement sur la moitié de l’écran. En d’autres termes, cela veut dire que la moitié droite de l’écran ne pouvait afficher qu’une copie ou un reflet de la moitié gauche de l’écran. Comme les célèbres poutres inclinées de Donkey Kong ne sont, par nature, pas symétriques (ce n’est ni une copie ni un reflet « gauche-droite »), j’ai dû trouver un moyen pour contourner les contraintes matérielles et arriver à faire des rampes inclinées.
Pour écrire le jeu, j’ai développé un programme dans en langage assembleur du 6502 (NdT : le CPU de la 2600 est un MOS 6507 qui est en fait un 6502 repackagé). Le programme est ensuite traité par un assembleur, un outil fait pour ordinateur, qui tourne sur mon ordinateur Apple ][. En sortie de l’assembleur, on obtient une liste de 4 096 nombres, chacun ayant une valeur entre 0 et 255 (à cause des mystères du système de numération binaire, que j’expliquerai peut-être plus tard dans un autre article).
En plus de l’écriture du programme, j’ai aussi dû créer les graphismes qui seraient affichés sur l’écran de la télévision. À l’époque, il n’y avait pas d’outil pour créer de tels graphismes, j’ai donc colorié les cases d’un papier millimétré pour créer le décor, chacun des personnages comme Mario et les autres objets tels que le marteau et les chiffres utilisés pour afficher le score. Ci-dessous, l’image à gauche montre Mario dans sa position stationnaire, comptant 8 pixels (i.e. pixel = picture element, le composant élémentaire de l’image) sur chaque ligne graphique et 18 lignes en tout. L’image à droite est une vue rapprochée de la tête de Mario, montrant que chaque pixel est d’une seule couleur comme le dessin sur le papier millimétré de 8 cases de large. Comme l’Atari est limité à une couleur par ligne (et par personnage), remarquez comment Mario est composé de 18 lignes ayant chacune sa couleur (NdT : le noir ne compte pas car c’est la couleur du décor de fond).
Une fois les graphismes dessinés sur le papier millimétré, je devais les convertir en nombres (oui, on parle à nouveau de cette liste de 4 096 nombres), chaque ligne de Mario demandant un nombre pour l’agencement des pixels et un second nombre pour la couleur. C’est ainsi que l’image de ce Mario se tenant debout, telle qu’on la voit ci-dessus, prend environ 36 (18 × 2) des 4 096 octets de données dont je disposais.
Même si je faisais la majorité de mon travail sur Apple ][, à un moment donné, il fallait que je rentre les 4 096 octets dans la machine d’Atari pour voir si le programme que j’avais écrit faisait ce que je lui demandais (ce que les programmes font rarement). Quand on écrit un programme de jeu, on écrit du code pendant environ une heure, assemble ce qu’on a écrit et enfin essaie le programme pour voir s’il fonctionne. Une façon de faire est de prendre la liste de nombres, appelée le binary, de le mettre dans une puce intégrée à une cartouche et à l’insérer dans l’Atari. Cette méthode, malheureusement, prend beaucoup de temps et on n’a pas envie de faire ça vingt fois par jour !
C’est pourquoi j’ai conçu une carte électronique personnalisée qui faisait directement la connexion entre la console Atari et l’ordinateur Apple ][. Une fois l’assemblage du programme fait, la carte permettait à l’Atari de lire instantanément le programme (comme si une cartouche était insérée dans la console). Ma carte d’interface Atari personnalisée est montrée ci-dessous :
Quand j’ai eu fini le jeu dans une version à peu près bonne (d’un point de vue fonctionnel et de gameplay), mon code faisait environ 1 200 octets de trop par rapport aux 4 096 alloués. À ce stade, je n’avais donc pas le choix, je devais commencer un processus d’optimisation de code ou, comme on avait l’habitude de l’appeler, de tailler de l’octet (NdR : cutting bytes). Pour tailler de l’octet, je devais regarder le programme, routine par routine, et trouver un moyen d’accomplir la même tâche mais avec un code plus léger (tout en préservant les fonctionnalités). Ça semble horrible mais c’est une des choses que je préfère faire.
Et enfin, j’avais fini une version du jeu.
L’image ci-dessous montre le premier niveau de la version Atari 2600 de Donkey Kong. Comme on peut le voir, j’ai créé les graphismes et écrit le code pour générer les poutres inclinées non symétriques (en violet), 4 tonneaux roulants (un seul est sur cet écran), Mario, Donkey Kong, Pauline, le marteau, l’afficheur des « vies » (le carré en haut à droite de l’image) et six (en tout) chiffres pour le score. Tous les objets que je viens de lister compte dans la limite de « deux (2) sprites plus une (balle) et deux (2) missiles » de l’Atari. Du code assembleur complexe et finement synchronisé a été utilisé pour duper la machine et lui faire afficher plusieurs copies du nombre limité d’objets disponibles (certainement l’objet d’une prochaine discussion).
Si j’ai fait du mieux possible sur une tâche presque impossible, le portage n’était pas parfait. À cause des contraintes de mémoire, je n’ai pu inclure que deux des quatre niveaux de la version arcade (comme je l’ai mentionné plus haut, il y a quatre écrans distincts sur la borne originelle). J’ai reçu beaucoup de plaintes au fil des années à propos de cette décision mais il était techniquement impossible d’ajouter quoi que ce soit de plus à moins que l’éditeur, Coleco, accepte de passer à une cartouche plus grosse, ce qui m’aurait donné 8 192 octets pour travailler. Étant donné le coût supplémentaire que cela aurait engendré, ils déclinèrent. Ceci étant, je me suis efforcé à faire le jeu le plus jouable et le plus agréable à regarder possible en tenant compte de toutes ces contraintes.
La cartouche Donkey Kong fut un énorme succès commercial pour Coleco. J’ai lu le rapport d’un analyste il y a plusieurs années disant que, alors que cette version de Donkey Kong sur Atari 2600 n’a été que l’un des 550 produits que Coleco a mis sur le marché cette année-là, il représenta 25% de leur chiffre d’affaires total. Une estimation prudente du chiffre d’affaires du jeu sur la seule année 1982 s’établit à 100 millions de dollars ce qui représente environ 269 millions de dollars en 2020, ou à peu près $65 670 pour chacun des 4 096 nombres de cette liste.
Je suis reconnaissant d’avoir été au bon endroit au bon moment et d’avoir pu travailler sur un jeu si emblématique. Ce fut certainement un effort éreintant mais je n’aurais échangé cette expérience pour rien au monde.
J’espère que vous avez apprécié cette histoire.
Notes de bas de page :
1 : La Connecticut Leather Company ? Avant de connaître gloire et fortune avec les « Cabbage Patch Dolls » (NdR : les poupées Patouf chez nous, cf. cette chronique) et les jeux vidéo, Coleco était connue en tant que « Connecticut Leather Company ».
2 : Pourquoi un chantier de construction, demandez-vous ? Bonne question. La réponse est simplement que ça marchait bien avec le gameplay. On voit pas mal de choses étranges dans les jeux vidéo pour cette raison et avec la fameuse réplique du game designer lambda : « C’est un jeu vidéo, on n’a pas besoin d’une raison ». Vous êtes-vous déjà demandé pourquoi, dans Angry Birds, vous utilisez un lance-pierre pour jeter des oiseaux sur des structures fabriquées par des cochons ? Pour la même raison.
3 : Stubborn Ape : Shigeru Miyamoto, le game designer, a qualifié, au début, le gorille de « grand singe têtu » (ou stubborn ape en anglais). Lors de la traduction du japonais à l’anglais, le mot « stubborn » a été traduit par « donkey » (NdT : « âne » en anglais) pour des raisons évidentes. C’est ainsi qu’est né le nom unique de « Donkey Kong ».