EN
grf
grf
3 subscriber

Звуки в Dave

  В оригинальном Dave 2 звуки выводятся только на PC-speaker, причем с частотой 140Гц. Мне же нужно их вывести или на AY или на Covox, тем более что в AZBK есть возможность посылать звуки на Covox в фоновом режиме. Для начала я решил испытать именно эту фичу AZBK.
  В инетернете уже валялись звуки из Dave2 в виде WAV, так что я их просто скачал. Но при прослушивании эти "оцифровки" показались мне не слишком качественными - перегруженные какие-то, слишком хрипят. Так что я просто "сграбил" вывод звука с помощью DOSBox и запущенного в нем Дейва. Из полученного материала нарезал оцифровок и стал изучать технологию воспроизведения wav на AZBK.
  В доке на AZBK предлагается сначала сконвертировать WAV в IMA ADPCM с помощью  кодировщика imaed.exe. Оцифровки у меня были монофонические, конвертер ничего не спросил, на выходе получились файлы .ima. Я перенес их на диск БК в эмулятор, там сформировал из них пару файлов данных и прицепил к БКшному Дейву. Само воспроизведение звука через Covox в AZBK выглядит элементарно:
; готовим DMA контроллер
MOV #0,@#177160 ; сбрасываем на начало
MOV #200,@#177162 ; начальная страница 
MOV R1,@#177164 ; длина - старшая часть
MOV R2,@#177166 ; длина - младшая часть
MOV #5003,@#177160 ; запускаем!
Последняя команда запускает воспроизведение звука, заодно указывая параметры воспроизведения - однократное проигрывание (можно играть и бесконечно), стерео, IMA ADCPM.
В доке был пример именно для стереозвука. Как оказалось - не спроста. Мне же нужен был режим моно, его я и выбрал.
Что из этого получилось, я уже писал в предыдущем посте.
Все же мне хотелось вывести звуки на AY, так как гонять звуки спикерного качества на covox, да еще занимая при этом кучу памяти и места на диске мне как-то не нравилось. На мою проблему откликнулся гуру shiru8bit, который мало того, что подсказал как выдрать из Дейва звуки именно в виде данных на спикер (в формате VGM с помощью специальной сборки DOSBOX), но и оперативно добавил импорт этих данных в свой редактор AY Sound FX Editor! А я как раз в предыдущих проектах ("Prince of Persia" и "The Goonies") использовал звуки в формате afx этого самого редактора. И у меня, конечно же, уже был написан к ним проигрыватель. Огромное спасибо, shiru8bit!
Итак, вооружившись новыми инструментами, я снова надергал звуков из Дейва, теперь уже в формате VGM. Так как из frame rate был 140, а на БК у нас 48 (60 в случае AZBK), то просто так звуки использовать нельзя, необходимо их привести к нужной скорости воспроизведения. Автоматическое преобразование как-то не задалось, выкидывались явно нужные кванты. Пришлось прореживать данные звуков вручную, стараясь сохранить их звучание похожим на оригинал. Больше всего заморочек было со звуком выстрела и именно он никак не хотел получаться похожим - в оригинале там быстрая каша звуков, а AY на 60Гц выдавать такую скорострельность не хотел. Для экспериментов пока оставил так, как получилось, потом буду править, конечно. Сдается мне, что авторы задрали скорость до 140Гц именно из-за звука выстрела. Остальное пиликанье можно сделать и на меньшем значении частоты.
После получения нескольких звуков (не всех), я быстро выдрал модуль воспроизведения звука из своих исходников Goonies и встроил его в Дейва. Запустил, побегал по лабиринту - вроде бы получилось неплохо:
Зомби временно отключены, чтобы не шокировать народ мигающими спрайтами (предыдущие грабли все еще в силе). Но, кстати, есть хорошие новости - и Макс (разработчик AZBK) и Сергей (автор эмулятора GID) уже нашли решения возникшей проблемы! Так что скоро и эмуль и железный AZBK избавятся от этого глюка! Ура!
P.S. В Дейве, кстати, можно тоже сделать стереофоническую картину (как я сделал в Prince of Persia) - чтобы если какой-нибудь Бабулятор кидал нож слева, то и звук раздавался слева и т.д.

Subscription levels

No subscription levels
Go up