[新聞] QEMU/9821 on Windows Snapshot (3/20/2011)
http://homepage3.nifty.com/takeda-toshiya/
2011/3/20
突発的にFM音源(OPNA)を実装してみました。
YM2608+CS4231Aなので、98MULTi CanBe内蔵型音源相当ですね。
コアは他のエミュレータでも使用させていただいているfmgenです。
QEMUはCで実装されていますが、そこにC++のfmgenを組み込むのが大変でした。
configure/makefileの書き方がよく判らなくて、ビルドするのにも一苦労で(苦笑)
以前に実装を試みたときは、QEMU側のタイマの精度の問題があったのですが、
今回は、qemu_get_clock_ns()をバックポートして使用しています。
この関数は、Win32環境ではQueryPerformanceCounter()から取得されますので、
環境依存ではありますが、実時間を高精度で取得できるようになっています。
実装的には、qemu_mod_timer()を使って実時間で1msec単位で割り込んでやって、
(1msec単位を指定しても、実際には2~3msec程度になってしまいますが)
そのときにqemu_get_clock_ns()で取得した経過時間だけ音源を駆動してやります。
その他、ステータスを取得するときに、音源のタイマが駆動中かどうか判定して、
駆動中のときは、やはり音源を駆動してステータスを更新しています。
その他、フロッピーディスクI/Fにおいて、1MB/640KBのモード切り替え時に、
IRQ/DMAを変更する処理を追加しました。
ただし、ディップスイッチの設定は、従来通り1MBモード固定としています。
今回、0.10.6ベースとは別に、最新の0.14.0ベースの実装も試しています。
配布しているバイナリは従来通りの0.10.6ベースですが、ソースアーカイブには
両方のソースが入っています。
KQEMUが使えないこともあって、0.10.6ベースの方が動作は軽くなっていますが、
CPUコアやTCGなど色々改良されていますので、ご興味の方はビルドしてみてください。
mingw以外でビルドするときは、stdc++をリンクするのをお忘れなく。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.126.232.106
Emulator 近期熱門文章
PTT遊戲區 即時熱門文章
78
114