ど~もeagle0wlです(再)

140文字では収まらないネタを記録するブログ

Raspberry Pi 2B に RetroPie 4.0 を導入する その1 概要

f:id:eagle0wl:20160830193024p:plain

2017/05/24追記 本記事が RetroPie 4.2 に対応済みであることを確認。4.2 からPC-88とPC-98など国産PCのエミュがRetroPie-Setup Scriptからインストールできるようになりました。

本エントリから、単なる導入記事だけで済まされることの多いRetroPieについて、他のブログよりは詳細に掘り下げていきたい。少なくとも公式Wikiに書いてあることだけで終わらせるようなことはしません。

はじめに

ゲーム機のエミュレータというとイリーガルな臭いがするが、懐古主義の私は好きである。というか、私が自宅にインターネットの線を引いたのもエミュやりたさであった。現在は、メーカー公式のエミュレータとも呼ぶべき任天堂バーチャルコンソールSCEゲームアーカイブスプロジェクトEGGなどがあり、自分もよく利用している。エミュレータの自作も、そのゲーム機のアーキテクチャを隅々まで理解できるので面白いジャンルである。私はこの興味のおかげでスマホ全盛以前からARMに触れることができた。その延長線上で、デベロッパー契約をせずに非公式の開発環境(devkitPro)でゲーム機用のアプリを自作するHomebrewも大好きで、リバースエンジニアリングで開発されたdevkitProの貧弱なSDKでは痒いところに手が届かないので自力で解析したりしていた(現在はiOS/Androidアプリが誰でも作れるから、Homebrewの魅力はほぼ喪失した)。
github.com

最も普及したデバイスであるiPhone/Androidで動作するエミュも複数ある。携帯できることはとても嬉しいことだが、物理キーがないスマホで再現することにはあまり意義は感じられない。スマホ以外では、マ●コンやCFWを使って、DSやPSP上でエミュレータを動かす方法が最適解だったように思う(十字ボタンの精度が段違い)。ただし、DSは1画面サイズ(256*192)が小さすぎて、ファミコン(256*240)すら収まらないのが致命的で、日本語ファイル名に対応しているエミュレータも無い。今では(任天堂ハードに対応する)マ●コンの販売は規制されている。それでも、洗練された携帯ゲーム機のコントローラで遊べるのは最大のアドバンテージである。ということで、CFWを導入したPSPが妥協ラインだと考えている。こちらは日本語ファイル名を正しく表示できるエミュレータが多い。据え置き第4世代(スーパーファミコンメガドライブPCエンジン)から重たくなってくる。据え置き第5世代からはもうダメ(ただしプレイステーションは除く)。

今はAndroidベースのゲーム機も多く出ている。そのほとんどはハズレ…というか、SHIELDとかOuyaとかM.O.J.O.とかWarchiefとかは爆死どころか名前を見たことすらあるか微妙である。Android以前であれば、個人的には7000円ぐらいで買った『Dingoo 丁果A320』(韓国GameParkが開発したGP32シリーズの流れをくんでいる)が大ヒットだった。スーファミPCエンジンは重すぎるが、それ以外の再現度はとても高い。特にGBAは快適に動作する。メガドライブも軽快に動作する。液晶だと画面ノイズが目立つが、コンポジット接続で外部出力すると解消されるので液晶の問題か
Android搭載のゲーム専用機は安さで勝負しないとダメな気がする。中華製Androidゲーム機が多いのも頷ける。金星JXDとかはヤフオクでよく見かける。

f:id:eagle0wl:20160831005932p:plain
クロスメディアバーを丸パクリした丁果A320PSP

問題視されるのはROMイメージの出所だが、明言は避けたい。吸出し機を用意するか、手元のカートリッジから念写して欲しい。近年、iOS/Android用に販売されているレトロゲー復刻アプリには、ROMイメージをエミュで動作させているものが結構見られ、ipa/apkファイルからROMイメージを取り出すアプローチがある。だがこれは、金を払ってダウンロードしたとしてもグレーなように思う。

Internet Archiveでは(明らかに著作権のある)アーケード、MS-DOSAmigaとかのゲームがブラウザ上で遊ぶことができて、さらにこれとは別に、堂々とゲーム機別にひと固まりになったROMイメージ群がInternet Archive上に軒並みアップされている。どう考えてもアウトだと思うのだが…。

閑話休題


