From c1590b3a1bf66c264526cf6477128813c56c779c Mon Sep 17 00:00:00 2001 From: mart0258 Date: Tue, 9 Mar 2010 03:40:10 +0000 Subject: [PATCH] w32-Tasedit: Enable insert frames, improve greenZoneCount stability, TAS fastforward performance boost. --- src/drivers/win/res.rc | 6 +++--- src/drivers/win/tasedit.cpp | 5 ++++- src/drivers/win/taseditlib/taseditproj.cpp | 6 ++++-- src/movie.cpp | 13 +++++++++++-- 4 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/drivers/win/res.rc b/src/drivers/win/res.rc index fb504a20..4950595c 100644 --- a/src/drivers/win/res.rc +++ b/src/drivers/win/res.rc @@ -321,13 +321,13 @@ TASEDITCONTEXTMENUS MENU BEGIN POPUP "Stray" BEGIN - MENUITEM "Insert Frames", MENU_CONTEXT_STRAY_INSERTFRAMES, INACTIVE + MENUITEM "Insert Frames", MENU_CONTEXT_STRAY_INSERTFRAMES MENUITEM SEPARATOR MENUITEM "Truncate", ID_CONTEXT_STRAY_TRUNCATE END POPUP "Selected" BEGIN - MENUITEM "Insert Frame(s)", ID_CONTEXT_SELECTED_INSERTFRAMES, INACTIVE + MENUITEM "Insert Frame(s)", ID_CONTEXT_SELECTED_INSERTFRAMES MENUITEM "Delete Frame(s)", ID_CONTEXT_SELECTED_DELETEFRAMES MENUITEM SEPARATOR MENUITEM "Paste to New", ID_CONTEXT_SELECTED_PASTETONEW, INACTIVE @@ -1291,7 +1291,7 @@ BEGIN PUSHBUTTON ">",TASEDIT_FOWARD,391,25,26,14 PUSHBUTTON "<<",TASEDIT_REWIND_FULL,341,25,26,14 PUSHBUTTON ">>",TASEDIT_FOWARD_FULL,417,25,26,14 - GROUPBOX "Static",IDC_STATIC,335,11,120,176 + GROUPBOX "Frames",IDC_STATIC,335,11,120,176 GROUPBOX "Project Input Logs",IDC_STATIC,335,200,120,175 PUSHBUTTON "Record P1",IDC_BUTTON5,340,95,50,14,WS_DISABLED PUSHBUTTON "Record P2",IDC_BUTTON7,340,79,50,14,WS_DISABLED diff --git a/src/drivers/win/tasedit.cpp b/src/drivers/win/tasedit.cpp index d8ba48ab..62c3940d 100644 --- a/src/drivers/win/tasedit.cpp +++ b/src/drivers/win/tasedit.cpp @@ -395,6 +395,8 @@ static void InsertFrames() currMovieData.insertEmpty(*it,1); } + if (currFrameCounter>=*selectionFrames.begin()) + JumpToFrame(*selectionFrames.begin()); InvalidateGreenZone(*selectionFrames.begin()); UpdateTasEdit(); RedrawList(); @@ -1175,7 +1177,8 @@ BOOL CALLBACK WndprocTasEdit(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar int frames; if(CWin32InputBox::GetInteger("Insert Frames", "How many frames?", frames, hwndDlg) == IDOK) { - currMovieData.insertEmpty(-1,frames); + currMovieData.insertEmpty(currFrameCounter,frames); + InvalidateGreenZone(currFrameCounter); RedrawList(); } } diff --git a/src/drivers/win/taseditlib/taseditproj.cpp b/src/drivers/win/taseditlib/taseditproj.cpp index c145faca..b52eecf4 100644 --- a/src/drivers/win/taseditlib/taseditproj.cpp +++ b/src/drivers/win/taseditlib/taseditproj.cpp @@ -89,11 +89,13 @@ bool TASEDIT_PROJECT::LoadProject(std::string PFN) LoadFM2(currMovieData, &ifs, INT_MAX, false); LoadSubtitles(currMovieData); - char asdf; - ifs.get(asdf); // TODO: Add main branch name. + char branchname; + ifs.get(branchname); // TODO: Add main branch name. currMovieData.loadGreenzone(&ifs, true); poweron(true); + currFrameCounter = currMovieData.greenZoneCount; + currMovieData.TryDumpIncremental(); ifs.close(); diff --git a/src/movie.cpp b/src/movie.cpp index 32c7cc2e..e15c3438 100644 --- a/src/movie.cpp +++ b/src/movie.cpp @@ -124,6 +124,12 @@ void MovieData::TryDumpIncremental() if(movieMode == MOVIEMODE_TASEDIT) { //only log the savestate if we are appending to the green zone + if (turbo && pauseframe!=-1 && currFrameCountercurrFrameCounter && ((currFrameCounter-pauseframe)&0xff)) + return; + MovieData::dumpSavestateTo(&currMovieData.records[currFrameCounter].savestate,Z_DEFAULT_COMPRESSION); + } if(currFrameCounter == currMovieData.greenZoneCount) { if(currFrameCounter == (int)currMovieData.records.size() || currMovieData.records.size()==0) @@ -135,9 +141,12 @@ void MovieData::TryDumpIncremental() currMovieData.greenZoneCount++; } else if (currFrameCounter < currMovieData.greenZoneCount || !movie_readonly) { - if (turbo && pauseframe-256>currFrameCounter && ((currFrameCounter-pauseframe)&0xff)) - return; MovieData::dumpSavestateTo(&currMovieData.records[currFrameCounter].savestate,Z_DEFAULT_COMPRESSION); + } else if (currFrameCounter > currMovieData.greenZoneCount && currMovieData.greenZoneCount