Nebula romdata,是 Nebula 模拟器的 CPS-1、CPS-2、NeoGeo 游戏列表文件(PGM、KONAMI 游戏驱动内置),拥有简单易懂的特点,可以随时通过编辑这些 romdata 来达到添加/修改游戏驱动的目的,大大加强了 Nebula 的 ROM 兼容性。
如何打开?
Nebula romdata 保存在 romdata 文件夹下,默认扩展名是 .dat,可以用任意一款文本编辑器(如 Windows 自带的记事本程序)打开。
1、打开记事本(开始 -> 程序 (WindowsXP 为“所有程序”) -> 附件 -> 记事本)
2、点击文件 -> 打开
3、在“文件类型”中选择“所有文件 (*.*)”
4、打开 romdata 文件
当然,每次都打开记事本程序有些麻烦,其实我们可以用鼠标右键开启记事本。这里我们介绍一下修改注册表的方法:
1、开始 -> 运行 (快捷键:WinKEY + R),输入 regedit,运行
2、备份注册表:文件 -> 导出 (由于修改注册表有一定危险性,所以我们建议备份注册表,以防不测。当然,如果你对自己有信心,那也不用了)
3、依次展开“HKEY_CLASSES_ROOT\*\shell”(如果没有则创建)
4、新建项 用“记事本”打开
5、在 用“记事本”打开 下新建项 command
6、进入 command 项,编辑 (默认) 值为 "你的记事本所在位置" "%1" (如 "C:\windows\system32\notepad.exe" "%1")
7、现在在任何一个文件上鼠标右击都会出现 用“记事本”打开 的选项了
——————————————————————————————————
接下来依次讲解 NeoGeo、CPS-2、CPS-1 的 romdata 编写方法
首先是总体说明,我们先来看看一段 romdata
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 这里是分隔线
System: NEO 这里是该游戏的机板系统,分为 CPS1、CPS2、neo
RomName: kof94b 这里是 ROM 的名字 (zip文件的名称)
Game: 格斗之王 '94 (可选Boss版,Ydmis修改) 这里就是显示在 Nebula 中的名字
Parent: kof94 这里是主 ROM,此 ROM 差的文件会从主 ROM 中提取;如果此 ROM 为主 ROM,这行不需要
[Program]
055b-p1.bin,100000,200000,c4c1b20a,1 文件名,16进制读取地址,16进制文件大小,CRC值,修正值
[Text]
055-s1.bin,0,20000,825976c1,0
[Z80]
055-m1.bin,0,20000,f6e77cf5,0
[Samples]
055-v1.bin,0,200000,8889596d,0
055-v2.bin,200000,200000,25022b27,0
055-v3.bin,400000,200000,83cf32c0,0
[Graphics]
055-c1.bin,0,200000,b96ef460,0
055-c2.bin,1,200000,15e096a7,0
055-c3.bin,400000,200000,54f66254,0
055-c4.bin,400001,200000,b01765f,0
055-c5.bin,800000,200000,ee759363,0
055-c6.bin,800001,200000,498da52c,0
055-c7.bin,C00000,200000,62f66888,0
055-c8.bin,C00001,200000,fe0a235d,0
[System] 这里就是具体设置,在后文提及
CartridgeID: 55
GfxCrypt: 0
GfxKey: 0
ButLayout: 9
Fix: 0
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 这里是分隔线
文件名,16进制读取地址,16进制文件大小,CRC值,修正值
如果你懒得用工具的话(-_-)这些都可以在 MAME 源代码中找到
如:
ROM_START( kof94b )
ROM_REGION( 0x200000, REGION_CPU1, 0 )
ROM_LOAD16_WORD_SWAP( "055b-p1.bin", 0x100000, 0x100000, CRC(c4c1b20a) SHA1(d08a3f3c28be4b1793de7d362456281329fe1828) )
ROM_CONTINUE( 0x000000, 0x100000 )
055b-p1.bin——文件名
0x100000 ——16进制读取地址
0x100000 ——16进制文件大小
CRC(c4c1b20a)-括号里面为 CRC值
ROM_CONTINUE -修正值 (具体是什么,多看几个就明白了)
另外,CRC值可冶ΡΥ0忽略
====================================================================
NeoGeo romdata 说明
主要说明 [System]
[System]
CartridgeID: 55 卡带编号,用16进制编辑器(如 UltraEdit)打开 P1 ROM 在00000100h行可以找到;当然,如果你不知道是什么,可冶ΡΥ 0
GfxCrypt: 0 异或表,如果是解密版就填0
GfxKey: 0 异或表的初始偏移量,解密为就填0
ButLayout: 9 不明,不过 neogeo 游戏大部分写的 9
Fix: 0 修正值
对于 GfxCrypt、GfxKey 还可以,MAME 源代码里有提及
DRIVER_INIT( kof2001 )
{
neogeo_fix_bank_type = 0;
kof2000_neogeo_gfx_decrypt(0x1e);
init_neogeo();
}
而对于 Fix ...... :(
====================================================================
CPS-2 romdata 说明
你可以看到 CPS2 ROM 比较乱,不像 neogeo ROM 那样明显,但也有规律
[Program] ——一般从 03 开始,不会超过 10
[Decryption] ——就是我们常说的 XOR,ROM 名一般带 x
[Graphics] ——一般从 13 开始
[Z80] ——一般是 01 和 02
[Samples] ——一般是 11 和 12
[System]
ButLayout: 0
Fix: 0
由于是大部分 CPS2 ROM 是已经解密的,所以这两个值一般写 0,不过也有例外 (19xx 的 fix 是 4)
====================================================================
CPS-1 romdata 说明
对于 CPS-1,没别的方法,只能借助于 MAME 源代码了......
ROM 名一看就明白,主要是 [System]
[System] 在源代码中 src\vidhrdw 里
这里以 ffightj1 为例
MAME 源代码中:
{"ffightj1",CPS_B_02, 0,0,0, 0x0001,0xffff,0x0001,0xffff },
通过观察,我们发现:
{"ROM 名",解密变量,Banks,后面四个是修正值}
然后观察上方的解密变量
#define CPS_B_02 0x60,0x0002, 0,0,0,0, /* n/a */ 0x6c,{0x6a,0x68,0x66,0x64},0x62, {0x02,0x04,0x08,0x00,0x00}
然后观察已经写好的 romdata,不难发现
#define 解密变量 BoardID , Multiply , LayerControl 第一个值 ,{BGHiControl}, 未知 , {前三个为 LayerControl 后三个值,后面两个为 Stars}
但是,Fix 依然不明 ...... :(