CLV-202 to USBというニンテンドークラシックミニ スーパーファミコンのコントローラーを PC で使うデバイスを作成した。
CLV-202 to USB とは
CLV-202 to USBはニンテンドークラシックミニ スーパーファミコンのコントローラー(CLV-202)を無改造でUSB ゲームパッドとして扱えるようにする。
スペシャルサンクス
本ハードウェア及びソフトウェアは以下のサイトの情報がなければ完成しなかったでしょう。深く感謝いたします。
ニンテンドークラシックミニ スーパーファミコンの通信解析 – Keio Robotics Association
プロローグ
河原は Windows 版ぷよぷよテトリスのオンライン対戦に明け暮れていた…。(やるのはテトリスだ)
ある日使っていた Xbox One のコントローラーの D-Pad がチャタリングを起こすようになり、まともにゲームを遊ぶことができなくなってしまった。
そこで新しい Xbox One のコントローラーを購入したのだが、新しいコントローラーはモデルチェンジによって D-Pad の形状が変わっていた。
河原は、操作感のしっくりこないコントローラーと一緒に悶々とした日々を送った。
そんな中、なんとぷよぷよテトリス 2の発売が決定されたのだ。
このことで、ゲームが発売されるまでに問題を解決させる必要が出てきた。
さてアクションパズルゲームの勝敗は十字キーの良し悪しによって決まる。
素晴らしい十字キーを持つコントローラーといえばスーパーファミコンのコントローラーだ。
調べたところスーパーファミコンのコントローラーは現在では生産されていないが、ニンテンドークラシックミニ スーパーファミコンのコントローラーについては入手可能であることがわかった。
こうして河原はニンテンドークラシックミニ スーパーファミコンのコントローラーをベースに究極のゲームコントローラーを開発することにした。オンライン対戦で勝つために…。
全体の構成
長いので以降ニンテンドークラシックミニ スーパーファミコンのコントローラーのことをコントローラーと表記する。
コントローラーの中にはマイコンが入っていて、これは 3.3V で動作する。通信インターフェースは I2C である。
だからコントローラーの I2C の信号を受け取って、その値を USB ゲームコントローラーとしてパソコンに送ってやるようなハードウェアを作れば良いのだ。
ハードウェアを作るために必要な部品
以下にハードウェアを作るために必要な部品を挙げる。
Sparkfun Pro Micro
マイコンの最低要件は USB ゲームコントローラーの開発が可能で、かつ I2C 通信が可能であることだ。3.3V 駆動だとより良い。5V 駆動だと降圧する必要があり部品が増えて面倒だからだ。その点で言うと Sparkfun Pro Micro 3.3V/8MHz は完璧だ。
Pro Micro 3.3V/8MHz - スイッチサイエンス
ちょっと高いが全てを解決する救世主のような存在だ。
コネクター
コントローラーとマイコンの接続にはコネクターを使用する。コネクターを使えばコントローラーに破壊的な改造を行う必要がなくなる。コネクターだけ販売しているサイトがある。
コネクター。なんでこんな部品が手に入るんだろう。
タクタイルスイッチ
マイコンのリセット用のタクタイルスイッチも用意する。
タクトスイッチ(黒色): パーツ一般 秋月電子通商-電子部品・ネット通販
タクタイルスイッチ。マイコンのリセット用に使う。
USB ケーブル
マイコンと PC を接続するために USB ケーブルが必要である。コントローラーのケーブルは十分に長いので、USB ケーブルは短いものが望ましい。
Amazon.co.jp: エレコム エコ USB ケーブル 2.0 A-microB 0.15m U2C-JAMB15BK : パソコン・周辺機器
USB ケーブル。部屋に余っていたらそれを使っても良いが、短いほうが芸術点が高い。
ニンテンドークラシックミニ スーパーファミコンのコントローラー
コントローラーについては任天堂に迷惑をかけるわけにはいかないから詳しくは書かないが、手に入れる方法があるのだ。
素晴らしい操作性を持つコントローラーだ。
ハードウェアの配線図
以下にハードウェアの配線図を載せる。
3.3V の Pro Micro を選んだことで、配線は超簡単だ。
ハードウェアの組み立て
部品が揃ったら組み立てる。
なおハードウェアの筐体はダイソーで入手可能である。
カラーバリエーションが 3 種類もあるので、好きな色を選んで友だちに差をつけることができる。
ソフトウェアの作成
ハードウェアは作っただけでは動かず、ソフトウェアを用意しないといけないのだ。
コードは以下に置いた。
このソフトウェアは I2C 通信して、XInput のライブラリを呼んでいるだけである。
I2C 通信は以下の情報を参考に、Arduino 向けに落とし込んでいる。
ニンテンドークラシックミニ スーパーファミコンの通信解析 – Keio Robotics Association
Arduino IDE でのソフトウェア書き込み
これをマイコンに書き込めば終わりなのだが、今回使うマイコンは書き込み方が一癖あるので、攻略情報を教えよう。
ライブラリをインストールする
以下のリポジトリをクローンする。
Windows 環境の場合、クローンしたファイル群を以下のように置き直す。バージョンなど足りないディレクトリは手動で作成する。
%LOCALAPPDATA%\Arduino15
└─packages
├─arduino
├─builtin
├─xinput
│ └─hardware
│ └─avr
│ └─1.0.5
│ │ boards.txt
│ │ LICENSE
│ │ platform.txt
│ │ post_install.bat
│ │ README.md
│ │
│ ├─.github
│ ├─bootloaders
│ ├─cores
│ ├─drivers
│ ├─libraries
│ └─variants
└─xinput_sparkfun
└─hardware
└─avr
└─1.0.0
│ avrdude.conf
│ boards.txt
│ platform.txt
│
├─bootloaders
├─libraries
└─variants
次に ツール
-ライブラリの管理...
から XInput をインストールする。
Arduino IDE を再起動する。
ソフトウェアを書き込む
ツール
-ボード
から以下のようにSparkFun Pro Micro w/ XInput
を選択する。
ここからマイコンへソフトウェアを書き込むのだが、これがやたらと難しい。
リセットスイッチをダブルクリックすると COM ポートが出現しマイコンが書き込みを受け付けるのだが、この時間がたった数秒間しかない。 (マイコンの接続状態は Arduino IDE のウィンドウ右下を見るとわかりやすい)
数秒間だとポートの設定だけで終わってしまうし、Arduino IDE は書き込みのたびにコンパイルするのでとても間に合わない。
そこで以下のようにソフトウェアを書き込む。
- マイコンを USB 接続する。
- リセットスイッチをダブルクリックすると COM ポートが出現するので、素早く Arduino IDE の
ツール
-シリアルポート
から COM ポートを設定する。 - Arduino IDE の書き込みボタンを押す。
- Arduino IDE の
コンパイル完了。
のトーストが出現したあたりで、リセットスイッチをダブルクリックし、マイコンに書き込みを受付させる。
うまくいけば Arduino IDE に書き込み完了
と表示される。以下のように妙な赤字が出るかもしれないが、動けば良いのだ。
動いた
一心同体だ。
費用
はんだごてなどの工具は含めていない。結構かかったが面白かったので良し。
材料 | 値段[円] |
---|---|
コントローラー | 1650 |
コントローラー送料 | 660 |
マイコン | 2064 |
マイコン送料 | 200 |
コネクター | 200 |
コネクター送料 | 579 |
タクトスイッチ | 10 |
ケース | 110 |
線材 | 555 |
合計 | 6028 |
エピローグ
こうして究極の操作性を持つコントローラーを手に入れた河原は、練習の日々を送った…。
しかし発売されたぷよぷよテトリス 2 は操作性が良くなくて、オンライン対戦を止めてしまった。
でもアナログスティックの要らないゲームをパソコンで遊ぶときには、このコントローラーを使っている。
おわり