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



         

УПРАВЛЕНИЕ ДЖОЙСТИКОМ



УПРАВЛЕНИЕ ДЖОЙСТИКОМ

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

Наверное, вам известно, что в Бейсике определить положение ручки джойстика можно с помощью функции IN 31. В ассемблере для этих же целей удобнее всего применять команду IN A,(31), после выполнения которой в аккумуляторе появится некоторое число, отдельные биты которого и определяют «статус» джойстика. Значения имеют не все биты, а только 5 младших, причем, в отличие от клавиатуры, в нейтральном положении все биты сброшены в 0 (конечно, если порт джойстика вообще подключен), а установка какого-то бита в 1 означает поворот ручки или нажатие кнопки «огонь». При диагональном наклоне ручки будут установлены сразу два бита. В табл. 8.2 показано соответствие пяти младших битов, получаемых в аккумуляторе после выполнения команды IN A,(31), направлениям наклона ручки джойстика и нажатию кнопки «огонь». Три старших бита не определены, поэтому в таблице они заменены знаками вопроса.

Таблица 8.2. Значения битов порта джойстика.

НаправлениеКод
Вправо???00001
Влево???00010
Вверх???00100
Вниз???01000
Огонь???10000

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

ORG 60000 XY EQU 23296 JOY LD HL,(XY) ;в регистре H вертикальная координата, ; а в L - горизонтальная IN A,(31) ;читаем из порта джойстика RRCA ;проверяем бит 0 JR NC,JOY1 ;если в 0, переходим к проверке ; следующего бита INC L ;увеличиваем горизонтальную координату JOY1 RRCA ;аналогично проверяем остальные биты JR NC,JOY2 DEC L ;уменьшаем горизонтальную координату JOY2 RRCA JR NC,JOY3 DEC H ;увеличиваем вертикальную координату JOY3 RRCA JR NC,JOY4 INC H ;уменьшаем вертикальную координату JOY4 LD (XY),HL ;новые координаты передаем ; бейсик-программе RRCA RET NC JP 3435 ;при нажатии кнопки «огонь» ; экран очищается




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