Воспроизведение 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. Здесь есть программа для этого. Он также поставляется с исходным кодом, так что кто-то, у кого есть свободное время, мог бы помочь, создав из него импортер контента и процессор?:-)

Если вы хотите написать код самостоятельно, вам нужно:

  1. Эмулятор процессора Zilog Z80A

    это не так просто сделать, но для этого есть несколько бесплатных исходников на C/C++. Я использую свой собственный.

  2. 3-канальный эмулятор чипа AY 8910/8912 PSG

    это намного проще, чем процессор. это всего лишь генератор тонов, но документация для него не очень хороша, поэтому вам нужно много экспериментировать.

  3. Эмуляция 1-битного цифрового динамика

    *.AY файлы не всегда используют AY-чип для вывода звука. Некоторые игры сочетают в себе AY и встроенный динамик. Сейчас я не уверен, есть ли у AY поддержка для covox или нет... Но если да, то вам нужно включить также 8/16-битный моно / стерео covox, обычно на какой-то чип i8255.

  4. эмуляция клавиатуры

  5. поддержка переменной архитектуры HW

    *.AY файлы хранят музыку для большего количества архитектур... есть различия между Sharp, Amstard CPC, ZX48, ZX128, клонами... Некоторые имеют разные кристаллические частоты, некоторые имеют разное микширование каналов с репродукторами, а также адреса ввода-вывода могут отличаться не говоря уже о проблемах с подкачкой памяти.

  6. Выход звука

    Это зависит от целевой платформы, и поскольку я не использую XNA, я не буду касаться этой темы (так как на нее уже ответили / приняли)

AY-плеер выглядит так:

  1. сначала загрузите заголовок AY
  2. определить целевую платформу и настроить эмулятор в соответствии с ней
  3. загрузить двоичный файл AY в целевые зоны памяти
  4. установить регистры и запустить эмуляцию

Так что если вы хотите закодировать AY-плеер, то в итоге вы напишите эмулятор Z80, поскольку *.AY файлы - это программы, а не записи звука. Так как во многих файлах AY используется динамик, вам необходимо правильно эмулировать модель конкуренции, в противном случае могут возникнуть проблемы с синхронизацией, что особенно заметно на динамике...

Для повышения качества вы можете применять FIR-фильтры для имитации управления динамиком в стиле ШИМ, которое используется во многих эффектах.

Другие вопросы по тегам