🗂

スーファミ純正コントローラをUSB化してピクセルリマスターをやる

2021/10/21に公開2

概要

純正スーパーファミコン用のゲームパッドをUSB化して、PC等から標準HIDのゲームパッドとして使えるようにする。
USB化はATmega32U4 Pro micro Arduino互換ボードを使用。

経緯

ピクセルリマスターのFF1のPC版を購入。キーボードでやっていたけど、不自由は無いものの情緒が無い・・・
ということで、シンプルな十字キーのゲームパッドを検索。
Amazonとかで安いやつでもそれなりにするし、どうせ買うなら任天堂のBT接続のスーファミコントローラかなーと考えていた。
が、ふと調べると純正のファミコンのコントローラをUSB化する記事を見かけて、同様にすればスーファミでもできるのでは?と思い、久しぶりに工作することに。

参考にしたサイト

必要なもの

やること

コントローラの調達

まずはスーファミコントローラの調達のためハードオフへ。
初めて行った店舗だったけど、着いてみたら結構小さい・・・
ジャンクコーナーはあるとのことだけど、コントローラはあるかと心配したが、少ないものの選べるくらいにはスーファミコントローラがあった。

コントローラの選ぶ基準は、

  • シールが貼ってあるのは、掃除が面倒なのでNG
  • 黄ばみは漂白できるのでOK
  • ボタンがヘタっているのは交換部品のほうがコントローラよりも高いのでNG。なるべくボタンのクリック感が生きているやつを選ぶ

無事そこそこの状態のコントローラを調達できました。

事前準備

まずは分解清掃をする。

分解は、裏側のネジ穴からプラスネジを外すだけで、特に難しいところはないです。
(Swichのコントローラみたいに気をつける必要が無くて楽・・・)
PXL_20210923_041833905.jpg

その後、筐体は漂白をします。
こちらのサイトを参考に。
中段に書いてあるとおり、特に高価な漂白剤は必要なくて、過酸化水素水と界面活性剤が入っている、衣類用漂白剤であればOK。
液にひたして、日差しに当てる(正確には紫外線に当てる)と、黄ばみが取れます。

実装

基本的には参考サイトにあることをやるだけ・・・だけど、参考3サイトの部分部分を組み合わせて実現。

SNESのケーブルをぶった切って、Arduinoに接続するのはここを参考に。各ボタンの値の取得方法はこちらを参考に。

Arduinoのスケッチはこちらを参考に、ボタン数を増やしました。
ただ、記事内にあるようにArduinoの16MHzだと、digitalWriteがあまり早くないようなので、タイムチャートどおりには動かせないらしい。

調べているとこちらのサイトがヒット。
delayを入れなくても動作している・・・。
そもそもコントローラ側のICはクロックとラッチを元に、パラシリ変換した値を投げているだけと思われるので、タイミングが早すぎなければ値は取れるのだと思われる。

delayをすべてコメントアウトして無事動作。

コードはgithubに置いてあります。
https://github.com/ka-zuu/snes_gamepad_arduino

ちなみに参照元にも書いてあるけど、Arduinoを筐体内に収めるのが結構大変。
ただ、赤で囲ったところを削り取って、もともとケーブルが出ていく穴を広げると、ちょうどぴったりの高さだったので、固定は簡単そう。
(実際にはまだ固定してない・・・)

LRボタンを漂白するのを忘れたので、そこだけ黄ばんだままに・・・w
ただ、ちゃんと本体の方は色が良くなっていることがわかりやすいので、記事のためということで・・・

最後に

FF1はクリアしたので、FF3をこのコントローラでやってます。
何度目のFF3かわからないけど、ピクセルリマスターはいいぞ!ということでおすすめです。

GitHubで編集を提案

Discussion

きよくらならみきよくらならみ

記事とgithubのソースコードを参考にさせていただき、SFCコントローラーをXInputで使用するコンバーターを作成することができました。
https://github.com/kiyokura/snespad_to_xinput

丁寧な記事とソースコードの公開でとても助かりました。ありがとうございました。
(そのうちblog等にも書こうと思っていますが、取り急ぎお礼まで。)

kazuukazuu

遅ればせながら、コメントいただきありがとうございます!
Githubの方にもリンクいただき喜んでいます!
レトロゲーム工作、楽しんでいきましょう〜