Come può essere possibile l'emulazione PS3 ora?
Le macchine virtuali (aka emulatori) sono un mio hobby, quindi questo è qualcosa che capisco in dettaglio. Quindi le altre risposte non sono necessariamente errate, ma parlano in astratto. Parlerò dei dettagli tecnici. Se non volete dettagli tecnici, basta vedere le altre risposte per le risposte generali non tecniche.
Ora parlerò del N64. Eh? Si. Resta con me.
L'anno era il 1998. La macchina più potente che era stata emulata era il Neo Geo. La regola generale era che per funzionare a piena velocità era necessario un computer 10-12 volte più potente dell'hardware originale.
Emulatori "falsi" di PS1 e N64 vagavano per il paese, ingannando gli sciocchi a installare virus. Tutti quelli che sapevano qualcosa sapevano che ci sarebbero voluti dieci anni prima che quegli emulatori potessero essere reali. Emulare le console della generazione attuale era... impossibile. Giusto?
Poi un nuovo team annunciò che stava facendo un emulatore chiamato "bleem!". Era un emulatore PS1. Hanno annunciato che era "in arrivo". Sostenevano che avrebbe riprodotto un'ampia lista di giochi AAA alla massima velocità e senza glitch. Dissero che sarebbe costato. Alcune persone erano eccitate. La maggior parte sapeva che era un'altra bufala. Era impossibile. Giusto?
Ma si è rivelato essere reale. Solo che al momento del rilascio, non era più un grosso problema. Perché?
Perché mentre loro erano impegnati a costruire hype per mesi e mesi, un altro team ha lanciato UltraHLE dal nulla, tre mesi prima del rilascio di Bleem. Il mondo dell'emulazione si è cagato sotto. UltraHLE emulava l'attuale dispositivo non-PC più potente al mondo, alla massima velocità se si aveva una buona macchina. Molti giochi AAA erano completamente giocabili, molti altri giravano con dei glitch. Agli autori è stato chiesto come hanno fatto. La loro risposta era parzialmente nel nome. Due nuove tecniche:
- Dynarec - tradizionalmente gli emulatori fanno il loro lavoro tramite interpreti. Si scrive del codice che legge letteralmente un'istruzione dalla memoria, e cerca in una tabella ciò che quell'istruzione dovrebbe fare, e poi esegue un piccolo blocco di codice che è equivalente. Dovete gestire un sacco di piccoli dettagli, inclusi i tempi, gli indirizzi intrappolati e gli interrupt. A causa di tutti questi dettagli, l'esecuzione di un'istruzione richiedeva almeno 8-10 istruzioni, da qui la regola che serviva almeno 10 volte la potenza per emulare. UltraHLE usava una tecnica relativamente nuova chiamata ricompilazione dinamica (dynarec). Invece di guardare ogni istruzione e scrivere semplicemente del codice che possa fare ciò che dice, dynarec legge blocchi di istruzioni e scrive blocchi equivalenti di codice macchina per il computer ospite. Lo fa ogni volta che incontra un blocco di codice che non riconosce, poi lo ricorda. Così entro i primi secondi di esecuzione del gioco, il motore ha letteralmente tradotto la maggior parte del programma in un programma per lo più nativo per il vostro computer. Una volta raggiunto quel punto, è possibile eseguire il programma a qualcosa di più vicino alla piena velocità. Questo ha portato la potenza di calcolo necessaria per UltraHLE da 10x a circa 3x. Per inciso, questa è la stessa tecnica usata oggi per molti linguaggi moderni come C# e Java.
- HLE - L'altro trucco. I giochi delle vecchie macchine erano codificati in assembly, e quando si parlava di hardware periferico come audio o grafica o controller, si scriveva l'assembly che li controllava direttamente. Quindi non solo si doveva emulare accuratamente il processore della CPU, ma anche le unità grafiche e audio. Questo rendeva le cose ancora più intense, e richiedeva una coordinazione dei tempi super accurata tra i processori. Ma all'epoca del N64 i giochi erano scritti per lo più in C, e i produttori di console fornivano sistemi operativi grezzi e librerie per nascondere i dettagli della comunicazione con le periferiche. Così gli autori di UltraHLE capirono che piuttosto che emulare l'intera macchina, tutto ciò che dovevano emulare era la CPU principale, e poi potevano semplicemente simulare il sistema operativo e le librerie usando chiamate al sistema operativo del computer. Lo chiamarono "emulazione di alto livello" (HLE).
La combinazione di queste due tecniche lo rese possibile. E per qualsiasi sistema più recente del N64, hanno semplicemente sistemi operativi e librerie sempre più sofisticati che nascondono meglio i dettagli delle periferiche. E questo rende l'emulazione HLE sempre più facile.
Inoltre, sin dal N64, ogni generazione di console sta diventando sempre più simile a un PC. E quando il sistema che si sta emulando è simile alla macchina ospite, si può sfruttare meglio la potenza della macchina ospite per farle fare lavori equivalenti, rendendo l'emulazione più accurata con meno lavoro per il computer.
Questo è il motivo per cui PS3 e anche Wii U, che è tecnicamente più potente e meno simile a un PC, è possibile così presto. Mi aspetto che XBox One e PS4 siano ancora più facili e fatte ancora prima, dato che ora sono solo dei PC glorificati di fascia bassa.
Articoli simili
- Si possono scaricare gratuitamente online i giochi per PS3 e trasferirli su una PS3, come si fa con i giochi per PC? Se sì, su quali link?
- Emulazione (videogiochi): È possibile eseguire OS X su una PSP?
- Ci sarà mai un metodo migliore dell'emulazione per conservare i videogiochi? Questo metodo potrebbe essere legale?
- Perché l'emulazione di Amiga è così complicata e difficile?