打造你自己的 MAME 模擬器。

在這之前我們必須要準備好一些必備的東西
1.wingw-gcc.exe
點擊下載
2.wingwover.zip
點擊下載
3.mame源代碼mame081s.zip
點擊下載
4.mame32plus源代碼mame32plus-0.18-0423-src.cab
點擊下載

首先安裝wingw-gcc.exe,然後解壓wingwover.zip,mame源代碼,mame32plus源代碼到相應的安裝目錄下,覆蓋相應的文件。

開啓一個DOS窗口,進入wingw-gcc.exe的安裝目錄,運行批處理“ENV.bat”,然後在運行“make”開始編譯普通版的mame32plus(編譯的時間要按自己機器的性能而定)。在編譯的過程中如果出錯,再次運行“make”一般能解決問題。完成後就會生成三個文件,分別是mamep.exe、mame32p.exe、mameplib.dll。

如果要編譯其它的版本,在編譯時,“make”後面必須要有參數,如I686優化:make I686=1
I686優化:make I686=1
P4優化:make P4=1
athlon優化:make athlon=1

在這裏要注意的是,mame和mame32plus的版本一定要一致,也就是說mame 0.81與mame32plus 0.81.x相對應。編譯好一個版本的mame後如果接着編譯其它CPU優化版本的話,並不需要刪除安裝目錄下的obj目錄,因爲因爲編譯程序會在obj目錄下新建一個對應的文件夾,保存新的數據。(如接着編譯多一個I686優化版,編譯程序會在obj目錄下新建一個mameppp的文件夾)。

然後進入安裝目錄下的“makelang”目錄下,運行“cn.bat”得到簡體中文語言包。

到這一步已經編譯好了mame32plus了,字體要去mame32plus!的主頁去下載,在這裏給出簡體中文的字體下載地址:
點擊下載
如果系統是98的話,還需要下載一個unicows.dll的東西。還有如果大家覺得mameplib.dll有幾十兆很大的話,你可以用upx等壓縮軟件對其進行壓縮。

下面就開始添加遊戲驅動

注意:修改源代碼前,請先備份相應的源代碼文件。修改代碼後再次編譯時,不要刪除安裝目錄下的obj目錄,因爲編譯程序會識別那些源文件已被修改,然後只編譯它們。如果你時間多得沒地方用,又不介意慢慢等的話,就刪除安裝目錄下的obj目錄,重新開始編譯所有源代碼^_^。

1、添加完全解密的NEOGEO遊戲驅動(KOF2002爲例):
其實裏面已有KOF2002、合金4等等的驅動,只是沒打開而已,只要修改安裝目錄下的src目錄“driver.c”文件,將相應遊戲前的“TESTDRIVER”改爲“DRIVER”,例如要打KOF2002的驅動,找到“TESTDRIVER( kof2002 ) /* 0265 (c) 2002 Eolith / Playmore Corporation */”更改爲“DRIVER( kof2002 ) /* 0265 (c) 2002 Eolith / Playmore Corporation */”。只是這些驅動多數是加密版或直接從“C ROM”中讀取“S1 ROM”版的,需要定義“DRIVER_INIT”,看起來很是複雜

a、改寫遊戲驅動
用文本編輯器(如UltraEdit或Windows自帶的寫字板)打開安裝目錄下的src目錄下drivers目錄下的“neogeo.c”文件,找一個較接近的遊戲驅動,然後改一下。KOF98驅動就是較接近的一個,找它所在位置,然後再製,再製到那兒好像都沒有多大關係,建議再製到KOF2002系列的後面,方便找啊^_^。
修改驅動代碼與修改Nebula的ROMDATA類似,具體如下:

ROM_START( kof98 )
ROM_START( kof2002nd )
ROM_REGION( 0x500000, REGION_CPU1, 0 )
這兒不用改
ROM_LOAD16_WORD_SWAP( "242-p1.bin", 0x000000, 0x100000, 0x61ac868a )
ROM_LOAD16_WORD_SWAP( 265n-p1.rom, 0x000000, 0x大小(1M寫100000,類推), 0xCRC )
ROM_LOAD16_WORD_SWAP( "242-p2.bin", 0x100000, 0x400000, 0x980aba4c )

NEO_SFIX_128K( "242-s1.bin", 0x7f7b4805 )

NEO_BIOS_SOUND_256K( "242-m1.bin", 0x4e7a6b1b )
NEO_BIOS_SOUND_128K{注意M1的大小,2K2是128K的}( "265-m1.rom", 0xCRC )

ROM_REGION( 0x1000000, REGION_SOUND1, ROMREGION_SOUNDONLY )
ROM_LOAD( "242-v1.bin", 0x000000, 0x400000, 0xb9ea8051 )
ROM_LOAD( "265-rom", 0x000000, 0x大小, 0xCRC )
ROM_LOAD( "242-v2.bin", 0x400000, 0x400000, 0xcc11106e )
ROM_LOAD( "242-v3.bin", 0x800000, 0x400000, 0x044ea4e1 )
ROM_LOAD( "242-v4.bin", 0xc00000, 0x400000, 0x7985ea30 )

