summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Robbbert <Robbbert@users.noreply.github.com>2018-04-05 02:32:57 +1000
committer Robbbert <Robbbert@users.noreply.github.com>2018-04-05 02:32:57 +1000
commit3a7e5ed9f8fac7ae0b9d35b93a486560b172cce0 (patch)
tree709f0b98dd1f3dea9daa122ceb15ff6fc79371e5
parentfe7fa9c237688cd0f8080f562ec622f108b61b08 (diff)
(nw) output finder for speedbal,chesstrv,fireball
-rw-r--r--src/mame/drivers/chesstrv.cpp32
-rw-r--r--src/mame/drivers/fireball.cpp51
-rw-r--r--src/mame/drivers/speedbal.cpp7
-rw-r--r--src/mame/includes/speedbal.h16
4 files changed, 55 insertions, 51 deletions
diff --git a/src/mame/drivers/chesstrv.cpp b/src/mame/drivers/chesstrv.cpp
index dd18b2a6617..f3a6e85adc2 100644
--- a/src/mame/drivers/chesstrv.cpp
+++ b/src/mame/drivers/chesstrv.cpp
@@ -20,10 +20,10 @@ class chesstrv_state : public driver_device
{
public:
chesstrv_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag) ,
- m_maincpu(*this, "maincpu") { }
-
- virtual void machine_start() override;
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_digits(*this, "digit%u", 0U)
+ { }
DECLARE_READ8_MEMBER( ram_addr_r );
DECLARE_WRITE8_MEMBER( ram_addr_w );
@@ -34,17 +34,20 @@ public:
DECLARE_READ8_MEMBER( keypad_r );
DECLARE_WRITE8_MEMBER( diplomat_display_w );
DECLARE_READ8_MEMBER( diplomat_keypad_r );
-
- uint8_t m_ram_addr;
- uint8_t *m_ram;
- uint8_t m_matrix;
//TIMER_DEVICE_CALLBACK_MEMBER(borisdpl_timer_interrupt);
- required_device<cpu_device> m_maincpu;
void chesstrv(machine_config &config);
void borisdpl(machine_config &config);
void borisdpl_io(address_map &map);
void chesstrv_io(address_map &map);
void chesstrv_mem(address_map &map);
+
+private:
+ uint8_t m_ram_addr;
+ uint8_t *m_ram;
+ uint8_t m_matrix;
+ virtual void machine_start() override;
+ required_device<cpu_device> m_maincpu;
+ output_finder<8> m_digits;
};
WRITE8_MEMBER( chesstrv_state::ram_addr_w )
@@ -72,13 +75,13 @@ WRITE8_MEMBER( chesstrv_state::display_w )
uint8_t seg_data = bitswap<8>(data,0,1,2,3,4,5,6,7);
if(!(m_matrix & 0x01))
- output().set_digit_value( 3, seg_data );
+ m_digits[ 3 ] = seg_data;
if(!(m_matrix & 0x02))
- output().set_digit_value( 2, seg_data );
+ m_digits[ 2 ] = seg_data;
if(!(m_matrix & 0x04))
- output().set_digit_value( 1, seg_data );
+ m_digits[ 1 ] = seg_data;
if(!(m_matrix & 0x08))
- output().set_digit_value( 0, seg_data );
+ m_digits[ 0 ] = seg_data;
}
WRITE8_MEMBER( chesstrv_state::matrix_w )
@@ -104,7 +107,7 @@ READ8_MEMBER( chesstrv_state::keypad_r )
WRITE8_MEMBER( chesstrv_state::diplomat_display_w )
{
- output().set_digit_value( m_matrix & 7, data ^ 0xff );
+ m_digits[m_matrix & 7] = data ^ 0xff;
}
READ8_MEMBER( chesstrv_state::diplomat_keypad_r )
@@ -216,6 +219,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(chesstrv_state::borisdpl_timer_interrupt)
void chesstrv_state::machine_start()
{
+ m_digits.resolve();
m_ram = memregion("ram")->base();
save_item(NAME(m_ram_addr));
diff --git a/src/mame/drivers/fireball.cpp b/src/mame/drivers/fireball.cpp
index f551f34a0fc..65bf6b8a6f2 100644
--- a/src/mame/drivers/fireball.cpp
+++ b/src/mame/drivers/fireball.cpp
@@ -2,7 +2,7 @@
// copyright-holders:ANY
/***********************************************************************************
- fireball.c
+ fireball.cpp
Mechanical game where you have a gun shooting rubber balls.
@@ -48,20 +48,13 @@ class fireball_state : public driver_device
{
public:
fireball_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_ay(*this, "aysnd"),
- m_eeprom(*this, "eeprom")
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_ay(*this, "aysnd")
+ , m_eeprom(*this, "eeprom")
+ , m_digits(*this, "digit%u", 0U)
{ }
- uint8_t m_p1_data;
- uint8_t m_p3_data;
- uint8_t int_timing;
- uint8_t int_data;
- uint8_t ay_data;
- uint8_t to_ay_data;
- uint8_t m_display_data;
-
DECLARE_WRITE8_MEMBER(io_00_w);
DECLARE_READ8_MEMBER(io_00_r);
DECLARE_WRITE8_MEMBER(io_02_w);
@@ -79,17 +72,21 @@ public:
void fireball(machine_config &config);
void fireball_io_map(address_map &map);
void fireball_map(address_map &map);
-protected:
- // devices
+private:
+ uint8_t m_p1_data;
+ uint8_t m_p3_data;
+ uint8_t int_timing;
+ uint8_t int_data;
+ uint8_t ay_data;
+ uint8_t to_ay_data;
+ uint8_t m_display_data;
+ virtual void machine_reset() override;
+ virtual void machine_start() override { m_digits.resolve(); }
required_device<cpu_device> m_maincpu;
required_device<ay8912_device> m_ay;
required_device<eeprom_serial_x24c44_device> m_eeprom;
-
- // driver_device overrides
- virtual void machine_reset() override;
-
-private:
+ output_finder<8> m_digits;
};
/****************************
@@ -116,13 +113,13 @@ WRITE8_MEMBER(fireball_state::io_00_w)
switch (data&0x0f)
{
- case 1: output().set_digit_value(2, m_display_data);
+ case 1: m_digits[2] = m_display_data;
break;
- case 2: output().set_digit_value(1, m_display_data);
+ case 2: m_digits[1] = m_display_data;
break;
- case 4: output().set_digit_value(4, m_display_data);
+ case 4: m_digits[4] = m_display_data;
break;
- case 8: output().set_digit_value(3, m_display_data);
+ case 8: m_digits[3] = m_display_data;
break;
}
@@ -201,7 +198,7 @@ WRITE8_MEMBER(fireball_state::io_06_w)
if (LOG_DISPLAY2)
logerror("On board display write %02X\n",uint8_t(~(data&0xff)));
- output().set_digit_value(7, uint8_t(~(data&0xff)));
+ m_digits[7] = uint8_t(~(data&0xff));
}
@@ -448,8 +445,8 @@ INPUT_PORTS_END
void fireball_state::machine_reset()
{
int_timing=1;
- output().set_digit_value(5, 0x3f);
- output().set_digit_value(6, 0x3f);
+ m_digits[5] = 0x3f;
+ m_digits[6] = 0x3f;
output().set_value("Hopper1", 0);
output().set_value("Hopper2", 0);
diff --git a/src/mame/drivers/speedbal.cpp b/src/mame/drivers/speedbal.cpp
index e4ff4986169..93b81255aad 100644
--- a/src/mame/drivers/speedbal.cpp
+++ b/src/mame/drivers/speedbal.cpp
@@ -42,6 +42,7 @@ Interrupt frequency on audio CPU is not a periodical signal, but there are a lot
void speedbal_state::machine_start()
{
+ m_digits.resolve();
save_item(NAME(m_leds_start));
save_item(NAME(m_leds_shiftreg));
}
@@ -101,9 +102,9 @@ WRITE8_MEMBER(speedbal_state::leds_output_block)
// The shift register is 28 bits, led block number is in the upper bits
// and the other 3 bytes in it go to each 7seg led of the current block.
int block = m_leds_shiftreg >> 24 & 7;
- output().set_digit_value(10 * block + 0, ~m_leds_shiftreg >> 0 & 0xff);
- output().set_digit_value(10 * block + 1, ~m_leds_shiftreg >> 8 & 0xff);
- output().set_digit_value(10 * block + 2, ~m_leds_shiftreg >> 16 & 0xff);
+ m_digits[10 * block] = ~m_leds_shiftreg & 0xff;
+ m_digits[10 * block + 1] = ~m_leds_shiftreg >> 8 & 0xff;
+ m_digits[10 * block + 2] = ~m_leds_shiftreg >> 16 & 0xff;
}
WRITE8_MEMBER(speedbal_state::leds_start_block)
diff --git a/src/mame/includes/speedbal.h b/src/mame/includes/speedbal.h
index a330a640189..40d47c88d44 100644
--- a/src/mame/includes/speedbal.h
+++ b/src/mame/includes/speedbal.h
@@ -4,13 +4,14 @@ class speedbal_state : public driver_device
{
public:
speedbal_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_gfxdecode(*this, "gfxdecode"),
- m_palette(*this, "palette"),
- m_spriteram(*this, "spriteram"),
- m_background_videoram(*this, "bg_videoram"),
- m_foreground_videoram(*this, "fg_videoram")
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_gfxdecode(*this, "gfxdecode")
+ , m_palette(*this, "palette")
+ , m_spriteram(*this, "spriteram")
+ , m_background_videoram(*this, "bg_videoram")
+ , m_foreground_videoram(*this, "fg_videoram")
+ , m_digits(*this, "digit%u", 0U)
{ }
required_device<cpu_device> m_maincpu;
@@ -20,6 +21,7 @@ public:
required_shared_ptr<uint8_t> m_spriteram;
required_shared_ptr<uint8_t> m_background_videoram;
required_shared_ptr<uint8_t> m_foreground_videoram;
+ output_finder<73> m_digits;
bool m_leds_start;
uint32_t m_leds_shiftreg;