Emulation FPGA : Le Futur du Rétro ?

Paresseux Scribouillard
14 min readJun 1, 2022

Préface

L’article qui suit est la culmination de plusieurs mois de recherches entre 2019 et 2021, de discussion avec de nombreux acteurs d’une communauté foisonnante et diverse. C’est à eux que cette série d’articles est dédiée et essaiera de mettre au maximum leur travail en lumière.

Histoire d’une disparition

Depuis plusieurs années, un sujet en particulier me trotte en tête : comment peut-on garantir la préservation durable et pérenne des jeux qui ont marqué mon enfance (et probablement la votre si vous lisez cet article) ?

Si l’émulation classique à permis a nombre d’enfants et ados sans le sous d’expérimenter pour la première fois des systèmes qu’il n’auraient jamais pu s’offrir — comme la Neo-Geo par exemple, je ne sais pas si Metal Slug serait une de mes séries favorites depuis 25 ans si je n’avais pas pu y jouer via NeoRageX — ce n’est pas une réponse durable et complète.

Trop d’erreurs, d’imprécision et l’impression que l’on manquait une partie de la réponse : car si des milliers de passionnés ont œuvré à la préservation des jeux au cours des dernières décennies, la question restait ouverte quant à la préservation des machines.

Qu’il s’agisse d’une désormais antique Nintendo NES ou bien plus récemment d’une Sega Saturn ou Sony PlayStation, toutes ces machines sont faillibles. Qu’il s’agisse de la lentille d’un lecteur SD, d’un port cartouche capricieux ou bien de condensateurs à remplacer régulièrement sur la carte mère sous peine de perdre complètement la machine, ces machines qui nous ont apporté tant de joie et de réconfort ne sont pas éternelles.

Souvent cité en exemple, le cas de la “pile suicide” des systèmes arcade CPS-2 utilisés par Capcom : jusqu’au milieu des années 2010 une batterie défectueuse signifiait qu’un jeu arcade devenait irrécupérable. Un désastre pour la préservation de jeux uniquement disponible en Arcade.

Au cours des dernières années, l’avènement de nouvelles méthodes et technologies ont cependant changé la donne et il y a désormais un chemin clair vers une préservation et même une possible reproduction infinie à l’identique des consoles et ordinateurs de notre enfance.

Tout cela n’aurait jamais pu être possible sans le travail ACHARNÉ de nombreux passionnés.

Le rétrogaming, de plus en plus tendance

Ces dernières années, le rétrogaming est en vogue. Sortie des consoles mini de Nintendo, Sega et Sony, répliques arcades telles que la NeoGeo Mini ou bien Capcom Home Arcade, il semble que l’on voit toujours plus de nouveaux projets rétro émerger. Une tendance qui n’est pas limitée au grand public, puisque des projets plus niche tels que la PC Engine Mini, AstroCity Mini ou bien Egret II Mini voient le jour.

Nintendo en particulier à trouvé un succès retentissant avec ses minis-consoles. Au 1er janvier 2020 il s’était vendu plus de 13 millions de consoles minis, soit davantage que de Wii U. © Nintendo

Tous ces projets ne sont pas forcément des succès techniques et ou commerciaux, mais on constate que cette résurgence du rétro s’accompagne aussi d’un intérêt fort et de plus en plus prononcé pour les sujets de préservation du jeu vidéo. Au vu des efforts de certains musées ou associations, on assiste au développement d’une approche de conservation officielle, qui dépasse les collections de fans.

On repensera notamment à l’exposition MuseoGames au début de la décennie précédente. Celle-ci mettait l’accent sur l’accès à des systèmes anciens pour tous, permettant la découverte et la transmission aux plus jeunes. ©CNAM, Trafik

Au confluent de ces deux tendances, on voit apparaître des acteurs qui non seulement promeuvent une expérience rétro de qualité pour l’utilisateur, mais veulent aussi préserver l’héritage de périodes entières du jeu vidéo. Ayant à cœur de documenter complètement des machines qui ne sont pas éternelles, ils réalisent un travail digne de conservateurs de musée.

Pour cela, des passionnés désassemblent des consoles ou des bornes d’arcades, vont même jusqu’à dessouder les puces qui en sont le cœur et les cataloguent dans le but d’en percer tous les secrets. L’objectif ? Sauvegarder pour toujours, sous forme de schémas électroniques et de code ces systèmes afin d’en permettre la reproduction à l’identique.

Reproduction du comportement des puces de la borne d’arcade Cadash de Taito. © Furrtek.

