Comment Doom est arrivé sur Super Nintendo

image

Cet article est une traduction du chapitre du Game Engine Black Book: DOOM , une analyse détaillée de la structure interne de l'un des jeux de logiciels d'identification les plus influents. Ce chapitre parle du processus complexe de portage de DOOM sur Super Nintendo et du rôle clé que le développeur de Star Fox, Argonaut Games, y a joué .

Le livre a été écrit par l'auteur et programmeur Fabien Sanglar, et son texte intégral peut maintenant être acheté sous forme papier et numérique .

Le Super Nintendo Entertainment System est sorti au Japon en 1990, et l'année suivante, il est apparu aux États-Unis et en Europe.

Elle est devenue une descendante 16 bits de la NES 8 bits. Au Japon, Super Famicom (FAMIly COMputer) a connu un succès instantané et l'ensemble du lot initial de 300 000 appareils a été vendu en quelques heures. L'excitation était si forte que le gouvernement a demandé à Nintendo de sortir ses consoles le week-end afin d'éviter les troubles.

Pour garantir une console de jeu de haute qualité, Nintendo a créé un système de contrôle impitoyable. Les éditeurs n'avaient le droit de sortir que cinq jeux par an. Pour que cette règle s'applique, Nintendo se réserve le droit de fabriquer des cartouches uniquement pour elle-même; les éditeurs ont été contraints de les acheter à Nintendo. Afin que tout le monde respecte les règles (et aussi pour protéger les jeux contre la copie), avant de commencer le jeu, la console SNES a vérifié la présence d'une puce CIC. C'était un puissant mécanisme de défense qui n'a pu être brisé que vers la fin de la vie du SNES.

Au cours des neuf années d'existence de la console, 721 jeux sont sortis, parmi lesquels des succès tels que Super Mario World , Zelda III [ The Legend of Zelda: A Link to the Past ], Mario Kart , F-Zero , Super Metroid et Donkey Kong Pays . Près de 50 millions de consoles ont été vendues sur toute la période, SNES est donc considérée comme l'une des consoles les plus populaires de l'histoire, tant en termes de volumes de vente que de catalogue de jeux.

SNES techniquement supérieur était dans le domaine des graphiques 2D. Son processeur 16 bits 65C816 avec une fréquence de 3,58 MHz avait 128 Ko de RAM. Il contrôlait un PPU (Picture Processing Unit) avec 64 kilo-octets de RAM, qui gérait de grands sprites et pouvait prendre en charge jusqu'à 256 couleurs avec une résolution de 256x240. Le système audio de la console consistait en une puissante combinaison d'un processeur Sony SPC700 8 bits et d'un processeur de signal numérique 16 bits avec 64 kilo-octets de RAM dédiée.

Malgré l'impressionnant moteur de traitement des sprites bidimensionnels et en particulier la fonction Mode 7, la machine manquait de la force pour des opérations aussi coûteuses en calcul que l'informatique 3D. Nintendo a clairement reconnu que la 3D serait la prochaine étape importante dans le développement de jeux, mais elle n'avait pas la capacité de la mettre en œuvre. Par la volonté du destin, une petite entreprise britannique a trouvé une solution à ce problème.

Argonaut Games


En 1982, Jez San a développé à lui seul des jeux conçus exclusivement pour les ordinateurs C64, Atari ST et Amiga. Il avait besoin d'une entreprise pour vendre ses créations. Voyant les similitudes entre son nom (J. San) et Jason (Jason) du mythe des Argonautes, il l'a appelé Argonaut Games plc.

La compagnie ne resta pas longtemps un ensemble composé d'une seule personne. En 1990, il avait rassemblé des personnes talentueuses dans le bureau londonien de la société, et il s'est intéressé à la console portable Nintendo Game Boy, sortie en 1989. L'équipe a réussi à réaliser deux exploits apparemment presque impossibles: ils ont créé un moteur 3D filaire et ont craqué la défense du CIC pour l'installer sur Game Boy.

«Le logo Nintendo est descendu du haut de l'écran, et lorsqu'il a atteint le milieu, le chargeur de démarrage a vérifié si le logo était au bon endroit.

Le jeu n'a été lancé que si ce mot était au bon endroit de la ROM. Si quelqu'un voulait créer un jeu sans l'autorisation de Nintendo, il devrait utiliser le mot Nintendo sans licence; par conséquent, Nintendo pourrait intenter un procès en matière de marque. Nous avons découvert qu'il ne s'agissait que d'une résistance et d'un condensateur - les pièces coûtant environ un centime - et avons compris comment tromper la protection. Le système a lu le mot Nintendo deux fois - d'abord pour l'afficher à l'écran pendant le processus de démarrage, une deuxième fois - pour vérifier son exactitude avant de démarrer le jeu à partir de la cartouche. Et c'était une erreur fatale - la première fois que la console a lu le mot Nintendo, nous l'avons fait revenir Argonaut pour qu'il tombe en haut de l'écran. Dans le deuxième test, nous avons appliqué la puissance à la résistance et au condensateur pour que le mot correct soit Nintendo et le jeu chargé sans aucun problème »- Jez San, extrait d'une interview d'Eurogamer en 2014.

