From f7ff916fce4e4f15b2fec7b19a1017097a741a4d Mon Sep 17 00:00:00 2001 From: Robbbert Date: Wed, 4 Apr 2018 17:25:49 +1000 Subject: (nw) output finder for s3,s4,s6a,s7,s11,s11a --- src/mame/drivers/s11.cpp | 10 +++++----- src/mame/drivers/s11a.cpp | 6 +++--- src/mame/drivers/s3.cpp | 7 +++++-- src/mame/drivers/s4.cpp | 9 ++++++--- src/mame/drivers/s6a.cpp | 7 +++++-- src/mame/drivers/s7.cpp | 9 ++++++--- src/mame/includes/s11.h | 37 ++++++++++++++++++++----------------- 7 files changed, 50 insertions(+), 35 deletions(-) diff --git a/src/mame/drivers/s11.cpp b/src/mame/drivers/s11.cpp index c503b2e20a2..b96b29cb99f 100644 --- a/src/mame/drivers/s11.cpp +++ b/src/mame/drivers/s11.cpp @@ -234,7 +234,7 @@ WRITE8_MEMBER( s11_state::dig0_w ) data &= 0x7f; m_strobe = data & 15; m_diag = (data & 0x70) >> 4; - output().set_digit_value(60, patterns[data>>4]); // diag digit + m_digits[60] = patterns[data>>4]; // diag digit m_segment1 = 0; m_segment2 = 0; } @@ -245,7 +245,7 @@ WRITE8_MEMBER( s11_state::dig1_w ) m_segment2 |= 0x20000; if ((m_segment2 & 0x70000) == 0x30000) { - output().set_digit_value(m_strobe+16, bitswap<16>(m_segment2, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0)); + m_digits[m_strobe+16] = bitswap<16>(m_segment2, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0); m_segment2 |= 0x40000; } } @@ -269,7 +269,7 @@ WRITE8_MEMBER( s11_state::pia2c_pa_w ) m_segment1 |= 0x10000; if ((m_segment1 & 0x70000) == 0x30000) { - output().set_digit_value(m_strobe, bitswap<16>(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0)); + m_digits[m_strobe] = bitswap<16>(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0); m_segment1 |= 0x40000; } } @@ -280,7 +280,7 @@ WRITE8_MEMBER( s11_state::pia2c_pb_w ) m_segment1 |= 0x20000; if ((m_segment1 & 0x70000) == 0x30000) { - output().set_digit_value(m_strobe, bitswap<16>(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0)); + m_digits[m_strobe] = bitswap<16>(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0); m_segment1 |= 0x40000; } } @@ -303,7 +303,7 @@ WRITE8_MEMBER( s11_state::pia34_pa_w ) m_segment2 |= 0x10000; if ((m_segment2 & 0x70000) == 0x30000) { - output().set_digit_value(m_strobe+16, bitswap<16>(m_segment2, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0)); + m_digits[m_strobe+16] = bitswap<16>(m_segment2, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0); m_segment2 |= 0x40000; } } diff --git a/src/mame/drivers/s11a.cpp b/src/mame/drivers/s11a.cpp index a2c30090dc9..de9adf93087 100644 --- a/src/mame/drivers/s11a.cpp +++ b/src/mame/drivers/s11a.cpp @@ -154,9 +154,9 @@ WRITE8_MEMBER( s11a_state::dig0_w ) data &= 0x7f; set_strobe(data & 15); set_diag((data & 0x70) >> 4); - output().set_digit_value(60, 0); // +5VDC (always on) - output().set_digit_value(61, get_diag() & 0x01); // connected to PA4 - output().set_digit_value(62, 0); // Blanking (pretty much always on) + m_digits[60] = 0; // +5VDC (always on) + m_digits[61] = get_diag() & 0x01; // connected to PA4 + m_digits[62] = 0; // Blanking (pretty much always on) set_segment1(0); set_segment2(0); } diff --git a/src/mame/drivers/s3.cpp b/src/mame/drivers/s3.cpp index 1f04000f9d0..13e013841ee 100644 --- a/src/mame/drivers/s3.cpp +++ b/src/mame/drivers/s3.cpp @@ -62,6 +62,7 @@ public: , m_pia28(*this, "pia28") , m_pia30(*this, "pia30") , m_pias(*this, "pias") + , m_digits(*this, "digit%u", 0U) { } DECLARE_READ8_MEMBER(sound_r); @@ -100,6 +101,7 @@ private: uint8_t m_kbdrow; bool m_data_ok; bool m_chimes; + virtual void machine_start() override { m_digits.resolve(); } required_device m_maincpu; optional_device m_audiocpu; required_device m_pia22; @@ -107,6 +109,7 @@ private: required_device m_pia28; required_device m_pia30; optional_device m_pias; + output_finder<32> m_digits; }; void s3_state::s3_main_map(address_map &map) @@ -399,8 +402,8 @@ WRITE8_MEMBER( s3_state::dig1_w ) static const uint8_t patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0, 0, 0, 0, 0, 0 }; // MC14558 if (m_data_ok) { - output().set_digit_value(m_strobe+16, patterns[data&15]); - output().set_digit_value(m_strobe, patterns[data>>4]); + m_digits[m_strobe+16] = patterns[data&15]; + m_digits[m_strobe] = patterns[data>>4]; } m_data_ok = false; } diff --git a/src/mame/drivers/s4.cpp b/src/mame/drivers/s4.cpp index 235f69e5804..a9f4fdbb882 100644 --- a/src/mame/drivers/s4.cpp +++ b/src/mame/drivers/s4.cpp @@ -6,7 +6,7 @@ Williams System 4 Phoenix and Pokerino are listed as System 4 systems, but use System 3 roms. - They have been moved to s3.c, and are working there. + They have been moved to s3.cpp, and are working there. The "Shuffle" games consist of a flat board with an air-driven puck and 10 bowling pins. You must push the puck as if it was a bowling ball, and score @@ -56,6 +56,7 @@ public: , m_pia28(*this, "pia28") , m_pia30(*this, "pia30") , m_pias(*this, "pias") + , m_digits(*this, "digit%u", 0U) { } DECLARE_READ8_MEMBER(sound_r); @@ -94,6 +95,7 @@ private: uint8_t m_kbdrow; bool m_data_ok; bool m_chimes; + virtual void machine_start() override { m_digits.resolve(); } required_device m_maincpu; optional_device m_audiocpu; required_device m_pia22; @@ -101,6 +103,7 @@ private: required_device m_pia28; required_device m_pia30; optional_device m_pias; + output_finder<32> m_digits; }; void s4_state::s4_main_map(address_map &map) @@ -393,8 +396,8 @@ WRITE8_MEMBER( s4_state::dig1_w ) static const uint8_t patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0, 0, 0, 0, 0, 0 }; // MC14558 if (m_data_ok) { - output().set_digit_value(m_strobe+16, patterns[data&15]); - output().set_digit_value(m_strobe, patterns[data>>4]); + m_digits[m_strobe+16] = patterns[data&15]; + m_digits[m_strobe] = patterns[data>>4]; } m_data_ok = false; } diff --git a/src/mame/drivers/s6a.cpp b/src/mame/drivers/s6a.cpp index 8156bc09781..7fd6b295130 100644 --- a/src/mame/drivers/s6a.cpp +++ b/src/mame/drivers/s6a.cpp @@ -65,6 +65,7 @@ public: , m_pia24(*this, "pia24") , m_pia28(*this, "pia28") , m_pia30(*this, "pia30") + , m_digits(*this, "digit%u", 0U) { } DECLARE_READ8_MEMBER(sound_r); @@ -101,6 +102,7 @@ private: emu_timer* m_irq_timer; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; static const device_timer_id TIMER_IRQ = 0; + virtual void machine_start() override { m_digits.resolve(); } required_device m_maincpu; required_device m_audiocpu; required_device m_hc55516; @@ -109,6 +111,7 @@ private: required_device m_pia24; required_device m_pia28; required_device m_pia30; + output_finder<32> m_digits; }; void s6a_state::s6a_main_map(address_map &map) @@ -313,8 +316,8 @@ WRITE8_MEMBER( s6a_state::dig1_w ) static const uint8_t patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0, 0, 0, 0, 0, 0 }; // MC14558 if (m_data_ok) { - output().set_digit_value(m_strobe+16, patterns[data&15]); - output().set_digit_value(m_strobe, patterns[data>>4]); + m_digits[m_strobe+16] = patterns[data&15]; + m_digits[m_strobe] = patterns[data>>4]; } m_data_ok = false; } diff --git a/src/mame/drivers/s7.cpp b/src/mame/drivers/s7.cpp index a5f08031851..ad45fd8e404 100644 --- a/src/mame/drivers/s7.cpp +++ b/src/mame/drivers/s7.cpp @@ -83,6 +83,7 @@ public: , m_pia24(*this, "pia24") , m_pia28(*this, "pia28") , m_pia30(*this, "pia30") + , m_digits(*this, "digit%u", 0U) { } DECLARE_READ8_MEMBER(sound_r); @@ -139,6 +140,7 @@ private: required_device m_pia24; required_device m_pia28; required_device m_pia30; + output_finder<61> m_digits; }; void s7_state::s7_main_map(address_map &map) @@ -309,7 +311,7 @@ WRITE8_MEMBER( s7_state::dig0_w ) m_strobe = data & 15; data ^= 0xf0; // inverted by ic33 m_data_ok = true; - output().set_digit_value(60, patterns[data>>4]); // diag digit + m_digits[60] = patterns[data>>4]; // diag digit } WRITE8_MEMBER( s7_state::dig1_w ) @@ -317,8 +319,8 @@ WRITE8_MEMBER( s7_state::dig1_w ) static const uint8_t patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0, 0, 0, 0, 0, 0 }; // MC14558 if (m_data_ok) { - output().set_digit_value(m_strobe+16, patterns[data&15]); - output().set_digit_value(m_strobe, patterns[data>>4]); + m_digits[m_strobe+16] = patterns[data&15]; + m_digits[m_strobe] = patterns[data>>4]; } m_data_ok = false; } @@ -412,6 +414,7 @@ void s7_state::device_timer(emu_timer &timer, device_timer_id id, int param, voi void s7_state::machine_start() { + m_digits.resolve(); m_memprotect = 0; save_item(NAME(m_nvram)); machine().device("nvram")->set_base(m_nvram, sizeof(m_nvram)); diff --git a/src/mame/includes/s11.h b/src/mame/includes/s11.h index fa4eba6b435..e2e65a13d90 100644 --- a/src/mame/includes/s11.h +++ b/src/mame/includes/s11.h @@ -1,5 +1,5 @@ // license:BSD-3-Clause -// copyright-holders:Miodrag Milanovic +// copyright-holders:Miodrag Milanovic, Robbbert /* * s11.h * @@ -30,22 +30,23 @@ class s11_state : public genpin_class { public: s11_state(const machine_config &mconfig, device_type type, const char *tag) - : genpin_class(mconfig, type, tag), - m_maincpu(*this, "maincpu"), - m_audiocpu(*this, "audiocpu"), - m_bgcpu(*this, "bgcpu"), - m_hc55516(*this, "hc55516"), - m_pias(*this, "pias"), - m_pia21(*this, "pia21"), - m_pia24(*this, "pia24"), - m_pia28(*this, "pia28"), - m_pia2c(*this, "pia2c"), - m_pia30(*this, "pia30"), - m_pia34(*this, "pia34"), - m_pia40(*this, "pia40"), - m_ym(*this, "ym2151"), - m_bg(*this, "bgm") - { } + : genpin_class(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_audiocpu(*this, "audiocpu") + , m_bgcpu(*this, "bgcpu") + , m_hc55516(*this, "hc55516") + , m_pias(*this, "pias") + , m_pia21(*this, "pia21") + , m_pia24(*this, "pia24") + , m_pia28(*this, "pia28") + , m_pia2c(*this, "pia2c") + , m_pia30(*this, "pia30") + , m_pia34(*this, "pia34") + , m_pia40(*this, "pia40") + , m_ym(*this, "ym2151") + , m_bg(*this, "bgm") + , m_digits(*this, "digit%u", 0U) + { } DECLARE_READ8_MEMBER(sound_r); DECLARE_WRITE8_MEMBER(bank_w); @@ -100,6 +101,7 @@ protected: optional_device m_pia40; optional_device m_ym; optional_device m_bg; + output_finder<63> m_digits; // getters/setters uint8_t get_strobe() { return m_strobe; } @@ -123,6 +125,7 @@ private: uint32_t m_segment2; emu_timer* m_irq_timer; bool m_irq_active; + virtual void machine_start() override { m_digits.resolve(); } }; #endif // MAME_INCLUDES_S11_H -- cgit v1.2.3