Читайте также:
|
|
int Voc_Play_Sound(unsigned char far *addr,
unsigned char header_length)
{
// проигрывает загруженный в память VOC-файл
unsigned segm, offm;
segm = _FP_SEG(addr);
offm = _FP_OFF(addr) + header_length;
_asm{
mov bx,6; функция 6 - воспроизведение VOC-файла
mov ax,segm
mov es,ax; в регистр ES загружается сегмент
mov di,offm; в регистр DI загружается смещение
call driver_ptr; вызов драйвера
} // конец ассемблерной вставки
} // конец функции
Функция Voc_Play_Sound из Листинга 9.5 работает следующим образом:
§ Адрес VOC-файла, который мы хотим проиграть, из памяти передается в функцию;
§ Затем функция использует две крайне полезные макрокоманды FP_SEG () и FP_OFF(), получая таким образом сегмент и смещение стартового адреса буфера с VOC-файлом;
§ Сегмент и смещение помещаются в регистровую пару ES:DI в соответствии с требованиями драйвера;
§ Вызывается драйвер.
И, пожалуйста - звучит музыка!
В первых ваших собственных играх, так же, как и в игре, которую мы напишем в этой книге, я полагаю, вы будете придерживаться оцифрованных звуков. Воспроизведение такой музыки не слишком сложно, однако и это все же требует некоторых усилий и понимания. В Листинге 9.6 показан полный текст программы, включающий простое меню для воспроизведения нескольких простых мелодий. Перед запуском программы убедитесь, что;
§ Все VOC-файлы расположены в текущем каталоге;
§ CT-VOICE.DRV также находится в текущем каталоге.
Последнее замечание по поводу воспроизведения оцифрованного звука: после того, как ваша программа начнет проигрывание мелодии, она может делать, что угодно. Лучше всего — продолжить игровой цикл. Операции по воспроизведению звука будут полностью выполняться картой Sound Blaster и аппаратным обеспечением прямого доступа к памяти. Вашей программе не нужно ничего делать, за исключением собственно запуска этого процесса (и затем - его остановки), а это занимает всего несколько микросекунд.
Дата добавления: 2015-07-12; просмотров: 117 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Листинг 9.2. Загрузка VОС-файла. | | | Листинг 9.6. Полная программа воспроизведения звука. |