diff options
Diffstat (limited to 'src/emu/device.cpp')
-rw-r--r-- | src/emu/device.cpp | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/src/emu/device.cpp b/src/emu/device.cpp index 1940c619455..272df837cd4 100644 --- a/src/emu/device.cpp +++ b/src/emu/device.cpp @@ -368,7 +368,7 @@ void device_t::set_unscaled_clock(u32 clock, bool sync_on_new_clock_domain) return; m_unscaled_clock = clock; - m_clock = m_unscaled_clock * m_clock_scale; + m_clock = m_unscaled_clock * m_clock_scale + 0.5; m_attoseconds_per_clock = (m_clock == 0) ? 0 : HZ_TO_ATTOSECONDS(m_clock); // recalculate all derived clocks @@ -393,7 +393,7 @@ void device_t::set_clock_scale(double clockscale) return; m_clock_scale = clockscale; - m_clock = m_unscaled_clock * m_clock_scale; + m_clock = m_unscaled_clock * m_clock_scale + 0.5; m_attoseconds_per_clock = (m_clock == 0) ? 0 : HZ_TO_ATTOSECONDS(m_clock); // recalculate all derived clocks @@ -544,11 +544,10 @@ void device_t::start() // complain if nothing was registered by the device state_registrations = machine().save().registration_count() - state_registrations; device_execute_interface *exec; - device_sound_interface *sound; - if (state_registrations == 0 && (interface(exec) || interface(sound)) && type() != SPEAKER) + if ((state_registrations == 0) && interface(exec)) { logerror("Device did not register any state to save!\n"); - if ((machine().system().flags & MACHINE_SUPPORTS_SAVE) != 0) + if (!(type().emulation_flags() & flags::SAVE_UNSUPPORTED)) fatalerror("Device '%s' did not register any state to save!\n", tag()); } @@ -646,7 +645,7 @@ void device_t::pre_save() void device_t::post_load() { // recompute clock-related parameters if something changed - u32 const scaled_clock = m_unscaled_clock * m_clock_scale; + u32 const scaled_clock = m_unscaled_clock * m_clock_scale + 0.5; if (m_clock != scaled_clock) { m_clock = scaled_clock; |