找回密码
 立即注册

微信扫码登录

使用验证码登录

QQ登录

只需一步,快速开始

查看: 1501|回复: 40

[教程]FBN 编译教程

[复制链接]
发表于 2024-10-12 20:10:12 | 显示全部楼层 |阅读模式
本帖最后由 缘来是你 于 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) 配置编译环境和路径
  1. path=C:\TDM-GCC-64\bin;%PATH%
复制代码
        2) 开始编译
        
        64位编译命令        
  1. mingw32-make mingw510 -j5 BUILD_X64_EXE=1 RELEASEBUILD=1
复制代码
        32位编译命令               
  1. mingw32-make mingw510 -j5 BUILD_X86_EXE=1 RELEASEBUILD=1
复制代码
        3) 编译 RetroArch 核心,使用命令:
  1. C:\msys64\mingw64\bin\make -j5 -C src/burner/libretro generate-files
  2. 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 即可


附录I

// ------------------------示例代码--------------------------------
  1. // 仅供参考,不一定适用于其它版本
  2. // 豪血寺一族(中国版)
  3. static struct BurnRomInfo powerinscnRomDesc[] = {
  4.         { "93095-3br.u108",        0x080000, 0x565e776a, BRF_ESS | BRF_PRG },        // 68000 code
  5.         { "93095-4.u109",         0x080000, 0xd3d7a782, BRF_ESS | BRF_PRG },
  6.         { "93095-2.u90",          0x020000, 0x4b123cc6, BRF_ESS | BRF_PRG },        // Z80 code
  7.         { "93095-5.u16",          0x100000, 0xb1371808, BRF_GRA },                         // layer 0
  8.         { "93095-6br.u17",          0x100000, 0x456a6bd8, BRF_GRA },
  9.         { "93095-7.u18",          0x080000, 0x2dd76149, BRF_GRA },
  10.         { "93095-1br.u15",          0x020000, 0x7e73e1d8, BRF_GRA },                         // layer 1
  11.         { "93095-12.u116",        0x100000, 0x35f3c2a3, BRF_GRA },
  12.         { "93095-13.u117",        0x100000, 0x1ebd45da, BRF_GRA },
  13.         { "93095-14.u118",        0x100000, 0x760d871b, BRF_GRA },
  14.         { "93095-15.u119",        0x100000, 0xd45be388, BRF_GRA },
  15.         { "93095-16.u120",        0x100000, 0xa9c16c9c, BRF_GRA },
  16.         { "93095-17.u121",        0x100000, 0x51b57288, BRF_GRA },
  17.         { "93095-18.u122",        0x100000, 0xb135e3f2, BRF_GRA },
  18.         { "93095-19.u123",        0x100000, 0x67695537, BRF_GRA },
  19.         { "93095-10.u48",          0x100000, 0x329ac6c5, BRF_SND },                         // sound 1
  20.         { "93095-11.u49",          0x100000, 0x7566097c, BRF_SND },
  21.         { "93095-8.u46",          0x100000, 0xf019bedb, BRF_SND },                         // sound 2
  22.         { "93095-9.u47",          0x100000, 052c83d765, BRF_SND },
  23.         { "22.u81",                            0x000020, 0x67d5ec4b, BRF_OPT },                        // unknown
  24.         { "21.u71",                            0x000100, 0x182cd81f, BRF_OPT },
  25.         { "20.u54",                            0x000100, 0x38bd0e2f, BRF_OPT },
  26. };
  27. STD_ROM_PICK(powerinscn)
  28. STD_ROM_FN(powerinscn)
  29. // ----------------------------------------------------------------------------
  30.                 /* 省略若干行代码
  31.                         ************************************
  32.                    省略若干行代码*/
  33. // ----------------------------------------------------------------------------
  34. struct BurnDriver BurnDrvPowernbr = {
  35.         "powerinscn", "powerins", NULL, NULL, "2020",
  36.         "豪血寺一族(中国版)\0", NULL, "hack", "Miscellaneous",
  37.         NULL, NULL, NULL, NULL,
  38.         BDF_GAME_WORKING | BDF_CLONE | BDF_HACK, 2, HARDWARE_MISC_POST90S, GBF_VSFIGHT, FBF_PWRINST,
  39.         NULL, powerinscnRomInfo, powerinscnRomName, NULL, NULL, NULL, NULL, powerinsInputInfo, powerinsjDIPInfo,
  40.         powerinsInit, powerinsExit, powerinsFrame, DrvDraw, powerinsScan, &bRecalcPalette, 0x800,
  41.         320, 224, 4, 3
  42. };
复制代码
编译报错,将
  1. if ( strcmp(BurnDrvGetTextA(DRV_NAME), "powerins") == 0 || strcmp(BurnDrvGetTextA(DRV_NAME), "powerinsj") == 0) {
复制代码
替换为
  1. 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%
游客,如果您要查看本帖隐藏内容请回复


8

主题

166

回帖

1564

积分

金牌会员

积分
1564

最佳新人

发表于 2024-10-12 20:12:18 | 显示全部楼层
前排顶起!
回复

使用道具 举报

152

主题

2233

回帖

5301

积分

论坛元老

独乐乐不如众乐乐,免费分享游戏光荣,贩卖游戏可耻.

积分
5301

推广达人最佳新人

发表于 2024-10-12 20:15:04 | 显示全部楼层
进来支持一下!

5

主题

68

回帖

1553

积分

金牌会员

积分
1553
QQ
发表于 2024-10-12 21:46:10 | 显示全部楼层
頂起!!這篇教學文

0

主题

10

回帖

173

积分

注册会员

积分
173
发表于 2024-10-12 23:24:05 来自手机 | 显示全部楼层
对于小白来说太难了,基本看不懂,

1

主题

45

回帖

1376

积分

金牌会员

积分
1376
发表于 2024-10-13 01:19:29 | 显示全部楼层
感謝分享
回复

使用道具 举报

0

主题

661

回帖

2201

积分

金牌会员

积分
2201
发表于 2024-10-13 06:06:56 | 显示全部楼层
支持一下
回复

使用道具 举报

0

主题

117

回帖

306

积分

中级会员

积分
306
发表于 2024-10-13 06:43:52 | 显示全部楼层
感謝分享!
回复

使用道具 举报

6

主题

462

回帖

1813

积分

金牌会员

积分
1813
发表于 2024-10-13 06:52:25 来自手机 | 显示全部楼层
看看不错
回复

使用道具 举报

1

主题

54

回帖

1285

积分

金牌会员

积分
1285
发表于 2024-10-13 08:56:04 | 显示全部楼层
大佬溜北!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|肖琪模拟游戏站 ( 沪ICP备2023018581号-5|沪公网安备31011702888952号 )

GMT+8, 2024-12-22 09:20 , Processed in 0.080367 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表