gts80b,gts3: added more sound

This commit is contained in:
Robbbert 2022-03-13 11:23:59 +11:00
parent 409e3017b1
commit 74994d2f8b
4 changed files with 205 additions and 108 deletions

View File

@ -32,6 +32,7 @@ constexpr XTAL SOUND2_SPEECH_CLOCK(3'120'000);
DEFINE_DEVICE_TYPE(GOTTLIEB_SOUND_PIN2, gottlieb_sound_p2_device, "gotsndp2", "Gottlieb Multi-mode Sound Board")
DEFINE_DEVICE_TYPE(GOTTLIEB_SOUND_PIN4, gottlieb_sound_p4_device, "gotsndp4", "Gottlieb Sound pin. 4")
DEFINE_DEVICE_TYPE(GOTTLIEB_SOUND_PIN5, gottlieb_sound_p5_device, "gotsndp5", "Gottlieb Sound pin. 5")
DEFINE_DEVICE_TYPE(GOTTLIEB_SOUND_PIN6, gottlieb_sound_p6_device, "gotsndp6", "Gottlieb Sound pin. 6")
DEFINE_DEVICE_TYPE(GOTTLIEB_SOUND_REV1, gottlieb_sound_r1_device, "gotsndr1", "Gottlieb Sound rev. 1")
DEFINE_DEVICE_TYPE(GOTTLIEB_SOUND_REV1_VOTRAX, gottlieb_sound_r1_with_votrax_device, "gotsndr1vt", "Gottlieb Sound rev. 1 with Votrax")
DEFINE_DEVICE_TYPE(GOTTLIEB_SOUND_REV2, gottlieb_sound_r2_device, "gotsndr2", "Gottlieb Sound rev. 2")
@ -824,7 +825,7 @@ void gottlieb_sound_p4_device::p4_ymap(address_map &map)
map.unmap_value_high();
map(0x0000, 0x07ff).mirror(0x1800).ram(); // 6116 @ H3
map(0x2000, 0x2000).mirror(0x1fff).nopw(); // unemulated variable butterworth filter (HC592, LS74, MF-4)
map(0x4000, 0x4000).mirror(0x1fff).nopw(); // writes lots of stuff to the 'expand' socket (unused?)
map(0x4000, 0x4000).nopr();
map(0x6000, 0x6000).mirror(0x07ff).w(FUNC(gottlieb_sound_p4_device::nmi_rate_w));
map(0x6800, 0x6800).mirror(0x07ff).r(FUNC(gottlieb_sound_p4_device::speech_data_r));
map(0x7000, 0x7000).mirror(0x07ff).rw(FUNC(gottlieb_sound_p4_device::signal_audio_nmi_r), FUNC(gottlieb_sound_p4_device::signal_audio_nmi_w));
@ -920,34 +921,36 @@ void gottlieb_sound_p4_device::device_timer(emu_timer &timer, device_timer_id id
//**************************************************************************
// PIN5 SOUND BOARD: same as p4 + extra 6502 + AD7528
// PIN5 SOUND BOARD: same as p4 + YM2151
//**************************************************************************
//-------------------------------------------------
// gottlieb_sound_r2_device - constructor
// gottlieb_sound_p5_device - constructor
//-------------------------------------------------
gottlieb_sound_p5_device::gottlieb_sound_p5_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: gottlieb_sound_p4_device(mconfig, GOTTLIEB_SOUND_PIN5, tag, owner, clock)
, m_ym2151(*this, "ym2151")
{
}
uint8_t gottlieb_sound_p5_device::d2_data_r()
gottlieb_sound_p5_device::gottlieb_sound_p5_device(
const machine_config &mconfig,
device_type type,
const char *tag,
device_t *owner,
uint32_t clock)
: gottlieb_sound_p4_device(mconfig, type, tag, owner, clock)
, m_ym2151(*this, "ym2151")
{
if (!machine().side_effects_disabled())
m_dcpu2->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
return m_dcpu2_latch;
}
void gottlieb_sound_p5_device::p5_dmap(address_map &map)
void gottlieb_sound_p5_device::p5_ymap(address_map &map)
{
gottlieb_sound_p4_device::p4_ymap(map);
map.unmap_value_high();
map(0x0000, 0x07ff).mirror(0x3800).ram();
map(0x4000, 0x4000).mirror(0x3fff).r(FUNC(gottlieb_sound_p5_device::d2_data_r));
map(0x8000, 0x8000).mirror(0x3ffe).w("dacvol2", FUNC(dac_byte_interface::data_w));
map(0x8001, 0x8001).mirror(0x3ffe).w("dac2", FUNC(dac_byte_interface::data_w));
map(0x8000, 0xffff).rom();
map(0x4000, 0x4000).mirror(0x1fff).lw8(NAME([this] (u8 data)
{ if (BIT(m_speech_control, 7)) m_ym2151->data_w(data); else m_ym2151->address_w(data); } ));
}
//-------------------------------------------------
@ -957,10 +960,59 @@ void gottlieb_sound_p5_device::p5_dmap(address_map &map)
void gottlieb_sound_p5_device::device_add_mconfig(machine_config &config)
{
gottlieb_sound_p4_device::device_add_mconfig(config);
m_ycpu->set_addrmap(AS_PROGRAM, &gottlieb_sound_p5_device::p5_ymap);
YM2151(config, m_ym2151, SOUND2_CLOCK).add_route(ALL_OUTPUTS, *this, 0.5);
}
void gottlieb_sound_p5_device::device_start()
{
gottlieb_sound_p4_device::device_start();
}
//**************************************************************************
// PIN6 SOUND BOARD: same as p5 + extra 6502 + AD7528
//**************************************************************************
//-------------------------------------------------
// gottlieb_sound_p6_device - constructor
//-------------------------------------------------
gottlieb_sound_p6_device::gottlieb_sound_p6_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: gottlieb_sound_p5_device(mconfig, GOTTLIEB_SOUND_PIN6, tag, owner, clock)
{
}
uint8_t gottlieb_sound_p6_device::d2_data_r()
{
if (!machine().side_effects_disabled())
m_dcpu2->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
return m_dcpu2_latch;
}
void gottlieb_sound_p6_device::p6_dmap(address_map &map)
{
map.unmap_value_high();
map(0x0000, 0x07ff).mirror(0x3800).ram();
map(0x4000, 0x4000).mirror(0x3fff).r(FUNC(gottlieb_sound_p6_device::d2_data_r));
map(0x8000, 0x8000).mirror(0x3ffe).w("dacvol2", FUNC(dac_byte_interface::data_w));
map(0x8001, 0x8001).mirror(0x3ffe).w("dac2", FUNC(dac_byte_interface::data_w));
map(0x8000, 0xffff).rom();
}
//-------------------------------------------------
// device_add_mconfig - add device configuration
//-------------------------------------------------
void gottlieb_sound_p6_device::device_add_mconfig(machine_config &config)
{
gottlieb_sound_p5_device::device_add_mconfig(config);
// extra cpu + dac
M6502(config, m_dcpu2, SOUND2_CLOCK/2);
m_dcpu2->set_addrmap(AS_PROGRAM, &gottlieb_sound_p5_device::p5_dmap);
m_dcpu2->set_addrmap(AS_PROGRAM, &gottlieb_sound_p6_device::p6_dmap);
AD7528(config, "dac2", 0).add_route(ALL_OUTPUTS, *this, 0.5);
AD7528(config, "dacvol2", 0)
@ -969,7 +1021,7 @@ void gottlieb_sound_p5_device::device_add_mconfig(machine_config &config)
.add_route(0, "dac2", -1.0, DAC_INPUT_RANGE_LO);
}
void gottlieb_sound_p5_device::device_start()
void gottlieb_sound_p6_device::device_start()
{
gottlieb_sound_p4_device::device_start();
gottlieb_sound_p5_device::device_start();
}

View File

@ -13,6 +13,7 @@
#include "sound/dac.h"
#include "sound/sp0250.h"
#include "sound/votrax.h"
#include "sound/ymopm.h"
//**************************************************************************
@ -22,6 +23,7 @@
DECLARE_DEVICE_TYPE(GOTTLIEB_SOUND_PIN2, gottlieb_sound_p2_device)
DECLARE_DEVICE_TYPE(GOTTLIEB_SOUND_PIN4, gottlieb_sound_p4_device)
DECLARE_DEVICE_TYPE(GOTTLIEB_SOUND_PIN5, gottlieb_sound_p5_device)
DECLARE_DEVICE_TYPE(GOTTLIEB_SOUND_PIN6, gottlieb_sound_p6_device)
DECLARE_DEVICE_TYPE(GOTTLIEB_SOUND_REV1, gottlieb_sound_r1_device)
DECLARE_DEVICE_TYPE(GOTTLIEB_SOUND_REV1_VOTRAX, gottlieb_sound_r1_with_votrax_device)
DECLARE_DEVICE_TYPE(GOTTLIEB_SOUND_REV2, gottlieb_sound_r2_device)
@ -236,7 +238,7 @@ private:
// ======================> gottlieb_sound_p5_device
// same as p4 plus an extra dac, same as existing audiocpu. For bonebusters.
// same as p5 plus a YM2151 in the expansion socket
class gottlieb_sound_p5_device : public gottlieb_sound_p4_device
{
public:
@ -244,12 +246,38 @@ public:
gottlieb_sound_p5_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
protected:
gottlieb_sound_p5_device(
const machine_config &mconfig,
device_type type,
const char *tag,
device_t *owner,
uint32_t clock);
// device-level overrides
virtual void device_add_mconfig(machine_config &config) override;
virtual void device_start() override;
private:
void p5_dmap(address_map &map);
void p5_ymap(address_map &map);
optional_device<ym2151_device> m_ym2151;
};
// ======================> gottlieb_sound_p6_device
// same as p5 plus an extra dac, same as existing audiocpu. For bonebusters.
class gottlieb_sound_p6_device : public gottlieb_sound_p5_device
{
public:
// construction/destruction
gottlieb_sound_p6_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
protected:
// device-level overrides
virtual void device_add_mconfig(machine_config &config) override;
virtual void device_start() override;
private:
void p6_dmap(address_map &map);
uint8_t d2_data_r();
};

View File

@ -50,14 +50,11 @@ Caribbean Cruise C102 1, enter, hold \ and right until message goes \
Status:
- Display works
- Attract mode works
- Can setup
- Can play a game
- All games are playable
- Various sounds are missing in some games, usually because the cpu concerned runs into the weeds.
ToDo:
- Sound
- Mechanical sounds
- Display flickers a bit
*****************************************************************************************************/
@ -82,14 +79,14 @@ public:
, m_maincpu(*this, "maincpu")
, m_u4(*this, "u4")
, m_u5(*this, "u5")
, m_p4_sound(*this, "p4sound")
, m_p5_sound(*this, "p5sound")
, m_io_keyboard(*this, "X%d", 0U)
, m_digits(*this, "digit%d", 0U)
, m_io_outputs(*this, "out%d", 0U)
{ }
void p0(machine_config &config); // no sound card assigned yet
void p4(machine_config &config); // p4 sound card
void p5(machine_config &config); // p5 sound card
DECLARE_INPUT_CHANGED_MEMBER(test_inp);
private:
@ -114,7 +111,7 @@ private:
required_device<m65c02_device> m_maincpu;
required_device<via6522_device> m_u4;
required_device<via6522_device> m_u5;
optional_device<gottlieb_sound_p4_device> m_p4_sound;
optional_device<gottlieb_sound_p5_device> m_p5_sound;
required_ioport_array<12> m_io_keyboard;
output_finder<40> m_digits;
output_finder<128> m_io_outputs; // 32 solenoids + 96 lamps
@ -123,11 +120,11 @@ private:
void gts3_state::mem_map(address_map &map)
{
map(0x0000, 0x1fff).ram().share("nvram");
map(0x0000, 0x1fff).ram().share("nvram"); // sch shows a 6164 labelled as 6116LP, parts list says 6116
map(0x2000, 0x200f).mirror(0x1f80).m(m_u4, FUNC(via6522_device::map));
map(0x2010, 0x201f).mirror(0x1f80).m(m_u5, FUNC(via6522_device::map));
map(0x2020, 0x2023).mirror(0x1f8c).w(FUNC(gts3_state::segbank_w));
map(0x2030, 0x2033).mirror(0x1f8c).w(FUNC(gts3_state::solenoid_w));
map(0x2030, 0x2033).mirror(0x1f8c).w(FUNC(gts3_state::solenoid_w)).nopr(); // writing here causes a read?? lca @8CE7
map(0x2040, 0x2040).mirror(0x1f80).w(FUNC(gts3_state::lampret_w));
map(0x2041, 0x207f).mirror(0x1f80).nopw(); // AUX: purpose unknown
map(0x4000, 0xffff).rom();
@ -254,7 +251,14 @@ void gts3_state::solenoid_w(offs_t offset, u8 data)
{
for (u8 i = 0; i < 8; i++)
m_io_outputs[offset*8+i] = BIT(data, i);
// Add knocker
// Mechanical sounds
if (offset == 3)
{
if (data & 0x18)
m_samples->start(0, 9); // outhole
if (data & 0x20)
m_samples->start(1, 6); // knocker
}
}
void gts3_state::segbank_w(offs_t offset, u8 data)
@ -306,8 +310,8 @@ u8 gts3_state::u4b_r()
void gts3_state::u5a_w(u8 data)
{
if (m_p4_sound)
m_p4_sound->write(data);
if (m_p5_sound)
m_p5_sound->write(data);
}
void gts3_state::machine_start()
@ -367,11 +371,11 @@ void gts3_state::p0(machine_config &config)
SPEAKER(config, "mono").front_center();
}
void gts3_state::p4(machine_config &config)
void gts3_state::p5(machine_config &config)
{
p0(config);
GOTTLIEB_SOUND_PIN4(config, m_p4_sound, 0).add_route(ALL_OUTPUTS, "mono", 1.00);
GOTTLIEB_SOUND_PIN5(config, m_p5_sound, 0).add_route(ALL_OUTPUTS, "mono", 1.00);
}
/*-------------------------------------------------------------------
@ -381,10 +385,10 @@ ROM_START(bellring)
ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("br_gprom.bin", 0x0000, 0x10000, CRC(a9a59b36) SHA1(ca6d0e54a5c85ef72485975c632660831a3b8c82))
ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("br_drom1.bin", 0x8000, 0x8000, CRC(99f38229) SHA1(f63d743e63e88728e8d53320b21b2fda1b6385f8))
ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:speechcpu", ROMREGION_ERASEFF)
ROM_LOAD("br_yrom1.bin", 0x8000, 0x8000, CRC(d5aab379) SHA1(b3995f8aa2e54f91f2a0fd010c807fbfbf9ae847))
ROM_END
@ -419,10 +423,10 @@ ROM_START(carhop)
ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("gprom.bin", 0x0000, 0x10000, CRC(164b2c9c) SHA1(49cf7e3a3acb5de8dbfd2ad22f8bd9a352ff2899))
ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("drom1.bin", 0x8000, 0x8000, CRC(9dec74e7) SHA1(8234bdca5536d30dc1eabcb3a5505d2fd824ce0f))
ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:speechcpu", ROMREGION_ERASEFF)
ROM_LOAD("yrom1.bin", 0x8000, 0x8000, CRC(831ee812) SHA1(57056cde36b17cb7d7f34275b1bb5dc3d52bde4e))
ROM_END
@ -476,10 +480,10 @@ ROM_START(deadweap)
ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("gprom.bin", 0x0000, 0x10000, CRC(07d84b32) SHA1(25d8772a5c8655b3406df94563076719b07129cd))
ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("drom1.bin", 0x8000, 0x8000, CRC(f55dd7ec) SHA1(fe306c40bf3d98e4076d0d8a935c3671469d4cff))
ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:speechcpu", ROMREGION_ERASEFF)
ROM_LOAD("yrom1.bin", 0x8000, 0x8000, CRC(93369ed3) SHA1(3340478ffc00cf9991beabd4f0ecd89d0c88965e))
ROM_END
@ -490,10 +494,10 @@ ROM_START(hoops)
ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("gprom.bin", 0x0000, 0x10000, CRC(78391273) SHA1(dbf91597ce2910e526fb5e82355ad862706b4975))
ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("drom1.bin", 0x8000, 0x8000, CRC(e72c00eb) SHA1(5b9f85083b38d916afb0f9b72b061501504725ff))
ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:speechcpu", ROMREGION_ERASEFF)
ROM_LOAD("yrom1.bin", 0x8000, 0x8000, CRC(9718b958) SHA1(bac806267bab4852c0f3fdb48f8d872992f61ace))
ROM_END
@ -504,10 +508,10 @@ ROM_START(lca)
ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("gprom.bin", 0x8000, 0x8000, CRC(52957d70) SHA1(0c24d824b1aa966eb3af3db3ff02870ba463dcd6))
ROM_REGION(0x10000, "p4sound:audiocpu", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("drom1.bin", 0x8000, 0x8000, CRC(a258d72d) SHA1(eeb4768c8b2f57509a088d3ac8d35aa34f2cfc2c))
ROM_REGION(0x10000, "p4sound:speechcpu", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:speechcpu", ROMREGION_ERASEFF)
ROM_LOAD("yrom1.bin", 0x8000, 0x8000, CRC(20919ebb) SHA1(a2ea79863b41a04aa23ea596932825408cca64e3))
ROM_END
@ -515,10 +519,10 @@ ROM_START(lca2)
ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("gprom2.bin", 0x8000, 0x8000, CRC(937a8426) SHA1(6bc2d1b0c3dc273577376654ba72b60febe32529))
ROM_REGION(0x10000, "p4sound:audiocpu", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("drom1.bin", 0x8000, 0x8000, CRC(a258d72d) SHA1(eeb4768c8b2f57509a088d3ac8d35aa34f2cfc2c))
ROM_REGION(0x10000, "p4sound:speechcpu", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:speechcpu", ROMREGION_ERASEFF)
ROM_LOAD("yrom1.bin", 0x8000, 0x8000, CRC(20919ebb) SHA1(a2ea79863b41a04aa23ea596932825408cca64e3))
ROM_END
@ -529,10 +533,10 @@ ROM_START(nudgeit)
ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("gprom.bin", 0x0000, 0x10000, CRC(3d9e0309) SHA1(caaa28482e7f260668aa05b39b551acb8e4cc41a))
ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("drom1.bin", 0x8000, 0x8000, CRC(ae0c4b1d) SHA1(c8aa409c9b54fd8ecf70eb2926f4e98fc5eb11fe))
ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:speechcpu", ROMREGION_ERASEFF)
ROM_LOAD("yrom1.bin", 0x8000, 0x8000, CRC(65fc2e60) SHA1(6377c220753d9e4b5c76d445056409526d95772f))
ROM_END
@ -563,10 +567,10 @@ ROM_START(silvslug)
ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("gprom.bin", 0x0000, 0x10000, CRC(a6c524e2) SHA1(dc12dd8e814a37aada021f84c58475efe72cb846))
ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("drom1.bin", 0x8000, 0x8000, CRC(eac3e1cc) SHA1(2725457231854e4f3d54fbba745b8fc6f55b1688))
ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:speechcpu", ROMREGION_ERASEFF)
ROM_LOAD("yrom1.bin", 0x8000, 0x8000, CRC(20bc9797) SHA1(5d17b5f0423d8854fb7c4816d53a223ecc7c50c6))
ROM_END
@ -597,10 +601,10 @@ ROM_START(tfight)
ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("gprom.bin", 0x0000, 0x10000, CRC(43b3193a) SHA1(bd185fe67c147a6acca8e78da4b77c384124fc46))
ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("drom1.bin", 0x8000, 0x8000, CRC(9514739f) SHA1(2794549f549d68e064a9a962a4e91fff7dcf0160))
ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:speechcpu", ROMREGION_ERASEFF)
ROM_LOAD("yrom1.bin", 0x8000, 0x8000, CRC(8591d421) SHA1(74402cf8b419e0cb05069851b0d5616e66b2f0a9))
ROM_END
@ -611,10 +615,10 @@ ROM_START(vegas)
ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("gprom.bin", 0x0000, 0x10000, CRC(48189981) SHA1(95144af4b222158becd4d5748d15b7b6c6021bd2))
ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("drom1.bin", 0x8000, 0x8000, CRC(46eb5755) SHA1(94ec2d0cf41f68a8c3d7505186b11b4abb4803db))
ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:speechcpu", ROMREGION_ERASEFF)
ROM_LOAD("yrom1.bin", 0x8000, 0x8000, CRC(af1095f1) SHA1(06609085cd74b969e4f2ec962c427c5c42ebc6ff))
ROM_END
@ -650,16 +654,16 @@ ROM_END
} // anonymous namespace
GAME(1989, lca, 0, p4, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Lights...Camera...Action!", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, lca2, lca, p4, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Lights...Camera...Action! (rev.2)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, silvslug, 0, p0, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Silver Slugger", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, vegas, 0, p0, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Vegas", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, deadweap, 0, p0, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Deadly Weapon", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, tfight, 0, p0, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Title Fight", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, nudgeit, 0, p0, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Nudge-It", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, bellring, 0, p0, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Bell Ringer", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1991, carhop, 0, p0, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Car Hop", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1991, hoops, 0, p0, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Hoops", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, lca, 0, p5, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Lights...Camera...Action!", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, lca2, lca, p5, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Lights...Camera...Action! (rev.2)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, silvslug, 0, p5, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Silver Slugger", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, vegas, 0, p5, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Vegas", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, deadweap, 0, p5, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Deadly Weapon", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, tfight, 0, p5, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Title Fight", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, nudgeit, 0, p5, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Nudge-It", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, bellring, 0, p5, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Bell Ringer", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1991, carhop, 0, p5, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Car Hop", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1991, hoops, 0, p5, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Hoops", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1991, cactjack, 0, p0, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Cactus Jack's", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1991, clas1812, 0, p0, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Class of 1812", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1991, surfnsaf, 0, p0, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Surf'n Safari", MACHINE_IS_SKELETON_MECHANICAL)

View File

@ -89,6 +89,7 @@ public:
//, m_p3_sound(*this, "p3sound")
, m_p4_sound(*this, "p4sound")
, m_p5_sound(*this, "p5sound")
, m_p6_sound(*this, "p6sound")
, m_r2_sound(*this, "r2sound")
, m_digits(*this, "digit%d", 0U)
, m_io_outputs(*this, "out%d", 0U)
@ -97,7 +98,8 @@ public:
void p0(machine_config &config); // base config
void p3(machine_config &config); // no schematic available
void p4(machine_config &config); // same as r2 but bigger roms, no speech
void p5(machine_config &config); // bonebusters
void p5(machine_config &config); // same as p4 + YM2151
void p6(machine_config &config); // bonebusters
void r2(machine_config &config); // r2 (2x ay, spo250, dac)
void master(machine_config &config);
DECLARE_INPUT_CHANGED_MEMBER(slam_w);
@ -135,6 +137,7 @@ private:
//optional_device<gottlieb_sound_p3_device> m_p3_sound;
optional_device<gottlieb_sound_p4_device> m_p4_sound;
optional_device<gottlieb_sound_p5_device> m_p5_sound;
optional_device<gottlieb_sound_p6_device> m_p6_sound;
optional_device<gottlieb_sound_r2_device> m_r2_sound;
output_finder<40> m_digits;
output_finder<57> m_io_outputs; // 8 solenoids, 1 outhole, 48 lamps
@ -470,6 +473,9 @@ void gts80b_state::port3a_w(u8 data)
else
if (m_p5_sound)
m_p5_sound->write(sndcmd | m_soundex);
else
if (m_p6_sound)
m_p6_sound->write(sndcmd | m_soundex);
// Solenoids group 1
if (!BIT(data, 5))
@ -646,6 +652,13 @@ void gts80b_state::p5(machine_config &config)
GOTTLIEB_SOUND_PIN5(config, m_p5_sound, 0).add_route(ALL_OUTPUTS, "mono", 1.00);
}
void gts80b_state::p6(machine_config &config)
{
p0(config);
GOTTLIEB_SOUND_PIN6(config, m_p6_sound, 0).add_route(ALL_OUTPUTS, "mono", 1.00);
}
void gts80b_state::r2(machine_config &config)
{
p0(config);
@ -991,10 +1004,10 @@ ROM_START(badgirls)
ROM_RELOAD(0xa000, 0x2000)
ROM_RELOAD(0xe000, 0x2000)
ROM_REGION(0x10000, "p4sound:audiocpu", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("drom1.snd", 0x8000, 0x8000, CRC(452dec20) SHA1(a9c41dfb2d83c5671ab96e946f13df774b567976))
ROM_REGION(0x10000, "p4sound:speechcpu", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:speechcpu", ROMREGION_ERASEFF)
ROM_LOAD("yrom1.snd", 0x8000, 0x8000, CRC(ab3b8e2d) SHA1(b57a0b804b42b923bb102d295e3b8a69b1033d27))
ROM_END
@ -1009,10 +1022,10 @@ ROM_START(badgirlsf)
ROM_RELOAD(0xa000, 0x2000)
ROM_RELOAD(0xe000, 0x2000)
ROM_REGION(0x10000, "p4sound:audiocpu", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("drom1.snd", 0x8000, 0x8000, CRC(452dec20) SHA1(a9c41dfb2d83c5671ab96e946f13df774b567976))
ROM_REGION(0x10000, "p4sound:speechcpu", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:speechcpu", ROMREGION_ERASEFF)
ROM_LOAD("yrom1.snd", 0x8000, 0x8000, CRC(ab3b8e2d) SHA1(b57a0b804b42b923bb102d295e3b8a69b1033d27))
ROM_END
@ -1027,10 +1040,10 @@ ROM_START(badgirlsg)
ROM_RELOAD(0xa000, 0x2000)
ROM_RELOAD(0xe000, 0x2000)
ROM_REGION(0x10000, "p4sound:audiocpu", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("drom1.snd", 0x8000, 0x8000, CRC(452dec20) SHA1(a9c41dfb2d83c5671ab96e946f13df774b567976))
ROM_REGION(0x10000, "p4sound:speechcpu", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:speechcpu", ROMREGION_ERASEFF)
ROM_LOAD("yrom1.snd", 0x8000, 0x8000, CRC(ab3b8e2d) SHA1(b57a0b804b42b923bb102d295e3b8a69b1033d27))
ROM_END
@ -1048,10 +1061,10 @@ ROM_START(bighouse)
ROM_RELOAD(0xa000, 0x2000)
ROM_RELOAD(0xe000, 0x2000)
ROM_REGION(0x10000, "p4sound:audiocpu", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("drom1.snd", 0x8000, 0x8000, CRC(f330fd04) SHA1(1288c47f636d9d5b826a2b870b81788a630e489e))
ROM_REGION(0x10000, "p4sound:speechcpu", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:speechcpu", ROMREGION_ERASEFF)
ROM_LOAD("yrom1.snd", 0x8000, 0x8000, CRC(0b1ba1cb) SHA1(26327689992018837b1c9957c515ab67248623eb))
ROM_END
@ -1066,10 +1079,10 @@ ROM_START(bighousef)
ROM_RELOAD(0xa000, 0x2000)
ROM_RELOAD(0xe000, 0x2000)
ROM_REGION(0x10000, "p4sound:audiocpu", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("drom1.snd", 0x8000, 0x8000, CRC(f330fd04) SHA1(1288c47f636d9d5b826a2b870b81788a630e489e))
ROM_REGION(0x10000, "p4sound:speechcpu", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:speechcpu", ROMREGION_ERASEFF)
ROM_LOAD("yrom1.snd", 0x8000, 0x8000, CRC(0b1ba1cb) SHA1(26327689992018837b1c9957c515ab67248623eb))
ROM_END
@ -1084,10 +1097,10 @@ ROM_START(bighouseg)
ROM_RELOAD(0xa000, 0x2000)
ROM_RELOAD(0xe000, 0x2000)
ROM_REGION(0x10000, "p4sound:audiocpu", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("drom1.snd", 0x8000, 0x8000, CRC(f330fd04) SHA1(1288c47f636d9d5b826a2b870b81788a630e489e))
ROM_REGION(0x10000, "p4sound:speechcpu", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:speechcpu", ROMREGION_ERASEFF)
ROM_LOAD("yrom1.snd", 0x8000, 0x8000, CRC(0b1ba1cb) SHA1(26327689992018837b1c9957c515ab67248623eb))
ROM_END
@ -1105,13 +1118,13 @@ ROM_START(bonebstr)
ROM_RELOAD(0xa000, 0x2000)
ROM_RELOAD(0xe000, 0x2000)
ROM_REGION(0x10000, "p5sound:dcpu2", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p6sound:dcpu2", ROMREGION_ERASEFF)
ROM_LOAD("drom2.snd", 0x8000, 0x8000, CRC(d147d78d) SHA1(f8f6d6a1921685b883b224a9ea85ead52a32a4c3))
ROM_REGION(0x10000, "p5sound:audiocpu", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p6sound:audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("drom1.snd", 0x8000, 0x8000, CRC(ec43f4e9) SHA1(77b0988700be7a597dca7e5f06ac5d3c6834ce21))
ROM_REGION(0x10000, "p5sound:speechcpu", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p6sound:speechcpu", ROMREGION_ERASEFF)
ROM_LOAD("yrom1.snd", 0x8000, 0x8000, CRC(a95eedfc) SHA1(5ced2d6869a9895f8ff26d830b21d3c9364b32e7))
ROM_END
@ -1126,13 +1139,13 @@ ROM_START(bonebstrf)
ROM_RELOAD(0xa000, 0x2000)
ROM_RELOAD(0xe000, 0x2000)
ROM_REGION(0x10000, "p5sound:dcpu2", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p6sound:dcpu2", ROMREGION_ERASEFF)
ROM_LOAD("drom2.snd", 0x8000, 0x8000, CRC(d147d78d) SHA1(f8f6d6a1921685b883b224a9ea85ead52a32a4c3))
ROM_REGION(0x10000, "p5sound:audiocpu", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p6sound:audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("drom1.snd", 0x8000, 0x8000, CRC(ec43f4e9) SHA1(77b0988700be7a597dca7e5f06ac5d3c6834ce21))
ROM_REGION(0x10000, "p5sound:speechcpu", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p6sound:speechcpu", ROMREGION_ERASEFF)
ROM_LOAD("yrom1.snd", 0x8000, 0x8000, CRC(a95eedfc) SHA1(5ced2d6869a9895f8ff26d830b21d3c9364b32e7))
ROM_END
@ -1147,13 +1160,13 @@ ROM_START(bonebstrg)
ROM_RELOAD(0xa000, 0x2000)
ROM_RELOAD(0xe000, 0x2000)
ROM_REGION(0x10000, "p5sound:dcpu2", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p6sound:dcpu2", ROMREGION_ERASEFF)
ROM_LOAD("drom2.snd", 0x8000, 0x8000, CRC(d147d78d) SHA1(f8f6d6a1921685b883b224a9ea85ead52a32a4c3))
ROM_REGION(0x10000, "p5sound:audiocpu", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p6sound:audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("drom1.snd", 0x8000, 0x8000, CRC(ec43f4e9) SHA1(77b0988700be7a597dca7e5f06ac5d3c6834ce21))
ROM_REGION(0x10000, "p5sound:speechcpu", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p6sound:speechcpu", ROMREGION_ERASEFF)
ROM_LOAD("yrom1.snd", 0x8000, 0x8000, CRC(a95eedfc) SHA1(5ced2d6869a9895f8ff26d830b21d3c9364b32e7))
ROM_END
@ -1526,10 +1539,10 @@ ROM_START(hotshots)
ROM_RELOAD(0xa000, 0x2000)
ROM_RELOAD(0xe000, 0x2000)
ROM_REGION(0x10000, "p4sound:audiocpu", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("drom1.snd", 0x8000, 0x8000, CRC(42c3cc3d) SHA1(26ca7f3a71b83df18ac6be1d1eb28da20120285e))
ROM_REGION(0x10000, "p4sound:speechcpu", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:speechcpu", ROMREGION_ERASEFF)
ROM_LOAD("yrom1.snd", 0x8000, 0x8000, CRC(2933a80e) SHA1(5982b9ed361d90f8ea47047fc29770ef142acbec))
ROM_END
@ -1544,10 +1557,10 @@ ROM_START(hotshotsf)
ROM_RELOAD(0xa000, 0x2000)
ROM_RELOAD(0xe000, 0x2000)
ROM_REGION(0x10000, "p4sound:audiocpu", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("drom1.snd", 0x8000, 0x8000, CRC(42c3cc3d) SHA1(26ca7f3a71b83df18ac6be1d1eb28da20120285e))
ROM_REGION(0x10000, "p4sound:speechcpu", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:speechcpu", ROMREGION_ERASEFF)
ROM_LOAD("yrom1.snd", 0x8000, 0x8000, CRC(2933a80e) SHA1(5982b9ed361d90f8ea47047fc29770ef142acbec))
ROM_END
@ -1562,10 +1575,10 @@ ROM_START(hotshotsg)
ROM_RELOAD(0xa000, 0x2000)
ROM_RELOAD(0xe000, 0x2000)
ROM_REGION(0x10000, "p4sound:audiocpu", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("drom1.snd", 0x8000, 0x8000, CRC(42c3cc3d) SHA1(26ca7f3a71b83df18ac6be1d1eb28da20120285e))
ROM_REGION(0x10000, "p4sound:speechcpu", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:speechcpu", ROMREGION_ERASEFF)
ROM_LOAD("yrom1.snd", 0x8000, 0x8000, CRC(2933a80e) SHA1(5982b9ed361d90f8ea47047fc29770ef142acbec))
ROM_END
@ -1682,10 +1695,10 @@ ROM_START(nmoves)
ROM_RELOAD(0xa000, 0x2000)
ROM_RELOAD(0xe000, 0x2000)
ROM_REGION(0x10000, "p4sound:audiocpu", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("nmovdrom.256", 0x8000, 0x8000, CRC(90929841) SHA1(e203ccd3552c9843c91fc49a437f60ae2dd49142))
ROM_REGION(0x10000, "p4sound:speechcpu", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "p5sound:speechcpu", ROMREGION_ERASEFF)
ROM_LOAD("nmovyrom.256", 0x8000, 0x8000, CRC(cb74a687) SHA1(af8275807491eb35643cdeb6c898025fde47ceac))
ROM_END
@ -2227,26 +2240,26 @@ GAME(1988, diamondpg, diamondp, p4, gts80b, gts80b_state, empty_init, ROT0, "Got
GAME(1988, txsector, 0, p4, gts80b, gts80b_state, empty_init, ROT0, "Gottlieb", "TX-Sector", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1988, txsectorf, txsector, p4, gts80b, gts80b_state, empty_init, ROT0, "Gottlieb", "TX-Sector (French)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1988, txsectorg, txsector, p4, gts80b, gts80b_state, empty_init, ROT0, "Gottlieb", "TX-Sector (German)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1989, bighouse, 0, p4, gts80b, gts80b_state, init_s80c, ROT0, "Gottlieb", "Big House", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1989, bighousef, bighouse, p4, gts80b, gts80b_state, init_s80c, ROT0, "Gottlieb", "Big House (French)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1989, bighouseg, bighouse, p4, gts80b, gts80b_state, init_s80c, ROT0, "Gottlieb", "Big House (German)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1989, bighouse, 0, p5, gts80b, gts80b_state, init_s80c, ROT0, "Gottlieb", "Big House", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1989, bighousef, bighouse, p5, gts80b, gts80b_state, init_s80c, ROT0, "Gottlieb", "Big House (French)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1989, bighouseg, bighouse, p5, gts80b, gts80b_state, init_s80c, ROT0, "Gottlieb", "Big House (German)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1988, robowars, 0, p4, gts80b, gts80b_state, empty_init, ROT0, "Gottlieb", "Robo-War", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1988, robowarsf, robowars, p4, gts80b, gts80b_state, empty_init, ROT0, "Gottlieb", "Robo-War (French)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1988, excalibr, 0, p4, gts80b, gts80b_state, empty_init, ROT0, "Gottlieb", "Excalibur", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1988, excalibrf, excalibr, p4, gts80b, gts80b_state, empty_init, ROT0, "Gottlieb", "Excalibur (French)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1988, excalibrg, excalibr, p4, gts80b, gts80b_state, empty_init, ROT0, "Gottlieb", "Excalibur (German)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1988, badgirls, 0, p4, gts80b, gts80b_state, init_s80c, ROT0, "Gottlieb", "Bad Girls", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1988, badgirlsf, badgirls, p4, gts80b, gts80b_state, init_s80c, ROT0, "Gottlieb", "Bad Girls (French)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1988, badgirlsg, badgirls, p4, gts80b, gts80b_state, init_s80c, ROT0, "Gottlieb", "Bad Girls (German)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1989, hotshots, 0, p4, gts80b, gts80b_state, init_s80c, ROT0, "Gottlieb", "Hot Shots", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1989, hotshotsf, hotshots, p4, gts80b, gts80b_state, init_s80c, ROT0, "Gottlieb", "Hot Shots (French)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1989, hotshotsg, hotshots, p4, gts80b, gts80b_state, init_s80c, ROT0, "Gottlieb", "Hot Shots (German)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1989, bonebstr, 0, p5, gts80b, gts80b_state, init_s80c, ROT0, "Gottlieb", "Bone Busters Inc.", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1989, bonebstrf, bonebstr, p5, gts80b, gts80b_state, init_s80c, ROT0, "Gottlieb", "Bone Busters Inc. (French)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1989, bonebstrg, bonebstr, p5, gts80b, gts80b_state, init_s80c, ROT0, "Gottlieb", "Bone Busters Inc. (German)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1989, nmoves, 0, p4, gts80b, gts80b_state, init_s80c, ROT0, "International Concepts", "Night Moves", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1988, badgirls, 0, p5, gts80b, gts80b_state, init_s80c, ROT0, "Gottlieb", "Bad Girls", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1988, badgirlsf, badgirls, p5, gts80b, gts80b_state, init_s80c, ROT0, "Gottlieb", "Bad Girls (French)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1988, badgirlsg, badgirls, p5, gts80b, gts80b_state, init_s80c, ROT0, "Gottlieb", "Bad Girls (German)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1989, hotshots, 0, p5, gts80b, gts80b_state, init_s80c, ROT0, "Gottlieb", "Hot Shots", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1989, hotshotsf, hotshots, p5, gts80b, gts80b_state, init_s80c, ROT0, "Gottlieb", "Hot Shots (French)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1989, hotshotsg, hotshots, p5, gts80b, gts80b_state, init_s80c, ROT0, "Gottlieb", "Hot Shots (German)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1989, bonebstr, 0, p6, gts80b, gts80b_state, init_s80c, ROT0, "Gottlieb", "Bone Busters Inc.", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1989, bonebstrf, bonebstr, p6, gts80b, gts80b_state, init_s80c, ROT0, "Gottlieb", "Bone Busters Inc. (French)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1989, bonebstrg, bonebstr, p6, gts80b, gts80b_state, init_s80c, ROT0, "Gottlieb", "Bone Busters Inc. (German)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1989, nmoves, 0, p5, gts80b, gts80b_state, init_s80c, ROT0, "International Concepts", "Night Moves", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1987, amazonh3, 0, p4, gts80b, gts80b_state, init_s80c, ROT0, "Gottlieb", "Amazon Hunt III (French)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1987, amazonh3a, amazonh3, p4, gts80b, gts80b_state, init_s80c, ROT0, "Gottlieb", "Amazon Hunt III (rev. 1, French)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(198?, s80btest, 0, p4, gts80b, gts80b_state, empty_init, ROT0, "Gottlieb", "System 80B Test", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(198?, s80btest, 0, p0, gts80b, gts80b_state, empty_init, ROT0, "Gottlieb", "System 80B Test", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1988, mmmaster, 0, master, gts80b, gts80b_state, empty_init, ROT0, "ManilaMatic", "Master", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
GAME(1988, topsound, 0, master, gts80b, gts80b_state, empty_init, ROT0, "ManilaMatic", "Top Sound (French)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )