|
本帖最后由 缘来是你 于 2024-12-10 17:21 编辑
街机模拟器系列教程 第2篇
1. 下载 MinGW64 (http://tdm-gcc.tdragon.net/)并安装
此处使用版本为 tdm64-gcc-9.2.0.exe(实测使用10.3.0编译,模拟器版本号出错)
1) 下载 GNU Utils,并解压至 ..\TDM-GCC-64\bin 目录
https://www.fbalpha.com/files/gnu_utils.zip
2) 下载 NASM,解压后将其中 nasm.exe 移至编译器 ..\TDM-GCC-64\bin 目录
https://www.nasm.us/pub/nasm/releasebuilds/
此处使用版本为 nasm-2.15rc12-win64.zip
3) 下载 Perl并安装
https://www.activestate.com/products/perl/
此处使用版本为 ActivePerl - 5.28.1.2801
2. 下载 FBN 源码,并解压
https://github.com/finalburnneo/FBNeo
3. 打开命令行,cd 进入源码目录
1) 配置编译环境和路径
- path=C:\TDM-GCC-64\bin;%PATH%
复制代码 2) 开始编译
64位编译命令
- mingw32-make mingw510 -j5 BUILD_X64_EXE=1 RELEASEBUILD=1
复制代码 32位编译命令
- mingw32-make mingw510 -j5 BUILD_X86_EXE=1 RELEASEBUILD=1
复制代码 3) 编译 RetroArch 核心,使用命令:- C:\msys64\mingw64\bin\make -j5 -C src/burner/libretro generate-files
- C:\msys64\mingw64\bin\make -j5 -C src/burner/libretro
复制代码 根据本机配置添加 make 路径。通常位于 C:\msys64\mingw64\bin\,也有版本位于 C:\msys64\usr\bin
若需添加其他参数,则必须添加至两个命令中
4. 精简与其它
1) 在..\fbasrc\src\burn\drv 目录下相关驱动中找到不需要的游戏信息,可删除相关游戏
2) 若需要删除整个驱动,需要根据需求修改 makefile.burn_rules 不需要的驱动相关代码,具体需要根据编译器报错信息不断调式
3)汉化和修改,只要找到相应源码修改,保存编译即可,如:
..\fbasrc\src\burner\win32\drv.cpp 可修改 ROM 路径配置对话框 ,app.rc 可以修改对话框,UI 菜单的布局等
模拟器非标资源位于 string.rc
修改 burner\title.h 可以更改模拟器标题名称
原版创建的文件夹太多,修改 src\burner\win32\main.cpp可以去掉那些没用的文件夹
具体问题具体分析,本文只作教学,其他需要你自己去探索
4) 添加游戏在,如添加 powerins 游戏,那么在..\src\burn\drv\pt90s\d_powerins.cpp 添加相应 Rom 的信息和列表即可(参见示例)
5) 如果想编译出来的是DEBUG版,命令行删除 RELEASEBUILD=1 即可
// ------------------------示例代码-------------------------------- - // 仅供参考,不一定适用于其它版本
- // 豪血寺一族(中国版)
- static struct BurnRomInfo powerinscnRomDesc[] = {
- { "93095-3br.u108", 0x080000, 0x565e776a, BRF_ESS | BRF_PRG }, // 68000 code
- { "93095-4.u109", 0x080000, 0xd3d7a782, BRF_ESS | BRF_PRG },
- { "93095-2.u90", 0x020000, 0x4b123cc6, BRF_ESS | BRF_PRG }, // Z80 code
- { "93095-5.u16", 0x100000, 0xb1371808, BRF_GRA }, // layer 0
- { "93095-6br.u17", 0x100000, 0x456a6bd8, BRF_GRA },
- { "93095-7.u18", 0x080000, 0x2dd76149, BRF_GRA },
- { "93095-1br.u15", 0x020000, 0x7e73e1d8, BRF_GRA }, // layer 1
- { "93095-12.u116", 0x100000, 0x35f3c2a3, BRF_GRA },
- { "93095-13.u117", 0x100000, 0x1ebd45da, BRF_GRA },
- { "93095-14.u118", 0x100000, 0x760d871b, BRF_GRA },
- { "93095-15.u119", 0x100000, 0xd45be388, BRF_GRA },
- { "93095-16.u120", 0x100000, 0xa9c16c9c, BRF_GRA },
- { "93095-17.u121", 0x100000, 0x51b57288, BRF_GRA },
- { "93095-18.u122", 0x100000, 0xb135e3f2, BRF_GRA },
- { "93095-19.u123", 0x100000, 0x67695537, BRF_GRA },
- { "93095-10.u48", 0x100000, 0x329ac6c5, BRF_SND }, // sound 1
- { "93095-11.u49", 0x100000, 0x7566097c, BRF_SND },
- { "93095-8.u46", 0x100000, 0xf019bedb, BRF_SND }, // sound 2
- { "93095-9.u47", 0x100000, 052c83d765, BRF_SND },
- { "22.u81", 0x000020, 0x67d5ec4b, BRF_OPT }, // unknown
- { "21.u71", 0x000100, 0x182cd81f, BRF_OPT },
- { "20.u54", 0x000100, 0x38bd0e2f, BRF_OPT },
- };
- STD_ROM_PICK(powerinscn)
- STD_ROM_FN(powerinscn)
- // ----------------------------------------------------------------------------
- /* 省略若干行代码
- ************************************
- 省略若干行代码*/
- // ----------------------------------------------------------------------------
- struct BurnDriver BurnDrvPowernbr = {
- "powerinscn", "powerins", NULL, NULL, "2020",
- "豪血寺一族(中国版)\0", NULL, "hack", "Miscellaneous",
- NULL, NULL, NULL, NULL,
- BDF_GAME_WORKING | BDF_CLONE | BDF_HACK, 2, HARDWARE_MISC_POST90S, GBF_VSFIGHT, FBF_PWRINST,
- NULL, powerinscnRomInfo, powerinscnRomName, NULL, NULL, NULL, NULL, powerinsInputInfo, powerinsjDIPInfo,
- powerinsInit, powerinsExit, powerinsFrame, DrvDraw, powerinsScan, &bRecalcPalette, 0x800,
- 320, 224, 4, 3
- };
复制代码编译报错,将 - if ( strcmp(BurnDrvGetTextA(DRV_NAME), "powerins") == 0 || strcmp(BurnDrvGetTextA(DRV_NAME), "powerinsj") == 0) {
复制代码- if ( strcmp(BurnDrvGetTextA(DRV_NAME), "powerins") == 0 || strcmp(BurnDrvGetTextA(DRV_NAME), "powerinsj") == 0 || strcmp(BurnDrvGetTextA(DRV_NAME), "powerinscn") == 0) {
复制代码 编译完成
编译脚本
将脚本解压至源码根目录,用记事本打开,修改path为实际路径后运行。
如你的GCC安装在E:\GCC,就修改为path=D:\GCC\bin;%PATH%
|
|