2014年9月24日水曜日

Raspberry Pi に Retro pie をインストールした話

ブログの更新が途絶えてる間にArduinoとは別でRaspberry Pi(ラズベリーパイ;ラズパイ)を最近買いました。

まあ自分にとってLinux練習用としての位置づけもあるぐらいなのでまだ全く使いこなせていないのですが、今回はOSのRetro pieを導入した話を記録がてら書きますね。



まず簡単にラズパイの説明をしておくと、ラズパイは小型PCボードで、本体を買ってきたら後は一般に配布されてるOSをSDカードに焼き込んでラズパイに差し込んで電源を接続すれば起動しますよ。みたいな機器なんですけど、買ってきたあたりからの詳細は別の記事で改めて書こうと思ってたり思ってなかったり。

Retro pie(こっちはなぜかeまでが正式名称)はラズパイ用のOSなんですけど、何がレトロかってレトロゲームをエミュレートするために作られた専用のOSです。電源を入れるとそのままエミュレーターが起動してソフトの選択画面が映ります。

ここではRetro pie導入の最初から自分の環境(snes起動のみ)が実現するまでを記録しておこうと思います。というのも、日本語で解説したサイトが数えるほどしか見当たらなかったのでいくつかの問題を解決するのに手間がかかったため、という感じです。自分自身、どっかの雑誌を見てとか解説サイトを見てラズパイでsnes起動させようと思ったわけではなく、スペック的にエミュレーターが動きそうだから誰かやってるだろっていうレベルでの見切り発車だったもので。なので、後の人がちょっぴり簡単になるようにという目的で。
手を出そうかと迷ってる人は一通り読んでからできそうかと考えてみればいいかなと思います。

Raspberry pi (Model B+) 

※ こちらの記事はV2.3を初代ラズパイにインストールする手順を記しています
※ ラズパイ2にハードをアップデートしたり,RetroPieをアップデートしたい方は
※ http://arashimata.blogspot.jp/2015/07/raspberry-pi-2-retro-pie-26.html
※ の記事も併せてご覧ください.



●準備するもの(ハード)(ラズパイはじめての人用)
・ラズパイ本体
 ― AでもBでもB+でもよい、自分はエミュレーター専用で使うわけではないのでB+
・SDHCカード
 ― OSが3GB以上あるので最低4GB、B+はマイクロSD規格である事に注意
・ディスプレイと接続するケーブル
 ― HDMIならケーブルは普通のやつ(マイクロでない)、B+ではアナログ端子が3.5φオーディオ端子の中に収まったので更に変換ケーブルが必要
・マイクロUSBケーブル・USB充電器
 ― 電源はマイクロUSBから供給する謎仕様なので、とりあえず1A程度以上の充電器と組み合わせるのを推奨
・USBキーボード(・マウス)
 ― キーボードは必須、マウスはなくてもセットアップできると思うけどあった方が便利、自分はトラックボールつきワイヤレスキーボードを使ってます

・USBゲームパッド(推奨)
 ― キーボードでも動作するのであくまで推奨、USB端子数と相談しながらハブとか使ってください
・3.5φオーディオケーブル・スピーカー
 ― HDMIで音声出力するなら不要だけど環境によってはある方がいいかな、ぶっちゃけ音声なくても動作に支障はないんですけど

ラズパイを収めるケースはあった方がいいですけど、自分の場合香港に注文してまだ届いてないままハダカで使ってるので、これもあくまで推奨。裏面とかの短絡にご注意。



