Capture d'écran du Doom original montrant le joueur attaquant un Baron de l'Enfer démoniaque avec gerbe de sang, avec la barre de statut emblématique affichant santé, armure et munitions
Jeux Vidéo

Doom sur Neo Geo : une architecture sprites 2D sans framebuffer incompatible

La Neo Geo ne peut pas faire tourner un vrai Doom car elle est conçue pour afficher des sprites 2D stockés en ROM, sans framebuffer pour dessiner pixel par pixel. Son Motorola 68000 à 12 MHz se limite à écrire positions et échelles en VRAM, sans accès direct à la ROM graphique et avec 64 Ko de RAM. Le raycasting détourné en sprites tourne à huit images par seconde en émulation sans ennemis, et DoomGeo reste une adaptation qui anime des sprites, pas un portage du moteur.

As-tu aimé cet article ?

Tu connais le mythe : la Neo Geo, la Rolls des consoles 16-bit, capable d'afficher des sprites géants et des jeux d'arcade parfaits. Alors pourquoi elle n'a jamais eu son Doom ? Ce n'est pas une question de puissance brute, mais d'architecture. Les deux ne parlent tout simplement pas le même langage graphique.

Une bête d'arcade pensée pour la 2D

La Neo Geo a été conçue exclusivement pour gérer de la 2D à base de sprites stockés sur cartouche. Son processeur principal, un Motorola 68000 cadencé à 12 MHz, est plus rapide que celui de la Mega Drive, mais il ne dessine jamais directement l'image.

Capture d'écran du Doom original montrant le joueur attaquant un Baron de l'Enfer démoniaque avec gerbe de sang, avec la barre de statut emblématique affichant santé, armure et munitions
Capture d'écran du Doom original montrant le joueur attaquant un Baron de l'Enfer démoniaque avec gerbe de sang, avec la barre de statut emblématique affichant santé, armure et munitions - (source)

Le principe est rigide : le CPU écrit simplement des numéros de tuiles, des positions et des valeurs de scaling dans la VRAM, puis laisse le processeur vidéo aller chercher les bons sprites dans la ROM graphique pour les afficher.

Le système ne possède ni framebuffer ni bitplanes façon Amiga qui permettraient de dessiner librement des pixels n'importe où sur l'écran. Même un moteur Doom entièrement calculé en logiciel n'aurait donc aucun moyen direct d'afficher son résultat à l'écran.

Il y a un autre mur : cette ROM graphique n'est même pas adressable par le bus du 68000. Impossible pour le CPU d'échantillonner des textures ou de relire des pixels de sprites pour les retravailler. Pour la mémoire de travail, c'est tout aussi serré : 64 Ko de RAM pour le 68000, 2 Ko pour le Z80 qui gère le son, et pas de DMA pour déplacer rapidement des blocs de données.

En clair, la Neo Geo est excellente pour empiler des décors 2D prêts à l'avance. Elle est incapable de peindre une image pixel par pixel à chaque frame.

Ce que Doom exige vraiment

Doom fait exactement l'inverse. Le jeu original affiche du 320x200 en 256 couleurs, avec un accès au framebuffer dans un mode planaire entrelacé proche du Mode X. Il n'utilise que 200 lignes au lieu de 240 pour mettre à jour moins de pixels et aller plus vite, et il jongle entre trois pages d'affichage, comme le décrit le site fabiensanglard.net.

Concrètement, le moteur a besoin de trois choses que la Neo Geo ne lui donne pas :

  1. écrire librement dans un framebuffer en VRAM ;
  2. lire ses textures murales, sols, plafonds et sprites à tout moment pour les plaquer sur les murs ;
  3. garder assez de RAM pour le triple buffering et les calculs de visibilité.

Sur Neo Geo, tu peux calculer tout ce que tu veux avec le 68000, tu restes bloqué au moment de l'afficher : pas de pixels libres, pas d'accès aux textures en ROM, pas assez de RAM rapide.

Le raycasting en sprites ne fait pas un Doom

