このプロジェクト(笑)用に、EGRET II miniのデモモードのような延々とアーケードゲームのデモ画面を流す環境構築のメモと備忘録の続き。
TIPS
- RetroPieはRaspbianをカスタムしたソフトウェア郡なので、基本的にRaspbianの仕組みやルールが使える。
- Raspbianがベースなので、基本はdebian系。
- ↑実は他プラットフォオーム用もあるらしいが話がややこしくなるのでない事にする。
- デフォルトではEmulation Stationというランチャーからゲームの起動や設定を行い、Retroarch経由でエミュレータを動作させる。Retroarch自体がランチャーの機能をもっているが、ゲームの選択はEmulation Station上で行うようになっている。が、今回はデモをループさせるのが目的なので最初の設定時以外Emulation Stationは使用しない。
- 最近のRaspbianはMicroSDの初期化時にある程度設定をしておくことができ、RetroPieはRaspbianをベースにしているので、RetroPieでも同じやり方で初期設定をしておくことができる。Wifiの設定とSSHを有効にしておくと楽。この設定はテキストファイルをMiscroSD上に用意しておけばできるが、Raspberry Pi Imagerを使えばGUI上で設定ができる。
- MicroSDはすぐに壊れるので一度環境が整ったら1つのファイルにまるごとイメージ化しておくと良い。こうしておけば壊れた時にすぐに同じ状態に戻すことができる。なお今回の目的には8Gもあれば十分だったが容量が少ないとかえって高く付くので手頃な容量と価格のものを数枚揃えておくと良いと思う。
- アーケードは、ゲームによってはディップスイッチでリージョンを切り替えるものがあり1、日本語表示をさせたい場合、このディップスイッチを日本に切り替える必要がある2。
- mameの場合、ディップスイッチの設定はゲーム毎に1ファイル作られる3が、このファイルはバイナリデータなのでユーザが手で編集したり作成するのは難しく、実際にゲームを起動させて設定ファイルを作らせたほうが良い。
- デモサウンドもディップスイッチで設定するゲームが多いので、デモ画面で音を出したい場合は設定しておく。が、大抵はデフォルトが鳴らす設定になっている。
- 1度ファイルを作成したら、エミュレータとバージョンが同じであれば流用できる(はずなの)で、cfgディレクトリをまるごと取っておいて使い回すと便利4。
- NeoGeoのリージョン切り替えには、比較的古いゲーム5はlr-mame2003 + MVS、GIGA POWERとでるものはfbneo + UniversalBIOSを使った。
前者はRetroarchの設定ファイルでNeoGeo全体のリージョンを変える事ができたが、Universal BIOSの場合はゲーム個別に設定をしなければならなかった。一括で設定するやりかたがあるのかもしれない。
ディスク書き込みを減らす&使わないサービスの停止
ディスクの書き込みを減らす&使わないサービスを止めてメモリを増やせば少しは寿命も伸びるかもしれないという試みだが、気休め程度かもしれない。
ログ出力停止
linuxはとにかくログばかり吐いてディスクによろしくない。
普通のSDカードにはライトプロテクトといったものがあったが、環境さえ完成してしまえばリードオンリーにしたいぐらいである6。
sudo systemctl stop rsyslog.service syslog.socket
sudo systemctl disable rsyslog.service
使わないサービスの停止
sudo systemctl disable smbd
sudo systemctl disable bluetooth
sudo systemctl disable dphys-swapfile
sudo systemctl disable triggerhappy上から順に
1.ファイルの転送にはsftpを使うのでsmbは使用しない
2.bluetoothは使わない7
3.swapを使うほどメモリを使用しないのと、ディスクアクセスを減らしたい
4.ホットキーらしいが使わない
Bluetooth停止
上記2行目のサービス停止ではまだBluetooothが生きていたので下記ファイルを開き、
sudo nano /boot/config.txt
下記行を追加
dtoverlay=disable-bt
起動時のいらないパラメータを削除
デモを延々と流すので無効にしないでも良さそうなのが多いが、初めから無効にしておけるものは無効にしてしまう
sudo nano /boot/cmdline.txt
デフォルトだと以下のようになっている
console=serial0,115200 console=tty1 root=PARTUUID=xxxxxxx-xx rootfstype=ext4 fsck.repair=yes rootwait loglevel=3 consoleblank=0 plymouth.enable=0
関係ないもの等を色々削除
console=tty1 root=PARTUUID=xxxxxxx-xx rootfstype=ext4 fsck.repair=yes rootwait loglevel=1 ipv6.disable=1
PARTUUIDの値は環境によって異なるので、↑をコピペして使うと起動しなくなるので注意!
覚えておくと便利そうなデフォルト・ショートカットキー
ゲーム実行中
| F1 | retroarchメニュー | |
| F3 | FPS表示/非表示 | 40ぐらいしか出ないゲームは外した方が良いかも |
| F8 | スクリーンショット撮影 | |
| スペース | ゲーム早送り(トグル) | 押してる間のみ速くしたい場合はLキー |
| TAB (mame) | ゲームメニュー | 主にディップスイッチの変更で使用 リージョンやデモサウンドのon/off切替 |
emulation station
| F4 | 終了 | 終了してシェルに移動 |
モニタリング
上でログを取りたくないと言いつつも、1日中デモを走らせた状態をモニタリングしてみた。
Load Averageは130%ぐらい、RAMも上述の通りいっても200MB程度。
計測に使った機種は4 Mobdel Bの8Gモデル。
CPU

RAM

赤色が使用メモリで、Linuxはメモリがある分だけCache/Bufferを割り当てようとするので実際には2G近く使われているが、ない分には確保されない。

CPU温度

3.3vの無音に近いCPUクーラーを使用。45度前後なので問題なし。日の昇っている時間に連れて微妙にあがっている気がしないでもない。
使用機種の選定
今回の環境を作るにあたり、3つのラズパイで試してみたが、
Zeroは大体1986年以降の一部のゲームが重くなり、2は1990年以降で重いゲームが出てきた。4はハードで3Dアクセラレーションを使用していないゲームであれば大体遅延なく動いていた。
ので、Zeroは1985年まで、2は1990年まで、それ以降を4で動かすようにした。
メモリは最高でも200MBちょいしか使用する事がなかったので、Zeroの512MBでも十分なようである。
また、電圧と電流も見ていたが電圧はどれも5V前後、電流は外部機器を付けない状態でも0.5Aを超える事はなく、7インチのスピーカー付きモニタをラズパイ側のUSB給電で使っても大体0.7A-0.8Aで、1Aを超えたのは見ていない8し、雷マークも出ていない。
| CPU | RAM | |
| Zero | 1コア 1.0GHz ARM(v6) 1176JZF-S | 512MB |
| 2 MobelB | 4コア 900MHZ ARM(v8) Cortex-A53 | 1GB |
| 4 MobelB | 4コア 1.5GHz ARM(v8) Cortex-A72 | 2/4/8GB |

なのでベスト・ユースなモデルはZero 2じゃなかろうか。Zero 2はどこも在庫切れかぼったくり価格で試せてないのだが、性能がそこまで必要ないのと余計なものが付いていないコンパクトさから。
試していないモデルが良かろうという酷いオチになってしまった。