[新聞] QEMU/9821 on Windows Snapshot (3/20/2011)

看板Emulator (模擬器)作者 (八房龍之助)時間15年前 (2011/03/20 16:28), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
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
文章代碼(AID): #1DXRh8az (Emulator)
文章代碼(AID): #1DXRh8az (Emulator)