Raspberry PiのRaspbian jessieでNP2kaiをセルフビルドしてみた、的なメモ

2年ぐらい前にふつうの Debian jessie で xnp2 作ってみた時とだいたい同じで、記述内容もおおむねコピペです。
ポイントだけ先に書いておくと、x11版をそのままconfigureしてmakeするとpthread関連のリンクエラーが出るので、なんらかの方法で対処する必要があります。

下準備

必要なツール

build-essential
いろいろコンパイルに必要(最初から入ってたっけ? 覚えてない…)
autoconf, automake, libtool
configure と Makefile 作成
nasm
x86 コードのアセンブルに使う(np2埋込のx86ソースを変更しない場合は不要かも?)
unzip
np2tool の展開に必要(意外と忘れる)。あとソースをgithubから(git cloneしないで)ダウンロードする場合はソース展開に使う

必要なライブラリ(の開発キット)

libgtk2.0-dev
gtk2 のライブラリ(かなり依存パッケージ多め)
libsdl2-mixer-dev
SDL_mixer のライブラリ。SDL2用。(ほんとは libsdl2-dev があれば必須ではない)
libsdl2-ttf-dev
SDL_ttf のライブラリ。SDL2用。(sdl2版をビルドしない場合はいらない。でもsdl2版np2を作っておくとすこしだけ便利なので…)
libusb-1.0.0-dev
libusb-1.0.0(説明は特にないです…)

場合によってはあったほうがいいもの

git
ソースを弄りたい場合はあったほうがいいんじゃないかな…

以上を sudo apt-get install でインストールします。

次にNP2Kaiの最新版ソースを取ってきます。githubのリポジトリからgit cloneしてもいいですが、今回は安直にzipをダウンロードしてみます。
ちなみに自分は、ここから先の作業は /tmp ディレクトリの下で行いました。少しでもSDカードへの書き込みを抑えたいので…(実際の効果はよくわかんない)

$ wget https://github.com/AZO234/NP2kai/archive/master.zip

そのままunzip master.zip すると、NP2kai-masterというディレクトリの下にソースが展開されます。

X11版のビルド

まず autogen.sh を実行して configure と Makefile を作ります。

$ cd NP2kai-master/x11
$ ./autogen.sh

autogen.sh 内でconfigureが実行され、いちおうMakefileもできているのですが、もうすこし設定したいことがあるので configure をかけ直します。
というより、そのままだとリンク時にpthread関連のライブラリのリンクに失敗するため、そのあたりの指定を追加する必要があります。とりあえずリンク時の追加ライブラリに-lpthread指定すれば問題ないようですが、gccに専用オプション(-pthread)があるらしいので念のため使ってみました。コンパイル時に-pthreadオプションを指定するとマルチスレッド関連の定義(-D_REENTRANT)が追加され、リンク時には-lpthreadが追加されるようです(他にも何かオプションが使いされてる可能性があるけど、よく知らない)。

$ CPPFLAGS="-pthread" LDFLAGS="-pthread" ./configure --enable-build-all --disable-dependency-tracking

configureの設定を変えたら念のため

$ make clean

まっさらにしてから make します。今回は --enable-build-all をつけているので通常のxnp2とIA-32版のxnp21の両方が作成されます。

$ make

うまくいったらインストールしてもいいかもしれません。(今回はconfigure時に--prefixオプションを指定していないので、デフォルトの/usr/localにインストールされます)

$ sudo make install

SDL2版のビルド

要は sdl2 ディレクトリに移動して、

$ make -f Makefile.unix

もしくは

$ make -f Makefile21.unix

するだけです。
他の環境向けのビルドを行っていた場合はあらかじめ make clean してオブジェクトファイルの混在を防いでおきましょう(意外と忘れる…自分だけなのか?)。

sdl2版は実行バイナリ(np2 もしくは np21)と同じディレクトリに設定ファイルを作成するため、/usr/localの下などに「インストール」してしまうと逆にめんどくさいです。素直に自分のホームディレクトリで運用しましょう。

SDL2版np2の使い道

X11版だけでなくSDL2版もなんとなく作ってしまいましたが、実のところX11版が動作する環境でSDL2版を使うメリットは(現時点では)ほとんどないです。設定できる項目が少なくディスク選択もやや面倒(SDL2版はファイル選択にキーボードが使えない)で新規ディスクイメージ作成も未サポートです。なんでビルドしたし…しかしSDL2版にはX11版にはない機能があります。それはTrueTypeフォントからのフォントデータ生成です。

たとえばFONT.ROMその他のフォントデータを持ってきていない状態のxnp2を素のRaspbian jessieで起動すると、

まあこんな感じでして…そこで、

  1. xnp2の作業ディレクトリ ~/.np2 にSDL2版の実行ファイルと適当なTrueTypeフォントをコピーする。フォントファイルは default.ttf という名前にリネームしておく
  2. フォントキャッシュ(font.tmp)が残っていたら消しておく
  3. SDL2版np2実行
  4. np2の画面上に日本語フォントがちゃんと表示されていることを確認したら、np2は終了してしまう(Alt+F4で終了できます)
  5. X11版のnp2を起動

フォントさえ用意できれば、ラズパイ内だけで作業が完結するのがいいところ(かなあ…?)。
見た目的にはWindowsのMSゴシック(msgothic.ttc)を使うのがいちばん無難だと思います。今回はKHドットフォントシリーズ小伝馬町16を使ってみました。そこはかとなくX68っぽい感じになります。

(そういやサウンド出力に関して、まったく確認してなかった…)