XNA Game Studio ゲームでZX Spectrum .ay ファイルをプレイできるようにするライブラリ、コードなどはありますか?
3 に答える
最初に .ay ファイルを wav に変換する必要があります。それを行うプログラムがここ にあります。ソースコードも付いているので、暇な人はそこからコンテンツインポーターとプロセッサーを作成してみてはいかがでしょうか? :-)
自分でコーディングする場合は、次のものが必要です。
Zilog Z80A CPU エミュレータ
簡単ではありませんが、無料の C/C++ ソースがいくつかあります。私は自分のものを使用します。
3 チャネル AY 8910/8912 PSG チップ エミュレータ
これは、CPU よりもはるかに単純です。それは単なるトーンジェネレーターですが、ドキュメントはあまり良くないので、たくさん実験する必要があります.
1 ビット デジタル スピーカー エミュレーション
*.AY ファイルは、サウンド出力に常に AY チップを使用するとは限りません。一部のゲームでは、AY と Build In スピーカーを組み合わせています。AYもcovoxをサポートしているかどうかはわかりません...しかし、もしそうなら、通常i8255チップに8/16ビットのモノ/ステレオcovoxも含める必要があります。
キーボードエミュレーション
可変ハードウェア アーキテクチャのサポート
*.AYファイルは、より多くのアーキテクチャの音楽を保存します...シャープ、アムスタードCPC、ZX48、ZX128、クローンの間には違いがあります...水晶周波数が異なるものもあれば、リプロダクターとのチャネルミキシングが異なるものもあり、IOアドレスも異なる場合がありますメモリ ページングの問題は言うまでもありません。
音声出力
これはターゲット プラットフォームに依存しており、私は XNA を使用していないため、この件には触れません (既に回答/承認されているため)。
AY プレーヤーは次のようになります。
- 最初に AY ヘッダーをロードします
- ターゲット プラットフォームを検出し、それに一致するようにエミュレータを構成します
- AY バイナリをターゲット メモリ ゾーンにロードする
- レジスタを設定し、エミュレーションを開始します
したがって、AY プレーヤーをコーディングする場合は、*.AY ファイルはサウンド レコーディングではないプログラムであるため、Z80 エミュレーターを作成することになります。多くの AY ファイルがスピーカーを使用するため、競合モデルを適切にエミュレートする必要があります。そうしないと、特にスピーカーで聞こえるタイミングの問題が発生します...
品質を向上させるために、FIR フィルターを適用して、多くのエフェクトが使用するスピーカーのPWMのような制御をシミュレートできます。
XNA でサウンドが必要で、XBOX 360 のサポートが必要な場合は、サポートされているファイル形式を使用する必要があります。.ay ファイルを XNA がネイティブにサポートする形式に変換することをお勧めします。
Windows のみをサポートする場合は、それらを再生できる .NET ライブラリを検索します。.NET で動作する場合は、Windows 上の XNA でも動作します。