Duplicar posible:
How do emulators work and how are they written?¿Cómo aprendo a escribir un emulador de consola?
me gustaría intentar escribir un emulador de gameboy básica, o tal vez incluso NES. Conozco los conceptos básicos de C y soy bastante bueno en Java, así que conozco los conceptos básicos necesarios para la programación. Sin embargo, lo que no sé es cómo las personas procesan todos los datos en un programa C y crean un emulador. Sé que debo aprender de la fuente, pero es difícil ver un montón de líneas de código sin saber por qué están allí y qué se supone que deben hacer. ¿Dónde se supone que debo comenzar si quiero aprender a escribir un emulador así?
He buscado en Internet, pero solo he encontrado tutoriales confusos que contienen demasiados errores para resolverlos por mi cuenta. ¿Dónde se supone que debo comenzar?
Tengo una colección de simuladores http://github.com/dwelch67 Lo que hay que aprender primero es el lenguaje ensamblador para la cpu de destino, luego trabajar en un desensamblador que desmonta en orden de ejecución , en algún momento puede comenzar a convertirlo en el simulador de conjunto de instrucciones. Luego tienes que hacer emuladores para todos los periféricos. Por lo tanto, necesitará buenos documentos para el sistema que está emulando. –
Otro enfoque es un traductor binario estático, SBT. http://www.dwelch.com/ipod/asteroids.htm es uno que hice para el ipod (clásico). Tengo mucho más trabajo en eso desde ese lanzamiento, aunque no publicado en ninguna parte. Un buen tutorial sobre el tema. http://www.gtoal.com/sbt/ también puede hacer una traducción dinámica, traducir sobre la marcha en lugar de estática. No probaría dinámico hasta que puedas hacer estático. –