半年ほど前、Raspberry Piを最強のレトロゲームコンソールにするRetroPieというものがあると知って、ver3.1をいろいろと弄ってみたことがあるが、限界が来て飽きてしまった。ふと思い出して最近ver4.0にアップデートしたところ、環境がかなり変わっていたり、いろいろな設定が消えてしまったので、RetroPieをクリーンインストールし直してみた。その際の手順などを後学のために書き残しておくのがこのエントリである。

RetroPieないしEmulationStationの欠点

まず、RetroPieってどういう構成よ? ということを簡単に説明すると、DebianベースのRaspbianの派生ディストリと考えれば良い。Raspbianに様々なゲーム機のエミュレータが載っており、これらを呼び出すランチャーとしてEmulationStationが使われている。外観を司るスキンデータ(Theme)は画像ファイルやxmlファイルで構成されていて、このスキンファイルはネット上に複数ある。もしオリジナルを作りたいのであればこれをチクチクと編集する必要があるが、制作環境が劣悪なので猛烈に面倒くさい。
EmulationStationはWindows版も用意されておりGitHubからも入手可能。
github.com

海外では初代ゲームボーイのハウジングや、オリジナルの筐体にRaspberry Piを収めるといった具合でレトロゲームコンソールを作っている方が多くいる模様。
gigazine.net
www.maker-is-you.xyz

しかし、「よーしラズパイを最強レトロゲームコンソールにするぞ」と意気込んではみようとしたものの、使えば使うほど以下の点が目についてしまう。

カスタマイズを欲張ると多くの知識が必要

繰り返しになるが、RetroPieは、DebianベースのRaspbianの派生ディストリビューションと言える。Raspbianの上に色んな人が作ったランチャー(EmulationStation)やゲームエミュレータが寄せ集められている。もちろん追加インストールはスクリプトが組まれておりゲームパッド操作で完結できるが、一定程度以上のことをやろうとすると、EmulationStationの構造、ある程度のUnixコマンドとRaspbian(Debian)そのものの理解が必要になってくる。逆の言い方をすると、技術と手間があればRaspianとラズパイの制約内であればいくらでも拡張できることを意味する。その一例として、本ブログではRetroPieにPC-9801エミュを組み込む方法を記している。
2017/05/24追記 RetroPie 4.2より、実験用(EXPERIMENTAL)という位置づけで、RetroPie-Setup Scriptからnp2piをインストールできるようになりました。私がforkしたリポジトリを参照しているようです。
eagle0wl.hatenadiary.jp

日本語の対応が不十分

主にランチャー(EmulationStation)の問題だが、英語以外の文字についてほとんど配慮されていない。日本語を表示するだけならば、日本語フォントを入れるなどすれば一応対応できる。日本語の折り返しが考慮されていないが、ソースコードを修正して実装した。
eagle0wl.hatenadiary.jp

検索機能、先頭文字指定はA-Zしか指定できないので実質使用不可。ゲームパッドでの操作を前提としているため、キーボード入力によるタイトル検索に対応していない。もし同一機種で1000タイトル、2000タイトルとか大量に入れたいのであれば、この検索性が深刻な問題となりうる。
「ラズパイをエミュ専用機にする」というRetroPieと同じコンセプトの派生ディストリにrecalboxLakkaなどがあるが、まだ試していないのでコメントできない。

ゲームを大量に入れるとUIが極端に重くなる

ゲームを大量に(数千種類)入れるとUIが極端に重くなる。ゲーム選択中にフリーズすることがある。フォーラムにもたびたび挙がる報告だが、これらは自分も遭遇した。ゲーム機選択画面に辿り着く前のロードでフリーズすることもあるようだ。この事態に遭遇すると、デフォルトではEmulationStationが自動起動になっているので面倒なことになる。
これらの事象は、設定を変更することで緩和できる可能性がある。最新版では改善されているようだ。

前述したようにEmulationStationにはWindows版もある。ただ、Windowsがプラットフォームなら、エミュのフロントエンドは実用的なものが古くからあるので、わざわざEmulationStationを選ぼうとは思わない。もし、自らの手で「全部入りの」レトロゲームコンソールを作りたいと考えるのであれば、Raspberry Pi + RetroPieの構成は候補から外したほうがいいように思う。

エミュレータの追加

