Warum ist es so schwierig, einen Spielkonsolenemulator zu entwickeln?

14

Ich fand Emulatoren immer ziemlich faszinierend. Ich möchte ernsthaft einen Emulator für eine ältere Ganeration-Konsole oder einen Handheld erstellen. Es würde mir helfen, die Hardware und die Spiele, die für diese Hardware entwickelt wurden, besser zu verstehen. Die Leute sagen jedoch immer, wie schwer es ist und dass ich es nicht einmal versuchen sollte. Ich würde gerne wissen, warum das so ist.

Außerdem möchte ich einige Vorschläge für einen guten Einstieg haben und wo finde ich die Informationen, die ich benötige?

Mike
quelle

Antworten:

15

SO Frage

Dies scheint eine beliebte Ressource für die Funktionsweise zu sein.

TL; DR - Die Architektur ist völlig anders, und dies erfordert viele parallele Ressourcen, um die ursprüngliche Architektur zu erreichen.

Die CPU-Architektur für Spielekonsolen ist im Vergleich zu einem durchschnittlichen Desktop-Computer oft etwas exotisch. Emulation bedeutet, dass in der Software alles ausgeführt wird, was die ursprüngliche Hardware getan hat. Das heißt, während die ursprüngliche Konsole möglicherweise dedizierte Grafik-, Audio- usw. Chips sowie eine CPU mit einem anderen Befehlssatz hatte, muss der Emulator alle Funktionen dieser parallelen Ressourcen mit Geschwindigkeit ausführen.

Wenn die GPU der Konsole nicht alt ist, muss sie mit ziemlicher Sicherheit auf der GPU des Hostcomputers emuliert werden, da moderne, auch billige Grafikkarten den vielfachen Durchsatz (für Grafik-Workloads) selbst der teuersten Multicore-CPUs aufweisen. Diese Schwierigkeit wird durch die Tatsache verschärft, dass die Kommunikation zwischen CPU, GPU, anderen integrierten DSPs und Speicher auf der Konsole wahrscheinlich stark optimiert wurde, um die Besonderheiten der Hardwarekonfiguration zu nutzen. Daher müssen auch diese Ressourcen an die Rate angepasst werden.

Bei all diesen Schwierigkeiten ist in der Regel wenig über die Besonderheiten der Konsolenhardware bekannt, da dies vom Design her weitgehend unter Verschluss gehalten wird. Reverse Engineering wird für Bastler immer weniger machbar.

Ein Architektursimulator (ein Programm, das beispielsweise ein PowerPC-Programm auf einem x86-Computer ausführen und alle Arten von Statistiken darüber erfassen kann) kann zwischen 1000x und 100000x langsamer als in Echtzeit ausgeführt werden. Eine RTL-Simulation (eine Simulation aller Gates und Flip-Flops, aus denen ein Chip besteht) einer modernen CPU kann in der Regel nur zwischen 10 Hz und einigen hundert Hz ausgeführt werden. Selbst eine sehr optimierte Emulation ist wahrscheinlich 10- bis 100-mal langsamer als nativer Code, wodurch die derzeit überzeugende Emulation eingeschränkt wird (insbesondere angesichts der von einem Spielkonsolenemulator implizierten Interaktivität in Echtzeit).

Die kommunistische Ente
quelle