まだ開発途中ですが、「セガマウス」として認識するパッド変換器を作ってみました。需要が全くないので、たぶん世界初の試みです。
「セガマウス」というのは、その昔、セガが発売したメガドライブ専用のマウスです。あまり出回っていないのか、中古品はプレミア価格になっています。
[セガハード大百科] メガドライブ対応ソフトウェア(セガ発売)
公式ページの情報によると、セガマウスの対応ソフトは全部で15本。
そのうち、メガCD用のマウス対応ソフトはこちら。
- ライズ オブ ザ ドラゴン
- シムアース
- スイッチ
- 笑ゥせぇるすまん
- 夢見館の物語
- モンキー・アイランド ユーレイ海賊大騒動!
- マイト アンド マジックⅢ
- 真・女神転生
- ダンジョンマスターⅡ スカルキープ
- うる星やつら ディア マイ フレンズ
- スターブレード
カートリッジ形式のマウス対応ソフトは以下の通り。
、、、たった4本。少なすぎる。ここで、一番有名なのは「マーブルマッドネス」ですが、結構なプレミアソフトです。
この他、海外のGENESIS用でマウス対応のソフトがあるかもしれません。
動作チェック用として「雀皇登竜門(1993)」を買ってみました。セガマウスに対応させる遊び心が、さすがゲームアーツという感じ。
セガマウスのプロトコルはSGDKの「joy.c」が参考になります。おそらく、世の中にある資料はコレしかないです。
1フレームあたりに、メガドラに対して、10ニブルを送ればいいだけなのですが、、、
ソースを読んでいると、ポートの入出力を変更している箇所を発見。
なんと、セガマウスの通信時に限り、ゲームパッド用ポートの9番ピンが出力(メガドラ→マウス)に変わります。通常時は入力です。間違って信号が衝突したら回路が壊れそう、と思うかもしれませんが、それを見越してか、メガドラ本体の9番ピンと7番ピンには抵抗が入っています。
joy.cを元にタイミングチャートを書いてみました。同期の方法が複雑です。
最初の2ニブル(0x0、0xB)でメガドラは接続デバイスが「セガマウス」であると判断できるようです。
2ニブル目の最初だけ7番ピンの変化を合図に送信します。
それ以降は9番ピンの変化を合図に送信します。
6番ピンを反転する(9pinと同じ論理にする)ことで、データの格納が終わったことを伝えます。実際に試した感じでは、データ格納から1マイクロ秒くらい待ってから、反転しないとデータ化けが起きてしまいます。
7番ピンは得に役割が無くて、それなら、7番ピンと9番ピンは1つにまとめることができるのでは? と思ってしまう。これだけだと謎ですが、マルチタップへの応用を考えた仕様だと思います。
SGDKに付属する「joy-test」というサンプルプログラム。これをROMに焼けば、実機でセガマウスを検出できます。SGDKのデバイスドライバは優秀で、マウスの認識も自動的に行ってくれます。マウスカーソルの累積的な座標を自動的に算出してくれます。
「megamouse」に誤植しているのはご愛敬。、、、って、思ったら、GENESISだとMegamouseが正式名だそうです。
変換器を使ってみた感じでは、デュアルショック2のアナログレバーだとマウスカーソルは操作しにくいです。ゲームパッドじゃなくて、マウスで入力できたらいいですね。当たり前ですが。