Como é que a emulação PS3 pode ser possível agora?
Máquinas Virtuais (também conhecidas como emuladores) são um hobby meu, portanto isto é algo que eu entendo em detalhes. Portanto, as outras respostas não são necessariamente incorretas, mas falam em abstrato. Vou falar sobre detalhes técnicos. Se você não'não quer detalhes técnicos, basta ver as outras respostas para as respostas gerais não técnicas.
Agora I'vou falar sobre a N64. Ai sim? Sim. Fique comigo aqui.
O ano foi 1998. A máquina mais poderosa que tinha sido emulada era o Neo Geo. A regra geral era que para correr a toda a velocidade era preciso um computador 10-12x mais potente que o hardware original.
"Fake" PS1 e emuladores N64 vagueavam pela terra, enganando os tolos na instalação de vírus. Todos os que sabiam de alguma coisa sabiam que seriam dez anos antes que esses emuladores pudessem ser reais. Emular as consolas genéricas actuais era...impossível. Certo?
Então uma nova equipe anunciou que estava fazendo um emulador chamado "bleem!" Era um emulador PS1. Eles anunciaram que estava "a chegar em breve". Eles disseram que ele iria jogar uma extensa lista de jogos AAA a toda velocidade e sem falhas. Disseram que ia custar dinheiro. Algumas pessoas ficaram entusiasmadas. A maioria sabia que era outro embuste. Era impossível. Certo?
Mas acabou por ser real. Só que na altura em que foi lançado, era' já não era nada de especial. Porquê?
Porque enquanto eles estavam ocupados construindo hype durante meses e meses, outra equipa largou o UltraHLE do nada, três meses antes do lançamento do Bleem. O mundo da emulação tem muita merda. UltraHLE emulou os mundos atuais mais poderosos dispositivos não-PC, a toda velocidade se você tivesse uma boa máquina. Múltiplos jogos AAA eram totalmente jogáveis, muitos outros jogos funcionavam com falhas. Perguntou-se aos autores como o faziam. A resposta deles estava parcialmente no nome. Duas novas técnicas:
- Dynarec - tradicionalmente os emuladores fazem o seu trabalho por intérpretes. Você escreve algum código que literalmente lê uma instrução da memória, e procura o que essa instrução deve fazer em uma tabela, e então executa um pequeno bloco de código que é equivalente. Você tem que lidar com muitos pequenos detalhes, incluindo horários e endereços encurralados e interrupções. Por causa de todos esses detalhes, executar uma instrução requer no mínimo 8-10 instruções, daí a regra de que você precisava de pelo menos 10x a potência para emular. UltraHLE usou uma técnica relativamente nova chamada recompilação dinâmica (dynarec). Em vez de olhar para cada instrução e apenas escrever algum código que possa fazer o que ela diz, dynarec lê blocos de instruções e escreve blocos equivalentes de código de máquina para o computador hospedeiro. Ele faz isso sempre que atinge um bloco de código que não reconhece't, depois se lembra dele. Assim, no primeiro segundo do jogo em execução, o motor traduziu literalmente a maior parte do programa para um programa maioritariamente nativo do seu computador. Uma vez atingido esse ponto, você pode executar o programa em algo mais próximo da velocidade máxima. Isto trouxe a potência de computação necessária para o UltraHLE de 10x para cerca de 3x. A propósito, esta é a mesma técnica usada hoje em dia para muitas linguagens modernas como C# e Java.
- HLE - O outro truque. Jogos de máquinas mais antigas eram codificados em assembly, e quando falavam com hardware periférico como áudio ou gráficos ou controladores, eles escreviam assembly que os controlava diretamente. Então não só era preciso emular com precisão o processador da CPU, como também as unidades Gráficas e de Áudio. Isto torna as coisas ainda mais intensivas, e exigiu uma coordenação super precisa do tempo entre os processadores. Mas na era N64 os jogos eram escritos principalmente em C, e os fabricantes de consoles estavam fornecendo sistemas operacionais brutos e bibliotecas para esconder os detalhes da conversação com periféricos. Então os autores da UltraHLE descobriram que, em vez de emular a máquina inteira, tudo o que tinham de emular era a CPU principal, e depois podiam simplesmente falsificar o sistema operacional e as bibliotecas usando chamadas para o sistema operacional do computador. Eles chamaram isso de "emulação de alto nível" (HLE).
A combinação dessas duas técnicas tornou isso possível. E para qualquer sistema mais novo do que o N64, eles apenas têm sistemas operacionais e bibliotecas cada vez mais sofisticados que melhor escondem os detalhes dos periféricos. E isso só torna a emulação do HLE cada vez mais fácil.
Adicionalmente, desde o N64, cada geração de consoles está ficando cada vez mais parecida com um PC. E quando o sistema que você está emulando é semelhante à máquina host, você pode aproveitar melhor o poder da máquina host para que ela faça trabalhos equivalentes, tornando a emulação mais precisa com menos trabalho para o computador.
É por isso que a PS3 e até mesmo a Wii U, que é tecnicamente mais poderosa e menos parecida com um PC, é possível tão cedo. Espero que a XBox One e a PS4 sejam ainda mais fáceis e feitas ainda mais cedo, uma vez que agora são apenas PCs de gama baixa glorificados.
Artigos semelhantes
- Você pode baixar jogos PS3 gratuitamente online e transferi-los para uma PS3, como é feito com jogos de PC? Em caso afirmativo, em que links?
- Emulação (jogos de vídeo): É possível executar o OS X em um PSP?
- Haverá algum dia um método melhor para preservar os videojogos do que a emulação? Este método poderia ser legal?
- Você acha que o PS4 pode ser compatível com jogos do PS3 através de uma atualização do sistema?