diff options
Diffstat (limited to 'src/devices/machine/meters.cpp')
-rw-r--r-- | src/devices/machine/meters.cpp | 90 |
1 files changed, 20 insertions, 70 deletions
diff --git a/src/devices/machine/meters.cpp b/src/devices/machine/meters.cpp index cf36ff75177..93ab6fd7fdc 100644 --- a/src/devices/machine/meters.cpp +++ b/src/devices/machine/meters.cpp @@ -1,11 +1,10 @@ // license:BSD-3-Clause // copyright-holders:James Wallace -/////////////////////////////////////////////////////////////////////////// -// // -// Electro mechanical meters // -// // -// // -/////////////////////////////////////////////////////////////////////////// +/********************************************************************** + + Electromechanical Meter device + +**********************************************************************/ #include "emu.h" #include "meters.h" @@ -30,19 +29,17 @@ meters_device::meters_device(const machine_config &mconfig, const char *tag, dev void meters_device::device_start() { - if ( m_number_mtr > MAXMECHMETERS ) + if (m_number_mtr > MAXMECHMETERS) m_number_mtr = MAXMECHMETERS; - for ( int i = 0; i < m_number_mtr; i++ ) + for (int i = 0; i < m_number_mtr; i++) { m_meter_info[i].reacttime = METERREACTTIME; m_meter_info[i].state = 0; m_meter_info[i].count = 0; m_meter_info[i].on = 0; - m_meter_info[i].meter_timer = timer_alloc(i); - m_meter_info[i].meter_timer->reset(); + m_meter_info[i].meter_timer = timer_alloc(FUNC(meters_device::count_tick), this); - //save_item(NAME(m_meter_info[i].reacttime), i); //enable if void ReactTime(int id, int32_t cycles) gets used save_item(NAME(m_meter_info[i].state), i); save_item(NAME(m_meter_info[i].count), i); save_item(NAME(m_meter_info[i].on), i); @@ -58,89 +55,42 @@ void meters_device::device_reset() } //------------------------------------------------- -// device_timer - device-specific timer events +// count_tick - advance the meter's counter //------------------------------------------------- -void meters_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) +TIMER_CALLBACK_MEMBER(meters_device::count_tick) { - if (id >= m_number_mtr) - throw emu_fatalerror("Unknown id in meters_device::device_timer"); - m_meter_info[param].count++; } -/////////////////////////////////////////////////////////////////////////// - -int meters_device::GetNumberMeters(void) // currently unused -{ - return m_number_mtr; -} - -/////////////////////////////////////////////////////////////////////////// - -void meters_device::Setcount(int id, int32_t count) // currently unused -{ - if ( id >= m_number_mtr ) - return; - - m_meter_info[id].count = count; -} - -/////////////////////////////////////////////////////////////////////////// - -int32_t meters_device::Getcount(int id) // currently unused -{ - int32_t result = 0; - - if ( id < m_number_mtr ) - result = m_meter_info[id].count; - - return result; -} - -/////////////////////////////////////////////////////////////////////////// - -void meters_device::ReactTime(int id, int32_t cycles) // currently unused -{ - if ( id >= m_number_mtr ) - return; - - m_meter_info[id].reacttime = cycles; -} - -/////////////////////////////////////////////////////////////////////////// - -int meters_device::GetActivity(int id) +int meters_device::get_activity(int id) { return m_meter_info[id].on; } -/////////////////////////////////////////////////////////////////////////// - int meters_device::update(int id, int state) { - int res = 0; - - if ( id >= m_number_mtr ) - return res; + if (id >= m_number_mtr) + return 0; - state = state?1:0; + state = state ? 1 : 0; - if ( m_meter_info[id].state != state ) + if (m_meter_info[id].state != state) { // meter state is changing m_meter_info[id].state = state; - if ( state ) + if (state) { - m_meter_info[id].on =1; + m_meter_info[id].on = true; m_meter_info[id].meter_timer->adjust(attotime::from_seconds(m_meter_info[id].reacttime), id); } else { - m_meter_info[id].on =0; - m_meter_info[id].meter_timer->adjust(attotime::never, id); + m_meter_info[id].on = false; + m_meter_info[id].meter_timer->adjust(attotime::never); } } + return m_meter_info[id].on; } |