Lobelia |
2004-04-30 21:14 |
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 依然不明 ...... :( |
|