From 6bd9caa4b40db8c7517de8643f34382a414dd259 Mon Sep 17 00:00:00 2001 From: dinkc64 Date: Tue, 16 Jul 2019 00:33:27 -0400 Subject: [PATCH] derps --- src/burner/win32/replay.cpp | 16 ++++++++++++---- src/burner/win32/run.cpp | 17 ++++++++++++----- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/burner/win32/replay.cpp b/src/burner/win32/replay.cpp index f003d436a..b70f3fd45 100644 --- a/src/burner/win32/replay.cpp +++ b/src/burner/win32/replay.cpp @@ -285,9 +285,9 @@ INT32 ReplayInput() PrintInputs(); } -#if 1 +#if 0 if ( (GetCurrentFrame()-nStartFrame) == (nTotalFrames-1) ) { - bRunPause = 1; // pause at the last recorded frame? *needs testing* + bRunPause = 1; // pause at the last recorded frame? causes weird issues when pauses. investigate later.. -dink } #endif @@ -374,6 +374,8 @@ INT32 StartRecord() fwrite(&nZero, 1, 4, fp); // undo count fwrite(&nMovieVersion, 1, 4, fp); // ThisMovieVersion + + memset(&MovieInfo, 0, sizeof(MovieInfo)); if (nMovieVersion >= 0x0401) { bprintf(0, _T("nMovieVersion %X .. writing date stuff!\n"), nMovieVersion); time_t nLocalTime = time(NULL); @@ -522,6 +524,8 @@ INT32 StartReplay(const TCHAR* szFileName) // const char* szFileName = NULL nEndFrame += nStartFrame; fread(&nReplayUndoCount, 1, 4, fp); fread(&nThisMovieVersion, 1, 4, fp); + + memset(&MovieInfo, 0, sizeof(MovieInfo)); if (nThisMovieVersion >= 0x0401) { bprintf(0, _T("loading ext movie version!!\n")); fread(&MovieInfo, 1, sizeof(MovieInfo), fp); @@ -701,6 +705,7 @@ void StopReplay() } nReplayStatus = 0; nStartFrame = 0; + memset(&MovieInfo, 0, sizeof(MovieInfo)); CheckRedraw(); MenuEnableItems(); } @@ -980,6 +985,7 @@ void DisplayReplayProperties(HWND hDlg, bool bClear) fread(&nThisMovieVersion, 1, 4, fd); + memset(&MovieInfo, 0, sizeof(MovieInfo)); if (nThisMovieVersion >= 0x0401) { fread(&MovieInfo, 1, sizeof(MovieInfo), fd); bprintf(0, _T("Movie Version %X\n"), nThisMovieVersion); @@ -1039,7 +1045,7 @@ void DisplayReplayProperties(HWND hDlg, bool bClear) char szLengthString[32]; char szUndoCountString[32]; char szRecordedFrom[32]; - char szRecordedTime[32]; + char szRecordedTime[32] = { 0 }; sprintf(szFramesString, "%d", nFrames); sprintf(szLengthString, "%02d:%02d:%02d", nHours, nMinutes % 60, nSeconds % 60); @@ -1050,7 +1056,9 @@ void DisplayReplayProperties(HWND hDlg, bool bClear) else sprintf(szRecordedFrom, "%s", (bStartFromReset) ? "Power-On" : "Savestate"); - sprintf(szRecordedTime, "%02d/%02d/%04d @ %02d:%02d:%02d%s", MovieInfo.month+1, MovieInfo.day, 2000 + (MovieInfo.year%100), (MovieInfo.hour>12) ? MovieInfo.hour-12 : MovieInfo.hour, MovieInfo.minute, MovieInfo.second, (MovieInfo.hour>12) ? "pm" : "am"); + if (nThisMovieVersion >= 0x0401) { + sprintf(szRecordedTime, "%02d/%02d/%04d @ %02d:%02d:%02d%s", MovieInfo.month+1, MovieInfo.day, 2000 + (MovieInfo.year%100), (MovieInfo.hour>12) ? MovieInfo.hour-12 : MovieInfo.hour, MovieInfo.minute, MovieInfo.second, (MovieInfo.hour>12) ? "pm" : "am"); + } SetDlgItemTextA(hDlg, IDC_LENGTH, szLengthString); SetDlgItemTextA(hDlg, IDC_FRAMES, szFramesString); diff --git a/src/burner/win32/run.cpp b/src/burner/win32/run.cpp index 9da21184d..5ec4659b5 100644 --- a/src/burner/win32/run.cpp +++ b/src/burner/win32/run.cpp @@ -222,9 +222,13 @@ static int RunGetNextSound(int bDraw) return 0; } + int bBrokeOutOfFFWD = 0; if (bAppDoFast) { // do more frames for (int i = 0; i < nFastSpeed; i++) { - if (!bAppDoFast) break; // break out if no longer in ffwd + if (!bAppDoFast) { + bBrokeOutOfFFWD = 1; // recording ended, etc. + break; + } // break out if no longer in ffwd #ifdef INCLUDE_AVI_RECORDING if (nAviStatus) { // Render frame with sound @@ -239,17 +243,20 @@ static int RunGetNextSound(int bDraw) } } - // Render frame with sound - pBurnSoundOut = nAudNextSound; - RunFrame(bDraw, 0); + if (!bBrokeOutOfFFWD) { + // Render frame with sound + pBurnSoundOut = nAudNextSound; + RunFrame(bDraw, 0); + } if (WaveLog != NULL && pBurnSoundOut != NULL) { // log to the file fwrite(pBurnSoundOut, 1, nBurnSoundLen << 2, WaveLog); pBurnSoundOut = NULL; } - if (bAppDoStep) { + if (bAppDoStep || (bBrokeOutOfFFWD && bRunPause)) { memset(nAudNextSound, 0, nAudSegLen << 2); // Write silence into the buffer + AudBlankSound(); } bAppDoStep = 0; // done one step