要寫ROMDATA首先要弄清楚幾個問題:
第一.ROMDATA有什么用?簡單的說,ROMDATA是游戲rom的一些數(shù)據(jù)文件
,它記載了rom的名字,起始地址等等模擬器在load rom的時候需要讀取的重要信
息.
第二.為什么我們自己要寫romdata呢?這不應(yīng)該是模擬器作者的工作嗎?人
們?yōu)榱俗屇M器支持那些并沒有被模擬器作者所支持的游戲所采取的一種變通的
方法,實際上屬于一種hack行為。
第三.什么模擬器可以自己寫data?現(xiàn)在外掛romedata的只有nebula,另外,可以在hack的
winkawaks+loader里面的add.dat里面添加。
第四。通過寫romdata可以支持哪些游戲?主要是基于MVS,CPS1,CPS2基板的游戲,但是很可
能會有問題。
好了,說了這么多廢話,我們轉(zhuǎn)入正題,先來看個例子: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里面最難寫的部分,沒有好的方法,只有靠大家
的經(jīng)驗和觀察相同基板的其他游戲的romdata(比如KOF2k1和KOF2K2)來寫了.這個地址是16進制的
。文件大小也是16進制的,具體大小大家可以換算一下,16進制不會?windows自帶的計算器就可
以換算。
3.crc校驗是為了防止傳送過程中不可預知的錯誤而設(shè)置的一種校驗手段,一般如果概率統(tǒng)計crc一
樣而文件內(nèi)容不一樣的情況是十萬分之一,幾乎可以忽略不計,如果兩個rom的crc一致的話,我們
就可以認為這個rom是完好的。用壓縮工具(什么是壓縮工具?我倒,就是剛才說的WINZIP,WINRAR
之類的工具)打開,可以看到最后有一個CRC32,沒錯,就是它,把CRC寫到對應(yīng)的rom名后面就可以
了。當然,如果你能確信你的rom是完美的話,crc一項可以全部寫0,就是忽略crc校驗的意思。
4.最后的0雖然沒有實際意思,但是必須要寫(好象寫1表示從rom的中間開始讀,然后從頭部開
始讀),如果有時候?qū)懞玫膔omdata完全找不到錯誤的話,不妨把0改成1試試。
再來看最后的system欄:
artridgeID:就是游戲被發(fā)售的順序,一般在p1中可以找到,而且dumper一般會給出來的,如果不
知道的話就隨便寫一個小點的數(shù)字無所謂的,但是新版nebula中根據(jù)這個數(shù)據(jù)對SNK的新游戲加了
鎖,我們可以用16進制的編輯器打開rom,然后查找這個數(shù)據(jù),把它改小就可以騙過nebula了,當然
這是另外一個話題,屬于hack rom了如果你用loader的話就不必這樣。
GfxCrypt:游戲解密用的異或表。解密版的寫0,加密版的寫1(現(xiàn)在已知的加密游戲除了
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:修正,對于光柵游戲?qū)?,其余的不是太清楚,最好照抄同類的游戲.
好,介紹完了,我們就來實戰(zhàn)一下,拿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大小完全一樣我們才可以這樣的。要把基址寫對,除了要對基板很熟悉以外,還要多觀察
,多積累經(jīng)驗。前面的rom名字和CRC校驗
碼就是我用紅圈圈的地方。CartridgeID瞎寫,但是不要過大,GfxCrypt和GfxKey因為是解密的所以寫
0,ButLayout和Fix: 0照抄就可以了。當然如果你實在寫不出來的話,我勸你還是放棄算了,會有高
手寫出來放到網(wǎng)上提供給大家下載的。
幾點注意事項:
1.用什么寫?這個無所謂的,只要是文本編輯器就可以了,我就是用的記事本(別說你不知道什
么是記事本)只要寫完以后另存為.dat文件就可以了,這個dat文件的名字要和rom的名字一樣。
2.寫完以后放哪?如果是nebula就放在romdata文件夾里面,如果是winkawaks就加在add.dat里面(
add.dat怎么打開?用記事本)
3.切記不要和已經(jīng)有的game(就是模擬器list里面已經(jīng)有的game)同名。
4.這里說的是對模擬器不支持的游戲?qū)憆omdata,對模擬器支持的游戲如果你還寫就是畫蛇添足了
。
- PC官方版
- 安卓官方手機版
- IOS官方手機版