Perché è così difficile sviluppare un emulatore di console di gioco?


14

Ho sempre trovato gli emulatori piuttosto affascinanti. Vorrei seriamente creare un emulatore per una console di ganeration o un palmare più vecchi. Mi aiuterebbe ad apprezzare maggiormente l'hardware e i giochi creati per quell'hardware. Tuttavia, la gente dice sempre quanto sia difficile e che non dovrei nemmeno provare. Vorrei sapere perché.

Inoltre, vorrei alcuni suggerimenti su un buon punto di partenza e dove posso trovare le informazioni di cui ho bisogno?

Risposte:


15

Quindi domanda

Questa sembra essere una risorsa popolare su come funzionano.

TL; DR - L'architettura è totalmente diversa e questo richiede molte risorse parallele per ottenere l'architettura originale.

L'architettura della CPU per le console di gioco è spesso alquanto esotica rispetto alla tua macchina desktop media. Emulazione significa eseguire nel software tutto ciò che l'hardware originale ha fatto. Cioè, mentre la console originale potrebbe avere chip grafici, audio, ecc. Dedicati nonché una CPU con un set di istruzioni diverso, l'emulatore deve eseguire tutte le funzioni di queste risorse parallele alla velocità.

A meno che la GPU della console non sia vecchia, quasi sicuramente deve essere emulata sulla GPU della macchina host, poiché le schede grafiche moderne, anche quelle economiche, hanno molte volte il throughput (per i carichi di lavoro grafici) anche delle CPU multicore più costose. Ad aggravare questa difficoltà sta il fatto che la comunicazione tra CPU, GPU, qualsiasi altro DSP integrato e memoria è stata probabilmente altamente ottimizzata sulla console per trarre vantaggio dalle specifiche della configurazione hardware, e quindi anche queste risorse devono essere abbinate alla velocità.

A complemento di tutte queste difficoltà, di solito si sa poco sui dettagli dell'hardware della console, poiché questo è tenuto molto nascosto dalla progettazione. Il reverse engineering sta diventando sempre meno fattibile per gli appassionati.

Per mettere le cose in prospettiva, un simulatore architettonico (un programma che può eseguire, ad esempio, un programma PowerPC su una macchina x86 e raccogliere tutti i tipi di statistiche su di esso) potrebbe funzionare tra 1000x e 100000x più lentamente del tempo reale. Una simulazione RTL (una simulazione di tutte le porte e le infradito che compongono un chip) di una CPU moderna di solito può funzionare solo tra 10Hz e alcune centinaia di Hz. Anche un'emulazione molto ottimizzata sarà probabilmente tra 10 e 100 volte più lenta del codice nativo, limitando così ciò che può essere emulato in modo convincente oggi (in particolare data l'interattività in tempo reale implicita da un emulatore di console di gioco).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.