image


概要

クロックジェネレータやアドレスバス、入出力ピンなど細かなものから、CPU、メモリー、デバイスなどある程度機能のまとまったもののエミュレートや、ファイル解析やデバッグ情報の解析などを行うモジュール※1を管理するライブラリです。

システム構成ファイル※2に、モジュール間の繋がりを記述するだけで、独自のシステム※3をテキストファイルだけで作成※4でき、作成したシステム構成ファイルは、vdmgr※5、vdmgrdebug※6アプリ上動かすことが可能です。

モジュールは、基本C言語で作成します。
他モジュールとはインタフェース(関数ポインタのテーブル)でやり取りを行いますが、全てのモジュールが1clk単位で動作します。
そのため、接続先のモジュールの種類や、動作タイミングなどを考える必要がありません※7
作成するモジュールのことだけ考えれば済むため、モジュールの作成や、変更、修正が比較的簡単にできます。

また、JTAGや、ROMモニター、その他、実デバイスと連携するモジュールを作成すれば、vdmgrdebug上でデバッグをすると言ったことも可能です※8


※1システムを作成するため必要な、1つ以上の機能を持つ部品のことをモジュールと呼んでいます。
CPUやメモリーだけをエミュレートするモジュールや、CPU+メモリー+デバッグ情報解析など複数の機能を持つモジュールがあります。
※2Windows標準の.iniファイルとほとんど同じ書式のテキストファイルです。
※31つ以上のモジュールを組み合わせ、何かを動作させるものをシステムと呼んでいます。
たとえば、NGPocketシステムはNEOGEO POCKETをエミュレートするシステムです。
※4Z80を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テレビゲーム ALL8255.bin、またはALL8255.HEX
(開くメニューからファームウェアを選択)

許可を頂けましたので、ファームウェアのバイナリは不要です。
ファームウェアが必要です
(自作のファームウェアを動かすときは不要)。

ソースなどは、両面テープ配線式電子工作からダウンロードできます。
ColecoVision vdmgr/bios/ColecoVision.rom
BIOSのイメージファイルが必要です。
実機の0x0000-0x1fffを吸い出し、ColecoVision.romの
名前でファイルへ保存、biosフォルダへコピーします。



Windows用

動作環境

OSWindowsXP/7/8/10で動作確認(7のみ32/64bitで確認、その他は32bitのみ)
CPUAtom 1.67GHz/Core 2 Quad 2.66GHzで動作確認
Memory2GByte以上の環境で動作確認
Video/SoundDirectX9.0cで動作するもの

インストール

Downloadからファイルダウンロードし、適当なディレクトリへ解凍します。


アンインストール

レジストリは使用していませんので、インストールしたディレクトリを削除してください。


実行

インンストールしたディレクトリにある、vdmgr.exe、または、vdmgrdebug.exeを実行します。
メニューから、「編集」‐「詳細設定」を選択後、ターゲットシステムを選択します。


エラーについて

以下のエラーが表示された時は、マイクロソフトのページから「DirectX エンド ユーザー ランタイム」をインストールしてください。


image




Raspberry Pi用

動作環境

OSRASPBIAN(2014-01-07)で動作確認
ModelModel Bで動作確認

インストール

Downloadからファイルダウンロードし、適当なディレクトリへ解凍します。


アンインストール

インストールしたディレクトリを削除してください。


実行

インストールしたディレクトリにある、vdmgrを実行します。
ターゲットメニューを選択後、ターゲットシステムを選択します。




謝辞

zipファイルの解凍にzlib 1.2.7を利用させて頂いています。
大変有用なライブラリを有難うございます。

公式サイト:http://zlib.net/