Au CES 1990, son moteur de démonstration du stand Nintendo a fait son chemin jusqu'au bureau de la société à Kyoto. Jez n'en savait rien à l'époque, mais il a choisi le moment idéal. À ce moment, Nintendo travaillait au Japon sur des jeux pour Super Famicom, qui étaient censés montrer au moment de la sortie de la console sa supériorité technologique. Super Mario World n'en était qu'à ses balbutiements, mais le simulateur de vol Pilotwings était déjà un jeu un peu plus compliqué.

Pour simuler le relief dans Pilotwings , le mode Mode 7 de l'appareil PPU a été utilisé (capable d'effectuer des transformations affines telles que la rotation, la mise à l'échelle et la découpe de l'image en parties), ainsi que le mode HDMA. Cependant, l'avion lui-même restait toujours le sprite bidimensionnel dessiné à la main. Cela a dérangé le producteur du jeu, Shigeru Miyamoto, car il ne permettait pas à la caméra de tourner en douceur autour de l'avion (les sprites brisés en morceaux étaient inégaux).

À cette époque, Nintendo n'aimait pas travailler avec des sociétés tierces, et encore plus avec des étrangers. Mais cette fois, ils ont fait une exception et ont invité Jeza à leur siège social à Kyoto avec Dylan Cuthbert, qui a travaillé sur le moteur 3D.

Les jeunes (Jesu avait 23 ans, Dylan avait 18 ans) ont rencontré tous les vice-présidents de Nintendo: Miyamoto, Gumpei Yokoi, Takehiro Izushi, Yasuhiro Minagawa et Genio Takeda. On leur a montré tout, du SNES secret au secret Mario et Pilotwings . On leur a ensuite demandé s'il était possible de trouver un moyen de rendre les plans comme de véritables objets polygonaux.

«Je leur ai dit que c'était le meilleur qu'ils pouvaient réaliser, à moins qu'ils ne me laissent concevoir l'équipement pour que SNES s'améliore en 3D. Étonnamment, même si je n'avais jamais fait d'équipement auparavant, ils ont dit «oui» et m'ont donné un million de dollars à vendre. » - jes san

Jez leur a hardiment promis une augmentation "dix fois" de la productivité, alors Nintendo a accepté avec plaisir la proposition de développer un équipement spécial pour le jeu. Pilotwings devra être libéré avec des avions sprites pour attraper Super Famicom, mais la puce, plus tard appelée Super FX, sera utilisée pour un autre projet Nintendo.

Il s'appelait Star Fox .

Renard étoilé


Selon l'accord, Nintendo avait le droit de prendre toutes les décisions sur la conception du jeu et a également financé Argonaut Games pour la production non seulement d'équipement, mais également d'un moteur 3D pour le jeu. Jez-san a immédiatement commencé à embaucher des spécialistes britanniques qu'il connaissait.

Pour développer l'équipement, il a signé un accord avec Flare Technology (les mêmes personnes qui concevaient l'Atari Jaguar). Le projet de Ben Cheese, Rob Macaulay et James Hakeville a été baptisé Mathematical Argonaut Rotation I / O, ou MARIO. En conséquence, l'appareil qu'ils ont créé s'est avéré si puissant qu'ils ont appelé en plaisantant Super NES "juste une boîte pour installer notre puce". Comme il était impossible de mettre à niveau la console, la puce a été soudée dans chaque nouvelle cartouche de jeu, ce qui a considérablement augmenté son prix de vente.

«Nous avons développé la puce Super FX de manière à ce que personne avant nous n'ait conçu l'équipement - nous avons d'abord créé le logiciel et notre propre ensemble d'instructions pour optimiser le logiciel. Personne n'a fait ça! Au lieu de créer une puce 3D, nous avons essentiellement développé un microprocesseur RISC complet qui avait des fonctions mathématiques et des fonctions de rendu des pixels, tandis que le reste était géré par un logiciel. C'était la première unité de traitement vidéo au monde (unité de traitement graphique), et nous avons des brevets qui le prouvent. »- Jez Sun

