mirror of
https://github.com/holub/mame
synced 2025-04-24 01:11:11 +03:00
(nw) output finder for s6,s8,s8a,s9,spectra,taito
This commit is contained in:
parent
d16497ea88
commit
c460fa875c
@ -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<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
required_device<hc55516_device> m_hc55516;
|
||||
@ -116,6 +118,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 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;
|
||||
}
|
||||
|
@ -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<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
required_device<pia6821_device> m_pias;
|
||||
@ -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<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;
|
||||
}
|
||||
|
@ -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<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
required_device<pia6821_device> m_pias;
|
||||
@ -85,6 +87,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 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;
|
||||
}
|
||||
|
@ -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<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
required_device<hc55516_device> m_hc55516;
|
||||
@ -97,6 +99,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 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;
|
||||
}
|
||||
|
@ -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<cpu_device> m_maincpu;
|
||||
required_device<sn76477_device> m_snsnd;
|
||||
required_ioport_array<4> m_switch;
|
||||
required_shared_ptr<uint8_t> 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)
|
||||
|
@ -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<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_cpu2;
|
||||
required_device<pia6821_device> m_pia;
|
||||
optional_device<votrax_sc01_device> m_votrax;
|
||||
required_shared_ptr<uint8_t> 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)
|
||||
|
Loading…
Reference in New Issue
Block a user