Fui testar uns pokes para Rick Dangerous listados no The Tipshop e percebi que um deles não funcionava.
Figura: World of Spectrum |
Aparentemente o poke para munição infinita foi digitado de forma errada (65075,0). Investigando a listagem, encontrei o valor correto: 64074,0. Fiz o teste no emulador e funcionou.
Normalmente um poke desativa a instrução que diminui algum contador como o de munição, por exemplo:
64074 DEC A
64075 LD (43382),A
POKE 64074,0
substitui a instrução DEC A (DECrement A) por NOP (NO Operation) e assim impede que o contador seja diminuído. Apesar de funcionar, devido à NOP não alterar as flags como faria DEC, em alguns casos poderá não dar o resultado esperado.A instrução seguinte da listagem acima guarda o conteúdo do contador A na memória em 43382. Para evitar que este valor seja guardado após ser diminuído, bastaria fazer um
POKE 64075,58
para trocar a instrução LD (43382),A
por LD A,(43382)
. Assim o contador de munições não é alterado sem interferir nas flags. Em outras palavras, este POKE é mais seguro.Segue uma lista de pokes seguros e funcionais para Rick Dangerous (versão original):
Infinite Lives 58357,58
Infinite Ammo 64076,58
Infinite Bombs 64167,58
Já foram enviados para o The Tipshop.
Muito obrigado pelo teu trabalho :)
ResponderExcluirJá sei o que vou jogar esta noite :)