2018/11/25追記 history2gamelist を更新しました。配布サイト(github)の説明は読んでください。
2018/02/25追記 EmulationStationのバイナリの差し替え先を修正しました。すでにこの記事を元に差し替えを行った方は別エントリを参照して下さい。
2017/10/24追記 この記事中のEmulationStationの修正は古い内容です。新しいエントリがあります。
EmulationStationの修正
このEmulationStationの修正は古い内容です。↓のリンク先のエントリを参照してください。
eagle0wl.hatenadiary.jp
EmulatonStationは日本語文字列の折り返しに対応しておらず、detailed(詳細情報表示)で日本語表示をしようとすると、こんな感じでおかしなことになってしまう。
これをこんな感じに直したい。解説に長文が入っても2秒待つとスクロールが始まる(オリジナルは8秒)。
※開発、販売メーカーやゲーム解説の情報があると生じる問題なので、basic(ファイル名一覧だけの表示)で良いのであれば無視できる。
また、個人的な好き嫌いのレベルになるが若干変更を施してみた。
修正内容
EmulatonStationをforkして修正を行なった。
github.com
変更内容は以下の通り。
日本語のワードラップ&禁則処理の実装
本気の実装(CJKV対応とか)を考えると、QtやFirefoxとかで使われているHarfBuzzというテキストレイアウトエンジンを使うと良いらしいが、今回は日本語を折り返せばいいので実装は簡素に留めた。ついでに最低限の禁則処理も実装した(行頭禁則文字、行末禁則文字、半角英単語は一纏まりで扱うようにした)。
Qt in depth: Qt の禁則処理 - Qt Japanese Blog
フィールド追加
(機種ごとの)ROMイメージの総数と、現在指しているROMは何番目かを指すフィールド md_numberoflist を追加した。レイアウト情報(theme.xml)は、ゲーム一覧だけが表示されるbasicと、一覧や画像や詳細情報が表示されるdetailedの2種類があるが、detailedのみ適用される。
<text name="md_numberoflist"> <alignment>right</alignment> <color>666666</color> <fontSize>0.04</fontSize> <pos>0.2 0.17</pos> <size>0.2 0.038</size> </text>
詳細表示の修正
detailedにおける、発売日の表記をmm/dd/YYYYから日本式のYYYY/mm/ddに変更。
publisher, developerなどのラベルを日本語表記に変更。
修正版のビルド
Raspberry Pi上でcloneしてビルドを行う。
まずはビルドに必要なライブラリをインストール。
$ cd ~/Dev $ sudo apt-get install g++-4.7 $ cd ~/Dev $ wget http://libsdl.org/release/SDL2-2.0.1.tar.gz $ tar xvfz SDL2-2.0.1.tar.gz $ rm SDL2-2.0.1.tar.gz $ pushd SDL2-2.0.1 $ ./configure --disable-video-opengl --host=arm-raspberry-linux-gnueabihf $ make $ sudo make install $ popd
修正版EmulationStationをビルドする。
$ cd ~/Dev $ git clone https://github.com/eagle0wl/EmulationStation.git $ cd EmulationStation $ sudo cmake -DCMAKE_CXX_COMPILER=g++-4.7 .
ここでエラーが出たらもう一度同じコマンドを実行
$ sudo make
Raspberry Pi 2Bでは30分以上かかるので気長に待つ。
[100%] Built target emulationstation
と出たら成功。
上記の手順でビルドできない場合は、公式の「Installing on Raspberry Pi (Stand-alone)」以下を試すこと。
emulationstation.org
EmulationStationを起動している場合は終了してから、改変版EmulationStationを配置する。
$ sudo mv /opt/retropie/supplementary/emulationstation/emulationstation /opt/retropie/supplementary/emulationstation/emulationstation.master $ sudo mv emulationstation /opt/retropie/supplementary/emulationstation/
EmulationStationを再起動するとどうなるだろう?
carbonのテーマに合っていない。というより文字が小さすぎるような気がする。
注意:私はPC用ディスプレイではなく、32インチテレビで表示確認を行っている
carbonの修正
EmulationStationのデフォルトテーマであるcarbonを修正したい。
carbonテーマはgithub上でも公開されており、更新も行われている。
github.com
例によってforkして少し変更したcarbonテーマを用意したので、これをインストールする。
github.com
$ cd ~/Dev $ git clone https://github.com/eagle0wl/es-theme-carbon.git
取得した修正版テーマcarbon(es-theme-carbon)を"carbon-mod"という名前で配置する。
$ sudo cp -r ./es-theme-carbon /etc/emulationstation/themes/carbon-mod
EmulationStationを再起動すると、UI SETTINGに carbon-mod が現れるので選択する。
いくらかのROMイメージを入れていれば、見た目が少し変わっているはずである。
history2gamelistでgamelist.xmlを作る
以前のエントリでさんざん述べたように、自前でデータベースを用意しようとすると死ねる。集合知に頼るべきだが、今のところgamelist.xmlまでカッチリ落とし込めるデータベースは存在しない。
eagle0wl.hatenadiary.jp
しかし、アーケードエミュレータMAMEだけは例外である。日本語のデータベースが実に充実しているのである。ということで、ウェブ上にあるMAME用のファイルからgamelist.xmlに変換するスクリプト『history2gamelist』を作ったのでここに公開する。
2018/11/25追記 RetroPieの更新に追従する形で history2gamelist も更新しました。
eagle0wl.hatenadiary.jp
スクリプトの入手と、詳細な使い方はリンク先を読んでほしい。Pythonが必要。
github.com
滞りなく実行できて、出力されたファイルを配置できれば、すでに紹介したこのスクリーンショットのようなメニュー画面が手に入るはずである。
今回はMAMEのデータベースのみの充実と、MAMEだけのtheme.xmlの改修を図った。
他の機種でも表示するデータベースが用意できれば、MAMEのtheme.xmlをコピペすることで同じような表示にできるはずである。つまり、こんな感じである。
$ cd /etc/emulationstation/themes/carbon-mod/ $ sudo cp ./[機種名]/theme.xml ./[機種名]/theme.xml.bak $ sudo cp ./mame/theme.xml ./[機種名]/theme.xml
RetroPieについては本エントリで一区切りつけたい。