Raspberry Pi で RetroPie を構築する方法

# 1. はじめに
今回は、自分自身への備忘録を兼ねて、Raspberry Pi で RetroPie を構築する方法を、お伝えしたいと思います。

- ※2020年1月11日現在、Raspberry Pi 4 へのRetroPie公式対応はまだ発表されていないようです。（現時点ではRaspberry Pi 3B+をご利用することをおすすめいたします。）

![PikPng.com_kodi-splash-screen-png_4371571.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240522/aae5921e-dc6e-4ebd-1d9b-ce9aab7c7597.png)


# 2. この記事を読んでできること
- Raspberry PiでRetroPieを構築できるようになる。

# 3. 必要なもの
- Raspberry Pi（この記事では Raspberry Pi 3B+ を利用しました）
- SDカード（32GB）
- インターネット環境
- パソコン（Windows10など）
- sshクライアントソフト（[TeraTerm](https://ja.osdn.net/projects/ttssh2/releases/)）

- 参考：RaspberryPiにIPアドレスではなくホスト名で接続したい方は、あらかじめ[iTunes](https://support.apple.com/ja_JP/downloads/itunes)（正確には『[Bonjourサービス](https://support.apple.com/kb/DL999?locale=ja_JP&viewlocale=ja_JP)』単体）をインストールしておくと『ホスト名.local』にてIPアドレスを使わずともアクセスできるようになると思います。

# 4. RetroPieの入手
- 以下のURLから、OSイメージファイル（[RetroPie](https://retropie.org.uk/download/)）をダウンロードする。

```plaintext:Raspbian_Buster_LiteダウンロードサイトURL
https://retropie.org.uk/download/
```

参考：この記事作成時のファイルバージョン：[retropie-4.5.1-rpi2_rpi3.img.gz](https://github.com/RetroPie/RetroPie-Setup/releases/download/4.5.1/retropie-4.5.1-rpi2_rpi3.img.gz)

# 5. microSDカードのフォーマット
- [SD Formatter for Windows](https://www.sdcard.org/jp/downloads/formatter/index.html)などのソフトを用いて、使用するmicroSDカードをフォーマットする。
- フォーマット形式は「FAT32」を選択することを推奨します。

- 参考：参考画面
![fomatter.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240522/94af63eb-346c-229e-d908-886b65a9339b.png)

# 6. microSDカードへOSイメージの書き込み（所要時間：15分）
- [Etcher](https://www.balena.io/etcher/)などのソフトを用いて、使用するmicroSDカードへOSイメージを書き込む。
- Etcherは、圧縮されたままのOSイメージ（拡張子が.img以外）を解凍せずにそのまま扱えておすすめです。

- 参考：Etcher起動時の画面
![etcher_1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240522/4d57f18a-994c-eb48-9ddf-f70545395fe6.png)

# 7. RetroPie のSSH有効化の設定
- microSDカード直下フォルダにファイル名「ssh」（空ファイル拡張子なし）で新規作成する。保存の際は、不要なファイル拡張子（.txt等）が付かないよう注意すること。
- OSイメージ書き込み直後にmicroSDカード直下フォルダにアクセスできない場合は、いったんmicroSDカードを抜き＆差しすると、ドライブ認識するのでアクセスできるようになると思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240522/9dbc02c8-bc46-05f3-08e8-569e4888ba9a.png)

# 8. RetroPie のWi-Fi設定
- あらかじめ以下の設定をおこない、Wi-Fi設定を済ませておきます。
- microSDカード直下フォルダにファイル名「wpa_supplicant.conf」（改行コード：LF、文字コード：UTF-8）で新規作成し、ファイルの内容を以下のとおり設定する。（ssidとパスワードpskは、各自の環境に合わせて設定してください。）

```plaintext:wpa_supplicant.conf
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
        ssid="----Your-WiFi-SSID----"
        psk="----PLAIN-PASSPHRASE----"
}
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240522/0ffac7cd-6e03-e034-471e-546c31abb4bf.png)


# 9. microSDカード の完成
- 完成した microSDカード を、PCからおもむろに抜き取る。

# 10. RetroPieの起動
- Raspberry PiにmicroSDカードを挿入し、RetroPieを起動する。

# 11. SSHクライアントでRaspberry Piに接続
- PCで、SSHクライアント（TeraTerm 等）を起動し、ホストにRetroPieのIPアドレス「192.168.XXX.XXX」またはホスト名「retropie.local」を入力し、OKボタンをクリックし、ssh接続する。
-  SSH認証画面で、ユーザ名とパスフレーズを入力し、「OK」ボタンをクリックする。
- SSHクライアントの使い方がわからない、またはRetroPieのIPアドレスがわからない、ホスト名接続できない方は、Raspberry PiにHDMIモニタ、マウス、キーボードを接続し以降の操作をおこなってください。RetroPieが起動しWELCOMEメッセージが表示されている状態で『F4』キー押下で、CUIモード（コマンドプロンプト）に移行できます。CUIモードを終了するには『exit』コマンド実行で、元のWELCOME画面に戻れます。
- デフォルトのホスト名は「retropie.local」ですのでお間違えなく。

```plaintext:デフォルトユーザ名／パスワード
ユーザ名　：pi
パスワード：raspberry
```

- 参考：TeraTerm起動時の画面
![teraterm_1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240522/8320321d-c14e-798b-9d33-20eee10887f3.png)

- 参考：TeraTermからRetroPieに接続した際の画面
![retropie.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240522/965f38ab-21ad-dd3b-fad3-91ebbaccc27d.png)

# 12. ネットワーク疎通確認

```plaintext:ネットワーク疎通確認コマンド
$ ping www.yahoo.co.jp
```
- このコマンドで、yahooさんにつながったならネットワークは問題ありません。
- ネットワークが不通の場合は、以降の手順がおこなえないため、ネットワーク環境を確認しましょう。

# 13. Raspberry Pi関連のセットアップ
- 以下のコマンドを順次実行し、Raspberry Pi関連をセットアップします。

```plaintext:コマンドプロンプト
// リポジトリ一覧を更新
$ sudo apt update

// アップグレードの実行（5分程度）
$ sudo apt upgrade
途中、Yキー押下
途中、qキー押下

// パスワード変更
$ passwd

// ホスト名の確認（RetroPieを複数台利用される方は一意に変更するとよいかと思います。）
$ sudo cat /etc/hostname
$ sudo cat /etc/hosts

// 再起動（パスワード変更反映の確認のため）
$ sudo shutdown -r now

// Raspberry Piの設定（CUIモード）
$ sudo raspi-config

// ファイルシステムの拡張
7 Advanced Options
　　→ A1 Expand Filesystem

// ロケール等の変更
4 Localisation Options
　　→ I1 Change Locale
　　　　→ ja_JP.UTF-8 UTF-8 → スペース選択* → OK
　　　　→ en_GB.UTF-8 → OK

※ ロケール追加では『ja_JP.UTF-8 UTF-8』を追加し、デフォルト言語設定では『en_GB.UTF-8』を選択。

// タイムゾーンの変更
4 Localisation Options
　　→ I2 Change Timezone
　　　　→ Asia
　　　　　　→ Tokyo

// Wi-Fi利用国の変更
4 Localisation Options
　　→ I4 Change Wi-fi Country
　　　　→ JP Japan

// オートログイン（CUI）
3 Boot Options
　　→ B1 Desktop/CLI
　　　　→ B2 Console Autologin

// 終了＆再起動
Finish → Yes
```

- 参考：raspi-configコマンド実行時の画面
![raspi-config.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240522/04d0a56a-df0e-aa81-8667-b24bd97a4414.png)


# 14. Sambaの有効化（RETROPIE SETUP）
- 以下のコマンドを順次実行し、Sambaを有効化します。Sambaを有効化することで、WindowsPCやMacなど、他のパソコンからRetroPieに対してファイル共有アクセスが可能となります。

- Samba有効後、同一ネットワークに所属しているWindowsPCでエクスプローラーを開き、アドレス欄に『\\\RETROPIE』（先頭に円マークを2つ）と入力しEnterキー押下で、RetroPieフォルダにアクセスができます。

```plaintext:コマンドプロンプト
// Samba の有効化（RETROPIE SETUP）
$ sudo ~/RetroPie-Setup/retropie_setup.sh
C Configuration / tools → OK
　　→ 830 samba - Configure Samba ROM Shares → OK
　　　　→ 1 Install RetroPie Samba shares → OK → OK
　　　　→ Cancel
　　→ Back
→ Exit
```

- 参考：retropie_setup.shシェル実行時の画面
![retropie_setup.sh_1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240522/9a6b64bd-c40b-e3bd-0da6-4ff693f1d86c.png)

- 参考：エクスプローラーからSambaファイル共有へアクセスした際の画面
![エクスプローラー_1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240522/14d3270b-7ee3-24d5-45f6-506ebe6d8c60.png)


# 15. 日本語フォントのインストール
- 以下のコマンドを順次実行し、日本語フォントをインストールします。

```plaintext:コマンドプロンプト
// 日本語フォントのインストール
$ sudo apt-get install fonts-droid-fallback
Yキー押下

```

# 16. おわりに
いかがでしたでしょうか？以上でRaspberry Pi への RetroPie 構築がひととおり完了しているかと思います。

この後、実際にレトロゲームを遊び始めるには、GAMEPAD（コントローラー）の設定や、ROMsと呼ばれるゲームデータを用意する必要があるようです。

![gaming_nogamepads.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240522/72a1b835-2615-83be-780b-43eddef1c174.png)

RetroPieの構築までであれば、意外と簡単にできたのではないかなと思います。
今回の記事が、みなさまの学習の参考になれば幸いです。

2020/01/11 TAKAHIRO NISHIZONO

# 17. 追記その1：PS4 DUALSHOCK コントローラーとのBluetoothペアリング（RETROPIE SETUP）
- PS3コントローラーでは別途ドライバインストールが必要みたいですが、PS4コントローラーはBluetoothペアリングで比較的簡単にコントローラーを認識させることができるみたいです。
- 以下コマンドを実行する前には、DUALSHOCK 4 のSHAREボタン＋PSボタンを同時長押しし、Bluetoothペアリング待機モード（LED白フラッシュ）にしておくこと。
- Bluetoothペアリング後は、別途、GAMEPAD各ボタンの登録（CONFIGURE INPUT）をおこなう必要があるようです。
- 参考：[YouTube：RetroPie PS4 Controller Tutorial How to Pair The DS4 To Your Raspberry Pi](https://youtu.be/uoFQrnwGoLM)

```plaintext:コマンドプロンプト
$ sudo ~/RetroPie-Setup/retropie_setup.sh
C Configuration / tools → OK
　　→ 804 bluetooth - Configure Bluetooth Devices → OK
　　　　→ R Register and Connect to Bluetooth Device
　　　　　　→ Searching... 
　　　　　　→ Wireless Controller → OK
　　　　　　→ 1 DisplayYesNo → OK
　　　　　　→ OK
　　　　→ Cancel
　　→ Back
→ Exit
```

- 参考：私の用意した[コントローラー](https://www.amazon.co.jp/gp/product/B07XT8V3FZ/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1)では、「Successfully registered and connected to XX:XX:XX:XX:XX:XX」が表示されLED青点灯の状態のまま、〇ボタン（Aボタン）を押すことで、GAMEPADのキーアサインに進むことができました。（HDMIモニタにはWELCOME画面を表示しておき、別途、ssh接続したコンソール側でRETROPIE SETUPシェルを用いてBluetoothペアリングを完了手前まで進める感じです。ペアリング失敗した場合は、『X Remove Bluetooth Device』からペアリング解除をして、再度チャレンジするとコツをつかめるかと思います。）

# 18. 追記その2：Switch Pro コントローラーとのBluetoothペアリング（RETROPIE SETUP）
- Switch Pro コントローラーをBluetoothペアリングすることで比較的簡単にコントローラーを認識させることができるみたいです。
- 参考：[reddit：Nintendo switch pro controller with reteopie](https://www.reddit.com/r/RetroPie/comments/62sctz/nintendo_switch_pro_controller_with_reteopie/dfozay2/?sort=confidence)

```plaintext:コマンドプロンプト
$ sudo ~/RetroPie-Setup/retropie_setup.sh
C Configuration / tools → OK
　　→ 804 bluetooth - Configure Bluetooth Devices → OK
　　　　→ R Register and Connect to Bluetooth Device
　　　　　　→ Searching... 
　　　　　　→ PRO CONTROLLER → OK
　　　　　　→ 3 NoInputNoOutput → OK
　　　　　　→ OK
　　　　→ Cancel
　　→ Back
→ Exit
```

# 19. 追記その3：Xbox有線コントローラー最強説
- Bluetooth対応コントローラーを利用することは今どきでカッコいいのですが、Bluetoothペアリング切れ、キー入力遅延を考慮すると、やはり有線コントローラーが安定して利用できおすすめです。
- Xbox互換の有線コントローラーであれば、連射機能、Xinput（Xbox入力方式）／Dinput（DirectX入力方式）切り替え、十字キーとアナログスティックを電気的に切り替える機能を有しているコントローラーもあり、レトロゲーにぴったりな高機能です。
- 誠に勝手ではありますが、ネット通販で見つけた [OPOLAR USB有線ゲームパッド ゲームコントローラー](https://www.amazon.co.jp/gp/product/B0816DN1DQ/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1) を、RetroPie推奨コントローラーに推薦させていただきます。この [OPOLAR USB有線ゲームパッド ゲームコントローラー](https://www.amazon.co.jp/gp/product/B0816DN1DQ/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1) の良いところは、TURBOボタン＋任意ボタンで連射ON／OFF、TURBOボタン＋STARTボタンで十字キーとアナログスティック切り替えができ、RetroPieに有線接続して起動するだけで、Xboxコントローラーとして認識する安心互換、それでいてボタンが光る！コントローラーでお悩みなあなたにうってつけです。（海外プロゲーマーは、スポンサードの付いた専用ゲームコントローラーを使ってプレイされる方もいらっしゃると耳にします。あなたにとって、お気に入りのコントローラーにであえることをねがっております。）

![IMG_20200114_224247.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240522/1c44f315-4fb8-1fad-df02-16c560c85f54.jpeg)

# 20.追記その4：RetroPie に Kodi をインストールしてみた

```plaintext:コマンドプロンプト
// kodiのインストール
$ sudo ~/RetroPie-Setup/retropie_setup.sh
P Manage packages → OK
　　→ opt Manage optional packages → OK
　　　　→ 314 kodi → OK
　　　　　　→ B Install from binary → OK

※2分程度、インストール処理が完了するまで待つ。

　　　　　　→ Back
　　　　→ Back
　　→ Back
→ Exit

// 再起動（kodi反映のため）
$ sudo shutdown -r now

// kodiをメニューに追加
$ sudo cp /etc/emulationstation/es_systems.cfg /home/pi/.emulationstation/es_systems.cfg

$ sudo vi /home/pi/.emulationstation/es_systems.cfg
※以下の内容を<systemList>要素の最後に追記する。

  <system>
    <fullname>Kodi</fullname>
    <name>kodi</name>
    <path>~/RetroPie/roms/kodi</path>
    <extension>.sh .SH</extension>
    <command>bash %ROM%</command>
    <platform>kodi</platform>
    <theme>kodi</theme>
  </system>

// kodiフォルダの作成
$ mkdir /home/pi/RetroPie/roms/kodi
$ echo "kodi-standalone" > /home/pi/RetroPie/roms/kodi/kodi.sh
$ chmod +x /home/pi/RetroPie/roms/kodi/kodi.sh

// 再起動（メニュー反映のため）
$ sudo shutdown -r now

// ゲームパッド名の確認
$ cat /proc/bus/input/devices | grep Name
N: Name="Microsoft X-Box 360 pad"
N: Name="Wireless Controller Touchpad"
N: Name="Wireless Controller Motion Sensors"
N: Name="Wireless Controller"

// kodi用コントローラー設定ファイルへの追記
$ vi /home/pi/.kodi/userdata/keymaps/joystick.xml
※追記内容は、公式ページなどを参考にする。
※https://github.com/retropie/retropie-setup/wiki/KODI#joypad-support
※私はこちらの設定をそのまま使用しました。https://gitlab.com/ember-dev/kodi/raw/436c61114dfbf7ec0667873428da0812de3c6954/system/keymaps/joystick.Microsoft.Xbox.360.Controller.xml?inline=false

// 再起動（念のため、kodiへコントローラー反映のため）
$ sudo shutdown -r now

// メニューからkodiを起動

// 日本語化
設定 → インターフェース → スキン → Fonts → Arialベースを選択
設定 → インターフェース → 言語 → Japanese
設定 → インターフェース → 地域 → タイムゾーン(国) → Japan

// 結果、"Microsoft X-Box 360 pad"コントローラーでは使うことができませんでしたが、"Wireless Controller"コントローラーではkodiを操作することができました。（ちょっぴり残念です。）
```

# 21.追記その5：ROMの転送（Transferring Roms）

参考文献：[Transferring Roms](https://retropie.org.uk/docs/Transferring-Roms/)

# 22.追記その6：コントローラーの設定（Controller Configuration）

参考文献：[RetroArch Controller Configuration](https://retropie.org.uk/docs/RetroArch-Configuration/#default-joypad-hotkeys)

# 23.追記その7：FavoritesおよびLast Playedの表示方法（How to Enable “Favorites” and “Last Played” on Retropie）

参考文献：[How to Enable “Favorites” and “Last Played” on Retropie](https://www.retroministore.com/2019/12/how-to-enable-favorites-and-last-played-on-retropie/)

![スクリーンショット 2022-05-10 002448.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240522/b19d36fc-2bde-472d-3407-e9a7293bddad.png)

![スクリーンショット 2022-05-10 002504.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240522/1480532e-f723-44bf-c34c-3b0f5807369b.png)

![スクリーンショット 2022-05-10 002530.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240522/70c77cd5-0c58-9dc8-5c94-44e0288130f5.png)

![スクリーンショット 2022-05-10 002553.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240522/f80f2250-9543-8a81-7856-b12df9b285bb.png)

![スクリーンショット 2022-05-10 003159.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240522/f30f1037-d565-b848-7e40-08d6f3729b35.png)