作者choan (八房龙之助)
看板Emulator
标题[新闻] QEMU/9821 on Windows Snapshot (3/20/2011)
时间Sun Mar 20 16:28:53 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