From 3c7cc657270059daa1826171b25c442fe96add65 Mon Sep 17 00:00:00 2001 From: Robbbert Date: Sun, 13 Mar 2022 00:32:42 +1100 Subject: bonebstr: added sound --- src/mame/audio/gottlieb.cpp | 153 ++++++++++++++++++++++++++++++++------------ src/mame/audio/gottlieb.h | 47 ++++++++++---- src/mame/drivers/gts3.cpp | 145 +++++++++++++++++++++++------------------ src/mame/drivers/gts80b.cpp | 32 ++++----- 4 files changed, 247 insertions(+), 130 deletions(-) diff --git a/src/mame/audio/gottlieb.cpp b/src/mame/audio/gottlieb.cpp index 756b5157f0b..c5079540fbd 100644 --- a/src/mame/audio/gottlieb.cpp +++ b/src/mame/audio/gottlieb.cpp @@ -31,6 +31,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_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") @@ -47,7 +48,7 @@ DEFINE_DEVICE_TYPE(GOTTLIEB_SOUND_REV2, gottlieb_sound_r2_device, gottlieb_sound_p2_device::gottlieb_sound_p2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, GOTTLIEB_SOUND_PIN2, tag, owner, clock) , device_mixer_interface(mconfig, *this) - , m_audiocpu(*this, "audiocpu") + , m_cpu(*this, "audiocpu") , m_r6530(*this, "r6530") , m_sndcmd(0) { @@ -82,7 +83,7 @@ void gottlieb_sound_p2_device::write(uint8_t data) // audio CPU map //------------------------------------------------- -void gottlieb_sound_p2_device::gottlieb_sound_p2_map(address_map &map) +void gottlieb_sound_p2_device::p2_map(address_map &map) { map.global_mask(0x0fff); map.unmap_value_high(); @@ -112,7 +113,7 @@ INPUT_CHANGED_MEMBER( gottlieb_sound_p2_device::audio_nmi ) { // Diagnostic button sends a pulse to NMI pin if (newval==CLEAR_LINE) - m_audiocpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero); + m_cpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero); } @@ -123,8 +124,8 @@ INPUT_CHANGED_MEMBER( gottlieb_sound_p2_device::audio_nmi ) void gottlieb_sound_p2_device::device_add_mconfig(machine_config &config) { // audio CPU - M6502(config, m_audiocpu, 800'000); // M6503 - clock is a gate, a resistor and a capacitor. Freq 675-1000kHz. - m_audiocpu->set_addrmap(AS_PROGRAM, &gottlieb_sound_p2_device::gottlieb_sound_p2_map); + M6502(config, m_cpu, 800'000); // M6503 - clock is a gate, a resistor and a capacitor. Freq 675-1000kHz. + m_cpu->set_addrmap(AS_PROGRAM, &gottlieb_sound_p2_device::p2_map); // I/O configuration MOS6530(config, m_r6530, 800'000); // same as cpu @@ -201,7 +202,7 @@ void gottlieb_sound_r1_device::write(u8 data) // audio CPU map //------------------------------------------------- -void gottlieb_sound_r1_device::gottlieb_sound_r1_map(address_map &map) +void gottlieb_sound_r1_device::r1_map(address_map &map) { // A15 not decoded except in expansion socket map.global_mask(0x7fff); @@ -212,10 +213,10 @@ void gottlieb_sound_r1_device::gottlieb_sound_r1_map(address_map &map) map(0x6000, 0x7fff).rom(); } -void gottlieb_sound_r1_with_votrax_device::gottlieb_sound_r1_map(address_map &map) +void gottlieb_sound_r1_with_votrax_device::r1_map(address_map &map) { // A15 not decoded except in expansion socket - gottlieb_sound_r1_device::gottlieb_sound_r1_map(map); + gottlieb_sound_r1_device::r1_map(map); map.unmap_value_high(); map(0x2000, 0x2000).mirror(0x0fff).w(FUNC(gottlieb_sound_r1_with_votrax_device::votrax_data_w)); map(0x3000, 0x3000).mirror(0x0fff).w(FUNC(gottlieb_sound_r1_with_votrax_device::speech_clock_dac_w)); @@ -254,8 +255,8 @@ INPUT_PORTS_END void gottlieb_sound_r1_device::device_add_mconfig(machine_config &config) { // audio CPU - m6502_device &audiocpu(M6502(config, "audiocpu", SOUND1_CLOCK/4)); // the board can be set to /2 as well - audiocpu.set_addrmap(AS_PROGRAM, &gottlieb_sound_r1_device::gottlieb_sound_r1_map); + m6502_device &cpu(M6502(config, "audiocpu", SOUND1_CLOCK/4)); // the board can be set to /2 as well + cpu.set_addrmap(AS_PROGRAM, &gottlieb_sound_r1_device::r1_map); INPUT_MERGER_ANY_HIGH(config, "nmi").output_handler().set_inputline("audiocpu", INPUT_LINE_NMI); @@ -493,7 +494,7 @@ void gottlieb_sound_r2_device::sp0250_latch_w(uint8_t data) // sound CPU address map //------------------------------------------------- -void gottlieb_sound_r2_device::gottlieb_sound_r2_map(address_map &map) +void gottlieb_sound_r2_device::r2_dmap(address_map &map) { map.unmap_value_high(); map(0x0000, 0x03ff).mirror(0x3c00).ram(); @@ -508,7 +509,7 @@ void gottlieb_sound_r2_device::gottlieb_sound_r2_map(address_map &map) // speech CPU address map //------------------------------------------------- -void gottlieb_sound_r2_device::gottlieb_speech_r2_map(address_map &map) +void gottlieb_sound_r2_device::r2_ymap(address_map &map) { map.unmap_value_high(); map(0x0000, 0x03ff).mirror(0x1c00).ram(); @@ -546,11 +547,11 @@ INPUT_PORTS_END void gottlieb_sound_r2_device::device_add_mconfig(machine_config &config) { // audio CPUs - M6502(config, m_audiocpu, SOUND2_CLOCK/4); - m_audiocpu->set_addrmap(AS_PROGRAM, &gottlieb_sound_r2_device::gottlieb_sound_r2_map); + M6502(config, m_dcpu, SOUND2_CLOCK/4); + m_dcpu->set_addrmap(AS_PROGRAM, &gottlieb_sound_r2_device::r2_dmap); - M6502(config, m_speechcpu, SOUND2_CLOCK/4); - m_speechcpu->set_addrmap(AS_PROGRAM, &gottlieb_sound_r2_device::gottlieb_speech_r2_map); + M6502(config, m_ycpu, SOUND2_CLOCK/4); + m_ycpu->set_addrmap(AS_PROGRAM, &gottlieb_sound_r2_device::r2_ymap); // sound hardware AD7528(config, "dac", 0).add_route(ALL_OUTPUTS, *this, 0.25); // Dac A adjusts the ref voltage of DAC B, which in turn makes the sound @@ -588,7 +589,7 @@ void gottlieb_sound_r2_device::device_start() // disable the non-speech CPU for cobram3 if (m_cobram3_mod) - m_audiocpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); + m_dcpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); // register for save states save_item(NAME(m_sp0250_latch)); @@ -616,18 +617,20 @@ gottlieb_sound_p4_device::gottlieb_sound_p4_device( uint32_t clock) : device_t(mconfig, type, tag, owner, clock) , device_mixer_interface(mconfig, *this) - , m_audiocpu(*this, "audiocpu") - , m_speechcpu(*this, "speechcpu") + , m_dcpu(*this, "audiocpu") + , m_dcpu2(*this, "dcpu2") + , m_ycpu(*this, "speechcpu") , m_ay1(*this, "ay1") , m_ay2(*this, "ay2") , m_nmi_timer(nullptr) , m_nmi_state(0) - , m_audiocpu_latch(0) - , m_speechcpu_latch(0) + , m_dcpu_latch(0) + , m_ycpu_latch(0) , m_speech_control(0) , m_last_command(0) , m_psg_latch(0) , m_psg_data_latch(0) + , m_dcpu2_latch(0) { } @@ -647,8 +650,10 @@ void gottlieb_sound_p4_device::write(u8 data) // if the previous data was 0xff, clock an IRQ on each if (m_last_command == 0xff) { - m_audiocpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE); - m_speechcpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE); + m_dcpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE); + m_ycpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE); + if (m_dcpu2) + m_dcpu2->set_input_line(M6502_IRQ_LINE, ASSERT_LINE); } } m_last_command = data; @@ -675,7 +680,7 @@ inline void gottlieb_sound_p4_device::nmi_timer_adjust() inline void gottlieb_sound_p4_device::nmi_state_update() { // update the NMI line state based on the enable and state - m_speechcpu->set_input_line(INPUT_LINE_NMI, (m_nmi_state && (m_speech_control & 1)) ? ASSERT_LINE : CLEAR_LINE); + m_ycpu->set_input_line(INPUT_LINE_NMI, (m_nmi_state && (m_speech_control & 1)) ? ASSERT_LINE : CLEAR_LINE); } @@ -687,8 +692,8 @@ inline void gottlieb_sound_p4_device::nmi_state_update() uint8_t gottlieb_sound_p4_device::audio_data_r() { if (!machine().side_effects_disabled()) - m_audiocpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE); - return m_audiocpu_latch; + m_dcpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE); + return m_dcpu_latch; } @@ -700,8 +705,8 @@ uint8_t gottlieb_sound_p4_device::audio_data_r() uint8_t gottlieb_sound_p4_device::speech_data_r() { if (!machine().side_effects_disabled()) - m_speechcpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE); - return m_speechcpu_latch; + m_ycpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE); + return m_ycpu_latch; } @@ -714,8 +719,13 @@ uint8_t gottlieb_sound_p4_device::signal_audio_nmi_r() { if (!machine().side_effects_disabled()) { - m_audiocpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); - m_audiocpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); + m_dcpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); + m_dcpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); + if (m_dcpu2) + { + m_dcpu2->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); + m_dcpu2->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); + } } return 0xff; } @@ -728,8 +738,13 @@ uint8_t gottlieb_sound_p4_device::signal_audio_nmi_r() void gottlieb_sound_p4_device::signal_audio_nmi_w(uint8_t data) { - m_audiocpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); - m_audiocpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); + m_dcpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); + m_dcpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); + if (m_dcpu2) + { + m_dcpu2->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); + m_dcpu2->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); + } } @@ -789,7 +804,7 @@ void gottlieb_sound_p4_device::psg_latch_w(uint8_t data) // sound CPU address map //------------------------------------------------- -void gottlieb_sound_p4_device::gottlieb_sound_p4_map(address_map &map) +void gottlieb_sound_p4_device::p4_dmap(address_map &map) { map.unmap_value_high(); map(0x0000, 0x07ff).mirror(0x3800).ram(); @@ -804,7 +819,7 @@ void gottlieb_sound_p4_device::gottlieb_sound_p4_map(address_map &map) // speech CPU address map //------------------------------------------------- -void gottlieb_sound_p4_device::gottlieb_speech_p4_map(address_map &map) +void gottlieb_sound_p4_device::p4_ymap(address_map &map) { map.unmap_value_high(); map(0x0000, 0x07ff).mirror(0x1800).ram(); // 6116 @ H3 @@ -826,11 +841,11 @@ void gottlieb_sound_p4_device::gottlieb_speech_p4_map(address_map &map) void gottlieb_sound_p4_device::device_add_mconfig(machine_config &config) { // audio CPUs - M6502(config, m_audiocpu, SOUND2_CLOCK/2); - m_audiocpu->set_addrmap(AS_PROGRAM, &gottlieb_sound_p4_device::gottlieb_sound_p4_map); + M6502(config, m_dcpu, SOUND2_CLOCK/2); + m_dcpu->set_addrmap(AS_PROGRAM, &gottlieb_sound_p4_device::p4_dmap); - M6502(config, m_speechcpu, SOUND2_CLOCK/2); - m_speechcpu->set_addrmap(AS_PROGRAM, &gottlieb_sound_p4_device::gottlieb_speech_p4_map); + M6502(config, m_ycpu, SOUND2_CLOCK/2); + m_ycpu->set_addrmap(AS_PROGRAM, &gottlieb_sound_p4_device::p4_ymap); // sound hardware AD7528(config, "dac", 0).add_route(ALL_OUTPUTS, *this, 0.5); @@ -863,6 +878,7 @@ void gottlieb_sound_p4_device::device_start() save_item(NAME(m_last_command)); save_item(NAME(m_psg_latch)); save_item(NAME(m_psg_data_latch)); + save_item(NAME(m_dcpu2_latch)); } @@ -894,9 +910,66 @@ void gottlieb_sound_p4_device::device_timer(emu_timer &timer, device_timer_id id case TID_SOUND_LATCH_WRITE: // each CPU has its own latch - m_audiocpu_latch = param; - m_speechcpu_latch = param; + m_dcpu_latch = param; + m_ycpu_latch = param; + if (m_dcpu2) + m_dcpu2_latch = param; break; } } + +//************************************************************************** +// PIN5 SOUND BOARD: same as p4 + extra 6502 + AD7528 +//************************************************************************** + +//------------------------------------------------- +// gottlieb_sound_r2_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) +{ +} + + +uint8_t gottlieb_sound_p5_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_p5_device::p5_dmap(address_map &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(); +} + +//------------------------------------------------- +// device_add_mconfig - add device configuration +//------------------------------------------------- + +void gottlieb_sound_p5_device::device_add_mconfig(machine_config &config) +{ + gottlieb_sound_p4_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); + + AD7528(config, "dac2", 0).add_route(ALL_OUTPUTS, *this, 0.5); + AD7528(config, "dacvol2", 0) + .set_output_range(0, 1) + .add_route(0, "dac2", 1.0, DAC_INPUT_RANGE_HI) + .add_route(0, "dac2", -1.0, DAC_INPUT_RANGE_LO); +} + +void gottlieb_sound_p5_device::device_start() +{ + gottlieb_sound_p4_device::device_start(); +} diff --git a/src/mame/audio/gottlieb.h b/src/mame/audio/gottlieb.h index 5355c1959aa..91550ba38c2 100644 --- a/src/mame/audio/gottlieb.h +++ b/src/mame/audio/gottlieb.h @@ -21,6 +21,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_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) @@ -32,7 +33,6 @@ DECLARE_DEVICE_TYPE(GOTTLIEB_SOUND_REV2, gottlieb_sound_r2_device) // ======================> gottlieb_sound_p2_device -// rev 0 sound board class gottlieb_sound_p2_device : public device_t, public device_mixer_interface { public: @@ -51,11 +51,11 @@ protected: virtual ioport_constructor device_input_ports() const override; virtual void device_start() override; - void gottlieb_sound_p2_map(address_map &map); + void p2_map(address_map &map); private: // devices - required_device m_audiocpu; + required_device m_cpu; required_device m_r6530; uint8_t m_sndcmd; @@ -88,7 +88,7 @@ protected: virtual ioport_constructor device_input_ports() const override; virtual void device_start() override; - virtual void gottlieb_sound_r1_map(address_map &map); + virtual void r1_map(address_map &map); protected: required_device m_dac; @@ -117,7 +117,7 @@ protected: void votrax_data_w(uint8_t data); void speech_clock_dac_w(uint8_t data); - virtual void gottlieb_sound_r1_map(address_map &map) override; + virtual void r1_map(address_map &map) override; private: // devices @@ -162,8 +162,8 @@ protected: void speech_ctrl_w(uint8_t data); void psg_latch_w(uint8_t data); - void gottlieb_sound_p4_map(address_map &map); - void gottlieb_speech_p4_map(address_map &map); + void p4_dmap(address_map &map); + void p4_ymap(address_map &map); // internal helpers void nmi_timer_adjust(); @@ -178,8 +178,9 @@ protected: }; // devices - required_device m_audiocpu; - required_device m_speechcpu; + required_device m_dcpu; + optional_device m_dcpu2; + required_device m_ycpu; required_device m_ay1; required_device m_ay2; @@ -187,12 +188,13 @@ protected: emu_timer * m_nmi_timer; uint8_t m_nmi_rate; uint8_t m_nmi_state; - uint8_t m_audiocpu_latch; - uint8_t m_speechcpu_latch; + uint8_t m_dcpu_latch; + uint8_t m_ycpu_latch; uint8_t m_speech_control; uint8_t m_last_command; uint8_t m_psg_latch; uint8_t m_psg_data_latch; + uint8_t m_dcpu2_latch; }; @@ -221,8 +223,8 @@ private: void sp0250_latch_w(uint8_t data); void speech_control_w(uint8_t data); - void gottlieb_sound_r2_map(address_map &map); - void gottlieb_speech_r2_map(address_map &map); + void r2_dmap(address_map &map); + void r2_ymap(address_map &map); // devices optional_device m_sp0250; @@ -232,3 +234,22 @@ private: uint8_t m_sp0250_latch; }; +// ======================> gottlieb_sound_p5_device + +// same as p4 plus an extra dac, same as existing audiocpu. For bonebusters. +class gottlieb_sound_p5_device : public gottlieb_sound_p4_device +{ +public: + // construction/destruction + gottlieb_sound_p5_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 p5_dmap(address_map &map); + uint8_t d2_data_r(); +}; + diff --git a/src/mame/drivers/gts3.cpp b/src/mame/drivers/gts3.cpp index e3901dd7c69..8d411bcafc6 100644 --- a/src/mame/drivers/gts3.cpp +++ b/src/mame/drivers/gts3.cpp @@ -64,9 +64,12 @@ ToDo: #include "emu.h" #include "machine/genpin.h" +#include "audio/gottlieb.h" #include "cpu/m6502/m65c02.h" #include "machine/6522via.h" #include "machine/input_merger.h" +#include "speaker.h" + #include "gts3.lh" namespace { @@ -79,12 +82,14 @@ public: , m_maincpu(*this, "maincpu") , m_u4(*this, "u4") , m_u5(*this, "u5") + , m_p4_sound(*this, "p4sound") , m_io_keyboard(*this, "X%d", 0U) , m_digits(*this, "digit%d", 0U) , m_io_outputs(*this, "out%d", 0U) { } - void gts3(machine_config &config); + void p0(machine_config &config); // no sound card assigned yet + void p4(machine_config &config); // p4 sound card DECLARE_INPUT_CHANGED_MEMBER(test_inp); private: @@ -93,7 +98,9 @@ private: u8 u4b_r(); void lampret_w(u8); void solenoid_w(offs_t, u8); + void u4b_w(u8 data); + void u5a_w(u8 data); DECLARE_WRITE_LINE_MEMBER(nmi_w); void mem_map(address_map &map); bool m_dispclk = 0; @@ -107,6 +114,7 @@ private: required_device m_maincpu; required_device m_u4; required_device m_u5; + optional_device m_p4_sound; required_ioport_array<12> m_io_keyboard; output_finder<40> m_digits; output_finder<128> m_io_outputs; // 32 solenoids + 96 lamps @@ -296,6 +304,12 @@ u8 gts3_state::u4b_r() return m_u4b | (ioport("TTS")->read() & 0x18); } +void gts3_state::u5a_w(u8 data) +{ + if (m_p4_sound) + m_p4_sound->write(data); +} + void gts3_state::machine_start() { genpin_class::machine_start(); @@ -320,7 +334,7 @@ void gts3_state::machine_reset() m_dispclk = 0; } -void gts3_state::gts3(machine_config &config) +void gts3_state::p0(machine_config &config) { M65C02(config, m_maincpu, XTAL(4'000'000) / 2); m_maincpu->set_addrmap(AS_PROGRAM, >s3_state::mem_map); @@ -329,8 +343,6 @@ void gts3_state::gts3(machine_config &config) config.set_default_layout(layout_gts3); - genpin_audio(config); - R65C22(config, m_u4, XTAL(4'000'000) / 2); m_u4->irq_handler().set("irq", FUNC(input_merger_device::in_w<0>)); m_u4->readpa_handler().set(FUNC(gts3_state::u4a_r)); @@ -341,7 +353,7 @@ void gts3_state::gts3(machine_config &config) R65C22(config, m_u5, XTAL(4'000'000) / 2); m_u5->irq_handler().set("irq", FUNC(input_merger_device::in_w<1>)); - //m_u5->readpa_handler().set(FUNC(gts3_state::u5a_r)); + m_u5->writepa_handler().set(FUNC(gts3_state::u5a_w)); //m_u5->readpb_handler().set(FUNC(gts3_state::u5b_r)); //m_u5->writepb_handler().set(FUNC(gts3_state::u5b_w)); //m_u5->ca2_handler().set(FUNC(gts3_state::u5ca2_w)); @@ -349,16 +361,27 @@ void gts3_state::gts3(machine_config &config) //m_u5->cb2_handler().set(FUNC(gts3_state::u5cb2_w)); INPUT_MERGER_ANY_HIGH(config, "irq").output_handler().set_inputline("maincpu", m65c02_device::IRQ_LINE); + + /* Sound */ + genpin_audio(config); + SPEAKER(config, "mono").front_center(); +} + +void gts3_state::p4(machine_config &config) +{ + p0(config); + + GOTTLIEB_SOUND_PIN4(config, m_p4_sound, 0).add_route(ALL_OUTPUTS, "mono", 1.00); } /*------------------------------------------------------------------- / Bell Ringer (N103) Redemption Machine /-------------------------------------------------------------------*/ ROM_START(bellring) - ROM_REGION(0x10000, "maincpu", 0) + ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF) ROM_LOAD("br_gprom.bin", 0x0000, 0x10000, CRC(a9a59b36) SHA1(ca6d0e54a5c85ef72485975c632660831a3b8c82)) - ROM_REGION(0x10000, "cpu3", 0) + ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_LOAD("br_drom1.bin", 0x8000, 0x8000, CRC(99f38229) SHA1(f63d743e63e88728e8d53320b21b2fda1b6385f8)) ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF) @@ -369,13 +392,13 @@ ROM_END / Cactus Jack's (#729) /-------------------------------------------------------------------*/ ROM_START(cactjack) - ROM_REGION(0x10000, "maincpu", 0) + ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF) ROM_LOAD("gprom.bin", 0x0000, 0x10000, CRC(5661ab06) SHA1(12b7066110feab0aef36ff7bdc74690fc8da4ed3)) - ROM_REGION(0x10000, "cpu3", 0) + ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_LOAD("drom1.bin", 0x8000, 0x8000, CRC(78c099e1) SHA1(953111237fdc3e20562d823eb2b6430e5a4afe4d)) - ROM_REGION(0x100000, "sound1", 0) + ROM_REGION(0x100000, "sound1", ROMREGION_ERASEFF) ROM_LOAD("arom1.bin", 0x00000, 0x20000, CRC(c890475f) SHA1(1cf6ed0dbd003a76a5cf889f62b489c0a62e9d25)) ROM_RELOAD(0x00000+0x40000, 0x20000) ROM_RELOAD(0x00000+0x80000, 0x20000) @@ -393,10 +416,10 @@ ROM_END / Car Hop (#725) /-------------------------------------------------------------------*/ ROM_START(carhop) - ROM_REGION(0x10000, "maincpu", 0) + ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF) ROM_LOAD("gprom.bin", 0x0000, 0x10000, CRC(164b2c9c) SHA1(49cf7e3a3acb5de8dbfd2ad22f8bd9a352ff2899)) - ROM_REGION(0x10000, "cpu3", 0) + ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_LOAD("drom1.bin", 0x8000, 0x8000, CRC(9dec74e7) SHA1(8234bdca5536d30dc1eabcb3a5505d2fd824ce0f)) ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF) @@ -408,13 +431,13 @@ ROM_END / One-sided cocktail designed and built by Gottlieb for International Concepts /-------------------------------------------------------------------*/ ROM_START(ccruise) - ROM_REGION(0x10000, "maincpu", 0) + ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF) ROM_LOAD("gprom.bin", 0x0000, 0x10000, CRC(668b5757) SHA1(8ff955e8598ffdc68eab7fd69c6a67c4eed13f0f)) - ROM_REGION(0x10000, "cpu3", 0) + ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_LOAD("drom1.bin", 0x8000, 0x8000, CRC(4480257e) SHA1(50b93d4496816ef7cdf007ac75c72c6aaa956aba)) - ROM_REGION(0x100000, "sound1", 0) + ROM_REGION(0x100000, "sound1", ROMREGION_ERASEFF) ROM_LOAD("arom1.bin", 0x00000, 0x40000, CRC(f8cec60c) SHA1(e52f3a5890a3bb5eb6c932c3d0ed471ed76909c9)) ROM_RELOAD(0x40000, 0x40000) @@ -426,13 +449,13 @@ ROM_END / Class of 1812 (#730) /-------------------------------------------------------------------*/ ROM_START(clas1812) - ROM_REGION(0x10000, "maincpu", 0) + ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF) ROM_LOAD("gprom.bin", 0x0000, 0x10000, CRC(564349bf) SHA1(458eb2ece924a20d309dce7117c94e75b4a21fd7)) - ROM_REGION(0x10000, "cpu3", 0) + ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_LOAD("drom1.bin", 0x8000, 0x8000, CRC(3863a9df) SHA1(1759abbfcb127a6909f70845f41daf3ac8e80cef)) - ROM_REGION(0x100000, "sound1", 0) + ROM_REGION(0x100000, "sound1", ROMREGION_ERASEFF) ROM_LOAD("arom1.bin", 0x00000, 0x20000, CRC(357b0069) SHA1(870b0b84c6b3754f89b4e4e0b4594613ef589204)) ROM_RELOAD(0x00000+0x40000, 0x20000) ROM_RELOAD(0x00000+0x80000, 0x20000) @@ -450,10 +473,10 @@ ROM_END / Deadly Weapon (#724) /-------------------------------------------------------------------*/ ROM_START(deadweap) - ROM_REGION(0x10000, "maincpu", 0) + ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF) ROM_LOAD("gprom.bin", 0x0000, 0x10000, CRC(07d84b32) SHA1(25d8772a5c8655b3406df94563076719b07129cd)) - ROM_REGION(0x10000, "cpu3", 0) + ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_LOAD("drom1.bin", 0x8000, 0x8000, CRC(f55dd7ec) SHA1(fe306c40bf3d98e4076d0d8a935c3671469d4cff)) ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF) @@ -464,10 +487,10 @@ ROM_END / Hoops (#727) /-------------------------------------------------------------------*/ ROM_START(hoops) - ROM_REGION(0x10000, "maincpu", 0) + ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF) ROM_LOAD("gprom.bin", 0x0000, 0x10000, CRC(78391273) SHA1(dbf91597ce2910e526fb5e82355ad862706b4975)) - ROM_REGION(0x10000, "cpu3", 0) + ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_LOAD("drom1.bin", 0x8000, 0x8000, CRC(e72c00eb) SHA1(5b9f85083b38d916afb0f9b72b061501504725ff)) ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF) @@ -478,24 +501,24 @@ ROM_END / Lights, Camera, Action (#720) /-------------------------------------------------------------------*/ ROM_START(lca) - ROM_REGION(0x10000, "maincpu", 0) + ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF) ROM_LOAD("gprom.bin", 0x8000, 0x8000, CRC(52957d70) SHA1(0c24d824b1aa966eb3af3db3ff02870ba463dcd6)) - ROM_REGION(0x10000, "cpu3", 0) + ROM_REGION(0x10000, "p4sound:audiocpu", ROMREGION_ERASEFF) ROM_LOAD("drom1.bin", 0x8000, 0x8000, CRC(a258d72d) SHA1(eeb4768c8b2f57509a088d3ac8d35aa34f2cfc2c)) - ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF) + ROM_REGION(0x10000, "p4sound:speechcpu", ROMREGION_ERASEFF) ROM_LOAD("yrom1.bin", 0x8000, 0x8000, CRC(20919ebb) SHA1(a2ea79863b41a04aa23ea596932825408cca64e3)) ROM_END ROM_START(lca2) - ROM_REGION(0x10000, "maincpu", 0) + ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF) ROM_LOAD("gprom2.bin", 0x8000, 0x8000, CRC(937a8426) SHA1(6bc2d1b0c3dc273577376654ba72b60febe32529)) - ROM_REGION(0x10000, "cpu3", 0) + ROM_REGION(0x10000, "p4sound:audiocpu", ROMREGION_ERASEFF) ROM_LOAD("drom1.bin", 0x8000, 0x8000, CRC(a258d72d) SHA1(eeb4768c8b2f57509a088d3ac8d35aa34f2cfc2c)) - ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF) + ROM_REGION(0x10000, "p4sound:speechcpu", ROMREGION_ERASEFF) ROM_LOAD("yrom1.bin", 0x8000, 0x8000, CRC(20919ebb) SHA1(a2ea79863b41a04aa23ea596932825408cca64e3)) ROM_END @@ -503,10 +526,10 @@ ROM_END / Nudge-It (N102) Redemption Machine /-------------------------------------------------------------------*/ ROM_START(nudgeit) - ROM_REGION(0x10000, "maincpu", 0) + ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF) ROM_LOAD("gprom.bin", 0x0000, 0x10000, CRC(3d9e0309) SHA1(caaa28482e7f260668aa05b39b551acb8e4cc41a)) - ROM_REGION(0x10000, "cpu3", 0) + ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_LOAD("drom1.bin", 0x8000, 0x8000, CRC(ae0c4b1d) SHA1(c8aa409c9b54fd8ecf70eb2926f4e98fc5eb11fe)) ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF) @@ -517,13 +540,13 @@ ROM_END / Operation: Thunder (#732) /-------------------------------------------------------------------*/ ROM_START(opthund) - ROM_REGION(0x10000, "maincpu", 0) + ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF) ROM_LOAD("gprom.bin", 0x0000, 0x10000, CRC(96a128c2) SHA1(4032c5191b167a0498371207666a1f73155b7a74)) - ROM_REGION(0x10000, "cpu3", 0) + ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_LOAD("drom1.bin", 0x8000, 0x8000, CRC(db28be69) SHA1(6c505c34c8bdccc43dd8f310f01dd3a6b49e8059)) - ROM_REGION(0x100000, "sound1", 0) + ROM_REGION(0x100000, "sound1", ROMREGION_ERASEFF) ROM_LOAD("arom1.bin", 0x00000, 0x40000, CRC(0fbb130a) SHA1(a171c20f861dac5918c5b410e2a2bdd6e7c0553b)) ROM_RELOAD(0x00000+0x40000, 0x40000) ROM_LOAD("arom2.bin", 0x80000, 0x40000, CRC(0f7632b3) SHA1(a122a062448139d5c1a9daa7d827c3073aa194f7)) @@ -537,10 +560,10 @@ ROM_END / Silver Slugger (#722) /-------------------------------------------------------------------*/ ROM_START(silvslug) - ROM_REGION(0x10000, "maincpu", 0) + ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF) ROM_LOAD("gprom.bin", 0x0000, 0x10000, CRC(a6c524e2) SHA1(dc12dd8e814a37aada021f84c58475efe72cb846)) - ROM_REGION(0x10000, "cpu3", 0) + ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_LOAD("drom1.bin", 0x8000, 0x8000, CRC(eac3e1cc) SHA1(2725457231854e4f3d54fbba745b8fc6f55b1688)) ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF) @@ -551,13 +574,13 @@ ROM_END / Surf'n Safari (#731) /-------------------------------------------------------------------*/ ROM_START(surfnsaf) - ROM_REGION(0x10000, "maincpu", 0) + ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF) ROM_LOAD("gprom.bin", 0x0000, 0x10000, CRC(ac3393bd) SHA1(f9c533b937b5ca5698b805ed6ed573cb22383d9d)) - ROM_REGION(0x10000, "cpu3", 0) + ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_LOAD("drom1.bin", 0x8000, 0x8000, CRC(ec8fc963) SHA1(247e76d87beb3339e7d55292f9eadd2351621cfa)) - ROM_REGION(0x100000, "sound1", 0) + ROM_REGION(0x100000, "sound1", ROMREGION_ERASEFF) ROM_LOAD("arom1.bin", 0x00000, 0x40000, CRC(38b569b2) SHA1(93be47916a92541d097233b60a42eb7ca587ce52)) ROM_RELOAD(0x00000+0x40000, 0x40000) ROM_LOAD("arom2.bin", 0x80000, 0x40000, CRC(224c2021) SHA1(6b426097a2870b3b32d786be6e66ba6be9f54c29)) @@ -571,10 +594,10 @@ ROM_END / Title Fight (#726) /-------------------------------------------------------------------*/ ROM_START(tfight) - ROM_REGION(0x10000, "maincpu", 0) + ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF) ROM_LOAD("gprom.bin", 0x0000, 0x10000, CRC(43b3193a) SHA1(bd185fe67c147a6acca8e78da4b77c384124fc46)) - ROM_REGION(0x10000, "cpu3", 0) + ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_LOAD("drom1.bin", 0x8000, 0x8000, CRC(9514739f) SHA1(2794549f549d68e064a9a962a4e91fff7dcf0160)) ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF) @@ -585,10 +608,10 @@ ROM_END / Vegas (#723) /-------------------------------------------------------------------*/ ROM_START(vegas) - ROM_REGION(0x10000, "maincpu", 0) + ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF) ROM_LOAD("gprom.bin", 0x0000, 0x10000, CRC(48189981) SHA1(95144af4b222158becd4d5748d15b7b6c6021bd2)) - ROM_REGION(0x10000, "cpu3", 0) + ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_LOAD("drom1.bin", 0x8000, 0x8000, CRC(46eb5755) SHA1(94ec2d0cf41f68a8c3d7505186b11b4abb4803db)) ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF) @@ -605,13 +628,13 @@ ROM_END / Shows as "GAME NAME" in display, (#7**) /-------------------------------------------------------------------*/ ROM_START(tt_game) - ROM_REGION(0x10000, "maincpu", 0) + ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF) ROM_LOAD("gprom.bin", 0x0000, 0x10000, CRC(e7944b75) SHA1(b73f2e0004556c8aa88baef0cddcdefb5b905b8d)) - ROM_REGION(0x10000, "cpu3", 0) + ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) ROM_LOAD("drom1.bin", 0x8000, 0x8000, NO_DUMP) - ROM_REGION(0x100000, "sound1", 0) + ROM_REGION(0x100000, "sound1", ROMREGION_ERASEFF) ROM_LOAD("arom1.bin", 0x00000, 0x20000, CRC(b0983d90) SHA1(72e6a71f20fd5849543ca13813f062a3fc1d7dcf)) ROM_RELOAD(0x00000+0x40000, 0x20000) ROM_RELOAD(0x00000+0x80000, 0x20000) @@ -627,19 +650,19 @@ ROM_END } // anonymous namespace -GAME(1989, lca, 0, gts3, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Lights...Camera...Action!", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, lca2, lca, gts3, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Lights...Camera...Action! (rev.2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1990, silvslug, 0, gts3, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Silver Slugger", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1990, vegas, 0, gts3, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Vegas", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1990, deadweap, 0, gts3, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Deadly Weapon", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1990, tfight, 0, gts3, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Title Fight", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1990, nudgeit, 0, gts3, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Nudge-It", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1990, bellring, 0, gts3, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Bell Ringer", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1991, carhop, 0, gts3, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Car Hop", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1991, hoops, 0, gts3, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Hoops", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1991, cactjack, 0, gts3, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Cactus Jack's", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1991, clas1812, 0, gts3, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Class of 1812", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1991, surfnsaf, 0, gts3, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Surf'n Safari", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, opthund, 0, gts3, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Operation: Thunder", MACHINE_IS_SKELETON_MECHANICAL) -GAME(19??, tt_game, 0, gts3, gts3, gts3_state, empty_init, ROT0, "Toptronic", "unknown Toptronic pinball game", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, ccruise, 0, gts3, gts3, gts3_state, empty_init, ROT0, "International Concepts","Caribbean Cruise", MACHINE_IS_SKELETON_MECHANICAL) +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(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) +GAME(1992, opthund, 0, p0, gts3, gts3_state, empty_init, ROT0, "Gottlieb", "Operation: Thunder", MACHINE_IS_SKELETON_MECHANICAL) +GAME(19??, tt_game, 0, p0, gts3, gts3_state, empty_init, ROT0, "Toptronic", "unknown Toptronic pinball game", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, ccruise, 0, p0, gts3, gts3_state, empty_init, ROT0, "International Concepts","Caribbean Cruise", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/gts80b.cpp b/src/mame/drivers/gts80b.cpp index 9213123619e..d40e9764b1b 100644 --- a/src/mame/drivers/gts80b.cpp +++ b/src/mame/drivers/gts80b.cpp @@ -61,7 +61,6 @@ ToDo: - p3 sound card to be written, haven't found a schematic as manuals are hard to obtain - Missing sounds because of program crashes - bighouse: after game ends, the display freezes. Game keeps running though. -- Bone Busters: uses 3 CPUs for sound. No manual/schematic found. *****************************************************************************************************************/ @@ -69,8 +68,6 @@ ToDo: #include "machine/input_merger.h" #include "machine/genpin.h" #include "audio/gottlieb.h" - -#include "cpu/i86/i86.h" #include "speaker.h" #include "gts80b.lh" @@ -91,7 +88,7 @@ public: , m_io_keyboard(*this, "X%d", 0U) //, m_p3_sound(*this, "p3sound") , m_p4_sound(*this, "p4sound") - //, m_p5_sound(*this, "p5sound") + , m_p5_sound(*this, "p5sound") , m_r2_sound(*this, "r2sound") , m_digits(*this, "digit%d", 0U) , m_io_outputs(*this, "out%d", 0U) @@ -100,7 +97,7 @@ 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 - no schematic available + void p5(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); @@ -137,7 +134,7 @@ private: required_ioport_array<9> m_io_keyboard; //optional_device m_p3_sound; optional_device m_p4_sound; - //optional_device m_p5_sound; + optional_device m_p5_sound; optional_device m_r2_sound; output_finder<40> m_digits; output_finder<57> m_io_outputs; // 8 solenoids, 1 outhole, 48 lamps @@ -470,6 +467,9 @@ void gts80b_state::port3a_w(u8 data) else if (m_p4_sound) m_p4_sound->write(sndcmd | m_soundex); + else + if (m_p5_sound) + m_p5_sound->write(sndcmd | m_soundex); // Solenoids group 1 if (!BIT(data, 5)) @@ -643,7 +643,7 @@ void gts80b_state::p5(machine_config &config) { p0(config); - //GOTTLIEB_SOUND_PIN5(config, m_p5_sound, 0).add_route(ALL_OUTPUTS, "mono", 1.00); + GOTTLIEB_SOUND_PIN5(config, m_p5_sound, 0).add_route(ALL_OUTPUTS, "mono", 1.00); } void gts80b_state::r2(machine_config &config) @@ -1105,13 +1105,13 @@ ROM_START(bonebstr) ROM_RELOAD(0xa000, 0x2000) ROM_RELOAD(0xe000, 0x2000) - ROM_REGION(0x10000, "cpu4", ROMREGION_ERASEFF) + ROM_REGION(0x10000, "p5sound:dcpu2", ROMREGION_ERASEFF) ROM_LOAD("drom2.snd", 0x8000, 0x8000, CRC(d147d78d) SHA1(f8f6d6a1921685b883b224a9ea85ead52a32a4c3)) - ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) + ROM_REGION(0x10000, "p5sound:audiocpu", ROMREGION_ERASEFF) ROM_LOAD("drom1.snd", 0x8000, 0x8000, CRC(ec43f4e9) SHA1(77b0988700be7a597dca7e5f06ac5d3c6834ce21)) - ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF) + ROM_REGION(0x10000, "p5sound:speechcpu", ROMREGION_ERASEFF) ROM_LOAD("yrom1.snd", 0x8000, 0x8000, CRC(a95eedfc) SHA1(5ced2d6869a9895f8ff26d830b21d3c9364b32e7)) ROM_END @@ -1126,13 +1126,13 @@ ROM_START(bonebstrf) ROM_RELOAD(0xa000, 0x2000) ROM_RELOAD(0xe000, 0x2000) - ROM_REGION(0x10000, "cpu4", ROMREGION_ERASEFF) + ROM_REGION(0x10000, "p5sound:dcpu2", ROMREGION_ERASEFF) ROM_LOAD("drom2.snd", 0x8000, 0x8000, CRC(d147d78d) SHA1(f8f6d6a1921685b883b224a9ea85ead52a32a4c3)) - ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) + ROM_REGION(0x10000, "p5sound:audiocpu", ROMREGION_ERASEFF) ROM_LOAD("drom1.snd", 0x8000, 0x8000, CRC(ec43f4e9) SHA1(77b0988700be7a597dca7e5f06ac5d3c6834ce21)) - ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF) + ROM_REGION(0x10000, "p5sound:speechcpu", ROMREGION_ERASEFF) ROM_LOAD("yrom1.snd", 0x8000, 0x8000, CRC(a95eedfc) SHA1(5ced2d6869a9895f8ff26d830b21d3c9364b32e7)) ROM_END @@ -1147,13 +1147,13 @@ ROM_START(bonebstrg) ROM_RELOAD(0xa000, 0x2000) ROM_RELOAD(0xe000, 0x2000) - ROM_REGION(0x10000, "cpu4", ROMREGION_ERASEFF) + ROM_REGION(0x10000, "p5sound:dcpu2", ROMREGION_ERASEFF) ROM_LOAD("drom2.snd", 0x8000, 0x8000, CRC(d147d78d) SHA1(f8f6d6a1921685b883b224a9ea85ead52a32a4c3)) - ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) + ROM_REGION(0x10000, "p5sound:audiocpu", ROMREGION_ERASEFF) ROM_LOAD("drom1.snd", 0x8000, 0x8000, CRC(ec43f4e9) SHA1(77b0988700be7a597dca7e5f06ac5d3c6834ce21)) - ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF) + ROM_REGION(0x10000, "p5sound:speechcpu", ROMREGION_ERASEFF) ROM_LOAD("yrom1.snd", 0x8000, 0x8000, CRC(a95eedfc) SHA1(5ced2d6869a9895f8ff26d830b21d3c9364b32e7)) ROM_END -- cgit v1.2.3