summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/diexec.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/diexec.cpp')
-rw-r--r--src/emu/diexec.cpp34
1 files changed, 20 insertions, 14 deletions
diff --git a/src/emu/diexec.cpp b/src/emu/diexec.cpp
index 49dee5f650e..799626fad3e 100644
--- a/src/emu/diexec.cpp
+++ b/src/emu/diexec.cpp
@@ -401,20 +401,6 @@ void device_execute_interface::interface_post_start()
if (!m_icountptr)
throw emu_fatalerror("m_icountptr never initialized!");
- // register for save states
- device().save_item(NAME(m_suspend));
- device().save_item(NAME(m_nextsuspend));
- device().save_item(NAME(m_eatcycles));
- device().save_item(NAME(m_nexteatcycles));
- device().save_item(NAME(m_trigger));
- device().save_item(NAME(m_totalcycles));
- device().save_item(NAME(m_localtime));
-
- // it's more efficient and causes less clutter to save these this way
- device().save_item(STRUCT_MEMBER(m_input, m_stored_vector));
- device().save_item(STRUCT_MEMBER(m_input, m_curvector));
- device().save_item(STRUCT_MEMBER(m_input, m_curstate));
-
// fill in the input states and IRQ callback information
for (int line = 0; line < std::size(m_input); line++)
m_input[line].start(*this, line);
@@ -508,6 +494,26 @@ void device_execute_interface::interface_clock_changed()
//-------------------------------------------------
+// interface_register_save - register items for
+// saving
+//-------------------------------------------------
+
+void device_execute_interface::interface_register_save(save_registrar &save)
+{
+ // put execute items in their own container
+ save_registrar(save, "execute")
+ .reg(NAME(m_suspend))
+ .reg(NAME(m_nextsuspend))
+ .reg(NAME(m_eatcycles))
+ .reg(NAME(m_nexteatcycles))
+ .reg(NAME(m_trigger))
+ .reg(NAME(m_totalcycles))
+ .reg(NAME(m_localtime))
+ .reg(NAME(m_input));
+}
+
+
+//-------------------------------------------------
// standard_irq_callback_member - IRQ acknowledge
// callback; handles HOLD_LINE case and signals
// to the debugger