WEBで調べてみたところ Arduino Leonardoを使って、すでにメガドライブミニにJoystickを接続している
記事メガドライブミニ を ジョイスティック で遊ぶ ジョイスティックアダプターの作成があり、
メガドライブミニの情報やライブラリの設定、不具合対処法など重要な情報が公開されておりました。
またこの記事のリンク先にあるJoystickMDに
Arduino Leonardo/Pro Micro専用でメガドライブパッド(3ボタン)を
USBパッドとして利用するスケッチがあり、利用ライブラリや回路図を参考にさせていただきました。
6ボタンパッドの読出し方法については、
こちらの解析情報セガ メガドライブ 6ボタンパッドの読み取り方を
参考にさせて頂いています。
これら貴重な情報を公開していただいている方々には感謝の念しかありません。(本当にありがとうございます)
調べた情報をまとめてみると、メガドライブミニには特定のVendor ID(以下VID)とProduct ID(以下PID)を
もつ機器しか接続できない事が判りました。具体的にはArduino Leonardo/Pro Microを使うにあたり、開発環境
(Arduino IDE)をインストール後に、「boards .txt」を編集してVID/PIDをメガドライブミニに合わせてやる
必要があります。
以下、Windows版(Arduino IDE 1.8.X)での手順を記載します。
(1)Arduino IDE(1.8.X)のインストール
まず、最新のArduino IDE(現時点で1.8.12)をここからDownloadしてインストールします。
ダウンロードの際に寄付の確認画面が出ますが、「JUST DOWNLOAD」を選択する事で無料でも利用できます。
インストーラ同梱版でインストーラを起動して指示に従うか、zip版を任意のフォルダに展開することでIDEのインストールは完了します。
(2)ボードの指定
Arduino IDE(arduino.exe)を起動して、「ツール」→「ボード」→「Arduino Leonardo」を指定します。
その後、Arduino Pro Micro互換モジュールをUSB接続すると「Arduino Leonardo」が認識して
COMポートから見えることを確認します。(この確認は飛ばしても構いません)
(3)Arduino IDEフォルダ内にある「boards .txt」を編集する
Arduino IDEをインストールしたフォルダをエクスプローラで開きます。
インストール時にzipを展開したフォルダを直接開くか、
インストーラ同梱版の場合は、作成されたアイコンを右クリックして「ファイルの場所を開く」を選択します。
IDEがインストールされたフォルダが開くので、その配下「\hardware\arduino\avr」フォルダ内の
boards .txtを見つけます。
boards .txtをマウスで右クリックして「開く」または「編集」を選択します。
(4)VID/PIDを変更する
メモ帳またはエディタで開いて、以下の文字列を検索/変更します。
○boards .txt内のVID/PID設定(下記文字列)を検索
leonardo.build.vid=0x2341
leonardo.build.pid=0x8036
○boards .txt内のVID/PIDを表の(1)、(2)いずれかの内容に変更して保存します。
元のVID/PID | (1)SEGA純正パッドを模擬する場合 | (2)DragonRise製パッドを模擬する場合 |
---|---|---|
leonardo.build.vid=0x2341 | leonardo.build.vid=0x0CA3 | leonardo.build.vid=0x0079 |
leonardo.build.pid=0x8036 | leonardo.build.pid=0x0024 | leonardo.build.pid=0x0011 |
PID/VIDを変更したら、あとは利用するJoystickライブラリに合わせて操作ボタンの指定が必要になります。
(1)Joystick libraryの設定
今回利用したのはArduino Joystick Libraryです。
リンク先の「Installation Instructions」から、「master.zip」を選択して、zipファイルをダウンロードします。
次に、Arduino IDEから「スケッチ」→「ライブラリをインクルード」→「.ZIP形式のライブラリをインストール...」を選択。
ファイルメニューが開くので先ほどダウンロードしたZIPファイルを指定して、インストールを行っておいてください。
(2)Joystick libraryでの操作指定
メガドライブミニの各操作ボタンに対応する、ライブラリ側のボタン番号は下記表の通りです。
番号 | メガドライブミニボタン名 | SEGA純正パッド模擬時の番号 | DragonRise製パッド模擬時の番号 |
---|---|---|---|
1 | A | 2 | 1 |
2 | B | 1 | 2 |
3 | C | 5 | 4 |
4 | Start | 9 | 9 |
5 | X | 3 | 0 |
6 | Y | 0 | 3 |
7 | Z | 4 | 5 |
8 | MODE | 8 | 8 |
番号 | 方向キー名 | 制御関数名 | 値 |
---|---|---|---|
1 | UP(上) | .setYAxis() | 押下:0、離した:127(押下:0、離した:255) |
2 | DOWN(下) | .setYAxis() | 押下:255、離した:127(押下:511、離した:255) |
3 | LEFT(左) | .setXAxis() | 押下:0、離した:127(押下:0、離した:255) |
4 | RIGHT(右) | .setXAxis() | 押下:255、離した:127(押下:511、離した:255) |