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

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

<b>Форум</b> - Несколько 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.

           *   *   *




Другие статьи номера:

TR-DOS для начинающих - Окончание.

Компьютерная новелла - Prince of Persia.

Компьютерная новелла - Лазерная бригада (по игре Laser Squad).

Перекресток драконов - Игра Rapscallion.

Перекресток драконов - Игра The Runes of Zendos.

Перекресток драконов - Игра The Saga.

Перекресток драконов - Игра Witch's Cauldron.

Перекресток драконов - Создаём Адвентюру. Обзор редакторов.

Перекресток драконов - Создаём словарь к Адвентюрной игре.

Программы, которые мы выбираем - Возможные последствия использования недокументированных команд.

Программы, которые мы выбираем - О замеченных шероховатостях в работе некоторых программ и пожелания к следующим версиям.

Программы, которые мы выбираем - Предложение ко всем авторам программ, печатающих дамп памяти. Программистам, использующим защиту дисков от копирования.

Программы, которые мы выбираем - Несколько предложений по усовершенствованию ассемблера.

Программы, которые мы выбираем - Предложения по доработке ZX Word v2.5.

Программы, которые мы выбираем - Программа "Эмулятор Спектрума" v1.2.

Программы, которые мы выбираем - Что хотелось бы иметь в идеальном ассемблере.

Ретро - 40 лучших процедур: Копирование данных в памяти.

Ретро - 40 лучших процедур: Обмен токена.

Ретро - 40 лучших процедур: Определение адреса БЕЙСИК-строки.

Ретро - 40 лучших процедур: Определение длины БЕЙСИК-программы.

Ретро - 40 лучших процедур: Определение размера свободной памяти.

Ретро - 40 лучших процедур: Поиск и замещение строки.

Ретро - 40 лучших процедур: Поиск подстроки.

Ретро - 40 лучших процедур: Поиск строки.

Ретро - 40 лучших процедур: Составление списка переменных.

Ретро - 40 лучших процедур: увеличение и копирование экрана.

Ретро - 40 лучших процедур: Удаление REM-строк.

Ретро - 40 лучших процедур: Удаление блока программы.

Советы экспертов - Игра Fredloader.

Советы экспертов - Игра Robin of Sherwood: The Touchstones of Rhianon.

Советы экспертов - Игра Scorpions: Die Machines.

Советы экспертов - Игра Terropods.

Страничка iS-DOS - Описание рестартов системы IS DOS.

Форум - Алгоритм распознавания символов.

Форум - Время выполнения недокументированных команд процессора Z80.

Форум - Концепция экрана высокого цветового разрешения.

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

Форум - По поводу новых DOS и BIOS для Спектрума.

Форум - Программа Multicolor на любой модели компьютера. Использование 2-го экрана для Multicolor'а. Демонстрация текста. Электронные журналы.

Форум - Проект ZX Config.

Форум - Усовершенствование Art Studio. Идеи относительно компрессии файлов.

Форум - Эмулятор ZX Spectrum на IBM. По поводу шестнадцатеричной системы счисления. Программа ZX-Stars. Странности в Elita

Форум - Эффекты на бордюре и Multicolor.

Читатель-читателю - ZX Spectrum 128 - новые возможности, новые проблемы.

Читатель-читателю - Группа 'Light'. Спектрум и экспертная система.

Читатель-читателю - Драйвер принтера для Scorpion'а.

Читатель-читателю - Печать чисел в различных системах счисления.

Читатель-читателю - Программирование аркадной игры со скроллингом экрана.

Читатель-читателю - Процедура печати меток ассемблера XAS для монитора-отладчика STS 4.3.

Этюды - Атрибутная бегущая строка. "Гасилка" экрана. Упрощенный вариант процедуры "Занавес". Процедура гащения картинки. Процедура проявления картинки по точкам.

Этюды - Графический эффект "цветные полосы".

Этюды - Драйвер экрана для печати по 64 символа в строке.

Этюды - Комплект защит загрузчиков.

Этюды - Обращение к диску в режиме IM 2. Работа с диском нестандартного формата.

Этюды - Печать символа, увеличенного в 8 раз. Программа "наливания" экрана. Процедура гашения экрана по точкам. Очистка экрана как в Terminator'е. Поиск последовательности символов в памяти. Система перекодировки символьного набора.

Этюды - Программа - каталогизатор дисков.

Этюды - Программа вывода значений амплитуды каналов муз. сопроцессора на бордюр.

Этюды - Программа вывода картинки.

Этюды - Программа зажигания спрайта.

Этюды - Программа очистки заданного окна экрана.

Этюды - Программа сортировки массива по возрастанию. Процедура заполнения экрана заданным атрибутом. Процедура проявления картинки. Эффект летящих навстречу звезд. "Душ", идущий из верхнего левого угла экрана. Процедура "осыпания" картинки по пиксельным линиям. Программа "вытягивания" картинки под углом в 45 градусов. Три процедуры "Scroll".

Этюды - Процедура печати чисел.

Этюды - Процедура прорисовки символа с помощью атрибутов.

Этюды - Процедура проявления картинки. Fade-OUT эффект (картинка уходит за края экрана). Графический эффект "Фонтан". Fade-OUT эффект, имитирующий выключение телевизора. Процедура "зажигания" картинки. Программа плавной прорисовки картинки.

Этюды - Процедура рисования линии.

Этюды - Процедура составления оптимальной таблицы символов.

Этюды - Скроллинг строк текста в заданном окне. Атрибутный скроллер. Диагональный скроллинг.

Этюды - Спрайтовый скроллер. Процедуры проявления экрана.

Этюды - Укороченная процедура индикации амплитуды каналов муз. сопроцессора. Способ вычитания константы из регистровой пары HL.

Этюды - Формула для вычисления дня недели.


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

Похожие статьи:
Вирус Морриса - О Вирусе Морриса.
Штурм - Как все-таки "прикончить" террористов, захвативших автобус в игре "HIJACK"?
РССС1 - один день из жизни группы "Power of Sound".
Tutorials - учимся рисовать 'new school' ASCII.
Анонс - новые игры и софт: Виселица, RGB Agression, ZX-WinWord v2.l, Hanoi Tower, Sрrite Cutter vl.0.

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