作ってみた!ラズパイガジェット達はこちら

スーパーファミコンのコントローラーの中にRaspberry Zero W + Retropie を入れたコントローラー兼レトロゲーム機

作ってみた!

海外でスーパーファミコン(SNES)のコントローラー内にRaspberry Pi Zero またはWを入れ、コントローラーの制御をGPIOに直接繋げておこなう方法がありました。

話題のミニスーパーファミコンよりも小さく面白い&簡単だったので作ってみることにしました。

海外の紹介では、電源をコンセントから取るのではなく、バッテリーにしています。その際、バッテリとRaspberry Pi とは直接繋げられず、もう1枚小さな基板をかませます。バッテリー自体はそれほど高価ではありませんが、屋内で使うゲーム機に電源を取れないとは考えにくいので省きました。また、モバイルバッテリーでチャージャーすれば、近くにコンセントが無くても大丈夫です。邪魔かも知れませんが・・・。

今回の材料

今回、作成に購入した物

  • スーパーファミコンのコントローラー ジャンク324円
  • Raspberry Pi Zero W 1,395円
  • マイクロSDカード8GB 約800円
  • microUSB変換ケーブル 約400円
  • ミニHDMI変換ケーブル 約800円
  • OSはRetropie

合計 4,200

microUSBとミニHDMIの変換ケーブルは太さの問題はありますが、もっと低価格で入手可能です。その場合、3000円台で製作可能です。

また、スーパーファミコンのコントローラーは概ね216円で手に入りますが、今回はほぼ新品に近いため324円のジャンク品を選びました。

いずれにしてもミニスーパーファミコンより安価です。

仕様

  • コントローラーの配線5本の箇所にGPIOの対応ピンへはんだ付けする。
  • 電源は内蔵バッテリーの方がより良いが、製作を簡単にするためモバイルバッテリーかコンセントにする。

(テレビ側のUSB口に繋いでやればコンセントも要らない?? 給電だけはできないのかな??)

コントローラーの加工

2つのケーブルをコントローラー上部から出すためにコントローラーケース(以下ケース)を削り加工する。

スーファミコントローラーケース下側

スーファミコントローラーケース下側

ケースの切断箇所はこの2点

ケースの切断箇所はこの2点

 

ケーブルが通る位置を削る。下側も上側も同じくらいに削ると良さそう。

マークしてからニッパーで大まかに切り取り、棒ヤスリで削った。

こんな仕上がり

こんな仕上がり

 

ケースの反対側(裏側)は補強のための成形が邪魔なので削り取る。他のサイトのように全て取る必要は無かった。バッテリーを入れる場合は全て取らないと干渉しますね。

ケース裏側の加工

ケース裏側の加工

アップ

加工済みアップ

ケースの加工はプラスティックなので簡単です。ただ、細かな作業をするには固いので割れます。工具があればなんですが、売り物ではないので使えればOKというラフさでもケーブルを通せばそれほど目立たなくなります。

ヤスリ後

ヤスリ後通すケーブルによって大きさは変わります。特にHDMIの変換ケーブルは短いと横幅が大きくなるのでLRボタンに干渉します。長めのケーブルでも写真のようにギリギリです。写真ではまだ5ミリ程度は余裕がありますが、中のLRボタン端がギリギリなのでこれが限界ですね。

仮にバッテリーを入れることを考えれば、ケーブルは1本だけでいので、中心も含め大幅に切り取れると思います。

今回のHDMI変換ケーブルはこれを使いました。(ちょっと良い奴)

100円ショップにも運がいいとありますよ。

こちらは100円ショップのもの。もちろん機能は問題ありませんが、今回のプロジェクトでは幅が大きいためケーブル式の方が作りやすかったです。

ちなみに、MicroUSB変換コードは、もっと運がいいとあります。(あまり見かけません)

はんだ付け

ケースの加工の次ははんだ付けです。
スーパーファミコンのコントローラー基板とRaspberry Pi のGPIOを繋ぎます。

コントローラー基板は元々5本のリード線が1つの端子にまとまって1本のケーブルで外に出ています。この5本をそれぞれGPIOの対応したピンに直接接続することで制御します。

