fix recording from save state
This commit is contained in:
parent
a366521d13
commit
7f624cda10
|
@ -217,6 +217,11 @@ bool IsJustStartingRecordingInputFromSaveState()
|
||||||
return IsRecordingInputFromSaveState() && g_currentFrame == 0;
|
return IsRecordingInputFromSaveState() && g_currentFrame == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool IsJustStartingPlayingInputFromSaveState()
|
||||||
|
{
|
||||||
|
return tmpHeader.bFromSaveState && g_currentFrame == 1;
|
||||||
|
}
|
||||||
|
|
||||||
bool IsPlayingInput()
|
bool IsPlayingInput()
|
||||||
{
|
{
|
||||||
return (g_playMode == MODE_PLAYING);
|
return (g_playMode == MODE_PLAYING);
|
||||||
|
@ -287,6 +292,13 @@ bool BeginRecordingInput(int controllers)
|
||||||
if(g_playMode != MODE_NONE || controllers == 0)
|
if(g_playMode != MODE_NONE || controllers == 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
g_numPads = controllers;
|
||||||
|
g_currentFrame = g_totalFrames = 0;
|
||||||
|
g_currentLagCount = g_totalLagCount = 0;
|
||||||
|
g_currentInputCount = g_totalInputCount = 0;
|
||||||
|
g_recordingStartTime = Common::Timer::GetLocalTimeSinceJan1970();
|
||||||
|
g_rerecords = 0;
|
||||||
|
|
||||||
if (Core::IsRunning())
|
if (Core::IsRunning())
|
||||||
{
|
{
|
||||||
if(File::Exists(tmpStateFilename))
|
if(File::Exists(tmpStateFilename))
|
||||||
|
@ -295,13 +307,6 @@ bool BeginRecordingInput(int controllers)
|
||||||
State::SaveAs(tmpStateFilename.c_str());
|
State::SaveAs(tmpStateFilename.c_str());
|
||||||
g_bRecordingFromSaveState = true;
|
g_bRecordingFromSaveState = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_numPads = controllers;
|
|
||||||
g_currentFrame = g_totalFrames = 0;
|
|
||||||
g_currentLagCount = g_totalLagCount = 0;
|
|
||||||
g_currentInputCount = g_totalInputCount = 0;
|
|
||||||
g_recordingStartTime = Common::Timer::GetLocalTimeSinceJan1970();
|
|
||||||
g_rerecords = 0;
|
|
||||||
g_playMode = MODE_RECORDING;
|
g_playMode = MODE_RECORDING;
|
||||||
|
|
||||||
delete [] tmpInput;
|
delete [] tmpInput;
|
||||||
|
@ -548,6 +553,8 @@ bool PlayInput(const char *filename)
|
||||||
if(File::Exists(stateFilename))
|
if(File::Exists(stateFilename))
|
||||||
Core::SetStateFileName(stateFilename);
|
Core::SetStateFileName(stateFilename);
|
||||||
g_bRecordingFromSaveState = true;
|
g_bRecordingFromSaveState = true;
|
||||||
|
Movie::LoadInput(filename);
|
||||||
|
g_currentFrame = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TODO: Put this verification somewhere we have the gameID of the played game
|
/* TODO: Put this verification somewhere we have the gameID of the played game
|
||||||
|
@ -877,6 +884,7 @@ void EndPlayInput(bool cont)
|
||||||
g_currentByte = 0;
|
g_currentByte = 0;
|
||||||
g_playMode = MODE_NONE;
|
g_playMode = MODE_NONE;
|
||||||
Core::DisplayMessage("Movie End.", 2000);
|
Core::DisplayMessage("Movie End.", 2000);
|
||||||
|
tmpHeader.bFromSaveState = 0;
|
||||||
// we don't clear these things because otherwise we can't resume playback if we load a movie state later
|
// we don't clear these things because otherwise we can't resume playback if we load a movie state later
|
||||||
//g_totalFrames = g_totalBytes = 0;
|
//g_totalFrames = g_totalBytes = 0;
|
||||||
//delete tmpInput;
|
//delete tmpInput;
|
||||||
|
|
|
@ -113,6 +113,7 @@ bool IsAutoFiring();
|
||||||
bool IsRecordingInput();
|
bool IsRecordingInput();
|
||||||
bool IsRecordingInputFromSaveState();
|
bool IsRecordingInputFromSaveState();
|
||||||
bool IsJustStartingRecordingInputFromSaveState();
|
bool IsJustStartingRecordingInputFromSaveState();
|
||||||
|
bool IsJustStartingPlayingInputFromSaveState();
|
||||||
bool IsPlayingInput();
|
bool IsPlayingInput();
|
||||||
bool IsReadOnly();
|
bool IsReadOnly();
|
||||||
u64 GetRecordingStartTime();
|
u64 GetRecordingStartTime();
|
||||||
|
|
|
@ -413,7 +413,7 @@ void LoadAs(const std::string& filename)
|
||||||
Core::DisplayMessage(StringFromFormat("Loaded state from %s", filename.c_str()).c_str(), 2000);
|
Core::DisplayMessage(StringFromFormat("Loaded state from %s", filename.c_str()).c_str(), 2000);
|
||||||
if (File::Exists(filename + ".dtm"))
|
if (File::Exists(filename + ".dtm"))
|
||||||
Movie::LoadInput((filename + ".dtm").c_str());
|
Movie::LoadInput((filename + ".dtm").c_str());
|
||||||
else if (!Movie::IsJustStartingRecordingInputFromSaveState())
|
else if (!Movie::IsJustStartingRecordingInputFromSaveState() && !Movie::IsJustStartingPlayingInputFromSaveState())
|
||||||
Movie::EndPlayInput(false);
|
Movie::EndPlayInput(false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue