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



         

МУЗЫКАЛЬНЫЙ СОПРОЦЕССОР - часть 10


INITI LD HL,CHAN_A ;инициализация таблиц переменных LD DE,CHAN_A+1 LD BC,19*3-1 LD (HL),0 LDIR LD HL,SND128 ;установка прерывания

STOPI CALL IMOFF ;возврат к 1-му режиму LD A,#FF ;выключение звука LD E,7 CALL SETREG ;запись в регистр сопроцессора R7 ; значения #FF JP OUTREG

Порядок действий при использовании описанной программы должен быть следующим. В начале работы нужно включить 2-й режим прерываний, вызвав процедуру INITI. Извлечение очередного звука необходимо начинать с определения некоторых переменных в таблицах CHAN_A, CHAN_B или CHAN_C. Для этого нужно записать в первые два байта таблицы, соответствующей выбранному каналу, адрес начала основного блока данных и то же значение продублировать в следующих двух байтах таблицы. Затем указать количество повторений звука по смещению +9, а элементы таблицы +8 и +7 инициализировать байтом 1 (переменную по смещению +7 нужно задавать обязательно в последнюю очередь, так как именно она «запускает» звук). По окончании работы (или если в программе предусмотрены обращения к дисководу) следует восстановить стандартный режим обработки прерываний и выключить звук, обратившись к подпрограмме STOPI.

Продемонстрируем применение описанной процедуры извлечения звуков на примере небольшой игры, которую назовем БИТВА С НЛО. По земле катается грузовик с зенитной лазерной установкой, который методично расстреливает маячащую в небе «летающую тарелку» (Рисунок  10.1). НЛО также не остается внакладе и отвечает хоть и малоприцельным, но зато плотным веерным огнем.




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