Comprendre l’émulation

Sommaire


Pour jouer aux vieux jeux sans utiliser le matériel d’origine, il faudra passer par l’émulation. Si vous ne savez pas ce que c’est, c’est tout simplement une manière de reproduire le fonctionnement d’une machine de manière logicielle.

Petite précision technique : la puissance nécessaire pour émuler une console ne dépend pas tellement de la puissance de la console, mais plutôt de son architecture (type et nombre de processeurs), et de la précision de l’émulateur. Pour la simplicité, sachez que la Playstation avec son CPU et son GPU simples est très facile à émuler, contrairement à la Saturn ou la N64, qui ont des architectures matérielles beaucoup plus complexes. Pour la précision, c’est simplement la fidélité de l’émulation par rapport au fonctionnement du hardware original : les émulateurs les moins précis introduisent parfois quelques bugs, mais sont généralement plus rapides. Un émulateur SNES très imprécis peut tourner sur un Pentium à 133MHz avec 16Mo de RAM (je l’ai fait), un émulateur SNES très précis peut mettre certaines machines modernes à genoux. C’est un compromis entre les deux aspects, qui dépendra du matériel que vous utiliserez pour faire de l’émulation.

Globalement, il est possible d’émuler la plupart des consoles et ordinateurs jusqu’à la génération 16 bits (SNES, Megadrive) sur à peu près n’importe quelle machine : c’était déjà possible dans les années 90, n’importe quel appareil en est capable aujourd’hui ; il y a même des émulateurs SNES et Megadrive qui tournent sur Game Boy Advance.

Pour les générations suivantes, c’est plus compliqué. La Playstation a une architecture simple qui s’émule très bien, même sur des machines peu puissantes : rappelez-vous de Bleem sorti en 1999 et qui tournait sur Dreamcast. La Nintendo 64 est plus complexe et demande plus de puissance : la plupart des PC n’auront aucun problème, mais les Raspberry Pi ont plus de mal, ou même n’y arrivent pas du tout. L’émulation de la Saturn fonctionne très bien depuis peu, mais sur PC uniquement, et cela demande une certaine puissance. En revanche, la Dreamcast marche presque aussi bien que la Playstation, même sur une configuration modeste. Pour la PS2, GameCube et au-delà, seuls des PC un minimum costauds y arriveront.

Lexique et glossaire

224p, 240p, 320p, 480i, etc : représente des résolutions en utilisant le nombre de pixels verticaux, “p” voulant dire “progressive” et “i” voulant dire “interlaced”.

50 Hz, 60 Hz : correspond à la fréquence de rafraîchissement verticale d’un écran, le nombre d’image par secondes maximal.

15 KHz, 31 KHz : correspond à la fréquence de rafraîchissement horizontale d’un écran, la vitesse à laquelle le faisceau d’électrons se déplace de gauche à droite sur un écran CRT.

8 bits, 16 bits, 32 bits, etc : dans l’absolu, correspond à une certaine quantité d’informations numériques (8 bits = 1 octet). En raccourci, on les utilise souvent pour représenter une certaine génération de processeur (la taille des données que les processeurs savent traiter) ou une certaine qualité d’affichage (8 bits = 256 couleurs). En usage courant, sert souvent à désigner une génération de console (8 bits = NES, Master System). Très utilisé par les constructeurs de consoles dans leur marketing, par exemple avec les 64 bits de la N64, alors qu’en pratique ça ne correspond pas à une puissance quelconque (la N64 en 64 bits n’est pas foncièrement plus puissante que la PS1 en 32 bits).

Asset : une ressource de jeu. Peut être des graphismes (comme un sprite ou une texture), une musique, un bruitage, etc.

Artefacts : mot qui veut dire “quelque chose qui est fabriqué ou modifié par l’homme”, c’est étendu aujourd’hui à ce qui est fabriqué ou modifié par la machine, et peut s’appliquer, selon le contexte, à un peu tout et n’importe quoi. En pratique et dans le contexte de l’émulation, on l’utilise souvent pour décrire des problèmes d’affichage qui ne sont pas normaux : une corruption de donnée, ou une compression qui dénature l’image, par exemple.

Bartop : une borne d’arcade “découpée” pour n’en conserver que la partie haute, avec l’écran et les contrôles, afin de pouvoir être posée sur un bar (d’où le nom).

Bezel : sur les bornes d’arcade, correspond aux décorations que l’on posait autour de l’écran pour faire joli. Par extension, aujourd’hui, peut désigner les décorations qu’on peut afficher autour de l’image des jeux émulés, toujours pour faire joli. Est souvent remplacé par le terme overlay.

