Serpientes y escaleras: emulador de Game Boy en Python
Si Gameboy fue parte de tu infancia, probablemente hayas soñado más de una vez con pasar todo el día escolar con él. Bueno, tuvieron que esperar unos años más para eso, pero finalmente en 2015, [Asger], [baekalfen], y [troelsy] Realizó ese sueño cuando crearon un emulador de Game Boy en Python para un proyecto universitario. Sin embargo, no se detuvo allí, y desde entonces el emulador se ha convertido en un proyecto completo de código abierto, PyBoy, que acaba de llegar a la versión 1.0.
Dado que comenzó como un proyecto académico, los tres tuvieron que hacer su investigación en consecuencia, por lo que los antecedentes y la teoría de la función interna de Game Boy y el emulador que escribieron se resumen en un informe publicado junto con el código fuente. Todavía queda trabajo por hacer y, lamentablemente, todavía no hay un buen soporte implementado, pero en su mayor parte es completamente funcional y le permite reproducir con éxito sus propios cartuchos extraídos o cualquier archivo ROM que tenga en su poder.
Al ser un emulador, también puede inspeccionar su vida interna cuando se ejecuta en modo de depuración y observar los elfos, los mosaicos y los datos mientras juega, además es bueno cómo reproducir la copia al revés como se muestra en el clip a continuación. simplemente cargue el ejemplo en sus propios scripts de Python y comience a escribir sus propios robots para sus juegos, algo que hemos visto antes en acción para NES. Y si quieres sumergirte realmente en el mundo de Game Boy, definitivamente tienes que ver al 33c3 hablar de ello.
Ver una publicación en imgur.com
Gravis dice:
¿Un emulador en Python? ¡Oye! Hablar de arriba.
Sergio Costas dice:
En su lugar, utilicé un programa en Python para generar automáticamente un código C para el emulador Z80 a partir de una descripción de texto del conjunto de instrucciones.
baekalfen dice:
Usamos Cython para generar un código C a partir del código Python. Esto significa que obtenemos velocidades comparables a las implementaciones de C / C ++.