summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/hh_sm510.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/hh_sm510.cpp')
-rw-r--r--src/mame/drivers/hh_sm510.cpp95
1 files changed, 32 insertions, 63 deletions
diff --git a/src/mame/drivers/hh_sm510.cpp b/src/mame/drivers/hh_sm510.cpp
index 2086d5f2f5e..2f4dd6f02d6 100644
--- a/src/mame/drivers/hh_sm510.cpp
+++ b/src/mame/drivers/hh_sm510.cpp
@@ -40,6 +40,7 @@ void hh_sm510_state::machine_start()
// zerofill
m_inp_mux = 0;
/* m_inp_lines = 0; */ // not here
+ /* m_inp_fixed = -1; */ // not here
m_s = 0;
m_r = 0;
m_display_x_len = 0;
@@ -51,6 +52,7 @@ void hh_sm510_state::machine_start()
// register for savestates
save_item(NAME(m_inp_mux));
save_item(NAME(m_inp_lines));
+ save_item(NAME(m_inp_fixed));
save_item(NAME(m_s));
save_item(NAME(m_r));
save_item(NAME(m_display_x_len));
@@ -133,7 +135,7 @@ WRITE8_MEMBER(hh_sm510_state::sm500_lcd_segment_w)
// generic input handlers - usually S output is input mux, and K input for buttons
-u8 hh_sm510_state::read_inputs(int columns)
+u8 hh_sm510_state::read_inputs(int columns, int fixed)
{
u8 ret = 0;
@@ -142,6 +144,9 @@ u8 hh_sm510_state::read_inputs(int columns)
if (m_inp_mux >> i & 1)
ret |= m_inp_matrix[i]->read();
+ if (fixed >= 0)
+ ret |= m_inp_matrix[fixed]->read();
+
return ret;
}
@@ -164,7 +169,7 @@ WRITE8_MEMBER(hh_sm510_state::input_w)
READ8_MEMBER(hh_sm510_state::input_r)
{
- return read_inputs(m_inp_lines);
+ return read_inputs(m_inp_lines, m_inp_fixed);
}
INPUT_CHANGED_MEMBER(hh_sm510_state::acl_button)
@@ -1610,20 +1615,12 @@ class tgaunt_state : public hh_sm510_state
public:
tgaunt_state(const machine_config &mconfig, device_type type, const char *tag)
: hh_sm510_state(mconfig, type, tag)
- { }
-
- virtual DECLARE_READ8_MEMBER(input_r) override;
+ {
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
+ }
};
-// handlers
-
-READ8_MEMBER(tgaunt_state::input_r)
-{
- // K: multiplexed inputs (note: GND row is always on)
- return m_inp_matrix[6]->read() | read_inputs(6);
-}
-
-
// config
static INPUT_PORTS_START( tgaunt )
@@ -1673,7 +1670,7 @@ static MACHINE_CONFIG_START( tgaunt )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", SM510, XTAL_32_768kHz)
MCFG_SM510_WRITE_SEGS_CB(WRITE16(hh_sm510_state, sm510_lcd_segment_w))
- MCFG_SM510_READ_K_CB(READ8(tgaunt_state, input_r))
+ MCFG_SM510_READ_K_CB(READ8(hh_sm510_state, input_r))
MCFG_SM510_WRITE_S_CB(WRITE8(hh_sm510_state, input_w))
MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, piezo_r1_w))
MCFG_SM510_READ_BA_CB(IOPORT("BA"))
@@ -1711,20 +1708,12 @@ class tddragon_state : public hh_sm510_state
public:
tddragon_state(const machine_config &mconfig, device_type type, const char *tag)
: hh_sm510_state(mconfig, type, tag)
- { }
-
- virtual DECLARE_READ8_MEMBER(input_r) override;
+ {
+ m_inp_lines = 5;
+ m_inp_fixed = 5;
+ }
};
-// handlers
-
-READ8_MEMBER(tddragon_state::input_r)
-{
- // K: multiplexed inputs (note: GND row is always on)
- return m_inp_matrix[5]->read() | read_inputs(5);
-}
-
-
// config
static INPUT_PORTS_START( tddragon )
@@ -1769,7 +1758,7 @@ static MACHINE_CONFIG_START( tddragon )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", SM510, XTAL_32_768kHz)
MCFG_SM510_WRITE_SEGS_CB(WRITE16(hh_sm510_state, sm510_lcd_segment_w))
- MCFG_SM510_READ_K_CB(READ8(tddragon_state, input_r))
+ MCFG_SM510_READ_K_CB(READ8(hh_sm510_state, input_r))
MCFG_SM510_WRITE_S_CB(WRITE8(hh_sm510_state, input_w))
MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, piezo_r1_w))
MCFG_SM510_READ_BA_CB(IOPORT("BA"))
@@ -1807,20 +1796,12 @@ class taltbeast_state : public hh_sm510_state
public:
taltbeast_state(const machine_config &mconfig, device_type type, const char *tag)
: hh_sm510_state(mconfig, type, tag)
- { }
-
- virtual DECLARE_READ8_MEMBER(input_r) override;
+ {
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
+ }
};
-// handlers
-
-READ8_MEMBER(taltbeast_state::input_r)
-{
- // K: multiplexed inputs (note: GND row is always on)
- return m_inp_matrix[6]->read() | read_inputs(6);
-}
-
-
// config
static INPUT_PORTS_START( taltbeast )
@@ -1869,7 +1850,7 @@ static MACHINE_CONFIG_START( taltbeast )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", SM510, XTAL_32_768kHz)
MCFG_SM510_WRITE_SEGS_CB(WRITE16(hh_sm510_state, sm510_lcd_segment_w))
- MCFG_SM510_READ_K_CB(READ8(taltbeast_state, input_r))
+ MCFG_SM510_READ_K_CB(READ8(hh_sm510_state, input_r))
MCFG_SM510_WRITE_S_CB(WRITE8(hh_sm510_state, input_w))
MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, piezo_r1_w))
MCFG_SM510_READ_BA_CB(IOPORT("BA"))
@@ -1907,20 +1888,12 @@ class tsjam_state : public hh_sm510_state
public:
tsjam_state(const machine_config &mconfig, device_type type, const char *tag)
: hh_sm510_state(mconfig, type, tag)
- { }
-
- virtual DECLARE_READ8_MEMBER(input_r) override;
+ {
+ m_inp_lines = 5;
+ m_inp_fixed = 5;
+ }
};
-// handlers
-
-READ8_MEMBER(tsjam_state::input_r)
-{
- // K: multiplexed inputs (note: GND row is always on)
- return m_inp_matrix[5]->read() | read_inputs(5);
-}
-
-
// config
static INPUT_PORTS_START( tsjam )
@@ -1965,7 +1938,7 @@ static MACHINE_CONFIG_START( tsjam )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", SM510, XTAL_32_768kHz) // no external XTAL
MCFG_SM510_WRITE_SEGS_CB(WRITE16(hh_sm510_state, sm510_lcd_segment_w))
- MCFG_SM510_READ_K_CB(READ8(tsjam_state, input_r))
+ MCFG_SM510_READ_K_CB(READ8(hh_sm510_state, input_r))
MCFG_SM510_WRITE_S_CB(WRITE8(hh_sm510_state, input_w))
MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, piezo_r1_w))
MCFG_SM510_READ_BA_CB(IOPORT("BA"))
@@ -2003,12 +1976,14 @@ class tsonic_state : public hh_sm510_state
public:
tsonic_state(const machine_config &mconfig, device_type type, const char *tag)
: hh_sm510_state(mconfig, type, tag)
- { }
+ {
+ m_inp_lines = 5;
+ m_inp_fixed = 5;
+ }
void update_speaker();
DECLARE_WRITE8_MEMBER(write_r);
DECLARE_WRITE8_MEMBER(write_s);
- virtual DECLARE_READ8_MEMBER(input_r) override;
};
// handlers
@@ -2035,12 +2010,6 @@ WRITE8_MEMBER(tsonic_state::write_s)
hh_sm510_state::input_w(space, 0, data >> 1);
}
-READ8_MEMBER(tsonic_state::input_r)
-{
- // K: multiplexed inputs (note: GND row is always on)
- return m_inp_matrix[5]->read() | read_inputs(5);
-}
-
// config
@@ -2087,7 +2056,7 @@ static MACHINE_CONFIG_START( tsonic )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", SM511, XTAL_32_768kHz)
MCFG_SM510_WRITE_SEGS_CB(WRITE16(hh_sm510_state, sm510_lcd_segment_w))
- MCFG_SM510_READ_K_CB(READ8(tsonic_state, input_r))
+ MCFG_SM510_READ_K_CB(READ8(hh_sm510_state, input_r))
MCFG_SM510_WRITE_S_CB(WRITE8(tsonic_state, write_s))
MCFG_SM510_WRITE_R_CB(WRITE8(tsonic_state, write_r))
MCFG_SM510_READ_BA_CB(IOPORT("BA"))