まず、元々付いている端子を溶かして外し、穴だけの状態にします。

はんだ付けする5つ

真ん中の5つを溶かします

裏側には端子を接続するアタッチメントがはんだ付けされているのが分かります。

白いアダプタを外す

白いアダプタを外すこの辺りは慣れでしょう。仮に壊れても216円でまた買えば済むと思います(^0^;)

結構、乱雑に扱いましたが壊れることもなかったので安心してください。

はんだ付け後は、こんな感じです。

はんだ付け後

はんだ付け後

では、GPIOのどのピンに接続するのか次にご紹介します!

GPIOのどの場所へ取り付けるか

ここが一番キモですね。この番号を間違えれば動きません。というより壊れますね。

探してみるとこれという情報はありませんでした。いくつかのサイトを参考にスーパーファミコンの場合と置き換えて調べました。

実は、1番から5番とコントローラー基板に記載があったのですが、完全に間反対に間違えてしまって、電源入れたらコントローラー基板のコアがめちゃくちゃ熱くなって焦りました・・・(^0^;)

何度も確認した方がいいですね。間違えずに取り付けてください。

GPIO取り付け位置

GPIO取り付け位置(これが一番分かりやすい画像でした!)

 参考 線は元々スーパーファミコンコントローラー基板に使っていたのを流用しましたが、細い線であったので取り付けに苦労しました。また、上の写真と色が同じで分かりやすいのが、そもそも順番を間違えて線の色をはんだ付けしてしまったので、余計にこんがらがって・・・。
線は太い方がやりやすいです。ただ、長いと取り回しに苦労するとは思います。

Raspberry Pi のGPIO図

GPIO

GPIO番号図

文字で記載すると・・・。

コントローラー基盤とGPIOピンの対照表

SFC側コントローラー基板Raspberry Pi のGPIOピン番号
19(GND)
25(GPIO)
325(GND)
421(GPIO)
51(3.3V)

コントローラー基板には1と5と番号が印刷されています。どちらが1か5か確認してください。真反対にしてしまうと発熱やショート発火など危険です!(体験者は語る)

OSのインストールと設定

ハードウェアの製作が終わったら、ここからはソフトウェアの準備です。

OSにはRetropieを使用します。そしてコントローラーのドライバをセットアップすれば出来上がります。

今回はHDMIでPCモニターに繋いでセットアップしました。テレビでも良いのですが、画面が粗くて見えづらいと思います。

尚、キーボードを余っているもう一つのUSBに繋げて操作するか、SSHで他のマシンからでも可能です。

 

まずはRetropieをSDカードに焼き付け、設定を行います。
今回はRaspberry Pi Zero Wを使用したので、Wi-Fiの設定を行い、外部から操作できるようにしておきます。

以下の手順で紹介していますので参考にしてください。ここでは省きます。

RaspbianをインストールするときSSHを有効化する方法

Raspberry Pi zero W のヘッドレスインストール(キーボードやマウスなしでRaspbianをインストールする方法)

root権限のパスワード設定

念のためrootのパスワードを設定しておきます。自宅以外でも利用することを考えてのことです。
必要無いなと思われたら飛ばしてください。

sudo passwd

※初めはrootにはパスワードが設定されていません。

ドライバーの適用

retropieを初めて起動すると以下の画像のように、コントローラーの設定画面になります。ただ、この段階ではGPIOに繋いだコントローラーは認識していませんのでAボタンを押しても何も起こりません。

この状態では手も足も出ないため、ファンクションキーF4でこの画面を抜けられ、CUIの画面になります。

コマンドにて操作

$ sudo ~/RetroPie-Setup/retropie_setup.sh

Raspberry Pi Zero Wは速度が遅いため、表示されるまで多少時間がかかります。何も起きていないように思えますが、5秒ほど待ってください。

次にセットアップメニューから操作

Manage Packages → Manage Driver Packages → gamecondriver

Gamecon & db9 driversをインストールしてください。

参考 https://github.com/RetroPie/RetroPie-Setup/wiki/GPIO-Modules

環境設定