Bienvenue dans le monde du FPGA (Field Programmable Gate Array), qui a le potentiel de changer notre rapport à la manière dont on profite de ces jeux, mais aussi dont on les conserve.

Sans vouloir glorifier les FPGA en tant que composants magiques qui solutionneraient le problème de la préservation des machines rétro, je pense que la voie et le travail de recherche qui mène ensuite à les utiliser a son importance dans le domaine.

Sean Gonsalves aka Furrtek, un des acteurs incontournables dans le domaine de l’émulation FPGA

1 — Les années 1990, Far-West de l’émulation

Afin de bien comprendre ce qu’est l’émulation FPGA et ce qui différencie cette nouvelle méthode des approches précédentes, remontons d’abord un peu dans le temps.

À la fin des années 90, certains logiciels permettent de reproduire le comportement d’une console pour en faire tourner les jeux. Peu importe la console, de la GameBoy de Nintendo (avec Virtual GameBoy) à la Neo-Geo de SNK (avec NeoRageX), ceux-ci semblent alors apparaître de partout.

Interface de l’émulateur NeoRageX, un émulateur ou j’ai passé de nombreuses heures…

Tous ces programmes — dénommés émulateurs — ont en commun qu’ils ne nécessitent pas la console qu’ils cherchent à imiter. Au contraire, ils se contentent d’un matériel accessible à de plus en plus de gens alors, un PC, pour fonctionner. Bien sûr, cela pose déjà des questions quant à la légalité du procédé. Par souci de simplicité et de brièveté, nous nous concentrerons ici sur la partie technique de ces logiciels.

A noter qu’il existe plusieurs formes d’émulation. Celle-ci peut-être logicielle ou bien matérielle. Nous allons laisser la deuxième de côté pour le moment, et nous pencher un peu plus sur la première.

L’émulation logicielle possède le grand avantage d’imposer moins de pré-requis sur le matériel possédé par l’utilisateur donc, mais aussi par les créateurs de tels logiciels.

De ce fait, au tournant des années 2000 ces émulateurs permettent à des générations de joueurs de s’essayer à de vieux systèmes ou ceux qu’ils ne possèdent pas.

Ce type d’émulation à néanmoins ses limites. Arriver à une émulation qui marche avec quelques jeux triés sur le volet est une chose. Mais proposer un logiciel avec une compatibilité avec l’ensemble des jeux du système originel est une autre paire de manches.

Sans parler de la préservation des jeux et des systèmes, pas vraiment une priorité pour les joueurs d’alors — ni pour les studios de développement d’ailleurs. Qui s’en mordront parfois les doigts plus tard, se reposant sur leurs communautés pour restaurer leurs propres jeux.

Non, à cette époque le principal attrait et challenge est de faire tourner le maximum de jeux, et ce dans des conditions à peu près passables. L’objectif est de permettre à une personne de jouer malgré quelques bugs mineurs, artefacts graphiques ou glitchs sonores par exemple. L’émulateur UltraHLE est à ce titre un bon exemple de cette époque.

UltraHLE, véritable révolution à sa sortie

L’arrivée de cet émulateur Nintendo 64 en janvier 1999 est un moment critique. Après de nombreux faux logiciels prétendant pouvoir émuler des jeux de la puissante N64, nombreux sont ceux croyant à une arnaque de plus. Cela pousse même des médias de l’époque tels que le site américain IGN à tester le logiciel en question.

Il s’avère qu’UltraHLE était effectivement le premier émulateur à faire tourner des jeux commerciaux comme Super Mario 64.
Mais l’approche utilisée par les développeurs signifiait qu’il n’était pas possible de prendre n’importe quel ROM (la copie clonée du jeu original) et de la charger dans le logiciel pour y jouer.

Au contraire, il s’agissait d’un processus long et complexe requérant un nombre important de changements pour chaque jeu. Seulement une vingtaine de titres seront ainsi jouables avec UltraHLE.

Devant la pression des joueurs demandant une compatibilité toujours plus importante, mais aussi et surtout la menace d’un procès avec Nintendo, les deux auteurs connus sous les pseudonymes RealityMan et Epsilon, décident de mettre un terme au développement de UltraHLE à la fin de l’an 2000.

2 — L’arrivée de la next gen d’alors : PS2 / Xbox / GameCube et la fin des projets amateurs

Peu à peu, au fil des années grâce à la montée en puissance des ordinateurs que l’on retrouve dans de plus en plus de foyers, on assiste à un changement d’approche.

