diff options
author | 2017-12-12 20:41:38 +0300 | |
---|---|---|
committer | 2017-12-22 04:39:14 +0300 | |
commit | 7e7f2fafd0cd75e1b4771d6b7bb03e88684f19d5 (patch) | |
tree | e0300d031bccad4683a61cc95dcdf3f5a0c7cd8d /src/emu/debug/debugcmd.cpp | |
parent | bb0de21e6755b8508b7f002bc15da56bfca68506 (diff) |
rewind implementation fixes and improvements
- reset scheduler savestate to what it was for years before rewind
-- changing saved variables should be done after thorough testing. right now, adding some vars breaks some machines, adding other vars breaks others
- switch to megabyte-wise capacity
-- savestate size greatly differs between machines, relying on state count is unstable
- switch to internal indexing
-- no longer depends on inaccurate machine time
- rewind accelerator key in debugger (Ctrl+F11)
- report capacity hit (once), with some useful info
- make error reports saner
- mention rewind and rewind_capacity in the docs
Diffstat (limited to 'src/emu/debug/debugcmd.cpp')
-rw-r--r-- | src/emu/debug/debugcmd.cpp | 25 |
1 files changed, 10 insertions, 15 deletions
diff --git a/src/emu/debug/debugcmd.cpp b/src/emu/debug/debugcmd.cpp index c3b794fd525..c14d74a4299 100644 --- a/src/emu/debug/debugcmd.cpp +++ b/src/emu/debug/debugcmd.cpp @@ -1646,21 +1646,16 @@ void debugger_commands::execute_stateload(int ref, const std::vector<std::string void debugger_commands::execute_rewind(int ref, const std::vector<std::string> ¶ms) { - if (!m_machine.save().rewind()->enabled()) - { - m_console.printf("Rewind not enabled\n"); - return; - } - - m_machine.rewind_step(); - - // clear all PC & memory tracks - for (device_t &device : device_iterator(m_machine.root_device())) - { - device.debug()->track_pc_data_clear(); - device.debug()->track_mem_data_clear(); - } - m_console.printf("Rewind step attempted. Please refer to window message popup for results.\n"); + bool success = m_machine.rewind_step(); + if (success) + // clear all PC & memory tracks + for (device_t &device : device_iterator(m_machine.root_device())) + { + device.debug()->track_pc_data_clear(); + device.debug()->track_mem_data_clear(); + } + else + m_console.printf("Rewind error occured. See error.log for details.\n"); } |