From bd7430d59a82bb75efa3ad4ed4dbcf8227e59e8a Mon Sep 17 00:00:00 2001 From: Lord-Nightmare Date: Tue, 30 Jun 2020 00:39:48 -0400 Subject: Williams System 11/11a/11b/11c pinballs: further consistency fixes with device and function names, more fixes (missed a few earlier) relating to the CVSD speech clock polarity and digital input bit masking, and corrected some memory/device mirroring issues to be consistent across the drivers. [Lord Nightmare] --- src/mame/audio/s11c_bg.cpp | 17 ++++++++--------- src/mame/audio/s11c_bg.h | 4 ++-- src/mame/drivers/s11.cpp | 8 ++++---- src/mame/drivers/s11a.cpp | 8 ++++---- src/mame/drivers/s11b.cpp | 41 ++++++++++++++++++++--------------------- src/mame/drivers/s11c.cpp | 18 +++++++++--------- src/mame/includes/s11.h | 4 ++-- src/mame/includes/s11b.h | 4 ++-- 8 files changed, 51 insertions(+), 53 deletions(-) diff --git a/src/mame/audio/s11c_bg.cpp b/src/mame/audio/s11c_bg.cpp index 4c37bbe3236..c57804523ad 100644 --- a/src/mame/audio/s11c_bg.cpp +++ b/src/mame/audio/s11c_bg.cpp @@ -29,12 +29,12 @@ s11c_bg_device::s11c_bg_device(const machine_config &mconfig, const char *tag, d void s11c_bg_device::s11c_bg_map(address_map &map) { - map(0x0000, 0x07ff).ram(); + map(0x0000, 0x07ff).mirror(0x1800).ram(); map(0x2000, 0x2001).mirror(0x1ffe).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write)); map(0x4000, 0x4003).mirror(0x1ffc).rw("pia40", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); - map(0x6000, 0x67ff).w(FUNC(s11c_bg_device::bg_speech_digit_w)); - map(0x6800, 0x6fff).w(FUNC(s11c_bg_device::bg_speech_clock_w)); - map(0x7800, 0x7fff).w(FUNC(s11c_bg_device::bgbank_w)); + map(0x6000, 0x6000).mirror(0x07ff).w(FUNC(s11c_bg_device::bg_cvsd_clock_set_w)); + map(0x6800, 0x6800).mirror(0x07ff).w(FUNC(s11c_bg_device::bg_cvsd_digit_clock_clear_w)); + map(0x7800, 0x7800).mirror(0x07ff).w(FUNC(s11c_bg_device::bgbank_w)); map(0x8000, 0xffff).bankr("bgbank"); } @@ -104,16 +104,15 @@ WRITE_LINE_MEMBER( s11c_bg_device::ym2151_irq_w) m_pia40->ca1_w(0); } -void s11c_bg_device::bg_speech_clock_w(uint8_t data) +void s11c_bg_device::bg_cvsd_clock_set_w(uint8_t data) { - // pulses clock input? m_hc55516->clock_w(1); - m_hc55516->clock_w(0); } -void s11c_bg_device::bg_speech_digit_w(uint8_t data) +void s11c_bg_device::bg_cvsd_digit_clock_clear_w(uint8_t data) { - m_hc55516->digit_w(data); + m_hc55516->clock_w(0); + m_hc55516->digit_w(data&1); } void s11c_bg_device::bgbank_w(uint8_t data) diff --git a/src/mame/audio/s11c_bg.h b/src/mame/audio/s11c_bg.h index f269883be80..b5d9330c677 100644 --- a/src/mame/audio/s11c_bg.h +++ b/src/mame/audio/s11c_bg.h @@ -23,8 +23,8 @@ public: // construction/destruction s11c_bg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); - void bg_speech_clock_w(uint8_t data); - void bg_speech_digit_w(uint8_t data); + void bg_cvsd_clock_set_w(uint8_t data); + void bg_cvsd_digit_clock_clear_w(uint8_t data); void bgbank_w(uint8_t data); void ctrl_w(uint8_t data); void data_w(uint8_t data); diff --git a/src/mame/drivers/s11.cpp b/src/mame/drivers/s11.cpp index 59af4452bc5..e30a0f2b20b 100644 --- a/src/mame/drivers/s11.cpp +++ b/src/mame/drivers/s11.cpp @@ -52,7 +52,7 @@ void s11_state::s11_audio_map(address_map &map) void s11_state::s11_bg_map(address_map &map) { map(0x0000, 0x07ff).mirror(0x1800).ram(); - map(0x2000, 0x2001).mirror(0x1ffe).rw(m_ym, FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x2000, 0x2001).mirror(0x1ffe).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write)); map(0x4000, 0x4003).mirror(0x1ffc).rw(m_pia40, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0x8000, 0xffff).rom(); } @@ -491,9 +491,9 @@ void s11_state::s11(machine_config &config) m_bgcpu->set_addrmap(AS_PROGRAM, &s11_state::s11_bg_map); SPEAKER(config, "bg").front_center(); - YM2151(config, m_ym, 3580000); - m_ym->irq_handler().set(FUNC(s11_state::ym2151_irq_w)); - m_ym->add_route(ALL_OUTPUTS, "bg", 0.50); + YM2151(config, m_ym2151, 3580000); + m_ym2151->irq_handler().set(FUNC(s11_state::ym2151_irq_w)); + m_ym2151->add_route(ALL_OUTPUTS, "bg", 0.50); MC1408(config, "dac1", 0).add_route(ALL_OUTPUTS, "bg", 0.25); diff --git a/src/mame/drivers/s11a.cpp b/src/mame/drivers/s11a.cpp index fd53f292986..3bc29d603c9 100644 --- a/src/mame/drivers/s11a.cpp +++ b/src/mame/drivers/s11a.cpp @@ -55,7 +55,7 @@ void s11a_state::s11a_audio_map(address_map &map) void s11a_state::s11a_bg_map(address_map &map) { map(0x0000, 0x07ff).mirror(0x1800).ram(); - map(0x2000, 0x2001).mirror(0x1ffe).rw(m_ym, FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x2000, 0x2001).mirror(0x1ffe).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write)); map(0x4000, 0x4003).mirror(0x1ffc).rw(m_pia40, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0x7800, 0x7fff).w(FUNC(s11a_state::bgbank_w)); map(0x8000, 0xffff).bankr("bgbank"); @@ -265,9 +265,9 @@ void s11a_state::s11a(machine_config &config) m_bgcpu->set_addrmap(AS_PROGRAM, &s11a_state::s11a_bg_map); SPEAKER(config, "bg").front_center(); - YM2151(config, m_ym, XTAL(3'579'545)); - m_ym->irq_handler().set(FUNC(s11a_state::ym2151_irq_w)); - m_ym->add_route(ALL_OUTPUTS, "bg", 0.50); + YM2151(config, m_ym2151, XTAL(3'579'545)); + m_ym2151->irq_handler().set(FUNC(s11a_state::ym2151_irq_w)); + m_ym2151->add_route(ALL_OUTPUTS, "bg", 0.50); MC1408(config, "dac1", 0).add_route(ALL_OUTPUTS, "bg", 0.25); diff --git a/src/mame/drivers/s11b.cpp b/src/mame/drivers/s11b.cpp index e2467801041..11754cd13b2 100644 --- a/src/mame/drivers/s11b.cpp +++ b/src/mame/drivers/s11b.cpp @@ -48,7 +48,7 @@ void s11b_state::s11b_main_map(address_map &map) void s11b_state::s11b_audio_map(address_map &map) { map(0x0000, 0x07ff).mirror(0x0800).ram(); - map(0x1000, 0x1fff).w(FUNC(s11b_state::bank_w)); + map(0x1000, 0x1000).mirror(0x0fff).w(FUNC(s11b_state::bank_w)); map(0x2000, 0x2003).mirror(0x0ffc).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0x8000, 0xbfff).bankr("bank0"); map(0xc000, 0xffff).bankr("bank1"); @@ -56,12 +56,12 @@ void s11b_state::s11b_audio_map(address_map &map) void s11b_state::s11b_bg_map(address_map &map) { - map(0x0000, 0x07ff).ram(); - map(0x2000, 0x2001).mirror(0x1ffe).rw(m_ym, FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x0000, 0x07ff).mirror(0x1800).ram(); + map(0x2000, 0x2001).mirror(0x1ffe).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write)); map(0x4000, 0x4003).mirror(0x1ffc).rw(m_pia40, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); - map(0x6000, 0x67ff).w(FUNC(s11b_state::bg_speech_digit_w)); - map(0x6800, 0x6fff).w(FUNC(s11b_state::bg_speech_clock_w)); - map(0x7800, 0x7fff).w(FUNC(s11b_state::bgbank_w)); + map(0x6000, 0x6000).mirror(0x07ff).w(FUNC(s11b_state::bg_cvsd_digit_clock_clear_w)); + map(0x6800, 0x6800).mirror(0x07ff).w(FUNC(s11b_state::bg_cvsd_clock_set_w)); + map(0x7800, 0x7800).mirror(0x07ff).w(FUNC(s11b_state::bgbank_w)); map(0x8000, 0xffff).bankr("bgbank"); } @@ -153,20 +153,19 @@ MACHINE_RESET_MEMBER( s11b_state, s11b ) m_bgcpu->pulse_input_line(INPUT_LINE_RESET, attotime::zero); } -void s11b_state::bg_speech_clock_w(uint8_t data) +void s11b_state::bg_cvsd_clock_set_w(uint8_t data) { if(m_bg_hc55516) - { - // pulses clock input? m_bg_hc55516->clock_w(1); - m_bg_hc55516->clock_w(0); - } } -void s11b_state::bg_speech_digit_w(uint8_t data) +void s11b_state::bg_cvsd_digit_clock_clear_w(uint8_t data) { if(m_bg_hc55516) - m_bg_hc55516->digit_w(data); + { + m_bg_hc55516->clock_w(0); + m_bg_hc55516->digit_w(data&1); + } } void s11b_state::dig1_w(uint8_t data) @@ -331,8 +330,8 @@ void s11b_state::s11b(machine_config &config) m_pias->set_port_a_input_overrides_output_mask(0xff); m_pias->writepa_handler().set(FUNC(s11_state::sound_w)); m_pias->writepb_handler().set("dac", FUNC(dac_byte_interface::data_w)); - m_pias->ca2_handler().set("hc55516", FUNC(hc55516_device::clock_w)); - m_pias->cb2_handler().set("hc55516", FUNC(hc55516_device::digit_w)); + m_pias->ca2_handler().set(m_hc55516, FUNC(hc55516_device::clock_w)); + m_pias->cb2_handler().set(m_hc55516, FUNC(hc55516_device::digit_w)); m_pias->irqa_handler().set(m_audioirq, FUNC(input_merger_device::in_w<0>)); m_pias->irqb_handler().set(m_audioirq, FUNC(input_merger_device::in_w<1>)); @@ -342,9 +341,9 @@ void s11b_state::s11b(machine_config &config) config.set_maximum_quantum(attotime::from_hz(50)); SPEAKER(config, "bg").front_center(); - YM2151(config, m_ym, 3580000); - m_ym->irq_handler().set(FUNC(s11b_state::ym2151_irq_w)); - m_ym->add_route(ALL_OUTPUTS, "bg", 0.25); + YM2151(config, m_ym2151, 3580000); + m_ym2151->irq_handler().set(FUNC(s11b_state::ym2151_irq_w)); + m_ym2151->add_route(ALL_OUTPUTS, "bg", 0.25); MC1408(config, "dac1", 0).add_route(ALL_OUTPUTS, "bg", 0.25); @@ -353,10 +352,10 @@ void s11b_state::s11b(machine_config &config) PIA6821(config, m_pia40, 0); m_pia40->writepa_handler().set("dac1", FUNC(dac_byte_interface::data_w)); m_pia40->writepb_handler().set(FUNC(s11_state::pia40_pb_w)); - m_pia40->ca2_handler().set("ym2151", FUNC(ym2151_device::reset_w)); + m_pia40->ca2_handler().set(m_ym2151, FUNC(ym2151_device::reset_w)); m_pia40->cb2_handler().set(FUNC(s11_state::pia40_cb2_w)); - m_pia40->irqa_handler().set_inputline("bgcpu", M6809_FIRQ_LINE); - m_pia40->irqb_handler().set_inputline("bgcpu", INPUT_LINE_NMI); + m_pia40->irqa_handler().set_inputline(m_bgcpu, M6809_FIRQ_LINE); + m_pia40->irqb_handler().set_inputline(m_bgcpu, INPUT_LINE_NMI); } /*----------------------- diff --git a/src/mame/drivers/s11c.cpp b/src/mame/drivers/s11c.cpp index 6d9dd87c84d..44e0e214c0f 100644 --- a/src/mame/drivers/s11c.cpp +++ b/src/mame/drivers/s11c.cpp @@ -29,20 +29,20 @@ void s11c_state::s11c_main_map(address_map &map) void s11c_state::s11c_audio_map(address_map &map) { map(0x0000, 0x07ff).mirror(0x0800).ram(); - map(0x1000, 0x1fff).w(FUNC(s11c_state::bank_w)); - map(0x2000, 0x2003).mirror(0x0ffc).rw("pias", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x1000, 0x1000).mirror(0x0fff).w(FUNC(s11c_state::bank_w)); + map(0x2000, 0x2003).mirror(0x0ffc).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0x8000, 0xbfff).bankr("bank0"); map(0xc000, 0xffff).bankr("bank1"); } void s11c_state::s11c_bg_map(address_map &map) { - map(0x0000, 0x07ff).ram(); - map(0x2000, 0x2001).mirror(0x1ffe).rw("ym2151", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); - map(0x4000, 0x4003).mirror(0x1ffc).rw("pia40", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); - map(0x6000, 0x67ff).w(FUNC(s11c_state::bg_speech_digit_w)); - map(0x6800, 0x6fff).w(FUNC(s11c_state::bg_speech_clock_w)); - map(0x7800, 0x7fff).w(FUNC(s11c_state::bgbank_w)); + map(0x0000, 0x07ff).mirror(0x1800).ram(); + map(0x2000, 0x2001).mirror(0x1ffe).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x4000, 0x4003).mirror(0x1ffc).rw(m_pia40, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x6000, 0x6000).mirror(0x07ff).w(FUNC(s11c_state::bg_cvsd_digit_clock_clear_w)); + map(0x6800, 0x6800).mirror(0x07ff).w(FUNC(s11c_state::bg_cvsd_clock_set_w)); + map(0x7800, 0x7800).mirror(0x07ff).w(FUNC(s11c_state::bgbank_w)); map(0x8000, 0xffff).bankr("bgbank"); } @@ -219,7 +219,7 @@ void s11c_state::s11c(machine_config &config) /* Add the background music card */ SPEAKER(config, "speaker").front_center(); S11C_BG(config, m_bg); - m_bg->set_romregion("bgcpu"); + m_bg->set_romregion(m_bgcpu); m_bg->add_route(ALL_OUTPUTS, "speaker", 1.0); } diff --git a/src/mame/includes/s11.h b/src/mame/includes/s11.h index fe378dfd1e5..e34199656cd 100644 --- a/src/mame/includes/s11.h +++ b/src/mame/includes/s11.h @@ -53,7 +53,7 @@ public: , m_pia30(*this, "pia30") , m_pia34(*this, "pia34") , m_pia40(*this, "pia40") - , m_ym(*this, "ym2151") + , m_ym2151(*this, "ym2151") , m_bg(*this, "bgm") , m_digits(*this, "digit%u", 0U) , m_swarray(*this, "SW.%u", 0U) @@ -122,7 +122,7 @@ protected: required_device m_pia30; required_device m_pia34; optional_device m_pia40; - optional_device m_ym; + optional_device m_ym2151; optional_device m_bg; output_finder<63> m_digits; required_ioport_array<8> m_swarray; diff --git a/src/mame/includes/s11b.h b/src/mame/includes/s11b.h index 81973963902..9630c62531a 100644 --- a/src/mame/includes/s11b.h +++ b/src/mame/includes/s11b.h @@ -29,8 +29,8 @@ public: void pia2c_pb_w(uint8_t data); void pia34_pa_w(uint8_t data); - void bg_speech_clock_w(uint8_t data); - void bg_speech_digit_w(uint8_t data); + void bg_cvsd_clock_set_w(uint8_t data); + void bg_cvsd_digit_clock_clear_w(uint8_t data); protected: void set_invert(bool inv) { m_invert = inv; } -- cgit v1.2.3