novag_delta1: better fix (nw)

This commit is contained in:
hap 2019-03-20 22:30:22 +01:00
parent de97f5a012
commit 425d95a636

View File

@ -47,15 +47,18 @@ private:
DECLARE_WRITE8_MEMBER(mux_w); DECLARE_WRITE8_MEMBER(mux_w);
DECLARE_WRITE8_MEMBER(digit_w); DECLARE_WRITE8_MEMBER(digit_w);
DECLARE_READ8_MEMBER(input_r); DECLARE_READ8_MEMBER(input_r);
TIMER_DEVICE_CALLBACK_MEMBER(blink) { m_blink = !m_blink; }
bool m_blink;
}; };
void delta1_state::machine_start() void delta1_state::machine_start()
{ {
novagbase_state::machine_start(); novagbase_state::machine_start();
// game relies on RAM filled with FF at power-on // zerofill/register for savestates
for (int i = 0; i < 0x100; i++) m_blink = false;
m_maincpu->space(AS_PROGRAM).write_byte(i + 0x2000, 0xff); save_item(NAME(m_blink));
} }
@ -88,9 +91,9 @@ READ8_MEMBER(delta1_state::input_r)
WRITE8_MEMBER(delta1_state::digit_w) WRITE8_MEMBER(delta1_state::digit_w)
{ {
// IO17: segment commons, active low (always 0?) // IO17: R/C circuit to segment commons (for automated blinking)
// IO10-16: digit segments A-G // IO10-16: digit segments A-G
data = (data & 0x80) ? 0 : (data & 0x7f); data = (data & 0x80 && m_blink) ? 0 : (data & 0x7f);
m_7seg_data = bitswap<7>(data, 0,1,2,3,4,5,6); m_7seg_data = bitswap<7>(data, 0,1,2,3,4,5,6);
} }
@ -170,6 +173,7 @@ void delta1_state::delta1(machine_config &config)
f3853_device &f3853(F3853(config, "f3853", 2000000)); f3853_device &f3853(F3853(config, "f3853", 2000000));
f3853.int_req_callback().set_inputline("maincpu", F8_INPUT_LINE_INT_REQ); f3853.int_req_callback().set_inputline("maincpu", F8_INPUT_LINE_INT_REQ);
TIMER(config, "display_blink").configure_periodic(FUNC(delta1_state::blink), attotime::from_msec(250)); // approximation
TIMER(config, "display_decay").configure_periodic(FUNC(delta1_state::display_decay_tick), attotime::from_msec(1)); TIMER(config, "display_decay").configure_periodic(FUNC(delta1_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_novag_delta1); config.set_default_layout(layout_novag_delta1);
} }