NO_DELTAT_REGION

ROM_REGION( 0x4000000, REGION_GFX3, 0 )
ROM_LOAD16_BYTE( "242-c1.bin", 0x0000000, 0x800000, 0xe564ecd6 ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "265-c1.rom", 0x0000000, 0x大小, 0xCRC )
ROM_LOAD16_BYTE( "242-c2.bin", 0x0000001, 0x800000, 0xbd959b60 ) /* Plane 2,3 */
ROM_LOAD16_BYTE( "242-c3.bin", 0x1000000, 0x800000, 0x22127b4f ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "242-c4.bin", 0x1000001, 0x800000, 0x0b4fa044 ) /* Plane 2,3 */
ROM_LOAD16_BYTE( "242-c5.bin", 0x2000000, 0x800000, 0x9d10bed3 ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "242-c6.bin", 0x2000001, 0x800000, 0xda07b6a2 ) /* Plane 2,3 */
ROM_LOAD16_BYTE( "242-c7.bin", 0x3000000, 0x800000, 0xf6d7a38a ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "242-c8.bin", 0x3000001, 0x800000, 0xc823e045 ) /* Plane 2,3 */
ROM_END

即改成:(注意CRC,下面可能與你所擁有的不一樣。)

ROM_START( kof2002nd )
ROM_REGION( 0x500000, REGION_CPU1, 0 )
ROM_LOAD16_WORD_SWAP( "265n-p1.rom", 0x000000, 0x100000, 0x9ede7323 )
ROM_LOAD16_WORD_SWAP( "265n-p2.rom", 0x100000, 0x400000, 0x432fdf53 )

NEO_SFIX_128K( "265n-s1.rom", 0xe0eaaba3 )

NEO_BIOS_SOUND_128K( "265n-m1.rom", 0xab9d360e )

ROM_REGION( 0x1000000, REGION_SOUND1, ROMREGION_SOUNDONLY )
ROM_LOAD( "265n-v1.rom", 0x000000, 0x400000, 0x13d98607 )
ROM_LOAD( "265n-v2.rom", 0x400000, 0x400000, 0x9cf74677 )
ROM_LOAD( "265n-v3.rom", 0x800000, 0x400000, 0x8e9448b5 )
ROM_LOAD( "265n-v4.rom", 0xc00000, 0x400000, 0x067271b5 )

NO_DELTAT_REGION

ROM_REGION( 0x4000000, REGION_GFX3, 0 )
ROM_LOAD16_BYTE( "265n-c1.rom", 0x0000000, 0x800000, 0x7efa6ef7 ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "265n-c2.rom", 0x0000001, 0x800000, 0xaa82948b ) /* Plane 2,3 */
ROM_LOAD16_BYTE( "265n-c3.rom", 0x1000000, 0x800000, 0x959fad0b ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "265n-c4.rom", 0x1000001, 0x800000, 0xefe6a468 ) /* Plane 2,3 */
ROM_LOAD16_BYTE( "265n-c5.rom", 0x2000000, 0x800000, 0x74bba7c6 ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "265n-c6.rom", 0x2000001, 0x800000, 0xe20d2216 ) /* Plane 2,3 */
ROM_LOAD16_BYTE( "265n-c7.rom", 0x3000000, 0x800000, 0x8a5b561c ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "265n-c8.rom", 0x3000001, 0x800000, 0xbef667a3 ) /* Plane 2,3 */
ROM_END

b、添加到列表
一樣再KOF98的,然後再製到後面,修改一下。具體如下:
找到“GAME( 1998, kof98, neogeo, neogeo, neogeo, neogeo, ROT0, "SNK", "The King of Fighters '98 - The Slugfest / King of Fighters '98 - dream match never ends" )”再製到“GAME( 2001, sengoku3, neogeo, neogeo, neogeo, sengoku3, ROT0, "SNK", "Sengoku 3" ) /* Encrypted GFX */”的後面。

GAME( 1998, kof98, neogeo, neogeo, neogeo, neogeo, ROT0, "SNK", "The King of Fighters '98 - The Slugfest / King of Fighters '98 - dream match never ends" )
GAME( 2002, 克隆ROM文件名, ROM文件名, neogeo, neogeo, neogeo, ROT0, "SNK", "The King of Fighters 2002 (格鬥之王2002完全解密版)" )
例如:
GAME( 2002, kof2002nd, kof2002, neogeo, neogeo, neogeo, ROT0, "SNK", "The King of Fighters 2002 (格鬥之王2002完全解密版)" )


c、打開驅動
打開安裝目錄下的src目錄下的“driver.c”文件,先將“TESTDRIVER( kof2002 )”改成“DRIVER( kof2002 )”,然後在下方加上“DRIVER( kof2002nd )”即可。(/*之間*/是註釋,這個沒有人不知道吧)

最後重新再編譯一次,你就能擁有你自己的mame32plus模擬器拉,怎麼樣?高興吧:)


原著:yong 改編:FinalFantasy
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章