From 7b365361549de6b667b8383cde5e40084ef7231a Mon Sep 17 00:00:00 2001 From: mooglyguy Date: Wed, 4 Apr 2018 18:35:31 +0200 Subject: -output: Removed remaining legacy outputs from alesis. Removed legacy outputs from aces1, acommand, allied. [Ryan Holtz] --- src/mame/drivers/aces1.cpp | 18 +++++--- src/mame/drivers/acommand.cpp | 16 ++++--- src/mame/drivers/alesis.cpp | 43 +++++++++++++++++++ src/mame/drivers/allied.cpp | 20 +++++---- src/mame/includes/alesis.h | 92 +++++++++++++++++++++++++++++++++++++++- src/mame/video/alesis.cpp | 98 +++++++++++++++++++++---------------------- 6 files changed, 218 insertions(+), 69 deletions(-) diff --git a/src/mame/drivers/aces1.cpp b/src/mame/drivers/aces1.cpp index 51dac6fd666..6d2ce962c62 100644 --- a/src/mame/drivers/aces1.cpp +++ b/src/mame/drivers/aces1.cpp @@ -56,7 +56,9 @@ public: m_reel1(*this, "reel1"), m_reel2(*this, "reel2"), m_reel3(*this, "reel3"), - m_io_ports(*this, {"IO1", "IO2", "IO3", "IO4", "IO5", "IO6", "IO7", "IO8"}) + m_io_ports(*this, {"IO1", "IO2", "IO3", "IO4", "IO5", "IO6", "IO7", "IO8"}), + m_lamps(*this, "lamp%u", 0U), + m_digits(*this, "digit%u", 0U) { } int m_input_strobe; int m_lamp_strobe; @@ -65,6 +67,7 @@ public: int m_reel_phase[4]; int m_reel_count[4]; int m_optic_pattern; + DECLARE_WRITE_LINE_MEMBER(reel0_optic_cb) { if (state) m_optic_pattern |= 0x01; else m_optic_pattern &= ~0x01; } DECLARE_WRITE_LINE_MEMBER(reel1_optic_cb) { if (state) m_optic_pattern |= 0x02; else m_optic_pattern &= ~0x02; } DECLARE_WRITE_LINE_MEMBER(reel2_optic_cb) { if (state) m_optic_pattern |= 0x04; else m_optic_pattern &= ~0x04; } @@ -110,24 +113,23 @@ public: { if (m_led_strobe != m_input_strobe) { - output().set_digit_value(m_input_strobe,data); + m_digits[m_input_strobe] = data; m_led_strobe = m_input_strobe; } } DECLARE_WRITE8_MEMBER(ic24_write_b) { - //cheating a bit here, need persistence - int i; + //cheating a bit here, need persistence if (m_lamp_strobe != m_input_strobe) { // Because of the nature of the lamping circuit, there is an element of persistance where the lamp retains residual charge // As a consequence, the lamp column data can change before the input strobe (effectively writing 0 to the previous strobe) // without causing the relevant lamps to black out. - for (i = 0; i < 8; i++) + for (int i = 0; i < 8; i++) { - output().set_lamp_value((8*m_input_strobe)+i, ((data & (1 << i)) !=0)); + m_lamps[8 * m_input_strobe + i] = BIT(data, i); } m_lamp_strobe = m_input_strobe; } @@ -223,6 +225,8 @@ public: required_device m_reel2; required_device m_reel3; required_ioport_array<8> m_io_ports; + output_finder<128> m_lamps; + output_finder<16> m_digits; DECLARE_DRIVER_INIT(aces1); virtual void machine_start() override; @@ -261,6 +265,8 @@ void aces1_state::machine_start() } m_aces1_irq_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(aces1_state::m_aces1_irq_timer_callback),this), nullptr); m_aces1_nmi_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(aces1_state::m_aces1_nmi_timer_callback),this), nullptr); + m_digits.resolve(); + m_lamps.resolve(); } void aces1_state::machine_reset() diff --git a/src/mame/drivers/acommand.cpp b/src/mame/drivers/acommand.cpp index 91faa3be2d2..474f6f8e891 100644 --- a/src/mame/drivers/acommand.cpp +++ b/src/mame/drivers/acommand.cpp @@ -80,7 +80,9 @@ public: m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette"), m_bgtmap(*this, "bgtmap"), - m_txtmap(*this, "txtmap") { } + m_txtmap(*this, "txtmap"), + m_digits(*this, "digit%u", 0U) + { } DECLARE_WRITE8_MEMBER(oki_bank_w); DECLARE_WRITE16_MEMBER(output_7seg0_w); @@ -102,7 +104,7 @@ public: void acommand(machine_config &config); void acommand_map(address_map &map); protected: -// virtual void video_start() override; + virtual void machine_start() override; private: required_shared_ptr m_spriteram; @@ -113,6 +115,7 @@ private: required_device m_palette; required_device m_bgtmap; required_device m_txtmap; + output_finder<8> m_digits; uint16_t m_7seg0; uint16_t m_7seg1; @@ -122,7 +125,10 @@ private: void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int priority, int pri_mask); }; - +void acommand_state::machine_start() +{ + m_digits.resolve(); +} void acommand_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int priority, int pri_mask) { @@ -230,7 +236,7 @@ WRITE16_MEMBER(acommand_state::output_7seg0_w) // nybble 0,1,2: left 7segs, nybble 3: right 7seg 1st digit for (int i = 0; i < 4; i++) - output().set_digit_value(i, led_fill[m_7seg0 >> (i*4) & 0xf]); + m_digits[i] = led_fill[m_7seg0 >> (i*4) & 0xf]; } WRITE16_MEMBER(acommand_state::output_7seg1_w) @@ -239,7 +245,7 @@ WRITE16_MEMBER(acommand_state::output_7seg1_w) // nybble 0,1: right 7seg 2nd,3rd digit for (int i = 0; i < 2; i++) - output().set_digit_value(i+4, led_fill[m_7seg1 >> (i*4) & 0xf]); + m_digits[i+4] = led_fill[m_7seg1 >> (i*4) & 0xf]; // other: ? } diff --git a/src/mame/drivers/alesis.cpp b/src/mame/drivers/alesis.cpp index 2d10c7964fe..91cd19253d3 100644 --- a/src/mame/drivers/alesis.cpp +++ b/src/mame/drivers/alesis.cpp @@ -351,6 +351,49 @@ void alesis_state::machine_start() m_edit_led.resolve(); m_echo_led.resolve(); m_loop_led.resolve(); + m_a_next.resolve(); + m_b_next.resolve(); + m_fill_next.resolve(); + m_user_next.resolve(); + m_play.resolve(); + m_record.resolve(); + m_compose.resolve(); + m_perform.resolve(); + m_song.resolve(); + m_b.resolve(); + m_a.resolve(); + m_fill.resolve(); + m_user.resolve(); + m_edited.resolve(); + m_set.resolve(); + m_drum.resolve(); + m_press_play.resolve(); + m_metronome.resolve(); + m_tempo.resolve(); + m_step_edit.resolve(); + m_swing_off.resolve(); + m_swing_62.resolve(); + m_click_l1.resolve(); + m_click_note.resolve(); + m_click_l2.resolve(); + m_click_3.resolve(); + m_backup.resolve(); + m_drum_set.resolve(); + m_swing.resolve(); + m_swing_58.resolve(); + m_click_off.resolve(); + m_click.resolve(); + m_quantize_off.resolve(); + m_quantize_3.resolve(); + m_midi_setup.resolve(); + m_record_setup.resolve(); + m_quantize.resolve(); + m_swing_54.resolve(); + m_quantize_l1.resolve(); + m_quantize_l2.resolve(); + m_quantize_l3.resolve(); + m_quantize_note.resolve(); + m_setup.resolve(); } void alesis_state::machine_reset() diff --git a/src/mame/drivers/allied.cpp b/src/mame/drivers/allied.cpp index ca3332d9e38..a14d8d6bdd8 100644 --- a/src/mame/drivers/allied.cpp +++ b/src/mame/drivers/allied.cpp @@ -65,6 +65,7 @@ public: , m_ic7(*this, "ic7") , m_ic8(*this, "ic8") , m_digits(*this, "digit%u", 0U) + , m_leds(*this, "led%u", 1U) { } DECLARE_WRITE8_MEMBER(ic1_b_w); @@ -101,7 +102,7 @@ private: uint8_t m_ic6b4; uint8_t m_ic6b7; virtual void machine_reset() override; - virtual void machine_start() override { m_digits.resolve(); } + virtual void machine_start() override; required_device m_maincpu; required_device m_ic1; required_device m_ic2; @@ -111,6 +112,7 @@ private: required_device m_ic7; required_device m_ic8; output_finder<42> m_digits; + output_finder<7> m_leds; }; @@ -578,12 +580,8 @@ WRITE8_MEMBER( allied_state::ic8_a_w ) // PB0-4 = ball 1-5 LED; PB5 = shoot again lamp WRITE8_MEMBER( allied_state::ic8_b_w ) { - output().set_value("led1", !BIT(data, 0)); - output().set_value("led2", !BIT(data, 1)); - output().set_value("led3", !BIT(data, 2)); - output().set_value("led4", !BIT(data, 3)); - output().set_value("led5", !BIT(data, 4)); - output().set_value("led6", !BIT(data, 5)); + for (int i = 0; i < 6; i++) + m_leds[i+1] = !BIT(data, i); } // this line not emulated in PinMAME, maybe it isn't needed @@ -602,6 +600,12 @@ TIMER_DEVICE_CALLBACK_MEMBER( allied_state::timer_a ) m_ic8->ca2_w(BIT(data, 6)); } +void allied_state::machine_start() +{ + m_digits.resolve(); + m_leds.resolve(); +} + void allied_state::machine_reset() { m_display = 0; @@ -613,7 +617,7 @@ void allied_state::machine_reset() m_ic6a2 = 0; m_ic6b4 = 0; m_ic6b7 = 0; - output().set_value("led0", 1); //1=off + m_leds[0] = 1; } MACHINE_CONFIG_START(allied_state::allied) diff --git a/src/mame/includes/alesis.h b/src/mame/includes/alesis.h index 1854c5e55dd..e0873fc6532 100644 --- a/src/mame/includes/alesis.h +++ b/src/mame/includes/alesis.h @@ -71,6 +71,7 @@ public: m_col5(*this, "COL5"), m_col6(*this, "COL6"), m_select(*this, "SELECT"), + m_digit(*this, "digit", 0U), m_track_led(*this, "track_led%u", 1U), m_patt_led(*this, "patt_led"), m_song_led(*this, "song_led"), @@ -84,7 +85,51 @@ public: m_part_led(*this, "part_led"), m_edit_led(*this, "edit_led"), m_echo_led(*this, "echo_led"), - m_loop_led(*this, "loop_led") + m_loop_led(*this, "loop_led"), + m_a_next(*this, "a_next"), + m_b_next(*this, "b_next"), + m_fill_next(*this, "fill_next"), + m_user_next(*this, "user_next"), + m_play(*this, "play"), + m_record(*this, "record"), + m_compose(*this, "compose"), + m_perform(*this, "perform"), + m_song(*this, "song"), + m_b(*this, "b"), + m_a(*this, "a"), + m_fill(*this, "fill"), + m_user(*this, "user"), + m_edited(*this, "edited"), + m_set(*this, "set"), + m_drum(*this, "drum"), + m_press_play(*this, "press_play"), + m_metronome(*this, "metronome"), + m_tempo(*this, "tempo"), + m_page(*this, "page"), + m_step_edit(*this, "step_edit"), + m_swing_off(*this, "swing_off"), + m_swing_62(*this, "swing_62"), + m_click_l1(*this, "click_l1"), + m_click_note(*this, "click_note"), + m_click_l2(*this, "click_l2"), + m_click_3(*this, "click_3"), + m_backup(*this, "backup"), + m_drum_set(*this, "drum_set"), + m_swing(*this, "swing"), + m_swing_58(*this, "swing_58"), + m_click_off(*this, "click_off"), + m_click(*this, "click"), + m_quantize_off(*this, "quantize_off"), + m_quantize_3(*this, "quantize_3"), + m_midi_setup(*this, "midi_setup"), + m_record_setup(*this, "record_setup"), + m_quantize(*this, "quantize"), + m_swing_54(*this, "swing_54"), + m_quantize_l1(*this, "quantize_l1"), + m_quantize_l2(*this, "quantize_l2"), + m_quantize_l3(*this, "quantize_l3"), + m_quantize_note(*this, "quantize_note"), + m_setup(*this, "setup") { } DECLARE_DRIVER_INIT(hr16); @@ -133,6 +178,7 @@ private: required_ioport m_col5; required_ioport m_col6; optional_ioport m_select; + output_finder<5> m_digit; output_finder<8> m_track_led; output_finder<> m_patt_led; output_finder<> m_song_led; @@ -147,6 +193,50 @@ private: output_finder<> m_edit_led; output_finder<> m_echo_led; output_finder<> m_loop_led; + output_finder<> m_a_next; + output_finder<> m_b_next; + output_finder<> m_fill_next; + output_finder<> m_user_next; + output_finder<> m_play; + output_finder<> m_record; + output_finder<> m_compose; + output_finder<> m_perform; + output_finder<> m_song; + output_finder<> m_b; + output_finder<> m_a; + output_finder<> m_fill; + output_finder<> m_user; + output_finder<> m_edited; + output_finder<> m_set; + output_finder<> m_drum; + output_finder<> m_press_play; + output_finder<> m_metronome; + output_finder<> m_tempo; + output_finder<> m_page; + output_finder<> m_step_edit; + output_finder<> m_swing_off; + output_finder<> m_swing_62; + output_finder<> m_click_l1; + output_finder<> m_click_note; + output_finder<> m_click_l2; + output_finder<> m_click_3; + output_finder<> m_backup; + output_finder<> m_drum_set; + output_finder<> m_swing; + output_finder<> m_swing_58; + output_finder<> m_click_off; + output_finder<> m_click; + output_finder<> m_quantize_off; + output_finder<> m_quantize_3; + output_finder<> m_midi_setup; + output_finder<> m_record_setup; + output_finder<> m_quantize; + output_finder<> m_swing_54; + output_finder<> m_quantize_l1; + output_finder<> m_quantize_l2; + output_finder<> m_quantize_l3; + output_finder<> m_quantize_note; + output_finder<> m_setup; }; // device type definition diff --git a/src/mame/video/alesis.cpp b/src/mame/video/alesis.cpp index 5dead01cbd1..264905deef0 100644 --- a/src/mame/video/alesis.cpp +++ b/src/mame/video/alesis.cpp @@ -19,20 +19,20 @@ void alesis_state::update_lcd_symbols(bitmap_ind16 &bitmap, uint8_t pos, uint8_t case 0: switch(y) { - case 0: output().set_value("a_next", state); break; - case 1: output().set_value("b_next", state); break; - case 2: output().set_value("fill_next", state); break; - case 3: output().set_value("user_next", state); break; - case 4: output().set_value("play", state); break; - case 5: output().set_value("record", state); break; - case 6: output().set_value("compose", state); break; - case 7: output().set_value("perform", state); break; + case 0: m_a_next = state; break; + case 1: m_b_next = state; break; + case 2: m_fill_next = state; break; + case 3: m_user_next = state; break; + case 4: m_play = state; break; + case 5: m_record = state; break; + case 6: m_compose = state; break; + case 7: m_perform = state; break; } break; case 1: if (y == 0) { - output().set_value("song", state); + m_song = state; } else if (y < 8) { @@ -41,7 +41,7 @@ void alesis_state::update_lcd_symbols(bitmap_ind16 &bitmap, uint8_t pos, uint8_t else m_lcd_digits[0] &= ~(1<<(y-1)); - output().set_value("digit0", bitswap<8>(m_lcd_digits[0],7,3,1,4,6,5,2,0)); + m_digit[0] = bitswap<8>(m_lcd_digits[0],7,3,1,4,6,5,2,0); } break; case 2: @@ -56,26 +56,26 @@ void alesis_state::update_lcd_symbols(bitmap_ind16 &bitmap, uint8_t pos, uint8_t else m_lcd_digits[1] &= ~(1<<(y-1)); - output().set_value("digit1", bitswap<8>(m_lcd_digits[1],7,3,1,4,6,5,2,0)); + m_digit[1] = bitswap<8>(m_lcd_digits[1],7,3,1,4,6,5,2,0); } break; case 3: switch(y) { - case 0: output().set_value("b", state); break; - case 1: output().set_value("a", state); break; - case 2: output().set_value("fill", state); break; - case 3: output().set_value("user", state); break; - case 4: output().set_value("edited", state); break; - case 5: output().set_value("set", state); break; - case 6: output().set_value("drum", state); break; - case 7: output().set_value("press_play", state); break; + case 0: m_b = state; break; + case 1: m_a = state; break; + case 2: m_fill = state; break; + case 3: m_user = state; break; + case 4: m_edited = state; break; + case 5: m_set = state; break; + case 6: m_drum = state; break; + case 7: m_press_play = state; break; } break; case 4: if (y == 7) { - output().set_value("metronome", state); + m_metronome = state; } else if (y < 7) { @@ -84,7 +84,7 @@ void alesis_state::update_lcd_symbols(bitmap_ind16 &bitmap, uint8_t pos, uint8_t else m_lcd_digits[4] &= ~(1<(m_lcd_digits[4],7,3,5,2,0,1,4,6)); + m_digit[4] = bitswap<8>(m_lcd_digits[4],7,3,5,2,0,1,4,6); } break; } @@ -96,7 +96,7 @@ void alesis_state::update_lcd_symbols(bitmap_ind16 &bitmap, uint8_t pos, uint8_t case 0: if (y == 7) { - output().set_value("tempo", state); + m_tempo = state; } else if (y < 7) { @@ -105,13 +105,13 @@ void alesis_state::update_lcd_symbols(bitmap_ind16 &bitmap, uint8_t pos, uint8_t else m_lcd_digits[3] &= ~(1<(m_lcd_digits[3],7,3,5,2,0,1,4,6)); + m_digit[3] = bitswap<8>(m_lcd_digits[3],7,3,5,2,0,1,4,6); } break; case 1: if (y == 7) { - output().set_value("page", state); + m_page = state; } else if (y < 7) { @@ -120,46 +120,46 @@ void alesis_state::update_lcd_symbols(bitmap_ind16 &bitmap, uint8_t pos, uint8_t else m_lcd_digits[2] &= ~(1<(m_lcd_digits[2],7,3,5,2,0,1,4,6)); + m_digit[2] = bitswap<8>(m_lcd_digits[2],7,3,5,2,0,1,4,6); } break; case 2: switch(y) { - case 0: output().set_value("step_edit", state); break; - case 1: output().set_value("swing_off", state); break; - case 2: output().set_value("swing_62", state); break; - case 3: output().set_value("click_l1", state); break; - case 4: output().set_value("click_note", state); break; - case 5: output().set_value("click_l2", state); break; - case 6: output().set_value("click_3", state); break; - case 7: output().set_value("backup", state); break; + m_step_edit = state; break; + m_swing_off = state; break; + m_swing_62 = state; break; + m_click_l1 = state; break; + m_click_note = state; break; + m_click_l2 = state; break; + m_click_3 = state; break; + m_backup = state; break; } break; case 3: switch(y) { - case 0: output().set_value("drum_set", state); break; - case 1: output().set_value("swing", state); break; - case 2: output().set_value("swing_58", state); break; - case 3: output().set_value("click_off", state); break; - case 4: output().set_value("click", state); break; - case 5: output().set_value("quantize_off", state); break; - case 6: output().set_value("quantize_3", state); break; - case 7: output().set_value("midi_setup", state); break; + m_drum_set = state; break; + m_swing = state; break; + m_swing_58 = state; break; + m_click_off = state; break; + m_click = state; break; + m_quantize_off = state; break; + m_quantize_3 = state; break; + m_midi_setup = state; break; } break; case 4: switch(y) { - case 0: output().set_value("record_setup", state); break; - case 1: output().set_value("quantize", state); break; - case 2: output().set_value("swing_54", state); break; - case 3: output().set_value("quantize_l1", state); break; - case 4: output().set_value("quantize_l2", state); break; - case 5: output().set_value("quantize_l3", state); break; - case 6: output().set_value("quantize_note", state); break; - case 7: output().set_value("setup", state); break; + m_record_setup = state; break; + m_quantize = state; break; + m_swing_54 = state; break; + m_quantize_l1 = state; break; + m_quantize_l2 = state; break; + m_quantize_l3 = state; break; + m_quantize_note = state; break; + m_setup = state; break; } break; } -- cgit v1.2.3