De logiciels bricolés par 1 ou 2 amateurs, on va passer à des projets mobilisant parfois plusieurs dizaines de personnes. L’objectif ? Offrir une plus grande fidélité à l’expérience originale et toujours plus de compatibilité, demande première des utilisateurs.

Cela résulte dans un changement d’état d’esprit commun à tous les émulateurs logiciels du début de ce nouveau millénaire ou presque : plutôt que de proposer une expérience passable pour quelques jeux commerciaux connus, ils mettent de plus en plus en avant la fiabilité de leur émulation et l’authenticité au système original.

On peut ainsi citer mGBA pour la Game Boy Advance par Endrift, ou bien bsnes (devenu Higan par la suite) par Near pour la Super Nintendo, mais nombre d’émulateurs actuels se concentrent ainsi sur une émulation particulièrement fidèle au système d’origine, facilitant donc de possible efforts de conservation. Un objectif explicitement visé par Near, l’auteur de l’émulateur bsnes, expliquant dans cette tribune sur le site Ars Technica sa quête de précision.

BSnes, émulateur Super Nintendo visant la précision absolue par Byuu/Near, décédé en 2021.

Alors que l’émulation était souvent un hobby de programmeurs seuls ou en petit groupe au tournant des années 2000, cela va se transformer en de véritables projets collaboratifs.

C’est qu’avec la complexification des consoles de 6ème génération (PlayStation 2, GameCube, Xbox) et l’évolution des protections anti-piratage des constructeurs, il n’est plus possible de développer un émulateur seul dans son coin.

L’émulateur Dolphin, qui à pour but le support des jeux Gamecube et Wii est un bon exemple de cela. Créé et développé par quelques personnes de manière propriétaire au début, il sera abandonné… avant d’être repris et transformé en un projet open source. PCSX2, émulateur PS2 à une histoire similaire.

Dolphin et PCSX2, des émulateurs encore actifs après plus de 20 ans de développement. En 2022, ce sont bien souvent les seuls manières de rejouer à des jeux Nintendo GameCube et Sony PlayStation 2.

Ces projets ont depuis lors maintenu et développé par des centaines de contributeurs bénévoles au cours des 15 dernières années. Encore en développement actif en 2022 sur PC, Mac et Android, ce sont probablement les émulateurs les plus anciens encore actifs à ce jour.

On peut même dire que l’on assiste une renaissance puisque ces émulateurs ont désormais de nouveaux objectifs avec la montée en puissance des smartphones ainsi que l’arrivée des Mac avec puce M1 complètement conçue en interne par Apple.

3 — FPG-Quoi ? C’est un nouveau genre de RPG ça ?

Ces dernières années, en plus de projets d’émulation logicielle comme ceux mentionnés, on assiste à l’émergence d’un nouveau type d’émulation.

Au lieu de créer un logiciel essayant de reproduire le fonctionnement d’un système (console ou borne d’arcade), pourquoi ne pas copier complètement le système entier ? Le but est d’arriver à une émulation matérielle des systèmes qui permet alors de reproduire la manière dont le système marche, via ce qu’on appelle des puces FPGA.

Arriver à une émulation totalement fidèle via logiciel peut s’avérer extrêmement complexe. De plus, cela ne résout pas la question de la préservation des vieux systèmes, devenue un vrai enjeu ces dernières années. A ces deux problématiques les puces FPGA apportent une solution.

Pour les émulateurs des années 90, parvenir à faire tourner un jeu était un petit miracle. Répliquer le comportement de la console à partir d’une poignée de jeux — sans aucune documentation — était un objectif quasi impossible.

Heureusement, c’est précisément là la force des puces FPGA. A l’aide de consoles encore fonctionnelles, il s’agit plutôt de “cloner” leur fonctionnement, puce par puce.

Si vous ne vous représentez pas le travail de titan que cela peut représenter, alors voilà ce que représente uniquement le processeur de la toute première GameBoy, documenté par Furrtek.

Un boulot de plus de 191 heures, complètement disponible sur GitHub.

En plus de représenter les centaines de traces du processeur (DMG-001), la documentation s’accompagne de plus de 36 pages de schémas électriques. © Furrtek.

Comme mentionné plus tôt, la documentation des consoles constitue les “bibles” des constructeurs de machines.
Elles sont donc précieusement gardées secrètes… à moins de fuites comme récemment avec Nintendo et l’affaire Gigaleak. Résultat du piratage d’une entreprise partenaire de Nintendo, on a pu voir apparaître sur le web tous les diagrammes et schémas électroniques de la Wii.

