|
发表于 2004-12-3 11:32:54
|
显示全部楼层
我有kof2003的driver,不过是p rom加密版的.现在网上有p rom解密版的rom下了,添加驱动更方便了.kof2001,kof2002,侍魂零,合金弹头4,合金弹头5都是完全解密版的,直接加驱动就行了.但是最近的mame(版本从0.8几开始,记不清了)mvs机板的驱动作了改动,添加驱动后虽然可以玩,但是一顿一顿的,很卡(不知道是我个人机子的原因还是通病),而且kof2003的驱动也不能用了.我现在用0.76来玩mvs机板的游戏,它可以直接编译成neo-mame,就是专门针对neogeo游戏的啦,里面只有mvs机板和游戏的驱动,其他游戏的驱动都去掉了,这样不光体积减小了,运行游戏的速度也会有所提高(呵呵,反正我的机子是看不出来了,不过编译时间倒是大大减小了,以前要将近半个小时,现在10分钟搞定).
其他机板的游戏,比如我最爱的彩京striker 1945系列和gun bird系列当让要用最新的mame来玩了哦,新版修正了不少错误.
还有就是现在网上的neogeo游戏存在各种版本的rom,主要是对其中的s rom(显示字体)和v rom(游戏声音)作了修正造成的.添加驱动时要把对应的crc校验码写对.至于sha校验码我是直接删除了事,这个东西就算有错也最多给个警告信息给你,不影响运行.
另外说一句,大家最好把显卡的opengl驱动装上,然后编译时选择opengl,这样不光效果最好(没有马赛克),速度也是最快的.实在不行再用x11和sdl吧.
附:kof2003的驱动(只使用于mame较早版本,比如0.76,教新版本没试过)
在src/drivers/neogeo.c中添加
ROM_START( kof2003 )
ROM_REGION( 0x800000, REGION_CPU1, 0 )
ROM_LOAD16_WORD_SWAP( "271-p1.bin", 0x000000, 0x400000, CRC(92ed6ee3) )
ROM_LOAD16_WORD_SWAP( "271-p2.bin", 0x500000, 0x200000, CRC(5d3d8bb3) )
ROM_CONTINUE( 0x000000, 0x100000 )
ROM_CONTINUE( 0x000000, 0x100000 )
NEO_SFIX_128K( "271-s1.rom", CRC(7c7829aa) )
NEO_BIOS_SOUND_512K( "271-m1d.bin", CRC(0e86af8f) )
ROM_REGION( 0x1000000, REGION_SOUND1, ROMREGION_SOUNDONLY )
ROM_LOAD( "271-v1d.rom", 0x000000, 0x400000, CRC(d2b8aa5e) )
ROM_LOAD( "271-v2d.rom", 0x400000, 0x400000, CRC(71956ee2) )
ROM_LOAD( "271-v3d.rom", 0x800000, 0x400000, CRC(ddbbb199) )
ROM_LOAD( "271-v4d.rom", 0xc00000, 0x400000, CRC(01b90c4f) )
NO_DELTAT_REGION
ROM_REGION( 0x4000000, REGION_GFX3, 0 )
ROM_LOAD16_BYTE( "271-c1d.rom", 0x0000000, 0x800000, CRC(e42fc226) )
ROM_LOAD16_BYTE( "271-c2d.rom", 0x0000001, 0x800000, CRC(1b5e3b5 )
ROM_LOAD16_BYTE( "271-c3d.rom", 0x1000000, 0x800000, CRC(d334fdd9) )
ROM_LOAD16_BYTE( "271-c4d.rom", 0x1000001, 0x800000, CRC(0d457699) )
ROM_LOAD16_BYTE( "271-c5d.rom", 0x2000000, 0x800000, CRC(8a91aae4) )
ROM_LOAD16_BYTE( "271-c6d.rom", 0x2000001, 0x800000, CRC(9f8674b )
ROM_LOAD16_BYTE( "271-c7d.rom", 0x3000000, 0x800000, CRC(374ea523) )
ROM_LOAD16_BYTE( "271-c8d.rom", 0x3000001, 0x800000, CRC(75211f4d) )
ROM_END
static unsigned short kof2003_tbl[0x1000];
static READ16_HANDLER( kof2003_16_r )
{
return kof2003_tbl[offset];
}
static WRITE16_HANDLER( kof2003_16_w )
{
UINT32 bankaddress;
kof2003_tbl[offset]=(kof2003_tbl[offset]&mem_mask)|((~mem_mask)&data);
if(offset>0xff9) return;
bankaddress=((kof2003_tbl[0xff8]>>|(kof2003_tbl[0xff9]<<)+0x100000;
*(((UINT8 *)kof2003_tbl)+0x1ff0)=0xa0;
*(((UINT8 *)kof2003_tbl)+0x1ff1)&=0xfe;
*(((UINT8 *)kof2003_tbl)+0x1ff3)&=0x7f;
neogeo_set_cpu1_second_bank(bankaddress);
*(((unsigned char *)memory_region(REGION_CPU1))+0x58196)=kof2003_tbl
[0xff9]&0xff;
}
DRIVER_INIT( kof2003 )
{
install_mem_read16_handler (0, 0x2fe000, 0x2fffff, kof2003_16_r);
install_mem_write16_handler (0, 0x2fe000, 0x2fffff, kof2003_16_w);
init_neogeo();
}
GAMEB( 2003, kof2003, neogeo, neogeo, neogeo, neogeo, kof2003, ROT0, "SNK / Playmore", "The King of Fighters 2003" )
在src/driver.c中添加
DRIVER( kof2003 ) |
|