summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Robbbert <Robbbert@users.noreply.github.com>2018-04-04 00:43:20 +1000
committer Robbbert <Robbbert@users.noreply.github.com>2018-04-04 00:43:20 +1000
commitd4743f6b3e9f21f4c81f2c4e6e42493a310bf3ea (patch)
tree37b4edcd5844a34da4143f8a03fdad06a5d435cd
parent45809a32113631e10097b4dd78b63a2fa4edf113 (diff)
(nw) output finders for techno,thayers, tm990189,turbo
-rw-r--r--src/mame/drivers/techno.cpp21
-rw-r--r--src/mame/drivers/thayers.cpp7
-rw-r--r--src/mame/drivers/tm990189.cpp7
-rw-r--r--src/mame/drivers/turbo.cpp4
-rw-r--r--src/mame/includes/turbo.h41
5 files changed, 47 insertions, 33 deletions
diff --git a/src/mame/drivers/techno.cpp b/src/mame/drivers/techno.cpp
index c5b37c03a71..e00440241d9 100644
--- a/src/mame/drivers/techno.cpp
+++ b/src/mame/drivers/techno.cpp
@@ -27,6 +27,7 @@ public:
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_switch(*this, "SWITCH.%u", 0)
+ , m_digits(*this, "digit%u", 0U)
{ }
enum
@@ -61,6 +62,7 @@ private:
required_device<cpu_device> m_maincpu;
required_ioport_array<8> m_switch;
+ output_finder<48> m_digits;
emu_timer *m_irq_set_timer;
emu_timer *m_irq_advance_timer;
@@ -88,22 +90,22 @@ void techno_state::techno_map(address_map &map)
map(0x17800, 0x17fff).w(this, FUNC(techno_state::setout_w));
}
-ADDRESS_MAP_START(techno_state::techno_sub_map)
-// no ram here, must be internal to the cpu
- AM_RANGE(0x0000, 0x3fff) AM_READ(rd_r) // to TKY2016A audio processor which has its own 3.58MHz clock
- AM_RANGE(0x4000, 0x7fff) AM_WRITE(wr_w) // A11=LED;A12=WR2 (DAC) ;A13=WR1 (TKY2016A as above)
- AM_RANGE(0x4000, 0xbfff) AM_ROM // 4000-7FFF is same as 8000-BFFF; 4x 16k ROMS bankswitched
- AM_RANGE(0xc000, 0xffff) AM_ROM // another 16k ROM
-ADDRESS_MAP_END
+void techno_state::techno_sub_map(address_map &map)
+{ // no ram here, must be internal to the cpu
+ map(0x0000, 0x3fff).r(this, FUNC(techno_state::rd_r)); // to TKY2016A audio processor which has its own 3.58MHz clock
+ map(0x4000, 0x7fff).w(this, FUNC(techno_state::wr_w)); // A11=LED;A12=WR2 (DAC) ;A13=WR1 (TKY2016A as above)
+ map(0x4000, 0xbfff).rom(); // 4000-7FFF is same as 8000-BFFF; 4x 16k ROMS bankswitched
+ map(0xc000, 0xffff).rom(); // another 16k ROM
+}
WRITE16_MEMBER( techno_state::disp1_w )
{
- output().set_digit_value(m_digit, bitswap<16>(data, 12, 10, 8, 14, 13, 9, 11, 15, 7, 6, 5, 4, 3, 2, 1, 0));
+ m_digits[m_digit] = bitswap<16>(data, 12, 10, 8, 14, 13, 9, 11, 15, 7, 6, 5, 4, 3, 2, 1, 0);
}
WRITE16_MEMBER( techno_state::disp2_w )
{
- output().set_digit_value(m_digit+30, bitswap<16>(data, 12, 10, 8, 14, 13, 9, 11, 15, 7, 6, 5, 4, 3, 2, 1, 0));
+ m_digits[m_digit+30] = bitswap<16>(data, 12, 10, 8, 14, 13, 9, 11, 15, 7, 6, 5, 4, 3, 2, 1, 0);
}
WRITE16_MEMBER( techno_state::sound_w )
@@ -276,6 +278,7 @@ void techno_state::machine_start()
void techno_state::machine_reset()
{
+ m_digits.resolve();
m_vector = 0x88;
m_digit = 0;
diff --git a/src/mame/drivers/thayers.cpp b/src/mame/drivers/thayers.cpp
index ddaa4a85a26..21aec9a1c0d 100644
--- a/src/mame/drivers/thayers.cpp
+++ b/src/mame/drivers/thayers.cpp
@@ -52,6 +52,7 @@ public:
, m_ldv1000(*this, "ldv1000")
, m_maincpu(*this, "maincpu")
, m_row(*this, "ROW.%u", 0)
+ , m_digits(*this, "digit%u", 0U)
{
}
@@ -103,6 +104,7 @@ public:
void check_interrupt();
required_device<cpu_device> m_maincpu;
required_ioport_array<10> m_row;
+ output_finder<16> m_digits;
void thayers(machine_config &config);
void thayers_io_map(address_map &map);
@@ -464,7 +466,7 @@ WRITE8_MEMBER(thayers_state::den1_w)
*/
- output().set_digit_value(data >> 4, led_map[data & 0x0f]);
+ m_digits[data >> 4] = led_map[data & 0x0f];
}
WRITE8_MEMBER(thayers_state::den2_w)
@@ -484,7 +486,7 @@ WRITE8_MEMBER(thayers_state::den2_w)
*/
- output().set_digit_value(8 + (data >> 4), led_map[data & 0x0f]);
+ m_digits[8 + (data >> 4)] = led_map[data & 0x0f];
}
/* SSI-263 */
@@ -764,6 +766,7 @@ INPUT_PORTS_END
void thayers_state::machine_start()
{
+ m_digits.resolve();
memset(&m_ssi263, 0, sizeof(m_ssi263));
}
diff --git a/src/mame/drivers/tm990189.cpp b/src/mame/drivers/tm990189.cpp
index b1693254fae..56362ca0b77 100644
--- a/src/mame/drivers/tm990189.cpp
+++ b/src/mame/drivers/tm990189.cpp
@@ -90,6 +90,7 @@ public:
, m_tms9918(*this, "tms9918")
, m_tms9901_usr(*this, TMS9901_0_TAG)
, m_tms9901_sys(*this, TMS9901_1_TAG)
+ , m_digits(*this, "digit%u", 0U)
{ }
required_device<tms9980a_device> m_tms9980a;
@@ -170,6 +171,7 @@ private:
void digitsel(int offset, bool state);
required_device<tms9901_device> m_tms9901_usr;
required_device<tms9901_device> m_tms9901_sys;
+ output_finder<10> m_digits;
};
@@ -184,11 +186,13 @@ MACHINE_RESET_MEMBER(tm990189_state,tm990_189)
MACHINE_START_MEMBER(tm990189_state,tm990_189)
{
+ m_digits.resolve();
m_displayena_timer = machine().scheduler().timer_alloc(timer_expired_delegate());
}
MACHINE_START_MEMBER(tm990189_state,tm990_189_v)
{
+ m_digits.resolve();
m_displayena_timer = machine().scheduler().timer_alloc(timer_expired_delegate());
m_joy1x_timer = machine().scheduler().timer_alloc(timer_expired_delegate());
@@ -253,8 +257,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(tm990189_state::display_callback)
for (i = 0; i < 10; i++)
{
m_old_segment_state[i] |= m_segment_state[i];
- sprintf(ledname,"digit%d",i);
- output().set_digit_value(i, m_old_segment_state[i]);
+ m_digits[i] = m_old_segment_state[i];
m_old_segment_state[i] = m_segment_state[i];
m_segment_state[i] = 0;
}
diff --git a/src/mame/drivers/turbo.cpp b/src/mame/drivers/turbo.cpp
index 80a426967a6..3b04fd5726b 100644
--- a/src/mame/drivers/turbo.cpp
+++ b/src/mame/drivers/turbo.cpp
@@ -366,8 +366,8 @@ WRITE8_MEMBER( turbo_state::digit_w )
static const uint8_t ls48_map[16] =
{ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67,0x58,0x4c,0x62,0x69,0x78,0x00 };
- output().set_digit_value(m_i8279_scanlines * 2 + 0, ls48_map[data & 0x0f]);
- output().set_digit_value(m_i8279_scanlines * 2 + 1, ls48_map[(data>>4) & 0x0f]);
+ m_digits[m_i8279_scanlines * 2] = ls48_map[data & 0x0f];
+ m_digits[m_i8279_scanlines * 2 + 1] = ls48_map[data>>4];
}
/*************************************
diff --git a/src/mame/includes/turbo.h b/src/mame/includes/turbo.h
index 7a61f7f6563..b0bbc077162 100644
--- a/src/mame/includes/turbo.h
+++ b/src/mame/includes/turbo.h
@@ -22,26 +22,28 @@ class turbo_state : public driver_device
{
public:
turbo_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_subcpu(*this, "subcpu"),
- m_i8255_0(*this, "i8255_0"),
- m_i8255_1(*this, "i8255_1"),
- m_i8255_2(*this, "i8255_2"),
- m_i8255_3(*this, "i8255_3"),
- m_spriteroms(*this, "sprites"),
- m_proms(*this, "proms"),
- m_roadroms(*this, "road"),
- m_bgcolorrom(*this, "bgcolor"),
- m_videoram(*this, "videoram"),
- m_spriteram(*this, "spriteram"),
- m_sprite_position(*this, "spritepos"),
- m_decrypted_opcodes(*this, "decrypted_opcodes"),
- m_samples(*this, "samples"),
- m_gfxdecode(*this, "gfxdecode"),
- m_screen(*this, "screen")
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_subcpu(*this, "subcpu")
+ , m_i8255_0(*this, "i8255_0")
+ , m_i8255_1(*this, "i8255_1")
+ , m_i8255_2(*this, "i8255_2")
+ , m_i8255_3(*this, "i8255_3")
+ , m_spriteroms(*this, "sprites")
+ , m_proms(*this, "proms")
+ , m_roadroms(*this, "road")
+ , m_bgcolorrom(*this, "bgcolor")
+ , m_videoram(*this, "videoram")
+ , m_spriteram(*this, "spriteram")
+ , m_sprite_position(*this, "spritepos")
+ , m_decrypted_opcodes(*this, "decrypted_opcodes")
+ , m_samples(*this, "samples")
+ , m_gfxdecode(*this, "gfxdecode")
+ , m_screen(*this, "screen")
+ , m_digits(*this, "digit%u", 0U)
{ }
+private:
/* device/memory pointers */
required_device<z80_device> m_maincpu;
optional_device<z80_device> m_subcpu;
@@ -64,8 +66,10 @@ public:
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
+ output_finder<32> m_digits;
std::unique_ptr<uint8_t[]> m_buckrog_bitmap_ram;
+ virtual void machine_start() override { m_digits.resolve(); }
/* machine states */
uint8_t m_i8279_scanlines;
@@ -125,6 +129,7 @@ public:
uint32_t step[8]; /* stepping value */
};
+public:
DECLARE_WRITE8_MEMBER(scanlines_w);
DECLARE_WRITE8_MEMBER(digit_w);
DECLARE_READ8_MEMBER(turbo_collision_r);