要写ROMDATA首先要弄清楚几个问题:
第一.ROMDATA有什么用?简单的说,ROMDATA是游戏rom的一些数据文件
,它记载了rom的名字,起始地址等等模拟器在load rom的时候需要读取的重要信
息.
第二.为什么我们自己要写romdata呢?这不应该是模拟器作者的工作吗?人
们为了让模拟器支持那些并没有被模拟器作者所支持的游戏所采取的一种变通的
方法,实际上属于一种hack行为。
第三.什么模拟器可以自己写data?现在外挂romedata的只有nebula,另外,可以在hack的
winkawaks+loader里面的add.dat里面添加。
第四。通过写romdata可以支持哪些游戏?主要是基于MVS,CPS1,CPS2基板的游戏,但是很可
能会有问题。
好了,说了这么多废话,我们转入正题,先来看个例子:KOF2K1
System: NEO - 基板:noegeo的就写neo,CPS1就写CPS1,CPS2就写CPS2
RomName: kof2001 - ROM的名字,就是ZIP压缩包的名字
Game: The King of Fighters 2001 - 游戏列表中的名字
[Program] - [程序单元]
kof2k1_p1.rom,0,100000,9381750d,0 - rom名,基址,文件大小,crc校验码
kof2k1_p2.rom,100000,400000,c01720aa,0
[Text] - [文本单元,有的游戏没有就不写]
kof2k1_s1.rom,0,20000,de828076,0
[Z80] - [声音单元,就是赫赫有名的Z80核心]
kof2k1_m1.rom,0,20000,73c1f5b0,0
[Samples] - [采样单元,存放语音和声效]
kof2k1_v1.rom,0,400000,83d49ecf,0
kof2k1_v2.rom,400000,400000,003f1843,0
kof2k1_v3.rom,800000,400000,2ae38dbe,0
kof2k1_v4.rom,C00000,400000,26ec4dd9,0
[Graphics] - [图象单元]
kof2k1_c1.rom,0,800000,f298b87b,0
kof2k1_c2.rom,1,800000,f9d05d99,0
kof2k1_c3.rom,1000000,800000,4c7ec427,0
kof2k1_c4.rom,1000001,800000,1d237aa6,0
kof2k1_c5.rom,2000000,800000,c2256db5,0
kof2k1_c6.rom,2000001,800000,8d6565a9,0
kof2k1_c7.rom,3000000,800000,ef682ed2,0
kof2k1_c8.rom,3000001,800000,954d0e16,0
[System]
CartridgeID: 267
GfxCrypt: 0
GfxKey: 0
ButLayout: 9
Fix: 0
上面写不下,我做点补充: 有的时候Game下面还会有一个Parent,就是主板的名字(当rom是这块
主板的从板,而且要用到 主板中的某些单元的话,就必须得写,前提是roms下面有主板的rom),当然
,如果没有主板或者根本就没有用到主板中的单元的话,完全可以不写.(这段话看不懂的不要看,
就当我放了个P)
下面我一个个来详细的说明。
1.ROM名就是压缩包里面单个文件的名字,用winzip,winrar等压缩工具打开压缩包就看的见.
2.基址就是程序的起始位置,这个是整个romdata里面最难写的部分,没有好的方法,只有靠大家
的经验和观察相同基板的其他游戏的romdata(比如KOF2k1和KOF2K2)来写了.这个地址是16进制的
。文件大小也是16进制的,具体大小大家可以换算一下,16进制不会?windows自带的计算器就可
以换算。
3.crc校验是为了防止传送过程中不可预知的错误而设置的一种校验手段,一般如果概率统计crc一
样而文件内容不一样的情况是十万分之一,几乎可以忽略不计,如果两个rom的crc一致的话,我们
就可以认为这个rom是完好的。用压缩工具(什么是压缩工具?我倒,就是刚才说的WINZIP,WINRAR
之类的工具)打开,可以看到最后有一个CRC32,没错,就是它,把CRC写到对应的rom名后面就可以
了。当然,如果你能确信你的rom是完美的话,crc一项可以全部写0,就是忽略crc校验的意思。
4.最后的0虽然没有实际意思,但是必须要写(好象写1表示从rom的中间开始读,然后从头部开
始读),如果有时候写好的romdata完全找不到错误的话,不妨把0改成1试试。
再来看最后的system栏:
artridgeID:就是游戏被发售的顺序,一般在p1中可以找到,而且dumper一般会给出来的,如果不
知道的话就随便写一个小点的数字无所谓的,但是新版nebula中根据这个数据对SNK的新游戏加了
锁,我们可以用16进制的编辑器打开rom,然后查找这个数据,把它改小就可以骗过nebula了,当然
这是另外一个话题,属于hack rom了如果你用loader的话就不必这样。
GfxCrypt:游戏解密用的异或表。解密版的写0,加密版的写1(现在已知的加密游戏除了
kof2000,2001,2002,rod,mslug4之外 都和kof99的一样写1 ),和kof2000一样的写2.再补充几个加密版本的
:2k2的就是EC,2k1的是1E,ms4的是31,rotd的是3F
GfxKey:异或表的初始偏移量,解密的写0。
ButLayout:NEOGEO的只可9,CPS1的推荐A,CPS2的推荐0.
fix:修正,对于光栅游戏写5,其余的不是太清楚,最好照抄同类的游戏.
好,介绍完了,我们就来实战一下,拿KOF2K2开刀。
System: NEO
RomName: kof2k2
Game: The King of Fighters 2002
[Program]
kof2k2_p1.rom,0,100000,9ede7323,0
kof2k2_p2.rom,100000,400000,432fdf53,0
[Text]
kof2k2_s1.rom,0,20000,E0EAABA3,0
[Z80]
kof2k2_m1.rom,0,20000,ab9d360e,0
[Samples]
kof2k2_v1.rom,0,400000,13d98607,0
kof2k2_v2.rom,400000,400000,9cf74677,0
kof2k2_v3.rom,800000,400000,8e9448b5,0
kof2k2_v4.rom,C00000,400000,067271b5,0
[Graphics]
kof2k2_c1.rom,0,800000,7efa6ef7,0
kof2k2_c2.rom,1,800000,aa82948b,0
kof2k2_c3.rom,1000000,800000,959fad0b,0
kof2k2_c4.rom,1000001,800000,efe6a468,0
kof2k2_c5.rom,2000000,800000,74bba7c6,0
kof2k2_c6.rom,2000001,800000,e20d2216,0
kof2k2_c7.rom,3000000,800000,8a5b561c,0
kof2k2_c8.rom,3000001,800000,bef667a3,0
[System]
CartridgeID: 267
GfxCrypt: 0
GfxKey: 0
ButLayout: 9
Fix: 0
可以看到,基址部分,文件大小完全照抄,当然不是每个游戏都可以这样的,只是这两个游戏的
所有rom大小完全一样我们才可以这样的。要把基址写对,除了要对基板很熟悉以外,还要多观察
,多积累经验。前面的rom名字和CRC校验
码就是我用红圈圈的地方。CartridgeID瞎写,但是不要过大,GfxCrypt和GfxKey因为是解密的所以写
0,ButLayout和Fix: 0照抄就可以了。当然如果你实在写不出来的话,我劝你还是放弃算了,会有高
手写出来放到网上提供给大家下载的。
几点注意事项:
1.用什么写?这个无所谓的,只要是文本编辑器就可以了,我就是用的记事本(别说你不知道什
么是记事本)只要写完以后另存为.dat文件就可以了,这个dat文件的名字要和rom的名字一样。
2.写完以后放哪?如果是nebula就放在romdata文件夹里面,如果是winkawaks就加在add.dat里面(
add.dat怎么打开?用记事本)
3.切记不要和已经有的game(就是模拟器list里面已经有的game)同名。
4.这里说的是对模拟器不支持的游戏写romdata,对模拟器支持的游戏如果你还写就是画蛇添足了
。
- PC官方版
- 安卓官方手机版
- IOS官方手机版