Pourquoi est-il si difficile de développer un émulateur de console de jeu?

14

J'ai toujours trouvé les émulateurs plutôt fascinants. Je voudrais sérieusement créer un émulateur pour une ancienne console de gestion ou un ordinateur de poche. Cela m'aiderait à mieux apprécier le matériel et les jeux créés pour ce matériel. Cependant, les gens disent toujours à quel point c'est difficile et que je ne devrais même pas essayer. Je voudrais savoir pourquoi.

Aussi, j'aimerais avoir des suggestions sur un bon endroit pour commencer et où puis-je trouver les informations dont j'ai besoin?

Mike
la source

Réponses:

15

SO Question

Cela semble être une ressource populaire sur leur fonctionnement.

TL; DR - L'architecture est totalement différente, et cela prend beaucoup de ressources parallèles pour réaliser l'architecture d'origine.

L'architecture CPU des consoles de jeu est souvent quelque peu exotique par rapport à votre ordinateur de bureau moyen. L'émulation signifie effectuer dans le logiciel tout ce que le matériel d'origine a fait. Autrement dit, alors que la console d'origine peut avoir des puces graphiques, audio, etc. dédiées ainsi qu'un processeur avec un jeu d'instructions différent, l'émulateur doit exécuter toutes les fonctions de ces ressources parallèles à grande vitesse.

À moins que le GPU de la console ne soit ancien, il doit presque certainement être émulé sur le GPU de la machine hôte, car les cartes graphiques modernes, même bon marché, ont plusieurs fois le débit (pour les charges de travail graphiques) des processeurs multicœurs même les plus chers. Cette difficulté est aggravée par le fait que la communication entre le processeur, le GPU, tout autre DSP intégré et la mémoire a probablement été hautement optimisée sur la console pour tirer parti des spécificités de la configuration matérielle, et par conséquent, ces ressources doivent également être adaptées au débit.

Pour aggraver toutes ces difficultés, on sait généralement peu de choses sur les spécificités du matériel de la console, car cela est très bien dissimulé par conception. L'ingénierie inverse devient de moins en moins réalisable pour les amateurs.

Pour mettre les choses en perspective, un simulateur architectural (un programme qui peut exécuter, par exemple, un programme PowerPC sur une machine x86 et collecter toutes sortes de statistiques à ce sujet) peut fonctionner entre 1000x et 100000x plus lentement qu'en temps réel. Une simulation RTL (une simulation de toutes les portes et bascules qui composent une puce) d'un processeur moderne ne peut généralement fonctionner qu'entre 10 Hz et quelques centaines de Hz. Même une émulation très optimisée est susceptible d'être 10 à 100 fois plus lente que le code natif, limitant ainsi ce qui peut être émulé de manière convaincante aujourd'hui (en particulier compte tenu de l'interactivité en temps réel impliquée par un émulateur de console de jeu).

Le canard communiste
la source