From c460fa875cf673b432632a2c2e97ab528587bc2d Mon Sep 17 00:00:00 2001 From: Robbbert Date: Wed, 4 Apr 2018 13:42:15 +1000 Subject: (nw) output finder for s6,s8,s8a,s9,spectra,taito --- src/mame/drivers/s6.cpp | 7 +++++-- src/mame/drivers/s8.cpp | 9 ++++++--- src/mame/drivers/s8a.cpp | 9 ++++++--- src/mame/drivers/s9.cpp | 9 ++++++--- src/mame/drivers/spectra.cpp | 5 ++++- src/mame/drivers/taito.cpp | 7 +++++-- 6 files changed, 32 insertions(+), 14 deletions(-) diff --git a/src/mame/drivers/s6.cpp b/src/mame/drivers/s6.cpp index 78033f97bdf..3c7f98571bd 100644 --- a/src/mame/drivers/s6.cpp +++ b/src/mame/drivers/s6.cpp @@ -72,6 +72,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); @@ -108,6 +109,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; @@ -116,6 +118,7 @@ private: required_device m_pia24; required_device m_pia28; required_device m_pia30; + output_finder<61> m_digits; }; void s6_state::s6_main_map(address_map &map) @@ -330,8 +333,8 @@ WRITE8_MEMBER( s6_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+20, patterns[data&15]); - output().set_digit_value(m_strobe, patterns[data>>4]); + m_digits[m_strobe+20] = patterns[data&15]; + m_digits[m_strobe] = patterns[data>>4]; } m_data_ok = false; } diff --git a/src/mame/drivers/s8.cpp b/src/mame/drivers/s8.cpp index 99b89e267f0..a58b0068b64 100644 --- a/src/mame/drivers/s8.cpp +++ b/src/mame/drivers/s8.cpp @@ -68,6 +68,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); @@ -102,6 +103,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_pias; @@ -109,6 +111,7 @@ private: required_device m_pia24; required_device m_pia28; required_device m_pia30; + output_finder<61> m_digits; }; void s8_state::s8_main_map(address_map &map) @@ -230,7 +233,7 @@ WRITE8_MEMBER( s8_state::dig0_w ) data &= 0x7f; m_strobe = data & 15; m_data_ok = true; - output().set_digit_value(60, patterns[data>>4]); // diag digit + m_digits[60] = patterns[data>>4]; // diag digit } WRITE8_MEMBER( s8_state::dig1_w ) @@ -238,8 +241,8 @@ WRITE8_MEMBER( s8_state::dig1_w ) static const uint8_t patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543 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/s8a.cpp b/src/mame/drivers/s8a.cpp index 6fbad88c913..4178d7622d0 100644 --- a/src/mame/drivers/s8a.cpp +++ b/src/mame/drivers/s8a.cpp @@ -44,6 +44,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); @@ -78,6 +79,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_pias; @@ -85,6 +87,7 @@ private: required_device m_pia24; required_device m_pia28; required_device m_pia30; + output_finder<61> m_digits; }; void s8a_state::s8a_main_map(address_map &map) @@ -202,7 +205,7 @@ WRITE8_MEMBER( s8a_state::dig0_w ) data &= 0x7f; m_strobe = data & 15; m_data_ok = true; - output().set_digit_value(60, patterns[data>>4]); // diag digit + m_digits[60] = patterns[data>>4]; // diag digit } WRITE8_MEMBER( s8a_state::dig1_w ) @@ -210,8 +213,8 @@ WRITE8_MEMBER( s8a_state::dig1_w ) static const uint8_t patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543 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/s9.cpp b/src/mame/drivers/s9.cpp index ad737254251..5816970a114 100644 --- a/src/mame/drivers/s9.cpp +++ b/src/mame/drivers/s9.cpp @@ -55,6 +55,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); @@ -89,6 +90,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; @@ -97,6 +99,7 @@ private: required_device m_pia24; required_device m_pia28; required_device m_pia30; + output_finder<61> m_digits; }; void s9_state::s9_main_map(address_map &map) @@ -236,7 +239,7 @@ WRITE8_MEMBER( s9_state::dig0_w ) data &= 0x7f; m_strobe = data & 15; m_data_ok = true; - output().set_digit_value(60, patterns[data>>4]); // diag digit + m_digits[60] = patterns[data>>4]; // diag digit } WRITE8_MEMBER( s9_state::dig1_w ) @@ -244,8 +247,8 @@ WRITE8_MEMBER( s9_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/spectra.cpp b/src/mame/drivers/spectra.cpp index 7564577c9da..9ad24081daf 100644 --- a/src/mame/drivers/spectra.cpp +++ b/src/mame/drivers/spectra.cpp @@ -54,6 +54,7 @@ public: , m_snsnd(*this, "snsnd") , m_switch(*this, "SWITCH.%u", 0) , m_p_ram(*this, "nvram") + , m_digits(*this, "digit%u", 0U) { } DECLARE_READ8_MEMBER(porta_r); @@ -70,10 +71,12 @@ private: uint8_t m_t_c; uint8_t m_out_offs; virtual void machine_reset() override; + virtual void machine_start() override { m_digits.resolve(); } required_device m_maincpu; required_device m_snsnd; required_ioport_array<4> m_switch; required_shared_ptr m_p_ram; + output_finder<40> m_digits; }; @@ -196,7 +199,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( spectra_state::outtimer) { uint8_t data = m_p_ram[m_out_offs]; uint8_t segments = patterns[data&15] | (BIT(data, 4) ? 0x80 : 0); - output().set_digit_value(m_out_offs, segments); + m_digits[m_out_offs] = segments; } else if (m_out_offs < 0x6f) diff --git a/src/mame/drivers/taito.cpp b/src/mame/drivers/taito.cpp index f923b6996e2..e4edd3cba1c 100644 --- a/src/mame/drivers/taito.cpp +++ b/src/mame/drivers/taito.cpp @@ -67,6 +67,7 @@ public: , m_pia(*this, "pia") , m_votrax(*this, "votrax") , m_p_ram(*this, "ram") + , m_digits(*this, "digit%u", 0U) { } DECLARE_DRIVER_INIT(taito); @@ -96,11 +97,13 @@ private: uint8_t m_votrax_cmd; uint8_t m_io[16]; virtual void machine_reset() override; + virtual void machine_start() override { m_digits.resolve(); } required_device m_maincpu; required_device m_cpu2; required_device m_pia; optional_device m_votrax; required_shared_ptr m_p_ram; + output_finder<32> m_digits; }; @@ -340,8 +343,8 @@ TIMER_DEVICE_CALLBACK_MEMBER( taito_state::timer_a ) m_out_offs &= 15; uint8_t digit = m_out_offs << 1; - output().set_digit_value(digit, patterns[m_p_ram[m_out_offs]>>4]); - output().set_digit_value(++digit, patterns[m_p_ram[m_out_offs++]&15]); + m_digits[digit] = patterns[m_p_ram[m_out_offs]>>4]; + m_digits[++digit] = patterns[m_p_ram[m_out_offs++]&15]; } MACHINE_CONFIG_START(taito_state::taito) -- cgit v1.2.3