EmuZ-2000 TF-Edtionの拡張ボードとしてDLL形式でプラグインを組み込めるのですが、作り方を調べてなんとか形になったので、仮想ボードプラグインを作ってみました。
ステートセーブ内のメモリ編集ツールをプラグイン化してみました。ダイアログを出して何らかの処理を行うという形なら簡単に出来ると思ったのですが、Visual Studioの理解度の足りなさで時間をかなり食われたのが痛かった。プロジェクトの新規作成は見た目で何とかわかりますが、既存のソースを利用する方法を見出すのに小一時間かかった。わかってしまえば簡単なのですけどねぇ。
コンパイルできるようになって、何とかエラー個所を訂正しつつDLLができた所まではよかったのですが、本体に組み込んでみると認識せず。組み込まれないのはDLL内で最低限必要な関数が本体から認識されないことってことは以前調べてわかってたので、DLLをロードして関数のアドレスを取得するテストプログラムを作って動かしてみたらDLL内の関数がエクスポートされてないのが原因とわかりました。モジュール定義はプロジェクトに組み込んでるのですが、何故かエクスポートされておらず、悩むこと数時間…原因はやはりVisual Studio内の設定だった。defファイルがあるのに明示的に設定しないとダメって何だろうね。
今回は、I/Oの無いダイアログを出して処理するだけのものなので、これでうまく行きました。似たようなものを作るなら難なく行けそうです。まだI/O命令に連動したDLLは作ってないのでもう少し動きを調べつつ、夢のFM音源ボードを作ってみたいです。FM音源チップ自体のエミュレーションも理解できてないので問題が山積みですけどね。