Des bidouilleurs ont essayé de contourner le problème avec du raycasting détourné : afficher des couloirs en 3D en étirant des bandes verticales de sprites.

Le résultat montre la limite. Le raycaster simple et non optimisé du vidéaste MVG tourne à seulement huit images par seconde en émulation, sans ennemis ni logique de jeu. Et même optimisé, ce système resterait largement insuffisant pour les éléments typiques de Doom comme les plateformes surélevées, les escaliers, les ascenseurs, les murs et plafonds texturés.

Pour MVG, la seule solution réaliste pour faire tourner un vrai Doom sur cartouche Neo Geo serait d'ajouter du matériel de calcul supplémentaire dans la cartouche, comme la puce Super FX2 qui a rendu possible le portage limité sur SNES.

Le projet homebrew DoomGeo le confirme à sa manière. Comme l'explique son auteur sabino, ce n'est pas un portage classique du code source avec framebuffer. Les outils lisent les données WAD au format Doom hors ligne et convertissent la carte et les assets en structures compatibles Neo Geo. Ensuite, le programme sur 68000 anime la scène en mettant à jour des blocs de contrôle de sprites plutôt qu'en dessinant des pixels, pour afficher des bandes étirées.

Ça donne une vraie sensation de FPS sur Neo Geo, mais ce n'est pas Doom : c'est une adaptation qui triche intelligemment avec la logique sprite de la machine.

La Neo Geo n'a pas raté Doom par manque de puissance ou d'envie : sa logique arcade 2D, à base de sprites en ROM et sans dessin libre, reste incompatible avec un moteur qui doit peindre chaque pixel et jongler avec ses textures.

As-tu aimé cet article ?

Questions fréquentes

Pourquoi Doom n'est jamais sorti sur Neo Geo ?

Parce que la Neo Geo est pensée pour la 2D à base de sprites en cartouche, sans framebuffer pour dessiner librement des pixels, alors que Doom doit peindre chaque pixel à chaque image.

Comment la Neo Geo affiche-t-elle les graphismes ?

Le 68000 à 12 MHz écrit numéros de tuiles, positions et scaling en VRAM, puis le processeur vidéo affiche les sprites stockés en ROM graphique. Elle n'a ni framebuffer ni bitplanes pour dessiner librement.

De quoi le moteur de Doom a-t-il besoin ?

D'écrire librement dans un framebuffer en VRAM en 320x200 en 256 couleurs, de lire ses textures à tout moment et d'avoir assez de RAM pour le triple buffering et les calculs de visibilité.

Le raycasting en sprites permet-il un vrai Doom ?

Non. Le raycaster simple et non optimisé de MVG tourne à seulement huit images par seconde en émulation, sans ennemis ni logique de jeu, et reste insuffisant pour plateformes, escaliers, ascenseurs et murs texturés.

Qu'est-ce que DoomGeo sur Neo Geo ?

Ce n'est pas un portage classique avec framebuffer. Les outils lisent les données WAD hors ligne et les convertissent en structures compatibles Neo Geo, puis le 68000 anime la scène en mettant à jour des blocs de contrôle de sprites.

Sources

  1. Computing in the Era of Doom: What Were PCs Like in 1993? · ahalbert.com
  2. Why a Neo Geo port of Doom is functionally impossible - Ars Technica · arstechnica.com
  3. 68000 Assembly Programming for the NeoGeo - ChibiAkumas · chibiakumas.com
  4. Neo Geo Architecture | A Practical Analysis - Rodrigo Copetti · copetti.org
  5. Converting my Wolfeinstein3D Engine to a DOOM Engine · dev.to
campus-echo
Inès Colbot @campus-echo

Étudiante en sociologie à Toulouse, je m'intéresse à tout ce qui agite ma génération : précarité étudiante, santé mentale, engagement, façons de vivre. J'anime un petit podcast sur la vie de campus le week-end.

119 articles 0 abonnés

Commentaires (1)

Connexion pour laisser un commentaire.

Chargement des commentaires...