From e6a80d2e54769e10cd2dc054cc41054c1cc0a3c1 Mon Sep 17 00:00:00 2001 From: Robbbert Date: Wed, 4 Apr 2018 23:46:12 +1000 Subject: (nw) output finder for gts80a,gts80b,inder,jeutel,jp,ltd --- src/mame/drivers/gts80a.cpp | 9 ++-- src/mame/drivers/gts80b.cpp | 5 ++- src/mame/drivers/inder.cpp | 7 ++- src/mame/drivers/jeutel.cpp | 9 ++-- src/mame/drivers/jp.cpp | 22 ++++----- src/mame/drivers/ltd.cpp | 106 ++++++++++++++++++++++---------------------- 6 files changed, 86 insertions(+), 72 deletions(-) diff --git a/src/mame/drivers/gts80a.cpp b/src/mame/drivers/gts80a.cpp index 7e50249895a..504044b5ef6 100644 --- a/src/mame/drivers/gts80a.cpp +++ b/src/mame/drivers/gts80a.cpp @@ -29,6 +29,7 @@ public: , m_maincpu(*this, "maincpu") , m_r0_sound(*this, "r0sound") , m_r1_sound(*this, "r1sound") + , m_digits(*this, "digit%u", 0U) { } DECLARE_DRIVER_INIT(gts80a); @@ -49,9 +50,11 @@ private: uint8_t m_lamprow; uint8_t m_swrow; virtual void machine_reset() override; + virtual void machine_start() override { m_digits.resolve(); } required_device m_maincpu; optional_device m_r0_sound; optional_device m_r1_sound; + output_finder<60> m_digits; }; void gts80a_state::gts80a_map(address_map &map) @@ -296,15 +299,15 @@ WRITE8_MEMBER( gts80a_state::port2a_w ) { case 0x10: // player 1&2 if (!BIT(m_segment, 7)) seg2 |= 0x300; // put '1' in the middle - output().set_digit_value(data & 15, seg2); + m_digits[data & 15] = seg2; break; case 0x20: // player 3&4 if (!BIT(m_segment, 7)) seg2 |= 0x300; // put '1' in the middle - output().set_digit_value((data & 15)+20, seg2); + m_digits[(data & 15)+20] = seg2; break; case 0x40: // credits & balls if (!BIT(m_segment, 7)) m_segment = 1; // turn '1' back to normal - output().set_digit_value((data & 15)+40, patterns[m_segment & 15]); + m_digits[(data & 15)+40] = patterns[m_segment & 15]; break; } } diff --git a/src/mame/drivers/gts80b.cpp b/src/mame/drivers/gts80b.cpp index eda547511c8..94e9b54cee4 100644 --- a/src/mame/drivers/gts80b.cpp +++ b/src/mame/drivers/gts80b.cpp @@ -31,6 +31,7 @@ public: , m_maincpu(*this, "maincpu") , m_r0_sound(*this, "r0sound") , m_r1_sound(*this, "r1sound") + , m_digits(*this, "digit%u", 0U) { } DECLARE_DRIVER_INIT(gts80b); @@ -57,9 +58,11 @@ private: bool m_in_cmd_mode[2]; uint8_t m_digit[2]; virtual void machine_reset() override; + virtual void machine_start() override { m_digits.resolve(); } required_device m_maincpu; optional_device m_r0_sound; optional_device m_r1_sound; + output_finder<40> m_digits; }; void gts80b_state::gts80b_map(address_map &map) @@ -347,7 +350,7 @@ WRITE8_MEMBER( gts80b_state::port2b_w ) { // display a character segment = patterns[m_dispcmd & 0x7f]; // ignore blank/inverse bit segment = bitswap<16>(segment, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 3, 2, 1, 0, 0); - output().set_digit_value(m_digit[i]+i*20, segment); + m_digits[m_digit[i]+i*20] = segment; m_digit[i]++; // auto-increment pointer if (m_digit[i] > 19) m_digit[i] = 0; // check for overflow } diff --git a/src/mame/drivers/inder.cpp b/src/mame/drivers/inder.cpp index a439859a1af..73f036f2f58 100644 --- a/src/mame/drivers/inder.cpp +++ b/src/mame/drivers/inder.cpp @@ -57,6 +57,7 @@ public: , m_9b(*this, "9b") , m_13(*this, "13") , m_switches(*this, "SW.%u", 0) + , m_digits(*this, "digit%u", 0U) { } DECLARE_READ8_MEMBER(ppic_r); @@ -104,6 +105,7 @@ private: uint32_t m_sound_addr; uint8_t *m_p_speech; virtual void machine_reset() override; + virtual void machine_start() override { m_digits.resolve(); } required_device m_maincpu; optional_device m_audiocpu; optional_device m_sn; @@ -113,6 +115,7 @@ private: optional_device m_9b; optional_device m_13; required_ioport_array<11> m_switches; + output_finder<50> m_digits; }; void inder_state::brvteam_map(address_map &map) @@ -1211,7 +1214,7 @@ WRITE8_MEMBER( inder_state::disp_w ) { offset = (offset >> 3) & 7; for (i = 0; i < 5; i++) - output().set_digit_value(i*10+offset, m_segment[i]); + m_digits[i*10+offset] = m_segment[i]; } } @@ -1243,7 +1246,7 @@ WRITE8_MEMBER( inder_state::ppi64c_w ) { if ((m_game==1) && (i == 4)) // mundial,clown,250cc,atleta have credit and ball displays swapped data ^= 4; - output().set_digit_value(i*10+data, m_segment[i]); + m_digits[i*10+data] = m_segment[i]; } } } diff --git a/src/mame/drivers/jeutel.cpp b/src/mame/drivers/jeutel.cpp index 8f8a72e21ae..92b505ec236 100644 --- a/src/mame/drivers/jeutel.cpp +++ b/src/mame/drivers/jeutel.cpp @@ -36,6 +36,7 @@ public: , m_maincpu(*this, "maincpu") , m_cpu2(*this, "cpu2") , m_tms(*this, "tms") + , m_digits(*this, "digit%u", 0U) { } DECLARE_DRIVER_INIT(jeutel); @@ -55,9 +56,11 @@ private: uint8_t m_sndcmd; uint8_t m_digit; virtual void machine_reset() override; + virtual void machine_start() override { m_digits.resolve(); } required_device m_maincpu; required_device m_cpu2; required_device m_tms; + output_finder<60> m_digits; }; @@ -133,7 +136,7 @@ WRITE8_MEMBER( jeutel_state::ppi0a_w ) if (BIT(data, 6)) { - output().set_digit_value(40+m_digit, 0x3f); //patterns[data&15]; + m_digits[40+m_digit] = 0x3f; //patterns[data&15]; return; } switch (data & 0x0f) @@ -158,11 +161,11 @@ WRITE8_MEMBER( jeutel_state::ppi0a_w ) } if (BIT(data, 4)) { - output().set_digit_value(m_digit, (blank) ? 0 : segment); + m_digits[m_digit] = (blank) ? 0 : segment; } else if (BIT(data, 5)) { - output().set_digit_value(20+m_digit, (blank) ? 0 : segment); + m_digits[20+m_digit] = (blank) ? 0 : segment; } } diff --git a/src/mame/drivers/jp.cpp b/src/mame/drivers/jp.cpp index 4226ed522c4..6b17237fc1f 100644 --- a/src/mame/drivers/jp.cpp +++ b/src/mame/drivers/jp.cpp @@ -41,7 +41,7 @@ public: , m_msm(*this, "msm") , m_adpcm_select(*this, "adpcm_select") , m_adpcm_bank(*this, "adpcm_bank") - , m_main_displays(*this, "digit%u", 0U) + , m_digits(*this, "digit%u", 0U) { } void jp(machine_config &config); @@ -80,7 +80,7 @@ private: optional_device m_msm; optional_device m_adpcm_select; optional_memory_bank m_adpcm_bank; - output_finder<32> m_main_displays; + output_finder<100> m_digits; }; @@ -169,7 +169,7 @@ static INPUT_PORTS_START( jp ) PORT_DIPSETTING( 0x04, DEF_STR(Off)) PORT_DIPSETTING( 0x00, DEF_STR(On)) PORT_DIPNAME( 0x08, 0x08, "SW D") - PORT_DIPSETTING( 0x40, DEF_STR(Off)) + PORT_DIPSETTING( 0x08, DEF_STR(Off)) PORT_DIPSETTING( 0x00, DEF_STR(On)) PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED ) @@ -267,7 +267,7 @@ void jp_state::update_display() if (t == 8) { // ball number segment = m_disp_data >> 6; - output().set_digit_value(94, bitswap<8>(segment, 0, 1, 2, 3, 4, 5, 6, 7) ^ 0xff); + m_digits[94] = bitswap<8>(segment, 0, 1, 2, 3, 4, 5, 6, 7) ^ 0xff; } else if (t < 8) { // main displays @@ -278,9 +278,9 @@ void jp_state::update_display() for (int i = 0; i < 32; i++) if (BIT(m_disp_data, i)) - m_main_displays[i] = m_main_displays[i] & ~segment; + m_digits[i] = m_digits[i] & ~segment; else - m_main_displays[i] = m_main_displays[i] | segment; + m_digits[i] = m_digits[i] | segment; } } @@ -316,7 +316,7 @@ void jp_state::machine_start() { genpin_class::machine_start(); - m_main_displays.resolve(); + m_digits.resolve(); if (m_adpcm_bank.found()) m_adpcm_bank->configure_entries(0, 16, memregion("sound1")->base(), 0x8000); @@ -327,10 +327,10 @@ void jp_state::machine_reset() genpin_class::machine_reset(); //m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); - output().set_digit_value(96, 0x3f); - output().set_digit_value(97, 0x3f); - output().set_digit_value(98, 0x3f); - output().set_digit_value(99, 0x3f); + m_digits[96] = 0x3f; + m_digits[97] = 0x3f; + m_digits[98] = 0x3f; + m_digits[99] = 0x3f; } MACHINE_CONFIG_START(jp_state::jp) diff --git a/src/mame/drivers/ltd.cpp b/src/mame/drivers/ltd.cpp index c586ef2e4dd..88ba9395aad 100644 --- a/src/mame/drivers/ltd.cpp +++ b/src/mame/drivers/ltd.cpp @@ -58,6 +58,7 @@ public: : genpin_class(mconfig, type, tag) , m_maincpu(*this, "maincpu") , m_p_ram(*this, "nvram") + , m_digits(*this, "digit%u", 0U) { } DECLARE_DRIVER_INIT(atla_ltd); @@ -87,8 +88,10 @@ private: uint8_t m_out_offs; uint8_t m_port2; virtual void machine_reset() override; + virtual void machine_start() override { m_digits.resolve(); } required_device m_maincpu; required_shared_ptr m_p_ram; + output_finder<50> m_digits; }; @@ -329,21 +332,21 @@ WRITE8_MEMBER( ltd_state::port1_w ) if (m_clear) { if (row>7) - output().set_digit_value(row+2, segment); // P2 + m_digits[row+2] = segment; // P2 else - output().set_digit_value(row, segment); // P1 + m_digits[row] = segment; // P1 } break; case 8: if (m_clear) { if (row>13) - output().set_digit_value(row+26, segment); // credits / ball + m_digits[row+26] = segment; // credits / ball else if (row>7) - output().set_digit_value(row+22, segment); // P4 + m_digits[row+22] = segment; // P4 else - output().set_digit_value(row+20, segment); // P3 + m_digits[row+20] = segment; // P3 } break; } @@ -384,8 +387,6 @@ DRIVER_INIT_MEMBER( ltd_state, ltd ) DRIVER_INIT_MEMBER( ltd_state, atla_ltd ) { m_game = 1; - output().set_digit_value(0, 0x3f); - output().set_digit_value(10, 0x3f); } DRIVER_INIT_MEMBER( ltd_state, bhol_ltd ) @@ -412,27 +413,29 @@ TIMER_DEVICE_CALLBACK_MEMBER( ltd_state::timer_r ) { case 1: // atlantis (2-player, 5-digit) { + m_digits[0] = 0x3f; + m_digits[10] = 0x3f; switch(m_out_offs-0x60) { case 0: - output().set_digit_value(1, patterns[m_p_ram[m_out_offs]&15]); - output().set_digit_value(2, patterns[m_p_ram[m_out_offs]>>4]); + m_digits[1] = patterns[m_p_ram[m_out_offs]&15]; + m_digits[2] = patterns[m_p_ram[m_out_offs]>>4]; break; case 1: - output().set_digit_value(11, patterns[m_p_ram[m_out_offs]&15]); - output().set_digit_value(12, patterns[m_p_ram[m_out_offs]>>4]); + m_digits[11] = patterns[m_p_ram[m_out_offs]&15]; + m_digits[12] = patterns[m_p_ram[m_out_offs]>>4]; break; case 2: - output().set_digit_value(3, patterns[m_p_ram[m_out_offs]&15]); - output().set_digit_value(4, patterns[m_p_ram[m_out_offs]>>4]); + m_digits[3] = patterns[m_p_ram[m_out_offs]&15]; + m_digits[4] = patterns[m_p_ram[m_out_offs]>>4]; break; case 3: - output().set_digit_value(13, patterns[m_p_ram[m_out_offs]&15]); - output().set_digit_value(14, patterns[m_p_ram[m_out_offs]>>4]); + m_digits[13] = patterns[m_p_ram[m_out_offs]&15]; + m_digits[14] = patterns[m_p_ram[m_out_offs]>>4]; break; case 8: - output().set_digit_value(41, patterns[m_p_ram[m_out_offs]&15]); - output().set_digit_value(40, patterns[m_p_ram[m_out_offs]>>4]); + m_digits[41] = patterns[m_p_ram[m_out_offs]&15]; + m_digits[40] = patterns[m_p_ram[m_out_offs]>>4]; break; } break; @@ -442,32 +445,32 @@ TIMER_DEVICE_CALLBACK_MEMBER( ltd_state::timer_r ) switch(m_out_offs-0x60) { case 0: - output().set_digit_value(0, patterns[m_p_ram[m_out_offs]&15]); - output().set_digit_value(1, patterns[m_p_ram[m_out_offs]>>4]); + m_digits[0] = patterns[m_p_ram[m_out_offs]&15]; + m_digits[1] = patterns[m_p_ram[m_out_offs]>>4]; break; case 1: - output().set_digit_value(10, patterns[m_p_ram[m_out_offs]&15]); - output().set_digit_value(11, patterns[m_p_ram[m_out_offs]>>4]); + m_digits[10] = patterns[m_p_ram[m_out_offs]&15]; + m_digits[11] = patterns[m_p_ram[m_out_offs]>>4]; break; case 2: - output().set_digit_value(2, patterns[m_p_ram[m_out_offs]&15]); - output().set_digit_value(3, patterns[m_p_ram[m_out_offs]>>4]); + m_digits[2] = patterns[m_p_ram[m_out_offs]&15]; + m_digits[3] = patterns[m_p_ram[m_out_offs]>>4]; break; case 3: - output().set_digit_value(12, patterns[m_p_ram[m_out_offs]&15]); - output().set_digit_value(13, patterns[m_p_ram[m_out_offs]>>4]); + m_digits[12] = patterns[m_p_ram[m_out_offs]&15]; + m_digits[13] = patterns[m_p_ram[m_out_offs]>>4]; break; case 4: - output().set_digit_value(4, patterns[m_p_ram[m_out_offs]&15]); - output().set_digit_value(5, patterns[m_p_ram[m_out_offs]>>4]); + m_digits[4] = patterns[m_p_ram[m_out_offs]&15]; + m_digits[5] = patterns[m_p_ram[m_out_offs]>>4]; break; case 5: - output().set_digit_value(14, patterns[m_p_ram[m_out_offs]&15]); - output().set_digit_value(15, patterns[m_p_ram[m_out_offs]>>4]); + m_digits[14] = patterns[m_p_ram[m_out_offs]&15]; + m_digits[15] = patterns[m_p_ram[m_out_offs]>>4]; break; case 8: - output().set_digit_value(41, patterns[m_p_ram[m_out_offs]&15]); - output().set_digit_value(40, patterns[m_p_ram[m_out_offs]>>4]); + m_digits[41] = patterns[m_p_ram[m_out_offs]&15]; + m_digits[40] = patterns[m_p_ram[m_out_offs]>>4]; break; } break; @@ -477,49 +480,48 @@ TIMER_DEVICE_CALLBACK_MEMBER( ltd_state::timer_r ) switch(m_out_offs-0x60) { case 0: - output().set_digit_value(0, patterns[m_p_ram[m_out_offs]&15]); - output().set_digit_value(1, patterns[m_p_ram[m_out_offs]>>4]); + m_digits[0] = patterns[m_p_ram[m_out_offs]&15]; + m_digits[1] = patterns[m_p_ram[m_out_offs]>>4]; break; case 1: - output().set_digit_value(2, patterns[m_p_ram[m_out_offs]&15]); - output().set_digit_value(3, patterns[m_p_ram[m_out_offs]>>4]); + m_digits[2] = patterns[m_p_ram[m_out_offs]&15]; + m_digits[3] = patterns[m_p_ram[m_out_offs]>>4]; break; case 2: - output().set_digit_value(4, patterns[m_p_ram[m_out_offs]&15]); - output().set_digit_value(5, patterns[m_p_ram[m_out_offs]>>4]); + m_digits[4] = patterns[m_p_ram[m_out_offs]&15]; + m_digits[5] = patterns[m_p_ram[m_out_offs]>>4]; break; case 3: - output().set_digit_value(10, patterns[m_p_ram[m_out_offs]&15]); - output().set_digit_value(11, patterns[m_p_ram[m_out_offs]>>4]); + m_digits[10] = patterns[m_p_ram[m_out_offs]&15]; + m_digits[11] = patterns[m_p_ram[m_out_offs]>>4]; break; case 4: - output().set_digit_value(12, patterns[m_p_ram[m_out_offs]&15]); - output().set_digit_value(13, patterns[m_p_ram[m_out_offs]>>4]); + m_digits[12] = patterns[m_p_ram[m_out_offs]&15]; + m_digits[13] = patterns[m_p_ram[m_out_offs]>>4]; break; case 5: - output().set_digit_value(14, patterns[m_p_ram[m_out_offs]&15]); - output().set_digit_value(15, patterns[m_p_ram[m_out_offs]>>4]); + m_digits[14] = patterns[m_p_ram[m_out_offs]&15]; + m_digits[15] = patterns[m_p_ram[m_out_offs]>>4]; break; case 6: - output().set_digit_value(20, patterns[m_p_ram[m_out_offs]&15]); - output().set_digit_value(21, patterns[m_p_ram[m_out_offs]>>4]); + m_digits[20] = patterns[m_p_ram[m_out_offs]&15]; + m_digits[21] = patterns[m_p_ram[m_out_offs]>>4]; break; case 7: - output().set_digit_value(22, patterns[m_p_ram[m_out_offs]&15]); - output().set_digit_value(23, patterns[m_p_ram[m_out_offs]>>4]); + m_digits[22] = patterns[m_p_ram[m_out_offs]&15]; + m_digits[23] = patterns[m_p_ram[m_out_offs]>>4]; break; case 8: - output().set_digit_value(24, patterns[m_p_ram[m_out_offs]&15]); - output().set_digit_value(25, patterns[m_p_ram[m_out_offs]>>4]); + m_digits[24] = patterns[m_p_ram[m_out_offs]&15]; + m_digits[25] = patterns[m_p_ram[m_out_offs]>>4]; break; case 9: - output().set_digit_value(40, patterns[m_p_ram[m_out_offs]&15]); - output().set_digit_value(41, patterns[m_p_ram[m_out_offs]>>4]); + m_digits[40] = patterns[m_p_ram[m_out_offs]&15]; + m_digits[41] = patterns[m_p_ram[m_out_offs]>>4]; break; } break; } - } } } -- cgit v1.2.3