BIOS : Basic Input/Output System, un micro-programme intégré au coeur de tous les ordinateurs et de certaines consoles, qui sert à coordonner les entrées (inputs) et les sorties (outputs).

Bootleg : un jeu pirate, copie d’un jeu original et vendu comme si c’était un vrai. Beaucoup plus fréquent que ce que l’on pense dans les salles d’arcade, ainsi que pour les jeux sur cartouche. Je ne vous parle pas des jeux sur CD, vous savez certainement qu’ils étaient extrêmement faciles à copier.

Chip, chipset : une puce électronique, ou un ensemble de puces.

Composite : une norme de connexion des TV CRT très simple, mais de qualité très médiocre, surtout comparé au RGB.

CPU : Compute Processing Unit, un processeur qui effectue les calculs. Dans les ordinateurs et consoles récentes il n’y en a généralement qu’un seul, mais de nombreuses bornes d’arcade et certaines consoles en ont plusieurs.

CRT : Cathode Ray Tube, les gros écrans à tube qui pèsent une tonne et qu’on ne voit plus nulle part. Fonctionne en projetant un faisceau d’électrons sur une surface en phosphore, qui s’illumine brièvement.

Distribution : une combinaison “tout en un” de système d’exploitation (généralement Linux), d’émulateurs, et de front-end.

Dump : littéralement “déchargement”, le processus de copie du contenu d’une cartouche dans un fichier de ROM.

Émulateur : un logiciel qui permet de simuler le fonctionnement d’un matériel (comme une vieille console) dans un autre (un ordinateur récent).

EmulationStation : un front-end utilisé sur de nombreuses distributions populaires.

Fightstick, fightpad : un fightstick est simplement un stick arcade à 6 boutons, adapté aux jeux de combat, mais pas très pratique pour le reste. Un fightpad est une manette avec une croix et 6 boutons en façade, comme un stick arcade mais plus pratique à manipuler/transporter, et plus facile à réutiliser sur d’autres types de jeux.

FinalBurn Alpha/Neo : un émulateur de machines d’arcade. La version Alpha était l’originale, mais suite à des brouilles entre les développeurs a été créé la version Neo, qui est celle qui continue à être mise à jour.

FPGA : un type de processeur “reprogrammable” qui permet en quelque sorte “d’intégrer” un programme au coeur du processeur, pour qu’il soit exécuté plus rapidement (je schématise, c’est compliqué). En émulation, c’est utilisé dans certaines machines plutôt haut de gamme (notamment chez Analogue), et cela permet de réduire ou d’éliminer l’input lag sans recourir à des techniques comme le runahead.

Framerate : nombre d’images par secondes, vitesse à laquelle les images s’affichent. Plus c’est haut mieux c’est, mais un framerate fixe et multiple de 30 ou 60, c’est encore mieux (pour des raisons techniques sur lesquelles je ne m’étendrais pas).

Front-end : une interface utilisateur, qui permet d’utiliser facilement de multiples émulateurs, de gérer ses roms, etc. Aussi appelé GUI, ou tout simplement interface.

Ghosting : phénomène d’affichage qui “laisse traîner” des “images fantômes”, surtout sur les écrans LCD de mauvaise qualité, comme les anciennes portables, ou même les TV récentes bas de gamme.

GPIO : General Purpose Input Output, les picots métalliques sur les Raspberry Pi qui permettent de recevoir et d’envoyer des signaux, et que l’on peut piloter à travers des programmes.

GPU : Graphics Processing Unit, un processeur dédié au traitement des images. Le terme est généralement associé aux GPU 3D qui font des calculs spécifiques à ce type d’affichage, mais l’utiliser pour les processeurs vidéo des consoles 2D n’est pas une erreur, bien qu’on préfère parfois parler de PPU, Picture Processing Unit.

Hack : une modification de jeu. Peut être une triche (comme des vies infinies), une correction de bug, une traduction, un remplacement d’asset, ou carrément un nouveau jeu qui réutilise le moteur de l’original, ou encore d’autres choses.

Input lag : décalage entre l’appui sur une touche et l’affichage de la réaction à l’écran. Varie selon la méthode de connexion de la manette (bluetooth ou filaire), la performance de l’émulateur, et la méthode d’affichage.

Interlaced : entrelacé, une méthode d’affichage qui affiche une ligne sur deux à chaque rafraîchissement de l’écran. Cela permet de doubler la résolution au prix de potentiels problèmes d’affichage, et/ou d’un framerate divisé par deux.

ISO : signifie “égal” ; en émulation, désigne une copie de CD ou DVD dans un fichier.

JAMMA : Japan Amusement Machinery Manufacturers Association, une norme de connexion pour permettre l’interopérabilité entre les bornes d’arcade de différents constructeurs, pour pouvoir changer le jeu sans changer toute la borne.