sudo modprobe gamecon_gpio_rpi map=0,0,1,1,0,0

Controller Type Legend

0 = No connection
1 = SNES gamepad
2 = NES gamepad
3 = Gamecube gamepad
6 = N64 gamepad
7 = PSX/PS2 gamepad
8 = PSX DDR gamepad
9 = SNES mouse

コマンドを叩けば環境設定は終了です。

ジョイスティックのテストが以下のコマンドでできます。

jstest /dev/input/js1

本来、js0がデフォルトなはずで、他のサイトでもjs0の記載があります。他にコントローラーを繋いでいるわけでもないので、js0で良いはずです。何か他のオプションをチェックしてしまったのか、js1で反応しました。この辺りは試行錯誤してみてください。

コマンドで以下のように表示されます。

pi@retropie:~ $ jstest /dev/input/js1
Driver version is 2.1.0.
Joystick (SNES pad) has 2 axes (X, Y)
and 8 buttons (BtnX, BtnY, BtnTL, BtnTR, BtnTR2, BtnSelect, BtnThumbL, BtnThumbR).
Testing ... (interrupt to exit)
Axes:  0:     0  1:     0 Buttons:  0:off  1:off  2:off  3:off  4:off  5:off  6:off  7:off

最後の行(赤マーカー部分)の数字:offの部分がボタンを押すとonに変わる。

ここで動かない場合は、恐らく配線が通電していないと思われます(配線間違いかはんだ付けミス)

 補足 もしもjs1がないというエラーの場合は、sudo apt-get install joystick でインストールかけると現れる(ハズです)(アプリケーションは既に最新が入っていると思うのでインストール自体は行われない)

完成!

sns_controller pi

スーパーファミコン内蔵SFCコントローラー本体

ケースの製作にはそれなりに時間を掛けました。それでも意外と簡単にできる物です。
設定やコマンドなどキャプチャ画像を取り忘れるくらいにあっという間に終わります。今回、他の情報が多く、理解せずに迷って試行錯誤した部分があるので、遠回りしてセットアップしました。しかし、終わってみれば簡単なこと。ドライバー入れて終わりくらいの勢いですね。

こうやってRaspberry Pi に触れてみると、よく出来た基板だなーと痛感します。物づくりの楽しさが味わえます。

 

エミュレータに関しては、グレーな部分も多く、ROMの入手方法などは各自が合法の範囲で入手してください。パブリックドメインのROMも多数あります。それらで楽しむのも一興です。

PDROM

著作権フリーの遊べるゲームROM

市販品と変わらない完成度です。ファミコン形式のROM(.nes)です。
ブレイドバスターはPD-ROM(パブリックドメイン)でほぼ合法的にダウンロードして遊べます。

bladebuster

人気記事:日本語のPD-Rom「Blade Buster(ブレイドバスター)」をRetropieで遊ぶ

これでRaspberry Pi はこれまで2B×1、3B×3、Zero W×2と製作しました。安いので負担になりませんね。ただ、Zero系がなかなか手に入らないことがネックです。

しばらくは3Bの何かを製作しようかと思っています。

日本語環境の記事が1件しか見つかりませんでしたので、改めて記事にしました。ご参考になればと思います。ご質問などはお気軽にお寄せください。

ラズパイの購入方法
Raspberry Pi 本体を購入する際の情報をお届けします。世界で人気のシングルボードコンピューターといえども、日本ではその辺で売っている物ではありません。大きめなパソコンショップか、秋葉原のお店などでは簡単に購入できます。地方に行けば

主に参考にしたサイト:

RetroPieや適法などが面倒な人は本家のエミュレータを買った方が話が早いです!
ニンテンドークラシックミニ ファミリーコンピュータ
ニンテンドークラシックミニ ファミリーコンピュータ 週刊少年ジャンプ創刊50周年記念バージョン
ニンテンドークラシックミニ スーパーファミコン+【Amazon.co.jp限定】オリジナル版『F-ZERO』"風"説明書+オリジナル壁紙 配信
プレイステーション クラシック
NEOGEO mini【Amazon.co.jp限定】「TWINKLE STAR SPRITES」STEAMコード 配信

コメント