Un procesador de 8 bits tiene una serie de instruciones y cada una de esas instruciones esta representada por una serie de opcodes en hexadecimal.
Digamos por ejemplo que deseas que el z80 reste un numero a una variable(digamos que el numero de vidas -1 vida despues de haber muerto.)
ld a,(&9000)->carga el contenido en el registro a del z80.
dec a->a=a-1
ld (&9000),a->guardas a-1 en la direccion 9000 de la ram.
si compliases eso y abrieras el contenido de la ram con un editor hexadecimal lo verias en formtato de opcodes:
3A 00 90 3D 32 00 90
Donde 3A->ld a y 00 90 la direcion de la memoria a cargar
3D=dec a-1
32 ->ld (memoria),a 00 90 direcion de ram.
Ahora imaginate que esa parte del programa esta guardada en la direccion de memoria pongamos &4000.
Asi que en &4000 tenemos 3A 00 90 3D 32 00 90 y las vidas estan en &9000 que pongamos sean 3(un 03 en hexadecimal).
Si haces un poke &9000,05 Pues ya has cambiado el numero de vidas de la variable a 5
Si haces un poke a &4003,3C(o su numero equivalente en decimales).
has cambiado el programa y ahora hace:
ld a,(&9000)->carga el contenido en el registro a del z80.
inc a->a=a+1
ld (&9000),a->guardas a+1 en la direccion 9000 de la ram.
Cada vez que te matasen ganarias una vida.
Mas o menos es eso.
Entonces para hacer esto primero tienes que tener el juego en ram y es por eso que existen esos listados tan largos,primero hacen malabarismos para cargarlos en ram(evitando proteciones y demas historias).Luego parchean el codigo y luego finalmente lo ejecutan.
Las revistas te decian eso poke (direcion de memoria) y valor a pokear.El resto a buscarse la vida, ya fuera con un cargador, ya fuera con un aparato externo.