Karl Graham et Pete Warns ont travaillé sur le moteur dans le bureau de Londres de l'entreprise, tandis que Dylan Cuthbert, Christer Wombell et Giles Goddard (et plus tard Colin Reed) ont déménagé dans les bureaux de Nintendo à Kyoto et ont travaillé en étroite collaboration avec l'équipe Miyamoto.

Le projet a été couronné de succès commercial et technologique. Star Fox est sorti le 21 février 1993 et ​​s'est vendu à quatre millions d'exemplaires.

L'histoire de la relation entre les deux sociétés est triste. La suite du mégahit Star Fox 2 a été achevée par les Argonautes et prête à être publiée en 1996, mais Nintendo a brusquement interrompu le projet, craignant son impact sur la sortie de Nintendo 64. Argonaut n'a pas aimé cela et la relation avec Nintendo s'est détériorée. Plus tard, Nintendo lui a attiré Goddard et Wombella. Dylan Cuthbert pourrait également les rejoindre, mais il en a été empêché par la clause de l'accord sur l'interdiction de la concurrence. Il a quitté Argonaut et, travaillant chez Sony, s'est mis à travailler sur la PlayStation.

Le "divorce" des deux sociétés a pris fin lorsque Nintendo n'a pas autorisé Argonaut à utiliser le personnage de Yoshi dans le jeu de plateforme que la société prévoyait de publier sur PS1. En conséquence, ils ont remplacé Yoshi par un crocodile et ont appelé le jeu Croc: Legend of the Gobbos . Nintendo a ensuite sorti le Mario 64 , dont l'un des mécaniciens ressemblait étrangement à Croc ... et a même gagné le marché pendant environ un an.


La puce MARIO avait une conception simple basée sur un processeur RISC 16 bits avec une fréquence de 10,74 MHz et une mémoire cache de 512 octets. Il avait son propre ensemble d'instructions, optimisé pour les calculs mathématiques, et son propre tampon d'image, optimisé pour placer des pixels. Son travail consistait à effectuer un rendu dans un tampon de trame, dont les données étaient périodiquement transférées vers la RAM SNES en utilisant DMA. Il pouvait afficher jusqu'à 76 458 polygones par seconde, ce qui fournissait Star Fox à environ 15 images par seconde.

Après avoir assisté au succès phénoménal de Star Fox , d'autres studios se sont intéressés à ses technologies. Une nouvelle version de la puce appelée GSU a été lancée, capable de fonctionner à une fréquence de 21,4 MHz. Le GSU de première génération a été utilisé dans quatre jeux: Dirt Racer , Dirt Trax FX , Stunt Race FX et Vortex .

La deuxième génération (GSU-2) avait le même processeur avec une fréquence de 21,4 MHz et des contacts supplémentaires soudés au bus pour augmenter la taille de la mémoire ROM et du tampon de trame pris en charge. Il a été utilisé dans trois jeux: DOOM , Super Mario World 2: Yoshi's Island et Winter Gold .

Si vous ouvrez la cartouche DOOM, vous pouvez voir tous les composants ci-dessus:

[1] GSU-2 16 bits, [2] tampon de trame de 512 Ko dans lequel GSU a été écrit, [3] ROM de 2 mégaoctets, dans laquelle le code et les ressources ont été stockés, [4] un module de six onduleurs et [5 ] Puce CIC pour la protection contre la copie.

«La croissance de la productivité décuplée était de ma part une exagération. Nous ne savions pas si cela était réellement possible. Mais cela nous a permis d'exagérer et en même temps de dépasser les promesses. Au lieu de décupler les performances 3D, nous les avons en fait multipliées par 40. Dans certains domaines, comme l'informatique mathématique 3D, la croissance a même été centuple. La puce pouvait non seulement effectuer des calculs 3D et travailler avec des graphiques vectoriels, mais également fournir la rotation et la mise à l'échelle des sprites, et cette fonction était extrêmement nécessaire pour les propres jeux de Nintendo, par exemple, Super Mario World 2: Yoshi's Island. " - jes san

Un fait intéressant: certains fans ont réussi à collecter tous les jeux (721 noms) du catalogue SNES. En règle générale, une cartouche DOOM peut être vue de loin. Seuls trois jeux ont été autorisés à sortir dans un boîtier gris non standard. Deux étaient rouges - DOOM et Maximum Carnage , et Killer Instinct était noir.



Doom sur Super Nintendo


DOOM sur SNES est né grâce au génie et à la détermination d'une personne: Randy Linden. Il a adoré ce jeu et a décidé de le porter sur la console populaire afin que plus de joueurs puissent en profiter. Randy n'avait pas accès au code source, ni aux ressources des versions du jeu pour PC ou console. Il a dû repartir de zéro.

