ラズベリーパイに入れたレトロパイを起動するとエミュレーションステーションが立ち上がり遊ぶゲームを選択できるようになります。
これはやりたい時にやりたいゲームを選んですぐに遊べる、という優れた仕様なのですが、これまで雰囲気だとか想い出とかそう言ったニュアンスを大切にしてここまでやってきたのですから、やはりココも理想を目指すべきなのではと思いスタートアップのスクリプトに手を入れることにしました。
実際はこれまで思ったような制御ができなかったというのもありましたが、今回は半日くらいトライアンドエラーを繰り返し、とりあえず完成させたことで分かったこともあり、それら諸々を記録として残しておくことにします。
次に触るときに結構忘れてることが多いのでメモメモというワケです。
今回の環境としては、
raspberry pi 5
システムソフトはretro pi
メニューはエミュレーションステーション
内部的にはretroarch
コアはlr-mame2016
pc(win11)からは、
Teratermとwinspc
を使って内容を書き換えました。
私は30年以上MacとPC88使いで、他のことに関してはほぼしら状態で生きてきたのでWindowsのう⚪︎こみたいな振る舞いに殺意を持って生きてきました。
最近になって少しは向き合えるようになったというところでしょうか。
Tera termは毎回毎回IDとパスワードを入力するのゴミ過ぎんかと思っていましたが、ショートカットのリンク先にURL形式を埋め込むことで解決しました。
セキュリティに関してはアレですが自宅で使う分には問題ありません。
それより複数のラズパイを使っていたので途中で違うIPのラズパイを操作してしまうなど若干紛らわしい仕様に苦笑。使いやすいですけど。
とにかく autostart.sh のスクリプトを書き換えることで、任意のゲームを任意のコアで起動し、ゲームの終了を確認したらエミュレーションステーションに戻る(起動する)という処理をしています。
というわけで、完成したスクリプトが以下のものになります。
※※※※※※※※※※※※※※※
#!/bin/bash
# ログ開始
echo "Autostart triggered at $(date)" >> /home/pi/autostart.log
# ROM指定
GAME="dsmbl.zip"
ROM_PATH="/home/pi/RetroPie/roms/arcade/$GAME"
# コア指定
CORE="/opt/retropie/libretrocores/lr-mame2016/mamearcade2016_libretro.so"
RETROARCH="/opt/retropie/emulators/retroarch/bin/retroarch"
CONFIG="/opt/retropie/configs/arcade/retroarch.cfg"
# ゲーム起動
"$RETROARCH" -L "$CORE" --config "$CONFIG" "$ROM_PATH" --appendconfig /dev/shm/retroarch.cfg
# 終了後にUI復帰
DISPLAY=:0 emulationstation
※※※※※※※※※※※※※※※
romファイルやコアの位置は各個人の環境によって違いますのでそこは注意してください。
今回は改めて仕様を認識することができました。
後日の自分のためにも簡単に補足しておきます。
・ログの取得
実行するとスクリプト動作は通っているのですが、
内部ではエラーが出ており、それでもとりあえず動かせる部分は動いてるといったことが多すぎて、こりゃログ見ながらじゃなきゃムリゲーと判断。
ログの書き出しを設定しました。
思っていたより原因がはっきり分かるので大分助かりました。
パスとかも案外間違えるしね、私が。
・ROMの名称、中身の正確性
自分はSFC時代に出版社等からいくつか吸い出し機を頂き商品レビューしたりしていたので吸い出しROMファイルとの付き合いは結構長いです。
MAME側で決めたファイル名や中身(バージョンによって違ったりもします)と照合され問題なければ起動するようになっています。
今回の指定ファイルも吸い出したもので、実は中身がMAME側の定義と若干違っています。
もしこのスクリプトで起動しない場合は親ファイルとかBIOSとかのパス指定が必要になるかもしれません。
多分同じフォルダにあれば読み込んでくれると思います。
まぁログに全部でますから心配ありません。
こちらでは全く確認していないこともあり、万一参考にされる方がいる可能性を考慮して補足しました。
・コアの種類、位置の正確性
レトロパイのlr-MAME2016はオプショナルパッケージからインストールできます。
メインパッケージでないのは負荷の大きさやROMセットも変わってくるなどの要因があげられます。
セットアップではなく、後日インストール時に手動で行った場合などはopt配下でないこともあります。
まぁこの辺りも念の為の補足ですね。
・レトロアークのホットキー
スクリプトを書いて任意のゲームを起動。
これはすぐに上手く行きました。
で、一通りプレイした後エミュレーションステーションに戻りましょうとゲーム終了に設定してあるホットキー操作を実行。
そうです、操作が効きません。
そこで、レトロアークを呼び出すスクリプトを記述。
今度はホットキーの設定がデフォルトになってしまいました。
次にアペンドコンフィグでレトロアーチのコンフィグファイルも指定し、オーバーレイやホットキーなどの設定を一時的に上書きします。
コレでゲーム終了時に設定しておいたホットキーが効くようになりました。
・エミュレーションステーションへ復帰
autostart環境で複数モニタがある場合はディスプレイ番号を指定しておくのが無難かと。
エミュレーションステーションに復帰です。
他にももっと時間を掛けて試行錯誤したモノもあるのですが、私には実現できなかったので諦めました。
今回やりたかったことは、ラズパイらしく電源を入れたら自動的に起動、そして任意のゲームも自動的に表示してゲーセンぽく、です。
目的を遂げた今は考えるのをやめて電源パチパチして動作を楽しむだけです。
自宅に筐体が複数ある場合は元電源投入で一斉にお好みのゲームが起動するというパラディソが楽しめます。
自動起動は自己満足度高いですけど、実際違うゲームですぐ遊びたい気分の時はちょっとイラつくことになります。
とくに今回選んだゲームは起動に時間が掛かることもあり(最後に動画を置いておきます)キャンセルからのエミュレーションステーション読み込みのコンボは待つ身にはちょっとダルいですね