Es el fin de semana, así que me relajo de pasar toda la programación de la semana escribiendo un proyecto de hobby.Emulación de CPU 6502
Escribí el marco de un emulador de CPU MOS 6502 ayer, los registros, la pila, la memoria y todos los códigos de operación se implementan. (Enlace a la fuente a continuación)
Puedo ejecutar manualmente una serie de operaciones en el depurador que escribí, pero me gustaría cargar una rom NES y simplemente apuntar el contador del programa a sus instrucciones, pensé que esto sería la forma más rápida de encontrar códigos de operación defectuosos.
Escribí un rápido cargador de rom NES y cargué los bancos de ROM en la memoria de la CPU.
El problema es que no sé cómo están codificados los códigos de operación. Sé que los propios códigos de operación siguen un patrón de un byte por código de operación que identifica el código de operación,
0 - BRK
1 - ORA (D,X)
2 - COP b
etc
Sin embargo no estoy seguro de donde se supone que debo encontrar el argumento de código de operación. ¿Es el byte que sigue directamente? En memoria absoluta, supongo que podría no ser un byte, sino un corto.
¿Alguien está familiarizado con el modelo de memoria de esta CPU?
EDIT: me doy cuenta de que esto probablemente se disparó en la oscuridad, pero esperaba que hubiera algunos hackers Apple y Commodore de la vieja escuela al acecho aquí.
EDIT: Gracias por su ayuda a todos. Después de implementar los cambios adecuados para alinear cada operación, la CPU puede cargar y ejecutar Mario Brothers. No sirve de nada, pero bucle de espera para el inicio, pero es una buena señal :)
he subido la fuente:
http://www.codeplex.com/Cpu6502/SourceControl/DirectoryView.aspx?SourcePath=&changeSetId=1810
Si alguien alguna vez se ha preguntado cómo funciona un emulador, es bastante fácil seguir. No optimizado en lo más mínimo, pero de nuevo, estoy emulando una CPU que funciona a 2 MHz en una máquina de 2,4 GHz :)
Hey, yo soy más o menos en su misma situación (en el momento de la publicación) Me gustaría para verificar su código, pero el enlace parece estar roto. ¿Aun lo tienes? – Petruza