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