Воспроизведение ZX Spectrum AY-3-8912 в XNA Game Studio
Существуют ли какие-либо библиотеки, фрагменты кода или тому подобное, которые позволят мне играть файлы ZX Spectrum.ay в моих играх XNA Game Studio?
3 ответа
Если вам нужен звук в XNA и вы хотите поддержку XBOX 360, вам нужно использовать поддерживаемые форматы файлов. Скорее, вам лучше, если вы попытаетесь преобразовать файлы.ay в формат, который изначально поддерживает XNA.
Если вы хотите поддерживать только Windows, найдите библиотеку.NET, которая может их воспроизводить, она будет работать в XNA на окнах, если она работает в.NET.
Вы должны сначала конвертировать.ay файлы в wav. Здесь есть программа для этого. Он также поставляется с исходным кодом, так что кто-то, у кого есть свободное время, мог бы помочь, создав из него импортер контента и процессор?:-)
Если вы хотите написать код самостоятельно, вам нужно:
Эмулятор процессора Zilog Z80A
это не так просто сделать, но для этого есть несколько бесплатных исходников на C/C++. Я использую свой собственный.
3-канальный эмулятор чипа AY 8910/8912 PSG
это намного проще, чем процессор. это всего лишь генератор тонов, но документация для него не очень хороша, поэтому вам нужно много экспериментировать.
Эмуляция 1-битного цифрового динамика
*.AY файлы не всегда используют AY-чип для вывода звука. Некоторые игры сочетают в себе AY и встроенный динамик. Сейчас я не уверен, есть ли у AY поддержка для covox или нет... Но если да, то вам нужно включить также 8/16-битный моно / стерео covox, обычно на какой-то чип i8255.
эмуляция клавиатуры
поддержка переменной архитектуры HW
*.AY файлы хранят музыку для большего количества архитектур... есть различия между Sharp, Amstard CPC, ZX48, ZX128, клонами... Некоторые имеют разные кристаллические частоты, некоторые имеют разное микширование каналов с репродукторами, а также адреса ввода-вывода могут отличаться не говоря уже о проблемах с подкачкой памяти.
Выход звука
Это зависит от целевой платформы, и поскольку я не использую XNA, я не буду касаться этой темы (так как на нее уже ответили / приняли)
AY-плеер выглядит так:
- сначала загрузите заголовок AY
- определить целевую платформу и настроить эмулятор в соответствии с ней
- загрузить двоичный файл AY в целевые зоны памяти
- установить регистры и запустить эмуляцию
Так что если вы хотите закодировать AY-плеер, то в итоге вы напишите эмулятор Z80, поскольку *.AY файлы - это программы, а не записи звука. Так как во многих файлах AY используется динамик, вам необходимо правильно эмулировать модель конкуренции, в противном случае могут возникнуть проблемы с синхронизацией, что особенно заметно на динамике...
Для повышения качества вы можете применять FIR-фильтры для имитации управления динамиком в стиле ШИМ, которое используется во многих эффектах.