summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/hh_cop400.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/hh_cop400.cpp')
-rw-r--r--src/mame/drivers/hh_cop400.cpp91
1 files changed, 51 insertions, 40 deletions
diff --git a/src/mame/drivers/hh_cop400.cpp b/src/mame/drivers/hh_cop400.cpp
index 7ad308e8e02..f63b67bb5d0 100644
--- a/src/mame/drivers/hh_cop400.cpp
+++ b/src/mame/drivers/hh_cop400.cpp
@@ -294,8 +294,6 @@ WRITE8_MEMBER(h2hbaskbc_state::write_l)
u16 sel = (m_g | m_d << 4 | m_g << 8 | m_d << 12) & mask;
// D2+G0,G1 are 7segs
- m_display->segmask(3, 0x7f);
-
// L0-L6: digit segments A-G, L0-L4: led data
m_display->matrix(sel, data);
}
@@ -370,6 +368,7 @@ void h2hbaskbc_state::h2hbaskbc(machine_config &config)
/* video hardware */
PWM_DISPLAY(config, m_display).set_size(16, 7);
+ m_display->set_segmask(3, 0x7f);
config.set_default_layout(layout_h2hbaskbc);
/* sound hardware */
@@ -421,7 +420,7 @@ public:
hh_cop400_state(mconfig, type, tag)
{ }
- void prepare_display();
+ void update_display();
DECLARE_WRITE8_MEMBER(write_d);
DECLARE_WRITE8_MEMBER(write_g);
DECLARE_WRITE_LINE_MEMBER(write_sk);
@@ -432,7 +431,7 @@ public:
// handlers
-void einvaderc_state::prepare_display()
+void einvaderc_state::update_display()
{
u8 l = bitswap<8>(m_l,7,6,0,1,2,3,4,5);
u16 grid = (m_d | m_g << 4 | m_sk << 8 | m_so << 9) ^ 0x0ff;
@@ -444,14 +443,14 @@ WRITE8_MEMBER(einvaderc_state::write_d)
{
// D: led grid 0-3 (D0-D2 are 7segs)
m_d = data;
- prepare_display();
+ update_display();
}
WRITE8_MEMBER(einvaderc_state::write_g)
{
// G: led grid 4-7
m_g = data;
- prepare_display();
+ update_display();
}
WRITE_LINE_MEMBER(einvaderc_state::write_sk)
@@ -459,21 +458,21 @@ WRITE_LINE_MEMBER(einvaderc_state::write_sk)
// SK: speaker out + led grid 8
m_speaker->level_w(state);
m_sk = state;
- prepare_display();
+ update_display();
}
WRITE_LINE_MEMBER(einvaderc_state::write_so)
{
// SO: led grid 9
m_so = state;
- prepare_display();
+ update_display();
}
WRITE8_MEMBER(einvaderc_state::write_l)
{
// L: led state/segment
m_l = data;
- prepare_display();
+ update_display();
}
// config
@@ -550,19 +549,19 @@ public:
hh_cop400_state(mconfig, type, tag)
{ }
- void prepare_display();
+ void update_display();
DECLARE_WRITE8_MEMBER(write_g);
DECLARE_WRITE8_MEMBER(write_d);
DECLARE_WRITE8_MEMBER(write_l);
DECLARE_READ8_MEMBER(read_l);
- DECLARE_INPUT_CHANGED_MEMBER(position_changed) { prepare_display(); }
+ DECLARE_INPUT_CHANGED_MEMBER(position_changed) { update_display(); }
void unkeinv(machine_config &config);
};
// handlers
-void unkeinv_state::prepare_display()
+void unkeinv_state::update_display()
{
m_display->matrix(m_l, m_g << 4 | m_d, false);
@@ -577,21 +576,21 @@ WRITE8_MEMBER(unkeinv_state::write_g)
// G0-G3: led select part
// G2,G3: input mux
m_g = ~data & 0xf;
- prepare_display();
+ update_display();
}
WRITE8_MEMBER(unkeinv_state::write_d)
{
// D0-D3: led select part
m_d = ~data & 0xf;
- prepare_display();
+ update_display();
}
WRITE8_MEMBER(unkeinv_state::write_l)
{
// L0-L7: led data
m_l = ~data & 0xff;
- prepare_display();
+ update_display();
}
READ8_MEMBER(unkeinv_state::read_l)
@@ -835,6 +834,7 @@ public:
hh_cop400_state(mconfig, type, tag)
{ }
+ void update_display();
DECLARE_WRITE8_MEMBER(write_d);
DECLARE_WRITE8_MEMBER(write_l);
DECLARE_WRITE8_MEMBER(write_g);
@@ -845,19 +845,24 @@ public:
// handlers
+void funjacks_state::update_display()
+{
+ m_display->matrix(m_d, m_l);
+}
+
WRITE8_MEMBER(funjacks_state::write_d)
{
// D: led grid + input mux
m_inp_mux = data;
m_d = ~data & 0xf;
- m_display->matrix(m_d, m_l);
+ update_display();
}
WRITE8_MEMBER(funjacks_state::write_l)
{
// L0,L1: led state
m_l = data & 3;
- m_display->matrix(m_d, m_l);
+ update_display();
}
WRITE8_MEMBER(funjacks_state::write_g)
@@ -954,6 +959,7 @@ public:
hh_cop400_state(mconfig, type, tag)
{ }
+ void update_display();
DECLARE_WRITE8_MEMBER(write_d);
DECLARE_WRITE8_MEMBER(write_l);
DECLARE_WRITE8_MEMBER(write_g);
@@ -962,11 +968,16 @@ public:
// handlers
+void funrlgl_state::update_display()
+{
+ m_display->matrix(m_d, m_l);
+}
+
WRITE8_MEMBER(funrlgl_state::write_d)
{
// D: led grid
m_d = ~data & 0xf;
- m_display->matrix(m_d, m_l);
+ update_display();
}
WRITE8_MEMBER(funrlgl_state::write_l)
@@ -974,7 +985,7 @@ WRITE8_MEMBER(funrlgl_state::write_l)
// L0-L3: led state
// L4-L7: N/C
m_l = ~data & 0xf;
- m_display->matrix(m_d, m_l);
+ update_display();
}
WRITE8_MEMBER(funrlgl_state::write_g)
@@ -1047,7 +1058,7 @@ public:
hh_cop400_state(mconfig, type, tag)
{ }
- void prepare_display();
+ void update_display();
DECLARE_WRITE8_MEMBER(write_l);
DECLARE_WRITE8_MEMBER(write_d);
DECLARE_WRITE8_MEMBER(write_g);
@@ -1057,7 +1068,7 @@ public:
// handlers
-void mdallas_state::prepare_display()
+void mdallas_state::update_display()
{
m_display->matrix(~(m_d << 4 | m_g), m_l);
}
@@ -1066,7 +1077,7 @@ WRITE8_MEMBER(mdallas_state::write_l)
{
// L: digit segment data
m_l = data;
- prepare_display();
+ update_display();
}
WRITE8_MEMBER(mdallas_state::write_d)
@@ -1074,7 +1085,7 @@ WRITE8_MEMBER(mdallas_state::write_d)
// D: select digit, input mux high
m_inp_mux = (m_inp_mux & 0xf) | (data << 4 & 3);
m_d = data & 0xf;
- prepare_display();
+ update_display();
}
WRITE8_MEMBER(mdallas_state::write_g)
@@ -1082,7 +1093,7 @@ WRITE8_MEMBER(mdallas_state::write_g)
// G: select digit, input mux low
m_inp_mux = (m_inp_mux & 0x30) | (data & 0xf);
m_g = data & 0xf;
- prepare_display();
+ update_display();
}
READ8_MEMBER(mdallas_state::read_in)
@@ -1288,7 +1299,7 @@ public:
hh_cop400_state(mconfig, type, tag)
{ }
- void prepare_display();
+ void update_display();
DECLARE_WRITE_LINE_MEMBER(write_so);
DECLARE_WRITE8_MEMBER(write_d);
DECLARE_WRITE8_MEMBER(write_l);
@@ -1298,7 +1309,7 @@ public:
// handlers
-void lightfgt_state::prepare_display()
+void lightfgt_state::update_display()
{
u8 grid = (m_so | m_d << 1) ^ 0x1f;
m_display->matrix(grid, m_l);
@@ -1308,14 +1319,14 @@ WRITE_LINE_MEMBER(lightfgt_state::write_so)
{
// SO: led grid 0 (and input mux)
m_so = state;
- prepare_display();
+ update_display();
}
WRITE8_MEMBER(lightfgt_state::write_d)
{
// D: led grid 1-4 (and input mux)
m_d = data;
- prepare_display();
+ update_display();
}
WRITE8_MEMBER(lightfgt_state::write_l)
@@ -1323,7 +1334,7 @@ WRITE8_MEMBER(lightfgt_state::write_l)
// L0-L4: led state
// L5-L7: N/C
m_l = data & 0x1f;
- prepare_display();
+ update_display();
}
READ8_MEMBER(lightfgt_state::read_g)
@@ -1580,7 +1591,7 @@ public:
hh_cop400_state(mconfig, type, tag)
{ }
- void prepare_display();
+ void update_display();
DECLARE_WRITE8_MEMBER(write_d);
DECLARE_WRITE8_MEMBER(write_g);
DECLARE_WRITE8_MEMBER(write_l);
@@ -1591,7 +1602,7 @@ public:
// handlers
-void qkracer_state::prepare_display()
+void qkracer_state::update_display()
{
m_display->matrix(~(m_d | m_g << 4 | m_sk << 8), m_l);
}
@@ -1601,7 +1612,7 @@ WRITE8_MEMBER(qkracer_state::write_d)
// D: select digit, D3: input mux high bit
m_inp_mux = (m_inp_mux & 0xf) | (data << 1 & 0x10);
m_d = data & 0xf;
- prepare_display();
+ update_display();
}
WRITE8_MEMBER(qkracer_state::write_g)
@@ -1609,14 +1620,14 @@ WRITE8_MEMBER(qkracer_state::write_g)
// G: select digit, input mux
m_inp_mux = (m_inp_mux & 0x10) | (data & 0xf);
m_g = data & 0xf;
- prepare_display();
+ update_display();
}
WRITE8_MEMBER(qkracer_state::write_l)
{
// L0-L6: digit segment data
m_l = data & 0x7f;
- prepare_display();
+ update_display();
}
READ8_MEMBER(qkracer_state::read_in)
@@ -1629,7 +1640,7 @@ WRITE_LINE_MEMBER(qkracer_state::write_sk)
{
// SK: green led
m_sk = state;
- prepare_display();
+ update_display();
}
// config
@@ -1721,7 +1732,7 @@ public:
hh_cop400_state(mconfig, type, tag)
{ }
- void prepare_display();
+ void update_display();
DECLARE_WRITE8_MEMBER(write_d);
DECLARE_WRITE8_MEMBER(write_l);
DECLARE_WRITE_LINE_MEMBER(write_sk);
@@ -1730,7 +1741,7 @@ public:
// handlers
-void vidchal_state::prepare_display()
+void vidchal_state::update_display()
{
m_display->matrix(m_d | m_sk << 6, m_l);
}
@@ -1739,21 +1750,21 @@ WRITE8_MEMBER(vidchal_state::write_d)
{
// D: CD4028BE to digit select
m_d = 1 << data & 0x3f;
- prepare_display();
+ update_display();
}
WRITE8_MEMBER(vidchal_state::write_l)
{
// L: digit segment data
m_l = bitswap<8>(data,0,3,1,5,4,7,2,6);
- prepare_display();
+ update_display();
}
WRITE_LINE_MEMBER(vidchal_state::write_sk)
{
// SK: hit led
m_sk = state;
- prepare_display();
+ update_display();
}
// config