こんにちは.
以前,RaspberryPi2modelBを研究室で購入し,
大変気に入ったので,自宅にも1台購入したんですが,
全く何にも使われずにホコリをかぶっていました.
RaspberryPi:ラズベリーパイ(通称:ラズパイ)は,
超小型,低消費電力でありながら,計算パワーのあるコンピュータです.
先日ネットサーフィンをしていると,RaspberryPi用のゲームOS
RetroPieというのを発見しました.
The RetroPie Project | petRockBlog
linux(Debian)ベースのOSで,RaspberryPiに導入することで,
Atari 800,ファミコン,スーファミなどのレトロゲームが遊べます.
(含まれるのは本体エミュレータのみで,ソフトは含まれません)
レトロゲームと呼ぶには新しすぎる,プレステなども遊べます.
これは素晴らしい!と思い,情報を収集して,自宅のRaspberryPi2に
導入してみました.
すると,思いの外サクサク動きとても快適だったので
今後はこの環境をメインで使っていこうと思いました.
しかし,そのままではつまらないなーと思っていたところで,
ファミコン本体の中にRaspberryPiを内蔵してしまう文化があることを知りました.
これは,ぜひとも真似をしよう!
と思いたち,すぐに部品を集めて,作成に取り掛かったわけです.
注意:以下の説明では,RetroPie version 3.0を用いています.バージョンの違いによって,各種ファイルの場所や設定画面も変わりますので(全く違う場所になったりする),注意してください.
The RetroPie Project | petRockBlog
の中の
RetroPieProject → Downloads → RetroPie SD-Card Imagesの
RetroPie SD-card Image for Raspberry Pi 2 Version 3.0 をクリック
microSDは,事前にフォーマットしておくと良いです.また,最終的にexFAT形式でフォーマットすると,下の方で行う領域拡張のところでコケにくくなります.
フォーマットは,
まず,SDカードフォーマッターでmicroSDをフォーマットします.
(論理サイズ調整ON,クイックフォーマット)
フォーマット後,エクスプローラで右クリック→フォーマット(exFAT)としました.
microSDは4GB以上の容量が必要です.
起動画面が進んでいくと,
プロンプト(背景黒)画面→「Retro Pie」のロゴ画面→EmulationStationのロゴ画面
ここで,キーボードのF4キーを押して,その後5秒以内にエンターキー(等)を押して,プロンプト画面にします.
コマンドラインへの移行:F4キー ←重要!
sudo raspi-config
Expand Filesystem を選択・実行します.
<Finish>を選択し,再起動させます.(カーソルキー右で選択できます)
容量拡張に成功したかどうかは,dfコマンドで見ましょう.
df -h
赤線で示した部分が,microSD全体の容量と一致していたら(4Gでなければ)
成功です.
ちなみに,RetroPieのデフォルトのユーザ名とパスワードは以下のとおりです.パスワードは, raspi-configで変更しておいたほうが良いかもしれません.
ユーザ名:pi
パスワード:raspberry
1.3.3 インターネット接続
RetroPie設定コマンドを起動します.
sudo ./RetroPie-Setup/retropie_setup.sh
メニューを以下のように選択していく
3: Setup
329: Configure Wifi
1: Connect to WiFi Network
後は,接続するSSIDを選択,パスワードの入力をして,接続してください.
メニューに戻ったら,また上の階層に戻ってください.
ESCキーで戻れます.
1.3.4 必要なアップデートや設定などをしていく
あとは,メニュー(3:Setup内)の項目で,必要な部分を順番に実行していけば良いようになっています.
各項目を行った後に,こまめに再起動をしましょう.
実行するもの
300: Update APT packages
322: Samba ROM Shares 同じネットワーク内のマシンから簡単にアクセスできる
その他,必要なものを設定してください.
ケーブルは,上記の表のような対応があり,これに応じて,RaspberryPiのGPIOポートにつないでいきます.
注意:RaspberryPi2には,PAD3~PAD6しか存在しません.(PAD1,PAD2は欠番)
理由は,図の下に書きます.
Revision1は,GPIO0,GPIO1があります.GPIO2,GPIO3がありません.
Revision2は,その逆です.
パッドを複数繋ぐ場合には,この点に注意して,実際にコントローラのOUTをGPIOのどこにつないだかを確認して,ソフトの設定をする必要があります.
公式にある注意書き
NOTE: pad1 & pad2 are only used with rev.1 board, and pad5 and pad6 with rev.2. So if you have rev.2 board, pad1 and pad2 must be set as 0.
(訳)
注意:PAD1&PAD2は,Revision1の基板でしか使いません.Revision2の基板では,PAD5&PAD6を使います.Revision2の基板を使う場合には,PAD1とPAD2は,0に設定してください.
sudo ./RetroPie-Setup/retropie_setup.sh
325: SNESDev (Driver for the RetroPie GPIO-Adapter) まずこれを停止させる
1: Disable SNESDev on boot and SNESDev keyboard mapping.
310: Gamecon & db9 drivers を実行します.
質問に答えていきます.
GPIO gamepad drivers require that most recent kernel (firmware) is installed and active. Continue with installation?
→ <Yes>
https://github.com/RetroPie/RetroPie-Setup/wiki/gamecon_gpio_rpi
コマンドラインで以下のコマンドを入力してください.
js0とjs1でテストしてください.1コン,2コンがきちんと接続できていれば,
ボタンを押したり離したりすると,表示が変わるはずです.
接続に成功したら,この設定を設定ファイルに書いておき,自動で接続されるようにします.
sudo nano /etc/modules
uinput をコメントアウト → # uinput
gamecon_gpio_rpi map=0,0,2,2,0,0 を追記
再起動させましょう.
sudo reboot
設定コマンドの意味
mapの数字は,左からPAD1,PAD2,PAD3,PAD4,PAD5,PAD6を表しており,数字は,接続したコントローラの種類を表します.
1コンと2コンは,同じICを使っているので,ボタンの数は違いますが,どちらも 2:NES padで動きます.
この画面で,ファミコンコントローラー1Pのボタン(どれでもいい)を 長押しします.
すると,画面にNESPADと表示された後,設定画面になります.
D-PADは,十字キーのことです.順番に押していって設定していきます.
↑ ↓ ← → START SELECT A B と設定していって,
その後X,Y・・ と続きますが,ボタンがないので,
既に設定したボタン(Aボタンでいい)を長押しすると,設定を飛ばします.
たくさん飛ばさないといけないですが,頑張って,Aボタンを押していきます.
設定が終わるとメニュー画面が動かせるようになります.
十字キーでメニューを左右に動かすと,「RetroPie」という項目があります.
その中の,「CONFIGURE RETROARCH KEYBOARD/JOYSTICK」を選びます.
次に,
1: Configure joystick/controller for use with RetroArch
を選択します.
この画面になるので,・・・
そのままコントローラを持って,OKを選択します.
この次の画面では,すさまじい速さで最初のBボタンを押す必要があります.
以下にボタンを押す順番を書いておきます.
その順番に押していきましょう.
B Y(スルー) Select Start ↑ ↓ ← → A あとは全部スルー
関係ないボタンは,何も押さずにスルーして下さい.
これで,ゲーム用のパッド設定が終わり,
2コンにも設定が自動で反映されて,両方のパッドが使えるようになります.
もともと,以下のように設定されています
input_device = "NES pad"
input_driver = "udev"
input_b_btn = "1"
input_select_btn = "2"
input_start_btn = "3"
input_up_axis = "-1"
input_down_axis = "+1"
input_left_axis = "-0"
input_right_axis = "+0"
input_a_btn = "0"
input_enable_hotkey_btn = "2"
input_exit_emulator_btn = "3"
input_reset_btn = "1"
input_state_slot_increase_axis = "+0"
input_state_slot_decrease_axis = "-0"
-1:↑ セーブ
+1:↓ ロード
0:A メニューを出したり閉じたり
これで,セーブをしたり,メニューを出したりすることができるようになります.
導入してみました.
すると,思いの外サクサク動きとても快適だったので
今後はこの環境をメインで使っていこうと思いました.
しかし,そのままではつまらないなーと思っていたところで,
ファミコン本体の中にRaspberryPiを内蔵してしまう文化があることを知りました.
Takachan Dialy:とりあえず動いている私のRaspberry Pi
http://takachan3.blog67.fc2.com/blog-entry-253.html
人生はたぶん暇つぶし:Raspberry pi2 をファミコンボディーに入れてみた。
http://xxxsnkxxx.tumblr.com/
これは,ぜひとも真似をしよう!
と思いたち,すぐに部品を集めて,作成に取り掛かったわけです.
※このブログの記事は,開発が進むごとに更新・追記されます.
-1.完成品のイメージ
- 外からの見た目は初代ファミコン実機
- microUSBで給電
- HDMI接続
- RaspberryPi2 model B を入れる
- 電源ボタンで電源を入れる
- リセットボタンでリセットをかける(シャットダウン)
- 7インチのモニタを使う(本体ごと持ち運んで運用できるように)
- 7インチモニタもUSB給電(DC INでできる)
- 最終的な野望は,彼女にファミコンコスプレをしてもらって,そこにこの本体とモニタをマウントして,コミケ会場を練り歩いてもらうことです.(プレイアブルコスプレ)
- それに合わせて,自作ファミコンカセット(実機用ROM)作成&販売ができたらいいなー
- 現状
- 1コン,2コンのGPIO接続成功
- ドライバインストール(RetroPie-Setup.sh からできる)成功
- NESコントローラのマッピング(sudo modprobe gamecon_gpio_rpi map=0,0,2,2)成功
- 7インチモニタのDotByDot設定(/boot/config.txt)成功
- HDMI強制起動&サウンドデバイスの選択(/boot/config.txt)成功
ゲームを二人で遊ぶことができる状態になっている
- FutureWork
- ファミコン本体の電源で,RaspberryPiの電源を入れる
- ファミコン本体のリセットボタンで,RaspberryPiのリセットを行う(参考ページ)
- ファミコン本体の中に,RaspberryPi2を入れる
0.必要なもの
- RaspberryPi2 model B
- 接続ケーブル(HDMI,microUSBケーブル:電源用)
- LAN環境(今回は無線LAN:WLI-UC-GNM2)
- キーボード
- microSD 4GB以上のもの
- ファミコン本体
- 外側(RaspberryPi格納用)
- ファミコンのコントローラ:1コン 2コン
- 延長ケーブル(ファミコン本体内部格納用)
- HDMI
- USB
- microUSB
- ジャンパ線
- ハンダごて,ハンダ
- HDMI接続ができるモニタ
注意:以下の説明では,RetroPie version 3.0を用いています.バージョンの違いによって,各種ファイルの場所や設定画面も変わりますので(全く違う場所になったりする),注意してください.
1.RetroPieのインストール
1.1.ダウンロード
公式ブログから,最新版RetroPieをダウンロードThe RetroPie Project | petRockBlog
RetroPieProject → Downloads → RetroPie SD-Card Imagesの
RetroPie SD-card Image for Raspberry Pi 2 Version 3.0 をクリック
1.2.microSDへインストール
1.2.1 フォーマット
microSDへダウンロードしたファイルを書き込みます.以下の順で作業してください.microSDは,事前にフォーマットしておくと良いです.また,最終的にexFAT形式でフォーマットすると,下の方で行う領域拡張のところでコケにくくなります.
フォーマットは,
まず,SDカードフォーマッターでmicroSDをフォーマットします.
(論理サイズ調整ON,クイックフォーマット)
1.2.2 書き込み
次に,RetroPieの書き込みを行います.- ダウンロードしたファイルの解凍 .gz→img
- Win32 Disk Imager などのソフトを使い,.imgをmicroSDに書き込む
microSDは4GB以上の容量が必要です.
1.3.RetroPieの起動&設定
1.3.1 起動
microSDをRaspberryPiに挿し,USBキーボード,HDMIケーブル,無線LANドングルを挿し,最後にmicroUSB電源を挿します.(電源をさしたらすぐ電源ONになる)起動画面が進んでいくと,
プロンプト(背景黒)画面→「Retro Pie」のロゴ画面→EmulationStationのロゴ画面
と進み,最後に,以下のES用のパッド設定画面になります.
ここで,キーボードのF4キーを押して,その後5秒以内にエンターキー(等)を押して,プロンプト画面にします.
コマンドラインへの移行:F4キー ←重要!
1.3.2 容量拡張
ラズベリーパイ設定コマンドを起動します.sudo raspi-config
Expand Filesystem を選択・実行します.
<Finish>を選択し,再起動させます.(カーソルキー右で選択できます)
容量拡張に成功したかどうかは,dfコマンドで見ましょう.
df -h
赤線で示した部分が,microSD全体の容量と一致していたら(4Gでなければ)
成功です.
ちなみに,RetroPieのデフォルトのユーザ名とパスワードは以下のとおりです.パスワードは, raspi-configで変更しておいたほうが良いかもしれません.
ユーザ名:pi
パスワード:raspberry
1.3.3 インターネット接続
RetroPie設定コマンドを起動します.
sudo ./RetroPie-Setup/retropie_setup.sh
メニューを以下のように選択していく
3: Setup
329: Configure Wifi
1: Connect to WiFi Network
後は,接続するSSIDを選択,パスワードの入力をして,接続してください.
メニューに戻ったら,また上の階層に戻ってください.
ESCキーで戻れます.
1.3.4 必要なアップデートや設定などをしていく
あとは,メニュー(3:Setup内)の項目で,必要な部分を順番に実行していけば良いようになっています.
各項目を行った後に,こまめに再起動をしましょう.
実行するもの
300: Update APT packages
322: Samba ROM Shares 同じネットワーク内のマシンから簡単にアクセスできる
その他,必要なものを設定してください.
2.コントローラの作成&接続
- 日本のファミコンの実機のコントローラを用いる.
- 1コン,2コンをつなぐ.
- GPIOにつなぐ.
ハマリポイント:1コンと2コンのケーブル配色が違うので注意.
参考ページ:続旧FC用コントローラーコネクタ
ケーブルは,上記の表のような対応があり,これに応じて,RaspberryPiのGPIOポートにつないでいきます.
注意:RaspberryPi2には,PAD3~PAD6しか存在しません.(PAD1,PAD2は欠番)
理由は,図の下に書きます.
【接続先】
OUT以外は,全コントローラ共通なので, 同じ端子に接続(分岐)すればOKです. |
転載元:https://github.com/RetroPie/RetroPie-Setup/wiki/gamecon_gpio_rpi
|
転載元:http://raspi.tv/2014/rpi-gpio-quick-reference-updated-for-raspberry-pi-b
2.2.なぜPAD3~PAD6に設定するのか
上図の左のRevision1のGPIOと,2012年9月以降に発売されたRevision2(図中の真ん中,右)は,GPIOの並びが異なっています.Revision1は,GPIO0,GPIO1があります.GPIO2,GPIO3がありません.
Revision2は,その逆です.
パッドを複数繋ぐ場合には,この点に注意して,実際にコントローラのOUTをGPIOのどこにつないだかを確認して,ソフトの設定をする必要があります.
公式にある注意書き
NOTE: pad1 & pad2 are only used with rev.1 board, and pad5 and pad6 with rev.2. So if you have rev.2 board, pad1 and pad2 must be set as 0.
(訳)
注意:PAD1&PAD2は,Revision1の基板でしか使いません.Revision2の基板では,PAD5&PAD6を使います.Revision2の基板を使う場合には,PAD1とPAD2は,0に設定してください.
2.3.RaspberryPi上の設定
2.3.1 ドライバインストール
RetroPie設定コマンドを起動します.sudo ./RetroPie-Setup/retropie_setup.sh
325: SNESDev (Driver for the RetroPie GPIO-Adapter) まずこれを停止させる
1: Disable SNESDev on boot and SNESDev keyboard mapping.
310: Gamecon & db9 drivers を実行します.
質問に答えていきます.
GPIO gamepad drivers require that most recent kernel (firmware) is installed and active. Continue with installation?
→ <Yes>
Gamecon GPIO driver successfully installed. Would you like to see README?
→ <NO>
もう一個,dp9についてのREADME表示
→ <NO>
Gamecon driver supports RetroPie GPIO adapter board for 2 SNES controllers. Do you want to configure gamecon for 2 SNES controllers?
→ <NO>
この後,念のため再起動しておきましょう.
2.3.2 接続テストと登録
・参考URL:GPIOマッピングhttps://github.com/RetroPie/RetroPie-Setup/wiki/gamecon_gpio_rpi
コマンドラインで以下のコマンドを入力してください.
sudo modprobe gamecon_gpio_rpi map=0,0,2,2,0,0
jstest /dev/input/js0
js0とjs1でテストしてください.1コン,2コンがきちんと接続できていれば,
ボタンを押したり離したりすると,表示が変わるはずです.
接続に成功したら,この設定を設定ファイルに書いておき,自動で接続されるようにします.
sudo nano /etc/modules
uinput をコメントアウト → # uinput
gamecon_gpio_rpi map=0,0,2,2,0,0 を追記
再起動させましょう.
sudo reboot
設定コマンドの意味
mapの数字は,左からPAD1,PAD2,PAD3,PAD4,PAD5,PAD6を表しており,数字は,接続したコントローラの種類を表します.
# modprobe gamecon_gpio_rpi map=<pad1/GPIO0>,<pad2/GPIO1>,<pad3/GPIO4>,<pad4/GPIO7>,<pad5/GPIO2>,<pad6/GPIO3>
where <pad...> is a number defining the pad type:
0 = no connection
1 = SNES pad
2 = NES pad
6 = N64 pad
9 = SNES mouse
1コンと2コンは,同じICを使っているので,ボタンの数は違いますが,どちらも 2:NES padで動きます.
3.RetroPieでの設定(コントローラ,ゲームソフトインストール)
3.1.RetroPieメニュー画面操作用のコントローラ設定
OSが起動すると,以下の画面になります.
この画面で,ファミコンコントローラー1Pのボタン(どれでもいい)を 長押しします.
すると,画面にNESPADと表示された後,設定画面になります.
D-PADは,十字キーのことです.順番に押していって設定していきます.
↑ ↓ ← → START SELECT A B と設定していって,
その後X,Y・・ と続きますが,ボタンがないので,
既に設定したボタン(Aボタンでいい)を長押しすると,設定を飛ばします.
たくさん飛ばさないといけないですが,頑張って,Aボタンを押していきます.
設定が終わるとメニュー画面が動かせるようになります.
3.2.ゲーム用のコントローラ設定
今回は,GUIメニューからRetroPie-Setupに入ってみましょう.十字キーでメニューを左右に動かすと,「RetroPie」という項目があります.
その中の,「CONFIGURE RETROARCH KEYBOARD/JOYSTICK」を選びます.
次に,
1: Configure joystick/controller for use with RetroArch
を選択します.
この画面になるので,・・・
そのままコントローラを持って,OKを選択します.
この次の画面では,すさまじい速さで最初のBボタンを押す必要があります.
以下にボタンを押す順番を書いておきます.
その順番に押していきましょう.
B Y(スルー) Select Start ↑ ↓ ← → A あとは全部スルー
関係ないボタンは,何も押さずにスルーして下さい.
これで,ゲーム用のパッド設定が終わり,
2コンにも設定が自動で反映されて,両方のパッドが使えるようになります.
3.2.ゲーム中の特殊キーの設定
設定ファイルの在り処は,
/opt/retropie/configs/all/retroarch-joypads/NESpad.cfg
設定をいじって,ゲーム中にセーブしたり,メニューを開いたりできるようにします.
sudo nano /opt/retropie/configs/all/retroarch-joypads/NESpad.cfg
もともと,以下のように設定されています
input_device = "NES pad"
input_driver = "udev"
input_b_btn = "1"
input_select_btn = "2"
input_start_btn = "3"
input_up_axis = "-1"
input_down_axis = "+1"
input_left_axis = "-0"
input_right_axis = "+0"
input_a_btn = "0"
input_enable_hotkey_btn = "2"
input_exit_emulator_btn = "3"
input_reset_btn = "1"
input_state_slot_increase_axis = "+0"
input_state_slot_decrease_axis = "-0"
2:Select を押しながら,各キーを押すと指定した機能が発動します.
3:Start エミュレータを終了(exit)
1:B リセット(reset)
+0:→ ステートのスロット番号を1つ増やす
-0:← ステートのスロット番号を1つ減らす
これにさらに,以下のものを追記します.
input_save_state_axis = "-1"
input_load_state_axis = "+1"
input_menu_toggle_btn = "0"
-1:↑ セーブ
+1:↓ ロード
0:A メニューを出したり閉じたり
これで,セーブをしたり,メニューを出したりすることができるようになります.
4.オンダッシュモニタ(7インチ)用設定
・HDMI接続が検出できなくても,無理やりHDMIに出力する
・サウンド出力先をHDMIにする
・解像度を合わせる 800x480
HDMI iPhone5充電可USB 内蔵 シガー 電源 スピーカー 付 7インチ オンダッシュモニター
(仮)釣りと電子工作:aitendoの7インチHDMIをraspberry piに接続
5.ほげほげ
編集中
失礼致しました。Amazonで日本のラズベリーパイを販売している林遠です。
返信削除ブログを拝見しました。弊社のラズベリーパイ4bレビューブログ記事を書きしてくれませんか。
こちらは無料でサンプルを提供します。
連絡メールはjp02@vertue.cnです。
御返事お待ちしております。どうぞよろしくお願いします。