Pergunta

Eu tenho feito algumas leituras sobre as pessoas construindo um emulador para o Wii e parece que, dado que não é nada mais do que uma reforçada GameCube, ou o Nintendo64, então o que faz emuladores compilação para esses sistemas tão difícil?

Em um bocado ligeiro de uma nota lado do hardware para estes sistemas é surpreendentemente baixo:
Wii:
729MHz CPU PPC
88 MB de memória
243MHz GPU
N64:
93.75MHz CPU (64-bit)
4MB de memória

Foi útil?

Solução

A arquitetura de CPU para consolas de jogos é muitas vezes um pouco exótica em comparação com a sua máquina desktop média. Emulação meios para executar em tudo software que o hardware original fez. Ou seja, enquanto o console original pode ter tido gráfica dedicada, áudio, etc. fichas, bem como uma CPU com um conjunto de instruções diferentes, o emulador deve executar todas as funções desses recursos paralelos em velocidade.

A menos que GPU do console é velho, é quase certo que deve ser emulado na GPU da máquina host, como placas gráficas modernas, mesmo os mais baratos, têm muitas vezes a taxa de transferência (para cargas de trabalho gráficos), mesmo dos mais CPUs multicore caros . Para agravar esta dificuldade é o fato de que a comunicação entre CPU, GPU, quaisquer outros DSPs a bordo, e memória provavelmente foi altamente otimizado na consola para aproveitar as especificidades da configuração de hardware, e, portanto, esses recursos devem ser tão bem adaptado de taxa.

Para agravar todas estas dificuldades, geralmente pouco se sabe sobre os detalhes de hardware do console, como este é mantido muito em segredo por design. A engenharia reversa está ficando cada vez menos viável para amadores para fazer.

Para colocar as coisas em perspectiva, um simulador de arquitetura (um programa que pode ser executado, por exemplo, um programa de PowerPC em uma máquina x86 e recolher todos os tipos de estatísticas sobre o assunto) pode funcionar entre 1000x e 100000x mais lento do que em tempo real. simulação de um RTL (a simulação de todas as portas e flip-flops que compõem um chip) de um processador moderno normalmente só pode ser executado entre 10 Hz e algumas centenas de Hz. emulação Mesmo muito otimizado é provável que seja entre 10 e 100 vezes mais lento do que o código nativo, limitando assim o que pode ser emulado convincente hoje (particularmente dada a interatividade em tempo real implícito um emulador de consola de jogos).

Outras dicas

Há uma série de razões pelas quais emulação é difícil.

  1. Emulando um sistema requer muito mais poder do que o sistema de destino

Às vezes o sistema anfitrião precisa de uma ordem de magnitude mais energia (velocidade) do que o sistema de destino. Isso é fácil de entender se você considerar as necessidades da máquina host para fazer todo o trabalho do sistema original e depois um pouco mais trabalho para gerenciar toda a comunicação entre os componentes ao mesmo tempo, compartilhando os recursos do sistema com outras aplicações. É por isso que é preciso um processador de 2 GHz para fielmente emular um SNES, que é executado em um 21MHz míseros.

  1. Às vezes, os conjuntos de instruções e / ou funcionamento de subsistemas são desconhecidos para as pessoas

A maioria dos hardware é essencialmente uma caixa preta e entender como ele funciona é descoberto através de engenharia reversa, que tem um monte de tempo e paciência. Para não mencionar, as empresas tentam o seu melhor para fazer engenharia reversa difícil e empresas têm obtido muito melhor a este post Playstation 1 era.

  1. A falta de pessoas construindo emuladores

Emulação é uma área de nicho bonita que requer uma grande quantidade de conhecimentos práticos em muitos domínios. Para ser franco, não há um monte de pessoas capazes de emular muitos dos sistemas modernos. Emulando estes sistemas leva muito tempo e esforço e só o mais dedicado vai realmente fazê-lo.

Escrevendo emuladores é difícil porque você deve exatamente / completamente / absolutamente replicar disse que o comportamento hardware, incluindo-o de comportamento OS em software.

Escrita emuladores de consoles mais antigos era, em alguns casos mais difíceis do que escrever emuladores de consoles modernos. Porque, muitas consoles modernos usam alguma forma de Linux ou * nix assim uma vez que o hardware é emulado software é uma questão de dumping BIOS da máquina e controlando o controle.

consoles mais velhos fez tudo em hardware, o que significa que a engenharia reversa desempenhou um papel muito maior. Você precisava de muito bons hackers baixo nível para ajudá-lo a documentar como o antigo console funcionou eo que cada número mágico significava.

Hoje, não há números mágicos menos, mas cartões GFX vez padrão e CPUs. Embora hardware moderno tem muito mais instruções e bugigangas brilhantes para emular. Muito do que os consoles mais modernos fazem é bem documentada, ao contrário de consoles mais antigos.

É apenas porque o programa de jogo é escrito para esse hardware específico para que ele possa utilizar o seu todos os benefícios de hardware. Mesmo se você tem um super computador não pode executar corretamente uma determinada programas que podem não se comunica com o hardware do computador em si super. A mesma situação se você rodar jogos de PC em consoles como o PS3 / 4 ou Xbox One. A única emulador que funciona 99% é Snes emulador e PS1.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top