Como parece que hay gente que no tiene mucha mano en como enfocar el proceso artesanal del desensamblado os dejo un poco el sistema que yo uso para ello con el soft de spectrum:
Herramientas:
ZXPreview (http://home.arcor.de/clausjahn/spectrum/)
EmuZWin
IDA (yo concretamente uso el 4.17 para windows)
Manual de BASIC del Spectrum (http://www.worldofspectrum.org/ZXBasicManual/)
The Complete Spectrum Rom Disassembly (ftp://ftp.worldofspectrum.org/pub/sincl ... blyThe.pdf)
Referencia de ensamblador de Z80 (http://www.zilog.com/docs/z80/um0080.pdf)
Proceso:
- El primer paso es recuperar el cargador basic del juego, hay muchas formas, yo uso el fichero .tap y el zxpreview
- Normalmente hay varios valores a tener presentes en el cargador: el primero el setteo de RAMTOP (clear XXXXX) que indica qué zona de memoria se nos va a reservar para los datos de nuestro programa, y el RANDOMIZE USR YYYYY que nos indica el punto de entrada del programa.
- Ahora necesitamos un volcado de la memoria del spectrum, lo cual podemos hacer desde la mayoria de emuladores... yo suelo hacer el volcado de 0000 a FFFF, para tener las llamadas a ROM en el mismo bloque (incluso porque a veces hay coders que aprovechan zonas concretas de rom para ahorrarse algunas lineas
- Cargamos el fichero raw en el IDA, vamos a la direccion YYYYY del RANDOMIZE USR y convertimos a Código para que empiece el análisis... a partir de ahi se trata de identificar subrutinas, etiquetar coherentemente los saltos y las posiciones de memoria, etc... todo altamente artesanal...
- Adicionalmente se puede lanzar el juego con el emuzwin, haciendo que no arranque tras la carga y poniendo breakpoints para ir ejecutando de forma controlada y siguiendo flujo de ejecución y valores de los datos, etc. en la ventana de desensamblado (ademas la parte de ROM está muy bien etiquetada en la vista de desensamblado)
Espero que esto os ayude



