クロックジェネレータやアドレスバス、入出力ピンなど細かなものから、CPU、メモリー、デバイスなどある程度機能のまとまったもののエミュレートや、ファイル解析やデバッグ情報の解析などを行うモジュール※1を管理するライブラリです。
システム構成ファイル※2に、モジュール間の繋がりを記述するだけで、独自のシステム※3をテキストファイルだけで作成※4でき、作成したシステム構成ファイルは、vdmgr※5、vdmgrdebug※6アプリ上動かすことが可能です。
モジュールは、基本C言語で作成します。
他モジュールとはインタフェース(関数ポインタのテーブル)でやり取りを行いますが、全てのモジュールが1clk単位で動作します。
そのため、接続先のモジュールの種類や、動作タイミングなどを考える必要がありません※7。
作成するモジュールのことだけ考えれば済むため、モジュールの作成や、変更、修正が比較的簡単にできます。
また、JTAGや、ROMモニター、その他、実デバイスと連携するモジュールを作成すれば、vdmgrdebug上でデバッグをすると言ったことも可能です※8。
※1 | システムを作成するため必要な、1つ以上の機能を持つ部品のことをモジュールと呼んでいます。 CPUやメモリーだけをエミュレートするモジュールや、CPU+メモリー+デバッグ情報解析など複数の機能を持つモジュールがあります。 |
※2 | Windows標準の.iniファイルとほとんど同じ書式のテキストファイルです。 |
※3 | 1つ以上のモジュールを組み合わせ、何かを動作させるものをシステムと呼んでいます。 たとえば、NGPocketシステムはNEOGEO POCKETをエミュレートするシステムです。 |
※4 | Z80を10個持つシステムを作成したくなった時に、テキストファイルだけで簡単に作成できます。 |
※5 | 実行専用のアプリで、フル画面表示で動作させると言ったことが可能です。 |
※6 | 実行、デバッグ(デバッグ用モジュールがあればソースレベルのデバッグが可能)、パフォーマンス解析用のアプリ。 |
※7 | 以前作成したNGPocketの場合、1行描画する分だけCPUを先に動かし、H-SYNCのタイミングで描画、それをV-SYNCまで繰り返すと言ったことをしていました。 このような方法だと、画面描画半ばでパレット変更した、といった処理には対応できません。 libvdmgrのモジュールは、CPUはCPUが必要なクロックだけ、描画はドットクロックを待つと言ったように、モジュールごとに自由に動くことが可能です。 特にファミリーコンピュータのようにクロックにシビアなものは、1クロック単位で動作させないと、完全にエミュレートできません。 |
※8 | もちろん、仮想環境でしか動作しないようなモジュール(たとえばパフォーマンス解析)との連携はできません。 |
v0.1.0で処理を大きく変更しました。
システム名 | 必要なファイル | 説明 |
---|---|---|
GMC-4 | なし | 特になし。 |
HVC-001 | vdmgr/bios/disksystem.rom |
DISK SYSTEMを動作させるには、DISK SYSTEMのRAMアダプタのイメージファイル(8KB)が必要です。 DISK SYSTEMのRAMアダプタを吸出したものを、 disksystem.romの名前でファイルへ保存し、biosフォルダへコピーします。 ROMのみ動作させる時は、イメージファイルは必要ありません。 |
MCS BASIC-52 | vdmgr/bios/BASIC-52.BIN |
ファームウェアが必要です。 MicroControllers and Electronicsからbase52all.zipをダウンロード・解凍し、 ”BASIC-52.BIN”ファイルを、biosフォルダへコピーします。 |
MSX | vdmgr/bios/cbios_main_msx1_jp.rom、 または、 vdmgr/bios/msx.rom |
BIOSのイメージファイルが必要です。 C-BIOSからBIOSをダウンロード・解凍し、 "cbios_main_msx1_jp.rom"ファイルを、biosフォルダへコピーします。 |
NEOGEO POCKET |
vdmgr/bios/ngpbios.rom vdmgr/bios/ngcbios.rom |
BIOSのイメージファイルが必要です。 実機の0x0000-0xffffを吸い出し、 NEOGEO POCKETなら ngpbios.rom、NEOGEO POCKET COLORなら ngcbios.romの 名前でファイルへ保存、biosフォルダへコピーします。 |
SC-3000+SF-7000 |
vdmgr/bios/sf7000.rom、 または vdmgr/bios/sf7000.sc |
SF-7000を動作させるのには、SF-7000のROMイメージファイル(8KB)が必要です。 SF-7000のROMを吸出したものを、sf7000.rom、またはsf7000.scの 名前でファイルへ保存し、biosフォルダへコピーします。 SC-3000のみ動作させる時は、イメージファイルは必要ありません。 |
SG-1000/SEGA MARKIII | なし | 特になし。 |
TD4 | なし | 特になし。 |
Z80テレビゲーム | (開くメニューからファームウェアを選択) 許可を頂けましたので、ファームウェアのバイナリは不要です。 |
(自作のファームウェアを動かすときは不要)。 ソースなどは、両面テープ配線式電子工作からダウンロードできます。 |
ColecoVision |
vdmgr/bios/ColecoVision.rom |
BIOSのイメージファイルが必要です。 実機の0x0000-0x1fffを吸い出し、ColecoVision.romの 名前でファイルへ保存、biosフォルダへコピーします。 |
OS | WindowsXP/7/8/10で動作確認(7のみ32/64bitで確認、その他は32bitのみ) |
---|---|
CPU | Atom 1.67GHz/Core 2 Quad 2.66GHzで動作確認 |
Memory | 2GByte以上の環境で動作確認 |
Video/Sound | DirectX9.0cで動作するもの |
Downloadからファイルダウンロードし、適当なディレクトリへ解凍します。
レジストリは使用していませんので、インストールしたディレクトリを削除してください。
インンストールしたディレクトリにある、vdmgr.exe、または、vdmgrdebug.exeを実行します。
メニューから、「編集」‐「詳細設定」を選択後、ターゲットシステムを選択します。
以下のエラーが表示された時は、マイクロソフトのページから「DirectX エンド ユーザー ランタイム」をインストールしてください。
OS | RASPBIAN(2014-01-07)で動作確認 |
---|---|
Model | Model Bで動作確認 |
Downloadからファイルダウンロードし、適当なディレクトリへ解凍します。
インストールしたディレクトリを削除してください。
インストールしたディレクトリにある、vdmgrを実行します。
ターゲットメニューを選択後、ターゲットシステムを選択します。
zipファイルの解凍にzlib 1.2.7を利用させて頂いています。
大変有用なライブラリを有難うございます。
公式サイト:http://zlib.net/