diff --git a/src/mame/drivers/megadriv_acbl.cpp b/src/mame/drivers/megadriv_acbl.cpp index 8bc27d110d4..afb0db44e1c 100644 --- a/src/mame/drivers/megadriv_acbl.cpp +++ b/src/mame/drivers/megadriv_acbl.cpp @@ -6,6 +6,7 @@ Games supported: * Aladdin + * Bare Knuckle II * Bare Knuckle III * Jurassic Park * Mortal Kombat 3 @@ -356,6 +357,18 @@ uint16_t md_boot_state::jparkmb_r() return 0x0000; } +uint16_t md_boot_state::barek2mb_r() +{ + if (m_maincpu->pc()==0xfa40) + return 0x0400; // TODO: what's this? Needed or the game doesn't boot + + if (m_maincpu->pc()==0xfa88) + return 0x0ff0; // TODO: fix this, should probably read coin inputs, as is gives 9 credits at start up + + logerror("aladbl_r : %06x\n",m_maincpu->pc()); + return 0x0000; +} + uint16_t md_boot_state::mk3mdb_dsw_r(offs_t offset) { static const char *const dswname[3] = { "DSWA", "DSWB", "DSWC" }; @@ -769,6 +782,11 @@ static INPUT_PORTS_START( topshoot ) /* Top Shooter Input Ports */ PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNKNOWN ) INPUT_PORTS_END +INPUT_PORTS_START( barek2 ) + PORT_INCLUDE( aladmdb ) + // TODO! +INPUT_PORTS_END + INPUT_PORTS_START( barek3 ) PORT_INCLUDE( md_common ) @@ -843,7 +861,7 @@ ROM_START( aladmdb ) ROM_LOAD16_BYTE( "m1.bin", 0x000001, 0x080000, CRC(5e2671e4) SHA1(54705c7614fc7b5a1065478fa41f51dd1d8045b7) ) ROM_LOAD16_BYTE( "m2.bin", 0x000000, 0x080000, CRC(142a0366) SHA1(6c94aa9936cd11ccda503b52019a6721e64a32f0) ) ROM_LOAD16_BYTE( "m3.bin", 0x100001, 0x080000, CRC(0feeeb19) SHA1(bd567a33077ab9997871d21736066140d50e3d70) ) - ROM_LOAD16_BYTE( "m4.bin", 0x100000, 0x080000, CRC(bc712661) SHA1(dfd554d000399e17b4ddc69761e572195ed4e1f0)) + ROM_LOAD16_BYTE( "m4.bin", 0x100000, 0x080000, CRC(bc712661) SHA1(dfd554d000399e17b4ddc69761e572195ed4e1f0) ) ROM_REGION( 0x2000, "pic", ROMREGION_ERASE00 ) ROM_LOAD( "pic16c57xtp", 0x0000, 0x2000, NO_DUMP ) @@ -888,7 +906,7 @@ ROM_START( srmdb ) ROM_LOAD16_BYTE( "u1", 0x000001, 0x020000, CRC(c59f33bd) SHA1(bd5bce7698a70ea005b79ab34bcdb056872ef980) ) ROM_LOAD16_BYTE( "u2", 0x000000, 0x020000, CRC(9125c054) SHA1(c73bdeb6b11c59d2b5f5968959b02697957ca894) ) ROM_LOAD16_BYTE( "u3", 0x040001, 0x020000, CRC(0fee0fbe) SHA1(001e0fda12707512aad537e533acf28e726e6107) ) - ROM_LOAD16_BYTE( "u4", 0x040000, 0x020000, CRC(fc2aed41) SHA1(27eb3957f5ed26ee5276523b1df46fa7eb298e1f)) + ROM_LOAD16_BYTE( "u4", 0x040000, 0x020000, CRC(fc2aed41) SHA1(27eb3957f5ed26ee5276523b1df46fa7eb298e1f) ) ROM_END ROM_START( topshoot ) /* Top Shooter (c)1995 Sun Mixing */ @@ -907,6 +925,17 @@ ROM_START( sonic2mb ) ROM_LOAD16_BYTE( "m2", 0x000000, 0x080000, CRC(84b3f758) SHA1(19846b9d951db6f78f3e155d33f1b6349fb87f1a) ) ROM_END +ROM_START( barek2mb ) + ROM_REGION( 0x200000, "maincpu", 0 ) + ROM_LOAD16_BYTE( "m1.bin", 0x000001, 0x080000, CRC(1c1fa718) SHA1(393488f7747478728eb4f20c10b0cfce3b188719) ) + ROM_LOAD16_BYTE( "m2.bin", 0x000000, 0x080000, CRC(59ee0905) SHA1(0e9f1f6e17aae2dd99bf9d7f640568b48ba699c7) ) + ROM_LOAD16_BYTE( "m3.bin", 0x100001, 0x080000, CRC(6ec5af5d) SHA1(9088a2d4cff5e7eb439ebaa91ad3bfff11366127) ) + ROM_LOAD16_BYTE( "m4.bin", 0x100000, 0x080000, CRC(d8c61e0d) SHA1(3d06e656f6621bb0741211f80c1ecff1669475ee) ) + + ROM_REGION( 0x2000, "pic", ROMREGION_ERASE00 ) + ROM_LOAD( "pic16c57xtp", 0x0000, 0x2000, NO_DUMP ) +ROM_END + ROM_START( barek3mb ) ROM_REGION( 0x400000, "maincpu", 0 ) /* 68000 Code */ ROM_LOAD16_BYTE( "6.u19", 0x000000, 0x080000, CRC(2de19519) SHA1(f5fcef1da8b5370e399f0451382e3c6e7754c9c8) ) @@ -1068,6 +1097,14 @@ void md_boot_state::init_topshoot() init_megadriv(); } +void md_boot_state::init_barek2() +{ + m_maincpu->space(AS_PROGRAM).install_write_handler(0x220000, 0x220001, write16smo_delegate(*this, FUNC(md_boot_state::aladmdb_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x330000, 0x330001, read16smo_delegate(*this, FUNC(md_boot_state::barek2mb_r))); + + init_megadrij(); +} + void md_boot_state::init_barek3() { uint8_t* rom = memregion("maincpu")->base(); @@ -1126,6 +1163,7 @@ GAME( 1994, ssf2mdb, 0, megadrvb_6b, ssf2mdb, md_boot_state, init_ssf2mdb, R GAME( 1993, srmdb, 0, megadrvb, srmdb, md_boot_state, init_srmdb, ROT0, "bootleg / Konami", "Sunset Riders (bootleg of Megadrive version)", 0) GAME( 1995, topshoot, 0, md_bootleg, topshoot, md_boot_state, init_topshoot, ROT0, "Sun Mixing", "Top Shooter", 0) GAME( 1993, sonic2mb, 0, md_bootleg, sonic2mb, md_boot_state, init_sonic2mb, ROT0, "bootleg / Sega", "Sonic The Hedgehog 2 (bootleg of Megadrive version)", 0 ) // flying wires going through the empty PIC space aren't completely understood +GAME( 1994, barek2mb, 0, md_bootleg, barek2, md_boot_state, init_barek2, ROT0, "bootleg / Sega", "Bare Knuckle II (bootleg of Megadrive version)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // needs PIC decap or simulation GAME( 1994, barek3mb, 0, megadrvb, barek3, md_boot_state, init_barek3, ROT0, "bootleg / Sega", "Bare Knuckle III (bootleg of Megadrive version)", 0 ) -GAME( 1993, twinktmb, 0, md_bootleg, twinktmb, md_boot_state, init_twinktmb, ROT0, "bootleg / Sega", "Twinkle Tale (bootleg of Megadrive version)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // needs PIC decap or simulation -GAME( 1993, jparkmb, 0, md_bootleg, twinktmb, md_boot_state, init_jparkmb, ROT0, "bootleg / Sega", "Jurassic Park (bootleg of Megadrive version)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // needs PIC decap or simulation +GAME( 1993, twinktmb, 0, md_bootleg, twinktmb, md_boot_state, init_twinktmb, ROT0, "bootleg / Sega", "Twinkle Tale (bootleg of Megadrive version)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // needs PIC decap or simulation +GAME( 1993, jparkmb, 0, md_bootleg, twinktmb, md_boot_state, init_jparkmb, ROT0, "bootleg / Sega", "Jurassic Park (bootleg of Megadrive version)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // needs PIC decap or simulation diff --git a/src/mame/drivers/qix.cpp b/src/mame/drivers/qix.cpp index 4c2faffe3b3..3b9ddce892e 100644 --- a/src/mame/drivers/qix.cpp +++ b/src/mame/drivers/qix.cpp @@ -681,7 +681,12 @@ void zookeep_state::zookeep(machine_config &config) video(config); } - +void zookeep_state::zookeepbl(machine_config &config) +{ + qix(config); + m_maincpu->set_addrmap(AS_PROGRAM, &zookeep_state::main_map); + video(config); +} /*************************************************************************** @@ -1106,6 +1111,28 @@ ROM_START( zookeep3 ) ROM_LOAD( "za_coin.bin", 0x0000, 0x0800, CRC(364d3557) SHA1(049d0759750c576187053306e07984b1e5877df7) ) ROM_END +// the top PCB is definitely an Italian made one (same place Sidam PCBs were made). The bottom PCB (MTD-19) looks like one of those Taito PCBs made for licensees. +// there's an unpopulated IC location for an M68705 +// only ROMS 16-17, 18-19 and 26-27 had still stickers on, so the others are educated guesses +ROM_START( zookeepbl ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "zk-12-13.bin", 0x8000, 0x2000, CRC(b85e5200) SHA1(3f47626fe35f2e9fa893595e06ea4275a9beb10b) ) + ROM_LOAD( "zk-14-15.bin", 0xa000, 0x2000, CRC(b621a415) SHA1(7b6e595f1c797d6619e7ea128aeb67f432d64a83) ) + ROM_LOAD( "zk-16-17.bin", 0xc000, 0x2000, CRC(9e192104) SHA1(318c902debfcb49a02a3a776bf2a860685603b3c) ) + ROM_LOAD( "zk-18-19.bin", 0xe000, 0x2000, CRC(2854b69d) SHA1(3d258d57909228d13b1b557e8178b722ec297d6d) ) + + ROM_REGION( 0x12000, "videocpu", 0 ) + ROM_LOAD( "zk-5-6.bin", 0x0a000, 0x2000, CRC(467b42dc) SHA1(e92a98b56959f5ccf2a4dc4ebafa13f9074e551b) ) + ROM_LOAD( "zk-7-8.bin", 0x0c000, 0x2000, CRC(2a5571ed) SHA1(ac6947c8fb22c0c549c747cc88b1a4da7063fcf6) ) + ROM_LOAD( "zk-9-10.bin", 0x0e000, 0x2000, CRC(7430e09c) SHA1(05a2cd5a9dd06c235881e7d9b734be1d3e41de5d) ) // only ROM with differences compared to the parent + ROM_LOAD( "zk-3-4.bin", 0x10000, 0x2000, CRC(ab5a72f0) SHA1(4595a785d212464d599cfacd75ea4fc368231550) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "zk-25.bin", 0xd000, 0x1000, CRC(32e6d667) SHA1(4d693ac4a73746f17515b805382f5aeaf606da39) ) // 0xxxxxxxxxxxx = 0xFF + ROM_CONTINUE( 0xd000, 0x1000 ) + ROM_LOAD( "zk-26-27.bin", 0xe000, 0x2000, CRC(2138554c) SHA1(6fbf46e0dd3d8a0dd526064baee3d84212713b9a) ) +ROM_END + ROM_START( slither ) ROM_REGION( 0x10000, "maincpu", 0 ) @@ -1433,21 +1460,22 @@ WRITE_LINE_MEMBER(qix_state::kram3_lic_videocpu_changed) * *************************************/ -GAME( 1981, qix, 0, qix, qix, qix_state, empty_init, ROT270, "Taito America Corporation", "Qix (Rev 2)", MACHINE_SUPPORTS_SAVE ) // newest set? closest to 'qix2' -GAME( 1981, qixa, qix, qix, qix, qix_state, empty_init, ROT270, "Taito America Corporation", "Qix (set 2, smaller roms)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, qixb, qix, qix, qix, qix_state, empty_init, ROT270, "Taito America Corporation", "Qix (set 2, larger roms)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, qixo, qix, qix, qix, qix_state, empty_init, ROT270, "Taito America Corporation", "Qix (set 3, earlier)", MACHINE_SUPPORTS_SAVE ) // oldest set / prototype? has incorrect spelling 'deutch' and doesn't allow language selection to be changed -GAME( 1981, qix2, qix, qix, qix, qix_state, empty_init, ROT270, "Taito America Corporation", "Qix II (Tournament)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, sdungeon, 0, mcu, sdungeon, qixmcu_state, empty_init, ROT270, "Taito America Corporation", "Space Dungeon", MACHINE_SUPPORTS_SAVE ) // actually released July 1982 -GAME( 1981, sdungeona, sdungeon, mcu, sdungeon, qixmcu_state, empty_init, ROT270, "Taito America Corporation", "Space Dungeon (larger roms)", MACHINE_SUPPORTS_SAVE ) // same as above but uses larger ROMs -GAMEL(1982, elecyoyo, 0, mcu, elecyoyo, qixmcu_state, empty_init, ROT270, "Taito America Corporation", "The Electric Yo-Yo (set 1)", MACHINE_SUPPORTS_SAVE, layout_elecyoyo ) -GAMEL(1982, elecyoyo2, elecyoyo, mcu, elecyoyo, qixmcu_state, empty_init, ROT270, "Taito America Corporation", "The Electric Yo-Yo (set 2)", MACHINE_SUPPORTS_SAVE, layout_elecyoyo ) -GAME( 1982, kram, 0, mcu, kram, qixmcu_state, empty_init, ROT0, "Taito America Corporation", "Kram (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, kram2, kram, mcu, kram, qixmcu_state, empty_init, ROT0, "Taito America Corporation", "Kram (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, kram3, kram, kram3, kram, qix_state, init_kram3, ROT0, "Taito America Corporation", "Kram (encrypted)", MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, zookeep, 0, zookeep, zookeep, zookeep_state, empty_init, ROT0, "Taito America Corporation", "Zoo Keeper (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, zookeep2, zookeep, zookeep, zookeep, zookeep_state, empty_init, ROT0, "Taito America Corporation", "Zoo Keeper (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, zookeep3, zookeep, zookeep, zookeep, zookeep_state, empty_init, ROT0, "Taito America Corporation", "Zoo Keeper (set 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, slither, 0, slither, slither, qix_state, empty_init, ROT270, "Century II", "Slither (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, slithera, slither, slither, slither, qix_state, empty_init, ROT270, "Century II", "Slither (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, complexx, 0, qix, complexx, qix_state, empty_init, ROT270, "Taito America Corporation", "Complex X", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, qix, 0, qix, qix, qix_state, empty_init, ROT270, "Taito America Corporation", "Qix (Rev 2)", MACHINE_SUPPORTS_SAVE ) // newest set? closest to 'qix2' +GAME( 1981, qixa, qix, qix, qix, qix_state, empty_init, ROT270, "Taito America Corporation", "Qix (set 2, smaller roms)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, qixb, qix, qix, qix, qix_state, empty_init, ROT270, "Taito America Corporation", "Qix (set 2, larger roms)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, qixo, qix, qix, qix, qix_state, empty_init, ROT270, "Taito America Corporation", "Qix (set 3, earlier)", MACHINE_SUPPORTS_SAVE ) // oldest set / prototype? has incorrect spelling 'deutch' and doesn't allow language selection to be changed +GAME( 1981, qix2, qix, qix, qix, qix_state, empty_init, ROT270, "Taito America Corporation", "Qix II (Tournament)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, sdungeon, 0, mcu, sdungeon, qixmcu_state, empty_init, ROT270, "Taito America Corporation", "Space Dungeon", MACHINE_SUPPORTS_SAVE ) // actually released July 1982 +GAME( 1981, sdungeona, sdungeon, mcu, sdungeon, qixmcu_state, empty_init, ROT270, "Taito America Corporation", "Space Dungeon (larger roms)", MACHINE_SUPPORTS_SAVE ) // same as above but uses larger ROMs +GAMEL(1982, elecyoyo, 0, mcu, elecyoyo, qixmcu_state, empty_init, ROT270, "Taito America Corporation", "The Electric Yo-Yo (set 1)", MACHINE_SUPPORTS_SAVE, layout_elecyoyo ) +GAMEL(1982, elecyoyo2, elecyoyo, mcu, elecyoyo, qixmcu_state, empty_init, ROT270, "Taito America Corporation", "The Electric Yo-Yo (set 2)", MACHINE_SUPPORTS_SAVE, layout_elecyoyo ) +GAME( 1982, kram, 0, mcu, kram, qixmcu_state, empty_init, ROT0, "Taito America Corporation", "Kram (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, kram2, kram, mcu, kram, qixmcu_state, empty_init, ROT0, "Taito America Corporation", "Kram (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, kram3, kram, kram3, kram, qix_state, init_kram3, ROT0, "Taito America Corporation", "Kram (encrypted)", MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, zookeep, 0, zookeep, zookeep, zookeep_state, empty_init, ROT0, "Taito America Corporation", "Zoo Keeper (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, zookeep2, zookeep, zookeep, zookeep, zookeep_state, empty_init, ROT0, "Taito America Corporation", "Zoo Keeper (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, zookeep3, zookeep, zookeep, zookeep, zookeep_state, empty_init, ROT0, "Taito America Corporation", "Zoo Keeper (set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, zookeepbl, zookeep, zookeepbl, zookeep, zookeep_state, empty_init, ROT0, "bootleg", "Zoo Keeper (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, slither, 0, slither, slither, qix_state, empty_init, ROT270, "Century II", "Slither (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, slithera, slither, slither, slither, qix_state, empty_init, ROT270, "Century II", "Slither (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, complexx, 0, qix, complexx, qix_state, empty_init, ROT270, "Taito America Corporation", "Complex X", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/includes/megadriv_acbl.h b/src/mame/includes/megadriv_acbl.h index 12e7a95dc7e..115477423b1 100644 --- a/src/mame/includes/megadriv_acbl.h +++ b/src/mame/includes/megadriv_acbl.h @@ -24,6 +24,7 @@ public: void init_topshoot(); void init_puckpkmn(); void init_hshavoc(); + void init_barek2(); void init_barek3(); void init_sonic2mb(); void init_twinktmb(); @@ -34,6 +35,7 @@ private: uint16_t bl_710000_r(); void aladmdb_w(uint16_t data); uint16_t aladmdb_r(); + uint16_t barek2mb_r(); uint16_t jparkmb_r(); uint16_t twinktmb_r(); uint16_t mk3mdb_dsw_r(offs_t offset); diff --git a/src/mame/includes/qix.h b/src/mame/includes/qix.h index 7ba49a2d8c8..cc4e9bbba41 100644 --- a/src/mame/includes/qix.h +++ b/src/mame/includes/qix.h @@ -168,6 +168,8 @@ public: protected: virtual void machine_start() override; + optional_device m_mcu; + private: uint8_t coin_r(); void coin_w(uint8_t data); @@ -178,8 +180,6 @@ private: void mcu_porta_w(uint8_t data); void mcu_portb_w(uint8_t data); - required_device m_mcu; - /* machine state */ uint8_t m_68705_porta_out; uint8_t m_coinctrl; @@ -194,6 +194,7 @@ public: { } void zookeep(machine_config &config); + void zookeepbl(machine_config &config); void video(machine_config &config); protected: diff --git a/src/mame/machine/qix.cpp b/src/mame/machine/qix.cpp index e7f9b38d3fe..8479daabc6d 100644 --- a/src/mame/machine/qix.cpp +++ b/src/mame/machine/qix.cpp @@ -33,7 +33,10 @@ void qixmcu_state::machine_start() void zookeep_state::machine_start() { - qixmcu_state::machine_start(); + if (m_mcu) + qixmcu_state::machine_start(); + else + qix_state::machine_start(); /* configure the banking */ m_vidbank->configure_entry(0, memregion("videocpu")->base() + 0xa000); diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 0bef4cf2f58..2ef6b0908d7 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -22128,6 +22128,7 @@ megajet // 1993 Sega Mega Jet (Japan) @source:megadriv_acbl.cpp aladmdb // MegaDrive-based hack +barek2mb // MegaDrive-based hack barek3mb // MegaDrive-based hack jparkmb // MegaDrive-based hack mk3mdb // MegaDrive-based hack @@ -34906,6 +34907,7 @@ slithera // (c) 1982 Century II zookeep // ZA (c) 1982 Taito America Corporation zookeep2 // ZA (c) 1982 Taito America Corporation zookeep3 // ZA (c) 1982 Taito America Corporation +zookeepbl // bootleg @source:ql.cpp ql // 1984 Sinclair QL (UK)