From 160c540b47072a48512fb4ac29166e14d1907d77 Mon Sep 17 00:00:00 2001 From: Robbbert Date: Sat, 5 Mar 2022 23:15:33 +1100 Subject: qbert: used output finder for knocker. --- src/mame/drivers/gottlieb.cpp | 6 ++++-- src/mame/includes/gottlieb.h | 46 ++++++++++++++++++++++--------------------- 2 files changed, 28 insertions(+), 24 deletions(-) diff --git a/src/mame/drivers/gottlieb.cpp b/src/mame/drivers/gottlieb.cpp index 71688beda09..24980ed7fb9 100644 --- a/src/mame/drivers/gottlieb.cpp +++ b/src/mame/drivers/gottlieb.cpp @@ -226,6 +226,7 @@ VBlank duration: 1/VSYNC * (16/256) = 1017.6 us void gottlieb_state::machine_start() { m_leds.resolve(); + m_knockers.resolve(); /* register for save states */ save_item(NAME(m_joystick_select)); save_item(NAME(m_track)); @@ -338,7 +339,7 @@ void gottlieb_state::qbert_output_w(u8 data) general_output_w(data & ~0x20); // bit 5 controls the knocker - qbert_knocker(data >> 5 & 1); + qbert_knocker(BIT(data, 5)); } void gottlieb_state::qbertqub_output_w(u8 data) @@ -658,7 +659,8 @@ void gottlieb_state::laserdisc_audio_process(int samplerate, int samples, const void gottlieb_state::qbert_knocker(u8 knock) { - output().set_value("knocker0", knock); + //output().set_value("knocker0", knock); + m_knockers[0] = knock ? 1 : 0; // start sound on rising edge if (knock & ~m_knocker_prev) diff --git a/src/mame/includes/gottlieb.h b/src/mame/includes/gottlieb.h index 0d81689e83e..19cd926cbf4 100644 --- a/src/mame/includes/gottlieb.h +++ b/src/mame/includes/gottlieb.h @@ -47,6 +47,7 @@ public: , m_track_x(*this, "TRACKX") , m_track_y(*this, "TRACKY") , m_leds(*this, "led%u", 0U) + , m_knockers(*this, "knocker%d", 0U) { } void gottlieb_core(machine_config &config); @@ -146,28 +147,29 @@ private: optional_ioport m_track_x; optional_ioport m_track_y; output_finder<3> m_leds; // only used by reactor - - u8 m_knocker_prev; - u8 m_joystick_select; - u8 m_track[2]; - emu_timer *m_laserdisc_bit_timer; - emu_timer *m_laserdisc_philips_timer; - u8 m_laserdisc_select; - u8 m_laserdisc_status; - uint16_t m_laserdisc_philips_code; - std::unique_ptr m_laserdisc_audio_buffer; - uint16_t m_laserdisc_audio_address; - int16_t m_laserdisc_last_samples[2]; + output_finder<1> m_knockers; // only used by qbert + + u8 m_knocker_prev = 0U; + u8 m_joystick_select = 0U; + u8 m_track[2]{}; + emu_timer *m_laserdisc_bit_timer = 0; + emu_timer *m_laserdisc_philips_timer = 0; + u8 m_laserdisc_select = 0U; + u8 m_laserdisc_status = 0U; + uint16_t m_laserdisc_philips_code = 0U; + std::unique_ptr m_laserdisc_audio_buffer{}; + uint16_t m_laserdisc_audio_address = 0U; + int16_t m_laserdisc_last_samples[2]{}; attotime m_laserdisc_last_time; attotime m_laserdisc_last_clock; - u8 m_laserdisc_zero_seen; - u8 m_laserdisc_audio_bits; - u8 m_laserdisc_audio_bit_count; - u8 m_gfxcharlo; - u8 m_gfxcharhi; - u8 m_background_priority; - u8 m_spritebank; - u8 m_transparent0; - tilemap_t *m_bg_tilemap; - double m_weights[4]; + u8 m_laserdisc_zero_seen = 0U; + u8 m_laserdisc_audio_bits = 0U; + u8 m_laserdisc_audio_bit_count = 0U; + u8 m_gfxcharlo = 0U; + u8 m_gfxcharhi = 0U; + u8 m_background_priority = 0U; + u8 m_spritebank = 0U; + u8 m_transparent0 = 0U; + tilemap_t *m_bg_tilemap = 0; + double m_weights[4]{}; }; -- cgit v1.2.3