есть исходник... эээ... черт знает какой язык, исходник эмулятора чипа YM2612 - который Sega Mega Drive. в архиве файлы с расширениями, может кому это подскажет что за язык:
OPN_DLL.c
OPN_DLL.def
OPN_DLL.dsp
OPN_DLL.dsw
OPN_DLL.h
кто шарит, гляньте одним глазом и подскажите как это дело собрать в dll? сам файл этот dll там есть в архиве, НО! в этом коде есть парочка косяков, которые портят всю радость. хотя возможно я просто не правильно делаю...
при использовании длл я импортирую только 4 функции, которые мне нужны:
OpenOPNDriver - что-то вроде инициализация чипа. в качестве параметра, насколько я понимаю, следует указывать количество чипов, которые будут созданы.
CloseOPNDriver - выключает этот самый чип. использую в конце своей программы.
OPN_Write - посылает в какой-то регистр какую-то команду.
PlayDACSample - поскольку проигрывание сэмплов через посылку данных через регистры OPN_Write буржуйский товарищ сделать не смог, то он добавил эту функцию для возможности проигрывания сэмплов.
так вот первая проблема заключается в OpenOPNDriver. при инициализации одного чипа OpenOPNDriver(1) - все работает без проблем. однако мне хотелось бы использовать 2 чипа, поскольку 6 каналов будет не достаточно для проигрывателя. хотелось бы 12 - два по 6. но при указании OpenOPNDriver(2) - происходит какая-то фигня. такое ощущение что частота чипа повышается, то есть звуки становятся писклявее. 3, 4, 5 и так далее - звук все выше и выше. получается вместо увеличения количества чипов эта функция производит разгон чтоль... вот где может быть ошибка в коде? как исправить?
вторая проблема связана с PlayDACSample. если аудиосэмпл содержит сразу данные - крики там, пальба - сразу с начала файла, то все играет без проблем. ежели сэмпл имел скажем пару секунд тишины в начале файла, то проигрывание прекращается. буржуйский товарищ делал типа оптимизации чтоль... он так боялся загрузить процессор компьютера, что прикрутил это дурацкое отрубание при тишине в сэмпле. поскольку PlayDACSample должна содержать в своих параметрах размер файла, то хотелось бы чтоб эта функция играла не от начала сэмпла до тишины секундной длительности и отрубалось проигрывание, а чтоб от начала и до конца - по всему размеру сэмпла, даже если весь сэмпл тишина. чтоб не было этого экономного отрубания.
в архиве 2 ехешника с моим импортом дллки. один с OpenOPNDriver(1) - кнопка play покажет как должен звучать звук выстрела, используется FM инструмент. второй с OpenOPNDriver(2) - там звук будет искажен, из-за ускорения чтоль...
так-же в одночиповом еще две кнопки внизу - одна сэмпл, где данные сразу идут с начала файла. вторая кнопка запускает сэмпл, где в начале примерно на скунду идет тишина, то есть проигрывание прерывается после этого. а должен играть до конца.
так что кто разбирается - помогите
![Улыбка :)](//www.emu-land.net/forum/Smileys/default/smiley.gif)
а то в редакторе для дюны проигрыватель играет несколько обрезано, в случае когда дорожек в музыке больше 6 штук.