Lo he portado a mano partiendo del desensamblado del Z80 original, la idea es que el comportamiento sea exactamente el mismo que el del CPC. Ejecuto el original en un emulador de CPC y el port en VICE, y comparo el estado de los dos máquinas: posiciones, puertas, frases, cuántas pasadas tarda cada oficio. Cuando algo se desvía, sé en qué pasada y en qué rutina. Ahora mismo el juego se puede acabar entero y en principio sin notar diferencia en comportamiento con el original.
Lo más difícil no ha sido traducir Z80 a 6502, sino la sincronización. El CPC va a 4 MHz y el C64 a 1Mhz, aunque el Z80 gasta mínimo 4 ciclos por instrucción y el 6502 dos, así que la diferencia real es más bien de un factor 2.
Sobre los gráficos y los sprites: sí claro usa sprites hardware. Cada personaje son dos sprites apilados 21x42 de alto. El truco que mas me ha costado es el cambio de $D01C a mitad del sprite, justo a la altura del cuello: la cara va en hires (24 px, un color) y el cuerpo en multicolor (12 px dobles, 3 colores), sin gastar ningun sprite de más. La cara y los objetos son lo que más resolución necesitan para parecerse al CPC, y el cuerpo es donde hacen falta los colores.
Lo de que se vea "monocromo" tiene explicación: el CPC va en modo 1, 320x200 con 4 colores. El C64 va en bitmap multicolor, 160x200, con 3 colores más el fondo POR CELDA de 8x8. Probé a pasar el panel a hires para igualar la resolución del CPC y vie me faltaban colores.
Los gráficos los he convertido con scripts propios y luego ajustado a mano lo que no quedaba bien. He usado la IA para portar y afinar los graficos mas facilmente. El resto esta hecho por mi.