diff --git a/src/drivers/win/res.rc b/src/drivers/win/res.rc index 7b811e8b..9ae26396 100644 --- a/src/drivers/win/res.rc +++ b/src/drivers/win/res.rc @@ -283,7 +283,7 @@ BEGIN END POPUP "&Help" BEGIN - MENUITEM "&TASEdit Help", ID_HELP_TASEDITHELP + MENUITEM "&TAS Editor Help", ID_HELP_TASEDITHELP MENUITEM "&About", ID_HELP_ABOUT END END @@ -819,7 +819,7 @@ CAPTION "Enter New Input" FONT 8, "MS Sans Serif", 0, 0, 0x0 BEGIN PUSHBUTTON "Cancel",BTN_CANCEL,40,45,50,14 - CTEXT "Press a key",LBL_KEY_COMBO,47,14,90,12 + CTEXT "Press a key",LBL_KEY_COMBO,31,14,122,20 PUSHBUTTON "Clear",BTN_CLEAR,95,45,50,14 END @@ -1781,6 +1781,10 @@ BEGIN BOTTOMMARGIN, 191 END + "MAPINPUT", DIALOG + BEGIN + END + "MESSAGELOG", DIALOG BEGIN BOTTOMMARGIN, 184 @@ -1794,6 +1798,10 @@ BEGIN BOTTOMMARGIN, 201 END + "NEWINPUT", DIALOG + BEGIN + END + "PALCONFIG", DIALOG BEGIN LEFTMARGIN, 10 diff --git a/src/drivers/win/resource.h b/src/drivers/win/resource.h index 4ad20cec..5080c17a 100644 --- a/src/drivers/win/resource.h +++ b/src/drivers/win/resource.h @@ -414,18 +414,14 @@ #define MEMW_EDIT02FORMULA 1144 #define IDC_BUTTON7 1145 #define MEMW_EDIT03FORMULA 1145 -#define TASEDIT_REWIND_FULL2 1145 #define TASEDIT_PREV_MARKER 1145 #define IDC_BUTTON8 1146 -#define TASEDIT_REWIND_FULL3 1146 #define TASEDIT_FIND_BEST_MARKER 1146 #define IDC_EDIT1 1147 #define IDC_BUTTON9 1148 -#define TASEDIT_REWIND_FULL4 1148 #define TASEDIT_FIND_NEXT_MARKER 1148 #define IDC_HISTORYLIST 1149 #define IDC_BOOKMARKSLIST 1150 -#define TASEDIT_REWIND_FULL5 1151 #define TASEDIT_NEXT_MARKER 1151 #define IDC_BRANCHES_BUTTON 1152 #define IDC_BRANCHES_BUTTON2 1153 diff --git a/src/drivers/win/tasedit.cpp b/src/drivers/win/tasedit.cpp index 90dfe533..bab3cb31 100644 --- a/src/drivers/win/tasedit.cpp +++ b/src/drivers/win/tasedit.cpp @@ -65,7 +65,7 @@ bool TASEdit_jump_to_undo = true; // resources string tasedithelp = "{16CDE0C4-02B0-4A60-A88D-076319909A4D}"; //Name of TASEdit Help page char buttonNames[NUM_JOYPAD_BUTTONS][2] = {"A", "B", "S", "T", "U", "D", "L", "R"}; -char windowCaption[] = "TAS Editor"; +char windowCaptioBase[] = "TAS Editor"; extern char recordingCaptions[5][30]; // enterframe function @@ -87,21 +87,21 @@ void UpdateTasEdit() void RedrawWindowCaption() { - char windowCapt[300]; - strcpy(windowCapt, windowCaption); + char new_caption[300]; + strcpy(new_caption, windowCaptioBase); if (!movie_readonly) - strcat(windowCapt, recordingCaptions[recorder.multitrack_recording_joypad]); + strcat(new_caption, recordingCaptions[recorder.multitrack_recording_joypad]); // add project name std::string projectname = project.GetProjectName(); if (!projectname.empty()) { - strcat(windowCapt, " - "); - strcat(windowCapt, projectname.c_str()); + strcat(new_caption, " - "); + strcat(new_caption, projectname.c_str()); } // and * if project has unsaved changes if (project.GetProjectChanged()) - strcat(windowCapt, "*"); - SetWindowText(hwndTasEdit, windowCapt); + strcat(new_caption, "*"); + SetWindowText(hwndTasEdit, new_caption); } void RedrawTasedit() { @@ -193,9 +193,7 @@ void SingleClick(LPNMITEMACTIVATE info) else history.RegisterChanges(MODTYPE_MARKER_UNSET, row_index); project.SetProjectChanged(); - // clear selection, so that new marker will be seen immediately - selection.ClearSelection(); - // also no need to redraw row + tasedit_list.RedrawRow(row_index); } } else if(column_index >= COLUMN_JOYPAD1_A && column_index <= COLUMN_JOYPAD4_R) @@ -409,17 +407,22 @@ void ColumnSet(int column) { // set all for(SelectionFrames::iterator it(current_selection_begin); it != current_selection_end; it++) + { markers.SetMarker(*it); + tasedit_list.RedrawRow(*it); + } history.RegisterChanges(MODTYPE_MARKER_SET, *current_selection_begin, *current_selection->rbegin()); } else { // unset all for(SelectionFrames::iterator it(current_selection_begin); it != current_selection_end; it++) + { markers.ClearMarker(*it); + tasedit_list.RedrawRow(*it); + } history.RegisterChanges(MODTYPE_MARKER_UNSET, *current_selection_begin, *current_selection->rbegin()); } project.SetProjectChanged(); - selection.ClearSelection(); // no need to RedrawList(); } else { @@ -441,9 +444,12 @@ void ColumnSet(int column) for(SelectionFrames::iterator it(current_selection_begin); it != current_selection_end; it++) currMovieData.records[*it].setBitValue(joy,button,newValue); if (newValue) + { greenzone.InvalidateAndCheck(history.RegisterChanges(MODTYPE_SET, *current_selection_begin, *current_selection->rbegin())); - else + } else + { greenzone.InvalidateAndCheck(history.RegisterChanges(MODTYPE_UNSET, *current_selection_begin, *current_selection->rbegin())); + } } } @@ -1376,9 +1382,17 @@ void EnterTasEdit() SetWindowPos(hwndTasEdit, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE|SWP_NOOWNERZORDER); // init modules + FCEU_printf("1"); greenzone.init(); + FCEU_printf("2"); playback.init(); // either start new movie or use current movie + if (currMovieData.savestate.size() != 0) + { + FCEUD_PrintError("This version of TAS Editor doesn't work with movies starting from savestate."); + // delete savestate, but preserve input + currMovieData.savestate.clear(); + } if (FCEUMOV_Mode(MOVIEMODE_INACTIVE)) { FCEUI_StopMovie(); @@ -1386,7 +1400,7 @@ void EnterTasEdit() playback.StartFromZero(); } else { - //use current movie to create a new project + // use current movie to create a new project FCEUI_StopMovie(); greenzone.TryDumpIncremental(lagFlag != 0); } diff --git a/src/drivers/win/taseditlib/bookmarks.cpp b/src/drivers/win/taseditlib/bookmarks.cpp index c80879f0..75f85295 100644 --- a/src/drivers/win/taseditlib/bookmarks.cpp +++ b/src/drivers/win/taseditlib/bookmarks.cpp @@ -41,14 +41,6 @@ int corners_cursor_shift[BRANCHES_ANIMATION_FRAMES] = {0, 1, 2, 3, 4, 5, 5, 4, 3 BOOKMARKS::BOOKMARKS() { - // create font - hBookmarksFont = CreateFont(15, 10, /*Height,Width*/ - 0, 0, /*escapement,orientation*/ - FW_BOLD, FALSE, FALSE, FALSE, /*weight, italic, underline, strikeout*/ - ANSI_CHARSET, OUT_DEVICE_PRECIS, CLIP_MASK, /*charset, precision, clipping*/ - DEFAULT_QUALITY, DEFAULT_PITCH, /*quality, and pitch*/ - "Courier"); /*font name*/ - // fill TrackMouseEvent struct tme.cbSize = sizeof(tme); tme.dwFlags = TME_LEAVE; @@ -851,7 +843,7 @@ LONG BOOKMARKS::CustomDraw(NMLVCUSTOMDRAW* msg) if (bookmarks_array[cell_y].not_empty) { // frame number - SelectObject(msg->nmcd.hdc, hBookmarksFont); + SelectObject(msg->nmcd.hdc, tasedit_list.hMainListFont); int frame = bookmarks_array[cell_y].snapshot.jump_frame; if (frame == currFrameCounter || frame == (playback.GetPauseFrame() - 1)) { @@ -882,7 +874,7 @@ LONG BOOKMARKS::CustomDraw(NMLVCUSTOMDRAW* msg) if (bookmarks_array[cell_y].not_empty) { // frame number - SelectObject(msg->nmcd.hdc, hBookmarksFont); + SelectObject(msg->nmcd.hdc, tasedit_list.hMainListFont); int frame = bookmarks_array[cell_y].snapshot.jump_frame; if (frame == currFrameCounter || frame == (playback.GetPauseFrame() - 1)) { diff --git a/src/drivers/win/taseditlib/tasedit_list.cpp b/src/drivers/win/taseditlib/tasedit_list.cpp index 2f87a99c..c633cfc5 100644 --- a/src/drivers/win/taseditlib/tasedit_list.cpp +++ b/src/drivers/win/taseditlib/tasedit_list.cpp @@ -33,18 +33,18 @@ TASEDIT_LIST::TASEDIT_LIST() { // create fonts for main listview - hMainListFont = CreateFont(15, 10, /*Height,Width*/ - 0, 0, /*escapement,orientation*/ - FW_BOLD, FALSE, FALSE, FALSE, /*weight, italic, underline, strikeout*/ - ANSI_CHARSET, OUT_DEVICE_PRECIS, CLIP_MASK, /*charset, precision, clipping*/ - DEFAULT_QUALITY, DEFAULT_PITCH, /*quality, and pitch*/ - "Courier"); /*font name*/ - hMainListSelectFont = CreateFont(14, 7, /*Height,Width*/ + hMainListFont = CreateFont(14, 7, /*Height,Width*/ 0, 0, /*escapement,orientation*/ FW_BOLD, FALSE, FALSE, FALSE, /*weight, italic, underline, strikeout*/ ANSI_CHARSET, OUT_DEVICE_PRECIS, CLIP_MASK, /*charset, precision, clipping*/ DEFAULT_QUALITY, DEFAULT_PITCH, /*quality, and pitch*/ "Arial"); /*font name*/ + hMainListSelectFont = CreateFont(15, 10, /*Height,Width*/ + 0, 0, /*escapement,orientation*/ + FW_BOLD, FALSE, FALSE, FALSE, /*weight, italic, underline, strikeout*/ + ANSI_CHARSET, OUT_DEVICE_PRECIS, CLIP_MASK, /*charset, precision, clipping*/ + DEFAULT_QUALITY, DEFAULT_PITCH, /*quality, and pitch*/ + "Courier New"); /*font name*/ } @@ -429,13 +429,12 @@ LONG TASEDIT_LIST::CustomDraw(NMLVCUSTOMDRAW* msg) if(cell_x > COLUMN_ICONS) { - SelectObject(msg->nmcd.hdc, hMainListFont); // text color if(TASEdit_enable_hot_changes && cell_x >= COLUMN_JOYPAD1_A && cell_x <= COLUMN_JOYPAD4_R) { msg->clrText = hot_changes_colors[history.GetCurrentSnapshot().GetHotChangeInfo(cell_y, cell_x - COLUMN_JOYPAD1_A)]; } else msg->clrText = NORMAL_TEXT_COLOR; - // bg color + // bg color and text font if(cell_x == COLUMN_FRAMENUM || cell_x == COLUMN_FRAMENUM2) { // frame number @@ -443,43 +442,59 @@ LONG TASEDIT_LIST::CustomDraw(NMLVCUSTOMDRAW* msg) { // undo hint here if(TASEdit_show_markers && markers.GetMarker(cell_y)) + { + SelectObject(msg->nmcd.hdc, hMainListSelectFont); msg->clrTextBk = MARKED_UNDOHINT_FRAMENUM_COLOR; - else + } else + { + SelectObject(msg->nmcd.hdc, hMainListFont); msg->clrTextBk = UNDOHINT_FRAMENUM_COLOR; + } } else if (cell_y == currFrameCounter || cell_y == (playback.GetPauseFrame() - 1)) { // current frame if(TASEdit_show_markers && markers.GetMarker(cell_y)) + { // this frame is also marked + SelectObject(msg->nmcd.hdc, hMainListSelectFont); msg->clrTextBk = CUR_MARKED_FRAMENUM_COLOR; - else + } else + { + SelectObject(msg->nmcd.hdc, hMainListFont); msg->clrTextBk = CUR_FRAMENUM_COLOR; + } } else if(TASEdit_show_markers && markers.GetMarker(cell_y)) { // marked frame + SelectObject(msg->nmcd.hdc, hMainListSelectFont); msg->clrTextBk = MARKED_FRAMENUM_COLOR; - } else if(cell_y < greenzone.greenZoneCount) + } else { - if (!greenzone.savestates[cell_y].empty()) + SelectObject(msg->nmcd.hdc, hMainListFont); + if(cell_y < greenzone.greenZoneCount) { - if (TASEdit_show_lag_frames && greenzone.lag_history[cell_y]) - msg->clrTextBk = LAG_FRAMENUM_COLOR; - else - msg->clrTextBk = GREENZONE_FRAMENUM_COLOR; - } else if ((!greenzone.savestates[cell_y & EVERY16TH].empty() && (int)greenzone.savestates.size() > (cell_y | 0xF) + 1 && !greenzone.savestates[(cell_y | 0xF) + 1].empty()) - || (!greenzone.savestates[cell_y & EVERY8TH].empty() && (int)greenzone.savestates.size() > (cell_y | 0x7) + 1 && !greenzone.savestates[(cell_y | 0x7) + 1].empty()) - || (!greenzone.savestates[cell_y & EVERY4TH].empty() && (int)greenzone.savestates.size() > (cell_y | 0x3) + 1 && !greenzone.savestates[(cell_y | 0x3) + 1].empty()) - || (!greenzone.savestates[cell_y & EVERY2ND].empty() && !greenzone.savestates[(cell_y | 0x1) + 1].empty())) - { - if (TASEdit_show_lag_frames && greenzone.lag_history[cell_y]) - msg->clrTextBk = PALE_LAG_FRAMENUM_COLOR; - else - msg->clrTextBk = PALE_GREENZONE_FRAMENUM_COLOR; + if (!greenzone.savestates[cell_y].empty()) + { + if (TASEdit_show_lag_frames && greenzone.lag_history[cell_y]) + msg->clrTextBk = LAG_FRAMENUM_COLOR; + else + msg->clrTextBk = GREENZONE_FRAMENUM_COLOR; + } else if ((!greenzone.savestates[cell_y & EVERY16TH].empty() && (int)greenzone.savestates.size() > (cell_y | 0xF) + 1 && !greenzone.savestates[(cell_y | 0xF) + 1].empty()) + || (!greenzone.savestates[cell_y & EVERY8TH].empty() && (int)greenzone.savestates.size() > (cell_y | 0x7) + 1 && !greenzone.savestates[(cell_y | 0x7) + 1].empty()) + || (!greenzone.savestates[cell_y & EVERY4TH].empty() && (int)greenzone.savestates.size() > (cell_y | 0x3) + 1 && !greenzone.savestates[(cell_y | 0x3) + 1].empty()) + || (!greenzone.savestates[cell_y & EVERY2ND].empty() && !greenzone.savestates[(cell_y | 0x1) + 1].empty())) + { + if (TASEdit_show_lag_frames && greenzone.lag_history[cell_y]) + msg->clrTextBk = PALE_LAG_FRAMENUM_COLOR; + else + msg->clrTextBk = PALE_GREENZONE_FRAMENUM_COLOR; + } else msg->clrTextBk = NORMAL_FRAMENUM_COLOR; } else msg->clrTextBk = NORMAL_FRAMENUM_COLOR; - } else msg->clrTextBk = NORMAL_FRAMENUM_COLOR; + } } else if((cell_x - COLUMN_JOYPAD1_A) / NUM_JOYPAD_BUTTONS == 0 || (cell_x - COLUMN_JOYPAD1_A) / NUM_JOYPAD_BUTTONS == 2) { // pad 1 or 3 + SelectObject(msg->nmcd.hdc, hMainListFont); if (cell_y == history.GetUndoHint()) { // undo hint here @@ -510,6 +525,7 @@ LONG TASEDIT_LIST::CustomDraw(NMLVCUSTOMDRAW* msg) } else if((cell_x - COLUMN_JOYPAD1_A) / NUM_JOYPAD_BUTTONS == 1 || (cell_x - COLUMN_JOYPAD1_A) / NUM_JOYPAD_BUTTONS == 3) { // pad 2 or 4 + SelectObject(msg->nmcd.hdc, hMainListFont); if (cell_y == history.GetUndoHint()) { // undo hint here diff --git a/src/drivers/win/taseditlib/tasedit_list.h b/src/drivers/win/taseditlib/tasedit_list.h index 9d481211..e533063e 100644 --- a/src/drivers/win/taseditlib/tasedit_list.h +++ b/src/drivers/win/taseditlib/tasedit_list.h @@ -52,31 +52,31 @@ #define NORMAL_FRAMENUM_COLOR 0xFFFFFF #define NORMAL_INPUT_COLOR1 0xEDEDED -#define NORMAL_INPUT_COLOR2 0xDEDEDE +#define NORMAL_INPUT_COLOR2 0xE2E2E2 #define GREENZONE_FRAMENUM_COLOR 0xDDFFDD #define GREENZONE_INPUT_COLOR1 0xC8F7C4 -#define GREENZONE_INPUT_COLOR2 0xAEE2AE +#define GREENZONE_INPUT_COLOR2 0xADE7AD #define PALE_GREENZONE_FRAMENUM_COLOR 0xE4FFE4 -#define PALE_GREENZONE_INPUT_COLOR1 0xD5F9D4 -#define PALE_GREENZONE_INPUT_COLOR2 0xBAE6BA +#define PALE_GREENZONE_INPUT_COLOR1 0xD3F9D2 +#define PALE_GREENZONE_INPUT_COLOR2 0xBAEBBA -#define LAG_FRAMENUM_COLOR 0xDBDAFF -#define LAG_INPUT_COLOR1 0xCECBEF -#define LAG_INPUT_COLOR2 0xBEBAE4 +#define LAG_FRAMENUM_COLOR 0xDDDCFF +#define LAG_INPUT_COLOR1 0xD2D0F0 +#define LAG_INPUT_COLOR2 0xC9C6E8 -#define PALE_LAG_FRAMENUM_COLOR 0xE1E1FF -#define PALE_LAG_INPUT_COLOR1 0xD6D3F1 -#define PALE_LAG_INPUT_COLOR2 0xC7C4E8 +#define PALE_LAG_FRAMENUM_COLOR 0xE3E3FF +#define PALE_LAG_INPUT_COLOR1 0xDADAF4 +#define PALE_LAG_INPUT_COLOR2 0xCFCEEA #define CUR_FRAMENUM_COLOR 0xFCF1CE -#define CUR_INPUT_COLOR1 0xF7E9B2 -#define CUR_INPUT_COLOR2 0xE4D8A8 +#define CUR_INPUT_COLOR1 0xF8EBB6 +#define CUR_INPUT_COLOR2 0xE6DDA5 #define UNDOHINT_FRAMENUM_COLOR 0xF9DDE6 -#define UNDOHINT_INPUT_COLOR1 0xF6CCDD -#define UNDOHINT_INPUT_COLOR2 0xE5B7CC +#define UNDOHINT_INPUT_COLOR1 0xF7D2E1 +#define UNDOHINT_INPUT_COLOR2 0xE9BED1 #define MARKED_FRAMENUM_COLOR 0xC0FCFF #define CUR_MARKED_FRAMENUM_COLOR 0xDEF7F3 @@ -113,14 +113,13 @@ public: HWND hwndList, hwndHeader; + + // GDI stuff HIMAGELIST himglist; + HFONT hMainListFont, hMainListSelectFont; private: int listItems; // number of items per list page - // GDI stuff - HFONT hMainListFont, hMainListSelectFont; - - };