Libretro : une bibliothèque destinée aux programmeurs pour standardiser les émulateurs sur certains aspects (gestion de la manette, de l’affichage…) et ainsi avoir une configuration commune.

NAS : Network Area Storage, un disque dur branché en réseau.

NTSC : la norme d’affichage des TV CRT dans une grande partie de l’Amérique (le Nord et une partie du Sud), au Japon, et quelques pays Asiatiques. Correspond à du 480i ou 243p en 60Hz. A une moins bonne résolution et de légèrement moins bonnes couleurs que le PAL, mais un bien meilleur framerate.

NUC : Next Unit of Computing, un standard de micro PC développé par Intel. Permet d’être beaucoup plus puissant qu’un Rasbperry Pi avec une taille similaire (11×11 cm vs 9×6 cm), mais aussi beaucoup plus cher (minimum 200€ un NUC vs 40€ un Pi).

MAME : Multiple Arcade Machine Emulator, un célèbre émulateur de bornes d’arcade, qui est aujourd’hui capable d’émuler à peu près toutes les machines existantes. Les versions récentes se focalisent sur la précision de l’émulation, et il est possible de jouer à la plupart des systèmes avec uniquement MAME.

Marquee : le bandeau lumineux qui était affiché au-dessus de la borne d’arcade pour indiquer le nom du jeu.

MVS : Multi Video System, l’appellation de la version arcade de la NeoGeo.

Overclocking : augmenter la vitesse du processeur au-delà de sa vitesse normale. Lui permet d’être plus puissant au prix d’une chauffe accrue et de potentiels plantages.

Overlay : sur les bornes d’arcade, correspondent aux décorations par-dessus l’écran dans les premiers jeux primitifs, pour ajouter des graphismes ou de la couleur avec un calque semi-transparent (comme dans Space Invaders). Aujourd’hui, peut être utilisé pour décrire les contrôles tactiles affichés par-dessus l’écran sur smartphone (par exemple), ou les décorations autour de l’image, en remplacement abusif de bezel.

Overscan : les télévisions CRT étaient conçues de telle sorte qu’une partie de l’image était masquée par les bordures en plastique qui tenaient le tube : le balayage du faisceau d’électrons servant à générer l’image, allait “trop loin”, d’où le “over” (trop loin) “scan” (balayage). Certains jeux, notamment sur NES, utilisent cette caractéristique pour masquer des morceaux de jeu qui ne sont pas censés être vus. Pour des raisons de compatibilité lors de la transition vers la HD, c’est un système qui existe toujours aujourd’hui sur nos grosses TV 4K totalement numériques.

PAL et SECAM : la norme d’affichage des TV CRT en Europe et en Russie, une partie de l’Amérique du Sud, en l’Afrique, et une grande partie de l’Asie et de l’Océanie. Correspond à du 576i ou 288p en 50Hz. A une meilleure résolution et de légèrement meilleures couleurs que le NTSC, mais un framerate inférieur. Le PAL et le SECAM ont des résultats identiques (avec de légers changements dans les couleurs) mais des contraintes techniques différentes.

PCB : Printed Circuit Board, ou circuit imprimé, grosso modo la plaque de plastique sur laquelle sont soudées les puces. Peut désigner tous les circuits imprimés de tous les appareils électroniques (il y a même des minuscules PCB dans les prises des câbles USB), mais dans le contexte de l’arcade, le terme désigne généralement la carte qui contient le jeu.

Paddle : peut désigner plusieurs choses. Terme utilisé pour désigner les raquettes du tennis de table, il est utilisé pour décrire les “raquettes” des jeux de type Pong, puis pour le genre en général, puis pour les contrôleurs de ces jeux : une sorte de potentiomètre (bouton rotatif).

Péritel, SCART : une norme de prise pour les TV CRT, qui peut transmettre aussi bien du composite que du RGB, ainsi que d’autres signaux.
Pixel Perfect : les TV CRT n’avaient pas de résolution fixe (en fait si mais je ne vais pas entrer dans les détails techniques), il était donc possible de leur envoyer des images de différentes résolutions sans dégradation visible de la qualité. A l’inverse, un écran LCD est composé de “pixels” physiques, fixes et inamovibles. Envoyer une image de 300 lignes sur un affichage composé de 1000 lignes physiques va donc afficher les “pixels d’image” sur 3 lignes, et… un petit bout de la suivante, ce qui est impossible ; en mouvement, cela peut créer un effet de “déplacement” des pixels qui changent de nombre de lignes d’affichage, ce qui peut être très désagréable selon le jeu, l’affichage, et votre sensibilité au phénomène. Le “pixel perfect” est un mode d’affichage qui choisit une résolution multiple de la résolution d’origine : sur un écran 1080p, un jeu en 240p sera affiché sur 960 pixels (240*4). L’avantage est d’éliminer les problèmes sus-cités, l’inconvénient est d’avoir une surface d’affichage réduite.

