summaryrefslogtreecommitdiffstats
path: root/src/emu/debug/debugcmd.cpp
diff options
context:
space:
mode:
author vadosnaprimer <feos-theos@yandex.ru>2017-12-12 20:41:38 +0300
committer vadosnaprimer <feos-theos@yandex.ru>2017-12-22 04:39:14 +0300
commit7e7f2fafd0cd75e1b4771d6b7bb03e88684f19d5 (patch)
treee0300d031bccad4683a61cc95dcdf3f5a0c7cd8d /src/emu/debug/debugcmd.cpp
parentbb0de21e6755b8508b7f002bc15da56bfca68506 (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.cpp25
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> &params)
{
- 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");
}