Просмотр полной версии : Как разделить музыку и звук выстрела для AY?
Допустим скомпилировал музыку в Sound Tracker PRO или в PRO Tracker. Но при проигрывании музыки по одному из каналов необходимо пропустить какой-либо шумовой эффект. Можно ли заглушить один из каналов мелодии, чтобы он не мешал эффекту?
пропатчить плеер - там в одном месте куча out'ов, маскируешь нужный канал и выводишь свои данные, но не забывай, что частота шума и огибающей задаётся для всех 3х каналов. сейчас придуман более прогрессивный метод - использование TurboSound - один AY как и раньше играет музыку, а второй звуковые эффекты
cyrax inc
05.10.2006, 20:36
Можно ли заглушить один из каналов мелодии, чтобы он не мешал эффекту?
по всей видимости, придется модифицировать плеер.
demon_zx
05.10.2006, 21:05
почитай электронный журнал DejaVu номер 10 или 9 там эта тема хорошо раскрыта с примерами и исходниками, а так же в наличии сборник звуков
Одно время я даже эквалайзер для AY делал. Правда там без патчения плеера обходилось- просто считывал данные, менял и тут же их записывал. Задержка обработки сказывалась жутким треском. Подобный эффект можно заметить в игре MortalCombat от Codebusters(?)- когда громкость притухает слышен треск.
Отсюда мораль- вместо out'ов надо прописать загрузку в переменные (13 штук), а потом их обрабатывать после плеера и выводить пачкой. Можно получить полнейшую власть над звуком:
-регулятор громкости
-смена раскладки каналов (разве что моно не сделаешь)
-эквалайзер (сомнительное счастье, но все же)
-pitch и прочие извращения над тональностью
-вывод своих звуков когда надо
В своё время siril/4d проапгрейдил пт3 плеер (не зная ни формата, ни умея толком програмировать) добавив в него обработку именно данных из OUT регистров.. В результате чего в нём повлялась функция смены на лету раскладок стерео (можно было хоть один единственный канал во всех играть), заглушка любых каналов, эквалайзер и смена громкостных табличек для эмуляции звучания AY на YM и наоборот.. Так что ничего очень сложного в этом нет - было бы желание.
А еще обнаружил в приложении к последнему InfoGuide архивчик sources.rar и в нем исходник плеера pt2/pt3, где можно написать свою выводилку в порты- все данные формируются в массиве. Автор- S.V.Bulba
Переписать музыку под два канала (A и C), а звуки выводить в B канале.
Переписать музыку под два канала (A и C), а звуки выводить в B канале.
Это самое фиговое решение.
Ведь наверняка в игре будет возможность отключения эффектов, так вот эффекты отключешь, а музыка по прежнему останется ущербной.
Пропатчить плеер это дело 5 минут, написать свой плеер эффектов дело еще нескольких часов.
Переписать музыку под два канала (A и C), а звуки выводить в B канале.работать не будет
Это самое фиговое решение.
Ведь наверняка в игре будет возможность отключения эффектов, так вот эффекты отключешь, а музыка по прежнему останется ущербной.
Пропатчить плеер это дело 5 минут, написать свой плеер эффектов дело еще нескольких часов.
Кому чего...
Лучше заказать у профи универсальный плеер, который сможет еще и звуки воспроизводить. Тогда не нужно будет каждый раз изобретать велосипед.
работать не будет
Что именно работать не будет? Плеер трогать не нужно. Нужно написать плеер звуков.
Что именно работать не будет? Плеер трогать не нужно. Нужно написать плеер звуков.патчить плеер - в любом случае. в оригинале он же все равно всегда, каждое прерывание пишет все регистры в т.ч. и того канала, который не используется в мелодии
В зависимости от мелодии выбираешь канал в который лучше выводит звуки (чтобы мелодия меньше искажалась), потом делаешь CALL player и выводишь аутами свои эффекты. Предварительно глушить канал смысла особого не вижу, эффекты обычно короткие и быстро проигрываются.
В коде выглядит это так:
на прерываниях:
...
CALL MUSIC
CALL SPLAY
...
Если нужно проиграть эффект делаем так:
LD HL,SOUND1
LD (SONG),HL
Код SPLAY:
SPLAY LD HL,(SONG)
INC H
DEC H
RET Z
LD BC,#FFFD
LD A,4
OUT (C),A
LD B,#BF
LD A,(HL)
OUT (C),A
INC HL
LD B,#FF
LD A,5
OUT (C),A
LD B,#BF
LD A,(HL)
OUT (C),A
LD B,#FF
LD A,7
OUT (C),A
INC HL
IN A,(C)
AND #DB
OR (HL)
LD B,#BF
OUT (C),A
INC HL
LD A,#0A
LD B,#FF
OUT (C),A
LD B,#BF
LD A,(HL)
OUT (C),A
INC HL
LD (SONG),HL
LD A,(HL)
OR A
RET NZ
LD (SONG+1),A
(тут проверка включена ли музыка, если да, то Z)
RET Z
XOR A
LD BC,#FFFD
LD A,7
OUT (C),A
IN A,(C)
OR 36
LD B,#BF
OUT (C),A
RET
SONG DEFW 0
SOUND1 DEFB 180,10,32,10 ;ОДИН. КВ.
DEFB 180,10,32,11
DEFB 250,9,32,12
DEFB 250,9,32,13
DEFB 240,9,32,14
DEFB 240,9,32,15
DEFB 230,9,32,15
DEFB 230,9,32,15
DEFB 220,9,32,14
DEFB 220,9,32,13
DEFB 210,9,32,12
DEFB 210,9,32,11
DEFB 200,9,32,10
DEFB 200,9,32,8
DEFB 190,9,32,6
DEFB 190,9,32,5
DEFB 180,9,32,3
DEFB 180,9,32,2
DEFB 0
вообще это верно... про велосипед... :(
работать не будет
См. CSC:DejaVu. Там как раз 2-х канальная (2Ньюарт - не ущербная!) музыка с эффектами на 3-м канале. Ух ты, все работает, надо же!.. :)
Powered by vBulletin® Version 4.2.5 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot