Воспроизведение ZX Spectrum AY-3-8912 в XNA Game Studio - PullRequest
3 голосов
/ 21 сентября 2008

Существуют ли какие-либо библиотеки, фрагменты кода или тому подобное, которые позволят мне воспроизводить файлы ZX Spectrum .ay в моих играх XNA Game Studio?

Ответы [ 3 ]

6 голосов
/ 28 июня 2009

Вы должны сначала конвертировать .ay файлы в wav. Здесь есть программа сделать это. Он также поставляется с исходным кодом, так что кто-то, у кого есть свободное время, мог бы помочь, создав из него импортер контента и процессор? : -)

1 голос
/ 26 октября 2015

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

  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, клонами ... Некоторые имеют разные частоты кристаллов, некоторые имеют разное микширование каналов для репродукторов, а также IO адреса могут отличаться, не говоря уже о проблемах с подкачкой памяти.

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

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

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

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

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

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

0 голосов
/ 21 сентября 2008

Если вам нужен звук в XNA и вы хотите поддержку XBOX 360, вам нужно использовать поддерживаемые форматы файлов. Вам лучше всего попытаться преобразовать файлы .ay в формат, который изначально поддерживает XNA.

Если вы хотите поддерживать только Windows, найдите библиотеку .NET, которая может их воспроизводить, она будет работать в XNA на окнах, если она работает в .NET.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...