ZX Review #7-8-9-10
08 ноября 1997

Форум - Несколько Pokes к играм. Программа Hacman96.


Игры Секреты

(c) Промзелев Е., г.Тольятти

   Я немного программирую на Ас-
семблере. Никак не могу решиться
набрать большую программу.
   Сейчас я вам приведу несколь-
ко POKES, которые я нашел с  по-
мощью моей программы в  машинном
коде, названной "Hacker Man'96".
Она приведена после  POKES.  Эти
POKES проверены мной.

STORM LORD   32564,255 - жизни
COLISEUM     55431,255 - жизни
WELL'S FARGO 51709,255 - жизни у
                         обоих
FROST BYTES  27484,255 - жизни.
       POKE вставить в 6 строке.

   Вы писали, что не  надо  при-
сылать POKES, которые  уже  были
опубликованы. Те  POKES, которые
я вам привел, я  нашел  с  помо-
щью моей программы.  Например, в
FROST BYTES у вас вообще  другие
POKES, наверное, у вас там  бес-
конечные не только  жизни, но  и
патроны и  время.  Но  POKE  для
FROST BYTES, которое я привел, у
вас не напечатано.
140.
    Программа HACKER MAN'96
          (HACMAN96)

          ORG     65000
          LD      L,3
          PUSH    HL
          LD      A,2
          CALL    5633
          LD      A,22
          RST     16
          LD      A,8
          RST     16
          LD      A,0
          RST     16
          JR      PRINT1
RETURN    POP     HL
          LD      BC,41367
          LD      DE,24000
LOOP      LD      A,(DE)
          CP      62
          JR      NC,LOOP1
          JR      CIKL
LOOP2     INC     DE
          LD      A,(DE)
          CP      L
          JR      NC,LOOP3
LOOP4     DEC     DE
          LD      A,(DE)
CIKL      DEC     BC
          INC     DE
          LD      A,B
          OR      C
          JR      NZ,LOOP
          RET
LOOP1     CP      63
          JR      NC,CIKL
          JR      LOOP2
LOOP3     INC     HL
          CP      L
          DEC     HL
          JR      C,PRINT
          JR      LOOP4
PRINT     PUSH    BC
          PUSH    HL
          PUSH    DE
          PUSH    DE
          POP     BC
          CALL    11563
          CALL    11747
          LD      A,32
          RST     16
          POP     DE
          POP     HL
          POP     BC
          JR      LOOP4
RETURNS   JR      RETURN
PRINT1    LD      A,72
          RST     16
          LD      A,97
          RST     16
          LD      A,99
          RST     16
          LD      A,107
          RST     16
          LD      A,101
          RST     16
          LD      A,114
          RST     16
          LD      A,32
          RST     16
          LD      A,77
          RST     16
          LD      A,97
          RST     16
          LD      A,110
          RST     16
          LD      A,32
          RST     16
          LD      A,57
          RST     16
          LD      A,54
          RST     16
          LD      A,32
          RST     16
          LD      A,32
          RST     16
          LD      A,74
          RST     16
          LD      A,65
140.
          RST     16
          LD      A,67
          RST     16
          LD      A,75
          RST     16
          LD      A,32
          RST     16
          LD      A,78
          RST     16
          LD      A,79
          RST     16
          LD      A,82
          RST     16
          LD      A,77
          RST     16
          LD      A,65
          RST     18
          LD      A,78
          RST     16
          LD      A,13
          RST     16
          LD      A,244
          RST     16
          LD      A,76
          RST     16
          LD      A,73
          RST     16
          LD      A,70
          RST     16
          LD      A,69
          RST     16
          LD      A,32
          RST     16
          LD      A,48
          POP     HL
          ADD     A,L
          PUSH    HL
          CP      58
          JR      NC,LPS
          RST     16
LPS       LD      A,13
          RST     16
          JR      RETURNS
2
   Эту программу можно загружать
