(nw) output finder for s3,s4,s6a,s7,s11,s11a

This commit is contained in:
Robbbert 2018-04-04 17:25:49 +10:00
parent c460fa875c
commit f7ff916fce
7 changed files with 50 additions and 35 deletions

View File

@ -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;
}
}

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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));

View File

@ -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