A noter que ce véritable butin de données n’est cependant d’aucune utilité pour les équipes derrière certains émulateurs puisqu’il s’agit de code copyrighté. Il faut donc trouver d’autres manières d’implémenter les fonctionnalités recherchées sans recourir à ces fuites.

Pourquoi ? Eh bien, s’il est possible pour les constructeurs tels que Nintendo de copyrighter les jeux, firmwares et systèmes d’exploitation de ses machines, il n’est pas interdit de reproduire le fonctionnement logique des consoles.

C’était un des enjeux du procès entre l’émulateur Bleem et Sony au début des années 2000, et qui avait conclu à la possibilité de créer un tel logiciel. Une décision qui fait encore référence aujourd’hui et sous laquelle se placent les émulateurs modernes.

Depuis plusieurs années on assiste donc à une course à la documentation de toutes les puces des consoles encore en état dans l’espoir de pouvoir préserver des comportements uniques. Une puce sonore particulière par-ci, un accélérateur permettant des calculs vectoriels par là…

Les exemples ne manquent pas et seront sûrement plus parlants.

Dans les vieilles consoles, comme la MegaDrive ou la Super Nintendo, différentes puces spécialisées s’occupent de tâches très spécifiques. On peut notamment citer la puce sonore de la Mega Drive, le Yamaha YM2612 utilisé à la perfection par Yuzo Koshiro dans Streets of Rage 2. Ou bien du côté Nintendo, le DSP-1 utilisé dans Super Mario Kart et Pilotwings pour offrir des effets de rotation en extension du fameux Mode 7 de la console.

Puce Yamaha YM2612, responsable de la gestion de l’audio sur la Mega Drive. Qui eut cru qu’une simple puce pourrait produire quelques-unes des bandes son les plus mémorables de toute l’histoire du jeu vidéo ? https://en.wikipedia.org/wiki/Yamaha_YM2612

Le point commun de ces puces ? Elles sont conçues pour effectuer une seule tâche et l’effectuer à la perfection. Dénommées ASIC (Application-specific integrated circuit), une fois fabriquées, elles ne sont pas interchangeables dans leur fonction. Il n’est ainsi pas possible d’utiliser une puce son pour calculer des effets de rotation par exemple.

Les FPGA eux au contraire, comme leur nom complet l’indique, sont programmables. Elles sont constituées de blocs logiques, qui peuvent être présents de plusieurs milliers à plusieurs millions sur une seule puce.

Elles sont dites programmables car un développeur peut choisir de rerouter le signal à travers ces blocs de la manière qu’il le souhaite. Concrètement, cela veut dire que l’on peut dicter à la puce de reproduire matériellement, sans logiciel externe, le comportement d’une puce de Mega Drive ou de Super Nintendo. Et puisque les FPGA récents sont assez puissants, il est possible d’émuler simultanément le comportement de toutes les puces qui se trouvent normalement sur une carte mère de console !

Exemple d’une carte FPGA reprogrammable, ici avec un processeur Cyclone V.

Évidemment, il peut y avoir des dizaines de puces sur un circuit imprimé d’une console. Et le cas de l’arcade est encore plus complexe, on pense ainsi au cas du CPS-2 de Capcom ou à la Neo-Geo MVS, version arcade du système de SNK.

Une Neo-Geo MVS (avec modifications) avec le slot pour cartouches situé au-dessus du PCB.

A noter que les ASIC et les FPGA ont toutefois chacun leurs forces et leurs faiblesses. L’un n’est pas forcément automatiquement meilleur que l’autre et sont utilisés avec des buts différents.

Si les puces FPGA sont très versatiles, puisque totalement reprogrammables, elles sont affreusement chères, pouvant coûter des centaines ou des milliers d’euros à l’unité ! Les ASIC à l’inverse ne pourront jamais dévier de leur programme insufflé en usine mais sont particulièrement bon marché : elles coûtent entre quelques dizaines de centimes à plusieurs euros (coût en milliers d’unités).

Le DSP-1 de la Super Nintendo est par exemple un ASIC (tout comme la puce YM2612 sur Mega Drive). © FFVIMan.fr

Ces deux types de puces ont donc chacune leur place dans l’industrie du jeu vidéo. Et ce depuis des décennies comme l’explique Furrtek :

“Lorsqu’on parle de volumes en millions, les FPGA deviennent extrêmement chers comparés à des ASIC.

