summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/hh_hmcs40.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/hh_hmcs40.cpp')
-rw-r--r--src/mame/drivers/hh_hmcs40.cpp1382
1 files changed, 681 insertions, 701 deletions
diff --git a/src/mame/drivers/hh_hmcs40.cpp b/src/mame/drivers/hh_hmcs40.cpp
index b1a48703efa..e473e124db4 100644
--- a/src/mame/drivers/hh_hmcs40.cpp
+++ b/src/mame/drivers/hh_hmcs40.cpp
@@ -25,7 +25,7 @@
*41 HD38800A 1982, Gakken Puck Monster
*51 HD38800A 1981, Actronics(Hanzawa) Twinvader (larger white version)
@70 HD38800A 1982, Coleco Galaxian
- @73 HD38800A 1982, Mattel Star Hawk (PT-317B)
+ @73 HD38800A 1982, Bandai(Mattel) Star Hawk (PT-317B)
@77 HD38800A 1982, Bandai Frisky Tom (PT-327A)
@88 HD38800A 1984, Tomy Tron (THN-02)
@@ -70,6 +70,7 @@
TODO:
+ - cdkong discrete sound (simple volume decay, simulated for now)
- cgalaxn discrete sound (alien attacking sound effect)
- gckong random lockups (tap the jump button repeatedly): mcu stack overflow,
works ok if stack levels is increased, 38800 B rev. has more stack levels?
@@ -97,17 +98,10 @@
#include "screen.h"
#include "speaker.h"
-// internal artwork (complete)
+// internal artwork
#include "pairmtch.lh"
#include "sag.lh"
-// internal artwork (bezel overlay)
-#include "bambball.lh"
-#include "gckong.lh"
-#include "mwcbaseb.lh"
-#include "msthawk.lh"
-#include "packmon.lh"
-
//#include "hh_hmcs40_test.lh" // common test-layout - no svg artwork(yet), use external artwork
@@ -340,12 +334,10 @@ INPUT_CHANGED_MEMBER(hh_hmcs40_state::single_interrupt_line)
/***************************************************************************
- Minidrivers (subclass, I/O, Inputs, Machine Config, ROM Defs)
+ Minidrivers (subclass, I/O, Inputs, Machine Config)
***************************************************************************/
-namespace {
-
/***************************************************************************
Bambino Dribble Away Basketball (manufactured in Japan)
@@ -358,8 +350,8 @@ namespace {
class bambball_state : public hh_hmcs40_state
{
public:
- bambball_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ bambball_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(plate_w);
@@ -446,27 +438,15 @@ void bambball_state::bambball(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 478);
- screen.set_visarea_full();
+ screen.set_visarea(0, 1920-1, 0, 478-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_bambball);
/* sound hardware */
SPEAKER(config, "mono").front_center();
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( bambball )
- ROM_REGION( 0x1000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38750a08", 0x0000, 0x0800, CRC(907fef18) SHA1(73fe7ca7c6332268a3a9abc5ac88ada2991012fb) )
- ROM_CONTINUE( 0x0f00, 0x0080 )
-
- ROM_REGION( 281988, "svg", 0)
- ROM_LOAD( "bambball.svg", 0, 281988, CRC(63019194) SHA1(cbfb5b051d8f57f6b4d698796030850b3631ed56) )
-ROM_END
-
@@ -483,8 +463,8 @@ ROM_END
class bmboxing_state : public hh_hmcs40_state
{
public:
- bmboxing_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ bmboxing_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -595,8 +575,7 @@ void bmboxing_state::bmboxing(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 529);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1920-1, 0, 529-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -604,17 +583,6 @@ void bmboxing_state::bmboxing(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( bmboxing )
- ROM_REGION( 0x1000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38750a07", 0x0000, 0x0800, CRC(7f33e259) SHA1(c5fcdd6bf060c96666354f09f0570c754f6ed4e0) )
- ROM_CONTINUE( 0x0f00, 0x0080 )
-
- ROM_REGION( 257144, "svg", 0)
- ROM_LOAD( "bmboxing.svg", 0, 257144, CRC(dab81477) SHA1(28b0c844a311e2023ffa71d754e799059b7d050f) )
-ROM_END
-
@@ -631,8 +599,8 @@ ROM_END
class bfriskyt_state : public hh_hmcs40_state
{
public:
- bfriskyt_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ bfriskyt_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -640,7 +608,7 @@ public:
DECLARE_WRITE16_MEMBER(grid_w);
void update_int1();
- DECLARE_INPUT_CHANGED_MEMBER(input_changed) { update_int1(); }
+ DECLARE_INPUT_CHANGED_MEMBER(input_changed);
void bfriskyt(machine_config &config);
};
@@ -707,9 +675,14 @@ static INPUT_PORTS_START( bfriskyt )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, bfriskyt_state, input_changed, nullptr)
PORT_START("IN.5") // INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 0)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(bfriskyt_state::input_changed)
+{
+ update_int1();
+}
+
void bfriskyt_state::bfriskyt(machine_config &config)
{
/* basic machine hardware */
@@ -725,8 +698,7 @@ void bfriskyt_state::bfriskyt(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 675);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1920-1, 0, 675-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -734,17 +706,6 @@ void bfriskyt_state::bfriskyt(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( bfriskyt )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38800a77", 0x0000, 0x1000, CRC(a2445c4f) SHA1(0aaccfec90b66d27dae194d4462d88e654c41578) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 413577, "svg", 0)
- ROM_LOAD( "bfriskyt.svg", 0, 413577, CRC(17090264) SHA1(4512a8a91a459f2ddc258641c6d38c2f48f4160f) )
-ROM_END
-
@@ -767,8 +728,8 @@ ROM_END
class packmon_state : public hh_hmcs40_state
{
public:
- packmon_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ packmon_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(plate_w);
@@ -846,27 +807,147 @@ void packmon_state::packmon(machine_config &config)
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG));
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
- screen.set_size(1920, 680);
- screen.set_visarea_full();
-
+ screen.set_size(1920, 766);
+ screen.set_visarea(0, 1920-1, 0, 766-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_packmon);
/* sound hardware */
SPEAKER(config, "mono").front_center();
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-ROM_START( packmon )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38800a27", 0x0000, 0x1000, CRC(86e09e84) SHA1(ac7d3c43667d5720ca513f8ff51d146d9f2af124) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
- ROM_REGION( 224386, "svg", 0)
- ROM_LOAD( "packmon.svg", 0, 224386, CRC(b2ee5b6b) SHA1(e53b4d5a4118cc5fbec4656580c2aab76af8f8d7) )
-ROM_END
+
+
+/***************************************************************************
+
+ Bandai/Mattel Star Hawk (manufactured in Japan)
+ * PCB label Kaken, PT-317B
+ * Hitachi HD38800A73 MCU
+ * cyan/red VFD display Futaba DM-41ZK, with partial color overlay + bezel
+
+ Kaken was a subsidiary of Bandai. The original Japanese release is unknown,
+ was it canceled and only released in the USA?
+
+ known releases:
+ - Japan: ?
+ - USA: Star Hawk, published by Mattel
+
+***************************************************************************/
+
+class msthawk_state : public hh_hmcs40_state
+{
+public:
+ msthawk_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
+ { }
+
+ void prepare_display();
+ DECLARE_WRITE8_MEMBER(plate_w);
+ DECLARE_WRITE16_MEMBER(grid_w);
+
+ void update_int0();
+ DECLARE_INPUT_CHANGED_MEMBER(input_changed);
+ void msthawk(machine_config &config);
+};
+
+// handlers
+
+void msthawk_state::prepare_display()
+{
+ u16 grid = bitswap<16>(m_grid,15,14,13,12,11,10,0,1,2,3,4,5,6,7,8,9);
+ u32 plate = bitswap<24>(m_plate,23,22,21,19,20,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0);
+ display_matrix(21, 10, plate, grid);
+}
+
+WRITE8_MEMBER(msthawk_state::plate_w)
+{
+ // R0x-R3x: vfd plate
+ int shift = offset * 4;
+ m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
+ prepare_display();
+}
+
+WRITE16_MEMBER(msthawk_state::grid_w)
+{
+ // D5: speaker out
+ m_speaker->level_w(data >> 5 & 1);
+
+ // D10-D15: input mux
+ u8 inp_mux = data >> 10 & 0x3f;
+ if (inp_mux != m_inp_mux)
+ {
+ m_inp_mux = inp_mux;
+ update_int0();
+ }
+
+ // D6-D15: vfd grid
+ m_grid = data >> 6 & 0x3ff;
+
+ // D0-D4: more plates
+ m_plate = (m_plate & 0x00ffff) | (data << 16 & 0x1f0000);
+ prepare_display();
+}
+
+void msthawk_state::update_int0()
+{
+ // INT0 on multiplexed inputs
+ set_interrupt(0, read_inputs(6));
+}
+
+// config
+
+static INPUT_PORTS_START( msthawk )
+ PORT_START("IN.0") // D10 INT0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, msthawk_state, input_changed, nullptr) PORT_NAME("Score")
+
+ PORT_START("IN.1") // D11 INT0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, msthawk_state, input_changed, nullptr) PORT_NAME("Land")
+
+ PORT_START("IN.2") // D12 INT0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, msthawk_state, input_changed, nullptr)
+
+ PORT_START("IN.3") // D13 INT0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, msthawk_state, input_changed, nullptr)
+
+ PORT_START("IN.4") // D14 INT0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, msthawk_state, input_changed, nullptr)
+
+ PORT_START("IN.5") // D15 INT0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, msthawk_state, input_changed, nullptr)
+
+ PORT_START("IN.6") // INT1
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)1) PORT_NAME("Fire")
+INPUT_PORTS_END
+
+INPUT_CHANGED_MEMBER(msthawk_state::input_changed)
+{
+ update_int0();
+}
+
+void msthawk_state::msthawk(machine_config &config)
+{
+ /* basic machine hardware */
+ HD38800(config, m_maincpu, 400000); // approximation
+ m_maincpu->write_r<0>().set(FUNC(msthawk_state::plate_w));
+ m_maincpu->write_r<1>().set(FUNC(msthawk_state::plate_w));
+ m_maincpu->write_r<2>().set(FUNC(msthawk_state::plate_w));
+ m_maincpu->write_r<3>().set(FUNC(msthawk_state::plate_w));
+ m_maincpu->write_d().set(FUNC(msthawk_state::grid_w));
+
+ /* video hardware */
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG));
+ screen.set_svg_region("svg");
+ screen.set_refresh_hz(50);
+ screen.set_size(1920, 696);
+ screen.set_visarea(0, 1920-1, 0, 696-1);
+ TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
+
+ /* sound hardware */
+ SPEAKER(config, "mono").front_center();
+ SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
+}
@@ -885,15 +966,15 @@ ROM_END
class bzaxxon_state : public hh_hmcs40_state
{
public:
- bzaxxon_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ bzaxxon_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(plate_w);
DECLARE_WRITE16_MEMBER(grid_w);
void update_int1();
- DECLARE_INPUT_CHANGED_MEMBER(input_changed) { update_int1(); }
+ DECLARE_INPUT_CHANGED_MEMBER(input_changed);
void bzaxxon(machine_config &config);
};
@@ -953,13 +1034,18 @@ static INPUT_PORTS_START( bzaxxon )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, bzaxxon_state, input_changed, nullptr)
PORT_START("IN.4") // INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 0)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
PORT_START("IN.5") // port D
PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_SELECT )
PORT_BIT( 0xfff7, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(bzaxxon_state::input_changed)
+{
+ update_int1();
+}
+
void bzaxxon_state::bzaxxon(machine_config &config)
{
/* basic machine hardware */
@@ -976,8 +1062,7 @@ void bzaxxon_state::bzaxxon(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(613, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 613-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -985,17 +1070,6 @@ void bzaxxon_state::bzaxxon(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( bzaxxon )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38800b19", 0x0000, 0x1000, CRC(4fecb80d) SHA1(7adf079480ffd3825ad5ae1eaa4d892eecbcc42d) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 521080, "svg", 0)
- ROM_LOAD( "bzaxxon.svg", 0, 521080, BAD_DUMP CRC(f4fbb2de) SHA1(83db400e67d91ae4bfee3e8568ae9df94ebede19) )
-ROM_END
-
@@ -1011,15 +1085,15 @@ ROM_END
class zackman_state : public hh_hmcs40_state
{
public:
- zackman_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ zackman_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(plate_w);
DECLARE_WRITE16_MEMBER(grid_w);
void update_int0();
- DECLARE_INPUT_CHANGED_MEMBER(input_changed) { update_int0(); }
+ DECLARE_INPUT_CHANGED_MEMBER(input_changed);
void zackman(machine_config &config);
};
@@ -1079,9 +1153,14 @@ static INPUT_PORTS_START( zackman )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, zackman_state, input_changed, nullptr)
PORT_START("IN.4") // INT1
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 1)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)1)
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(zackman_state::input_changed)
+{
+ update_int0();
+}
+
void zackman_state::zackman(machine_config &config)
{
/* basic machine hardware */
@@ -1100,8 +1179,7 @@ void zackman_state::zackman(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(487, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 487-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -1109,17 +1187,6 @@ void zackman_state::zackman(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( zackman )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a49", 0x0000, 0x1000, CRC(b97f5ef6) SHA1(7fe20e8107361caf9ea657e504be1f8b10b8b03f) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 910689, "svg", 0)
- ROM_LOAD( "zackman.svg", 0, 910689, CRC(5f322820) SHA1(4210aff160e5de9a409aba8b915aaebff2a92647) )
-ROM_END
-
@@ -1136,8 +1203,8 @@ ROM_END
class bpengo_state : public hh_hmcs40_state
{
public:
- bpengo_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ bpengo_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -1145,7 +1212,7 @@ public:
DECLARE_WRITE16_MEMBER(grid_w);
void update_int0();
- DECLARE_INPUT_CHANGED_MEMBER(input_changed) { update_int0(); }
+ DECLARE_INPUT_CHANGED_MEMBER(input_changed);
void bpengo(machine_config &config);
};
@@ -1206,7 +1273,7 @@ static INPUT_PORTS_START( bpengo )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, bpengo_state, input_changed, nullptr)
PORT_START("IN.4") // INT1
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 1)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)1)
PORT_START("IN.5") // port D
PORT_CONFNAME( 0x0800, 0x0000, "Factory Test" )
@@ -1215,6 +1282,11 @@ static INPUT_PORTS_START( bpengo )
PORT_BIT( 0xf7ff, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(bpengo_state::input_changed)
+{
+ update_int0();
+}
+
void bpengo_state::bpengo(machine_config &config)
{
/* basic machine hardware */
@@ -1234,8 +1306,7 @@ void bpengo_state::bpengo(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 759);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1920-1, 0, 759-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -1243,17 +1314,6 @@ void bpengo_state::bpengo(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( bpengo )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a63", 0x0000, 0x1000, CRC(ebd6bc64) SHA1(0a322c47b9553a2739a85908ce64b9650cf93d49) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 744461, "svg", 0)
- ROM_LOAD( "bpengo.svg", 0, 744461, BAD_DUMP CRC(2b9abaa5) SHA1(c70a6ac1fa757fdd3ababfe6e00573ef1410c1eb) )
-ROM_END
-
@@ -1270,8 +1330,8 @@ ROM_END
class bbtime_state : public hh_hmcs40_state
{
public:
- bbtime_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ bbtime_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -1279,7 +1339,7 @@ public:
DECLARE_WRITE16_MEMBER(grid_w);
void update_int0();
- DECLARE_INPUT_CHANGED_MEMBER(input_changed) { update_int0(); }
+ DECLARE_INPUT_CHANGED_MEMBER(input_changed);
void bbtime(machine_config &config);
};
@@ -1343,9 +1403,14 @@ static INPUT_PORTS_START( bbtime )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, bbtime_state, input_changed, nullptr)
PORT_START("IN.5") // INT1
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 1)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)1)
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(bbtime_state::input_changed)
+{
+ update_int0();
+}
+
void bbtime_state::bbtime(machine_config &config)
{
/* basic machine hardware */
@@ -1364,8 +1429,7 @@ void bbtime_state::bbtime(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(379, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 379-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -1373,17 +1437,6 @@ void bbtime_state::bbtime(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( bbtime )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a65", 0x0000, 0x1000, CRC(33611faf) SHA1(29b6a30ed543688d31ec2aa18f7938fa4eef30b0) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 461605, "svg", 0)
- ROM_LOAD( "bbtime.svg", 0, 461605, BAD_DUMP CRC(5b335271) SHA1(46c45b711358e8397ae707668aecead9e341ab8a) )
-ROM_END
-
@@ -1400,8 +1453,8 @@ ROM_END
class bdoramon_state : public hh_hmcs40_state
{
public:
- bdoramon_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ bdoramon_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(plate_w);
@@ -1439,10 +1492,10 @@ WRITE16_MEMBER(bdoramon_state::grid_w)
static INPUT_PORTS_START( bdoramon )
PORT_START("IN.0") // INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 0)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
PORT_START("IN.1") // INT1
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 1)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)1)
PORT_START("IN.2") // port D
PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
@@ -1474,8 +1527,7 @@ void bdoramon_state::bdoramon(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 668);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1920-1, 0, 668-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -1483,17 +1535,6 @@ void bdoramon_state::bdoramon(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( bdoramon )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38800b43", 0x0000, 0x1000, CRC(9387ca42) SHA1(8937e208934b34bd9f49700aa50287dfc8bda76c) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 624751, "svg", 0)
- ROM_LOAD( "bdoramon.svg", 0, 624751, CRC(5dc4017c) SHA1(2091765de401969651b8eb22067572be72d12398) )
-ROM_END
-
@@ -1510,8 +1551,8 @@ ROM_END
class bultrman_state : public hh_hmcs40_state
{
public:
- bultrman_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ bultrman_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(plate_w);
@@ -1550,7 +1591,7 @@ WRITE16_MEMBER(bultrman_state::grid_w)
static INPUT_PORTS_START( bultrman )
PORT_START("IN.0") // INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 0)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
PORT_START("IN.1") // port D
PORT_CONFNAME( 0x0010, 0x0000, "Factory Test" )
@@ -1577,8 +1618,7 @@ void bultrman_state::bultrman(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 673);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1920-1, 0, 673-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -1586,17 +1626,6 @@ void bultrman_state::bultrman(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( bultrman )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38800b52", 0x0000, 0x1000, CRC(88d372dc) SHA1(f2ac3b89be8afe6fb65914ccebe1a56316b9472a) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 405717, "svg", 0)
- ROM_LOAD( "bultrman.svg", 0, 405717, CRC(13367971) SHA1(f294898712d1e146ff267bb1e3cfd059f972b248) )
-ROM_END
-
@@ -1613,8 +1642,8 @@ ROM_END
class machiman_state : public hh_hmcs40_state
{
public:
- machiman_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ machiman_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -1653,7 +1682,7 @@ WRITE16_MEMBER(machiman_state::grid_w)
static INPUT_PORTS_START( machiman )
PORT_START("IN.0") // INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 0)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
PORT_START("IN.1") // port D
PORT_BIT( 0x3fff, IP_ACTIVE_HIGH, IPT_UNUSED )
@@ -1678,8 +1707,7 @@ void machiman_state::machiman(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1534, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1534-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -1687,17 +1715,6 @@ void machiman_state::machiman(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( machiman )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a85", 0x0000, 0x1000, CRC(894b4954) SHA1(cab49638a326b031aa548301beb16f818759ef62) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 374097, "svg", 0)
- ROM_LOAD( "machiman.svg", 0, 374097, CRC(78af02ac) SHA1(1b4bbea3e46e1bf33149727d9725bc9b18652b9c) )
-ROM_END
-
@@ -1719,8 +1736,8 @@ ROM_END
class pairmtch_state : public hh_hmcs40_state
{
public:
- pairmtch_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag),
+ pairmtch_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag),
m_audiocpu(*this, "audiocpu"),
m_soundlatch(*this, "soundlatch%u", 0)
{ }
@@ -1776,6 +1793,7 @@ WRITE8_MEMBER(pairmtch_state::sound_w)
m_soundlatch[0]->write(space, 0, bitswap<8>(data,7,6,5,4,0,1,2,3));
}
+
// handlers: audiocpu side
WRITE8_MEMBER(pairmtch_state::sound2_w)
@@ -1855,18 +1873,6 @@ void pairmtch_state::pairmtch(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch[1]);
}
-// roms
-
-ROM_START( pairmtch )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a88", 0x0000, 0x1000, CRC(ffa35730) SHA1(5a80b9025aaad2ac0ab0b1436a1355ae8cd3f868) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 0x2000, "audiocpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a89", 0x0000, 0x1000, CRC(3533ec56) SHA1(556d69e78a0ee1bf766fce16ed58992d7272d57f) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-ROM_END
-
@@ -1885,8 +1891,8 @@ ROM_END
class alnattck_state : public hh_hmcs40_state
{
public:
- alnattck_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ alnattck_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(plate_w);
@@ -1972,8 +1978,7 @@ void alnattck_state::alnattck(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 700);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1920-1, 0, 700-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -1981,17 +1986,6 @@ void alnattck_state::alnattck(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( alnattck )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38800a25", 0x0000, 0x1000, CRC(18b50869) SHA1(11e9d5f7b4ae818b077b0ee14a3b43190e20bff3) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 564271, "svg", 0)
- ROM_LOAD( "alnattck.svg", 0, 564271, CRC(5466d1d4) SHA1(3295272015969e58fddc53272769e1fc1bd4b355) )
-ROM_END
-
@@ -2009,15 +2003,15 @@ ROM_END
class cdkong_state : public hh_hmcs40_state
{
public:
- cdkong_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ cdkong_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
void prepare_display();
DECLARE_WRITE8_MEMBER(plate_w);
DECLARE_WRITE16_MEMBER(grid_w);
- void speaker_update();
+ void speaker_decay_reset();
TIMER_DEVICE_CALLBACK_MEMBER(speaker_decay_sim);
double m_speaker_volume;
void cdkong(machine_config &config);
@@ -2026,31 +2020,21 @@ protected:
virtual void machine_start() override;
};
-void cdkong_state::machine_start()
-{
- hh_hmcs40_state::machine_start();
-
- // zerofill/init
- m_speaker_volume = 0;
- save_item(NAME(m_speaker_volume));
-}
-
// handlers
-void cdkong_state::speaker_update()
+void cdkong_state::speaker_decay_reset()
{
if (m_r[1] & 8)
m_speaker_volume = 1.0;
- int level = (m_d & 8) ? 0x7fff : 0;
- m_speaker->level_w(level * m_speaker_volume);
+ m_speaker->set_output_gain(0, m_speaker_volume);
}
TIMER_DEVICE_CALLBACK_MEMBER(cdkong_state::speaker_decay_sim)
{
// volume decays when speaker is off (divisor and timer period determine duration)
- speaker_update();
- m_speaker_volume /= 1.02;
+ speaker_decay_reset();
+ m_speaker_volume /= 1.015;
}
void cdkong_state::prepare_display()
@@ -2063,7 +2047,7 @@ WRITE8_MEMBER(cdkong_state::plate_w)
{
// R13: speaker on
m_r[offset] = data;
- speaker_update();
+ speaker_decay_reset();
// R0x-R6x: vfd plate
int shift = offset * 4;
@@ -2074,8 +2058,7 @@ WRITE8_MEMBER(cdkong_state::plate_w)
WRITE16_MEMBER(cdkong_state::grid_w)
{
// D3: speaker out
- m_d = data;
- speaker_update();
+ m_speaker->level_w(data >> 3 & 1);
// D4-D14: vfd grid
m_grid = data >> 4 & 0x7ff;
@@ -2086,7 +2069,7 @@ WRITE16_MEMBER(cdkong_state::grid_w)
static INPUT_PORTS_START( cdkong )
PORT_START("IN.0") // INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 0)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
PORT_START("IN.1") // port D
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
@@ -2096,7 +2079,14 @@ static INPUT_PORTS_START( cdkong )
PORT_BIT( 0x7ff8, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
-static s16 cdkong_speaker_levels[0x8000];
+void cdkong_state::machine_start()
+{
+ hh_hmcs40_state::machine_start();
+
+ // zerofill/init
+ m_speaker_volume = 0;
+ save_item(NAME(m_speaker_volume));
+}
void cdkong_state::cdkong(machine_config &config)
{
@@ -2117,33 +2107,15 @@ void cdkong_state::cdkong(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(605, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 605-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
SPEAKER(config, "mono").front_center();
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
-
TIMER(config, "speaker_decay").configure_periodic(FUNC(cdkong_state::speaker_decay_sim), attotime::from_msec(1));
-
- // set volume levels (set_output_gain is too slow for sub-frame intervals)
- for (int i = 0; i < 0x8000; i++)
- cdkong_speaker_levels[i] = i;
- m_speaker->set_levels(0x8000, cdkong_speaker_levels);
}
-// roms
-
-ROM_START( cdkong )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a45", 0x0000, 0x1000, CRC(196b8070) SHA1(da85d1eb4b048b77f3168630662ab94ec9baa262) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 359199, "svg", 0)
- ROM_LOAD( "cdkong.svg", 0, 359199, CRC(ba159fd5) SHA1(3188e2ed3234f39ac9ee93a485a7e73314bc3457) )
-ROM_END
-
@@ -2167,8 +2139,8 @@ ROM_END
class cgalaxn_state : public hh_hmcs40_state
{
public:
- cgalaxn_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ cgalaxn_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -2189,13 +2161,6 @@ void cgalaxn_state::prepare_display()
display_matrix(15, 12, plate, grid);
}
-INPUT_CHANGED_MEMBER(cgalaxn_state::player_switch)
-{
- // 2-player switch directly enables plate 14
- m_plate = (m_plate & 0x3fff) | (newval ? 0 : 0x4000);
- prepare_display();
-}
-
WRITE8_MEMBER(cgalaxn_state::grid_w)
{
// R10,R11: input mux
@@ -2242,12 +2207,19 @@ static INPUT_PORTS_START( cgalaxn )
PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.2") // INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 0)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
PORT_START("IN.3") // INT1
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 1)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)1)
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(cgalaxn_state::player_switch)
+{
+ // 2-player switch directly enables plate 14
+ m_plate = (m_plate & 0x3fff) | (newval ? 0 : 0x4000);
+ prepare_display();
+}
+
void cgalaxn_state::cgalaxn(machine_config &config)
{
/* basic machine hardware */
@@ -2263,8 +2235,7 @@ void cgalaxn_state::cgalaxn(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(526, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 526-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -2272,17 +2243,6 @@ void cgalaxn_state::cgalaxn(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( cgalaxn )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38800a70", 0x0000, 0x1000, CRC(a4c5ed1d) SHA1(0f647cb78437d7e62411febf7c9ce3c5b6753a80) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 712204, "svg", 0)
- ROM_LOAD( "cgalaxn.svg", 0, 712204, CRC(67ec57bf) SHA1(195c9867b321da9768ce287d1060ceae50345dd4) )
-ROM_END
-
@@ -2311,8 +2271,8 @@ ROM_END
class cpacman_state : public hh_hmcs40_state
{
public:
- cpacman_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ cpacman_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(plate_w);
@@ -2396,8 +2356,7 @@ void cpacman_state::cpacman(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(484, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 484-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -2405,26 +2364,6 @@ void cpacman_state::cpacman(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( cpacman )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a29", 0x0000, 0x1000, CRC(1082d577) SHA1(0ef73132bd41f6ca1e4c001ae19f7f7c97eaa8d1) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 359765, "svg", 0)
- ROM_LOAD( "cpacman.svg", 0, 359765, CRC(e3810a46) SHA1(d0994edd71a6adc8f238c71e360a8606ce397a14) )
-ROM_END
-
-ROM_START( cpacmanr1 )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a28", 0x0000, 0x1000, CRC(d2ed57e5) SHA1(f56f1341485ac28ea9e6cc4d162fab18d8a4c977) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 359765, "svg", 0)
- ROM_LOAD( "cpacman.svg", 0, 359765, CRC(e3810a46) SHA1(d0994edd71a6adc8f238c71e360a8606ce397a14) )
-ROM_END
-
@@ -2448,8 +2387,8 @@ ROM_END
class cmspacmn_state : public hh_hmcs40_state
{
public:
- cmspacmn_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ cmspacmn_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(plate_w);
@@ -2533,8 +2472,7 @@ void cmspacmn_state::cmspacmn(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(481, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 481-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -2542,17 +2480,6 @@ void cmspacmn_state::cmspacmn(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( cmspacmn )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a61", 0x0000, 0x1000, CRC(76276318) SHA1(9d6ff3f49b4cdaee5c9e238c1ed638bfb9b99aa7) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 849327, "svg", 0)
- ROM_LOAD( "cmspacmn.svg", 0, 849327, CRC(4110ad07) SHA1(76113a2ce0fb1c6dab4e26fd59a13dc89d950d75) )
-ROM_END
-
@@ -2573,8 +2500,8 @@ ROM_END
class sag_state : public hh_hmcs40_state
{
public:
- sag_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ sag_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -2692,26 +2619,6 @@ void sag_state::sag(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( sag_si2 )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "inv2_hd38800a31", 0x0000, 0x1000, BAD_DUMP CRC(29c8c100) SHA1(41cd413065659c6d7d5b2408de2ca6d51c49629a) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-ROM_END
-
-ROM_START( sag_bb4 )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "b-b5_hd38800a37", 0x0000, 0x1000, CRC(64852bd5) SHA1(fb1c24ca43934ceb6fc35ac7c35b71e6e843dbc5) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-ROM_END
-
-ROM_START( sag_pb )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "pinb_hd38800a38", 0x0000, 0x1000, CRC(6e53a56b) SHA1(13f057eab2e4cfbb3ef1247a041abff15ae727c9) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-ROM_END
-
@@ -2728,8 +2635,8 @@ ROM_END
class egalaxn2_state : public hh_hmcs40_state
{
public:
- egalaxn2_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ egalaxn2_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -2825,8 +2732,7 @@ void egalaxn2_state::egalaxn2(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(505, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 505-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -2834,17 +2740,6 @@ void egalaxn2_state::egalaxn2(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( egalaxn2 )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a13", 0x0000, 0x1000, CRC(112b721b) SHA1(4a185bc57ea03fe64f61f7db4da37b16eeb0cb54) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 507945, "svg", 0)
- ROM_LOAD( "egalaxn2.svg", 0, 507945, CRC(b72a8721) SHA1(2d90fca6ce962710525b631e5bc8f75d79332b9d) )
-ROM_END
-
@@ -2863,8 +2758,8 @@ ROM_END
class epacman2_state : public egalaxn2_state
{
public:
- epacman2_state(const machine_config &mconfig, device_type type, const char *tag) :
- egalaxn2_state(mconfig, type, tag)
+ epacman2_state(const machine_config &mconfig, device_type type, const char *tag)
+ : egalaxn2_state(mconfig, type, tag)
{ }
void epacman2(machine_config &config);
@@ -2909,31 +2804,10 @@ void epacman2_state::epacman2(machine_config &config)
egalaxn2(config);
/* video hardware */
- screen_device *screen = subdevice<screen_device>("screen");
- screen->set_size(505, 1080);
- screen->set_visarea_full();
+ subdevice<screen_device>("screen")->set_size(505, 1080);
+ subdevice<screen_device>("screen")->set_visarea(0, 505-1, 0, 1080-1);
}
-// roms
-
-ROM_START( epacman2 )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a23", 0x0000, 0x1000, CRC(6eab640f) SHA1(509bdd02be915089e13769f22a08e03509f03af4) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 262480, "svg", 0)
- ROM_LOAD( "epacman2.svg", 0, 262480, CRC(73bd9671) SHA1(a3ac754c0e060da50b65f3d0f9630d9c3d871650) )
-ROM_END
-
-ROM_START( epacman2r )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a23", 0x0000, 0x1000, CRC(6eab640f) SHA1(509bdd02be915089e13769f22a08e03509f03af4) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 262483, "svg", 0)
- ROM_LOAD( "epacman2r.svg", 0, 262483, CRC(279b629a) SHA1(4c499fb143aadf4f6722b994a22a0d0d3c5150b6) )
-ROM_END
-
@@ -2951,8 +2825,8 @@ ROM_END
class eturtles_state : public hh_hmcs40_state
{
public:
- eturtles_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag),
+ eturtles_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag),
m_audiocpu(*this, "audiocpu"),
m_cop_irq(0)
{ }
@@ -2970,21 +2844,13 @@ public:
DECLARE_READ8_MEMBER(cop_ack_r);
void update_int();
- DECLARE_INPUT_CHANGED_MEMBER(input_changed) { update_int(); }
+ DECLARE_INPUT_CHANGED_MEMBER(input_changed);
void eturtles(machine_config &config);
protected:
virtual void machine_start() override;
};
-void eturtles_state::machine_start()
-{
- hh_hmcs40_state::machine_start();
-
- // register for savestates
- save_item(NAME(m_cop_irq));
-}
-
// handlers: maincpu side
void eturtles_state::prepare_display()
@@ -3029,6 +2895,7 @@ void eturtles_state::update_int()
set_interrupt(1, inp & 2);
}
+
// handlers: COP side
WRITE_LINE_MEMBER(eturtles_state::speaker_w)
@@ -3088,6 +2955,19 @@ static INPUT_PORTS_START( eturtles )
PORT_CONFSETTING( 0x01, "2" )
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(eturtles_state::input_changed)
+{
+ update_int();
+}
+
+void eturtles_state::machine_start()
+{
+ hh_hmcs40_state::machine_start();
+
+ // register for savestates
+ save_item(NAME(m_cop_irq));
+}
+
void eturtles_state::eturtles(machine_config &config)
{
/* basic machine hardware */
@@ -3115,8 +2995,7 @@ void eturtles_state::eturtles(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(484, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 484-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -3124,20 +3003,6 @@ void eturtles_state::eturtles(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( eturtles )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a43", 0x0000, 0x1000, CRC(446aa4e2) SHA1(d1c0fb14ea7081def53b1174964b39eed1e5d5e6) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 0x0200, "audiocpu", 0 )
- ROM_LOAD( "cop411l-ked_n", 0x0000, 0x0200, CRC(503d26e9) SHA1(a53d24d62195bfbceff2e4a43199846e0950aef6) )
-
- ROM_REGION( 1027626, "svg", 0)
- ROM_LOAD( "eturtles.svg", 0, 1027626, CRC(b4f7abff) SHA1(e9b065a3a3fef3c71495002945724a86c2a68eb4) )
-ROM_END
-
@@ -3155,8 +3020,8 @@ ROM_END
class estargte_state : public eturtles_state
{
public:
- estargte_state(const machine_config &mconfig, device_type type, const char *tag) :
- eturtles_state(mconfig, type, tag)
+ estargte_state(const machine_config &mconfig, device_type type, const char *tag)
+ : eturtles_state(mconfig, type, tag)
{ }
virtual void prepare_display() override;
@@ -3238,8 +3103,7 @@ void estargte_state::estargte(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 854);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1920-1, 0, 854-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -3247,20 +3111,6 @@ void estargte_state::estargte(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( estargte )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a42", 0x0000, 0x1000, CRC(5f6d55a6) SHA1(0da32149790fa5f16097338fc80536b462169e0c) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 0x0200, "audiocpu", 0 )
- ROM_LOAD( "cop411l-kec_n", 0x0000, 0x0200, CRC(fbd3c2d3) SHA1(65b8b24d38678c3fa970bfd639e9449a75a28927) )
-
- ROM_REGION( 462214, "svg", 0)
- ROM_LOAD( "estargte.svg", 0, 462214, CRC(282cc090) SHA1(b0f3c21e9a529e5f1e33b90ca25ce3a097fb75a0) )
-ROM_END
-
@@ -3280,8 +3130,8 @@ ROM_END
class ghalien_state : public hh_hmcs40_state
{
public:
- ghalien_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ ghalien_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(plate_w);
@@ -3368,8 +3218,7 @@ void ghalien_state::ghalien(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 699);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1920-1, 0, 699-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -3377,17 +3226,6 @@ void ghalien_state::ghalien(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( ghalien )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38800a04", 0x0000, 0x1000, CRC(019c3328) SHA1(9f1029c5c479f78350952c4f18747341ba5ea7a0) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 462749, "svg", 0)
- ROM_LOAD( "ghalien.svg", 0, 462749, CRC(1acbb1e8) SHA1(7bdeb840bc9080792e24812eba923bf84f7865a6) )
-ROM_END
-
@@ -3408,15 +3246,15 @@ ROM_END
class gckong_state : public hh_hmcs40_state
{
public:
- gckong_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ gckong_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(plate_w);
DECLARE_WRITE16_MEMBER(grid_w);
void update_int1();
- DECLARE_INPUT_CHANGED_MEMBER(input_changed) { update_int1(); }
+ DECLARE_INPUT_CHANGED_MEMBER(input_changed);
void gckong(machine_config &config);
};
@@ -3476,7 +3314,7 @@ static INPUT_PORTS_START( gckong )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, gckong_state, input_changed, nullptr)
PORT_START("IN.4") // INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 0)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
PORT_START("IN.5") // port D
PORT_CONFNAME( 0x0010, 0x0000, DEF_STR( Difficulty ) )
@@ -3485,6 +3323,11 @@ static INPUT_PORTS_START( gckong )
PORT_BIT( 0xffef, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(gckong_state::input_changed)
+{
+ update_int1();
+}
+
void gckong_state::gckong(machine_config &config)
{
/* basic machine hardware */
@@ -3500,28 +3343,15 @@ void gckong_state::gckong(machine_config &config)
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG));
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
- screen.set_size(479, 1080);
- screen.set_visarea_full();
-
+ screen.set_size(506, 1080);
+ screen.set_visarea(0, 506-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_gckong);
/* sound hardware */
SPEAKER(config, "mono").front_center();
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( gckong )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38800b01", 0x0000, 0x1000, CRC(d5a2cca3) SHA1(37bb5784383daab672ed1e0e2362c7a40d8d9b3f) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 346588, "svg", 0)
- ROM_LOAD( "gckong.svg", 0, 346588, CRC(317af984) SHA1(ff6323526d1f5e46eccf8fa8d979175895be75de) )
-ROM_END
-
@@ -3538,15 +3368,15 @@ ROM_END
class gdigdug_state : public hh_hmcs40_state
{
public:
- gdigdug_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ gdigdug_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(plate_w);
DECLARE_WRITE16_MEMBER(grid_w);
void update_int1();
- DECLARE_INPUT_CHANGED_MEMBER(input_changed) { update_int1(); }
+ DECLARE_INPUT_CHANGED_MEMBER(input_changed);
void gdigdug(machine_config &config);
};
@@ -3608,9 +3438,14 @@ static INPUT_PORTS_START( gdigdug )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, gdigdug_state, input_changed, nullptr)
PORT_START("IN.5") // INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 0)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(gdigdug_state::input_changed)
+{
+ update_int1();
+}
+
void gdigdug_state::gdigdug(machine_config &config)
{
/* basic machine hardware */
@@ -3629,8 +3464,7 @@ void gdigdug_state::gdigdug(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(476, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 476-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -3638,17 +3472,6 @@ void gdigdug_state::gdigdug(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( gdigdug )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a69", 0x0000, 0x1000, CRC(501165a9) SHA1(8a15d00c4aa66e870cadde33148426463560d2e6) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 807990, "svg", 0)
- ROM_LOAD( "gdigdug.svg", 0, 807990, CRC(a5b8392d) SHA1(3503829bb1a626a9e70115fb60b656dff8908144) )
-ROM_END
-
@@ -3669,8 +3492,8 @@ ROM_END
class mwcbaseb_state : public hh_hmcs40_state
{
public:
- mwcbaseb_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ mwcbaseb_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -3801,10 +3624,8 @@ void mwcbaseb_state::mwcbaseb(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 478);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1920-1, 0, 478-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_mwcbaseb);
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -3812,156 +3633,6 @@ void mwcbaseb_state::mwcbaseb(machine_config &config)
m_speaker->set_levels(8, mwcbaseb_speaker_levels);
}
-// roms
-
-ROM_START( mwcbaseb )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a09", 0x0000, 0x1000, CRC(25ba7dc0) SHA1(69e0a867fdcf07b454b1faf835e576ae782432c0) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 178441, "svg", 0)
- ROM_LOAD( "mwcbaseb.svg", 0, 178441, CRC(0f631190) SHA1(74a10ad0630af5516f76d5bf5628483d21f6b7be) )
-ROM_END
-
-
-
-
-
-/***************************************************************************
-
- Mattel Star Hawk (manufactured in Japan)
- * PCB label Kaken, PT-317B
- * Hitachi HD38800A73 MCU
- * cyan/red VFD display Futaba DM-41ZK, with partial color overlay + bezel
-
- Before release, it was advertised as "Space Battle"(a Mattel Intellivision game).
- Kaken was a subsidiary of Bandai. Star Hawk shell design is the same as Bandai's
- games from the same era. It's likely that this was made under contract exclusively
- for Mattel. There is no indication that this game was released in Japan by Bandai.
-
-***************************************************************************/
-
-class msthawk_state : public hh_hmcs40_state
-{
-public:
- msthawk_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
- { }
-
- void prepare_display();
- DECLARE_WRITE8_MEMBER(plate_w);
- DECLARE_WRITE16_MEMBER(grid_w);
-
- void update_int0();
- DECLARE_INPUT_CHANGED_MEMBER(input_changed) { update_int0(); }
- void msthawk(machine_config &config);
-};
-
-// handlers
-
-void msthawk_state::prepare_display()
-{
- u16 grid = bitswap<16>(m_grid,15,14,13,12,11,10,0,1,2,3,4,5,6,7,8,9);
- u32 plate = bitswap<24>(m_plate,23,22,21,19,20,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0);
- display_matrix(21, 10, plate, grid);
-}
-
-WRITE8_MEMBER(msthawk_state::plate_w)
-{
- // R0x-R3x: vfd plate
- int shift = offset * 4;
- m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
- prepare_display();
-}
-
-WRITE16_MEMBER(msthawk_state::grid_w)
-{
- // D5: speaker out
- m_speaker->level_w(data >> 5 & 1);
-
- // D10-D15: input mux
- u8 inp_mux = data >> 10 & 0x3f;
- if (inp_mux != m_inp_mux)
- {
- m_inp_mux = inp_mux;
- update_int0();
- }
-
- // D6-D15: vfd grid
- m_grid = data >> 6 & 0x3ff;
-
- // D0-D4: more plates
- m_plate = (m_plate & 0x00ffff) | (data << 16 & 0x1f0000);
- prepare_display();
-}
-
-void msthawk_state::update_int0()
-{
- // INT0 on multiplexed inputs
- set_interrupt(0, read_inputs(6));
-}
-
-// config
-
-static INPUT_PORTS_START( msthawk )
- PORT_START("IN.0") // D10 INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, msthawk_state, input_changed, nullptr) PORT_NAME("Score")
-
- PORT_START("IN.1") // D11 INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, msthawk_state, input_changed, nullptr) PORT_NAME("Land")
-
- PORT_START("IN.2") // D12 INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, msthawk_state, input_changed, nullptr)
-
- PORT_START("IN.3") // D13 INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, msthawk_state, input_changed, nullptr)
-
- PORT_START("IN.4") // D14 INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, msthawk_state, input_changed, nullptr)
-
- PORT_START("IN.5") // D15 INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, msthawk_state, input_changed, nullptr)
-
- PORT_START("IN.6") // INT1
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 1) PORT_NAME("Fire")
-INPUT_PORTS_END
-
-void msthawk_state::msthawk(machine_config &config)
-{
- /* basic machine hardware */
- HD38800(config, m_maincpu, 400000); // approximation
- m_maincpu->write_r<0>().set(FUNC(msthawk_state::plate_w));
- m_maincpu->write_r<1>().set(FUNC(msthawk_state::plate_w));
- m_maincpu->write_r<2>().set(FUNC(msthawk_state::plate_w));
- m_maincpu->write_r<3>().set(FUNC(msthawk_state::plate_w));
- m_maincpu->write_d().set(FUNC(msthawk_state::grid_w));
-
- /* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG));
- screen.set_svg_region("svg");
- screen.set_refresh_hz(50);
- screen.set_size(1920, 696);
- screen.set_visarea_full();
-
- TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
- config.set_default_layout(layout_msthawk);
-
- /* sound hardware */
- SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
-}
-
-// roms
-
-ROM_START( msthawk )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38800a73", 0x0000, 0x1000, CRC(a4f9a523) SHA1(465f06b02e2e7d2277218fd447830725790a816c) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 191888, "svg", 0)
- ROM_LOAD( "msthawk.svg", 0, 191888, CRC(a607fc0f) SHA1(282a412f6462128e09ee8bd18d682dda01297611) )
-ROM_END
-
@@ -3978,8 +3649,8 @@ ROM_END
class pbqbert_state : public hh_hmcs40_state
{
public:
- pbqbert_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ pbqbert_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(plate_w);
@@ -4042,8 +3713,7 @@ void pbqbert_state::pbqbert(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(603, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 603-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -4051,17 +3721,6 @@ void pbqbert_state::pbqbert(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( pbqbert )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38820a70", 0x0000, 0x1000, CRC(be7c80b4) SHA1(0617a80ef7fe188ea221de32e760d45fd4318c67) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 456567, "svg", 0)
- ROM_LOAD( "pbqbert.svg", 0, 456567, CRC(49853a62) SHA1(869377109fb7163e5ef5efadb26ce3955231f6ca) )
-ROM_END
-
@@ -4078,8 +3737,8 @@ ROM_END
class kingman_state : public hh_hmcs40_state
{
public:
- kingman_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ kingman_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -4087,7 +3746,7 @@ public:
DECLARE_WRITE16_MEMBER(grid_w);
void update_int0();
- DECLARE_INPUT_CHANGED_MEMBER(input_changed) { update_int0(); }
+ DECLARE_INPUT_CHANGED_MEMBER(input_changed);
void kingman(machine_config &config);
};
@@ -4151,9 +3810,14 @@ static INPUT_PORTS_START( kingman )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, kingman_state, input_changed, nullptr)
PORT_START("IN.4") // INT1
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 1)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)1)
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(kingman_state::input_changed)
+{
+ update_int0();
+}
+
void kingman_state::kingman(machine_config &config)
{
/* basic machine hardware */
@@ -4169,8 +3833,7 @@ void kingman_state::kingman(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(374, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 374-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -4178,17 +3841,6 @@ void kingman_state::kingman(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( kingman )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38800b23", 0x0000, 0x1000, CRC(f8dfe14f) SHA1(660610d92ae7e5f92bddf5a3bcc2296b2ec3946b) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 396320, "svg", 0)
- ROM_LOAD( "kingman.svg", 0, 396320, CRC(3f52d2a9) SHA1(9291f1a1da3d19c3d6dedb995de0a5feba75b442) )
-ROM_END
-
@@ -4205,8 +3857,8 @@ ROM_END
class tmtron_state : public hh_hmcs40_state
{
public:
- tmtron_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ tmtron_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
void prepare_display();
@@ -4214,7 +3866,7 @@ public:
DECLARE_WRITE16_MEMBER(grid_w);
void update_int1();
- DECLARE_INPUT_CHANGED_MEMBER(input_changed) { update_int1(); }
+ DECLARE_INPUT_CHANGED_MEMBER(input_changed);
void tmtron(machine_config &config);
};
@@ -4278,9 +3930,14 @@ static INPUT_PORTS_START( tmtron )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY PORT_CHANGED_MEMBER(DEVICE_SELF, tmtron_state, input_changed, nullptr)
PORT_START("IN.4") // INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, 0)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
INPUT_PORTS_END
+INPUT_CHANGED_MEMBER(tmtron_state::input_changed)
+{
+ update_int1();
+}
+
void tmtron_state::tmtron(machine_config &config)
{
/* basic machine hardware */
@@ -4296,8 +3953,7 @@ void tmtron_state::tmtron(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(1920, 662);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 1920-1, 0, 662-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -4305,17 +3961,6 @@ void tmtron_state::tmtron(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-
-ROM_START( tmtron )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38800a88", 0x0000, 0x1000, CRC(33db9670) SHA1(d6f747a59356526698784047bcfdbb59e79b9a23) )
- ROM_CONTINUE( 0x1e80, 0x0100 )
-
- ROM_REGION( 384174, "svg", 0)
- ROM_LOAD( "tmtron.svg", 0, 384174, CRC(06bd9e63) SHA1(fb93013ec42dc05f7029ef3c3073c84867f0d077) )
-ROM_END
-
@@ -4336,8 +3981,8 @@ ROM_END
class vinvader_state : public hh_hmcs40_state
{
public:
- vinvader_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_hmcs40_state(mconfig, type, tag)
+ vinvader_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(plate_w);
@@ -4402,8 +4047,7 @@ void vinvader_state::vinvader(machine_config &config)
screen.set_svg_region("svg");
screen.set_refresh_hz(50);
screen.set_size(233, 1080);
- screen.set_visarea_full();
-
+ screen.set_visarea(0, 233-1, 0, 1080-1);
TIMER(config, "display_decay").configure_periodic(FUNC(hh_hmcs40_state::display_decay_tick), attotime::from_msec(1));
/* sound hardware */
@@ -4411,26 +4055,362 @@ void vinvader_state::vinvader(machine_config &config)
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
}
-// roms
-ROM_START( vinvader )
+
+
+
+/***************************************************************************
+
+ Game driver(s)
+
+***************************************************************************/
+
+ROM_START( bambball )
ROM_REGION( 0x1000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38750a45", 0x0000, 0x0800, CRC(32de6056) SHA1(70238c6c40c3d513f8eced1cb81bdd4dbe12f16c) )
+ ROM_LOAD( "hd38750a08", 0x0000, 0x0800, CRC(907fef18) SHA1(73fe7ca7c6332268a3a9abc5ac88ada2991012fb) )
ROM_CONTINUE( 0x0f00, 0x0080 )
- ROM_REGION( 166379, "svg", 0)
- ROM_LOAD( "vinvader.svg", 0, 166379, CRC(b75c448e) SHA1(40d546f9fbdb446883e3ab0e3f678f1be8105159) )
+ ROM_REGION( 281988, "svg", 0)
+ ROM_LOAD( "bambball.svg", 0, 281988, CRC(63019194) SHA1(cbfb5b051d8f57f6b4d698796030850b3631ed56) )
ROM_END
+ROM_START( bmboxing )
+ ROM_REGION( 0x1000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38750a07", 0x0000, 0x0800, CRC(7f33e259) SHA1(c5fcdd6bf060c96666354f09f0570c754f6ed4e0) )
+ ROM_CONTINUE( 0x0f00, 0x0080 )
-} // anonymous namespace
+ ROM_REGION( 257144, "svg", 0)
+ ROM_LOAD( "bmboxing.svg", 0, 257144, CRC(dab81477) SHA1(28b0c844a311e2023ffa71d754e799059b7d050f) )
+ROM_END
-/***************************************************************************
- Game driver(s)
+ROM_START( bfriskyt )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38800a77", 0x0000, 0x1000, CRC(a2445c4f) SHA1(0aaccfec90b66d27dae194d4462d88e654c41578) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 413577, "svg", 0)
+ ROM_LOAD( "bfriskyt.svg", 0, 413577, CRC(17090264) SHA1(4512a8a91a459f2ddc258641c6d38c2f48f4160f) )
+ROM_END
+
+
+ROM_START( packmon )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38800a27", 0x0000, 0x1000, CRC(86e09e84) SHA1(ac7d3c43667d5720ca513f8ff51d146d9f2af124) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 246356, "svg", 0)
+ ROM_LOAD( "packmon.svg", 0, 246356, CRC(991eea96) SHA1(bf42765aea838e9c26453642b01a962399b3e74c) )
+ROM_END
+
+
+ROM_START( msthawk )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38800a73", 0x0000, 0x1000, CRC(a4f9a523) SHA1(465f06b02e2e7d2277218fd447830725790a816c) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 197907, "svg", 0)
+ ROM_LOAD( "msthawk.svg", 0, 197907, CRC(b54efcb9) SHA1(76db2ca156d556bf578995196eca1170b39988bb) )
+ROM_END
+
+
+ROM_START( bzaxxon )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38800b19", 0x0000, 0x1000, CRC(4fecb80d) SHA1(7adf079480ffd3825ad5ae1eaa4d892eecbcc42d) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 521080, "svg", 0)
+ ROM_LOAD( "bzaxxon.svg", 0, 521080, BAD_DUMP CRC(f4fbb2de) SHA1(83db400e67d91ae4bfee3e8568ae9df94ebede19) )
+ROM_END
+
+
+ROM_START( zackman )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a49", 0x0000, 0x1000, CRC(b97f5ef6) SHA1(7fe20e8107361caf9ea657e504be1f8b10b8b03f) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 910689, "svg", 0)
+ ROM_LOAD( "zackman.svg", 0, 910689, CRC(5f322820) SHA1(4210aff160e5de9a409aba8b915aaebff2a92647) )
+ROM_END
+
+
+ROM_START( bpengo )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a63", 0x0000, 0x1000, CRC(ebd6bc64) SHA1(0a322c47b9553a2739a85908ce64b9650cf93d49) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 744461, "svg", 0)
+ ROM_LOAD( "bpengo.svg", 0, 744461, BAD_DUMP CRC(2b9abaa5) SHA1(c70a6ac1fa757fdd3ababfe6e00573ef1410c1eb) )
+ROM_END
+
+
+ROM_START( bbtime )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a65", 0x0000, 0x1000, CRC(33611faf) SHA1(29b6a30ed543688d31ec2aa18f7938fa4eef30b0) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 461605, "svg", 0)
+ ROM_LOAD( "bbtime.svg", 0, 461605, BAD_DUMP CRC(5b335271) SHA1(46c45b711358e8397ae707668aecead9e341ab8a) )
+ROM_END
+
+
+ROM_START( bdoramon )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38800b43", 0x0000, 0x1000, CRC(9387ca42) SHA1(8937e208934b34bd9f49700aa50287dfc8bda76c) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 624751, "svg", 0)
+ ROM_LOAD( "bdoramon.svg", 0, 624751, CRC(5dc4017c) SHA1(2091765de401969651b8eb22067572be72d12398) )
+ROM_END
+
+
+ROM_START( bultrman )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38800b52", 0x0000, 0x1000, CRC(88d372dc) SHA1(f2ac3b89be8afe6fb65914ccebe1a56316b9472a) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 405717, "svg", 0)
+ ROM_LOAD( "bultrman.svg", 0, 405717, CRC(13367971) SHA1(f294898712d1e146ff267bb1e3cfd059f972b248) )
+ROM_END
+
+
+ROM_START( machiman )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a85", 0x0000, 0x1000, CRC(894b4954) SHA1(cab49638a326b031aa548301beb16f818759ef62) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 374097, "svg", 0)
+ ROM_LOAD( "machiman.svg", 0, 374097, CRC(78af02ac) SHA1(1b4bbea3e46e1bf33149727d9725bc9b18652b9c) )
+ROM_END
+
+
+ROM_START( pairmtch )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a88", 0x0000, 0x1000, CRC(ffa35730) SHA1(5a80b9025aaad2ac0ab0b1436a1355ae8cd3f868) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 0x2000, "audiocpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a89", 0x0000, 0x1000, CRC(3533ec56) SHA1(556d69e78a0ee1bf766fce16ed58992d7272d57f) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+ROM_END
+
+
+ROM_START( alnattck )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38800a25", 0x0000, 0x1000, CRC(18b50869) SHA1(11e9d5f7b4ae818b077b0ee14a3b43190e20bff3) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 564271, "svg", 0)
+ ROM_LOAD( "alnattck.svg", 0, 564271, CRC(5466d1d4) SHA1(3295272015969e58fddc53272769e1fc1bd4b355) )
+ROM_END
+
+
+ROM_START( cdkong )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a45", 0x0000, 0x1000, CRC(196b8070) SHA1(da85d1eb4b048b77f3168630662ab94ec9baa262) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 359199, "svg", 0)
+ ROM_LOAD( "cdkong.svg", 0, 359199, CRC(ba159fd5) SHA1(3188e2ed3234f39ac9ee93a485a7e73314bc3457) )
+ROM_END
+
+
+ROM_START( cgalaxn )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38800a70", 0x0000, 0x1000, CRC(a4c5ed1d) SHA1(0f647cb78437d7e62411febf7c9ce3c5b6753a80) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 712204, "svg", 0)
+ ROM_LOAD( "cgalaxn.svg", 0, 712204, CRC(67ec57bf) SHA1(195c9867b321da9768ce287d1060ceae50345dd4) )
+ROM_END
+
+
+ROM_START( cpacman )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a29", 0x0000, 0x1000, CRC(1082d577) SHA1(0ef73132bd41f6ca1e4c001ae19f7f7c97eaa8d1) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 359765, "svg", 0)
+ ROM_LOAD( "cpacman.svg", 0, 359765, CRC(e3810a46) SHA1(d0994edd71a6adc8f238c71e360a8606ce397a14) )
+ROM_END
+
+ROM_START( cpacmanr1 )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a28", 0x0000, 0x1000, CRC(d2ed57e5) SHA1(f56f1341485ac28ea9e6cc4d162fab18d8a4c977) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 359765, "svg", 0)
+ ROM_LOAD( "cpacman.svg", 0, 359765, CRC(e3810a46) SHA1(d0994edd71a6adc8f238c71e360a8606ce397a14) )
+ROM_END
+
+
+ROM_START( cmspacmn )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a61", 0x0000, 0x1000, CRC(76276318) SHA1(9d6ff3f49b4cdaee5c9e238c1ed638bfb9b99aa7) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 849327, "svg", 0)
+ ROM_LOAD( "cmspacmn.svg", 0, 849327, CRC(4110ad07) SHA1(76113a2ce0fb1c6dab4e26fd59a13dc89d950d75) )
+ROM_END
+
+
+ROM_START( sag_si2 )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "inv2_hd38800a31", 0x0000, 0x1000, BAD_DUMP CRC(29c8c100) SHA1(41cd413065659c6d7d5b2408de2ca6d51c49629a) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+ROM_END
+
+
+ROM_START( sag_bb4 )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "b-b5_hd38800a37", 0x0000, 0x1000, CRC(64852bd5) SHA1(fb1c24ca43934ceb6fc35ac7c35b71e6e843dbc5) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+ROM_END
+
+
+ROM_START( sag_pb )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "pinb_hd38800a38", 0x0000, 0x1000, CRC(6e53a56b) SHA1(13f057eab2e4cfbb3ef1247a041abff15ae727c9) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+ROM_END
+
+
+ROM_START( egalaxn2 )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a13", 0x0000, 0x1000, CRC(112b721b) SHA1(4a185bc57ea03fe64f61f7db4da37b16eeb0cb54) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 507945, "svg", 0)
+ ROM_LOAD( "egalaxn2.svg", 0, 507945, CRC(b72a8721) SHA1(2d90fca6ce962710525b631e5bc8f75d79332b9d) )
+ROM_END
+
+
+ROM_START( epacman2 )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a23", 0x0000, 0x1000, CRC(6eab640f) SHA1(509bdd02be915089e13769f22a08e03509f03af4) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 262480, "svg", 0)
+ ROM_LOAD( "epacman2.svg", 0, 262480, CRC(73bd9671) SHA1(a3ac754c0e060da50b65f3d0f9630d9c3d871650) )
+ROM_END
+
+ROM_START( epacman2r )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a23", 0x0000, 0x1000, CRC(6eab640f) SHA1(509bdd02be915089e13769f22a08e03509f03af4) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 262483, "svg", 0)
+ ROM_LOAD( "epacman2r.svg", 0, 262483, CRC(279b629a) SHA1(4c499fb143aadf4f6722b994a22a0d0d3c5150b6) )
+ROM_END
+
+
+ROM_START( estargte )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a42", 0x0000, 0x1000, CRC(5f6d55a6) SHA1(0da32149790fa5f16097338fc80536b462169e0c) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 0x0200, "audiocpu", 0 )
+ ROM_LOAD( "cop411l-kec_n", 0x0000, 0x0200, CRC(fbd3c2d3) SHA1(65b8b24d38678c3fa970bfd639e9449a75a28927) )
+
+ ROM_REGION( 462214, "svg", 0)
+ ROM_LOAD( "estargte.svg", 0, 462214, CRC(282cc090) SHA1(b0f3c21e9a529e5f1e33b90ca25ce3a097fb75a0) )
+ROM_END
+
+
+ROM_START( eturtles )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a43", 0x0000, 0x1000, CRC(446aa4e2) SHA1(d1c0fb14ea7081def53b1174964b39eed1e5d5e6) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 0x0200, "audiocpu", 0 )
+ ROM_LOAD( "cop411l-ked_n", 0x0000, 0x0200, CRC(503d26e9) SHA1(a53d24d62195bfbceff2e4a43199846e0950aef6) )
+
+ ROM_REGION( 1027626, "svg", 0)
+ ROM_LOAD( "eturtles.svg", 0, 1027626, CRC(b4f7abff) SHA1(e9b065a3a3fef3c71495002945724a86c2a68eb4) )
+ROM_END
+
+
+ROM_START( ghalien )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38800a04", 0x0000, 0x1000, CRC(019c3328) SHA1(9f1029c5c479f78350952c4f18747341ba5ea7a0) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 462749, "svg", 0)
+ ROM_LOAD( "ghalien.svg", 0, 462749, CRC(1acbb1e8) SHA1(7bdeb840bc9080792e24812eba923bf84f7865a6) )
+ROM_END
+
+
+ROM_START( gckong )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38800b01", 0x0000, 0x1000, CRC(d5a2cca3) SHA1(37bb5784383daab672ed1e0e2362c7a40d8d9b3f) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 356769, "svg", 0)
+ ROM_LOAD( "gckong.svg", 0, 356769, CRC(e2559b53) SHA1(519309c3a88b5d7f4c0ac5ae05dcdc1153377765) )
+ROM_END
+
+
+ROM_START( gdigdug )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a69", 0x0000, 0x1000, CRC(501165a9) SHA1(8a15d00c4aa66e870cadde33148426463560d2e6) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 807990, "svg", 0)
+ ROM_LOAD( "gdigdug.svg", 0, 807990, CRC(a5b8392d) SHA1(3503829bb1a626a9e70115fb60b656dff8908144) )
+ROM_END
+
+
+ROM_START( mwcbaseb )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a09", 0x0000, 0x1000, CRC(25ba7dc0) SHA1(69e0a867fdcf07b454b1faf835e576ae782432c0) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 178441, "svg", 0)
+ ROM_LOAD( "mwcbaseb.svg", 0, 178441, CRC(0f631190) SHA1(74a10ad0630af5516f76d5bf5628483d21f6b7be) )
+ROM_END
+
+
+ROM_START( pbqbert )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a70", 0x0000, 0x1000, CRC(be7c80b4) SHA1(0617a80ef7fe188ea221de32e760d45fd4318c67) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 456567, "svg", 0)
+ ROM_LOAD( "pbqbert.svg", 0, 456567, CRC(49853a62) SHA1(869377109fb7163e5ef5efadb26ce3955231f6ca) )
+ROM_END
+
+
+ROM_START( kingman )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38800b23", 0x0000, 0x1000, CRC(f8dfe14f) SHA1(660610d92ae7e5f92bddf5a3bcc2296b2ec3946b) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 396320, "svg", 0)
+ ROM_LOAD( "kingman.svg", 0, 396320, CRC(3f52d2a9) SHA1(9291f1a1da3d19c3d6dedb995de0a5feba75b442) )
+ROM_END
+
+
+ROM_START( tmtron )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38800a88", 0x0000, 0x1000, CRC(33db9670) SHA1(d6f747a59356526698784047bcfdbb59e79b9a23) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 384174, "svg", 0)
+ ROM_LOAD( "tmtron.svg", 0, 384174, CRC(06bd9e63) SHA1(fb93013ec42dc05f7029ef3c3073c84867f0d077) )
+ROM_END
+
+
+ROM_START( vinvader )
+ ROM_REGION( 0x1000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38750a45", 0x0000, 0x0800, CRC(32de6056) SHA1(70238c6c40c3d513f8eced1cb81bdd4dbe12f16c) )
+ ROM_CONTINUE( 0x0f00, 0x0080 )
+
+ ROM_REGION( 166379, "svg", 0)
+ ROM_LOAD( "vinvader.svg", 0, 166379, CRC(b75c448e) SHA1(40d546f9fbdb446883e3ab0e3f678f1be8105159) )
+ROM_END
+
-***************************************************************************/
// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
CONS( 1979, bambball, 0, 0, bambball, bambball, bambball_state, empty_init, "Bambino", "Dribble Away Basketball", MACHINE_SUPPORTS_SAVE )
@@ -4438,6 +4418,7 @@ CONS( 1979, bmboxing, 0, 0, bmboxing, bmboxing, bmboxing_state, empty_in
CONS( 1982, bfriskyt, 0, 0, bfriskyt, bfriskyt, bfriskyt_state, empty_init, "Bandai", "Frisky Tom (Bandai)", MACHINE_SUPPORTS_SAVE )
CONS( 1981, packmon, 0, 0, packmon, packmon, packmon_state, empty_init, "Bandai", "Packri Monster", MACHINE_SUPPORTS_SAVE )
+CONS( 1982, msthawk, 0, 0, msthawk, msthawk, msthawk_state, empty_init, "Bandai (Mattel license)", "Star Hawk (Mattel)", MACHINE_SUPPORTS_SAVE )
CONS( 1982, bzaxxon, 0, 0, bzaxxon, bzaxxon, bzaxxon_state, empty_init, "Bandai", "Zaxxon (Bandai)", MACHINE_SUPPORTS_SAVE )
CONS( 1983, zackman, 0, 0, zackman, zackman, zackman_state, empty_init, "Bandai", "Zackman", MACHINE_SUPPORTS_SAVE )
CONS( 1983, bpengo, 0, 0, bpengo, bpengo, bpengo_state, empty_init, "Bandai", "Pengo (Bandai)", MACHINE_SUPPORTS_SAVE )
@@ -4448,7 +4429,7 @@ CONS( 1984, machiman, 0, 0, machiman, machiman, machiman_state, empty_in
CONS( 1984, pairmtch, 0, 0, pairmtch, pairmtch, pairmtch_state, empty_init, "Bandai", "Pair Match", MACHINE_SUPPORTS_SAVE )
CONS( 1981, alnattck, 0, 0, alnattck, alnattck, alnattck_state, empty_init, "Coleco", "Alien Attack", MACHINE_SUPPORTS_SAVE )
-CONS( 1982, cdkong, 0, 0, cdkong, cdkong, cdkong_state, empty_init, "Coleco", "Donkey Kong (Coleco)", MACHINE_SUPPORTS_SAVE )
+CONS( 1982, cdkong, 0, 0, cdkong, cdkong, cdkong_state, empty_init, "Coleco", "Donkey Kong (Coleco)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
CONS( 1982, cgalaxn, 0, 0, cgalaxn, cgalaxn, cgalaxn_state, empty_init, "Coleco", "Galaxian (Coleco)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
CONS( 1981, cpacman, 0, 0, cpacman, cpacman, cpacman_state, empty_init, "Coleco", "Pac-Man (Coleco, Rev. 29)", MACHINE_SUPPORTS_SAVE )
CONS( 1981, cpacmanr1, cpacman, 0, cpacman, cpacman, cpacman_state, empty_init, "Coleco", "Pac-Man (Coleco, Rev. 28)", MACHINE_SUPPORTS_SAVE )
@@ -4460,15 +4441,14 @@ CONS( 1981, sag_pb, 0, 0, sag, sag, sag_state, empty_in
CONS( 1981, egalaxn2, 0, 0, egalaxn2, egalaxn2, egalaxn2_state, empty_init, "Entex", "Galaxian 2 (Entex)", MACHINE_SUPPORTS_SAVE )
CONS( 1981, epacman2, 0, 0, epacman2, epacman2, epacman2_state, empty_init, "Entex", "Pac Man 2 (Entex, cyan Pacman)", MACHINE_SUPPORTS_SAVE )
CONS( 1981, epacman2r, epacman2, 0, epacman2, epacman2, epacman2_state, empty_init, "Entex", "Pac Man 2 (Entex, red Pacman)", MACHINE_SUPPORTS_SAVE )
-CONS( 1982, eturtles, 0, 0, eturtles, eturtles, eturtles_state, empty_init, "Entex", "Turtles (Entex)", MACHINE_SUPPORTS_SAVE )
CONS( 1982, estargte, 0, 0, estargte, estargte, estargte_state, empty_init, "Entex", "Stargate (Entex)", MACHINE_SUPPORTS_SAVE )
+CONS( 1982, eturtles, 0, 0, eturtles, eturtles, eturtles_state, empty_init, "Entex", "Turtles (Entex)", MACHINE_SUPPORTS_SAVE )
CONS( 1980, ghalien, 0, 0, ghalien, ghalien, ghalien_state, empty_init, "Gakken", "Heiankyo Alien (Gakken)", MACHINE_SUPPORTS_SAVE )
CONS( 1982, gckong, 0, 0, gckong, gckong, gckong_state, empty_init, "Gakken", "Crazy Kong (Gakken)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
CONS( 1983, gdigdug, 0, 0, gdigdug, gdigdug, gdigdug_state, empty_init, "Gakken", "Dig Dug (Gakken)", MACHINE_SUPPORTS_SAVE )
CONS( 1980, mwcbaseb, 0, 0, mwcbaseb, mwcbaseb, mwcbaseb_state, empty_init, "Mattel", "World Championship Baseball", MACHINE_SUPPORTS_SAVE )
-CONS( 1982, msthawk, 0, 0, msthawk, msthawk, msthawk_state, empty_init, "Mattel", "Star Hawk (Mattel)", MACHINE_SUPPORTS_SAVE )
CONS( 1983, pbqbert, 0, 0, pbqbert, pbqbert, pbqbert_state, empty_init, "Parker Brothers", "Q*Bert (Parker Brothers)", MACHINE_SUPPORTS_SAVE )