diff --git a/src/mame/drivers/pgm.c b/src/mame/drivers/pgm.c index 5f8930d7de3..55b85b7bde7 100644 --- a/src/mame/drivers/pgm.c +++ b/src/mame/drivers/pgm.c @@ -2319,6 +2319,124 @@ ROM_START( kovsh103 ) ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) ) ROM_END + +/* kovsh bootlegs, these still have the ARM! */ +ROM_START( kovlsqh2 ) + ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */ + PGM_68K_BIOS + ROM_LOAD16_WORD_SWAP( "lsqh2_prg.rom",0x100000, 0x400000, CRC(d71e3d50) SHA1(bda78648bc176b0ded74118a8e340ee661bb930d) ) + + ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */ + ROM_LOAD( "qhsg_prot.c51", 0x000000, 0x04000, BAD_DUMP CRC(0f09a5c1) SHA1(621b38c05f33277608d58b49822aebc930ae4870) ) + + ROM_REGION( 0xc00000, "tiles", 0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */ + PGM_VIDEO_BIOS + ROM_LOAD( "lsqh2_t01.rom",0x400000, 0x800000, CRC(d498d97f) SHA1(97a7b6d2ed1170449e7c2899448af7cbbca4c94f) ) + ROM_IGNORE( 0x800000 ) // second half identical + + ROM_REGION( 0x3000000, "sprcol", 0 ) /* Sprite Colour Data */ + ROM_LOAD( "lsqh2_a01.rom", 0x0000000, 0x1000000, CRC(25ae3efd) SHA1(083d977602ddb5ad54fbdcba000cd4287de8d463) ) + ROM_LOAD( "lsqh2_a23.rom", 0x1000000, 0x1000000, CRC(7a779112) SHA1(0a7d36b3715063d8eac629b95a9bb3ecd8e54fca) ) + ROM_LOAD( "lsqh2_a45.rom", 0x2000000, 0x1000000, CRC(5d7de052) SHA1(7663b6cf09f65c4644661005a38f9aba84a32913) ) + + ROM_REGION( 0x1000000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */ + ROM_LOAD( "lsqh2_b01.rom", 0x0000000, 0x1000000, CRC(df7ca696) SHA1(7af3d27957a39de7e4873867c9972c05af7e7964) ) + + ROM_REGION( 0xc00000, "ics", 0 ) /* Samples - (8 bit mono 11025Hz) - */ + PGM_AUDIO_BIOS + ROM_LOAD( "lsqh2_m01.rom",0x400000, 0x400000, CRC(01af1b65) SHA1(6cf523fa8f1e03f974771611bb9a4e08a4d4443f) ) + ROM_IGNORE( 0x400000 ) // 400000-7fffff empty + ROM_CONTINUE( 0x800000, 0x400000 ) + ROM_IGNORE( 0x400000 ) // c00000-ffffff empty +ROM_END + +ROM_START( kovlsjb ) + ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */ + PGM_68K_BIOS + ROM_LOAD16_WORD_SWAP( "lsjb_prg.rom", 0x100000, 0x400000, CRC(adf06b37) SHA1(be3c0af64de374046d28492ac49c01da1ec78e40) ) + + ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */ + ROM_LOAD( "qhsg_prot.c51", 0x000000, 0x04000, BAD_DUMP CRC(0f09a5c1) SHA1(621b38c05f33277608d58b49822aebc930ae4870) ) + + ROM_REGION( 0xc00000, "tiles", 0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */ + PGM_VIDEO_BIOS + ROM_LOAD( "lsqh2_t01.rom",0x400000, 0x800000, CRC(d498d97f) SHA1(97a7b6d2ed1170449e7c2899448af7cbbca4c94f) ) + ROM_IGNORE( 0x800000 ) // second half identical + + ROM_REGION( 0x3000000, "sprcol", 0 ) /* Sprite Colour Data */ + ROM_LOAD( "lsqh2_a01.rom", 0x0000000, 0x1000000, CRC(25ae3efd) SHA1(083d977602ddb5ad54fbdcba000cd4287de8d463) ) + ROM_LOAD( "lsqh2_a23.rom", 0x1000000, 0x1000000, CRC(7a779112) SHA1(0a7d36b3715063d8eac629b95a9bb3ecd8e54fca) ) + ROM_LOAD( "lsqh2_a45.rom", 0x2000000, 0x1000000, CRC(5d7de052) SHA1(7663b6cf09f65c4644661005a38f9aba84a32913) ) + + ROM_REGION( 0x1000000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */ + ROM_LOAD( "lsqh2_b01.rom", 0x0000000, 0x1000000, CRC(df7ca696) SHA1(7af3d27957a39de7e4873867c9972c05af7e7964) ) + + ROM_REGION( 0xc00000, "ics", 0 ) /* Samples - (8 bit mono 11025Hz) - */ + PGM_AUDIO_BIOS + ROM_LOAD( "lsqh2_m01.rom",0x400000, 0x400000, CRC(01af1b65) SHA1(6cf523fa8f1e03f974771611bb9a4e08a4d4443f) ) + ROM_IGNORE( 0x400000 ) // 400000-7fffff empty + ROM_CONTINUE( 0x800000, 0x400000 ) + ROM_IGNORE( 0x400000 ) // c00000-ffffff empty +ROM_END + +ROM_START( kovlsjba ) + ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */ + PGM_68K_BIOS + ROM_LOAD16_WORD_SWAP( "lsjba_prg.rom",0x100000, 0x400000, CRC(8b42f456) SHA1(48796e48f6f1a5f68442cf15a6b195095d443a35) ) + + ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */ + ROM_LOAD( "qhsg_prot.c51", 0x000000, 0x04000, BAD_DUMP CRC(0f09a5c1) SHA1(621b38c05f33277608d58b49822aebc930ae4870) ) + + ROM_REGION( 0xc00000, "tiles", 0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */ + PGM_VIDEO_BIOS + ROM_LOAD( "lsqh2_t01.rom",0x400000, 0x800000, CRC(d498d97f) SHA1(97a7b6d2ed1170449e7c2899448af7cbbca4c94f) ) + ROM_IGNORE( 0x800000 ) // second half identical + + ROM_REGION( 0x3000000, "sprcol", 0 ) /* Sprite Colour Data */ + ROM_LOAD( "lsqh2_a01.rom", 0x0000000, 0x1000000, CRC(25ae3efd) SHA1(083d977602ddb5ad54fbdcba000cd4287de8d463) ) + ROM_LOAD( "lsqh2_a23.rom", 0x1000000, 0x1000000, CRC(7a779112) SHA1(0a7d36b3715063d8eac629b95a9bb3ecd8e54fca) ) + ROM_LOAD( "lsqh2_a45.rom", 0x2000000, 0x1000000, CRC(5d7de052) SHA1(7663b6cf09f65c4644661005a38f9aba84a32913) ) + + ROM_REGION( 0x1000000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */ + ROM_LOAD( "lsqh2_b01.rom", 0x0000000, 0x1000000, CRC(df7ca696) SHA1(7af3d27957a39de7e4873867c9972c05af7e7964) ) + + ROM_REGION( 0xc00000, "ics", 0 ) /* Samples - (8 bit mono 11025Hz) - */ + PGM_AUDIO_BIOS + ROM_LOAD( "lsqh2_m01.rom",0x400000, 0x400000, CRC(01af1b65) SHA1(6cf523fa8f1e03f974771611bb9a4e08a4d4443f) ) + ROM_IGNORE( 0x400000 ) // 400000-7fffff empty + ROM_CONTINUE( 0x800000, 0x400000 ) + ROM_IGNORE( 0x400000 ) // c00000-ffffff empty +ROM_END + +ROM_START( kovqhsgs ) + ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */ + PGM_68K_BIOS + ROM_LOAD16_WORD_SWAP( "qhsg_c51.rom", 0x100000, 0x400000, CRC(e5cbac85) SHA1(4b424206387057863990b04f6d5bd0b6f754814f) ) + + ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */ + ROM_LOAD( "qhsg_prot.c51", 0x000000, 0x04000, BAD_DUMP CRC(0f09a5c1) SHA1(621b38c05f33277608d58b49822aebc930ae4870) ) + + ROM_REGION( 0xc00000, "tiles", 0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */ + PGM_VIDEO_BIOS + ROM_LOAD( "lsqh2_t01.rom",0x400000, 0x800000, CRC(d498d97f) SHA1(97a7b6d2ed1170449e7c2899448af7cbbca4c94f) ) + ROM_IGNORE( 0x800000 ) // second half identical + + ROM_REGION( 0x3000000, "sprcol", 0 ) /* Sprite Colour Data */ + ROM_LOAD( "lsqh2_a01.rom", 0x0000000, 0x1000000, CRC(25ae3efd) SHA1(083d977602ddb5ad54fbdcba000cd4287de8d463) ) + ROM_LOAD( "lsqh2_a23.rom", 0x1000000, 0x1000000, CRC(7a779112) SHA1(0a7d36b3715063d8eac629b95a9bb3ecd8e54fca) ) + ROM_LOAD( "lsqh2_a45.rom", 0x2000000, 0x1000000, CRC(5d7de052) SHA1(7663b6cf09f65c4644661005a38f9aba84a32913) ) + + ROM_REGION( 0x1000000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */ + ROM_LOAD( "lsqh2_b01.rom", 0x0000000, 0x1000000, CRC(df7ca696) SHA1(7af3d27957a39de7e4873867c9972c05af7e7964) ) + + ROM_REGION( 0xc00000, "ics", 0 ) /* Samples - (8 bit mono 11025Hz) - */ + PGM_AUDIO_BIOS + ROM_LOAD( "lsqh2_m01.rom",0x400000, 0x400000, CRC(01af1b65) SHA1(6cf523fa8f1e03f974771611bb9a4e08a4d4443f) ) + ROM_IGNORE( 0x400000 ) // 400000-7fffff empty + ROM_CONTINUE( 0x800000, 0x400000 ) + ROM_IGNORE( 0x400000 ) // c00000-ffffff empty +ROM_END + /* p0701_v105.u2 @@ -3792,6 +3910,8 @@ ROM_START( happy6 ) ROM_LOAD( "w01w64m.u17", 0x400000, 0x800000, CRC(7e23e2be) SHA1(5e920b8e480f00b6666292d4a56039b40af18141) ) ROM_END + + #if 0 ROM_START( unsorted ) ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */ @@ -4934,6 +5054,132 @@ static DRIVER_INIT( olds ) state_save_register_global(machine, state->olds_cmd3); } + + +static void pgm_decode_kovlsqh2_tiles( running_machine *machine ) +{ + int i, j; + UINT16 *src = (UINT16 *)(memory_region(machine, "tiles") + 0x400000); + UINT16 *dst = auto_alloc_array(machine, UINT16, 0x800000); + + for (i = 0; i < 0x800000 / 2; i++) + { + j = BITSWAP24(i, 23, 22, 9, 8, 21, 18, 0, 1, 2, 3, 16, 15, 14, 13, 12, 11, 10, 19, 20, 17, 7, 6, 5, 4); + + dst[j] = BITSWAP16(src[i], 1, 14, 8, 7, 0, 15, 6, 9, 13, 2, 5, 10, 12, 3, 4, 11); + } + + memcpy( src, dst, 0x800000 ); + + auto_free( machine, dst ); +} + +static void pgm_decode_kovlsqh2_sprites( running_machine *machine, UINT8 *src ) +{ + int i, j; + UINT8 *dst = auto_alloc_array(machine, UINT8, 0x800000); + + for (i = 0; i < 0x800000; i++) + { + j = BITSWAP24(i, 23, 10, 9, 22, 19, 18, 20, 21, 17, 16, 15, 14, 13, 12, 11, 8, 7, 6, 5, 4, 3, 2, 1, 0); + + dst[j] = src[i]; + } + + memcpy( src, dst, 0x800000 ); + + auto_free( machine, dst ); +} + +static void pgm_decode_kovlsqh2_samples( running_machine *machine ) +{ + int i; + UINT8 *src = (UINT8 *)(memory_region(machine, "ics") + 0x400000); + + for (i = 0; i < 0x400000; i+=2) { + src[i + 0x000001] = src[i + 0x400001]; + } + + memcpy( src + 0x400000, src, 0x400000 ); +} + +static void pgm_decode_kovqhsgs_program( running_machine *machine ) +{ + int i; + UINT16 *src = (UINT16 *)(memory_region(machine, "maincpu") + 0x100000); + UINT16 *dst = auto_alloc_array(machine, UINT16, 0x400000); + + for (i = 0; i < 0x400000 / 2; i++) + { + int j = BITSWAP24(i, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 6, 7, 5, 4, 3, 2, 1, 0); + + dst[j] = BITSWAP16(src[i], 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 4, 5, 3, 2, 1, 0); + } + + memcpy( src, dst, 0x400000 ); + + auto_free( machine, dst ); +} + +static void pgm_decode_kovqhsgs2_program( running_machine *machine ) +{ + int i; + UINT16 *src = (UINT16 *)(memory_region(machine, "maincpu") + 0x100000); + UINT16 *dst = auto_alloc_array(machine, UINT16, 0x400000); + + for (i = 0; i < 0x400000 / 2; i++) + { + int j = BITSWAP24(i, 23, 22, 21, 20, 19, 16, 15, 14, 13, 12, 11, 10, 9, 8, 0, 1, 2, 3, 4, 5, 6, 18, 17, 7); + + dst[j] = src[i]; + } + + memcpy( src, dst, 0x400000 ); + + auto_free( machine, dst ); +} + + +static DRIVER_INIT( kovlsqh2 ) +{ + pgm_decode_kovqhsgs2_program(machine); + pgm_decode_kovlsqh2_tiles(machine); + + pgm_decode_kovlsqh2_sprites(machine, memory_region(machine, "sprcol") + 0x0000000); + pgm_decode_kovlsqh2_sprites(machine, memory_region(machine, "sprcol") + 0x0800000); + pgm_decode_kovlsqh2_sprites(machine, memory_region(machine, "sprcol") + 0x1000000); + pgm_decode_kovlsqh2_sprites(machine, memory_region(machine, "sprcol") + 0x1800000); + pgm_decode_kovlsqh2_sprites(machine, memory_region(machine, "sprcol") + 0x2000000); + pgm_decode_kovlsqh2_sprites(machine, memory_region(machine, "sprcol") + 0x2800000); + pgm_decode_kovlsqh2_sprites(machine, memory_region(machine, "sprmask") + 0x0000000); + pgm_decode_kovlsqh2_sprites(machine, memory_region(machine, "sprmask") + 0x0800000); + + pgm_decode_kovlsqh2_samples(machine); + pgm_basic_init(machine); + kovsh_latch_init(machine); +} + +static DRIVER_INIT( kovqhsgs ) +{ + pgm_decode_kovqhsgs_program(machine); + pgm_decode_kovlsqh2_tiles(machine); + + pgm_decode_kovlsqh2_sprites(machine, memory_region(machine, "sprcol") + 0x0000000); + pgm_decode_kovlsqh2_sprites(machine, memory_region(machine, "sprcol") + 0x0800000); + pgm_decode_kovlsqh2_sprites(machine, memory_region(machine, "sprcol") + 0x1000000); + pgm_decode_kovlsqh2_sprites(machine, memory_region(machine, "sprcol") + 0x1800000); + pgm_decode_kovlsqh2_sprites(machine, memory_region(machine, "sprcol") + 0x2000000); + pgm_decode_kovlsqh2_sprites(machine, memory_region(machine, "sprcol") + 0x2800000); + pgm_decode_kovlsqh2_sprites(machine, memory_region(machine, "sprmask") + 0x0000000); + pgm_decode_kovlsqh2_sprites(machine, memory_region(machine, "sprmask") + 0x0800000); + + pgm_decode_kovlsqh2_samples(machine); + + pgm_basic_init(machine); + kovsh_latch_init(machine); +} + + /*** GAME ********************************************************************/ GAME( 1997, pgm, 0, pgm, pgm, pgm, ROT0, "IGS", "PGM (Polygame Master) System BIOS", GAME_IS_BIOS_ROOT ) @@ -4960,6 +5206,12 @@ GAME( 1999, photoy2k102, photoy2k, kov, photoy2k, photoy2k, ROT0, "IGS GAME( 1999, kovsh, pgm, kov, sango, kovsh, ROT0, "IGS", "Knights of Valour Super Heroes / Sangoku Senki Super Heroes (ver. 104, CN)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // 68k V104, China internal ROM GAME( 1999, kovsh103, kovsh, kov, sango, kovsh, ROT0, "IGS", "Knights of Valour Super Heroes / Sangoku Senki Super Heroes (ver. 103, CN)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // 68k V103, China internal ROM +// nasty modern asian bootleg of Knights of Valour Super Heroes with characters ripped from SNK's The King of Fighters series! +GAME( 1999, kovqhsgs, kovsh, kov, sango, kovqhsgs, ROT0, "bootleg", "Knights of Valour: Quan Huang San Guo Special / Sangoku Senki: Quan Huang San Guo Special (ver. 303CN)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) +// these 3 don't seem to work with the KovSH ARM rom.. do they have their own protection, or expect a newer version? +GAME( 1999, kovlsqh2, kovsh, kov, sango, kovlsqh2, ROT0, "bootleg", "Knights of Valour: Luan Shi Quan Huang 2 / Sangoku Senki: Luan Shi Quan Huang 2 (ver. 200CN)", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) /* need internal rom of IGS027A */ +GAME( 1999, kovlsjb, kovsh, kov, sango, kovlsqh2, ROT0, "bootleg", "Knights of Valour: Luan Shi Jie Ba / Sangoku Senki: Luan Shi Jie Ba (ver. 200CN)", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) /* need internal rom of IGS027A */ +GAME( 1999, kovlsjba, kovsh, kov, sango, kovlsqh2, ROT0, "bootleg", "Knights of Valour: Luan Shi Jie Ba / Sangoku Senki: Luan Shi Jie Ba (alt ver. 200CN)", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) /* need internal rom of IGS027A */ GAME( 2000, kov2, pgm, kov2, sango, kov2, ROT0, "IGS", "Knights of Valour 2 / Sangoku Senki 2 (ver. 107, 102, 100HK)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // 05/10/01 14:24:08 V107 (Ext. Arm V102, Int. Arm V100HK) 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) @@ -5034,3 +5286,5 @@ GAME( 2005, killbldp, pgm, svg, sango, killbldp, ROT0, "IGS GAME( 2004, happy6, pgm, svg, sango, svg, ROT0, "IGS", "Happy 6-in-1 (ver. 101CN)", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) /* need internal rom of IGS027A */ GAME( 2005, svg, pgm, svg, sango, svg, ROT0, "IGS", "S.V.G. - Spectral vs Generation (ver. 200)", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) /* need internal rom of IGS027A */ + + diff --git a/src/mame/mamedriv.c b/src/mame/mamedriv.c index d4b2b49bab0..46ec0348942 100644 --- a/src/mame/mamedriv.c +++ b/src/mame/mamedriv.c @@ -3912,7 +3912,7 @@ DokiDoki Penguin Land *not confirmed DRIVER( quartet2 ) /* (c) 1986 (8751) */ DRIVER( quartet2a ) /* (c) 1986 */ - /* System16A */ + /* System 16A */ DRIVER( aceattaca ) /* (c) 1988 (FD1094, decrypted) */ DRIVER( afighter ) /* (c) 1986 (FD1089A, decrypted) */ DRIVER( alexkidd ) /* (c) 1986 (FD1089A, decrypted) */ @@ -4029,6 +4029,7 @@ DokiDoki Penguin Land *not confirmed /* ISG S16 bootleg system */ DRIVER( isgsm ) + DRIVER( tetrbx ) DRIVER( shinfz ) /* System 18 */ @@ -8525,6 +8526,10 @@ Other Sun games DRIVER( kov100 ) /* (c) 1999 */ DRIVER( kovsh ) /* (c) 1999 */ DRIVER( kovsh103 ) /* (c) 1999 */ + DRIVER( kovqhsgs ) /* bootleg */ + DRIVER( kovlsqh2 ) /* bootleg */ + DRIVER( kovlsjb ) /* bootleg */ + DRIVER( kovlsjba ) /* bootleg */ DRIVER( photoy2k ) /* (c) 1999 */ DRIVER( photoy2k102 ) /* (c) 1999 */ DRIVER( photoy2k104 ) /* (c) 1999 */