C’est pour cela qu’on peut trouver des photos de prototypes de consoles ou de cartouches de jeux sur lesquelles on voit des FPGA : ils sont utilisés pour le développement.

Le fait qu’ils soient reprogrammables permet de tester et de changer la logique sans avoir à commander de nouveaux ASIC (qui eux sont très chers en faibles quantités et longs à fabriquer).

Une fois que la logique est validée sur FPGA, elle est convertie pour être implémentée dans un ASIC.

Le fait que les blocs logiques inutilisés du FPGA et que le système de programmation sont absents fait que l’ASIC est bien plus intéressant économiquement pour la production en masse.”

Vue schématique interne d’une puce FPGA. © JJMK

4 — Une communauté de passionnés qui se professionnalise, au service de la préservation des consoles et systèmes qui disparaissent petit à petit

C’est dans ce cadre qu’apparaissent de nouveaux acteurs. Outre-atlantique un nom revient sur toutes les lèvres depuis plusieurs années : Analogue. Une entreprise commercialisant des consoles rétro qui utilisent ces puces FPGA. Plus connu sous le pseudonyme Kevtris, Kevin Horton est un ingénieur qui travaillait auparavant dans le refroidissement de systèmes industriels avant de rejoindre Analogue. Depuis 2015, il travaille sur les différents projets de consoles rétro de l’entreprise.

Celle-ci a décidé de répliquer complètement — à l’identique — les systèmes rétro dont ils choisissent de fournir leur version. En fournissant une réplique qui se veut exacte, au cycle d’instruction près, afin d’assurer une compatibilité avec la totalité du catalogue d’origine.

Puisqu’il s’agit de créer une nouvelle Super Nintendo ou Mega Drive, on peut alors brancher sa cartouche d’origine dans ces nouvelles machines… et celles-ci fonctionnent alors parfaitement. La cartouche pense qu’il s’agit en effet d’une Super Nintendo ou Mega Drive d’origine par exemple.

L’Analogue Mega SG, une réplique de la Sega Mega Drive mais avec sortie HDMI et propulsée par une puce FPGA Altera Cyclone V. © Analogue

Mais ces consoles néo-rétro, en plus d’offrir une émulation extrêmement fidèle sans soucis d’artefacts graphiques ou de son déformé ou distordu (typiques d’une émulation logicielle pas forcément toujours aboutie) rajoutent aussi des fonctionnalités modernes.

Ainsi, elles peuvent également augmenter la définition de l’image en 1080p en interne tout en gardant une image fidèle à l’original. Pourvue d’un port HDMI pour se brancher sur un téléviseur récent, cette console (comme la Mega SG ou la Super NT, un autre modèle d’Analogue une réplique de la Super Nintendo) offre le meilleur des deux mondes : fidélité à l’original et confort moderne.

Avec ces consoles il est par exemple possible de choisir parmi différentes options d’upscale afin d’augmenter la définition interne de l’image directement depuis la console. © Arekuse

Mais pour en arriver à l’émulation parfaite des différents systèmes, il faut effectuer un travail de titan. Afin de reproduire parfaitement une console, il faut avoir une connaissance parfaite des différentes puces qui composent la console d’origine. C’est là qu’on se rend compte de l’ampleur de la tâche accomplie par des acteurs commerciaux comme Analogue, mais aussi et surtout par des passionnés. A ce titre la France n’est pas dépourvue de talents, comme Sean Gonsalves par exemple, plus connu sous le pseudonyme Furrtek.

Depuis plusieurs années, il désassemble différents systèmes tels que la Game Boy, la Neo-Geo ou la PC Engine. Ce dans le but de cataloguer et produire par retro-engineering des schémas publics permettant une meilleure compréhension et donc reproduction, de ces systèmes.

Il s’agit de documents d’une importance vitale puisque certains constructeurs n’existent plus (Commodore ou Amiga par exemple). D’autres se sont fait racheter au cours des années comme Hudson, père de la PC Engine acquis par Konami en 2012. D’autres encore comme SNK — récemment racheté par la fondation du Prince d’Arabie Saoudite mais différent de l’entreprise de l’époque — ont-ils seulement encore la documentation de systèmes vieux de plusieurs décennies ?

Enfin, on voit mal les restants (tels que Nintendo) publier ces éléments, pourtant si critiques à la sauvegarde du patrimoine vidéoludique.

--

--

Paresseux Scribouillard

Parce que des fois, j’aime écrire plus long qu’un tweet