в любые  адреса, она  перемещае-
мая. Ее длина 193  байта, поэто-
му, как  мне  кажется, ее  лучше
грузить в буфер принтера по  ад-
ресу 23296. Если буфер занят, то
можно и в  экранную  область, но
только  по  адресу  16384,  т.к.
программа выводит найденные  ад-
реса в середине экрана. В  одном
из этих адресов  с  вероятностью
80% записывается количество жиз-
ней или снарядов (это зависит от
того, что вы установите в регис-
тре L в начале программы).

   Пример, как пользоваться этой
программой:

1. Загрузите игру.
2. Запустите ее и запомните ко-
   личество жизней.
3. Сбросьте игру и загрузите ее
   загрузчик.
4. В загрузчике после всех LOAD
   поставьте STOP.
5. Запустите загрузчик и грузите
   далее.
6. После того, как загрузчик ос-
   тановится, загрузите програм-
   му HACMAN96.
7. В адрес загрузки +1 поместите
   с помощью POKE число жизней в
   игре.
8. Запустите HACMAN по адресу
   загрузки.
9. HACMAN выдаст:

HACKER MAN 96  JACK NORMAN (это я)
POKE LIFE X
ADDR ADDR ADDR ADDR...

10. Запишите на бумагу все адре-
   са (их будет немного).  Затем
   вставляйте эти адреса по  од-
   ному как POKES. Один из  них,
   скорее  всего,  тот,  который
   вам  нужен.  Подобная   кодам
   бейсик-программа   ищет   все
   возможные POKES за 40  минут,
   а HACMAN - за секунду!

   Прим. ред.: И снова  следует  затронуть
тему  оптимизации  программ.  Во-первых, в
данной программе видны такие очевидные ве-
щи, как LD A,0, которое нужно заменить  на
XOR A или SUB A - результат будет тот  же,
зато занимает на 1 байт меньше  и  быстрее
выполняется. Дальше следует напомнить  на-
шему читателю о процедуре вывода на  экран
целой строки. Про нее, кстати, было  напи-
сано в нашей книге по машинным  кодам.  Ее
адрес - #203C. Перед вызовом необходимо  в
регистр DE поместить адрес выводимой стро-
ки, а в BC - ее длину. Также здесь следует
заменить последовательность команд вида

          JR      C,L1
          JR      L2
L1
...............

на одну команду, в данном случае JR NC,L2.
И наконец, наш читатель, очевидно, не знал
о том факте, что после выполнения  команды
CP устанавливается флаг Z, если сравнивае-
мые числа  равны, и сбрасывается, если  не
равны.
   Уважаемый Евгений! Мы не  ставим  целью
тебя обидеть, мы просто  хотим  подсказать
тебе твои ошибки, чтобы ты и другие не де-
лали их в будущем.  А  в  общем, программа
очень полезна для тех случаев, когда прог-
рамма занимает всю память и загрузить  мо-
нитор не представляется возможным. Особен-
но это актуально для владельцев 48K машин.
Немного о том, как эта программа работает.
Она ищет по адресам 24000 - 65367  команду
LD A,n, где n - число, задаваемое в регис-
тре L в начале программы. Как  вы  догада-
лись, это число  соответствует  количеству
жизней в программе. Найдя  такую  команду,
программа выводит адрес, по которому нахо-
дится n. Кстати, в  этой  программе  можно
сделать еще одну  доработку - искать  надо
до конца памяти, то есть до адреса  65535.
Для этого команду LD BC,41367 после  метки
RETURN надо заменить на LD BC,41536.

           *   *   *





Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Советы - В газету поступили вопросы по прохожде нию игр от Квашонкина Юрия.
Cheating - Как поставить фирменные Cheat'ы в играх : Scooby and Scrappy Doo, Darkman, Astro Marine Corps, Batman 3, Addams Family, Reckless rutuss, Navy Seals, 48 Утюгов.
Между прочим - В этом разделе вы найдете различные "хитрости", обнаруженные при работе с программами и POKES.

В этот день...   26 сентября