sexta-feira, 11 de outubro de 2013

Pokes para Rick Dangerous

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.

Um comentário:

Seu comentário é bem vindo, mas peço que use este espaço adequadamente.