diff --git a/src/mame/drivers/by17.cpp b/src/mame/drivers/by17.cpp index f4498f13e76..eed081329d7 100644 --- a/src/mame/drivers/by17.cpp +++ b/src/mame/drivers/by17.cpp @@ -545,9 +545,7 @@ WRITE_LINE_MEMBER( by17_state::u10_ca2_w ) #if 0 // Display Blanking - Out of sync with video redraw rate and causes flicker so it's disabled if (state == 0) { - int digit; - - for (digit=0; digit<8; digit++) + for (int digit=0; digit<8; digit++) { m_digits[0][digit] = 0 m_digits[1][digit] = 0 @@ -734,8 +732,7 @@ WRITE8_MEMBER( by17_state::u11_b_w ) } else // Rest output - all momentary solenoids are off { - for (int i=0; i<15; i++) - m_solenoids[i] = false; + std::fill_n(std::begin(m_solenoids), 15, false); } } diff --git a/src/mame/drivers/by35.cpp b/src/mame/drivers/by35.cpp index ddb5811759a..c3b16085963 100644 --- a/src/mame/drivers/by35.cpp +++ b/src/mame/drivers/by35.cpp @@ -123,6 +123,7 @@ protected: , m_io_x3(*this, "X3") , m_io_x4(*this, "X4") , m_lamps(*this, "lamp%u", 0U) + , m_digits(*this, "digit%u%u", 1U, 1U) , m_solenoids(*this, "solenoid%u", 0U) { } @@ -167,7 +168,6 @@ private: bool m_u11_ca1; bool m_u11_cb2; bool m_7d; - uint8_t m_digit; uint8_t m_segment[6]; uint8_t m_lamp_decode; solenoid_feature_data const &m_solenoid_features; @@ -187,6 +187,7 @@ private: required_ioport m_io_x3; required_ioport m_io_x4; output_finder<15 * 4> m_lamps; + output_finder<5, 8> m_digits; output_finder<20> m_solenoids; }; @@ -585,15 +586,13 @@ WRITE_LINE_MEMBER( by35_state::u10_ca2_w ) #if 0 // Display Blanking - Out of sync with video redraw rate and causes flicker so it's disabled if (state == 0) { - int digit; - - for (digit=1; digit<=8; digit++) + for (int digit=0; digit<8; digit++) { - output().set_digit_value(10+digit, 0); - output().set_digit_value(20+digit, 0); - output().set_digit_value(30+digit, 0); - output().set_digit_value(40+digit, 0); - output().set_digit_value(50+digit, 0); + m_digits[0][digit] = 0 + m_digits[1][digit] = 0 + m_digits[2][digit] = 0 + m_digits[3][digit] = 0 + m_digits[4][digit] = 0 } } #endif @@ -741,35 +740,34 @@ WRITE8_MEMBER( by35_state::u11_a_w ) } - m_digit = 0; + uint8_t digit = 0; if (BIT(data, 7)) - m_digit = 1; + digit = 1; else if (BIT(data, 6)) - m_digit = 2; + digit = 2; else if (BIT(data, 5)) - m_digit = 3; + digit = 3; else if (BIT(data, 4)) - m_digit = 4; + digit = 4; else if (BIT(data, 3)) - m_digit = 5; + digit = 5; else if (BIT(data, 2)) - m_digit = 6; + digit = 6; else if (BIT(data, 2) && BIT(data, 3)) // Aftermarket 7th digit strobe for 6 digit games - m_digit = 7; + digit = 7; else if (BIT(data, 1) && m_7d) - m_digit = 7; + digit = 7; - if ((m_u10_ca2==0) && m_digit) + if ((m_u10_ca2==0) && digit) { - static const uint8_t patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543 - BCD to 7 Segment Display Decoder - - output().set_digit_value(10+m_digit, patterns[m_segment[1]]); - output().set_digit_value(20+m_digit, patterns[m_segment[2]]); - output().set_digit_value(30+m_digit, patterns[m_segment[3]]); - output().set_digit_value(40+m_digit, patterns[m_segment[4]]); - output().set_digit_value(50+m_digit, patterns[m_segment[5]]); + static constexpr uint8_t patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543 - BCD to 7 Segment Display Decoder + m_digits[0][digit - 1] = patterns[m_segment[1]]; + m_digits[1][digit - 1] = patterns[m_segment[2]]; + m_digits[2][digit - 1] = patterns[m_segment[3]]; + m_digits[3][digit - 1] = patterns[m_segment[4]]; + m_digits[4][digit - 1] = patterns[m_segment[5]]; } m_u11a = data; @@ -786,7 +784,7 @@ WRITE8_MEMBER( by35_state::u11_b_w ) m_samples->start(m_solenoid_features[(data & 0x0f)][0], m_solenoid_features[(data & 0x0f)][1]); } - output().set_indexed_value( "solenoid", (data & 0x0f), true); + m_solenoids[data & 0x0f] = true; if (m_solenoid_features[(data & 0x0f)][3]) // Reset/release relevant switch after firing Solenoid m_io_hold_x[(m_solenoid_features[(data & 0x0f)][2])] &= (m_solenoid_features[(data & 0x0f)][3]); @@ -877,11 +875,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( by35_state::timer_z_freq ) /*** Zero Crossing - power to all Lamp SCRs is cut off and reset ***/ - for (int i=0; i<60; i++) - { - output().set_indexed_value( "lamp", i, 0 ); - } - + std::fill(std::begin(m_lamps), std::end(m_lamps), 0); } TIMER_DEVICE_CALLBACK_MEMBER( by35_state::timer_z_pulse ) { @@ -1016,6 +1010,7 @@ void by35_state::machine_start() genpin_class::machine_start(); m_lamps.resolve(); + m_digits.resolve(); m_solenoids.resolve(); }