RetroPieにあらかじめ組み込まれているエミュレータは多種に渡る。以前のRetroPieでは最初から様々なエミュがテンコ盛りだったのだが、マイナーな機種については個別にインストーラを使ってインストールする仕様になっている。しかし、日本語があまりサポートされていないことから分かるように、日本固有の機種(PC-98シリーズとか)については未対応。RetroPie 4.2から試験的に対応中 リストにないエミュレータを入れたい場合、自前でビルドしてマニュアルでインストールする必要がある。

X68000に関してはインストーラ対応。

$ sudo ~/RetroPie-Setup/retropie_setup.sh

[Manage Packages]→[Manage experimental package] から対応エミュであるpx68kを選択してインストールする。EmulationStationへの登録も自動で行われるので楽。ただし動作は非常に重く、ゲームはカクカクし過ぎて全く遊べない。『超連射68k』で遊ぶなんてもってのほか。残念。だからEXPERIMENTAL(実験的)、追加インストール扱いなのね。

PC-9801はNeko ProjectIIのRaspberry Pi版であるnp2piがあるので、それをありがたく使う。美少女ゲームの需要がメインだと思われるが、私のPC-98Bio_100%と共にあったので『Super Depth』を試す。

いいですねえ。『GARUDIUS'95』を遊ぶ。

いいですねえ。動作速度の面でもほぼ問題はないと思う。エミュ起動中はマウス中クリックでメニューが出る

※効果音が遅れて表示される時は、メニューのEmulateからConfigureを選び、SoundグループのBufferを100msに設定すると緩和できる。

ただし、np2piは、Neko ProjectIIに本来あったコマンドライン引数によるディスクイメージの指定ができなくなっているので、EmulationStationのメニューから直接ゲームを実行できない。ソースを少し修正する必要がある。

PC-8801QUASI88をビルドすれば動く。ただ私はPC-8801を通っていないので良く分からない。したがってエミュの評価はできない。エミュ起動中はF12キーでメニューが出る

俺様データベース

EmulationStationには、ゲームの簡易的なデータベース機能を備えている。ゲーム機選択画面でメニューを開くと表示される項目「SCRAPER」がまさにソレで、romフォルダにあるゲームのタイトルをthegamesdb.netに問い合わせて、パッケージ画像や概要・発売日などの情報を取得することができる。この機能を使ってデータベースを作ると、メニュー画面が一気に華やかになる

f:id:eagle0wl:20160830213813p:plain
画像はこちらから引用

しかしながら、データベースから得られる情報はすべて英語。日本でしか発売されていないタイトルを多数含む場合、ろくに引けず悲惨なことになる。例えば、日本以外では話題にならないタイトルである "Dragon Quest 2" は出てこない。ならば俺様データベースを自作すればいいと思い、これを手作業で作ろうとすると一生かかっても終わらないので、ウェブ上にある複数のデータベースサイトなどをスクレイピングして、名寄せして俺様データベースを自作しようとしたことがある。それでも時間がかかる。かかりすぎる。永遠に終わらない。正直労力に見合わない。

MAMEに限って言えば、有志によって作られたデータベースが充実しまくりなので、データベースを作成するスクリプトを自作できた。
eagle0wl.hatenadiary.jp

家庭用ゲームのデータベースとしては、『超絶大技林 2011年秋完全全機種版』が参考になると思われる。

全件検索可能CD?ROMデータベース付き 超絶大技林 2011年秋完全全機種版

全件検索可能CD?ROMデータベース付き 超絶大技林 2011年秋完全全機種版

なんと紙と同じ情報がCD-ROMにも収められているのだ。しかし、CD-ROMに入っているのはcsvファイルではなく、exeファイルが1つ。これを起動すると専用の入力フォームが現れる。生のcsvファイルが欲しいんだよ! 実は、このexeには生のcsvファイルが暗号化された状態で埋め込まれている。このexeは、起動時に毎回オンメモリでcsvを復号しているので、起動が長い。それはそうと、このexeは.NETアプリケーションであることに着目すべきだろう。あとはDESとだけ言っておく

実際ネット上にある日本語のデータベースサイトを見ると、この大技林から吸いだしたと思しき情報が見られる。この大技林はとても役に立つが、誤植がとても多く、表記ゆれも激しいことは留意したい。

パソコンゲームに関しては、ハード製造元とライセンス契約を結ばず自由に開発できる手前、信頼に足るデータベースが見当たらない。

ともあれ、RetroPieは触ってみると面白いものなので、次のエントリから実作業を記す。

eagle0wl.hatenadiary.jp