|
本帖最后由 taoenwen 于 2025-6-5 15:34 编辑
在 fbneo,以上两者样式的 romdata 是等价的。
第一个是 nebula 样式 (名义上支持 PGM/NG/CPS123/家用机);
第二个是 fbneo 样式 (支持全部基板驱动),fbneo 现在支持直接从游戏驱动导出 RomData 模板,可在 这里 查阅。
首行标头 System (fbneo 样式时不需要):仅作为两种样式区分的标志,有这个标志,程序视为 nebula 样式,后续程序逻辑按 nebula 样式进行,没有此标头,按 fbneo 样式逻辑进行,至于标头后面写啥,程序是直接忽略的,填不填无所谓,至于硬件识别,程序有自己的逻辑。
后续三个标头:
RomName 和 ZipName (游戏压缩包名称);
Parent 和 DrvName (借用哪个游戏驱动的名称);
Game 和 FullName (想要呈现的游戏全名,不指定则显示游戏压缩包名称);
这三组,每组两个名称都是通用的,程序能自动识别,保留 nebula 的标头名称习惯,只是为了满足强迫症用户 (此处无贬义)。
进入正文部分:
nebula 样式为 5列数据,分别为:ROMs 名称、ROMs 载入地址 (在 fbneo 填 0即可,程序直接忽略)、ROMs 长度 (不可为 0)、ROMs crc32 (可填 0,0为不校验 crc32)、ROMs type (PGM/NG/CPS123/家用机 可为 0,其它基板参考 fbneo 样式);
fbneo 样式为 4列数据,分别为:ROMs 名称、ROMs 长度 (不可为 0)、ROMs crc32 (可填 0,0为不校验 crc32)、ROMs type (家用机 可为 0,其它基板必须规范填写正确的 type 值,值可以是宏或者 16进制的值,参考源码部分)。
nebula 样式的 romdata 有节点,如上图范例 Neo Geo 基板的:[Program]、[Text]、[Graphics]、[Z80]、[Samples] ...,这些节点在 fbneo 是为了让程序通过这些节点来自动分配 type,具体怎么实现的,这里就不展开了,这里仅介绍一下这些节点及它们的扩展别名。
- Neo Geo -:
Program = PRG1,举例:可以是 [Program],也可以写成 [PRG1],以下均是;
Text = GRA1;
Graphics = GRA2;
Z80 = SNDA;
Samples = SND1;
SamplesAES = SND2,这条是新增的,如 nam1975 这个游戏,mvs 和 aes 载入的采样文件是不一样的,大部分的时候都用不到,只是预留功能;
BoardPLD = OPT1,Neo Geo 只有极少部分游戏是有 PLD,也仅作预留。
- PGM -
Program = PRG1;
Tile = GRA1;
SpriteData = GRA2;
SpriteMasks = GRA3;
Samples = SND1;
InternalARM7 = PRG2;
Ramdump,没有别名,我也不知道为什么会有它,no dump 的 ROMs type 程序压根不会载入该 ROM,也不会预留内存空间,留着吧,别名就省省吧;
ExternalARM7 = PRG3;
ProtectionRom = PRG4。
- CPS1 -
Program = PRG1,自动基础判断,68k ROMs 大于 0x40000,顺序载入,否则交错载入;
ProgramS = PRGS,新增,强制程序以 2个一组以交错字节的方式载入 68k ROMs (名将的第三第四个 68k ROMs 就是交错载入的);
ProgramN = PRGN,新增,强制程序以顺序方式逐个载入 68k ROMs (可以配合 PRGS,实现自定义载入);
- 名将为例:
- ...
- [PRGN]
- 68k1, ...; // 顺序
- 68k2, ...; // 顺序
- [PRGS]
- 68k3, ...; // 交错
- 68k4, ...; // 交错
- [...]
- ...
- [System]
- ...
复制代码 Z80 = SNDA;
Graphics = GRA1;
Samples = SND1;
Pic = SNDB,Pic 没模拟,预留吧,应该用不到;
Tiles = Extras = GRA2,部分街霸2有扩展的图形;
BoardPLD = OPT1。
- CPS2 -
Program = PRG1;
Graphics = GRA1;
Z80 = SNDA;
Samples = SND1;
Decryption = KEY1。
- CPS3 -
Bios,新增,无别名;
Program = PRG1,新增;
Graphics = GRA1,新增。
- 家用机 -
写 0 即可,自动判断。
- 通用部分 -
[System] 节点,注意是节点,而不是标头,这个节点标志是告诉程序,以下没有了,不用再查找内容了。
讲一下 Parent 和 DrvName:
在 fbneo 的 romdata 实现中,建议大家用 clone 做驱动,这样按 ROMs 载入逻辑,clone 缺少 ROMs 时会自动向 parent,也就是其父级驱动申请缺少的 ROMs。
当然不排除有部分用户就喜欢用 parent 做驱动,那么请你补齐该游戏全部的 ROMs,parent 是顶层驱动,没谁为它提供额外的 ROMs,所以想清楚做事,别有事就怨天怨地,更别胡搅蛮缠。
重点:
我们推荐用户优先使用 fbneo 样式的 romdata,fbneo 对 nebula 样式的支持,仅作为用户习惯的兼容与扩展,而不是 fbneo 认可或崇拜 nebula 或安卓啥啥其它的 romdata,fbneo 没有攀附、复刻它们的计划或打算,更不希望有人试图用甩脸、撂自己挑子等形式来道德绑架。
最后,如果觉得 fbneo romdata 有啥新功能需要添加或实现,你可以:
1、合理建议,在不破坏原有结构、逻辑的基础上提出扩展建议 (原设计逻辑是全基板兼容,这是底线,不容破坏);
2、自己写代码,上 pr;
3、以上都不是,闭嘴!
2025/06/04 更新,在更新子目录搜索逻辑时,顺便也完成了追加 RomData 被占用驱动 ROMs 的载入,就和一开始说的一样,要动 bzip.cpp,而不是成为安卓 2 代。
Skip the default ROMs directory when searching subdirectories · finalburnneo/FBNeo@7b70c13
2025/06/05 更新,可在选择游戏对话框界面,选中一个游戏驱动,鼠标右键弹出菜单,选择最后一项:Export to RomData template
win32 sel: RomData templates can be exported directly from the driver · finalburnneo/FBNeo@9ba6fbc
|
评分
-
查看全部评分
|