Gibt es irgendwelche Bibliotheken, Codestücke oder ähnliches, mit denen ich die ZX Spectrum .ay-Dateien in meinen XNA Game Studio-Spielen?
Antworten
Zu viele Anzeigen?Wenn Sie es selbst codieren wollen, benötigen Sie:
-
Zilog Z80A CPU-Emulator
nicht so einfach zu machen, aber es gibt einige freie C/C++ Quellen dafür. Ich benutze meine eigene.
-
3-Kanal AY 8910/8912 PSG Chip-Emulator
Dies ist viel einfacher als die CPU. Es ist nur Ton-Generator, aber die Dokumentation ist nicht sehr gut für sie, so dass Sie brauchen, um eine Menge zu experimentieren.
-
1 Bit digitale Lautsprecheremulation
*.AY-Dateien verwenden nicht immer den AY-Chip für die Tonausgabe. Einige Spiele kombinieren AY und eingebaute Lautsprecher. Ich bin mir nicht sicher, ob AY auch Unterstützung für Covox hat oder nicht ... Aber wenn ja, dann müssen Sie auch 8/16 bit mono/stereo covox normalerweise auf irgendeinem i8255 Chip enthalten.
-
Tastatur-Emulation
-
Unterstützung variabler HW-Architekturen
*.AY-Dateien speichern Musik für mehrere Architekturen ... es gibt Unterschiede zwischen Sharp, Amstard CPC, ZX48, ZX128, Klonen ... Einige haben unterschiedliche Quarzfrequenzen, einige haben unterschiedliche Kanalmischungen zu den Reproduktionsgeräten, und auch die IO-Adressen können sich unterscheiden, ganz zu schweigen von den Problemen mit der Speicherauslagerung.
-
Tonausgabe
Dies ist abhängig von der Zielplattform und da ich XNA nicht verwende, werde ich dieses Thema nicht ansprechen (da es bereits beantwortet/akzeptiert wurde)
Der AY Player sieht folgendermaßen aus:
- zuerst den AY-Header laden
- die Zielplattform zu erkennen und den Emulator entsprechend zu konfigurieren
- Laden der AY-Binärdatei in die Zielspeicherzonen
- Setzen der Register und Starten der Emulation
Wenn Sie also einen AY-Player programmieren wollen, werden Sie am Ende einen Z80-Emulator schreiben müssen, da *.AY-Dateien Programme und keine Tonaufnahmen sind. Da viele AY-Dateien Lautsprecher verwendet, dann müssen Sie richtig emulieren die Auseinandersetzung Modell sonst Timing-Probleme auftreten, die vor allem auf Lautsprecher gehört werden kann...
Um die Qualität zu verbessern, können Sie FIR-Filter anwenden, um die PWM -ähnliche Steuerung des Lautsprechers, die viele Effekte nutzen.
Wenn Sie Sound in XNA benötigen und XBOX 360-Unterstützung wünschen, müssen Sie die unterstützten Dateiformate verwenden. Sie sind wirklich besser dran, wenn Sie versuchen, die .ay-Dateien in ein Format zu konvertieren, das XNA nativ unterstützt.
Wenn Sie nur Windows unterstützen wollen, dann suchen Sie nach einer .NET-Bibliothek, die sie abspielen kann. Sie wird in XNA unter Windows funktionieren, wenn sie in .NET funktioniert.