●準備するもの(ソフト)
・Retro pieのイメージ(http://blog.petrockblock.com/retropie/retropie-downloads/
 ― OSです。自分は何も考えずにV.2.3を導入したけど、V1.10の方が導入解説してる事例が多い気が・・・設定項目の仕様もちょいちょい違います
・Win32 Disk Imager(http://sourceforge.jp/projects/sfnet_win32diskimager/
 ― 上のOSをSDカードに焼き込むソフト。他のソフトでも可
・動作させたいゲームソフト
 ― 少なくともsnesの場合はzipでは動作しなかったので、解凍してsmc形式にしておきます
※ 追記 V2.4 以降はZIPファイルに対応しています

●手順
ウィンドウズ機などでSDカードにOSを焼き込む
 ↓
SDカードをラズパイに挿して起動、諸々セットアップ
 ↓
ゲームパッドの導入
 ↓
おわり


はじめての人でもだいたいわかるように、というつもりで書きますけど、正直な話、英語が読めない人とかパソコン関係に詳しくない人にはおすすめしません。PSPのツールみたいに起動したらハッキング完了みたいな事しかやったことがない人は途中で挫折するかと思います。そのつもりで。
あと導入の辺りは記憶だけで書いてるのでたまに嘘書いてるかもしれません。いろいろ自己責任で。


●OSの焼き込み
空のSDカードをカードリーダーなどでパソコンに認識させます。
Win32DiskImagerを起動し、imgファイルを選択、SDカードのドライブ記号を確認してWriteを開始します。
3GB以上あるのでしばらく待ちます。うろ覚えですけど20分ぐらいかかった気が。
完了したらSDカードをラズパイに差し込みます。

●ラズパイ起動
ラズパイには電源ボタンがなく、電源ケーブルを接続したら勝手に電源が入るので、映像出力とかキーボードとか基本的なものを繋いだ状態で給電開始してください。
電源に接続したらディスプレイにちっちゃい文字とかが流れはじめて起動します。

さて、起動すると勝手にエミュレーターのGUI画面になるんですが、迂闊にもV2.3を導入したボクは参考にさせてもらったサイトと操作が全く違う事に気づくんですね。なのでここからは合ってるかどうかよくわからないけど自分のやった方法を書いていきます。
V1.1を導入した人はTakachan日記-とりあえず動いている私のRaspberry Pi(http://takachan3.blog67.fc2.com/blog-entry-253.html)を参考にすればよいかなと。

●CONFIGURE INPUT
初回起動ではGUIを操作するためのコンフィグをラズパイに覚えさせる作業があります。これはあくまでエミュレーターのGUIで使用するためのキーを登録するためのもので、ゲーム内で使用するキーの割り当てをするものではありません。
ここのボタンの登録はミスってもやり直しが利きますけど、あんまり適当に登録しすぎると再登録するための設定に辿り着けなくなる可能性もあるので丁寧に。
HOLD A BUTTON と表示されたらゲームパッドなりキーボードなりでAボタンに相当するキーを長押しします。キーボードの場合、スーファミのボタン配置的にxキーがいいかと思います。
画面が切り替わって十字キー、Bボタン、スタートセレクト、LRを登録します。
XとYはエミュレーターのGUIでは使用しません(nes用のパッドだとXYがない可能性があるためと思われます)。

●エミュレーターの終了
このままではゲーム内でゲームパッドが使用できないので一旦エミュレーターを閉じます。
キーボードでゲームをする場合は矢印キーとaszxキーあたりで動作できますが、どのみちソフトが入っていないのでソフトを入れてからになります。
スタートボタン>QUIT>QUIT EMULATIONSTATION でエミュレーターを閉じてCUI画面になります。
ぶっちゃけF4ボタンでもいいんですけど。

●ラズビアンGUI起動
今回はRetro pieというOSを導入したんですが、ベースとなっているのはラズパイ用として広く使われているRaspbian(ラズビアン)というOSのようです。RaspbianはDebianというLinuxをベースにしているものだそうです。なので、Debianで使えるコマンドがだいたい使えそうだと思っておけばいいかと。
CUI画面でstartxと入力してエンターを押します。しばらくするとGUI画面になります。
Linuxを使ったことのない人には違和感があるかもしれませんが、デスクトップ画面みたいなものが起動してマウスが使えるようになります。
これからやる作業はもしかするとCUI上でも完結できるのかもしれないですけど、今回はGUIで。
ラズビアンを普通にインストールした時とは違ってデスクトップ上に何のアイコンも置かれてないので、宗教的な理由のある方以外はファイルマネージャとLXTerminalのショートカットをデスクトップ上に作ることをおすすめしておきます。
LXTerminalではGUI環境でコマンド入力ができるので、ファイルを検索しながらファイルマネージャーでブラウジングしたりできるので便利です。

●LXTerminalで諸設定
LXTerminalを起動します。
これまでもここからもコマンドは大文字小文字や記号など間違えるとLinuxに「わからん!」って言われて仕事してくれないので注意です。

●●パーティション拡張
まずパーティションを拡張します。4GB以上のSDカードではやりましょうという事になっています。
ほんの数本しかゲーム入れないから容量少なくてもいいやって人はやらなくてもいいですが、そうでないならやりましょう。というのも、OSをインストールしたそのままだと使用可能な領域が狭くてSDカードの容量をフル活用できないのです。とにかくやりましょう。
スーパーユーザー権限でコンフィグを起動します。
sudo raspi-config
メニューが出たらキーボードの矢印キーとエンターキーを使いながら
expand-rootfs
を実行すると領域を拡張してくれます。再起動したら有効になります。
言われるままだと半信半疑だと思うので、拡張する前と後で次のコマンドを実行してみてください。
df -h
dfはファイルシステムの使用状況を表示するコマンドで、-hは見やすくするためのオプションです。
これは少なくともラズビアンを使用する場合OSインストール後真っ先にやる作業ですので今後の参考にしてください。
再起動するとエミュレーターが自動で起動するので、F4でCUIに、startxでGUIに切り換えて再びLXTerminalを起動します。

●●ゲームパッドの設定
カレントディレクトリを変更します。
cd RetroPie-setup
スーパーユーザー権限でシェルスクリプトを起動します。
sudo ./retropie_setup.sh
ここでアンダーバーを使用しますが、デフォルトではOS側が日本語配列キーボードで入力している事になっていないので右シフトの左隣のキーを押してもアンダーバーは入力できません。
テンキーではなく数字の行で0の右隣にあるハイフンキーをシフトを押しながら押せば入力できるかと思います。環境によって違うかもしれないので探してみてください。
メニューが起動します。
これからゲームパッドのボタンを覚えさせます。
Retropieのバージョンによって数字が違うようなので鵜呑みにせず英語を読んで作業してください。
3 SETUP(only if ~
3 22 Register RetroArch controller
と選択していけばCUIみたいな雰囲気の画面が出てくるので、表示に従ってボタンを登録していきます。
ゲームパッドの準備ができたらキーバードのエンターを押してボタン登録作業の開始です。
画面に~ボタンを押してねって感じで出るので順次ボタンを押していきます。
表示が出てから4秒ぐらい経つと該当ボタンなしとしてタイムアウトして次のボタンの登録に移ります。最初はちょっと焦るんですが、一通り終わったらさっきのメニュー画面に戻るので登録し直す事が出来ます。間違って登録しても、最悪ゲームパッドが接続できてなくてもやり直せるので大丈夫です。
snes用コントローラの場合、L2ボタンとかアナログの方向入力がないので後半はタイムアウトさせ続ければ勝手に終わります。これでゲーム内でゲームパッドが使えるようになります。
コントローラが複数ある場合は一つずつ接続して一つずつ登録作業をやればいいようです(自分もよくわかってないですけど)。それと、キーボードは改めて登録できないようです。
※ 追記 ジョイスティックのボタンを登録したcfgファイルについてはコチラを併せてご覧ください.
ボタンの登録が終わった時に「ゲームパッド名.cfg」で保存したよ!ってメッセージが出るんですが、まあこのファイルが見つからんのですよ。findのコマンドで「*.cfg」を検索してもまあ見つからんのです。わかる方がいらっしゃればコメント欄にでもお願いします。
とにかく、これで登録は完了。

●ROMの用意
ハードの設定は終わりましたけど、肝心のゲームソフトがなければ何も始まりません。
今回はUSBメモリでROMのやりとりをします。
とりあえず使っていいUSBメモリをラズパイに接続します。
フォーマットしたままで何も入ってないものが面倒ごとがなくて理想ですけど、雑多なファイルがあってもとりあえずOK。USBメモリじゃなくてもマルチカードリーダーに接続したカメラ用のSDカードでもOKでした。何でもいい。とりあえずメモリ。
ラズパイに接続するとromsというフォルダが勝手に作成されます。romsの中にはエミュレート動作ができるハードの名前がつけられたブランクのフォルダがたくさん入っています。最初の接続はこれが目的なので、ちょっと経ったら取り外し、他のパソコンからこのメモリの該当するハードのフォルダにROMをコピーします。最初の方でも書きましたが、zipではなくsnesならsmc形式にしてからフォルダに入れます。
※ 追記 V2.4 以降ではZIPファイルに対応しています
ROMを入れたら再びラズパイに接続。勝手に同期して本体に挿入してるOSブート用のSDカードに入っていきます。ファイルマネージャでromsフォルダを確認すると入ってるはずです。
ちなみにこの作業、OSブート用のSDカードへ直接他のPCからカードリーダーなどでアクセスしようとしてもできません。素人なのでよくわかりませんが、できません。USBメモリを使いましょう。
これでROMの用意は終わりです。
次はエミュレーターでの作業なので、ラズパイを再起動させましょう。
LXTerminalで次のコマンドをを入力します。
sudo shutdown -r now
-rが再起動のオプション、nowが命令を実行するタイミングです。
ちなみに、シャットダウンのみで再起動をしない場合は
sudo halt
で電源を落とせます。このコマンドは何かと使うので覚えましょう。須藤晴人くん大活躍です。
電源を落とした場合、ラズパイには電源ボタンがないので電源ケーブルを抜き差しして起動させます。
Retro pieは通常のラズビアンとは異なり、X(デスクトップ環境)から直接シャットダウンするボタンがありません。ログアウトでCUIに移ってsudo haltを実行する必要があります。

●ROM起動から終了まで
いつも通り勝手にエミュレーターが起動します。
前の方で初回起動時にエミュレーター画面でのゲームパッド操作の設定をしましたが、その設定をしたゲームパッドでエミュレーターを操作します。
十字キー横でエミュレートするハードを選択、AボタンでROMのリスト表示、AボタンでROM起動です。この辺はV2.3の場合、GUIがよくできているので問題ないでしょう。画面下にどのボタンがどの動作をするかも表示されてますしね。
ROMが起動したらとりあえずゲームパッドが動作することを確認してください。
一通り確認できたら、遊ぶ前に終了のさせ方を確認します。
電源ケーブルぶっち抜きでも終了はできますが、小型PCなので全くオススメしません。
ROMの終了にはキーボードのEsc(エスケイプ)キーを押します。それだけです。
ラズパイ本体のシャットダウンにはエミュレーターのGUIから
スタートボタン>QUIT>SHUTDOWN SYSTEM>OK
で電源を落とします。シャットダウンしても本体の赤いランプは点きっぱなしですが、これは通電サインなので電源ケーブルを抜いておしまいにします。



以上が導入から動作までの大まかな説明です。

重ねて申しますが、書いてる本人がLinuxとかよくわかってないくらいなので、全てにおいて自己責任でお願いします。質問などはコメント欄に書いておけばボクがわからなくても誰かわかる人が答えてくれるかもしれません。
誤植など、特にコマンド表記の間違いは指摘して頂けるとこっそり直します。



自分の環境ではスーファミのコントローラを模した①ELECOMレトロ風USBゲームパッドと②iBUFFALOレトロ調USBゲームパッドが使用でき、両方接続した状態での2Pプレイも可能でした。
どちらもよく再現できていますが、動作する上でボタン番号の順番が違ったり、バッファロー製はスタートセレクトボタンが左に寄ってたりと細かいところで違いがありますね。
エレコム製の方がボタンがちょっと硬いかなと思いますが、格ゲーとかシビアなアクションゲームでもやらない限りそこまで気にならないかもしれません。どちらもロングセラーの数量限定モデルなので枯渇しないうちに手に入れてください。

気になっている人がいるかもしれないので一応書いておきますが、ゲーム内でのセーブは通常通り行えます。ご心配なく。

※ 追記 hotkeyについてはコチラを併せてご覧ください.
参考にしたサイトでは”ホットキー”なるものが存在すると書いてあるのですが、ゲームパッドの設定のところでcfgファイルが見つからないがためにそのホットキーを動作させられないでいます。これが使えればゲームパッドを操作するだけでゲーム画面からエミュレーター画面に脱出することができるのでキーボードの接続が不要になるのですが・・・。確かにEscを一瞬押すためだけにキーボードを接続していることを考えると・・・。
cfgファイル上でhotkeyと表記されますが、このhotkeyに割り当てられたボタンを押しながらまた更に割り当てられた別のボタンを同時に押すことでゲームのどこでもセーブ/ロード/終了ができるという機能なんですね。
本当ならcfgファイルを開いて末尾にちょこちょこっと追記すればいけるはずなんですが。
フォーラムを読み漁ればどこかで見つけられそうな気がしつつ、英語読むの疲れるしEscを押し続ける日々です。


参考にさせて頂いたサイトとか
Takachan日記-とりあえず動いている私のRaspberry Pi( http://takachan3.blog67.fc2.com/blog-entry-253.html
永遠なる串魂ブログ-[RasPi] エミュレータ(RetroPie)のゲームパッド設定(http://zabi.0am.jp/?p=2811
Retro pie フォーラム -アップデートのお知らせ(http://blog.petrockblock.com/2014/07/01/major-update-for-retropie/

Retro pie フォーラム-”hotkey”で検索(http://blog.petrockblock.com/forums/search/?bbp_search=hotkey