mirror of
https://github.com/holub/mame
synced 2025-05-02 04:31:01 +03:00
added simple display output
This commit is contained in:
parent
713a4de6e8
commit
881345d294
@ -45,11 +45,35 @@ public:
|
|||||||
DECLARE_WRITE8_MEMBER(plate_w);
|
DECLARE_WRITE8_MEMBER(plate_w);
|
||||||
DECLARE_WRITE8_MEMBER(grid_w);
|
DECLARE_WRITE8_MEMBER(grid_w);
|
||||||
|
|
||||||
|
UINT16 m_vfd_state[0x10];
|
||||||
|
void update_vfd();
|
||||||
|
|
||||||
virtual void machine_start();
|
virtual void machine_start();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
|
||||||
|
Display
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
void tmtennis_state::update_vfd()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < 12; i++)
|
||||||
|
if (m_grid & (1 << i) && m_vfd_state[i] != m_plate)
|
||||||
|
{
|
||||||
|
// on difference, send to output
|
||||||
|
for (int j = 0; j < 12; j++)
|
||||||
|
output_set_lamp_value(i*100 + j, m_plate >> j & 1);
|
||||||
|
|
||||||
|
m_vfd_state[i] = m_plate;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
|
|
||||||
I/O
|
I/O
|
||||||
@ -84,6 +108,8 @@ WRITE8_MEMBER(tmtennis_state::plate_w)
|
|||||||
if (offset == NEC_UCOM4_PORTF) offset--;
|
if (offset == NEC_UCOM4_PORTF) offset--;
|
||||||
int shift = (offset - NEC_UCOM4_PORTC) * 4;
|
int shift = (offset - NEC_UCOM4_PORTC) * 4;
|
||||||
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
|
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
|
||||||
|
|
||||||
|
update_vfd();
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(tmtennis_state::grid_w)
|
WRITE8_MEMBER(tmtennis_state::grid_w)
|
||||||
@ -91,6 +117,8 @@ WRITE8_MEMBER(tmtennis_state::grid_w)
|
|||||||
// port G/H/I: vfd matrix grid
|
// port G/H/I: vfd matrix grid
|
||||||
int shift = (offset - NEC_UCOM4_PORTG) * 4;
|
int shift = (offset - NEC_UCOM4_PORTG) * 4;
|
||||||
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
|
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
|
||||||
|
|
||||||
|
update_vfd();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -133,11 +161,13 @@ INPUT_PORTS_END
|
|||||||
void tmtennis_state::machine_start()
|
void tmtennis_state::machine_start()
|
||||||
{
|
{
|
||||||
// zerofill
|
// zerofill
|
||||||
|
memset(m_vfd_state, 0, sizeof(m_vfd_state));
|
||||||
m_input_mux = 0;
|
m_input_mux = 0;
|
||||||
m_plate = 0;
|
m_plate = 0;
|
||||||
m_grid = 0;
|
m_grid = 0;
|
||||||
|
|
||||||
// register for savestates
|
// register for savestates
|
||||||
|
save_item(NAME(m_vfd_state));
|
||||||
save_item(NAME(m_input_mux));
|
save_item(NAME(m_input_mux));
|
||||||
save_item(NAME(m_plate));
|
save_item(NAME(m_plate));
|
||||||
save_item(NAME(m_grid));
|
save_item(NAME(m_grid));
|
||||||
|
Loading…
Reference in New Issue
Block a user