ど~もeagle0wlです(再)

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

Raspberry Pi 2B に RetroPie 4.0 を導入する その4 (3/4) PC-8801

f:id:eagle0wl:20160906000822p:plain

2017/05/23追記 RetroPie 4.2より、実験用(EXPERIMENTAL)という位置づけで、RetroPie-Setup ScriptからQUASI88をインストールできるようになりました。以下の作業は行う必要はありませんが、参考のために残します。

その3:PC-8801(QUASI88)の場合

Raspberry Pi上でも動作するPC-8801エミュレータ『QUASI88』はRetroPie Setupにはリストアップされていないため、ソースの取得からEmulationStationへの追加までを自力で行う必要がある。
QUASI88 - PC-8801 Emulator for UNIX/X11+SDL -

QUASI88をインストールする

まずはmakeするために必要なパッケージをapt-getする。

$ cd ~/Dev
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install gcc g++ make libsdl-mixer1.2 libsdl-mixer1.2-dev libsdl1.2-dev

QUASI88のソースをwgetして展開する。

$ wget http://www.eonet.ne.jp/~showtime/quasi88/release/quasi88-0.6.4.tgz
$ tar zxf quasi88-0.6.4.tgz
$ cd quasi88-0.6.4

エミュレータ本体は/opt/retropie/emulators/に置かれているので、QUASI88もこれに倣って配置したい。

$ ls /opt/retropie/emulators/
mame4all  mupen64plus  openmsx  pifba  px68k  retroarch
Makefileを編集する

Makefileを編集する。EUC-JPな日本語がコメントに入っているので、nano以外のエディタを使うなどすること。

19行目から、SDL_VERSIONのみ有効にする。

# X11_VERSION	= 1
SDL_VERSION	= 1
# GTK_VERSION	= 1

「基本設定」の35行目から、ディレクトリ設定を3箇所修正。

ROMDIR	= /home/pi/RetroPie/BIOS/quasi88
...
DISKDIR	= /home/pi/RetroPie/roms/pc88
...
TAPEDIR	= /home/pi/RetroPie/roms/pc88

サウンド関連の設定」の191行目から、FreeBSDコメントアウトしてLinuxに切り替える。

#---------------------- FreeBSD
# ARCH = freebsd
#---------------------- Linux
ARCH = linux

サウンドバイスの指定」の228行目を有効にする。

# SOUND_ARTS_SMOTEK	= 1
SOUND_SDL		= 1
# SOUND_WAVEOUT		= 1

237行目も有効にする。

USE_OLD_MAME_SOUND	= 1

「インストールの設定」の370行目を修正。

BINDIR = /opt/retropie/emulators/quasi88

515行目を修正。

# SDLバージョンでの設定

CFLAGS += -Isrc/FUNIX -Isrc/SDL `$(SDL_CONFIG) --cflags`
LIBS   += -lm                   `$(SDL_CONFIG) --libs`

以上でMakefileの修正は終了。

make/make installする

インストール先のフォルダをあらかじめ作成してからmake/make installしよう。

$ sudo mkdir /opt/retropie/emulators/quasi88
$ sudo make
$ sudo make install

make/make installが無事に動けば、以下に実行ファイルが置かれているはずである。

$ ls -l /opt/retropie/emulators/quasi88/quasi88.sdl
-rwxr-xr-x 1 root root 1359544  9月  2 23:36 /opt/retropie/emulators/quasi88/quasi88.sdl

BIOSを配置する

QUASI88で必要なROMイメージファイル一覧を参考にして、実機から吸い出すか念写して以下のフォルダに配置する。

/home/pi/RetroPie/BIOS/quasi88

BIOSフォルダ直下ではなくquasi88フォルダを作成しているのは、FONT.ROMの名称が他のエミュ用のそれと被る恐れがあるため。

ディスク(orテープ)イメージを配置する

ディスクイメージは以下に配置する。

/home/pi/RetroPie/roms/pc88

