まず、お約束の前提条件としてエミュレーターでメガドライブやメガCDのゲームを動かそうとした場合、
必ず「自分で所持している実機やゲームカセットからBIOSやROMデータをダンプする」必要があります。(遵法上も必須事項)
実機もゲームも所持しておりその点は問題ないと言えますが、そもそも何が必要なのか不明でしたので、
メガCD修理(部品の到着待ち)と並行して、バックアップ環境を調査しました。
調査したところ、メガCDのBIOSはROMライターがあれば実機からEEPROMを外してダンプすることが可能で、
ゲームデータもダンパーと呼ばれる装置を使えば、ROMカセットからダンプできるようです。
しかし、ROMライターの価格もそれなりにしますし、 ROMダンパーの購入はグレーな部分もあり、
また利用には専門の知識が必要なため、あまり手を出しやすくはない状況です。
もう一つの手段としては、Sega CD Transferを使う方法です。
Sega CD Transferは、Mike Pavone氏が開発した実機を利用したダンパーで、SEGA-CD(MEGA-CD)上で動作し、
ゲーム機の2P側のコネクタ(D-SUB9)とPCのパラレルポート(D-SUB25)をケーブル接続して、
メガCDのBIOSデータやゲームカセットをダンプすることができるシステムです。
○Sega CD Transfer Suite
シンプルな接続ケーブルと、パラレルポートを持ったWindows7(32bit)PCがあれば、
BIOSやROMカセットをダンプできるのが最大の魅力ですが、今となっては動作環境(特に後者のPC)を用意するのが難しい状況となりつつあります。
10年前なら良かったんですけどね・・
と言うことで、
Arduino Pro MicroでPC側(dump.exe)の代用ができないか検討してみました。
Mike Pavone氏のホームページの情報だけでは、ダンパー(dump.exe)側の動作がよく
判らなかったのですが、オープンソースのダンパー(UCON64)がSega CD Transferに対応していることが判り、
UCON64のサイトで公開されているソースコードと、
パラレルポートのI/O仕様を確認したところ、概ね制御が判明しました。
通信は4ビットパラレル制御でメガドライブ側のERR信号状態(Hi⇒Lo)を確認しつつALF信号をHi⇒Lo⇒Hi ⇒Loと切り替えることで、
下位4ビットリード⇒上位4ビットリード⇒アドレス更新⇒次データ読み出し・・を繰り返す動作のようです。
データ構成は、最初の1バイト目に64KB単位のデータ転送数が入り、残りはダンプされたデータとなっています。
(転送数+1)×64KBを転送したら、通信が終了します。
<通信プロトコル詳細は省略>
■参考にしたWEBページです。(本当にありがとうございました)
・UCON64(ソースコードを参照)
・I/Oポートの制御(パラレルポート説明 )
メガCD修理用部品待ちの間にSega CD Transferを使う準備をしました。
と言っても、既に利用方法は諸先輩方が解説されておりますので、2020年8月現在の
補足事項を記載しておきます。
(1)SEGA Loader用CD-Rの作成
メガCD側で動作するCD-Rの作成方法は以下のサイトを参考にさせて頂きました。(感謝いたします)
○てきとうなブログ(Sega loader v1.0 (その1))
○あかね色の空の下で(作業1)
○まっきぃの覚書 Sega CD Transfer
■CD-R書き込みソフト
Windows10環境でISOファイルを書き込む際にImgBurn v2.5.8.0を利用しました。
起動後の画面で「write image file to disc」を選び「comcable11ConvJ.iso」を指定すれば後はデフォルト設定のままでOKでした。
利用メディアは2000年当時の定番だった太陽誘電製です。
これも20年放置した死蔵品だったので使えるか不安でしたが問題なしでした。(さすが国産?)
(2)部品の購入
手持ちの部品で作成したので新たな購入は無いのですが、全て記載しておきます。
・Arduino Pro Micro互換モジュール
・ブレッドボード
・D-SUB 9P(メス)ソケット
・静音タクトスイッチ(6個入)
後は線材少々と、ハンダこてやニッパ等の道具類です。
結果として、メガドライブパッド用のコネクタケーブルの代用として利用したD-SUB 9P(メス)ソケットが後の明暗を左右することに・・
いよいよ制作です。