From 119f5ccbc120ef45d8e3be8e31dff78134e4e135 Mon Sep 17 00:00:00 2001 From: Scott Stone Date: Thu, 24 Feb 2011 18:08:15 +0000 Subject: [PATCH] Added redumps of bad roms for DDP3. Added new clone (kov2101). No whatsnew needed. New Clones Added ---------------- Knights of Valour 2 / Sangoku Senki 2 (ver. 101, 101, 100HK) --- src/mame/drivers/pgm.c | 65 +++++++++++++++++++++++++++++-------- src/mame/includes/pgm.h | 1 - src/mame/machine/pgmcrypt.c | 60 +--------------------------------- src/mame/mamedriv.c | 1 + 4 files changed, 53 insertions(+), 74 deletions(-) diff --git a/src/mame/drivers/pgm.c b/src/mame/drivers/pgm.c index 8d4afe4e80a..7a347826bd6 100644 --- a/src/mame/drivers/pgm.c +++ b/src/mame/drivers/pgm.c @@ -3244,6 +3244,37 @@ ROM_START( kov2102 ) ROM_LOAD( "m1200.rom", 0x800000, 0x800000, CRC(b0d88720) SHA1(44ab137e3f8e15b7cb5697ffbd9b1143d8210c4f) ) ROM_END +ROM_START( kov2101 ) + ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */ + PGM_68K_BIOS + ROM_LOAD16_WORD_SWAP( "u18.101", 0x100000, 0x400000, CRC(c9926f35) SHA1(a9c72d0c5d239164107894c7d3fffe4af29ed201) ) + + ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */ + ROM_LOAD( "kov2_v100_hongkong.asic", 0x000000, 0x04000, CRC(e0d7679f) SHA1(e1c2d127eba4ddbeb8ad173c55b90ac1467e1ca8) ) + + ROM_REGION32_LE( 0x400000, "user1", 0 ) /* Protection Data (encrypted external ARM data) */ + ROM_LOAD( "u19.101", 0x000000, 0x200000, CRC(8c35f2fe) SHA1(d4858f97fcfad0f342fccbc9cf1590276cc3c69c) ) + + ROM_REGION( 0xc00000, "tiles", 0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */ + PGM_VIDEO_BIOS + ROM_LOAD( "t1200.rom", 0x180000, 0x800000, CRC(d7e26609) SHA1(bdad810f82fcf1d50a8791bdc495374ec5a309c6) ) + + ROM_REGION( 0x2800000, "sprcol", 0 ) /* Sprite Colour Data */ + ROM_LOAD( "a1200.rom", 0x0000000, 0x0800000, CRC(ceeb81d8) SHA1(5476729443fc1bc9593ae10fbf7cbc5d7290b017) ) + ROM_LOAD( "a1201.rom", 0x0800000, 0x0800000, CRC(82f0a878) SHA1(ddd13e404252a71de1b2b3b974b910f899f51c38) ) + ROM_LOAD( "a1202.rom", 0x1000000, 0x0800000, CRC(4bb92fae) SHA1(f0b6d72ed425de1c69dc8f8d5795ea760a4a59b0) ) + ROM_LOAD( "a1203.rom", 0x1800000, 0x0800000, CRC(e73cb627) SHA1(4c6e48b845a5d1e8f9899010fbf273d54c2b8899) ) + ROM_LOAD( "a1204.rom", 0x2000000, 0x0800000, CRC(27527099) SHA1(e23cf366bdeaca1e009a5cec6b13164310a34384) ) + + ROM_REGION( 0x1000000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */ + ROM_LOAD( "b1200.rom", 0x0000000, 0x0800000, CRC(bed7d994) SHA1(019dfba8154256d64cd249eb0fa4c451edce34b8) ) + ROM_LOAD( "b1201.rom", 0x0800000, 0x0800000, CRC(f251eb57) SHA1(56a5fc14ab7822f83379cecb26638e5bb266349a) ) + + ROM_REGION( 0x1000000, "ics", 0 ) /* Samples - (8 bit mono 11025Hz) - */ + PGM_AUDIO_BIOS + ROM_LOAD( "m1200.rom", 0x800000, 0x800000, CRC(b0d88720) SHA1(44ab137e3f8e15b7cb5697ffbd9b1143d8210c4f) ) +ROM_END + ROM_START( kov2100 ) ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */ PGM_68K_BIOS @@ -4171,14 +4202,14 @@ ROM_START( ddp3 ) ROM_REGION( 0x1c00000, "sprcol", 0 ) /* Sprite Colour Data */ ROM_LOAD( "a04401w064.u7", 0x0000000, 0x0800000, CRC(ed229794) SHA1(1cf1863495a18c7c7d277a9be43ec116b00960b0) ) //image-1 - ROM_LOAD( "a04402w064.u8", 0x0800000, 0x0800000, BAD_DUMP CRC(f7816273) SHA1(dfa76e29cfe4fc03a9c0e1d932b244581f3bb9c4) ) //image-2 - bad dump: checksum does not match rom label + ROM_LOAD( "a04402w064.u8", 0x0800000, 0x0800000, CRC(752167b0) SHA1(c33c3398dd8e479c9d5bd348924958a6aecbf0fc) ) //image-2 ROM_REGION( 0x1000000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */ - ROM_LOAD( "b04401w064.u1", 0x0000000, 0x0800000, BAD_DUMP CRC(830aab7d) SHA1(1829197457b401b203360a76ee345108df9c4b24) ) //bitmap-1 - bad dump: checksum does not match rom label + ROM_LOAD( "b04401w064.u1", 0x0000000, 0x0800000, CRC(8cbff066) SHA1(eef1cd566bc70ebf45f047e56026803d5c1dac43) ) //bitmap-1 ROM_REGION( 0x1000000, "ics", 0 ) /* Samples - (8 bit mono 11025Hz) - */ ROM_LOAD( "pgm_m01s.rom", 0x000000, 0x200000, CRC(45ae7159) SHA1(d3ed3ff3464557fd0df6b069b2e431528b0ebfa8) ) // same as standard PGM bios - ROM_LOAD( "m04401b032.u17", 0x400000, 0x400000, BAD_DUMP CRC(a118560c) SHA1(3e99bb2adbc9d464d79aa8723f0d40305ea821ca) ) //music-1 - bad dump: checksum does not match rom label + ROM_LOAD( "m04401b032.u17", 0x400000, 0x400000, CRC(5a0dbd76) SHA1(06ab202f6bd5ebfb35b9d8cc7a8fb83ec8840659) ) //music-1 ROM_REGION( 0x20000, "sram", 0 ) /* default settings */ ROM_LOAD( "ddp3_defaults.nv", 0x0000000, 0x020000, CRC(571e96c0) SHA1(348940c77ca348213331b85b9b1d3aabb96a528a) ) @@ -4202,14 +4233,14 @@ ROM_START( ddp3a ) ROM_REGION( 0x1c00000, "sprcol", 0 ) /* Sprite Colour Data */ ROM_LOAD( "a04401w064.u7", 0x0000000, 0x0800000, CRC(ed229794) SHA1(1cf1863495a18c7c7d277a9be43ec116b00960b0) ) //image-1 - ROM_LOAD( "a04402w064.u8", 0x0800000, 0x0800000, BAD_DUMP CRC(f7816273) SHA1(dfa76e29cfe4fc03a9c0e1d932b244581f3bb9c4) ) //image-2 - bad dump: checksum does not match rom label + ROM_LOAD( "a04402w064.u8", 0x0800000, 0x0800000, CRC(752167b0) SHA1(c33c3398dd8e479c9d5bd348924958a6aecbf0fc) ) //image-2 ROM_REGION( 0x1000000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */ - ROM_LOAD( "b04401w064.u1", 0x0000000, 0x0800000, BAD_DUMP CRC(830aab7d) SHA1(1829197457b401b203360a76ee345108df9c4b24) ) //bitmap-1 - bad dump: checksum does not match rom label + ROM_LOAD( "b04401w064.u1", 0x0000000, 0x0800000, CRC(8cbff066) SHA1(eef1cd566bc70ebf45f047e56026803d5c1dac43) ) //bitmap-1 ROM_REGION( 0x1000000, "ics", 0 ) /* Samples - (8 bit mono 11025Hz) - */ ROM_LOAD( "pgm_m01s.rom", 0x000000, 0x200000, CRC(45ae7159) SHA1(d3ed3ff3464557fd0df6b069b2e431528b0ebfa8) ) // same as standard PGM bios - ROM_LOAD( "m04401b032.u17", 0x400000, 0x400000, BAD_DUMP CRC(a118560c) SHA1(3e99bb2adbc9d464d79aa8723f0d40305ea821ca) ) //music-1 - bad dump: checksum does not match rom label + ROM_LOAD( "m04401b032.u17", 0x400000, 0x400000, CRC(5a0dbd76) SHA1(06ab202f6bd5ebfb35b9d8cc7a8fb83ec8840659) ) //music-1 ROM_REGION( 0x20000, "sram", 0 ) /* default settings */ ROM_LOAD( "ddp3_defaults.nv", 0x0000000, 0x020000, CRC(571e96c0) SHA1(348940c77ca348213331b85b9b1d3aabb96a528a) ) @@ -4232,14 +4263,14 @@ ROM_START( ddp3b ) ROM_REGION( 0x1c00000, "sprcol", 0 ) /* Sprite Colour Data */ ROM_LOAD( "a04401w064.u7", 0x0000000, 0x0800000, CRC(ed229794) SHA1(1cf1863495a18c7c7d277a9be43ec116b00960b0) ) //image-1 - ROM_LOAD( "a04402w064.u8", 0x0800000, 0x0800000, BAD_DUMP CRC(f7816273) SHA1(dfa76e29cfe4fc03a9c0e1d932b244581f3bb9c4) ) //image-2 - bad dump: checksum does not match rom label + ROM_LOAD( "a04402w064.u8", 0x0800000, 0x0800000, CRC(752167b0) SHA1(c33c3398dd8e479c9d5bd348924958a6aecbf0fc) ) //image-2 ROM_REGION( 0x1000000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */ - ROM_LOAD( "b04401w064.u1", 0x0000000, 0x0800000, BAD_DUMP CRC(830aab7d) SHA1(1829197457b401b203360a76ee345108df9c4b24) ) //bitmap-1 - bad dump: checksum does not match rom label + ROM_LOAD( "b04401w064.u1", 0x0000000, 0x0800000, CRC(8cbff066) SHA1(eef1cd566bc70ebf45f047e56026803d5c1dac43) ) //bitmap-1 ROM_REGION( 0x1000000, "ics", 0 ) /* Samples - (8 bit mono 11025Hz) - */ ROM_LOAD( "pgm_m01s.rom", 0x000000, 0x200000, CRC(45ae7159) SHA1(d3ed3ff3464557fd0df6b069b2e431528b0ebfa8) ) // same as standard PGM bios - ROM_LOAD( "m04401b032.u17", 0x400000, 0x400000, BAD_DUMP CRC(a118560c) SHA1(3e99bb2adbc9d464d79aa8723f0d40305ea821ca) ) //music-1 - bad dump: checksum does not match rom label + ROM_LOAD( "m04401b032.u17", 0x400000, 0x400000, CRC(5a0dbd76) SHA1(06ab202f6bd5ebfb35b9d8cc7a8fb83ec8840659) ) //music-1 ROM_REGION( 0x20000, "sram", 0 ) /* default settings */ ROM_LOAD( "ddp3_defaults.nv", 0x0000000, 0x020000, CRC(571e96c0) SHA1(348940c77ca348213331b85b9b1d3aabb96a528a) ) @@ -4263,21 +4294,26 @@ ROM_START( ddp3blk ) ROM_REGION( 0x1c00000, "sprcol", 0 ) /* Sprite Colour Data */ ROM_LOAD( "a04401w064.u7", 0x0000000, 0x0800000, CRC(ed229794) SHA1(1cf1863495a18c7c7d277a9be43ec116b00960b0) ) //image-1 - ROM_LOAD( "a04402w064.u8", 0x0800000, 0x0800000, BAD_DUMP CRC(f7816273) SHA1(dfa76e29cfe4fc03a9c0e1d932b244581f3bb9c4) ) //image-2 - bad dump: checksum does not match rom label + ROM_LOAD( "a04402w064.u8", 0x0800000, 0x0800000, CRC(752167b0) SHA1(c33c3398dd8e479c9d5bd348924958a6aecbf0fc) ) //image-2 ROM_REGION( 0x1000000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */ - ROM_LOAD( "b04401w064.u1", 0x0000000, 0x0800000, BAD_DUMP CRC(830aab7d) SHA1(1829197457b401b203360a76ee345108df9c4b24) ) //bitmap-1 - bad dump: checksum does not match rom label + ROM_LOAD( "b04401w064.u1", 0x0000000, 0x0800000, CRC(8cbff066) SHA1(eef1cd566bc70ebf45f047e56026803d5c1dac43) ) //bitmap-1 ROM_REGION( 0x1000000, "ics", 0 ) /* Samples - (8 bit mono 11025Hz) - */ ROM_LOAD( "pgm_m01s.rom", 0x000000, 0x200000, CRC(45ae7159) SHA1(d3ed3ff3464557fd0df6b069b2e431528b0ebfa8) ) // same as standard PGM bios - ROM_LOAD( "m04401b032.u17", 0x400000, 0x400000, BAD_DUMP CRC(a118560c) SHA1(3e99bb2adbc9d464d79aa8723f0d40305ea821ca) ) //music-1 - bad dump: checksum does not match rom label + ROM_LOAD( "m04401b032.u17", 0x400000, 0x400000, CRC(5a0dbd76) SHA1(06ab202f6bd5ebfb35b9d8cc7a8fb83ec8840659) ) //music-1 ROM_REGION( 0x20000, "sram", 0 ) /* NVRAM with factory programmed values - needed to boot */ ROM_LOAD( "ddp3blk_defaults.nv", 0x0000000, 0x020000, CRC(a1651904) SHA1(5b80d3c4c764895c40953a66161d4dd84f742604) ) ROM_END /* this is on PGM2, the main board contains 2 custom ASICs, no roms or other kind of bios, I don't know how compatible the - hardware is otherwise, but I imagine it's well protected */ + hardware is otherwise, but I imagine it's well protected + + they appear to have the main program inside a custom ASIC (probably ARM again) as the carts will boot to 'PROGRAM ERROR' + even if you strip them of program roms. + + */ ROM_START( orleg2 ) ROM_REGION( 0x800000, "maincpu", 0 ) /* 68000 Code */ ROM_LOAD16_WORD_SWAP( "xyj2_v104cn.u7", 0x000000, 0x800000, CRC(7c24a4f5) SHA1(3cd9f9264ef2aad0869afdf096e88eb8d74b2570) ) @@ -5304,7 +5340,7 @@ static DRIVER_INIT( dw2001 ) pgm_basic_init(machine); kovsh_latch_init(machine); - pgm_dw2001_decrypt(machine); + pgm_mm_decrypt(machine); // encryption is the same as martial masters mem16[0x11e90c / 2] = 0x4e71; mem16[0x11e90e / 2] = 0x4e71; @@ -5831,6 +5867,7 @@ GAME( 2000, kov2, pgm, kov2, sango, kov2, ROT0, "IGS GAME( 2000, kov2106, kov2, kov2, sango, kov2, ROT0, "IGS", "Knights of Valour 2 / Sangoku Senki 2 (ver. 106, 102, 100KH)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // 02/27/01 13:26:46 V106 (Ext. Arm V102, Int. Arm V100HK) GAME( 2000, kov2103, kov2, kov2, sango, kov2, ROT0, "IGS", "Knights of Valour 2 / Sangoku Senki 2 (ver. 103, 101, 100HK)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // 12/28/00 15:09:31 V103 (Ext. Arm V101, Int. Arm V100HK) GAME( 2000, kov2102, kov2, kov2, sango, kov2, ROT0, "IGS", "Knights of Valour 2 / Sangoku Senki 2 (ver. 102, 101, 100HK)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // 12/14/00 10:33:36 V102 (Ext. Arm V101, Int. Arm V100HK) +GAME( 2000, kov2101, kov2, kov2, sango, kov2, ROT0, "IGS", "Knights of Valour 2 / Sangoku Senki 2 (ver. 101, 101, 100HK)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // 11/29/00 11:03:08 V100 (Ext. Arm V100, Int. Arm V100HK) GAME( 2000, kov2100, kov2, kov2, sango, kov2, ROT0, "IGS", "Knights of Valour 2 / Sangoku Senki 2 (ver. 100, 100, 100HK)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // 11/29/00 11:03:08 V100 (Ext. Arm V100, Int. Arm V100HK) GAME( 2001, martmast, pgm, kov2, sango, martmast, ROT0, "IGS", "Martial Masters (ver. 104, 102, 102US)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // 68k V104, Ext Arm 102, Int Arm 102US diff --git a/src/mame/includes/pgm.h b/src/mame/includes/pgm.h index 2e68f8948b3..6b51524f75c 100644 --- a/src/mame/includes/pgm.h +++ b/src/mame/includes/pgm.h @@ -93,7 +93,6 @@ void pgm_oldsplus_decrypt(running_machine *machine); void pgm_kovshp_decrypt(running_machine *machine); void pgm_killbldp_decrypt(running_machine *machine); void pgm_svg_decrypt(running_machine *machine); -void pgm_dw2001_decrypt(running_machine *machine); void pgm_ket_decrypt(running_machine *machine); void pgm_espgal_decrypt(running_machine *machine); diff --git a/src/mame/machine/pgmcrypt.c b/src/mame/machine/pgmcrypt.c index 76e9b06f49b..5a483764b17 100644 --- a/src/mame/machine/pgmcrypt.c +++ b/src/mame/machine/pgmcrypt.c @@ -454,7 +454,7 @@ static const UINT8 mm_tab[256] = { 0x7c, 0x01, 0x43, 0xdb, 0x53, 0x85, 0xfe, 0x78, 0x91, 0x40, 0xa3, 0xdf, 0x4f, 0xff, 0x10, 0x6c, }; -void pgm_mm_decrypt(running_machine *machine) +void pgm_mm_decrypt(running_machine *machine) // and dw2001 { int i; UINT16 *src = (UINT16 *)(machine->region("user1")->base()); @@ -946,64 +946,6 @@ void pgm_svg_decrypt(running_machine *machine) } } -/* not 100% correct */ -static const UINT8 dw2001_tab[256] = { - 0xd0,0x45,0xbc,0x84,0x93,0x60,0x7d,0x49,0x68,0xb1,0x54,0xa2,0x05,0x29,0x41,0x20, - 0x04,0x08,0x52,0x25,0x89,0xf4,0x69,0x9f,0x24,0x46,0x3d,0xf1,0xf9,0xab,0xa6,0x2d, - 0x18,0x19,0x6d,0x33,0x79,0x23,0x3b,0x1d,0xe0,0xb8,0x61,0x1a,0xe1,0x4c,0x5d,0x3f, - 0x5e,0x02,0xe3,0x4d,0x9e,0X80,0x28,0x50,0xa0,0x81,0xe4,0xa5,0x97,0xa1,0x86,0x36, - 0x1e,0xed,0x16,0x8a,0x44,0x06,0x64,0x12,0x9a,0x7e,0xce,0x9b,0xef,0xf7,0x3e,0xf8, - 0x15,0x07,0xcb,0x6f,0x8e,0x3c,0x82,0x70,0x62,0x8d,0x66,0x7a,0x4e,0xd3,0xb6,0x6a, - 0x51,0xa7,0x2c,0xc7,0xa4,0x0b,0xb5,0xe5,0x88,0xbd,0x5a,0x5b,0x1b,0xae,0xe6,0X5F, - 0x2e,0x92,0x8c,0xb7,0x96,0xba,0x99,0xbb,0xbe,0x0e,0xbf,0xe7,0x2f,0xe9,0x30,0x37, - 0x98,0xac,0x4a,0x94,0x38,0xf3,0x39,0xb2,0x55,0x72,0x7b,0xee,0xdd,0x6e,0x11,0xd5, - 0x26,0xa8,0x71,0xd6,0x74,0x7f,0x13,0xc2,0x56,0xea,0xa9,0xaf,0XC3,0x42,0x03,0xb3, - 0xc4,0x6b,0x47,0xf0,0x31,0xf5,0xaa,0x58,0x8f,0x48,0x75,0x95,0x35,0x8b,0x57,0x3a, - 0x73,0x0c,0x59,0xd8,0x14,0x65,0xd7,0x00,0xfa,0xdc,0x34,0xde,0xc0,0xb0,0x87,0xc1, - 0xc8,0xcd,0xd4,0x2a,0xda,0xe8,0xd2,0x83,0x0d,0xca,0xf2,0x0f,0xeb,0xec,0x9c,0x1f, - 0xad,0x22,0xd1,0x4b,0x5c,0xf6,0x17,0xc5,0x67,0x9d,0xfb,0xc9,0xcc,0x32,0x1c,0xb4, - 0xd9,0xe2,0xcf,0x90,0xb9,0x2b,0x61,0xc6,0x76,0x21,0x77,0x27,0xfc,0xfd,0x0a,0x09, - 0x7c,0x01,0x43,0xdb,0x53,0x87,0xfe,0x78,0x91,0x40,0xa3,0xdf,0x4f,0xff,0x10,0x6c, -}; - -void pgm_dw2001_decrypt(running_machine *machine) -{ - int i; - UINT16 *src = (UINT16 *)(machine->region("user1")->base()); - - int rom_size = 0x200000; - - for(i=0; i> 1) & 0xff] << 8; - - src[i] = x; - } -} - -/* todo: */ static const UINT8 py2k2_tab[256] = { 0x74, 0xe8, 0xa8, 0x64, 0x26, 0x44, 0xa6, 0x9a, 0xa5, 0x69, 0xa2, 0xd3, 0x6d, 0xba, 0xff, 0xf3, 0xeb, 0x6e, 0xe3, 0x70, 0x72, 0x58, 0x27, 0xd9, 0xe4, 0x9f, 0x50, 0xa2, 0xdd, 0xce, 0x6e, 0xf6, diff --git a/src/mame/mamedriv.c b/src/mame/mamedriv.c index 42cc7198713..728a993598b 100644 --- a/src/mame/mamedriv.c +++ b/src/mame/mamedriv.c @@ -8685,6 +8685,7 @@ Other Sun games DRIVER( kov2106 ) /* (c) 2000 */ DRIVER( kov2103 ) /* (c) 2000 */ DRIVER( kov2102 ) /* (c) 2000 */ + DRIVER( kov2101 ) /* (c) 2000 */ DRIVER( kov2100 ) /* (c) 2000 */ DRIVER( kov2p ) /* (c) 2000 */ DRIVER( kov2p205 ) /* (c) 2000 */