一、编译windows平台的FBNEO核心
编译64位核心只需安装64位的部分
RA的参考文档
httPS://docs.libretro.com/development/retroarch/compilation/windows/#core-compilation
1.下载安装MSYS (MSYS相当于一个沙箱编译环境,省去大量环境变量的配置工作)
https://www.msys2.org/
直接下载地址
https://github.com/msys2/msys2-installer/releases/download/2024-01-13/msys2-x86_64-20240113.exe
安装后可以在开始菜单启动 MSYS2 MinGW-W64命令行管理程序并运行以下命令:
pacman --noconfirm -Sy
pacman --needed --noconfirm -S bash pacman pacman-mirrors msys2-runtime
关闭 MSYS2 MinGW-W64 窗口并重新启动,然后执行:
pacman --noconfirm -Su
再次重新启动 MSYS2 MinGW-W64。开始安装编译工具。
32 位:
pacman -S --noconfirm --needed wget git make mingw-w64-i686-toolchAIn mingw-w64-i686-ntldd mingw-w64-i686-zlib mingw-w64-i686-pkg-config mingw-w64-i686-SDL2 mingw-w64-i686-libxml2 mingw-w64-i686-freetype mingw-w64-i686-python3 mingw-w64-i686-ffmpeg mingw-w64-i686-drmingw
64 位:
pacman -S --noconfirm --needed wget git make mingw-w64-x86_64-toolchain mingw-w64-x86_64-ntldd mingw-w64-x86_64-zlib mingw-w64-x86_64-pkg-config mingw-w64-x86_64-SDL2 mingw-w64-x86_64-libxml2 mingw-w64-x86_64-freetype mingw-w64-x86_64-python3 mingw-w64-x86_64-ffmpeg mingw-w64-x86_64-drmingw
如下QT部分是编译Retroarch客户端要用的,编译核心用不到
32 位:
pacman -S --noconfirm --needed mingw-w64-i686-qt5 mingw-w64-i686-openssl
64 位:
pacman -S --noconfirm --needed mingw-w64-x86_64-qt5 mingw-w64-x86_64-openssl
单独编译FBNEO核心
下载源码
git clone https://github.com/libretro/FBNeo.git
核心的单独编译教程位于页面下方
https://github.com/libretro/FBNeo/tree/master/src/burner/libretro
启动 MSYS2 MingW64 ,进入FBNEO项目根目录.
执行如下命令 -j后面的数字代表线程数,一般为CPU核心数+1。
make -j5 -C ./src/burner/libretro clean
make -j5 -C ./src/burner/libretro generate-files
make -j5 -C ./src/burner/libretro
编译完毕后即可在 ./src/burner/libretro 获得 fbneo_libretro.dll 核心
二、编译Linux平台的FBNEO核心
Fbneo编译参考文档
https://github.com/libretro/FBNeo/tree/master/src/burner/libretro
1. 编译Linxu_x86_64核心
Ubuntu系统
安装git用以拉取项目
sudo apt-get install git
安装编译工具
sudo apt-get install build-essential
进入FBNEO项目根目录.
执行如下命令
make -j5 -C ./src/burner/libretro clean
make -j5 -C ./src/burner/libretro generate-files
make -j5 -C ./src/burner/libretro
编译完毕后即可在 ./src/burner/libretro 获得 fbneo_libretro.so 核心
2.编译Linux_arrch64的核心,需要运行在arm CPU架构的Linux系统里进行编译,流程和在Ubuntu里编译一样。
三、编译Android平台的FBNEO核心
RA的参考文档
https://docs.libretro.com/development/retroarch/compilation/android/
编译Android核心需要Android NDK 可以在此页面下载NDK r11c版本
https://github.com/android/ndk/wiki/Unsupported-Downloads
Linux 系统的NDK r11c 直接下载地址
https://dl.google.com/android/repository/android-ndk-r11c-linux-x86_64.zip
编译依旧在Ubuntu操作系统里进行
编译还需要 libncurses5 库支持
sudo apt-get install libncurses5
把NDK解压到一个合适的地方,比如 /opt/android-ndk-r11c
开始编译前先了解一下FBNEO的Android编译目录 \src\burner\libretro\jni\
此目录下Application.mk 文件管控需要编译哪些Android CPU架构的核心
着重关注 APP_ABI := armeabi-v7a arm64-v8a x86 x86_64 这一行
armeabi-v7a 代表Arm CPU的32位Android
arm64-v8a 代表Arm CPU的64位Android
前面这两个对应是手机端Android
X86和x86_64 代表x86 CPU架构的Android 系统也就是平板电脑端
确认RA用的是哪个版本的核心的方法是打开RA查看系统信息->系统信息->CPU架构
如果CPU架构: ARMv8 即 arm64-v8a
只编译Android手机端64位的核心,配置只写arm64-v8a即可
APP_ABI := arm64-v8a
在Fbneo项目 /src/burner/libretro/jni处打开终端,设置NDK的临时环境变量,输入
export PATH=$PATH:/opt/android-ndk-r11c:/opt/android-ndk-r11c/build:/opt/android-ndk-r11c/toolchains
输入ndk-build -j5 回车,开始编译。
编译编译完毕后可以在 /src/burner/libretro/libs/ 出得到Android端的核心,核心名称为libretro.so 重命名为fbneo_libretro.so 即可。
四、编译Switch平台的FBNEO核心
RA 参考文档
https://docs.libretro.com/development/retroarch/compilation/switch-libnx/
编译Switch同样在Ubuntu系统下操作,需要会docker的使用,本教程为docker版。如果清楚如何在系统配置devkita64的环境就可以不用docker。
需要使用libretro-super项目以及 devkita64 编译环境
在系统/opt/目录,拉取libretro-super项目
git clone https://github.com/libretro/libretro-super.git
进入libretro-super项目根目录,打开终端,输入
./libretro-fetch.sh retroarch fbneo
拉取retroarch和fbneo两个子项目
如果你有自己的fbneo项目,需要把项目的文件夹名称命名为libretro-fbneo,把libretro-super根目录的libretro-fbneo项目删掉,把自己的项目替换进去
devkita64 编译环境由docker 容器提供,docker的安装参照下方地址
https://mirrors-i.tuna.tsinghua.edu.cn/help/docker-ce/
安装docker后,下载devkita64 镜像
docker pull devkitpro/devkita64
运行devkita64 容器并挂载 retroarch-super项目
sudo docker run -i --name devkita64 -d -v /opt/libretro-super:/opt/libretro-super devkitpro/devkita64
输入下面的命令,进入容器
sudo docker exec -it devkita64 /bin/bash
进入 retroarch-super 根目录编译fbneo项目输入:
platform=libnx ./libretro-build.sh fbneo
完成后,可以在libretro-super/dist/libnx中找到 fbneo_libretro_libnx.a 文件
把前缀 fbneo_ 删掉,即名称为libretro_libnx.a,复制到之前拉取的Retroarch项目的根目录
在retroarch根目录下执行
make -f Makefile.libnx
编译完毕后在Retroarch的根目录会得到retroarch_switch.nro ,改名为 fbneo_libretro_libnx.nro 即为Switch的Fbneo核心。
switch 的编译,全程在devkita64 docker 容器内部操作。直到核心编译完毕,才exit退出容器。
⭐自定义核心名称
编译出来的fbneo核心,只要名称和官方名称一致,就能替换官方核心使用。
但会有如下问题:
1.如果使用RA的在线更新核心功能,核心会被官方的版本覆盖掉。
2.核心新增后缀名加载支持,info文件也需要配套修改,沿用官方的配置就有些不合适了。
此时需要使用自定义核心名称作为区分,避免冲突。
做法相当简单,核心不再使用fbneo_libretro.dll 名称,改为 fbneo_xxx_libreto.dll
把Retroarch根目录里fbneo_libretro.info 文件复制一份同样改名 fbneo_xxx_libreto.info
如此核心与核心info文件就会对应起来。
Info文件也可以去Retroarch的libretro-super项目处获取
https://github.com/libretro/libretro-super/tree/master/dist/info
打开fbneo_xxx_libreto.info文件,修改display_name ,corename, supported_extensions
这个supported_extensions直接影响RA菜单的检索支持该后缀的核心匹配筛选。
# Software Information
display_name = "Arcade (FinalBurn Neo XXX )"
authors = "Team FBNeo"
supported_extensions = "zip|7z|cue|ccd|xxx"
corename = "FinalBurn Neo XXX"
license = "Non-commercial"
permissions = ""
display_version = "v1.0.0.03"
categories = "Emulator" |