diff --git a/docs/graphics/timemachine.png b/docs/graphics/timemachine.png
new file mode 100644
index 000000000..8b8c3d55f
Binary files /dev/null and b/docs/graphics/timemachine.png differ
diff --git a/docs/index.html b/docs/index.html
index a89ca6d67..f5910a5ac 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -1622,32 +1622,38 @@
- Rewind by one state (pauses emulation) |
+ Enter/Exit the Time Machine dialog |
+ t/Escape |
+ t/Escape |
+
+
+
+ Rewind by one state (enters the Time Machine dialog) |
Alt + Left arrow |
Cmd + Left arrow |
- Rewind by 10 states (pauses emulation) |
+ Rewind by 10 states (enters the Time Machine dialog) |
Shift-Alt + Left arrow |
Shift-Cmd + Left arrow |
- Rewind all states (pauses emulation) |
+ Rewind all states (enters the Time Machine dialog) |
Alt + Down arrow |
Cmd + Down arrow |
- Unwind by one state (pauses emulation) |
+ Unwind by one state (enters the Time Machine dialog) |
Alt + Right arrow |
Cmd + Right arrow |
- Unwind by 10 states (pauses emulation) |
+ Unwind by 10 states (enters the Time Machine dialog) |
Shift-Alt + Right arrow |
Shift-Cmd + Right arrow |
- Unwind all states (pauses emulation) |
+ Unwind all states (enters the Time Machine dialog) |
Alt + Up arrow |
Cmd + Up arrow |
@@ -1794,36 +1800,42 @@
Stella's 'Time Machine'
A special feature of Stella is the 'Time Machine' mode. In this mode, Stella
- automatically creates savestates in regular, user-defined intervals. You can then
- interrupt the current emulation and navigate back and forth within the timeline.
+ automatically creates savestates in regular, user-defined intervals. At any time,
+ the user can interrupt the current emulation and navigate back and forth
+ within the saved timeline.
This can be done either by using the Time Machine hotkeys described in
Hotkeys - Other Keys or by using the Time Machine
- dialog. To enter this dialog, either use one of the hotkeys or press 'T'.
+ dialog. This dialog is automatically entered when using one of the Time Machine
+ hotkeys. The hotkeys continue to function within the dialog.
Time Machine dialog:
-
-
- TODO: Screenshot |
- |
-
-
- Item | Description |
- Button | TODO |
- Button | |
- Button | |
- Button | |
- Button | |
- Button | |
- Button | |
-
- |
-
-
+ |
+
+ The dialog items are explained in the following two tables.
+
+ Top row (left to right)
+
+ Item | Description |
+ Current state | Shows the currently loaded state |
+ 'Time Line' slider | Shows the position of the current state in the recorded timeline. You can drag the slider with the mouse to select a state. |
+ Total states | Shows the total number of save states in the Time Machine |
+
+ Bottom row (left to right)
+
+ Item | Description |
+ Current time | Shows the time of the currently selected status, relative to the first one |
+ 'Rewind All' button | Navigates back to the begin of the timeline |
+ 'Rewind One' button | Navigates back by one state |
+ 'Continue' button | Exits the dialog and continues emulation. |
+ Navigation info | Informs about the interval of the user's last Time Machine navigation. The interval can vary if the timeline is compressed. |
+ 'Unwind One' button | Navigates forward by one state |
+ 'Unwind All' button | Navigates forward to the end of the timeline |
+ Total time | Shows the total time covered by the save states (aka 'Horizon') |
+
-
The 'Time Machine' mode can be configured by the user. For details see
- Developer Options - Time Machine dialog.
+ Developer Options - Time Machine tab.
diff --git a/src/gui/TimeMachineDialog.cxx b/src/gui/TimeMachineDialog.cxx
index 2011c5e89..2274e99d4 100644
--- a/src/gui/TimeMachineDialog.cxx
+++ b/src/gui/TimeMachineDialog.cxx
@@ -75,23 +75,6 @@ TimeMachineDialog::TimeMachineDialog(OSystem& osystem, DialogContainer& parent,
0b0110000110000110,
0
};
- static uInt32 REWIND_10[BUTTON_H] =
- {
- 0,
- 0b0000010000100110,
- 0b0000110001100110,
- 0b0001110011100110,
- 0b0011110111100110,
- 0b0111111111100110,
- 0b1111111111100110,
- 0b1111111111100110,
- 0b0111111111100110,
- 0b0011110111100110,
- 0b0001110011100110,
- 0b0000110001100110,
- 0b0000010000100110,
- 0
- };
static uInt32 REWIND_1[BUTTON_H] =
{
0,
@@ -126,23 +109,6 @@ TimeMachineDialog::TimeMachineDialog(OSystem& osystem, DialogContainer& parent,
0b0011100011000000,
0
};
- static uInt32 UNWIND_10[BUTTON_H] =
- {
- 0,
- 0b0110010000100000,
- 0b0110011000110000,
- 0b0110011100111000,
- 0b0110011110111100,
- 0b0110011111111110,
- 0b0110011111111111,
- 0b0110011111111111,
- 0b0110011111111110,
- 0b0110011110111100,
- 0b0110011100111000,
- 0b0110011000110000,
- 0b0110010000100000,
- 0
- };
static uInt32 UNWIND_ALL[BUTTON_H] =
{
0,
@@ -208,10 +174,6 @@ TimeMachineDialog::TimeMachineDialog(OSystem& osystem, DialogContainer& parent,
BUTTON_W, BUTTON_H, kRewindAll);
xpos += buttonWidth + BUTTON_GAP;
- myRewind10Widget = new ButtonWidget(this, font, xpos, ypos, buttonWidth, buttonHeight, REWIND_10,
- BUTTON_W, BUTTON_H, kRewind10);
- xpos += buttonWidth + BUTTON_GAP;
-
myRewind1Widget = new ButtonWidget(this, font, xpos, ypos, buttonWidth, buttonHeight, REWIND_1,
BUTTON_W, BUTTON_H, kRewind1);
xpos += buttonWidth + BUTTON_GAP*2;
@@ -224,10 +186,6 @@ TimeMachineDialog::TimeMachineDialog(OSystem& osystem, DialogContainer& parent,
BUTTON_W, BUTTON_H, kUnwind1);
xpos += buttonWidth + BUTTON_GAP;
- myUnwind10Widget = new ButtonWidget(this, font, xpos, ypos, buttonWidth, buttonHeight, UNWIND_10,
- BUTTON_W, BUTTON_H, kUnwind10);
- xpos += buttonWidth + BUTTON_GAP;
-
myUnwindAllWidget = new ButtonWidget(this, font, xpos, ypos, buttonWidth, buttonHeight, UNWIND_ALL,
BUTTON_W, BUTTON_H, kUnwindAll);
xpos = myUnwindAllWidget->getRight() + BUTTON_GAP * 3;
@@ -405,9 +363,7 @@ void TimeMachineDialog::handleWinds(Int32 numWinds)
myLastIdxWidget->setValue(r.getLastIdx());
// Enable/disable buttons
myRewindAllWidget->setEnabled(!r.atFirst());
- myRewind10Widget->setEnabled(!r.atFirst());
myRewind1Widget->setEnabled(!r.atFirst());
myUnwindAllWidget->setEnabled(!r.atLast());
- myUnwind10Widget->setEnabled(!r.atLast());
myUnwind1Widget->setEnabled(!r.atLast());
}
diff --git a/src/gui/TimeMachineDialog.hxx b/src/gui/TimeMachineDialog.hxx
index e842386d5..30f2e7c8c 100644
--- a/src/gui/TimeMachineDialog.hxx
+++ b/src/gui/TimeMachineDialog.hxx
@@ -61,10 +61,8 @@ class TimeMachineDialog : public Dialog
ButtonWidget* myPlayWidget;
ButtonWidget* myRewindAllWidget;
- ButtonWidget* myRewind10Widget;
ButtonWidget* myRewind1Widget;
ButtonWidget* myUnwind1Widget;
- ButtonWidget* myUnwind10Widget;
ButtonWidget* myUnwindAllWidget;
StaticTextWidget* myCurrentTimeWidget;