mirror of
https://github.com/holub/mame
synced 2025-10-07 09:25:34 +03:00
(nw) output finder for s3,s4,s6a,s7,s11,s11a
This commit is contained in:
parent
c460fa875c
commit
f7ff916fce
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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));
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user