summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Robbbert <Robbbert@users.noreply.github.com>2018-04-04 17:25:49 +1000
committer Robbbert <Robbbert@users.noreply.github.com>2018-04-04 17:25:49 +1000
commitf7ff916fce4e4f15b2fec7b19a1017097a741a4d (patch)
treefd78b16d31460edf49ee4f951f7904375876a93c
parentc460fa875cf673b432632a2c2e97ab528587bc2d (diff)
(nw) output finder for s3,s4,s6a,s7,s11,s11a
-rw-r--r--src/mame/drivers/s11.cpp10
-rw-r--r--src/mame/drivers/s11a.cpp6
-rw-r--r--src/mame/drivers/s3.cpp7
-rw-r--r--src/mame/drivers/s4.cpp9
-rw-r--r--src/mame/drivers/s6a.cpp7
-rw-r--r--src/mame/drivers/s7.cpp9
-rw-r--r--src/mame/includes/s11.h37
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<cpu_device> m_maincpu;
optional_device<cpu_device> m_audiocpu;
required_device<pia6821_device> m_pia22;
@@ -107,6 +109,7 @@ private:
required_device<pia6821_device> m_pia28;
required_device<pia6821_device> m_pia30;
optional_device<pia6821_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<cpu_device> m_maincpu;
optional_device<cpu_device> m_audiocpu;
required_device<pia6821_device> m_pia22;
@@ -101,6 +103,7 @@ private:
required_device<pia6821_device> m_pia28;
required_device<pia6821_device> m_pia30;
optional_device<pia6821_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<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<hc55516_device> m_hc55516;
@@ -109,6 +111,7 @@ private:
required_device<pia6821_device> m_pia24;
required_device<pia6821_device> m_pia28;
required_device<pia6821_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<pia6821_device> m_pia24;
required_device<pia6821_device> m_pia28;
required_device<pia6821_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_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<pia6821_device> m_pia40;
optional_device<ym2151_device> m_ym;
optional_device<s11c_bg_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