今回は動作確認のために、ボーステックの商業ゲーム『ザ・スキーム』の作曲者(古代祐三)とプログラマ(おにたま)が自ら二次創作している同人ソフト『ワンダラーズ・フロム・スーパースキーム』を使用した。
PC8801 soft page (ONION software)

ディスクイメージ(sscheme.d88)設置後、EmulationStationを終了(再起動ではない)してシェルに移動する。ターミナル(SSH)からは起動できないので、Raspberry Pi本体に挿したキーボードから以下のコマンドを入力する。

$ /opt/retropie/emulators/quasi88/quasi88.sdl ~/RetroPie/roms/pc88/sscheme.d88

f:id:eagle0wl:20160905213420p:plain

上手くいけばタイトル画面が表示され、FM音源の音楽が流れるはずである。
f:id:eagle0wl:20160905213442p:plain

F12キーを押すと設定画面が表示されるので、さらにF12キーを2回押すと終了できる。
f:id:eagle0wl:20160905213510p:plain

QUASI88をEmulationStationに追加する

前回イントールしたpx68kは、実験用とはいえEmulationStationから直接起動できるところまでセットアップしてくれた。今回は、EmulationStationにQUASI88を手動で追加する。

ここからはターミナルから操作する。

テーマを追加する

※2016/12/13追記 以下のエントリの「carbonの修正」に記載されている通りにカスタムテーマ『carbon-mod』を導入すると、この作業は省略できる。
eagle0wl.hatenadiary.jp

前回(px68k)の時と同じ方法で、carbonテーマをPC-8801対応にする。

前回作成したx68000フォルダ以下をコピーしてpc88のベースとする。

$ cd /etc/emulationstation/themes/carbon/
$ sudo cp -r x68000 pc88

このような画像を用意した。前回と同様に、PC-8801のロゴは白抜きと黒抜きの2種類用意している。
f:id:eagle0wl:20160905235950p:plain

この画像は、GALAPAGOS STOREから入手できる高解像度のカタログ画像を加工してベクター画像にした。Inkscapeのトレース機能を使うと、ロゴのような単色のビットマップ画像は容易にベクター化できるので便利である。
galapagosstore.com

テーマの編集方法は前回と同じなので省略する。

es_systems.cfgにpc88を追加する

続いて、メインメニューからPC-8801を選択できるようにするため、es_systems.cfgを編集する。

$ sudo nano /etc/emulationstation/es_systems.cfg

様々な機種が定義されているが、以下の記述を追記する。

  <system>
    <name>ngpc</name>
    <fullname>Neo Geo Pocket (Color)</fullname>
    <path>/home/pi/RetroPie/roms/ngpc</path>
    <extension>.ngc .zip .NGC .ZIP</extension>
    <command>/opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ ngpc %ROM%</command>
    <platform>ngpc</platform>
    <theme>ngpc</theme>
  </system>
  <system>
    <name>pc88</name>
    <fullname>PC-88</fullname>
    <path>/home/pi/RetroPie/roms/pc88</path>
    <extension>.d88 .D88</extension>
    <command>/opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ pc88 %ROM%</command>
    <platform>pc88</platform>
    <theme>pc88</theme>
    <directlaunch/>
  </system>
  <system>
    <name>pcengine</name>
    <fullname>TurboGrafx 16 (PC Engine)</fullname>
    <path>/home/pi/RetroPie/roms/pcengine</path>
    <extension>.pce .ccd .cue .zip .PCE .CCD .CUE .ZIP</extension>
    <command>/opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ pcengine %ROM%</command>
    <platform>pcengine</platform>
    <theme>pcengine</theme>
  </system>

emulators.cfgを追加する

これでメインメニューにPC-8801が表示されるようになったが、まだEmulationStationにQUASI88の実行ファイルの在り処を教えていないので起動はできない。最後の仕上げに入る。

/opt/retropie/configs/ 以下に機種ごとの設定がある。

$ cd /opt/retropie/configs/
$ ls
all         atari7800  fds       gbc            megadrive  nes       ports    segacd   wonderswan
amstradcpc  atarilynx  gamegear  mame-libretro  msx        ngp       psp      sg-1000  wonderswancolor
arcade      dreamcast  gb        mame-mame4all  n64        ngpc      psx      snes     x68000
atari2600   fba        gba       mastersystem   neogeo     pcengine  sega32x  vectrex  zxspectrum

