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     - - - - - - - - - -
ItemDescription
ButtonTODO
Button
Button
Button
Button
Button
Button
-
+ + +

The dialog items are explained in the following two tables.

+ +

Top row (left to right)

+ + + + + +
ItemDescription
Current stateShows the currently loaded state
'Time Line' sliderShows the position of the current state in the recorded timeline. You can drag the slider with the mouse to select a state.
Total statesShows the total number of save states in the Time Machine
+

Bottom row (left to right)

+ + + + + + + + + + +
ItemDescription
Current timeShows the time of the currently selected status, relative to the first one
'Rewind All' buttonNavigates back to the begin of the timeline
'Rewind One' buttonNavigates back by one state
'Continue' buttonExits the dialog and continues emulation.
Navigation infoInforms about the interval of the user's last Time Machine navigation. The interval can vary if the timeline is compressed.
'Unwind One' buttonNavigates forward by one state
'Unwind All' buttonNavigates forward to the end of the timeline
Total timeShows 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;