Added the feature to allow creating a TAS movie from a save state. To activate this function, start the game and use the "Start recording" command. A save state will be created at that point in time and the emulator will start recording. This results in two files, a .dtm containing the movie and a .dtm.sav which is the save state.

Changes:
* Allow events to be scheduled when the emulator is not running.  This allows the save state event to be added before the emulator starts.
* Removed the Audio back-end init flag from the save state.  This value should not be saved as it is not data relevant to guest machine.
* Allow a recording to be started at any time (apart from when a recording is already being made).
* Updated the status bar and title bar when an on-screen message is shown
* Removed the saving of PEToken from the save state as the FIFO will save this information
* Added a couple Pixel Engine interrupt states to the save state
* Added the copyright notice to the GCPadStatus.h file.

This function is preliminary.  Let us know of any bugs you find or any UI quirks.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7175 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
skidau
2011-02-15 09:07:55 +00:00
parent cf21251802
commit fb4c82fb48
11 changed files with 100 additions and 21 deletions

View File

@ -265,7 +265,7 @@ void SaveStateCallback(u64 userdata, int cyclesLate)
saveData->buffer = buffer;
saveData->size = sz;
if (Frame::IsRecordingInput() || Frame::IsPlayingInput())
if ((Frame::IsRecordingInput() || Frame::IsPlayingInput()) && !Frame::IsRecordingInputFromSaveState())
Frame::SaveRecording(StringFromFormat("%s.dtm", cur_filename.c_str()).c_str());
Core::DisplayMessage("Saving State...", 1000);
@ -390,7 +390,7 @@ void LoadStateCallback(u64 userdata, int cyclesLate)
if (File::Exists(StringFromFormat("%s.dtm", cur_filename.c_str()).c_str()))
Frame::LoadInput(StringFromFormat("%s.dtm", cur_filename.c_str()).c_str());
else
else if (!Frame::IsRecordingInputFromSaveState())
Frame::EndPlayInput();
state_op_in_progress = false;