|
发表于 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写 |
|