レトロでハードな物語

レトロなゲーム機・マイコン・中古デバイスなどをArduinoやAVRで再活用する方法を模索しています。

ArduinoでPlaystation Classicのコントローラーを作る

2020年03月20日 | 電子工作

去年の年末のことですが、Playstation Classicを購入しました。新品ではなくハードオフで購入した中古品です。3ヶ月保証付きで4000円ちょっとしたと思います。



このPlaystation Classic、一般的には評判がよくなく発売後すぐに値下げされたらしいです。ニンテンドークラシックミニのシリーズなどと比べると出来が悪かったようですね。詳しくはクグッてみて下さい。

でもこの商品、一部のマニアにはお宝ハードなんです。エミュレータにPCSXが使われていたりセキュリティが甘かったりしたので、ハッカー達に簡単にハッキングされるような改造し放題のマシンだったんです。
今では本体無改造でUSBメモリを挿すだけでゲームが追加でき、Playstation以外のゲームも遊べる夢のマシンとなっています。こんなハード買わないわけには行きません。

購入してすぐに改造しました。32GBのUSBメモリにRetroBoot 0.10を入れ、Playstation Classicに挿して電源を入れるとRetroArchの画面が現れました。簡単ですね。
RetroBootのインストールや設定についてはこのサイトを参考にさせていただきました。

さて、今回の目的はPlaystation Classicの改造ではなくゲームコントローラーの方です。Playstation Classicに付属しているのはPS1のデジタルパッド風なのですが、RetroBoot(RetroArch)ではアナログコントローラーが扱えるようです。
じつは以前にハードオフでこんなコントローラーを買っていました。



ナムコのネジコンです。レースゲーム向けのコントローラーです。昔、SparkFun Pro MicroでPlaystationのマルチタップをPCにつなげたことがあったので、ネジコンも接続できるようにしていました。
Playstation ClassicにはR4 RIDGE RACER TYPE 4も入っているので、ネジコンが使えたらいいですよね。

さっそくPlaystation Classicに上記Pro Microベースのマルチタップをつないでネジコンを試してみたところ、まったく認識されませんでした。ネジコンだけでなく、PS1のデジタルパッドやデュアルショックなども認識されませんでした。
試しに別の、これも以前作ったPro MicroベースのNintendo64コントローラーをつないでみましたが、まったく認識されません。どうやらPro Microに使用しているジョイスティックライブラリではだめなようです。

どういった規格のコントローラーならいいのか調べてみましたが具体的な情報は少なく、XInput方式のコントローラーなら使えそうなことくらいしか分かりませんでした。XInputはXbox360コントローラーの方式です。

ArduinoでXInputのコントローラーが作れるのかどうか、ネットで調べてみるとありました。Arduino XInput Libraryです。Xbox 360コントローラーのエミュレートをするようです。さすがArduinoなんでもありますね。
Pro Microで利用するには、ボード情報のインストール、Pro Microのボード情報の追加インストール、専用ブートローダーの書き込み、XInputライブラリのインストールといった手順が必要になるようです。
具体的には以下のようにしました。

1) 上記サイトからArduino AVR Core Boardsのリンクをたどり、画面の指示にしたがってインストールします。

2)上記サイトに戻ってSparkFun AVR Boardsのリンクをたどり、画面の指示にしたがってインストールします。

3) Arduino IDEを立ち上げて「ボード」から"SparkFun Pro Micro w/XInput"を選び、「ブートローダを書き込む」を実行します。ブートローダーの書き込みにはICSP接続が必要です。

4) XInputライブラリは上記サイトからのダウンロードではなく、Arduino IDEのライブラリマネージャからもインストール出来るので、こちらを利用しました。

これでやっとXInputデバイスが作れます。

まずはテストです。すぐに確認できるようにちょっと手間のかかるPSコントローラーではなく、Pro Microにつないであるマイコンソフトの古いジョイスティック(ステイックやボタンの配線を基板から切り離して引き出してある)を使ってみます。



単純なボタンやスイッチのオンオフだけの回路なのでスケッチはすぐに書けました。
(参考までにスケッチをアップしておきます。割り込みは3個しか無いボタンをスイッチ切り替えで6個にするために使っています。)

これをPlaystation Classicにつないで、まずは改造されていない標準の状態で使えるかどうか試してみます。



ステイックの上下左右の入力は出来ますが、ボタン入力が出来ません。残念。でも標準のまま使うことはないのでまあいいでしょう。

次にRetroArchで試してみます。



電源投入直後のRetroArchの画面で試してみると、ステイック・ボタンどちらも正しく動作しました。きちんとXbox360コントローラーとして認識されているようです。



ゲームを起動しても問題なく使用できます。このジョイスティックだと、ダライアスのようなシューティングゲームの操作がとっても快適になります。これはいいですね。

これでXInputライブラリが使えるということが分かりました。さっそく本家プレイステーションのコントローラーやネジコンをつなぎたいところですが、小さなPlaystation Classicに前に使った大きなマルチタップをつなぐのは邪魔くさいし、XInputライブラリはソースをいじらないと複数コントローラーをぶら下げることが出来なさそうなので、マルチタップを使わずコントローラー単独でつなげようと思います。

そのためにはコントローラーを接続するコネクタが必要なので、ハードオフでこれを買いました。



Playstation2のマルチタップ300円でした。
これを分解してコントローラーのコネクタを取り出します。このコネクタを使えるようにするには、色々と作業があるので続きはまた次回に。



最新の画像もっと見る

コメントを投稿