summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/device.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/device.cpp')
-rw-r--r--src/emu/device.cpp11
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;