QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: attiseve

有关xmame的几个问题

[复制链接]
发表于 2004-12-11 19:21:39 | 显示全部楼层
斑竹大人功德无量啊
回复

使用道具 举报

 楼主| 发表于 2004-12-12 20:00:00 | 显示全部楼层
为什么最新的0.89还是不能支持kof2000以上的游戏?
回复

使用道具 举报

 楼主| 发表于 2004-12-12 20:05:05 | 显示全部楼层
从src/driver/neogeo.c中没有看到kof2000以上版本的支持。怎么回事呢?
回复

使用道具 举报

 楼主| 发表于 2004-12-17 08:33:18 | 显示全部楼层
有人知道吗?
回复

使用道具 举报

发表于 2004-12-20 12:53:17 | 显示全部楼层
自己写上去
回复

使用道具 举报

 楼主| 发表于 2004-12-25 17:33:15 | 显示全部楼层
太难了,有谁有这方面的经验吗?
回复

使用道具 举报

发表于 2004-12-26 22:06:05 | 显示全部楼层
给你一个,自己对着改。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

发表于 2004-12-26 22:49:07 | 显示全部楼层
分别对应
src/driver.c
src/drivers/neogeo.c


例如改出2001
改neogeo.c的这一段 (crc值有可能由于rom不同而不同,带入你的rom的crc值)
ROM_START( kof2001 )      /*这个kof2001是游戏名,*/
        ROM_REGION( 0x500000, REGION_CPU1, 0 )
        ROM_LOAD16_WORD_SWAP( "2k1_p1.rom", 0x000000, 0x100000, CRC(bb241f80))
        ROM_LOAD16_WORD_SWAP( "262-p2.bin", 0x100000, 0x400000, CRC(91eea062))

        NEO_SFIX_128K( "2k1_s1.rom", CRC(de828076) )

        NEO_BIOS_SOUND_128K( "262-m1d.bin",  CRC(56a9067f))

        ROM_REGION( 0x1000000, REGION_SOUND1, ROMREGION_SOUNDONLY )
        ROM_LOAD( "262-v1.bin", 0x000000, 0x400000, CRC(83d49ecf) )
        ROM_LOAD( "262-v2.bin", 0x400000, 0x400000, CRC(003f1843) )
        ROM_LOAD( "262-v3.bin", 0x800000, 0x400000, CRC(2ae38dbe) )
        ROM_LOAD( "262-v4.bin", 0xc00000, 0x400000, CRC(26ec4dd9) )

        NO_DELTAT_REGION

        ROM_REGION( 0x4000000, REGION_GFX3, 0 )
        ROM_LOAD16_BYTE( "2k1-c1.rom", 0x0000000, 0x800000, CRC(f298b87b) ) /* Plane 0,1 */
        ROM_LOAD16_BYTE( "262-c2.bin", 0x0000001, 0x800000, CRC(f9d05d99) ) /* Plane 2,3 */
        ROM_LOAD16_BYTE( "262-c3.bin", 0x1000000, 0x800000, CRC(4c7ec427) ) /* Plane 0,1 */
        ROM_LOAD16_BYTE( "262-c4.bin", 0x1000001, 0x800000, CRC(1d237aa6) ) /* Plane 2,3 */
        ROM_LOAD16_BYTE( "262-c5.bin", 0x2000000, 0x800000, CRC(c2256db5) ) /* Plane 0,1 */
        ROM_LOAD16_BYTE( "262-c6.bin", 0x2000001, 0x800000, CRC(8d6565a9) ) /* Plane 2,3 */
        ROM_LOAD16_BYTE( "2k1-c7.rom", 0x3000000, 0x800000, CRC(ef682ed2) ) /* Plane 0,1 */
        ROM_LOAD16_BYTE( "262-c8.bin", 0x3000001, 0x800000, CRC(954d0e16) ) /* Plane 2,3 */
ROM_END


然后在neogeo.c末尾加入
GAMEB( 2001, kof2001, neogeo,  neogeo,  neogeo, neogeo,  neogeo, ROT0, "Eolith / SNK", "The King of Fighters 2001" )
我对其注解
GAMEB( 2001/*年份*/, kof2001/*rom的名字*/, neogeo/*父rom的名字*/,  neogeo,  neogeo, neogeo,  neogeo/*DRIVER_INIT的名字*/, ROT0, "Eolith / SNK", "The King of Fighters 2001" /*游戏名*/)

关于rom与父rom:
比如一个游戏2001,游戏rom为kof2001.zip
其中有一个是加密rom,一个是解密rom。
这时kof2001.zip中的p_rom有可能就有两个,一个为加密的(名字为262_p1.bin),一个为解密的(名字为262_p1n.bin)
我们把加密的262_p1.bin写入游戏kof2001,解密的262_p1n.bin写入游戏kof2001n。其他的rom文件相同,所以公用。
这时两个文件的romdata

