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. * * *
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября