From a7ec473a8ce002cae68749e69edb7b32ec8bb0fe Mon Sep 17 00:00:00 2001 From: Dirk Best Date: Wed, 2 Sep 2020 10:47:51 +0200 Subject: New working clones ------------------ Pacom Invader (set 2) [Dirk Best, Guru] CTA Invader [Dirk Best, Guru] --- src/mame/drivers/beaminv.cpp | 74 ++++++++++++++++++++++++++++++++++++++++++-- src/mame/mame.lst | 2 ++ 2 files changed, 74 insertions(+), 2 deletions(-) diff --git a/src/mame/drivers/beaminv.cpp b/src/mame/drivers/beaminv.cpp index 28bf30ab349..e323210244f 100644 --- a/src/mame/drivers/beaminv.cpp +++ b/src/mame/drivers/beaminv.cpp @@ -51,6 +51,10 @@ Stephh's notes (based on the games Z80 code and some tests) : . 2 players game : [0x1838] = 0xaa (player 1) or 0x55 (player 2) - Credits are stored at address 0x1836 (BCD coded, range 0x00-0x99) + Additional notes: + - The only difference with pacominva is that it has some coded added + at the end of ROM 5, however it appears to be unused + ***************************************************************************/ #include "emu.h" @@ -91,8 +95,10 @@ public: void create_interrupt_timer(); void start_interrupt_timer(); void beaminv(machine_config &config); + void ctainv(machine_config &config); void main_io_map(address_map &map); void main_map(address_map &map); + void ctainv_map(address_map &map); }; @@ -253,6 +259,19 @@ void beaminv_state::main_map(address_map &map) } +void beaminv_state::ctainv_map(address_map &map) +{ + map(0x0000, 0x17ff).rom(); + map(0x1800, 0x1fff).ram(); + map(0x2000, 0x23ff).rom().region("maincpu", 0x1800); + map(0x2400, 0x2400).mirror(0x03ff).portr("DSW"); + map(0x2800, 0x2800).mirror(0x03ff).portr("INPUTS"); + map(0x2c00, 0x2c00).mirror(0x03ff).r(FUNC(beaminv_state::controller_r)); + map(0x3800, 0x3800).mirror(0x03ff).r(FUNC(beaminv_state::v128_r)); + map(0x4000, 0x5fff).ram().share("videoram"); +} + + /************************************* * @@ -333,6 +352,23 @@ static INPUT_PORTS_START( pacominv ) INPUT_PORTS_END +static INPUT_PORTS_START( ctainv ) + PORT_INCLUDE( pacominv ) + + PORT_MODIFY("DSW") + PORT_DIPNAME( 0x0c, 0x04, DEF_STR( Bonus_Life ) ) + PORT_DIPSETTING( 0x00, "1000" ) + PORT_DIPSETTING( 0x04, "1500" ) + PORT_DIPSETTING( 0x08, "2000" ) + PORT_DIPSETTING( 0x0c, "2500" ) + PORT_DIPNAME( 0x60, 0x00, "Faster Bombs At" ) // table at 0x1738 + PORT_DIPSETTING( 0x00, "29 Enemies" ) + PORT_DIPSETTING( 0x20, "24 Enemies" ) + PORT_DIPSETTING( 0x40, "19 Enemies" ) + PORT_DIPSETTING( 0x40, "14 Enemies" ) +INPUT_PORTS_END + + /************************************* * @@ -357,6 +393,15 @@ void beaminv_state::beaminv(machine_config &config) } +void beaminv_state::ctainv(machine_config &config) +{ + beaminv(config); + + m_maincpu->set_clock(9.732_MHz_XTAL / 4); + m_maincpu->set_addrmap(AS_PROGRAM, &beaminv_state::ctainv_map); +} + + /************************************* * @@ -386,6 +431,29 @@ ROM_START( pacominv ) ROM_END +ROM_START( pacominva ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "0.bin", 0x0000, 0x0400, CRC(67e100dd) SHA1(5f58e2ed3da14c48f7c382ee6091a59caf8e0609) ) + ROM_LOAD( "1.bin", 0x0400, 0x0400, CRC(442bbe98) SHA1(0e0382d4f6491629449759747019bd453a458b66) ) + ROM_LOAD( "2.bin", 0x0800, 0x0400, CRC(5d5d2f68) SHA1(e363f9445bbba1492188efe1830cae96f6078878) ) + ROM_LOAD( "3.bin", 0x0c00, 0x0400, CRC(527906b8) SHA1(9bda7da653db64246597ca386adab4cbab319189) ) + ROM_LOAD( "4.bin", 0x1000, 0x0400, CRC(920bb3f0) SHA1(3b9897d31c551e0b9193f775a6be65376b4a8c34) ) + ROM_LOAD( "5.bin", 0x1400, 0x0400, CRC(72972e81) SHA1(1e5f820eb7b30f2f1b63d077eab786cb2b836e26) ) +ROM_END + + +ROM_START( ctainv ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "0.bin", 0x0000, 0x0400, CRC(363cd088) SHA1(125dfa97b80369da7c2e8fd84caa14bdf7df80dc) ) + ROM_LOAD( "1.bin", 0x0400, 0x0400, CRC(04057d07) SHA1(749acd65f01cd408d3d452cba902580fc2e4cd49) ) + ROM_LOAD( "2.bin", 0x0800, 0x0400, CRC(569a3fe9) SHA1(ed51bd5a950c821531f8a40219339df6882e7d26) ) + ROM_LOAD( "3.bin", 0x0c00, 0x0400, CRC(772db93e) SHA1(65d0a7528c86b4c3377e8cfda82eae51ee078238) ) + ROM_LOAD( "4.bin", 0x1000, 0x0400, CRC(c9f671d9) SHA1(27e8ded5afc92f1eef9968a6af4b8c5af482904f) ) + ROM_LOAD( "5.bin", 0x1400, 0x0400, CRC(a028342f) SHA1(32fd83b0ac8215935032a22e3bfd9fcf1b8402c0) ) + ROM_LOAD( "6.bin", 0x1800, 0x0400, CRC(06dcb63c) SHA1(4d5260b3785e2c215dd0b3c9f8457cf4a557a452) ) +ROM_END + + /************************************* * @@ -393,5 +461,7 @@ ROM_END * *************************************/ -GAMEL( 1979, beaminv, 0, beaminv, beaminv, beaminv_state, empty_init, ROT270, "Teknon Kogyo", "Beam Invader", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE, layout_beaminv ) -GAMEL( 1979, pacominv, beaminv, beaminv, pacominv, beaminv_state, empty_init, ROT270, "Pacom Corporation", "Pacom Invader", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE, layout_beaminv ) +GAMEL( 1979, beaminv, 0, beaminv, beaminv, beaminv_state, empty_init, ROT270, "Teknon Kogyo", "Beam Invader", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE, layout_beaminv ) +GAMEL( 1979, pacominv, beaminv, beaminv, pacominv, beaminv_state, empty_init, ROT270, "Pacom Corporation", "Pacom Invader (set 1)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE, layout_beaminv ) +GAMEL( 19??, pacominva, beaminv, beaminv, pacominv, beaminv_state, empty_init, ROT270, "Pacom Corporation", "Pacom Invader (set 2)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE, layout_beaminv ) +GAME ( 19??, ctainv, beaminv, ctainv, ctainv, beaminv_state, empty_init, ROT270, "CTA Corporation", "CTA Invader", MACHINE_WRONG_COLORS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 38924511d91..85141c75122 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -3314,6 +3314,8 @@ bcs3d // @source:beaminv.cpp beaminv // (c) 1979 Tekunon Kougyou (Arcade TV Game List - P.95, Left, 9 from top) pacominv // (c) 1979 Pacom Corporation +pacominva // Pacom Corporation +ctainv // CTA Corporation @source:beathead.cpp beathead // (proto) (c) 1993 -- cgit v1.2.3