Rodando jogos de Nintendinho no Linux. Não é emulador. Não é remake.

A gente procura se manter fora do assunto videogames, pois nossa raison d’être são os computadores. Clássicos. (Menos o seu PC, que é velho.) Mas volta e meia acontece algo no universo videogamístico que a gente simplesmente tem que mencionar.

E o que foi feito aqui, repetindo, não é um emulador nem um remake. Foi algo várias ordens de magnitude mais heavy metal. Veja abaixo:


http://www.youtube.com/watch?v=Wn32zePbFpc

O que Andrew Kelley fez (tentando explicar de maneira simplificada) foi disassemblar o código 6502 do jogo, e depois recompilá-lo nativamente para o Linux usando o LLVM e o Clang. Detalhe: tudo automaticamente!

Veja os detalhes sórdidos aqui. O processo tem limitações, claro. Só funciona com cartuchos simples, sem mumunhas internas tipo mapeador de memória. E a inteligência artificial do bicho monstro não consegue lidar com certos truques de programação. Mas convenhamos, pela mãe do guarda!

(BR-Linux)

Sobre Juan Castro

Juan Castro é uma das mentes em baixa resolução que compõem o Governo de Retrópolis – a única cujo Micro Formador não foi o MSX (e sim o TRS-80). Idealizador, arquiteto e voz do Repórter Retro. Com exceção do nome, que foi ideia do Cesar.

0 pensou em “Rodando jogos de Nintendinho no Linux. Não é emulador. Não é remake.

  1. Lá vou eu ser o chato de novo, mas…

    Não é novidade nem tem nada de mais fazer isso. Um monte de emuladores já fazem, internamente, conversão de assembly da máquina emulada para o assembly do host, inclusive usando a LLVM, e melhor, dinamicamente, ao invés da maneira estática (se fizer dinamicamente você consegue inclusive lidar com várias das limitações nas quais o Andrew Kelley esbarrou).

    Por exemplo, veja essa dissertação de mestrado de 2010 sobre usar LLVM para recompilação dinâmica (just in time) para emuladores:
    http://www.llvm.org/pubs/2010-01-Wennborg-Thesis.html