例によってnesx68000の両フォルダを参考にしてみる。

$ ls -la nes
合計 20
drwxr-xr-x  2 pi pi 4096  8月 31 00:23 .
drwxr-xr-x 38 pi pi 4096  9月  1 00:37 ..
-rw-r--r--  1 pi pi 3047  8月 31 00:23 content_history.lpl
-rw-r--r--  1 pi pi  382  8月 27 07:03 emulators.cfg
-rw-------  1 pi pi  221  8月 31 00:23 retroarch.cfg

content_history.lpl は動作ログなので見る必要はない。retroarch.cfgは、lr-で始まるパッケージ(lr-fceummなど)に共通して見られる設定ファイル。emulators.cfgが超重要である。

$ ls -la x68000
合計 32
drwxr-xr-x  2 pi   pi    4096  9月  4 18:33 .
drwxr-xr-x 38 pi   pi    4096  9月  1 00:37 ..
lrwxrwxrwx  1 root root    32  9月  1 00:37 cgrom.dat -> /home/pi/RetroPie/BIOS/cgrom.dat
-rw-r--r--  1 pi   pi    1172  9月  4 19:11 config
-rw-r--r--  1 pi   pi      70  9月  1 00:37 emulators.cfg
lrwxrwxrwx  1 root root    33  9月  1 00:37 iplrom.dat -> /home/pi/RetroPie/BIOS/iplrom.dat
lrwxrwxrwx  1 root root    35  9月  1 00:37 iplromco.dat -> /home/pi/RetroPie/BIOS/iplromco.dat
lrwxrwxrwx  1 root root    35  9月  1 00:37 iplromxv.dat -> /home/pi/RetroPie/BIOS/iplromxv.dat
lrwxrwxrwx  1 root root    34  9月  1 00:37 plrom30.dat -> /home/pi/RetroPie/BIOS/plrom30.dat
-rw-r--r--  1 pi   pi   16384  9月  4 19:11 sram.dat

こうして見比べると分かる通り、emulators.cfg以外はエミュレータ固有の設定ファイルであることが理解できるはず。

emulators.cfgをのぞき見てみよう。まずnesから。

$ cat nes/emulators.cfg
lr-fceumm = "/opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/lr-fceumm/fceumm_libretro.so --config /opt/retropie/configs/nes/retroarch.cfg %ROM%"
default = "lr-fceumm"
lr-nestopia = "/opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/lr-nestopia/nestopia_libretro.so --config /opt/retropie/configs/nes/retroarch.cfg %ROM%"

2種類のエミュレータ、lr-fceumm(FCEUX)、lr-nestopia(Nestopia)の設定が見える。default = "lr-fceumm" から、変数名defaultに起動パスを指定する必要がありそうだ。

続いてx68000

$ cat x68000/emulators.cfg
px68k = "/opt/retropie/emulators/px68k/px68k %ROM%"
default = "px68k"

非常にシンプルである。これを真似すれば良さそうである。

それではEmulationStationのPC-8801エミュとして、QUASI88を起動するための設定を書く。

$ cd /opt/retropie/configs/
$ sudo mkdir pc88
$ sudo nano pc88/emulators.cfg
quasi88 = "/opt/retropie/emulators/quasi88/quasi88.sdl %ROM%"
default = "quasi88"

正しく記述して再起動すれば、EmulationStationに追加されたPC-8801からQUASI88が起動し、ゲームタイトルが立ち上がるはずである。これで終了である。

f:id:eagle0wl:20160906000822p:plain
f:id:eagle0wl:20160906000912p:plain
f:id:eagle0wl:20160905213442p:plain

次のエントリでは、総まとめとしてPC-9801エミュレータ『np2pi』をインストールしたい。

参考

本エントリを書くにあたり、以下のサイトを参考にした。
PC-88 emulation on Raspberry Pi | computerwelt
QUASI88 ビルドのメモ - Tako can fry!