Pour les ressources, il pourrait utiliser la «spécification non officielle de Doom » écrite par Matthew Fell. Il a décrit en détail la structure des fichiers .wad. Sprites, textures, musique, effets sonores et cartes Randy extraits de DOOM.WAD. Avec le moteur, l'histoire était complètement différente.

" DOOM était un jeu vraiment révolutionnaire, et je voulais que les gens sans PC le jouent. DOOM sur SNES était un autre exploit de programmation qui pouvait être accompli.

J'ai commencé le projet par moi-même et créé un prototype entièrement fonctionnel, montré sa démo dans le logiciel sculpté. Un groupe d'employés sculptés m'a aidé à terminer le jeu afin qu'il puisse être publié à temps pour les vacances.

Le processus de développement a été compliqué pour de nombreuses raisons, et principalement parce qu'à l'époque, il n'existait aucun système de développement pour la puce SuperFX. Avant de démarrer le jeu lui-même, j'ai écrit un ensemble complet d'outils - assembleur, éditeur de liens, débogueur.

Le kit de développement matériel consistait en une cartouche Star Fox piratée (car elle avait une puce SuperFX) et une paire de contrôleurs de jeu modifiés connectés aux deux connecteurs SNES et connectés au port parallèle Amiga. Pour télécharger le code, définir des points d'arrêt, examiner la mémoire lors du transfert de données entre les deux appareils, un protocole série a été utilisé.

J'aimerais que le jeu ait plus de niveaux, mais, malheureusement, le jeu occupait la ROM la plus volumineuse disponible et l'occupait presque complètement. Je me souviens vaguement que seulement 16 octets environ étaient libres, c'est-à-dire qu'il n'y avait plus d'espace! Cependant, j'ai réussi à prendre en charge le Super Scope, la souris et le modem XBand! Oui, vous pouvez même jouer avec quelqu'un en ligne! "- Randy Linden dans une interview pour Gaming Reinvented

Dans cette version, il est à noter comment Randy a dû "couper les coins" en tenant compte des capacités et des limites du moteur de port.


Dans la figure 6.8, on peut voir que malgré seulement 600 kibioctets de RAM, le plancher bleu est resté (quoique de la même couleur). Notez que la géométrie n'a pas changé (cela a dû être extrêmement difficile à réaliser, car Randy n'avait ni DoomED ni doombsp), et toutes les étapes de l'original ont été conservées sur E1M1.

Le moteur Reality, comme l'appelait Randy, était capable de travailler avec la géométrie des cartes à partir d'un PC, mais il avait très probablement des problèmes avec la vitesse de remplissage et d'échantillonnage des textures, car les textures du plafond et du sol sont complètement absentes.


La capture d'écran ci-dessus montre que la fenêtre ne s'affiche pas réellement en plein écran. Ce problème concernait non seulement DOOM - Star Fox , Star Fox 2, et tous les jeux avec Super FX devaient réduire la taille de l'espace de travail. Cela était probablement dû au taux de transmission SNES limité, qui ne permettait pas la transmission DMA pour le rendu plein écran.

Sur 256x224 pixels de la résolution «native» de la console, seuls 216x176 ont pu être dessinés, et seulement 216x144 ont été utilisés pour la 3D (une barre d'état a été dessinée sur 32 lignes). Les lignes verticales ont été dupliquées, c'est-à-dire que le moteur de réalité a pu effectuer un rendu à une résolution de 108x144 seulement. Et même avec une résolution aussi faible, la fréquence d'images moyenne était de 10 FPS, ce qui était une réalisation majeure. La fréquence d'images "faible" n'a pas dissuadé les joueurs de jouer à DOOM . Selon Randy Linden, les cartouches se sont très bien vendues.


La liste des fonctionnalités données pour la précieuse RAM comprenait la résolution des sprites, qui devait être considérablement réduite; parfois, il était même difficile de les démonter (contrairement à l’arme du joueur, qui était rendue en plus haute résolution). J'ai dû supprimer toutes les poses des ennemis, à l'exception des sprites regardant le joueur, se débarrasser des combats de monstres les uns avec les autres, diffuser le son (les monstres n'étaient réveillés que par contact visuel), couper la plupart des effets sonores (tous les monstres sonnaient comme des imps).

Fait intéressant: Nintendo a initialement interdit l'utilisation de sang dans les jeux sur SNES. Au moment de la libération de DOOM , une procédure de classement ESRB était apparue sur les lieux. Compte tenu de la quantité de sang et de morceaux de chair, il n'est pas surprenant que DOOM sur SNES ait reçu la note M ("à partir de 17 ans").

Le texte intégral de Game Engine Black Book: DOOM est disponible sur le site internet de Fabien Sanglar.

Source: https://habr.com/ru/post/fr455429/


All Articles