Raspberry PiでFinalBurnNEOをビルドする方法

Raspberry Pi,SBC,エミュレーター

RetroArchがそんなに嫌い?

いいえ、CRCエラーのあるROMの挙動が
libRetro版であるLr-fbneoとSDL/Piビルドでは異なるからです
後は個人的な知的好奇心と探究心ということでひとつ
というかRetoro pieもこっち取り込んでよって話。

ただのへそ曲がりともいいます。

準備と作業

まずはFinalBurnNEOのソースをクローンします

$ sudo git clone https://github.com/finalburnneo/FBNeo.git

IremArcadeHitsや旧版のAndroidアプリから抽出したRType III等の
m72ドライバで動作するアイレムのゲームが遊べなくなるのを回避します
(関係ないという人は無視してOK)
2023年10月追記 最近の更新版ではRTYPEは動作するように変更されました。

$ wget https://raw.githubusercontent.com/finalburnneo/FBNeo/3ba841e35cc609aa7b15a5ab3aa6b1d0e302fcaa/src/burn/drv/irem/d_m72.cpp

Homeにd_m72.cppが保存されているので、クローンしたソースに上書きコピーして統合します
本来は必要部分だけ抜き出して、リバースパッチを当てるのが筋かと思います(お行儀よくない)

$ wget https://github.com/finalburnneo/FBNeo/commit/d62d5f512c6ad5e5fa0c72589438b0bc7655ae02.patch

そっちがしたい人は上記からm72updateをPatchで落として
ROM改変部分だけリバースパッチするのがよいと思います。

$ cp d_m72.cpp /FBNeo/src/burn/drv/irem/

もしもエラーが出たらsudo付けて再実行して下さい。

余談ですが、この記事を記載している時点ではfolkやポート物も
M72更新前のソースをもとにしているのがほとんどです

ビルドエラーが出る時は、手前のコミットを試してみるとよいかと思います。

ビルドの種類

Piビルド
Raspberry Pi1から3がメインで、いちおう4までの動作が確認ずみ
SDL1.2ベースで必要最低限、3までの動作は良好との記載があります
ターミナルからROM名で直起動するため 例)fbneo sf2
Emulator StationやPegasusフロントエンド等がないと不便です

SDLビルド
汎用LINUX用、SDL1.2/SDL2で分けてビルドできます
公式はSDL2版を推奨しています、SDL1.2版はほぼPi版と同じ挙動?
SDL2は最低限の機能を有したROM選択メニューが表示できます
ResChangerとの統合も可能で15khzなどのRGBモニターにも対応可能

Raspberry Pi4はSDL2でビルドが通るので、そちらを使います
コレは個々人の好き好きでOK、たぶん3でもSDL2で行けるかなと。(未確認)

準備とビルド

出典元

Pi用の説明が記載されたドキュメントになります
ビルド前にインストールしておけと記載があるので実行します

Pi版をビルド

注意)BullseyeでSdl1.Xをビルドする際に、通常のSDLをインストールすると
Xwindow上でしか動作しないバイナリができあがってしまう、と言う話がありました(未確認)

Retropie-setupに含まれるSDL1.2なら問題ないという話ですから
Bullseyeを使っている人は、前回の記事を参考に
Retropie-setupでBasic install後に行うことをオススメします

全てのRaspberry Pi機で行う下準備

$ sudo apt-get install libsdl1.2-dev

Pi4では追加でインストールが必要です

$ sudo apt-get install libgles2-mesa-dev libgbm-dev libdrm-dev

あとはMakeしてあげればOKです

$ sudo make pi

相応に時間がかかります、冷却に余裕があるなら-j3等の平行オプションを付けるとよいかと
問題なくビルドが終了すると、FBNeoフォルダーに実行可能なfbneoが増えているはずです。

SDL版をビルド

出典元

Raspberry Piの場合、SDLをインストールしておくとよいので
Pi版の下準備は同様にやっておいてください。

SDL2.0はretropie_setupをしていれば
ほとんどの必要なものは導入済みになっているはずですが
不足分や未導入の人は各自でお願いします。

sdl1.2はSDL1.2 と GCC、make、perl、nasm
sdl2.0はSDL2、SDL2_image、gcc、make、perl、nasmが必要です

SDL1.2

$ make sdl

SDL2.0

$ make sdl2

SDL1.2でのビルドを行う理由はあまりないですね
権限がありません、と言われたらSudo付けて再実行してください
時間が掛かるので注意、完了すればfbneoが実行形式で得られるはずです

SDL2.0でGroovyARCADE由来の
CRT切り替え機能を含めたビルドをしたい人は
出典元のREADME-SDL.mdを参照してください。

ビルドエラーが出る時に、ファイルコピーミスがなく修正してもダメな場合
単純にビルド通らないコミットがされてることがありますので、前後の版を試して下さい。

操作方法その他(一部抜粋)

README-SDL.mdREADME-PI.mdを読めば全て記載されています

Pi版/SDL1.2版
fbneo ROM名 例)fbneo sf2
それ以外のオプションはありません、起動時にfbneo.iniが作られます

SDL2版
コマンドラインオプション
-menu メニュー付きで起動します。付けない場合はROM名指定で起動します。
-joy ジョイスティックを有効にします
-dat datを生成
-integerscale 最も近い整数倍に拡大、オリジナルと比率が異なる場合は黒枠が生じる
-full screen フルスクリーンで起動

fbneo -menu -joy で起動すれば
簡易メニュー付き&コントローラー有効で起動できます
もちろんfbneo rom名でも起動することは可能です。

SDL2版もfbneo.iniは生成されますが
/home/pi/.local/share/fbneo/config に作られるので注意(ドキュメントに記載なし)

ホットキー(ビルド共通)
TAB ポーズorメニュー F12 ゲームの終了
F11 FPSオン・オフ F6 スクリーンショット

余談

DipSwitchがないのでNEOGEO BIOSの国指定ができない
SDL2ビルドはゲーム中にTABキーからメニューで指定可能です

/home/pi/.local/share/fbneo/config/presets でpreset.iniを作っても無視される(参考)
neogeo.iniやcps.iniは認識する。ゲーム個別のゲーム名.iniを編集すればキーアサイン可能。

Xbox系Padで左アナログに十字キーが当てられてしまう場合
/home/pi/.local/share/fbneo/config/games内にあるゲーム名.iniを編集する

input  "P1 Up"            switch 0x4002 → 0x4012
input  "P1 Down"          switch 0x4003 → 0x4013
input  "P1 Left"          switch 0x4000 → 0x4010
input  "P1 Right"         switch 0x4001 → 0x4011

保存すればdpadに方向が割り当てられる。

次回予告

RetropieのEmulator StationにFBNeo(ビルド版)を追加します
さらに見分けが付くように、Lr-fbneoとビルド版でアイコンを変更します(Carbon2021)