PPU : voir GPU

Progressive : une méthode d’affichage qui affiche tous les pixels à l’écran, par opposition à entrelacé (voir interlaced). En pratique, la seule méthode d’affichage encore utilisée.

Raspberry Pi : un nano-ordinateur de la taille d’une carte de crédit et qui coûte à peine 40€, destiné aux étudiants et aux bricoleurs, ses ports GPIO programmables permettant de contrôler à peu près tout et n’importe quoi. Son format compact, son prix réduit, sa puissance suffisante pour émuler toutes les consoles jusqu’à la Playstation, et sa consommation réduite, l’ont rendu très populaire chez les amateurs d’émulation. Il y a de nombreux concurrents, mais aucun n’atteint la popularité du Pi.

Recalbox, Retropie : des distributions populaires principalement utilisées sur Raspberry Pi. Intègrent Retroarch et EmulationStation sur un système Linux.

Retroarch : un front-end pour les émulateurs Libretro, très puissant mais assez difficile à appréhender.

RGB : Red Green Blue, une norme de connexion des TV CRT de très bonne qualité, mais un peu plus chère à implémenter que le composite, et donc souvent absente des TV et des consoles en occident.

RAM : Random Access Memory, ou mémoire vive. Une mémoire rapide qui permet de stocker temporairement des informations, et se vide à l’extinction du courant. Aujourd’hui n’importe quel smartphone possède 4Go de RAM, la NES n’en possédait que 4Ko (2 pour le CPU, 2 pour le PPU), soit un millionième.

ROM : Read Only Memory, peut désigner n’importe quel stockage qui ne disparaît pas à la coupure de courant. Généralement utilisé pour désigner les puces dans lesquelles étaient stockées les informations des jeux, et par extension, les fichiers des jeux que l’on télécharge, qui sont des images de ces puces.

Romset : set à designer la collection complète de jeux d’une console. Un romset NES complet tourne autour de 1000 jeux, sans compter les hacks.

Runahead : Technique récemment implémentée dans Libretro qui permet de diminuer l’input lag en faisant tourner plusieurs émulateurs en parallèle, pour… écoutez, c’est compliqué. Allez voir une explication sur byuu.net.

Scanlines : une ligne d’affichage du faisceau d’électrons sur un écran CRT. Par abus de langage, est utilisé aujourd’hui pour désigner les lignes sombres entre les lignes d’affichage.

Scraper : littéralement “gratteur” ou “récolteur”, un outil qui va récupérer diverses informations (nom, description, images, etc) sur une rom afin de les afficher dans un front-end.

Shader : un micro-programme qui tourne sur le GPU. Fondation des jeux vidéo modernes pour afficher les jeux, dans le contexte de l’émulation, sert généralement à désigner des modificateurs d’affichage qui permettent de simuler l’affichage des écrans CRT ou des anciens LCD, car les jeux de l’époque étaient prévus pour ces affichages.

Spinner : un contrôleur rotatif, parfois sans “borne” et pouvant donc tourner à l’infini. Utilisé dans les paddles, mais aussi dans les volants.

Sprite : un élément d’affichage dans les jeux 2D : personnage, ennemi, tir, etc.

Stick rotatif : un joystick qui intègre un spinner à crans, et peut donc à la fois être incliné et pivoté. Utilisé dans les jeux comme Ikari, son manque de popularité est dû à son coût de fabrication élevé associé à une certaine fragilité, ce qui est une très mauvaise combinaison.

Tearing : littéralement “déchirure”. Quand la machine demande à l’écran d’afficher une nouvelle image alors que la précédente n’a pas fini d’être affichée, on voit une moitié d’image en haut, et la moitié d’une autre image en bas.

Throttling : les CPU modernes intègrent des capteurs de chaleur qui leur permettent de diminuer leur fréquence lorsqu’ils atteignent une certaine température : c’est le throttling. Le système est particulièrement visible lorsque vous utilisez un Pi pour faire de l’émulation alors que celui-ci n’est pas correctement refroidi.

VGA : Video Graphics Array, une norme de connexion pour les écrans CRT de PC, que certaines TV HD ont adopté. A ne pas confondre avec le RGB, qui n’a pas grand-chose à voir.

YUV : une norme d’encodage de couleurs dont dérivent les formats NTSC et PAL, mais par abus de langage, désigne souvent YPbPr, une norme de connexion des écrans CRT, de qualité supérieur au RGB, et brièvement utilisé par certaines versions de certaines consoles, notamment la Gamecube et la Wii.