Présentation

Il y a un mois, Modern Vintage Gamer (MVG) affirmait avec confiance que Doom est fonctionnellement impossible à exécuter sur la Neo Geo en raison du matériel d'affichage basé sur des sprites et de l'absence d'un tampon de trame. Cependant, deux projets récents ont fait de grands progrès vers des ports Doom fonctionnels sur le matériel Neo Geo standard.

Architecture et fonctionnement

Le projet Doom64KB pour la Neo Geo a été créé par le codeur FrenkelS, qui a adapté un port Doom précédent conçu pour fonctionner sur des processeurs PC 16 bits comme le 8088 et le 286. En utilisant ce moteur, le code Neo Geo crée une sorte de tampon de trame proto à partir de la couche fixe de la console, une zone de mémoire d'affichage généralement utilisée pour afficher des menus et des informations HUD au-dessus du gameplay.

fix layer = display memory utilisée pour les menus et les informations HUD

En rendant cette couche fixe, le moteur Doom64KB peut animer une version relativement lisse des cartes Doom, bien qu'elle utilise des tuiles chunky de 8×8 pixels à une résolution effective de 28×32 (et seulement 16 couleurs, limitant l'effet de « diminution de la lumière » lorsque les murs s'éloignent dans la distance).

Implications et limites

Une légère modification de la même idée construit un tampon de trame à partir de la mémoire de sprite de la Neo Geo, augmentant la résolution effective à 80×56 en utilisant des blocs de 4×4 pixels. Bien que cette augmentation se fasse au prix d'une baisse de taux de trames, les choses pourraient devenir plus lisses avec une optimisation supplémentaire ou avec un matériel surcadencé comme celui de la prochaine Neo Geo AES+.

Analyse scientifique

Ces projets prouvent que, même avec des compromis graphiques importants, il est possible de créer des ports Doom fonctionnels sur la Neo Geo. Cela démontre la capacité des codeurs déterminés à obtenir des résultats surprenants à partir de matériel hérité. Les limitations de la Neo Geo, telles que le matériel d'affichage basé sur des sprites et l'absence d'un tampon de trame, ont été contournées par l'utilisation créative de la couche fixe et de la mémoire de sprite.