ZX Spectrum AY-3-8912 在 XNA Game Studio 中的播放

3

有没有任何库、代码段或类似的东西可以让我在XNA Game Studio游戏中播放ZX Spectrum .ay文件?

3个回答

6

首先,您应该先将.ay文件转换为.wav格式。有一个程序在这里可以完成此操作。它还附带源代码,因此有些空闲时间的人可以通过创建内容导入器和处理器来提供帮助。 :-)


1
如果你想自己编写代码,你需要:
  1. Zilog Z80A CPU仿真器

    做起来并不容易,但是有一些免费的C/C++源代码可以使用。作者使用自己的代码。

  2. 3通道AY 8910/8912 PSG芯片仿真器

    这比CPU简单得多,只是音调发生器,但是它的文档说明并不是很好,所以您需要进行大量实验。

  3. 1位数字扬声器仿真

    *.AY文件并不总是使用AY芯片进行音频输出。有些游戏结合了AY和内置扬声器。我现在不确定AY是否也支持covox ...但如果是,则还需要包括8/16位单声道/立体声covox,通常在一些i8255芯片上。

  4. 键盘仿真

  5. 可变硬件架构支持

    *.AY文件储存了更多架构的音乐... Sharp、Amstard CPC、ZX48、ZX128、克隆机之间存在差异...一些拥有不同的晶体频率,一些有不同的声道混合重放器,而且IO地址可能也不同,更不用说内存分页问题了。

  6. 声音输出

    这取决于目标平台,由于作者没有使用XNA,所以不会涉及此主题(因为已经有答案/接受)。

AY播放器长这样:

  1. 首先加载AY头文件
  2. 检测目标平台并配置仿真器以匹配它
  3. 将AY二进制文件加载到目标内存区域
  4. 设置寄存器并启动仿真

因此,如果想编写AY播放器,您最终需要编写Z80仿真器,因为*.AY文件是程序而不是声音录音。由于许多AY文件使用扬声器,因此您需要正确模拟争用模型,否则会出现时间问题,尤其是在扬声器上可以听到。

为了提高质量,您可以应用FIR滤波器来模拟许多效果所使用的PWM类似的扬声器控制。


0
如果您需要在XNA中使用声音,并且想要XBOX 360支持,您需要使用受支持的文件格式。您最好尝试将.ay文件转换为XNA本地支持的格式。
如果您只想支持Windows,则可以搜索一个能够播放它们的.NET库,在Windows上运行时,如果在.NET上运行,则可以在XNA中工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接