Suponiendo que el juego esta en bruto dentro de un fichero binario, y se carga con un BASIC similar a esto:
10 OPENOUT"D":MEMORY &2FFF
20 LOAD"code.bin",&3000
30 CALL &3000
(Lo que viene a ser un desprotegido de toda la vida
)
Los pokes se deberian poner antes del CALL, en este caso agregando una linea 25 por ejemplo
10 OPENOUT"D":MEMORY &2FFF
20 LOAD"code.bin",&3000
25 POKE &6D07,0
30 CALL &3000
Solo funciona con desprotegidos que carguen de esta manera desde BASIC. La base es que cargas el binario en memoria, y aun bajo control del BASIC, metes el POKE y ejecutas el programa ya cargado y modificado con el CALL
Es posible que te encuentres algun FOR NEXT, lineas DATA y un LOAD"pantalla.scr",&C000 o parecido antes de la linea 10 de mi ejemplo, es para cargar la pantalla de presentacion del juego pero no influye en la operacion
Todos los juegos protegidos, o que carguen con un binario intermedio, no podran pokearse asi...
Puedes ver que los cargadores de las revistas son mas complejos que el retoque que te propongo, ya que SI estan preparados para las versiones originales/protegidas
El truco que uso yo muchas veces. (depende del juego claro). Es que muchos juegos no tocan la zona de memoria de &0050 a &0170 Esto significa que si escribes algo ahi, aun con el juego cargado seguira ahi,O en todo caso lo sobreescribira mas tarde de que lo hayas usado tu.
Entonces te buscas el &jp mas alejado que puedas encontrar desprotegido. Y con el editor hexadecimal lo cambias a que salte a &0050
Y te haces un.bin que diga por ejemplo.(mi codigo del cosmic sheriff).
org &9000
ld hl,&900c
ld de,&0050
ld bc,&0050
ldir
ret
org &0050
;miramos en &100 si hemos activado las variables de truco 1, y truco 2 &0100, y &0101
ld a,(&0100)
cp 01
jp nz,freezetime
ld a,&14
ld (&d812),a
:freezetime
ld a,(&0101)
cp 01
jp nz,fin
ld a,&00
ld (&60fc),a
:fin
jp &4c90
Esto que parece una cosa rara con los org, es simplemente para manterner las etiquetas en la zona de &0050.Yo los guardo en un .bin con save as de la memoria del winape los junto . Y luego lo cargo en &9000 con el editor de mochilote como uno solo.
en el caso del cosmic sheriff no hacia falta porque luego los pisaba, pero lo normal es hacer un push af, push hl y al principio y luego un pop hl, pop af al final Para conservar registros.
Y en basic me queda esto:
1 CLS
10 LOCATE 14,5
20 PRINT "Dragon pokes"
30 LOCATE 7,13
40 PRINT "Infinite lives? (1=No/2=Yes)
50 a$=INKEY$
60 IF a$="" THEN 50
70 IF a$="X" OR a$="x" THEN 110
80 IF a$="Z" OR a$="z" THEN 100
90 GOTO 50
100 POKE &100,&1
110 LOCATE 7,13
120 PRINT "Infinite time? (1=No/2=Yes) "
130 a$=INKEY$
140 IF a$="" THEN 130
150 IF a$="X" OR a$="x" THEN 200
160 IF a$="Z" OR a$="z" THEN 190
170 GOTO 130
190 POKE &101,&1
200 MEMORY &8FFF
210 LOAD"cosmicsh.bin",&9000
220 CALL &9000
230 RUN"cosmic
Y Cosmic sherif de kino & funno trucado. Y me salto la limitación de que este cargado previamente.
Siendo el cargador de kino & funo este:
10 MODE 1:PRINT"PRESENTADO POR HUFO & KINO"
20 MEMORY &5FFF:LOAD"!COSMIC.B00":CALL &6000
Hacer un poke despues del load no funcionaria,porque estaría la pantalla de los crackers cargada en memoria no el juego y no necesito cargadores largos y complicados. Y en caso de estar protegido, pues te vas pokeando los saltos hasta que llegues al que te interese.