El proceso es muy sencillo en este caso. La proteccion es muy simple.
Lo que se hace es usar el monitor del VICE y poner un Watchpoint mirando a la dirección $DD01, que es donde se lee el valor del dongle.
W DD01
Luego se carga el programa y se lo ejecuta, en FX chequea el dongle al ejecutar un script, o cargar desde disco. Al hacer esto hace saltar el watchpoint y aparece la ventana el monitor. Desesamblamos un poco del codigo a continuacion de donde salto con el comando D:
#1 (Stop on load dd01) 108 023
.C:035c AD 01 DD LDA $DD01 - A:FF X:06 Y:86 SP:f9 N.-..... 1587606563
(C:$035f) d
.C:035f 48 PHA
.C:0360 AD 00 DD LDA $DD00
.C:0363 09 04 ORA #$04
.C:0365 8D 00 DD STA $DD00
.C:0368 68 PLA
.C:0369 C9 46 CMP #$46
.C:036b D0 FB BNE $0368 <- Acá chequea
.C:036d EA NOP
.C:036e EA NOP
.C:036f EA NOP
.C:0370 68 PLA
Lo que nos interesa acá es la instruccion BNE, que chequea si el valor leido previamente de DD01 coincide con $46 y hace un bucle infinito si no.
Hay que eliminar esa instruccion, que son 2 bytes, la forma mas segura es cambiandola por un par de NOPs que corresponden al valor hexadecimal $EA.
Tomamos nota de la secuencia de valores hexa que componen esa parte del codigo (AD 01 DD 48 AD 00 DD 09 04 8D 00 DD 68 C9 46 D0 FB EA EA EA)
Cargamos el D64 en un editor hexa (XVM32 en mi caso), buscamos la cadena hexa que anotamos. Cambiamos el BNE $0368 (D0 FB) por EA EA, guardamos como un nuevo archivo y listo el pollo.
Esto de cargar todo el D64 para modificar un solo archivo es muy bruto, pero en este caso no hay problema poque no hay otro programa que pueda tener la misma secuencia por casualidad en el disco.
Adjunto el disco con el programa parcheado, ojo que hay muchos de los archivos que estan corruptos, te das cuenta porque o no carga nada y vuelve al programa, o se queda infinitamente en el track 11 al cargar.
El editor de caracteres funciona, pero no el de graficos, supongo que nunca fue terminado.
]fx2-f1.d64[/file]