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()
{
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)

View File

@ -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
output_finder<1> m_knockers; // only used by qbert
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<u8[]> m_laserdisc_audio_buffer;
uint16_t m_laserdisc_audio_address;
int16_t m_laserdisc_last_samples[2];
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<u8[]> 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]{};
};