qbert: used output finder for knocker.

This commit is contained in:
Robbbert 2022-03-05 23:15:33 +11:00
parent c9a9e91fcd
commit 160c540b47
2 changed files with 27 additions and 23 deletions

View File

@ -226,6 +226,7 @@ VBlank duration: 1/VSYNC * (16/256) = 1017.6 us
void gottlieb_state::machine_start() void gottlieb_state::machine_start()
{ {
m_leds.resolve(); m_leds.resolve();
m_knockers.resolve();
/* register for save states */ /* register for save states */
save_item(NAME(m_joystick_select)); save_item(NAME(m_joystick_select));
save_item(NAME(m_track)); save_item(NAME(m_track));
@ -338,7 +339,7 @@ void gottlieb_state::qbert_output_w(u8 data)
general_output_w(data & ~0x20); general_output_w(data & ~0x20);
// bit 5 controls the knocker // bit 5 controls the knocker
qbert_knocker(data >> 5 & 1); qbert_knocker(BIT(data, 5));
} }
void gottlieb_state::qbertqub_output_w(u8 data) 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) 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 // start sound on rising edge
if (knock & ~m_knocker_prev) if (knock & ~m_knocker_prev)

View File

@ -47,6 +47,7 @@ public:
, m_track_x(*this, "TRACKX") , m_track_x(*this, "TRACKX")
, m_track_y(*this, "TRACKY") , m_track_y(*this, "TRACKY")
, m_leds(*this, "led%u", 0U) , m_leds(*this, "led%u", 0U)
, m_knockers(*this, "knocker%d", 0U)
{ } { }
void gottlieb_core(machine_config &config); void gottlieb_core(machine_config &config);
@ -146,28 +147,29 @@ private:
optional_ioport m_track_x; optional_ioport m_track_x;
optional_ioport m_track_y; optional_ioport m_track_y;
output_finder<3> m_leds; // only used by reactor output_finder<3> m_leds; // only used by reactor
output_finder<1> m_knockers; // only used by qbert
u8 m_knocker_prev; u8 m_knocker_prev = 0U;
u8 m_joystick_select; u8 m_joystick_select = 0U;
u8 m_track[2]; u8 m_track[2]{};
emu_timer *m_laserdisc_bit_timer; emu_timer *m_laserdisc_bit_timer = 0;
emu_timer *m_laserdisc_philips_timer; emu_timer *m_laserdisc_philips_timer = 0;
u8 m_laserdisc_select; u8 m_laserdisc_select = 0U;
u8 m_laserdisc_status; u8 m_laserdisc_status = 0U;
uint16_t m_laserdisc_philips_code; uint16_t m_laserdisc_philips_code = 0U;
std::unique_ptr<u8[]> m_laserdisc_audio_buffer; std::unique_ptr<u8[]> m_laserdisc_audio_buffer{};
uint16_t m_laserdisc_audio_address; uint16_t m_laserdisc_audio_address = 0U;
int16_t m_laserdisc_last_samples[2]; int16_t m_laserdisc_last_samples[2]{};
attotime m_laserdisc_last_time; attotime m_laserdisc_last_time;
attotime m_laserdisc_last_clock; attotime m_laserdisc_last_clock;
u8 m_laserdisc_zero_seen; u8 m_laserdisc_zero_seen = 0U;
u8 m_laserdisc_audio_bits; u8 m_laserdisc_audio_bits = 0U;
u8 m_laserdisc_audio_bit_count; u8 m_laserdisc_audio_bit_count = 0U;
u8 m_gfxcharlo; u8 m_gfxcharlo = 0U;
u8 m_gfxcharhi; u8 m_gfxcharhi = 0U;
u8 m_background_priority; u8 m_background_priority = 0U;
u8 m_spritebank; u8 m_spritebank = 0U;
u8 m_transparent0; u8 m_transparent0 = 0U;
tilemap_t *m_bg_tilemap; tilemap_t *m_bg_tilemap = 0;
double m_weights[4]; double m_weights[4]{};
}; };