mirror of
https://github.com/holub/mame
synced 2025-05-28 16:43:04 +03:00
Naomi updates [Deunan Knute, CaH4e3, R. Belmont]
- Added protection emulation for Cosmic Smash - Added protection emulation for Capcom vs. SNK (cartridge ver) New games added as GAME_NOT_WORKING ----------------------------------- Capcom vs. SNK Millenium Fight 2000 (000904) [Deunan Knute] Guru's old capsnk dump was 000804, the new one is 000904 so it became the parent. The protection hookup in Cosmic Smash passes if you step it in the debugger but it doesn't visibly improve the game so something else may be wrong with it. capsnk and capsnka appear to be fully playable. ROMs and protection data in roms/unemulated/Sega/Naomi
This commit is contained in:
parent
48197fcc9d
commit
04c47e4cbe
@ -1965,25 +1965,102 @@ IC13 64M A12E 8DE4
|
||||
|
||||
*/
|
||||
|
||||
// ver 000904
|
||||
ROM_START( capsnk )
|
||||
ROM_REGION( 0x200000, "maincpu", 0)
|
||||
NAOMI_BIOS
|
||||
|
||||
ROM_REGION( 0x7000000, "user1", ROMREGION_ERASEFF)
|
||||
ROM_LOAD("epr-23511a.ic22", 0x00000, 0x400000, CRC(fe00650f) SHA1(ca8e9e9178ed2b6598bdea83be1bf0dd7aa509f9) )
|
||||
ROM_LOAD("ic1", 0x0800000, 0x0800000, NO_DUMP )
|
||||
ROM_LOAD("ic2", 0x1000000, 0x0800000, NO_DUMP )
|
||||
ROM_LOAD("ic3", 0x1800000, 0x0800000, NO_DUMP )
|
||||
ROM_LOAD("ic4", 0x2000000, 0x0800000, NO_DUMP )
|
||||
ROM_LOAD("ic5", 0x2800000, 0x0800000, NO_DUMP )
|
||||
ROM_LOAD("ic6", 0x3000000, 0x0800000, NO_DUMP )
|
||||
ROM_LOAD("ic7", 0x3800000, 0x0800000, NO_DUMP )
|
||||
ROM_LOAD("ic8", 0x4000000, 0x0800000, NO_DUMP )
|
||||
ROM_LOAD("ic9", 0x4800000, 0x0800000, NO_DUMP )
|
||||
ROM_LOAD("ic10",0x5000000, 0x0800000, NO_DUMP )
|
||||
ROM_LOAD("ic11",0x5800000, 0x0800000, NO_DUMP )
|
||||
ROM_LOAD("ic12",0x6000000, 0x0800000, NO_DUMP )
|
||||
ROM_LOAD("ic13",0x6800000, 0x0800000, NO_DUMP )
|
||||
ROM_LOAD( "epr-23511.ic22", 0x000000, 0x400000, CRC(3dbf8eb2) SHA1(1f7b89ba99e018cc85022fa852d56d4e345e1bd2) )
|
||||
ROM_LOAD( "mpr-23498.ic1", 0x800000, 0x800000, CRC(ff7918b9) SHA1(5fa548939b83d307d6047931b0af405e20de04f6) )
|
||||
ROM_LOAD( "mpr-23499,ic2", 0x1000000, 0x800000, CRC(5d2d9439) SHA1(6fd24a3966f04a8175e1b1ec4560de6722b621d1) )
|
||||
ROM_LOAD( "mpr-23500,ic3", 0x1800000, 0x800000, CRC(bc58de9e) SHA1(8db2dfa4f1e0bbd7f5b3c8050d53533535750399) )
|
||||
ROM_LOAD( "mpr-23501,ic4", 0x2000000, 0x800000, CRC(f938123c) SHA1(058b35301e3ef81ac903f18f6a034e9b282223c3) )
|
||||
ROM_LOAD( "mpr-23502,ic5", 0x2800000, 0x800000, CRC(d58cbab2) SHA1(638a3fec531c200a909228477955de82d6352fcc) )
|
||||
ROM_LOAD( "mpr-23503,ic6", 0x3000000, 0x800000, CRC(66a6a80f) SHA1(f6d413f3631e43b3a5067fefc7252f2122773110) )
|
||||
ROM_LOAD( "mpr-23504,ic7", 0x3800000, 0x800000, CRC(29c1fe16) SHA1(af96d809f8160d45f061120dfe2df36d6c940cb9) )
|
||||
ROM_LOAD( "mpr-23505,ic8", 0x4000000, 0x800000, CRC(451816b2) SHA1(38af527ca7987019fa4727d2db715f6bd31f366d) )
|
||||
ROM_LOAD( "mpr-23506,ic9", 0x4800000, 0x800000, CRC(5031ef58) SHA1(a9cbe1ee05e729519175020d9560954a9253ba5b) )
|
||||
ROM_LOAD( "mpr-23507,ic10", 0x5000000, 0x800000, CRC(d77b0783) SHA1(2ac6584922754bfe85bff8554ddc83736b095c7a) )
|
||||
ROM_LOAD( "mpr-23508,ic11", 0x5800000, 0x800000, CRC(4c24c946) SHA1(f088d0f0e2ccf3d657ee68791397e3edaa0c79c0) )
|
||||
ROM_LOAD( "mpr-23509,ic12", 0x6000000, 0x800000, CRC(38379fc1) SHA1(82e3a12615709e974a6635d25d5f17ef7fe8ac78) )
|
||||
ROM_LOAD( "mpr-23510,ic13", 0x6800000, 0x800000, CRC(38523873) SHA1(5d25ada6cba8c9bbf5f9e90aa3599e796e4e1727) )
|
||||
|
||||
// trojaned protection data (filename is address read from)
|
||||
ROM_REGION( 0x200000, "naomibd_prot", ROMREGION_ERASE00 )
|
||||
ROM_LOAD( "a63a9260.bin", 0x000000, 0x008760, CRC(54efa963) SHA1(41874253567da56441d83de041f6e82111977fa4) )
|
||||
ROM_LOAD( "a63b19c0.bin", 0x010000, 0x008260, CRC(f0ca72ef) SHA1(87fc4654afaf763cdb3ea5b4501948bfe7b9e9dc) )
|
||||
ROM_LOAD( "a63b9c20.bin", 0x020000, 0x00a0c0, CRC(92eec22c) SHA1(c7267503a828e852edeb26f68f3f4b685b9b163e) )
|
||||
ROM_LOAD( "a63c3ce0.bin", 0x030000, 0x00d7e0, CRC(93201f32) SHA1(5aca43776306a5a5ecd68a7e8699a724703f329a) )
|
||||
ROM_LOAD( "a63d14c0.bin", 0x040000, 0x00a8e0, CRC(fb2e9f7b) SHA1(ae4fc9a82eafb5b511485eef1d65ee9d3adc27b6) )
|
||||
ROM_LOAD( "a63dbda0.bin", 0x050000, 0x008460, CRC(b4b74624) SHA1(6ae2f5d69e45d295a3d0dcf295b1fb76be201e8e) )
|
||||
ROM_LOAD( "a63e4200.bin", 0x060000, 0x00b500, CRC(69ee516d) SHA1(f358aff12b826d1685199a9d5950abd121b54192) )
|
||||
ROM_LOAD( "a63ef700.bin", 0x070000, 0x00cec0, CRC(b2f4df7e) SHA1(4aafcf65e3fc193ee191f06ffcce37e52fc12364) )
|
||||
ROM_LOAD( "a63fc5c0.bin", 0x080000, 0x004cfc, CRC(1d534f98) SHA1(32afbb1d1fd1abba9e49b7b4bcf310860e4e47dc) )
|
||||
ROM_LOAD( "a643a120.bin", 0x090000, 0x00d6e0, CRC(27a0deb7) SHA1(c8da2e212ca8f5985d9336e8200c3382d6d373a5) )
|
||||
ROM_LOAD( "a6447800.bin", 0x0a0000, 0x00c920, CRC(42c9e4b1) SHA1(d7ef0d23956b795fad888f49a4dc42d74899de71) )
|
||||
ROM_LOAD( "a6454120.bin", 0x0b0000, 0x00a540, CRC(69321860) SHA1(675767e9fd18a0d72de2decb68acd7d500b11de2) )
|
||||
ROM_LOAD( "a645e660.bin", 0x0c0000, 0x00ccc0, CRC(4919083d) SHA1(89dfc2837e5298dc691350ac470bc76557657736) )
|
||||
ROM_LOAD( "a646b320.bin", 0x0d0000, 0x00c120, CRC(a66da245) SHA1(48d543244cdc52887131e734e0643c69f9368681) )
|
||||
ROM_LOAD( "a6477440.bin", 0x0e0000, 0x0097a8, CRC(6289f812) SHA1(574459f7c79dd757ae94f8e06dbcefa5b203e510) )
|
||||
ROM_LOAD( "a6480c00.bin", 0x0f0000, 0x00eca0, CRC(a4128a65) SHA1(35625df0109a72cb508bb4a89641bcb86aa697fb) )
|
||||
ROM_LOAD( "a648f8a0.bin", 0x100000, 0x009520, CRC(45a06ed6) SHA1(e9ee99e329cf35a95440312b9d0bed40254481c2) )
|
||||
ROM_LOAD( "a6498dc0.bin", 0x110000, 0x009f40, CRC(2cea7b46) SHA1(5398b8f1ba01e21d5fee0b1c6a796ce396c9697f) )
|
||||
ROM_LOAD( "a64a2d00.bin", 0x120000, 0x00dbe0, CRC(9c75fc98) SHA1(aa1a630c77b29202a4045b1eade455f02f29b81a) )
|
||||
ROM_LOAD( "a64b08e0.bin", 0x130000, 0x00cb40, CRC(72ae0dd2) SHA1(f4e8face14dac9a5cc75c6ccdfb9911929e2d76e) )
|
||||
ROM_LOAD( "a64bd420.bin", 0x140000, 0x00e920, CRC(198e4aa9) SHA1(294b9c3f89b138898c3ef6db60ac5473516d74dc) )
|
||||
ROM_LOAD( "a64cbd40.bin", 0x150000, 0x005e94, CRC(cc4a4e58) SHA1(dce67374a8dc6d2c9b66c0cd7e68b4f9fdab3e27) )
|
||||
ROM_LOAD( "a6617be0.bin", 0x160000, 0x00e480, CRC(b7d6ce86) SHA1(c3d9a8cf6125c50a0129591d807bbb13a836a651) )
|
||||
ROM_LOAD( "a6626060.bin", 0x170000, 0x0078a8, CRC(8c258ad2) SHA1(51d4d227e037992905a7a7f2b5bb13646920670d) )
|
||||
ROM_END
|
||||
|
||||
// ver 000804
|
||||
ROM_START( capsnka )
|
||||
ROM_REGION( 0x200000, "maincpu", 0)
|
||||
NAOMI_BIOS
|
||||
|
||||
ROM_REGION( 0x7000000, "user1", ROMREGION_ERASEFF)
|
||||
ROM_LOAD( "epr23511a.ic22", 0x000000, 0x400000, CRC(fe00650f) SHA1(ca8e9e9178ed2b6598bdea83be1bf0dd7aa509f9) )
|
||||
ROM_LOAD( "mpr-23498.ic1", 0x800000, 0x800000, CRC(ff7918b9) SHA1(5fa548939b83d307d6047931b0af405e20de04f6) )
|
||||
ROM_LOAD( "mpr-23499,ic2", 0x1000000, 0x800000, CRC(5d2d9439) SHA1(6fd24a3966f04a8175e1b1ec4560de6722b621d1) )
|
||||
ROM_LOAD( "mpr-23500,ic3", 0x1800000, 0x800000, CRC(bc58de9e) SHA1(8db2dfa4f1e0bbd7f5b3c8050d53533535750399) )
|
||||
ROM_LOAD( "mpr-23501,ic4", 0x2000000, 0x800000, CRC(f938123c) SHA1(058b35301e3ef81ac903f18f6a034e9b282223c3) )
|
||||
ROM_LOAD( "mpr-23502,ic5", 0x2800000, 0x800000, CRC(d58cbab2) SHA1(638a3fec531c200a909228477955de82d6352fcc) )
|
||||
ROM_LOAD( "mpr-23503,ic6", 0x3000000, 0x800000, CRC(66a6a80f) SHA1(f6d413f3631e43b3a5067fefc7252f2122773110) )
|
||||
ROM_LOAD( "mpr-23504,ic7", 0x3800000, 0x800000, CRC(29c1fe16) SHA1(af96d809f8160d45f061120dfe2df36d6c940cb9) )
|
||||
ROM_LOAD( "mpr-23505,ic8", 0x4000000, 0x800000, CRC(451816b2) SHA1(38af527ca7987019fa4727d2db715f6bd31f366d) )
|
||||
ROM_LOAD( "mpr-23506,ic9", 0x4800000, 0x800000, CRC(5031ef58) SHA1(a9cbe1ee05e729519175020d9560954a9253ba5b) )
|
||||
ROM_LOAD( "mpr-23507,ic10", 0x5000000, 0x800000, CRC(d77b0783) SHA1(2ac6584922754bfe85bff8554ddc83736b095c7a) )
|
||||
ROM_LOAD( "mpr-23508,ic11", 0x5800000, 0x800000, CRC(4c24c946) SHA1(f088d0f0e2ccf3d657ee68791397e3edaa0c79c0) )
|
||||
ROM_LOAD( "mpr-23509,ic12", 0x6000000, 0x800000, CRC(38379fc1) SHA1(82e3a12615709e974a6635d25d5f17ef7fe8ac78) )
|
||||
ROM_LOAD( "mpr-23510,ic13", 0x6800000, 0x800000, CRC(38523873) SHA1(5d25ada6cba8c9bbf5f9e90aa3599e796e4e1727) )
|
||||
|
||||
// trojaned protection data (filename is address read from)
|
||||
ROM_REGION( 0x200000, "naomibd_prot", ROMREGION_ERASE00 )
|
||||
ROM_LOAD( "a63a9260.bin", 0x000000, 0x008760, CRC(54efa963) SHA1(41874253567da56441d83de041f6e82111977fa4) )
|
||||
ROM_LOAD( "a63b19c0.bin", 0x010000, 0x008260, CRC(f0ca72ef) SHA1(87fc4654afaf763cdb3ea5b4501948bfe7b9e9dc) )
|
||||
ROM_LOAD( "a63b9c20.bin", 0x020000, 0x00a0c0, CRC(92eec22c) SHA1(c7267503a828e852edeb26f68f3f4b685b9b163e) )
|
||||
ROM_LOAD( "a63c3ce0.bin", 0x030000, 0x00d7e0, CRC(93201f32) SHA1(5aca43776306a5a5ecd68a7e8699a724703f329a) )
|
||||
ROM_LOAD( "a63d14c0.bin", 0x040000, 0x00a8e0, CRC(fb2e9f7b) SHA1(ae4fc9a82eafb5b511485eef1d65ee9d3adc27b6) )
|
||||
ROM_LOAD( "a63dbda0.bin", 0x050000, 0x008460, CRC(b4b74624) SHA1(6ae2f5d69e45d295a3d0dcf295b1fb76be201e8e) )
|
||||
ROM_LOAD( "a63e4200.bin", 0x060000, 0x00b500, CRC(69ee516d) SHA1(f358aff12b826d1685199a9d5950abd121b54192) )
|
||||
ROM_LOAD( "a63ef700.bin", 0x070000, 0x00cec0, CRC(b2f4df7e) SHA1(4aafcf65e3fc193ee191f06ffcce37e52fc12364) )
|
||||
ROM_LOAD( "a63fc5c0.bin", 0x080000, 0x004cfc, CRC(1d534f98) SHA1(32afbb1d1fd1abba9e49b7b4bcf310860e4e47dc) )
|
||||
ROM_LOAD( "a643a120.bin", 0x090000, 0x00d6e0, CRC(27a0deb7) SHA1(c8da2e212ca8f5985d9336e8200c3382d6d373a5) )
|
||||
ROM_LOAD( "a6447800.bin", 0x0a0000, 0x00c920, CRC(42c9e4b1) SHA1(d7ef0d23956b795fad888f49a4dc42d74899de71) )
|
||||
ROM_LOAD( "a6454120.bin", 0x0b0000, 0x00a540, CRC(69321860) SHA1(675767e9fd18a0d72de2decb68acd7d500b11de2) )
|
||||
ROM_LOAD( "a645e660.bin", 0x0c0000, 0x00ccc0, CRC(4919083d) SHA1(89dfc2837e5298dc691350ac470bc76557657736) )
|
||||
ROM_LOAD( "a646b320.bin", 0x0d0000, 0x00c120, CRC(a66da245) SHA1(48d543244cdc52887131e734e0643c69f9368681) )
|
||||
ROM_LOAD( "a6477440.bin", 0x0e0000, 0x0097a8, CRC(6289f812) SHA1(574459f7c79dd757ae94f8e06dbcefa5b203e510) )
|
||||
ROM_LOAD( "a6480c00.bin", 0x0f0000, 0x00eca0, CRC(a4128a65) SHA1(35625df0109a72cb508bb4a89641bcb86aa697fb) )
|
||||
ROM_LOAD( "a648f8a0.bin", 0x100000, 0x009520, CRC(45a06ed6) SHA1(e9ee99e329cf35a95440312b9d0bed40254481c2) )
|
||||
ROM_LOAD( "a6498dc0.bin", 0x110000, 0x009f40, CRC(2cea7b46) SHA1(5398b8f1ba01e21d5fee0b1c6a796ce396c9697f) )
|
||||
ROM_LOAD( "a64a2d00.bin", 0x120000, 0x00dbe0, CRC(9c75fc98) SHA1(aa1a630c77b29202a4045b1eade455f02f29b81a) )
|
||||
ROM_LOAD( "a64b08e0.bin", 0x130000, 0x00cb40, CRC(72ae0dd2) SHA1(f4e8face14dac9a5cc75c6ccdfb9911929e2d76e) )
|
||||
ROM_LOAD( "a64bd420.bin", 0x140000, 0x00e920, CRC(198e4aa9) SHA1(294b9c3f89b138898c3ef6db60ac5473516d74dc) )
|
||||
ROM_LOAD( "a64cbd40.bin", 0x150000, 0x005e94, CRC(cc4a4e58) SHA1(dce67374a8dc6d2c9b66c0cd7e68b4f9fdab3e27) )
|
||||
ROM_LOAD( "a6617be0.bin", 0x160000, 0x00e480, CRC(b7d6ce86) SHA1(c3d9a8cf6125c50a0129591d807bbb13a836a651) )
|
||||
ROM_LOAD( "a6626060.bin", 0x170000, 0x0078a8, CRC(8c258ad2) SHA1(51d4d227e037992905a7a7f2b5bb13646920670d) )
|
||||
ROM_END
|
||||
|
||||
/*
|
||||
@ -2023,6 +2100,9 @@ ROM_START( csmash )
|
||||
ROM_LOAD("mpr-23425.ic6", 0x3000000, 0x0800000, CRC(47f51da2) SHA1(af5ecd460114caed3a00157ffd3a2df0fbf348c0) )
|
||||
ROM_LOAD("mpr-23426.ic7", 0x3800000, 0x0800000, CRC(7f91b13f) SHA1(2d534f77291ebfedc011bf0e803a1b9243fb477f) )
|
||||
ROM_LOAD("mpr-23427.ic8", 0x4000000, 0x0800000, CRC(5851d525) SHA1(1cb1073542d75a3bcc0d363ed31d49bcaf1fd494) )
|
||||
|
||||
ROM_REGION( 0x200000, "naomibd_prot", ROMREGION_ERASE00 )
|
||||
ROM_COPY("user1", 0, 0, 0x200000)
|
||||
ROM_END
|
||||
|
||||
ROM_START( csmasho )
|
||||
@ -2040,6 +2120,9 @@ ROM_START( csmasho )
|
||||
ROM_LOAD("mpr-23425.ic6", 0x3000000, 0x0800000, CRC(47f51da2) SHA1(af5ecd460114caed3a00157ffd3a2df0fbf348c0) )
|
||||
ROM_LOAD("mpr-23426.ic7", 0x3800000, 0x0800000, CRC(7f91b13f) SHA1(2d534f77291ebfedc011bf0e803a1b9243fb477f) )
|
||||
ROM_LOAD("mpr-23427.ic8", 0x4000000, 0x0800000, CRC(5851d525) SHA1(1cb1073542d75a3bcc0d363ed31d49bcaf1fd494) )
|
||||
|
||||
ROM_REGION( 0x200000, "naomibd_prot", ROMREGION_ERASE00 )
|
||||
ROM_COPY("user1", 0, 0, 0x200000)
|
||||
ROM_END
|
||||
|
||||
/*
|
||||
@ -3667,7 +3750,7 @@ time to go to sleep
|
||||
#ifdef UNUSED_FUNCTION
|
||||
// rather crude function to write out a key file
|
||||
void naomi_write_keyfile(void)
|
||||
{
|
||||
q{
|
||||
// default key structure
|
||||
UINT8 response[10][8] = {
|
||||
{ ':', 0x70, 0x1f, 0x71, 0x1f, 0x00, 0x00, 0x00 }, // response to kayjyo!?
|
||||
@ -3788,13 +3871,14 @@ GAME( 1998, naomi, 0, naomi, naomi, naomi, ROT0, "Sega",
|
||||
/* 0005C */ GAME( 1999, spawn, naomi, naomi, naomi, naomi, ROT0, "Capcom", "Spawn (JPN, USA, EUR, ASI, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
|
||||
/* 0007C */ GAME( 2000, mvsc2, naomi, naomi, naomi, naomi, ROT0, "Capcom", "Marvel vs. Capcom 2 (JPN, USA, EUR, ASI, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
|
||||
/* 0008C */ GAME( 2000, pstone2, naomi, naomi, naomi, naomi, ROT0, "Capcom", "Power Stone 2 (JPN, USA, EUR, ASI, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
|
||||
/* 841-0011C */ GAME( 2000, capsnk, naomi, naomi, naomi, naomi, ROT0, "Capcom / SNK", "Capcom Vs. SNK Millennium Fight 2000 (000904 JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
|
||||
/* 841-0011C */ GAME( 2000, capsnka, capsnk, naomi, naomi, naomi, ROT0, "Capcom / SNK", "Capcom Vs. SNK Millennium Fight 2000 (000804 JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
|
||||
/* 0012C */ GAME( 2000, cspike, naomi, naomi, naomi, naomi, ROT0, "Psikyo / Capcom", "Gun Spike (JPN) / Cannon Spike (USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
|
||||
/* 0013C */ GAME( 2000, ggx, naomi, naomi, naomi, naomi, ROT0, "Arc System Works","Guilty Gear X (JPN)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
|
||||
/* 0016 */ GAME( 2000, deathcox, naomi, naomi, naomi, naomi, ROT0, "Ecole", "Death Crimson OX (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
|
||||
/* xxxx */ GAME( 2001, hmgeo, naomi, naomi, naomi, naomi, ROT0, "Capcom", "Heavy Metal Geomatrix (JPN, USA, EUR, ASI, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
|
||||
|
||||
/* Incomplete Dumps (just the program rom IC22) */
|
||||
/* 841-0011C */ GAME( 2000, capsnk, naomi, naomi, naomi, naomi, ROT0, "Capcom / SNK", "Capcom Vs. SNK Millennium Fight 2000 (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
|
||||
/* 840-0083C */ GAME( 1999, derbyoc2, naomi, naomi, naomi, naomi, ROT0, "Sega", "Derby Owners Club II (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
|
||||
/* 841-0014C */ GAME( 2000, gwing2, naomi, naomi, naomi, naomi, ROT0, "Takumi / Capcom", "Giga Wing 2 (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
|
||||
/* 841-0015C */ GAME( 2000, pjustic, naomi, naomi, naomi, naomi, ROT0, "Capcom", "Moero Justice Gakuen (JPN) / Project Justice (USA, EXP, KOR, AUS) ", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
|
||||
|
@ -107,7 +107,8 @@ typedef struct _naomibd_config_table naomibd_config_table;
|
||||
struct _naomibd_config_table
|
||||
{
|
||||
const char *name;
|
||||
UINT32 transtbl[MAX_PROT_REGIONS*2];
|
||||
int reverse_bytes;
|
||||
UINT32 transtbl[MAX_PROT_REGIONS*3];
|
||||
};
|
||||
|
||||
typedef struct _naomibd_state naomibd_state;
|
||||
@ -126,19 +127,36 @@ struct _naomibd_state
|
||||
UINT32 prot_offset, prot_key;
|
||||
|
||||
UINT32 *prot_translate;
|
||||
int prot_reverse_bytes;
|
||||
};
|
||||
|
||||
// maps protection offsets to real addresses
|
||||
// format of array: encryption key, address written, address to switch out with. if key is -1 it's ignored and address written is the match.
|
||||
// if key is not -1, it's used for the match instead of the address written.
|
||||
static naomibd_config_table naomibd_translate_tbl[] =
|
||||
{
|
||||
{ "doa2", { 0x500, 0, 0x20504, 0x20000, 0x40508, 0x40000, 0x6050c, 0x60000, 0x80510, 0x80000,
|
||||
0xa0514, 0xa0000, 0xc0518, 0xc0000, 0xe051c, 0xe0000, 0x100520,0x100000, 0x118a3a, 0x120000,
|
||||
0x12c0d8, 0x140000, 0x147e22, 0x160000, 0x1645ce, 0x180000, 0x17c6b2, 0x1a0000,
|
||||
0x19902e, 0x1c0000, 0x1b562a, 0x1e0000, 0xffffffff, 0xffffffff } },
|
||||
{ "doa2m", { 0x500, 0, 0x20504, 0x20000, 0x40508, 0x40000, 0x6050c, 0x60000, 0x80510, 0x80000,
|
||||
0xa0514, 0xa0000, 0xc0518, 0xc0000, 0xe051c, 0xe0000, 0x100520,0x100000, 0x11a5b4, 0x120000,
|
||||
0x12e7c4, 0x140000, 0x1471f6, 0x160000, 0x1640c4, 0x180000, 0x1806ca, 0x1a0000,
|
||||
0x199df4, 0x1c0000, 0x1b5d0a, 0x1e0000, 0xffffffff, 0xffffffff } },
|
||||
{ "doa2", 0, { -1, 0x500, 0, -1, 0x20504, 0x20000, -1, 0x40508, 0x40000, -1, 0x6050c, 0x60000, -1, 0x80510, 0x80000,
|
||||
-1, 0xa0514, 0xa0000, -1, 0xc0518, 0xc0000, -1, 0xe051c, 0xe0000, -1, 0x100520,0x100000, -1, 0x118a3a, 0x120000,
|
||||
-1, 0x12c0d8, 0x140000, -1, 0x147e22, 0x160000, -1, 0x1645ce, 0x180000, -1, 0x17c6b2, 0x1a0000,
|
||||
-1, 0x19902e, 0x1c0000, -1, 0x1b562a, 0x1e0000, -1, 0xffffffff, 0xffffffff } },
|
||||
{ "doa2m", 0, { -1, 0x500, 0, -1, 0x20504, 0x20000, -1, 0x40508, 0x40000, -1, 0x6050c, 0x60000, -1, 0x80510, 0x80000,
|
||||
-1, 0xa0514, 0xa0000, -1, 0xc0518, 0xc0000, -1, 0xe051c, 0xe0000, -1, 0x100520,0x100000, -1, 0x11a5b4, 0x120000,
|
||||
-1, 0x12e7c4, 0x140000, -1, 0x1471f6, 0x160000, -1, 0x1640c4, 0x180000, -1, 0x1806ca, 0x1a0000,
|
||||
-1, 0x199df4, 0x1c0000, -1, 0x1b5d0a, 0x1e0000, 0xffffffff, 0xffffffff } },
|
||||
{ "csmash", 1, { -1, 0x2000000, 0xbb614, 0xffffffff, 0xffffffff, 0xffffffff } },
|
||||
{ "csmasho", 1, { -1, 0x2000000, 0xbb5b4, 0xffffffff, 0xffffffff, 0xffffffff } },
|
||||
{ "capsnk", 0, { 0x8c2a, 0, 0, 0x3d3e, 0, 0x10000, 0x65b7, 0, 0x20000, 0x5896, 0, 0x30000, 0x16d2, 0, 0x40000,
|
||||
0x9147, 0, 0x50000, 0x7ac, 0, 0x60000, 0xee67, 0, 0x70000, 0xeb63, 0, 0x80000, 0x2a04, 0, 0x90000,
|
||||
0x3e41, 0, 0xa0000, 0xb7af, 0, 0xb0000, 0x9651, 0, 0xc0000, 0xd208, 0, 0xd0000, 0x4769, 0, 0xe0000,
|
||||
0xad8c, 0, 0xf0000, 0x923d, 0, 0x100000, 0x4a65, 0, 0x110000, 0x9958, 0, 0x120000, 0x8216, 0, 0x130000,
|
||||
0xaa91, 0, 0x140000, 0xd007, 0, 0x150000, 0xead, 0, 0x160000, 0x492, 0, 0x170000,
|
||||
0xffffffff, 0xffffffff, 0xffffffff } },
|
||||
{ "capsnka", 0, { 0x8c2a, 0, 0, 0x3d3e, 0, 0x10000, 0x65b7, 0, 0x20000, 0x5896, 0, 0x30000, 0x16d2, 0, 0x40000,
|
||||
0x9147, 0, 0x50000, 0x7ac, 0, 0x60000, 0xee67, 0, 0x70000, 0xeb63, 0, 0x80000, 0x2a04, 0, 0x90000,
|
||||
0x3e41, 0, 0xa0000, 0xb7af, 0, 0xb0000, 0x9651, 0, 0xc0000, 0xd208, 0, 0xd0000, 0x4769, 0, 0xe0000,
|
||||
0xad8c, 0, 0xf0000, 0x923d, 0, 0x100000, 0x4a65, 0, 0x110000, 0x9958, 0, 0x120000, 0x8216, 0, 0x130000,
|
||||
0xaa91, 0, 0x140000, 0xd007, 0, 0x150000, 0xead, 0, 0x160000, 0x492, 0, 0x170000,
|
||||
0xffffffff, 0xffffffff, 0xffffffff } },
|
||||
};
|
||||
|
||||
/***************************************************************************
|
||||
@ -251,13 +269,20 @@ READ64_DEVICE_HANDLER( naomibd_r )
|
||||
UINT8 *prot = (UINT8 *)v->protdata;
|
||||
UINT32 byte_offset = v->prot_offset*2;
|
||||
|
||||
if (!prot)
|
||||
if (v->prot_translate == NULL)
|
||||
{
|
||||
logerror("naomibd: reading protection data, but none was supplied\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (v->prot_reverse_bytes)
|
||||
{
|
||||
ret = (UINT64)(prot[byte_offset+1] | (prot[byte_offset]<<8));
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = (UINT64)(prot[byte_offset] | (prot[byte_offset+1]<<8));
|
||||
}
|
||||
|
||||
v->prot_offset++;
|
||||
}
|
||||
@ -389,25 +414,46 @@ WRITE64_DEVICE_HANDLER( naomibd_w )
|
||||
case 0x1fffc: // decryption key
|
||||
v->prot_key = data;
|
||||
|
||||
mame_printf_verbose("Protection: set up read @ %x, key %x [%s]\n", v->prot_offset, v->prot_key, cpuexec_describe_context(device->machine));
|
||||
mame_printf_verbose("Protection: set up read @ %x, key %x (PIO %x DMA %x) [%s]\n", v->prot_offset, v->prot_key, v->rom_offset, v->dma_offset, cpuexec_describe_context(device->machine));
|
||||
|
||||
// translate address if necessary
|
||||
if (v->prot_translate != NULL)
|
||||
{
|
||||
i = 0;
|
||||
while (v->prot_translate[i] != 0xffffffff)
|
||||
while (v->prot_translate[i+1] != 0xffffffff)
|
||||
{
|
||||
if (v->prot_translate[i] == (v->prot_offset*2))
|
||||
// should we match by key or address?
|
||||
if (v->prot_translate[i] != -1)
|
||||
{
|
||||
mame_printf_verbose("Protection: got offset %x, translated to %x\n", v->prot_offset, v->prot_translate[i+1]);
|
||||
v->prot_offset = v->prot_translate[i+1]/2;
|
||||
if (v->prot_translate[i] == v->prot_key)
|
||||
{
|
||||
mame_printf_verbose("Protection: got key %x, translated to %x\n", v->prot_key, v->prot_translate[i+2]);
|
||||
v->prot_offset = v->prot_translate[i+2]/2;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
i += 2;
|
||||
i+= 3;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (v->prot_translate[i+1] == (v->prot_offset*2))
|
||||
{
|
||||
mame_printf_verbose("Protection: got offset %x, translated to %x\n", v->prot_offset, v->prot_translate[i+2]);
|
||||
v->prot_offset = v->prot_translate[i+2]/2;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
i += 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
mame_printf_verbose("naomibd: protection not handled for this game\n");
|
||||
}
|
||||
break;
|
||||
|
||||
@ -688,6 +734,7 @@ static DEVICE_START( naomibd )
|
||||
if (!strcmp(device->machine->gamedrv->name, naomibd_translate_tbl[i].name))
|
||||
{
|
||||
v->prot_translate = &naomibd_translate_tbl[i].transtbl[0];
|
||||
v->prot_reverse_bytes = naomibd_translate_tbl[i].reverse_bytes;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -4369,8 +4369,9 @@ BOMULEUL CHAJARA SEGA ST-V 1997/04/11
|
||||
DRIVER( ggx ) /* 2000.07 Guilty Gear X */
|
||||
DRIVER( slasho ) /* 2000.07 Slashout */
|
||||
DRIVER( slashout )
|
||||
DRIVER( capsnk ) /* 2000.08 Capcom vs. SNK Millenium Fight 2000 */
|
||||
DRIVER( capsnka ) /* 2000.08 Capcom vs. SNK Millenium Fight 2000 */
|
||||
/* 2000.08 Tokyo Bus Annai */
|
||||
DRIVER( capsnk ) /* 2000.09 Capcom vs. SNK Millenium Fight 2000 */
|
||||
DRIVER( gram2000 ) /* 2000.09 Giant Gram 2000 Zen Nippon Pro-wres 3 */
|
||||
/* 2000.09 Nittere Shiki! Mirai Yosou Studio */
|
||||
/* 2000.10 Crackin' DJ */
|
||||
|
Loading…
Reference in New Issue
Block a user