Как написать игру для ZX Spectrum на ассемблере


         

«Растворение» символов


Продолжим изучение новых команд и приемов программирования, а заодно рассмотрим еще один интересный эффект, который можно назвать «растворение» символов. Он используется, например, в таких играх, как LODERUNNER, THE DAM BUSTER и других. Возможно, он заинтересует и вас. Суть его состоит в том, что при переходе от одной картинки, формируемой программой, к другой происходит не мгновенная очистка экрана, как оператором CLS, а изображение постепенно как бы растворяется. Это очень напоминает таяние снега. Подпрограмма, создающая такой эффект удивительно проста и коротка:

ORG 60000 ENT $ THAW LD B,8 ;экран очищается за 8 циклов LD DE,0 ;адрес начала кодов ПЗУ THAW1 LD HL,#4000 ;адрес начала экранной области PUSH DE THAW2 LD A,(DE) ;берем «случайный» байт из ПЗУ AND (HL) ;объединяем с байтом из видеобуфера LD (HL),A ;помещаем обратно в видеобуфер INC HL ;переходим к следующим адресам INC DE LD A,H ;проверяем, нужно ли повторять цикл CP #58 ;если прошли еще не весь видеобуфер ; (#5800 - адрес начала области атрибутов) JR NZ,THAW2 ; то повторяем PUSH BC LD BC,1 CALL 7997 ;PAUSE 1 POP BC POP DE LD HL,100 ADD HL,DE ;увеличиваем адрес в ПЗУ на 100 EX DE,HL ;меняем HL на DE DJNZ THAW1 ;повторяем цикл JP 3435 ;окончательно очищаем экран

Сначала объясним смысл вновь встретившихся команд, а затем более подробно расскажем о принципе работы программы.

Как мы говорили в самом начале книги, микропроцессор способен выполнять элементарные арифметические операции над числами. Сложению соответствует мнемоника ADD (Addition - сложение) а вычитанию - SUB (Subtraction). В этих операциях может участвовать регистр A (арифметические операции над однобайтовыми числами) или пара HL (при сложении или вычитании двухбайтовых чисел). К содержимому аккумулятора можно прибавлять (или вычитать) значение другого регистра или непосредственную числовую величину, а к паре HL можно только прибавлять и только содержимое другой регистровой пары (кроме AF, конечно). Результат арифметического действия получается в аккумуляторе или в регистровой паре HL соответственно.



Содержание  Назад  Вперед