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.cpp48
1 files changed, 43 insertions, 5 deletions
diff --git a/src/emu/device.cpp b/src/emu/device.cpp
index 51088b02d4a..edcfa116562 100644
--- a/src/emu/device.cpp
+++ b/src/emu/device.cpp
@@ -606,11 +606,6 @@ void device_t::start()
debug_setup();
}
- // register our save states
- save_item(NAME(m_clock));
- save_item(NAME(m_unscaled_clock));
- save_item(NAME(m_clock_scale));
-
// have the views register their state
if (!m_viewlist.empty())
osd_printf_verbose("%s: Registering %d views\n", m_tag, int(m_viewlist.size()));
@@ -696,6 +691,27 @@ void device_t::post_load()
//-------------------------------------------------
+// register_save - tell the device and its
+// interfaces to register their save states
+//-------------------------------------------------
+
+void device_t::register_save(save_registrar &save)
+{
+ // register our save states
+ save.reg(NAME(m_clock))
+ .reg(NAME(m_unscaled_clock))
+ .reg(NAME(m_clock_scale));
+
+ // notify the interface
+ for (device_interface &intf : interfaces())
+ intf.interface_register_save(save);
+
+ // notify the device
+ device_register_save(save);
+}
+
+
+//-------------------------------------------------
// notify_clock_changed - notify all interfaces
// that the clock has changed
//-------------------------------------------------
@@ -842,6 +858,17 @@ void device_t::device_post_load()
//-------------------------------------------------
+// device_register_save - called after startup
+// to register any state to be saved
+//-------------------------------------------------
+
+void device_t::device_register_save(save_registrar &save)
+{
+ // do nothing by default
+}
+
+
+//-------------------------------------------------
// device_clock_changed - called when the
// device clock is altered in any way; designed
// to be overridden by the actual device
@@ -1167,6 +1194,17 @@ void device_interface::interface_post_load()
//-------------------------------------------------
+// interface_register_save - called after startup
+// to register any state to be saved
+//-------------------------------------------------
+
+void device_interface::interface_register_save(save_registrar &save)
+{
+ // do nothing by default
+}
+
+
+//-------------------------------------------------
// interface_clock_changed - called when the
// device clock is altered in any way; designed
// to be overridden by the actual device