kof2001的:
ROM_START( kof2001 )      /*这个kof2001是游戏名,*/
        ROM_REGION( 0x500000, REGION_CPU1, 0 )
        ROM_LOAD16_WORD_SWAP( "262_p1.rom", 0x000000, 0x100000, CRC(bb241f80))
        ROM_LOAD16_WORD_SWAP( "262-p2.bin", 0x100000, 0x400000, CRC(91eea062))

        NEO_SFIX_128K( "2k1_s1.rom", CRC(de828076) )

        NEO_BIOS_SOUND_128K( "262-m1d.bin",  CRC(56a9067f))

        ROM_REGION( 0x1000000, REGION_SOUND1, ROMREGION_SOUNDONLY )
        ROM_LOAD( "262-v1.bin", 0x000000, 0x400000, CRC(83d49ecf) )
        ROM_LOAD( "262-v2.bin", 0x400000, 0x400000, CRC(003f1843) )
        ROM_LOAD( "262-v3.bin", 0x800000, 0x400000, CRC(2ae38dbe) )
        ROM_LOAD( "262-v4.bin", 0xc00000, 0x400000, CRC(26ec4dd9) )

        NO_DELTAT_REGION

        ROM_REGION( 0x4000000, REGION_GFX3, 0 )
        ROM_LOAD16_BYTE( "2k1-c1.rom", 0x0000000, 0x800000, CRC(f298b87b) ) /* Plane 0,1 */
        ROM_LOAD16_BYTE( "262-c2.bin", 0x0000001, 0x800000, CRC(f9d05d99) ) /* Plane 2,3 */
        ROM_LOAD16_BYTE( "262-c3.bin", 0x1000000, 0x800000, CRC(4c7ec427) ) /* Plane 0,1 */
        ROM_LOAD16_BYTE( "262-c4.bin", 0x1000001, 0x800000, CRC(1d237aa6) ) /* Plane 2,3 */
        ROM_LOAD16_BYTE( "262-c5.bin", 0x2000000, 0x800000, CRC(c2256db5) ) /* Plane 0,1 */
        ROM_LOAD16_BYTE( "262-c6.bin", 0x2000001, 0x800000, CRC(8d6565a9) ) /* Plane 2,3 */
        ROM_LOAD16_BYTE( "2k1-c7.rom", 0x3000000, 0x800000, CRC(ef682ed2) ) /* Plane 0,1 */
        ROM_LOAD16_BYTE( "262-c8.bin", 0x3000001, 0x800000, CRC(954d0e16) ) /* Plane 2,3 */
ROM_END

kof2001n的:
ROM_START( kof2001n )      /*游戏名,*/
        ROM_REGION( 0x500000, REGION_CPU1, 0 )
        ROM_LOAD16_WORD_SWAP( "262_p1n.rom", 0x000000, 0x100000, CRC(不同的crc值))
        其他的相同.......................


kof2001的gameb
GAMEB( 2001, kof2001, neogeo,  neogeo,  neogeo, neogeo,  neogeo, ROT0, "Eolith / SNK", "The King of Fighters 2001" )

kof2001n的gameb
GAMEB( 2001, kof2001n, kof2001,  neogeo,  neogeo, neogeo,  neogeo, ROT0, "Eolith / SNK", "The King of 2001名字.........." )

以下的一段针对加密rom
注意,如果你的rom没有加密,那么不需要写DRIVER_INIT,若是加密的,则要在DRIVER_INIT段写入DRIVER_INIT,(解密rom不需要,加入可能游戏会出错)

DRIVER_INIT( kof2001 )  /*kof2001是DRIVER_INIT名*/
{
        neogeo_fix_bank_type = 0;
        kof2000_neogeo_gfx_decrypt(0x1e);
        init_neogeo();
}

然后gameb如下
GAMEB( 2001, kof2001, neogeo,  neogeo,  neogeo, neogeo,  kof2001, ROT0, "Eolith / SNK", "The King of Fighters 2001" )


以上修改是针对neogeo.c 的

然后需要在src/driver.c加入以下字段

DRIVER( kof2001 ) /*加密rom*/
DRIVER( kof2001n ) /* 解密rom*/


/*****此时这个kof2001.zip就是父rom,kof2001n就是子rom


编译后就好了
执行加密游戏
xmame.x11 kof2001
执行解密游戏
xmame.x11 kof2001n


以上仅是举例,具体参照自己的rom写
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 12:23 , Processed in 0.091360 second(s), 13 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表