LibretroのAndroidコア(FBNeo)をビルドする

エミュレーター

ドハマりしました

忘備録かねてメモ。おそらくWSL2なUbuntu環境でも、たぶんOK
VMwareで動作させたUbuntu 22.04.1 LTSで確認

ビルドしたコアは32bit版のRetroArch(Android)で動作確認できました
aarch64ではコアが読み込めませんでした・・・
詳しい人がいたらコメントで教えてくれると大喜びします。

SDKとNDKの導入

Android studio を参考にしてインストールして下さい
初回起動であれこれインストールされます

NDKもインストールしておきます
バージョン指定せずにSide by SideのままでOKでした。

解説サイトがたくさんあるので、詳細は検索してください。

ソースのダウンロードと下準備

こちらを参考にして手順を進めます。

$ git clone https://github.com/libretro/libretro-super.git
$ cd libretro-super
libretro-super $ ./libretro-fetch.sh fbneo

./libretro-fetch.shの後にコア名を入れると
任意のコアのソースを単体でダウンロードできます

なしのままで実行すると、ありとあらゆる全てのコア他を
ダウンロードするので要注意。

libretro-fbneoフォルダーの中は2023年3月1日時点では
m72(IREM MCU)未更新なソースがダウンロードされました。(いつまで保持されるかは不明)
ROMのCRCチェックを緩くするなら、この時点でlibretro.cppを書き換えましょう。

書き換えポイントは前回の記事に記載してあります
単に旧コア欲しくてビルドしたい人はそのままでOKです。

NDKとndk-buildにパスを通す

/home/al/Android/Sdk/ndk の中にあるバージョン名のフォルダーは変化するので
各自の環境に合わせて書き換えるようにして下さい。

$ export PATH=/home/(ユーザー名)/Android/Sdk/ndk/NDKのバージョン(数字):$PATH
$ export PATH=/home/(ユーザー名)/Android/Sdk/ndk/NDKのバージョン(数字)/build:$PATH

以下、自環境の場合

$ export PATH=/home/al/Android/Sdk/ndk/25.2.9519653:$PATH
$ export PATH=/home/al/Android/Sdk/ndk/25.2.9519653/build:$PATH

パスを通しても一時的で、別端末からの作業や
ターミナルを閉じたりすると設定は消えてしまいます
恒常的にするなら.bashrcに書き込んで下さい。

ndk-buildでビルドする

libretro-super$ cd /libretro-fbneo/src/burner/libretro/jni
~/libretro-super/libretro-fbneo/src/burner/libretro/jni$ ndk-build

通常のビルド方法はエラーが出てどうにもなりません
jniフォルダに移動したのち、ndk-buildでビルドします

 ここでエラーが出るのはndk-buildが見つからないってパターン
すぐ上に記載のパスをもういちど確認してください。

 もうひとつはANDROID_NDK_HOMEがどうのこうの言われる例
これは.bashrcにANDROID_NDK_HOMEを追記してみて下さい。

export ANDROID_NDK_HOME=/home/(ユーザー名)/Android/Sdk/ndk/NDKのバージョン(数字)

例
export ANDROID_NDK_HOME=/home/al/Android/Sdk/ndk/25.2.9519653

公式の解説サイトには、ビルドできないコアがあって例外はこうしろと
いちおう手順の記載がありましたが、どのコアが該当するかくらいまとめてほしいものです・・・

aarch64に関してもいっさいの言及がありませんし。

無事にビルドが完了すると4つのバリエーションでコアが作られています

場所は~/libretro-super/libretro-fbneo/src/burner/libretro/libsになります

ちなみにファイル名がlibretro.soと言う無味乾燥な名称なので
ここで任意に管理しやすい名前にリネームすることをオススメします。

動作確認

いつものディグダグで動作確認です。通常のコアではロードに失敗しますが
CRCチェックを無視させた自ビルドコアは問題なく遊べました。

すっかりfbneoビルドしてディグダグするブログに(狂気
MCUが要求されないので、Android旧版から抽出したR・TYPEIIも動作します。

GooglePixel4a(Android OS13) で公式配布のRetroArch(32bit)から
v8aとv7aの両方のコアで動作確認しました

検証はクリーンインストールした環境で行っています
既存のfbneoコアなどが導入されてるとおかしくなるかも。

ビルドめんどくさいですね(直球)

試してみたい人はダウンロードしてみて下さい。(ただし無保証です)
/libretro-fbneo/src/burner/libretro/libsにフォルダが4つありコアが含まれています
libretro.cppも書換済、オリジナルはlibretro.cpp.bakになります
コア単体で配布したいんですが、FBNeoのライセンスからソース込みです。