本文共 5337 字,大约阅读时间需要 17 分钟。
在这之前我们必须要准备好一些必备的东西 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转载地址:http://opjxi.baihongyu.com/