From 76f7af16c8798a7d6d8ddd8f2a9f59c810cd474a Mon Sep 17 00:00:00 2001 From: zeromus Date: Sun, 30 Dec 2018 17:05:58 -0500 Subject: [PATCH 1/7] try fixing SF bug 838 "gui.drawbox border is overlapping itself" I didnt test it, maybe I broke everything. please check it --- src/lua-engine.cpp | 54 +++++++++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 24 deletions(-) diff --git a/src/lua-engine.cpp b/src/lua-engine.cpp index da812a0a..62e0915d 100644 --- a/src/lua-engine.cpp +++ b/src/lua-engine.cpp @@ -3348,30 +3348,6 @@ static void gui_drawline_internal(int x1, int y1, int x2, int y2, bool lastPixel } } -// draw a rect on gui_data -static void gui_drawbox_internal(int x1, int y1, int x2, int y2, uint32 colour) { - - if (x1 > x2) - swap(x1, x2); - if (y1 > y2) - swap(y1, y2); - if (x1 < 0) - x1 = -1; - if (y1 < 0) - y1 = -1; - if (x2 >= LUA_SCREEN_WIDTH) - x2 = LUA_SCREEN_WIDTH; - if (y2 >= LUA_SCREEN_HEIGHT) - y2 = LUA_SCREEN_HEIGHT; - - //gui_prepare(); - - gui_drawline_internal(x1, y1, x2, y1, true, colour); - gui_drawline_internal(x1, y2, x2, y2, true, colour); - gui_drawline_internal(x1, y1, x1, y2, true, colour); - gui_drawline_internal(x2, y1, x2, y2, true, colour); -} - // draw fill rect on gui_data static void gui_fillbox_internal(int x1, int y1, int x2, int y2, uint32 colour) { @@ -3399,6 +3375,36 @@ static void gui_fillbox_internal(int x1, int y1, int x2, int y2, uint32 colour) } } +// draw a rect on gui_data +static void gui_drawbox_internal(int x1, int y1, int x2, int y2, uint32 colour) { + + if (x1 > x2) + swap(x1, x2); + if (y1 > y2) + swap(y1, y2); + if (x1 < 0) + x1 = -1; + if (y1 < 0) + y1 = -1; + if (x2 >= LUA_SCREEN_WIDTH) + x2 = LUA_SCREEN_WIDTH; + if (y2 >= LUA_SCREEN_HEIGHT) + y2 = LUA_SCREEN_HEIGHT; + + //gui_prepare(); + + int h = y2 - y1 + 1; + int w = x2 - x1 + 1; + + if(w < 2 || h < 2) + gui_fillbox_internal(x1,y1,x2,y2,colour); + + gui_drawline_internal(x1, y1, x2, y1, true, colour); //top + gui_drawline_internal(x1, y2, x2, y2, true, colour); //bottom + gui_drawline_internal(x1, y1+1, x1, y2-1, true, colour); //left + gui_drawline_internal(x2, y1+1, x2, y2-1, true, colour); //right +} + enum { GUI_COLOUR_CLEAR From 608bbe83fe0aed673cbeb71f8a098425878468bd Mon Sep 17 00:00:00 2001 From: zeromus Date: Mon, 31 Dec 2018 00:58:20 -0500 Subject: [PATCH 2/7] fix SF issue #838 better and fully --- src/lua-engine.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/lua-engine.cpp b/src/lua-engine.cpp index 62e0915d..033aabb8 100644 --- a/src/lua-engine.cpp +++ b/src/lua-engine.cpp @@ -3398,11 +3398,13 @@ static void gui_drawbox_internal(int x1, int y1, int x2, int y2, uint32 colour) if(w < 2 || h < 2) gui_fillbox_internal(x1,y1,x2,y2,colour); - - gui_drawline_internal(x1, y1, x2, y1, true, colour); //top - gui_drawline_internal(x1, y2, x2, y2, true, colour); //bottom - gui_drawline_internal(x1, y1+1, x1, y2-1, true, colour); //left - gui_drawline_internal(x2, y1+1, x2, y2-1, true, colour); //right + else + { + gui_drawline_internal(x1, y1, x2, y1, true, colour); //top + gui_drawline_internal(x1, y2, x2, y2, true, colour); //bottom + gui_drawline_internal(x1, y1+1, x1, y2-1, true, colour); //left + gui_drawline_internal(x2, y1+1, x2, y2-1, true, colour); //right + } } enum From b8c484ed1f03ebc6b8bad11dcf9a7f9e918168e5 Mon Sep 17 00:00:00 2001 From: zeromus Date: Mon, 31 Dec 2018 17:52:14 -0500 Subject: [PATCH 3/7] fix gradius-bullethell script (solves SF bug 839) --- output/luaScripts/Gradius-BulletHell.lua | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/output/luaScripts/Gradius-BulletHell.lua b/output/luaScripts/Gradius-BulletHell.lua index 29fe3a85..9e8b489c 100644 --- a/output/luaScripts/Gradius-BulletHell.lua +++ b/output/luaScripts/Gradius-BulletHell.lua @@ -148,26 +148,26 @@ function doexspriteai(s) end elseif(s.ai=="AimOnce") then if(s.timer==0) then - s.vx,s.vy = get_vdir(s,vic) + s.vx,s.vy = getvdir(s.x,s.y, vic.x,vic.y) s.vx = s.vx * 2 s.vy = s.vy * 2 --s.vy = AND(timer,0x0F) / 8 - 1 end elseif(s.ai=="AimDelayed") then if(s.timer>=30 and s.timer<=33) then - local x,y = get_vdir(s,vic) + local x,y = getvdir(s.x,s.y, vic.x,vic.y) s.vx = (x+s.vx) s.vy = (y+s.vy) end elseif(s.ai=="AimRight") then if(s.timer==0) then - s.vx,s.vy = get_vdir(s,vic) + s.vx,s.vy = getvdir(s.x,s.y, vic.x,vic.y) s.vx = s.vx * 2.5 s.vy = s.vy * 1.5 end elseif(s.ai=="AimLeft") then if(s.timer==0) then - s.vx,s.vy = get_vdir(s,vic) + s.vx,s.vy = getvdir(s.x,s.y, vic.x,vic.y) s.vx = s.vx * 1.5 s.vy = s.vy * 2.5 end @@ -179,7 +179,7 @@ function doexspriteai(s) s.vx=s.vx/1.1 s.vy=s.vy/1.1 elseif(s.timer==70) then - local x,y = get_vdir(s,vic) + local x,y = getvdir(s.x,s.y, vic.x,vic.y) s.vx = x*3 s.vy = y*3 end From d48105e97d4825e7ad1c9fcb23e29954031d16e0 Mon Sep 17 00:00:00 2001 From: CaH4e3 Date: Tue, 1 Jan 2019 16:36:24 +0300 Subject: [PATCH 4/7] Revert "Some ui interface logic changes and improvements." --- src/cheat.cpp | 17 - src/cheat.h | 4 +- src/drivers/win/archive.cpp | 8 - src/drivers/win/cheat.cpp | 30 +- src/drivers/win/cheat.h | 2 - src/drivers/win/directories.cpp | 6 +- src/drivers/win/gui.cpp | 27 +- src/drivers/win/gui.h | 2 +- src/drivers/win/input.cpp | 9 +- src/drivers/win/log.cpp | 2 +- src/drivers/win/main.cpp | 48 +- src/drivers/win/mapinput.cpp | 11 +- src/drivers/win/memview.cpp | 15 +- src/drivers/win/memviewsp.cpp | 2 +- src/drivers/win/ntview.cpp | 2 - src/drivers/win/palette.cpp | 10 - src/drivers/win/replay.cpp | 20 - src/drivers/win/res.rc | 235 +++---- src/drivers/win/resource.h | 13 +- src/drivers/win/sound.cpp | 4 +- src/drivers/win/taseditor.cpp | 11 - src/drivers/win/taseditor/piano_roll.cpp | 18 +- src/drivers/win/taseditor/piano_roll.h | 2 +- .../win/taseditor/taseditor_window.cpp | 199 +++--- src/drivers/win/taseditor/taseditor_window.h | 5 +- src/drivers/win/texthook.h | 2 - src/drivers/win/timing.cpp | 32 +- src/drivers/win/video.cpp | 10 - src/drivers/win/window.cpp | 611 +++++++++--------- src/drivers/win/window.h | 27 - src/fceu.cpp | 9 +- 31 files changed, 555 insertions(+), 838 deletions(-) diff --git a/src/cheat.cpp b/src/cheat.cpp index 41092e3a..44ea34ec 100644 --- a/src/cheat.cpp +++ b/src/cheat.cpp @@ -964,20 +964,3 @@ void UpdateFrozenList(void) } //FCEUI_DispMessage("FrozenCount: %d",0,FrozenAddressCount);//Debug } - -// disable all cheats -int FCEU_DisableAllCheats(){ - int count = 0; - struct CHEATF *next=cheats; - while(next) - { - if(next->status){ - count++; - } - next->status = 0; - next = next->next; - } - savecheats=1; - RebuildSubCheats(); - return count; -} diff --git a/src/cheat.h b/src/cheat.h index 136f6025..431ff0a5 100644 --- a/src/cheat.h +++ b/src/cheat.h @@ -9,6 +9,4 @@ void FCEU_PowerCheats(void); int FCEU_CheatGetByte(uint32 A); void FCEU_CheatSetByte(uint32 A, uint8 V); -extern int savecheats; - -int FCEU_DisableAllCheats(); \ No newline at end of file +extern int savecheats; \ No newline at end of file diff --git a/src/drivers/win/archive.cpp b/src/drivers/win/archive.cpp index 118aca61..7175b9ec 100644 --- a/src/drivers/win/archive.cpp +++ b/src/drivers/win/archive.cpp @@ -275,9 +275,6 @@ public: } }; -// indicator for the open in archive dialog that if the load was canceled by the user. -// TODO: Since I can't think of a better way to indicate it, hope someone could imporve it. -bool archiveManuallyCanceled; static BOOL CALLBACK ArchiveFileSelectorCallback(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { @@ -285,8 +282,6 @@ static BOOL CALLBACK ArchiveFileSelectorCallback(HWND hwndDlg, UINT uMsg, WPARAM { case WM_INITDIALOG: { - // TODO: find a better way to do this. - archiveManuallyCanceled = false; HWND hwndListbox = GetDlgItem(hwndDlg,IDC_LIST1); for(uint32 i=0;isize();i++) { @@ -312,9 +307,6 @@ static BOOL CALLBACK ArchiveFileSelectorCallback(HWND hwndDlg, UINT uMsg, WPARAM case IDCANCEL: EndDialog(hwndDlg, LB_ERR); - // Tell the parent window that the operation was canceled rather than loading error - // TODO: find a better way to do this. - archiveManuallyCanceled = true; return TRUE; } break; diff --git a/src/drivers/win/cheat.cpp b/src/drivers/win/cheat.cpp index ef60cc3f..ad2a582e 100644 --- a/src/drivers/win/cheat.cpp +++ b/src/drivers/win/cheat.cpp @@ -901,7 +901,6 @@ BOOL CALLBACK GGConvCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) EnableWindow(GetDlgItem(hCheat,IDC_BTN_CHEAT_DEL),TRUE); EnableWindow(GetDlgItem(hCheat,IDC_BTN_CHEAT_UPD),TRUE); - UpdateCheatsAdded(); } } break; @@ -1027,31 +1026,4 @@ void DoGGConv() void ListBox::OnRButtonDown(UINT nFlags, CPoint point) { CPoint test = point; -} */ - -void DisableAllCheats() -{ - if(!FCEU_DisableAllCheats() || !hCheat){ - return; - } - int selcheattemp = SendDlgItemMessage(hCheat, IDC_LIST_CHEATS, LB_GETCOUNT, 0, 0) - 1; - LRESULT sel; char str[259]; - while(selcheattemp >= 0) - { - SendDlgItemMessage(hCheat,IDC_LIST_CHEATS,LB_GETTEXT,selcheattemp, (LPARAM)(LPCTSTR)str); - if(str[0] == '*') - { - sel = SendDlgItemMessage(hCheat,IDC_LIST_CHEATS,LB_GETSEL,selcheattemp,0); - str[0] = ' '; - SendDlgItemMessage(hCheat,IDC_LIST_CHEATS,LB_DELETESTRING,selcheattemp,0); - SendDlgItemMessage(hCheat,IDC_LIST_CHEATS,LB_INSERTSTRING,selcheattemp, (LPARAM)(LPSTR)str); - if(sel) - { - SendDlgItemMessage(hCheat,IDC_LIST_CHEATS,LB_SETSEL,1,selcheattemp); - } - } - selcheattemp--; - } - sprintf(str, "Active Cheats %d", 0); - SetDlgItemText(hCheat, 201, str); -} \ No newline at end of file +} */ \ No newline at end of file diff --git a/src/drivers/win/cheat.h b/src/drivers/win/cheat.h index 8d9f5b2b..44f35a5c 100644 --- a/src/drivers/win/cheat.h +++ b/src/drivers/win/cheat.h @@ -14,5 +14,3 @@ void UpdateCheatsAdded(); extern unsigned int FrozenAddressCount; extern std::vector FrozenAddresses; //void ConfigAddCheat(HWND wnd); //bbit edited:commented out this line - -void DisableAllCheats(); \ No newline at end of file diff --git a/src/drivers/win/directories.cpp b/src/drivers/win/directories.cpp index accda7d5..75a0bf67 100644 --- a/src/drivers/win/directories.cpp +++ b/src/drivers/win/directories.cpp @@ -143,11 +143,9 @@ static BOOL CALLBACK DirConCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM "Base Directory", }; - char name[MAX_PATH]; - char path[MAX_PATH]; - GetDlgItemText(hwndDlg, EDIT_ROMS + ((wParam & 0xFFFF) - BUTTON_ROMS), path, MAX_PATH); + char name[MAX_PATH]; - if(BrowseForFolder(hwndDlg, helpert[ ( (wParam & 0xFFFF) - BUTTON_ROMS)], name, path)) + if(BrowseForFolder(hwndDlg, helpert[ ( (wParam & 0xFFFF) - BUTTON_ROMS)], name)) { SetDlgItemText(hwndDlg, EDIT_ROMS + ((wParam & 0xFFFF) - BUTTON_ROMS), name); } diff --git a/src/drivers/win/gui.cpp b/src/drivers/win/gui.cpp index 171187ae..ab3a158c 100644 --- a/src/drivers/win/gui.cpp +++ b/src/drivers/win/gui.cpp @@ -3,8 +3,6 @@ #include #include // For directories configuration dialog. -int CALLBACK SHBrowseForFolderCallbackProc(HWND, UINT, LPARAM, LPARAM); - /** * Centers a window relative to its parent window. * @@ -98,26 +96,18 @@ void ShowCursorAbs(int set_visible) * * @return 0 or 1 to indicate failure or success. **/ -int BrowseForFolder(HWND hParent, const char *htext, char *buf, char* defPath = NULL) +int BrowseForFolder(HWND hParent, const char *htext, char *buf) { BROWSEINFO bi; LPCITEMIDLIST pidl; + buf[0] = 0; + memset(&bi, 0, sizeof(bi)); + bi.hwndOwner = hParent; bi.lpszTitle = htext; - bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_EDITBOX; - - if(defPath == NULL || defPath[0] == '\0') - { - char currentDir[MAX_PATH]; - GetCurrentDirectory(MAX_PATH, currentDir); - bi.lParam = (LPARAM)currentDir; - } else { - bi.lParam = (LPARAM)defPath; - } - - bi.lpfn = SHBrowseForFolderCallbackProc; + bi.ulFlags = BIF_RETURNONLYFSDIRS; if(FAILED(CoInitialize(0))) { @@ -144,9 +134,4 @@ int BrowseForFolder(HWND hParent, const char *htext, char *buf, char* defPath = return 1; } -// Automatically expand to the configured folder. -int CALLBACK SHBrowseForFolderCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData) { - if(uMsg == BFFM_INITIALIZED) - SendMessage(hwnd, BFFM_SETSELECTION, TRUE, (LPARAM)(const char*)lpData); - return 0; -} \ No newline at end of file + diff --git a/src/drivers/win/gui.h b/src/drivers/win/gui.h index e1825c90..25d71c6d 100644 --- a/src/drivers/win/gui.h +++ b/src/drivers/win/gui.h @@ -1,4 +1,4 @@ void ShowCursorAbs(int set_visible); -int BrowseForFolder(HWND hParent, const char *htext, char *buf, char* defPath = NULL); +int BrowseForFolder(HWND hParent, const char *htext, char *buf); void CenterWindow(HWND hwndDlg); void CenterWindowOnScreen(HWND hwnd); diff --git a/src/drivers/win/input.cpp b/src/drivers/win/input.cpp index 50668570..3021348e 100644 --- a/src/drivers/win/input.cpp +++ b/src/drivers/win/input.cpp @@ -1202,9 +1202,6 @@ static void UpdateFourscoreState(HWND dlg) SetDlgItemText(dlg,TXT_PAD1,ESI_Name(SI_GAMEPAD)); SetDlgItemText(dlg,TXT_PAD2,ESI_Name(SI_GAMEPAD)); } - - EnableWindow(GetDlgItem(dlg,102), enable); - EnableWindow(GetDlgItem(dlg,103), enable); } //Callback function of the input configuration dialog. @@ -1305,7 +1302,7 @@ BOOL CALLBACK InputConCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara char btext[128]; if (autoHoldKey) { - if (!GetKeyNameText((autoHoldKey & 0x7F) << 16 | (autoHoldKey & 0x80) << 17, btext, 128)) + if (!GetKeyNameText(autoHoldKey << 16, btext, 128)) sprintf(btext, "KB: %d", autoHoldKey); } else { @@ -1486,7 +1483,7 @@ BOOL CALLBACK InputConCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara if(button) { - if(!GetKeyNameText((button & 0x7F) << 16 | (button & 0x80) << 17, btext, 128)) + if(!GetKeyNameText(button << 16, btext, 128)) { sprintf(btext, "KB: %d", button); } @@ -1512,7 +1509,7 @@ BOOL CALLBACK InputConCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara if(button) { - if( !GetKeyNameText((button & 0x7F) << 16 | (button & 0x80 << 17), btext, sizeof(btext))) + if( !GetKeyNameText(button << 16, btext, sizeof(btext))) { sprintf(btext, "KB: %d", button); } diff --git a/src/drivers/win/log.cpp b/src/drivers/win/log.cpp index 4232180b..a7305209 100644 --- a/src/drivers/win/log.cpp +++ b/src/drivers/win/log.cpp @@ -2,7 +2,7 @@ #include "common.h" #include "tracer.h" -HWND logwin = 0; +static HWND logwin = 0; static char *logtext[MAXIMUM_NUMBER_OF_LOGS]; static int logcount=0; diff --git a/src/drivers/win/main.cpp b/src/drivers/win/main.cpp index 1190e2a7..81a92c70 100644 --- a/src/drivers/win/main.cpp +++ b/src/drivers/win/main.cpp @@ -354,51 +354,16 @@ int BlockingCheck() } } - if(!handled && taseditorWindow.hwndTASEditor) + if(!handled && taseditorWindow.hwndTASEditor && taseditorEnableAcceleratorKeys) { - if(taseditorEnableAcceleratorKeys) - if(IsChild(taseditorWindow.hwndTASEditor, msg.hwnd)) - handled = TranslateAccelerator(taseditorWindow.hwndTASEditor, fceu_hAccel, &msg); - if(!handled && taseditorWindow.hwndTASEditor){ - handled = IsDialogMessage(taseditorWindow.hwndTASEditor, &msg); - } + if(IsChild(taseditorWindow.hwndTASEditor, msg.hwnd)) + handled = TranslateAccelerator(taseditorWindow.hwndTASEditor, fceu_hAccel, &msg); } if(!handled && taseditorWindow.hwndFindNote) { if(IsChild(taseditorWindow.hwndFindNote, msg.hwnd)) handled = IsDialogMessage(taseditorWindow.hwndFindNote, &msg); } - - extern HWND uug; - if(!handled && uug && IsChild(uug, msg.hwnd)) - handled = IsDialogMessage(uug, &msg); - if(!handled && pwindow && IsChild(pwindow, msg.hwnd)) - handled = IsDialogMessage(pwindow, &msg); - if(!handled && hCDLogger && IsChild(hCDLogger, msg.hwnd)) - handled = IsDialogMessage(hCDLogger, &msg); - if(!handled && hTracer && IsChild(hTracer, msg.hwnd)) - handled = IsDialogMessage(hTracer, &msg); - extern HWND hGGConv; - if(!handled && hGGConv && IsChild(hGGConv, msg.hwnd)) - handled = IsDialogMessage(hGGConv, &msg); - if(!handled && hDebug && IsChild(hDebug, msg.hwnd)) - handled = IsDialogMessage(hDebug, &msg); - extern HWND hPPUView; - if(!handled && hPPUView && IsChild(hPPUView, msg.hwnd)) - handled = IsDialogMessage(hPPUView, &msg); - extern HWND hNTView; - if(!handled && hNTView && IsChild(hNTView, msg.hwnd)) - handled = IsDialogMessage(hNTView, &msg); - extern HWND hTextHooker; - if(!handled && hTextHooker && IsChild(hTextHooker, msg.hwnd)) - handled = IsDialogMessage(hTextHooker, &msg); - extern HWND LuaConsoleHWnd; - if(!handled && LuaConsoleHWnd && IsChild(LuaConsoleHWnd, msg.hwnd)) - handled = IsDialogMessage(LuaConsoleHWnd, &msg); - extern HWND logwin; - if(!handled && logwin && IsChild(logwin, msg.hwnd)) - handled = IsDialogMessage(logwin, &msg); - /* //adelikat - Currently no accel keys are used in the main window. Uncomment this block to activate them. if(!handled) if(msg.hwnd == hAppWnd) @@ -746,6 +711,8 @@ int main(int argc,char *argv[]) fullscreen=0; } + CreateMainWindow(); + // Do single instance coding, since we now know if the user wants it, // and we have a source window to send from // http://wiki.github.com/ffi/ffi/windows-examples @@ -774,17 +741,12 @@ int main(int argc,char *argv[]) { //kill this one, activate the other one SetActiveWindow(DoInstantiatedExitWindow); - if(IsIconic(DoInstantiatedExitWindow)) - ShowWindow(DoInstantiatedExitWindow, SW_RESTORE); - SetForegroundWindow(DoInstantiatedExitWindow); do_exit(); return 0; } } } - CreateMainWindow(); - if(!InitDInput()) { do_exit(); diff --git a/src/drivers/win/mapinput.cpp b/src/drivers/win/mapinput.cpp index 98b97dfe..307aa518 100644 --- a/src/drivers/win/mapinput.cpp +++ b/src/drivers/win/mapinput.cpp @@ -7,7 +7,6 @@ #include "../../input.h" #include #include "window.h" -#include "taseditor/taseditor_window.h" void KeyboardUpdateState(void); //mbg merge 7/17/06 yech had to add this @@ -690,11 +689,7 @@ BOOL CALLBACK MapInputDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM PopulateMappingDisplay(hwndDlg); // Autosize last column. - SendMessage(hwndListView, LVM_SETCOLUMNWIDTH, (WPARAM)2, MAKELPARAM(LVSCW_AUTOSIZE, 0)); - SendMessage(hwndListView, LVM_SETCOLUMNWIDTH, (WPARAM)1, MAKELPARAM(LVSCW_AUTOSIZE, 0)); - RECT rect; - GetClientRect(hwndListView, &rect); - SendMessage(hwndListView, LVM_SETCOLUMNWIDTH, (WPARAM)2, MAKELPARAM(rect.right - rect.left - SendMessage(hwndListView, LVM_GETCOLUMNWIDTH, 0, 0) - SendMessage(hwndListView, LVM_GETCOLUMNWIDTH, 1, 0), 0)); + SendMessage(hwndListView, LVM_SETCOLUMNWIDTH, (WPARAM)2, MAKELPARAM(LVSCW_AUTOSIZE_USEHEADER, 0)); CenterWindowOnScreen(hwndDlg); } @@ -713,10 +708,6 @@ BOOL CALLBACK MapInputDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM { case IDOK: UpdateMenuHotkeys(); - // Update TAS Editor's tooltips if it's opening. - extern TASEDITOR_WINDOW taseditorWindow; - if (taseditorWindow.hwndTASEditor) - taseditorWindow.updateTooltips(); EndDialog(hwndDlg, 1); return TRUE; diff --git a/src/drivers/win/memview.cpp b/src/drivers/win/memview.cpp index 6f46e452..7ce539a4 100644 --- a/src/drivers/win/memview.cpp +++ b/src/drivers/win/memview.cpp @@ -1262,10 +1262,9 @@ LRESULT CALLBACK MemViewCallB(HWND hwnd, UINT message, WPARAM wParam, LPARAM lPa // update menus for (i = MODE_NES_MEMORY; i <= MODE_NES_FILE; i++) - if(EditingMode == i) { - CheckMenuRadioItem(GetMenu(hMemView), MENU_MV_VIEW_RAM, MENU_MV_VIEW_ROM, MENU_MV_VIEW_RAM + i, MF_BYCOMMAND); - break; - } + { + CheckMenuItem(GetMenu(hwnd), MENU_MV_VIEW_RAM + i, (EditingMode == i) ? MF_CHECKED : MF_UNCHECKED); + } CheckMenuItem(GetMenu(hwnd), ID_HIGHLIGHTING_HIGHLIGHT_ACTIVITY, (MemView_HighlightActivity) ? MF_CHECKED: MF_UNCHECKED); CheckMenuItem(GetMenu(hwnd), ID_HIGHLIGHTING_FADEWHENPAUSED, (MemView_HighlightActivity_FadeWhenPaused) ? MF_CHECKED: MF_UNCHECKED); @@ -2039,11 +2038,9 @@ LRESULT CALLBACK MemViewCallB(HWND hwnd, UINT message, WPARAM wParam, LPARAM lPa case MENU_MV_VIEW_ROM: EditingMode = wParam - MENU_MV_VIEW_RAM; for (i = MODE_NES_MEMORY; i <= MODE_NES_FILE; i++) - if(EditingMode == i) - { - CheckMenuRadioItem(GetMenu(hMemView), MENU_MV_VIEW_RAM, MENU_MV_VIEW_ROM, MENU_MV_VIEW_RAM + i, MF_BYCOMMAND); - break; - } + { + CheckMenuItem(GetMenu(hMemView), MENU_MV_VIEW_RAM + i, (EditingMode == i) ? MF_CHECKED : MF_UNCHECKED); + } if (EditingMode == MODE_NES_MEMORY) MaxSize = 0x10000; if (EditingMode == MODE_NES_PPU) diff --git a/src/drivers/win/memviewsp.cpp b/src/drivers/win/memviewsp.cpp index 1f155455..83efde3d 100644 --- a/src/drivers/win/memviewsp.cpp +++ b/src/drivers/win/memviewsp.cpp @@ -181,7 +181,7 @@ void updateBookmarkMenus(HMENU menu) { // Get the text of the menu char buffer[0x100]; - sprintf(buffer, i < 10 ? "&%d. $%04X - %s\tCtrl+%d" : "%d. $%04X - %s",i, hexBookmarks[i].address, hexBookmarks[i].description, i); + sprintf(buffer, i < 10 ? "$%04X - %s\tCTRL-%d" : "$%04X - %s", hexBookmarks[i].address, hexBookmarks[i].description, i); mi.dwTypeData = buffer; mi.cch = strlen(buffer); diff --git a/src/drivers/win/ntview.cpp b/src/drivers/win/ntview.cpp index 0ebb504e..b8ac8d61 100644 --- a/src/drivers/win/ntview.cpp +++ b/src/drivers/win/ntview.cpp @@ -567,8 +567,6 @@ BOOL CALLBACK NTViewCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) break; case IDC_NTVIEW_SHOW_SCROLL_LINES : scrolllines ^= 1; - EnableWindow(GetDlgItem(hwndDlg, IDC_NTVIEW_SCANLINE_TEXT), scrolllines); - EnableWindow(GetDlgItem(hwndDlg, IDC_NTVIEW_SCANLINE), scrolllines); chrchanged = 1; break; case IDC_NTVIEW_SHOW_ATTRIBUTES : diff --git a/src/drivers/win/palette.cpp b/src/drivers/win/palette.cpp index bed79087..4c77e92d 100644 --- a/src/drivers/win/palette.cpp +++ b/src/drivers/win/palette.cpp @@ -117,11 +117,6 @@ BOOL CALLBACK PaletteConCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa CenterWindowOnScreen(hwndDlg); - EnableWindow(GetDlgItem(hwndDlg, 65463), ntsccol_enable); - EnableWindow(GetDlgItem(hwndDlg, 64395), ntsccol_enable); - EnableWindow(GetDlgItem(hwndDlg, CTL_HUE_TRACKBAR), ntsccol_enable); - EnableWindow(GetDlgItem(hwndDlg, CTL_TINT_TRACKBAR), ntsccol_enable); - break; case WM_HSCROLL: @@ -158,11 +153,6 @@ BOOL CALLBACK PaletteConCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa case CHECK_PALETTE_ENABLED: ntsccol_enable ^= 1; FCEUI_SetNTSCTH(ntsccol_enable, ntsctint, ntschue); // it recalculates everything, use it for PAL block too! - EnableWindow(GetDlgItem(hwndDlg, 65463), ntsccol_enable); - EnableWindow(GetDlgItem(hwndDlg, 64395), ntsccol_enable); - EnableWindow(GetDlgItem(hwndDlg, CTL_HUE_TRACKBAR), ntsccol_enable); - EnableWindow(GetDlgItem(hwndDlg, CTL_TINT_TRACKBAR), ntsccol_enable); - break; case CHECK_PALETTE_GRAYSCALE: diff --git a/src/drivers/win/replay.cpp b/src/drivers/win/replay.cpp index 9b5e7520..fb5cd8d1 100644 --- a/src/drivers/win/replay.cpp +++ b/src/drivers/win/replay.cpp @@ -289,8 +289,6 @@ void UpdateReplayDialog(HWND hwndDlg) EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK_READONLY),FALSE); EnableWindow(GetDlgItem(hwndDlg,IDOK),FALSE); } - EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK_STOPMOVIE), !doClear); - EnableWindow(GetDlgItem(hwndDlg,IDC_EDIT_STOPFRAME), !doClear && SendDlgItemMessage(hwndDlg, IDC_CHECK_STOPMOVIE, BM_GETCHECK, 0, 0) == BST_CHECKED); } // C:\fceu\movies\bla.fcm + C:\fceu\fceu\ -> C:\fceu\movies\bla.fcm @@ -651,9 +649,6 @@ BOOL CALLBACK ReplayDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lP int wID = LOWORD(wParam); switch(wID) { - case IDC_CHECK_STOPMOVIE: - EnableWindow(GetDlgItem(hwndDlg, IDC_EDIT_STOPFRAME), SendDlgItemMessage(hwndDlg, IDC_CHECK_STOPMOVIE, BM_GETCHECK, 0, 0) == BST_CHECKED); - break; case IDC_BUTTON_METADATA: DialogBoxParam(fceu_hInstance, "IDD_REPLAY_METADATA", hwndDlg, ReplayMetadataDialogProc, (LPARAM)0); break; @@ -719,21 +714,6 @@ BOOL CALLBACK ReplayDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lP } else { - extern unsigned int FrozenAddressCount; - if(FrozenAddressCount) - { - char ch[512]; - sprintf(ch, "You have %d activated cheats. If this is not your intentional, it can cause playback prblems! Do you want to disable all of them and continue?", FrozenAddressCount); - switch(MessageBox(hwndDlg, ch, "Movie playing problem", MB_YESNOCANCEL|MB_ICONEXCLAMATION)) - { - case IDCANCEL: - return TRUE; - case IDYES: - extern void DisableAllCheats(); - DisableAllCheats(); - } - - } // user had made their choice // TODO: warn the user when they open a movie made with a different ROM char* fn=GetReplayPath(hwndDlg); diff --git a/src/drivers/win/res.rc b/src/drivers/win/res.rc index 1ee99401..1e9e6102 100644 --- a/src/drivers/win/res.rc +++ b/src/drivers/win/res.rc @@ -7,16 +7,93 @@ // // Generated from the TEXTINCLUDE 2 resource. // -#include "afxres.h" +#include "afxres.h" + ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// -// ·ÇÌØ¶¨ÓïÑÔ resources +// Russian (Russia) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) +LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT +#pragma code_page(1251) + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_TASEDITOR_SAVINGOPTIONS DIALOGEX 0, 0, 223, 208 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Project file saving options" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + DEFPUSHBUTTON "OK",IDOK,109,187,50,14 + PUSHBUTTON "Cancel",IDCANCEL,165,187,50,14 + CONTROL " Binary format of Input",IDC_CHECK_BINARY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,17,89,10 + CONTROL " Markers",IDC_CHECK_MARKERS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,32,67,10 + CONTROL " Bookmarks",IDC_CHECK_BOOKMARKS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,47,67,10 + CONTROL " History",IDC_CHECK_HISTORY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,62,67,10 + CONTROL " Piano Roll",IDC_CHECK_PIANO_ROLL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,77,67,10 + CONTROL " Selection",IDC_CHECK_SELECTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,92,67,10 + GROUPBOX "File contents",IDC_STATIC,105,4,111,177 + GROUPBOX "Greenzone saving options",IDC_STATIC,112,106,97,69 + CONTROL " all frames",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON,122,117,77,10 + CONTROL " every 16th frame",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,122,131,77,10 + CONTROL " marked frames",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,122,145,77,10 + CONTROL " don't save",IDC_RADIO4,"Button",BS_AUTORADIOBUTTON,122,159,77,10 + CONTROL " Autosave project",IDC_AUTOSAVE_PROJECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,17,81,10 + CONTROL " silently",IDC_SILENT_AUTOSAVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,47,42,10 + LTEXT "every",IDC_STATIC,14,32,21,8 + EDITTEXT IDC_AUTOSAVE_PERIOD,36,30,24,14,ES_AUTOHSCROLL | ES_NUMBER + LTEXT "minutes",IDC_STATIC,64,32,28,8 + GROUPBOX "Settings",IDC_STATIC,6,4,91,177 +END + +IDD_SYMBOLIC_DEBUG_NAMING DIALOGEX 0, 0, 245, 83 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Symbolic Debug Naming" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + DEFPUSHBUTTON "OK",IDOK,132,62,50,14 + PUSHBUTTON "Cancel",IDCANCEL,189,62,50,14 + LTEXT "File",IDC_STATIC,7,7,15,9 + EDITTEXT IDC_SYMBOLIC_ADDRESS,38,24,33,13,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP + LTEXT "Address",IDC_STATIC,6,26,30,10 + EDITTEXT IDC_SYMBOLIC_NAME,107,24,132,13,ES_AUTOHSCROLL + LTEXT "Name",IDC_STATIC,83,26,22,10 + LTEXT "Comment",IDC_STATIC,6,45,37,10 + EDITTEXT IDC_SYMBOLIC_COMMENT,45,43,194,13,ES_AUTOHSCROLL + EDITTEXT IDC_SYMBOLIC_FILENAME,24,6,215,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_SYMBOLIC_DEBUG_NAMING, DIALOG + BEGIN + BOTTOMMARGIN, 82 + END +END +#endif // APSTUDIO_INVOKED + +#endif // Russian (Russia) resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// Neutral resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU) LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL -#pragma code_page(936) +#pragma code_page(1252) ///////////////////////////////////////////////////////////////////////////// // @@ -354,11 +431,11 @@ BEGIN GROUPBOX "NES Palette",302,10,8,102,81,WS_GROUP DEFPUSHBUTTON "&Load Palette...",BTN_PALETTE_LOAD,18,39,58,14 CONTROL "Enabled",CHECK_PALETTE_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,22,87,12 - CONTROL "Tint",CTL_TINT_TRACKBAR,"msctls_trackbar32",WS_DISABLED | WS_TABSTOP,121,44,91,11 + CONTROL "Tint",CTL_TINT_TRACKBAR,"msctls_trackbar32",WS_TABSTOP,121,44,91,11 GROUPBOX "NTSC Color Emulation",101,115,8,103,81,WS_GROUP - CONTROL "Hue",CTL_HUE_TRACKBAR,"msctls_trackbar32",WS_DISABLED | WS_TABSTOP,121,69,91,11 - CTEXT "Hue",64395,124,59,85,8,WS_DISABLED - CTEXT "Tint",65463,123,34,85,8,WS_DISABLED + CONTROL "Hue",CTL_HUE_TRACKBAR,"msctls_trackbar32",WS_TABSTOP,121,69,91,11 + CTEXT "Hue",64395,124,59,85,8 + CTEXT "Tint",65463,123,34,85,8 CONTROL "Force Grayscale",CHECK_PALETTE_GRAYSCALE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,57,85,12 CONTROL "Use Custom Palette",CHECK_PALETTE_CUSTOM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,22,85,12 GROUPBOX "PAL Emulation",IDC_STATIC,10,89,208,66,WS_DISABLED @@ -436,7 +513,7 @@ BEGIN COMBOBOX COMBO_SOUND_RATE,50,61,53,46,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "Hz",65460,108,64,15,9 LTEXT "Depth:",65462,17,85,27,10 - COMBOBOX COMBO_SOUND_8BIT,50,82,67,45,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX COMBO_SOUND_8BIT,50,82,67,45,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP CONTROL "Mute frame advance",CHECK_SOUND_MUTEFA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,110,87,11 CONTROL "Mute Turbo",CHECK_SOUND_MUTETURBO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,138,111,53,10 GROUPBOX "Triangle",131,70,142,44,93,WS_GROUP @@ -577,11 +654,11 @@ BEGIN "Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,8,183,12 CONTROL "Set high-priority thread.",CB_SET_HIGH_PRIORITY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,24,102,12 CONTROL "Overclocking (old PPU only).",CB_OVERCLOCKING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,41,101,10 - EDITTEXT IDC_EXTRA_SCANLINES,104,55,84,14,ES_AUTOHSCROLL | WS_DISABLED - LTEXT "Post-render scanlines:",IDC_EXTRA_SCANLINES_TEXT,21,57,74,8, WS_DISABLED - CONTROL "Don't overclock 7-bit samples.",CB_SKIP_7BIT,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,10,87,111,10 - EDITTEXT IDC_VBLANK_SCANLINES,104,68,84,14,ES_AUTOHSCROLL | WS_DISABLED - LTEXT "VBlank scanlines:",IDC_VBLANK_SCANLINES_TEXT,21,71,76,8, WS_DISABLED + EDITTEXT IDC_EXTRA_SCANLINES,104,55,84,14,ES_AUTOHSCROLL + LTEXT "Post-render scanlines:",IDC_STATIC,21,57,74,8 + CONTROL "Don't overclock 7-bit samples.",CB_SKIP_7BIT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,87,111,10 + EDITTEXT IDC_VBLANK_SCANLINES,104,68,84,14,ES_AUTOHSCROLL + LTEXT "VBlank scanlines:",IDC_STATIC,21,71,76,8 END MOVIEOPTIONS DIALOGEX 65520, 76, 147, 222 @@ -867,7 +944,7 @@ BEGIN LTEXT "Refresh: More",-1,225,254,50,9 CONTROL "",IDC_NTVIEW_REFRESH_TRACKBAR,"msctls_trackbar32",WS_TABSTOP,275,254,50,11 LTEXT "Less",-1,325,254,18,10 - LTEXT "Display on scanline:",IDC_NTVIEW_SCANLINE_TEXT,253,269,65,9 + LTEXT "Display on scanline:",-1,253,269,65,9 EDITTEXT IDC_NTVIEW_SCANLINE,315,267,27,12 CONTROL "Show Scroll Lines",IDC_NTVIEW_SHOW_SCROLL_LINES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,254,69,10 CONTROL "Show Attributes",IDC_NTVIEW_SHOW_ATTRIBUTES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,265,69,10 @@ -1435,9 +1512,9 @@ BEGIN CONTROL "TV Aspect",IDC_VIDEOCONFIG_TVASPECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,357,29,48,12 GROUPBOX "When resizing the window",65431,188,38,152,43,WS_GROUP CONTROL "Square pixels",IDC_VIDEOCONFIG_SQUARE_PIXELS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,448,14,55,12 - EDITTEXT IDC_TVASPECT_X,407,28,41,12,ES_AUTOHSCROLL | WS_DISABLED - EDITTEXT IDC_TVASPECT_Y,458,28,41,12,ES_AUTOHSCROLL | WS_DISABLED - CTEXT "/",IDC_STATIC_SLASHTEXT,449,31,8,8,WS_DISABLED + EDITTEXT IDC_TVASPECT_X,407,28,41,12,ES_AUTOHSCROLL + EDITTEXT IDC_TVASPECT_Y,458,28,41,12,ES_AUTOHSCROLL + CTEXT "/",IDC_STATIC_SLASHTEXT,449,31,8,8 LTEXT "DirectDraw:",65454,11,126,46,10 LTEXT "DirectDraw:",65455,188,125,46,10 COMBOBOX IDC_VIDEOCONFIG_DIRECTDRAW_FS,59,123,105,50,CBS_DROPDOWNLIST | WS_TABSTOP @@ -1653,10 +1730,6 @@ BEGIN BOTTOMMARGIN, 121 END - "NTVIEW", DIALOG - BEGIN - END - "MONITOR", DIALOG BEGIN LEFTMARGIN, 7 @@ -1683,10 +1756,6 @@ BEGIN BOTTOMMARGIN, 198 END - "TASEDITOR", DIALOG - BEGIN - END - "ASSEMBLER", DIALOG BEGIN LEFTMARGIN, 7 @@ -2391,119 +2460,12 @@ BEGIN END END - -///////////////////////////////////////////////////////////////////////////// -// -// AFX_DIALOG_LAYOUT -// - -NTVIEW AFX_DIALOG_LAYOUT -BEGIN - 0 -END - -TIMINGCONFIG AFX_DIALOG_LAYOUT -BEGIN - 0 -END - -#endif // ·ÇÌØ¶¨ÓïÑÔ resources +#endif // Neutral resources ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// -// ¶íÓï(¶íÂÞ˹) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) -LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT -#pragma code_page(1251) - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_TASEDITOR_SAVINGOPTIONS DIALOGEX 0, 0, 223, 208 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Project file saving options" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - DEFPUSHBUTTON "OK",IDOK,109,187,50,14 - PUSHBUTTON "Cancel",IDCANCEL,165,187,50,14 - CONTROL " Binary format of Input",IDC_CHECK_BINARY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,17,89,10 - CONTROL " Markers",IDC_CHECK_MARKERS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,32,67,10 - CONTROL " Bookmarks",IDC_CHECK_BOOKMARKS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,47,67,10 - CONTROL " History",IDC_CHECK_HISTORY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,62,67,10 - CONTROL " Piano Roll",IDC_CHECK_PIANO_ROLL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,77,67,10 - CONTROL " Selection",IDC_CHECK_SELECTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,92,67,10 - GROUPBOX "File contents",IDC_STATIC,105,4,111,177 - GROUPBOX "Greenzone saving options",IDC_STATIC,112,106,97,69 - CONTROL " all frames",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON,122,117,77,10 - CONTROL " every 16th frame",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,122,131,77,10 - CONTROL " marked frames",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,122,145,77,10 - CONTROL " don't save",IDC_RADIO4,"Button",BS_AUTORADIOBUTTON,122,159,77,10 - CONTROL " Autosave project",IDC_AUTOSAVE_PROJECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,17,81,10 - CONTROL " silently",IDC_SILENT_AUTOSAVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,47,42,10 - LTEXT "every",IDC_AUTOSAVE_PERIOD_EVERY_TEXT,14,32,21,8 - EDITTEXT IDC_AUTOSAVE_PERIOD,36,30,24,14,ES_AUTOHSCROLL | ES_NUMBER - LTEXT "minutes",IDC_AUTOSAVE_PERIOD_MINUTES_TEXT,64,32,28,8 - GROUPBOX "Settings",IDC_STATIC,6,4,91,177 -END - -IDD_SYMBOLIC_DEBUG_NAMING DIALOGEX 0, 0, 245, 83 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Symbolic Debug Naming" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - DEFPUSHBUTTON "OK",IDOK,132,62,50,14 - PUSHBUTTON "Cancel",IDCANCEL,189,62,50,14 - LTEXT "File",IDC_STATIC,7,7,15,9 - EDITTEXT IDC_SYMBOLIC_ADDRESS,38,24,33,13,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP - LTEXT "Address",IDC_STATIC,6,26,30,10 - EDITTEXT IDC_SYMBOLIC_NAME,107,24,132,13,ES_AUTOHSCROLL - LTEXT "Name",IDC_STATIC,83,26,22,10 - LTEXT "Comment",IDC_STATIC,6,45,37,10 - EDITTEXT IDC_SYMBOLIC_COMMENT,45,43,194,13,ES_AUTOHSCROLL - EDITTEXT IDC_SYMBOLIC_FILENAME,24,6,215,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_TASEDITOR_SAVINGOPTIONS, DIALOG - BEGIN - END - - IDD_SYMBOLIC_DEBUG_NAMING, DIALOG - BEGIN - BOTTOMMARGIN, 82 - END -END -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// AFX_DIALOG_LAYOUT -// - -IDD_TASEDITOR_SAVINGOPTIONS AFX_DIALOG_LAYOUT -BEGIN - 0 -END - -#endif // ¶íÓï(¶íÂÞ˹) resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// Ó¢Óï(ÃÀ¹ú) resources +// English (United States) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US @@ -2737,7 +2699,7 @@ IDB_BITMAP_SELECTED17 BITMAP "res\\te_17_selected.bmp" IDB_BITMAP_SELECTED18 BITMAP "res\\te_18_selected.bmp" IDB_BITMAP_SELECTED19 BITMAP "res\\te_19_selected.bmp" IDB_BRANCH_SPRITESHEET BITMAP "res\\branch_spritesheet.bmp" -#endif // Ó¢Óï(ÃÀ¹ú) resources +#endif // English (United States) resources ///////////////////////////////////////////////////////////////////////////// @@ -2747,7 +2709,8 @@ IDB_BRANCH_SPRITESHEET BITMAP "res\\branch_spritesheet.bmp" // // Generated from the TEXTINCLUDE 3 resource. // - + + ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED diff --git a/src/drivers/win/resource.h b/src/drivers/win/resource.h index 1839a585..dcd58f63 100644 --- a/src/drivers/win/resource.h +++ b/src/drivers/win/resource.h @@ -1,6 +1,6 @@ //{{NO_DEPENDENCIES}} -// Microsoft Visual C++ Éú³ÉµÄ°üº¬Îļþ¡£ -// ¹© res.rc ʹÓà +// Microsoft Visual C++ generated include file. +// Used by res.rc // #define CLOSE_BUTTON 1 #define BUTTON_CLOSE 1 @@ -784,10 +784,6 @@ #define IDC_RICHEDIT_DISASM 1304 #define IDC_CHECK2 1305 #define DEBUGIDAFONT 1305 -#define IDC_AUTOSAVE_PERIOD_EVERY_TEXT 1306 -#define IDC_AUTOSAVE_PERIOD_MINUTES_TEXT 1307 -#define IDC_VBLANK_SCANLINES_TEXT 1308 -#define IDC_EXTRA_SCANLINES_TEXT 1309 #define MENU_NETWORK 40040 #define MENU_PALETTE 40041 #define MENU_SOUND 40042 @@ -1275,15 +1271,14 @@ #define IDC_STATIC_SLASHTEXT 65442 #define IDC_BOOKMARK_NAME_TEXT 65535 #define ID_CDL 65535 -#define IDC_NTVIEW_SCANLINE_TEXT 65535 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 296 +#define _APS_NEXT_RESOURCE_VALUE 293 #define _APS_NEXT_COMMAND_VALUE 40600 -#define _APS_NEXT_CONTROL_VALUE 1310 +#define _APS_NEXT_CONTROL_VALUE 1306 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif diff --git a/src/drivers/win/sound.cpp b/src/drivers/win/sound.cpp index ae5f1a86..baef27fd 100644 --- a/src/drivers/win/sound.cpp +++ b/src/drivers/win/sound.cpp @@ -387,7 +387,7 @@ void win_SoundWriteData(int32 *buffer, int count) { //-------- //GUI and control APIs -HWND uug=0; +static HWND uug=0; static void UpdateSD(HWND hwndDlg) { @@ -450,7 +450,6 @@ static void UpdateSD(HWND hwndDlg) EnableWindow(GetDlgItem(hwndDlg,65457),FALSE); //Misc. Output Format group EnableWindow(GetDlgItem(hwndDlg,65455),FALSE); - EnableWindow(GetDlgItem(hwndDlg,65462),FALSE); EnableWindow(GetDlgItem(hwndDlg,65461),FALSE); EnableWindow(GetDlgItem(hwndDlg,65460),FALSE); @@ -491,7 +490,6 @@ static void UpdateSD(HWND hwndDlg) EnableWindow(GetDlgItem(hwndDlg,65457),TRUE); //Misc. Output Format group EnableWindow(GetDlgItem(hwndDlg,65455),TRUE); - EnableWindow(GetDlgItem(hwndDlg,65462),TRUE); EnableWindow(GetDlgItem(hwndDlg,65461),TRUE); EnableWindow(GetDlgItem(hwndDlg,65460),TRUE); diff --git a/src/drivers/win/taseditor.cpp b/src/drivers/win/taseditor.cpp index 86f89e6b..ef423732 100644 --- a/src/drivers/win/taseditor.cpp +++ b/src/drivers/win/taseditor.cpp @@ -682,23 +682,12 @@ BOOL CALLBACK savingOptionsWndProc(HWND hwndDlg, UINT message, WPARAM wParam, LP CheckDlgButton(hwndDlg, IDC_CHECK_PIANO_ROLL, taseditorConfig.projectSavingOptions_SavePianoRoll?BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwndDlg, IDC_CHECK_SELECTION, taseditorConfig.projectSavingOptions_SaveSelection?BST_CHECKED : BST_UNCHECKED); CheckRadioButton(hwndDlg, IDC_RADIO1, IDC_RADIO4, IDC_RADIO1 + (taseditorConfig.projectSavingOptions_GreenzoneSavingMode % GREENZONE_SAVING_MODES_TOTAL)); - EnableWindow(GetDlgItem(hwndDlg, IDC_AUTOSAVE_PERIOD), taseditorConfig.autosaveEnabled); - EnableWindow(GetDlgItem(hwndDlg, IDC_AUTOSAVE_PERIOD_EVERY_TEXT), taseditorConfig.autosaveEnabled); - EnableWindow(GetDlgItem(hwndDlg, IDC_AUTOSAVE_PERIOD_MINUTES_TEXT), taseditorConfig.autosaveEnabled); return TRUE; } case WM_COMMAND: { switch (LOWORD(wParam)) { - case IDC_AUTOSAVE_PROJECT: - { - bool chk = BST_CHECKED == SendDlgItemMessage(hwndDlg, IDC_AUTOSAVE_PROJECT, BM_GETCHECK, 0, 0); - EnableWindow(GetDlgItem(hwndDlg, IDC_AUTOSAVE_PERIOD), chk); - EnableWindow(GetDlgItem(hwndDlg, IDC_AUTOSAVE_PERIOD_EVERY_TEXT), chk); - EnableWindow(GetDlgItem(hwndDlg, IDC_AUTOSAVE_PERIOD_MINUTES_TEXT), chk); - } - break; case IDOK: { taseditorConfig.autosaveEnabled = (SendDlgItemMessage(hwndDlg, IDC_AUTOSAVE_PROJECT, BM_GETCHECK, 0, 0) == BST_CHECKED); diff --git a/src/drivers/win/taseditor/piano_roll.cpp b/src/drivers/win/taseditor/piano_roll.cpp index ae3161d6..f0198fc2 100644 --- a/src/drivers/win/taseditor/piano_roll.cpp +++ b/src/drivers/win/taseditor/piano_roll.cpp @@ -433,7 +433,7 @@ void PIANO_ROLL::reset() mustRedrawList = mustCheckItemUnderMouse = true; playbackCursorOffset = 0; shiftHeld = ctrlHeld = altHeld = false; - shiftTimer = ctrlTimer = shiftActionsCount = ctrlActionsCount = 0; + shiftTimer = ctrlTimer = shiftActionsÑount = ctrlActionsÑount = 0; nextHeaderUpdateTime = headerItemUnderMouse = 0; // delete all columns except 0th while (ListView_DeleteColumn(hwndList, 1)) {} @@ -480,16 +480,16 @@ void PIANO_ROLL::update() { if ((int)(shiftTimer + GetDoubleClickTime()) > clock()) { - shiftActionsCount++; - if (shiftActionsCount >= DOUBLETAP_COUNT) + shiftActionsÑount++; + if (shiftActionsÑount >= DOUBLETAP_COUNT) { if (taseditorWindow.TASEditorIsInFocus) followPlaybackCursor(); - shiftActionsCount = ctrlActionsCount = 0; + shiftActionsÑount = ctrlActionsÑount = 0; } } else { - shiftActionsCount = 0; + shiftActionsÑount = 0; } shiftTimer = clock(); } @@ -497,16 +497,16 @@ void PIANO_ROLL::update() { if ((int)(ctrlTimer + GetDoubleClickTime()) > clock()) { - ctrlActionsCount++; - if (ctrlActionsCount >= DOUBLETAP_COUNT) + ctrlActionsÑount++; + if (ctrlActionsÑount >= DOUBLETAP_COUNT) { if (taseditorWindow.TASEditorIsInFocus) followSelection(); - ctrlActionsCount = shiftActionsCount = 0; + ctrlActionsÑount = shiftActionsÑount = 0; } } else { - ctrlActionsCount = 0; + ctrlActionsÑount = 0; } ctrlTimer = clock(); } diff --git a/src/drivers/win/taseditor/piano_roll.h b/src/drivers/win/taseditor/piano_roll.h index 033d5f13..9d912a9e 100644 --- a/src/drivers/win/taseditor/piano_roll.h +++ b/src/drivers/win/taseditor/piano_roll.h @@ -217,7 +217,7 @@ public: bool shiftHeld, ctrlHeld, altHeld; int shiftTimer, ctrlTimer; - int shiftActionsCount, ctrlActionsCount; + int shiftActionsÑount, ctrlActionsÑount; HWND hwndMarkerDragBox, hwndMarkerDragBoxText; // GDI stuff diff --git a/src/drivers/win/taseditor/taseditor_window.cpp b/src/drivers/win/taseditor/taseditor_window.cpp index 815c6a46..c4afb7fd 100644 --- a/src/drivers/win/taseditor/taseditor_window.cpp +++ b/src/drivers/win/taseditor/taseditor_window.cpp @@ -132,47 +132,47 @@ char taseditorHelpFilename[] = "\\taseditor.chm"; // "y < 0" means that the coordinate is counted from the lower border of the window (bottom-aligned) // The items in this array MUST be sorted by the same order as the Window_items_enum! WindowItemData windowItems[TASEDITOR_WINDOW_TOTAL_ITEMS] = { - WINDOWITEMS_PIANO_ROLL, IDC_LIST1, 0, 0, -1, -1, "", false, 0, 0, - WINDOWITEMS_PLAYBACK_MARKER, IDC_PLAYBACK_MARKER, 0, 0, 0, 0, "Click here to scroll Piano Roll to Playback cursor (hotkey: tap Shift twice)", false, 0, 0, - WINDOWITEMS_PLAYBACK_MARKER_EDIT, IDC_PLAYBACK_MARKER_EDIT, 0, 0, -1, 0, "Click to edit text", false, 0, 0, - WINDOWITEMS_SELECTION_MARKER, IDC_SELECTION_MARKER, 0, -1, 0, -1, "Click here to scroll Piano Roll to Selection (hotkey: tap Ctrl twice)", false, 0, 0, - WINDOWITEMS_SELECTION_MARKER_EDIT, IDC_SELECTION_MARKER_EDIT, 0, -1, -1, -1, "Click to edit text", false, 0, 0, - WINDOWITEMS_PLAYBACK_BOX, IDC_PLAYBACK_BOX, -1, 0, 0, 0, "", false, 0, 0, - WINDOWITEMS_PROGRESS_BUTTON, IDC_PROGRESS_BUTTON, -1, 0, 0, 0, "Click here when you want to abort seeking", false, EMUCMD_TASEDITOR_CANCEL_SEEKING, 0, - WINDOWITEMS_REWIND_FULL, TASEDITOR_REWIND_FULL, -1, 0, 0, 0, "Send Playback to previous Marker (mouse: Shift+Wheel up) (hotkey: Shift+PageUp)", false, 0, 0, - WINDOWITEMS_REWIND, TASEDITOR_REWIND, -1, 0, 0, 0, "Rewind 1 frame (mouse: Right button+Wheel up) (hotkey: Shift+Up)", false, EMUCMD_TASEDITOR_REWIND, 0, - WINDOWITEMS_PAUSE, TASEDITOR_PLAYSTOP, -1, 0, 0, 0, "Pause/Unpause Emulation (mouse: Middle button)", false, EMUCMD_PAUSE, 0, - WINDOWITEMS_FORWARD, TASEDITOR_FORWARD, -1, 0, 0, 0, "Advance 1 frame (mouse: Right button+Wheel down) (hotkey: Shift+Down)", false, EMUCMD_FRAME_ADVANCE, 0, - WINDOWITEMS_FORWARD_FULL, TASEDITOR_FORWARD_FULL, -1, 0, 0, 0, "Send Playback to next Marker (mouse: Shift+Wheel down) (hotkey: Shift+PageDown)", false, 0, 0, - WINDOWITEMS_PROGRESS_BAR, IDC_PROGRESS1, -1, 0, 0, 0, "", false, 0, 0, - WINDOWITEMS_FOLLOW_CURSOR, CHECK_FOLLOW_CURSOR, -1, 0, 0, 0, "The Piano Roll will follow Playback cursor movements", false, 0, 0, - WINDOWITEMS_TURBO_SEEK, CHECK_TURBO_SEEK, -1, 0, 0, 0, "Uncheck when you need to watch seeking in slow motion", false, 0, 0, - WINDOWITEMS_AUTORESTORE_PLAYBACK, CHECK_AUTORESTORE_PLAYBACK, -1, 0, 0, 0, "Whenever you change Input above Playback cursor, the cursor returns to where it was before the change", false, EMUCMD_TASEDITOR_SWITCH_AUTORESTORING, 0, - WINDOWITEMS_RECORDER_BOX, IDC_RECORDER_BOX, -1, 0, 0, 0, "", false, 0, 0, - WINDOWITEMS_RECORDING, IDC_RECORDING, -1, 0, 0, 0, "Switch Input Recording on/off", false, EMUCMD_MOVIE_READONLY_TOGGLE, 0, - WINDOWITEMS_RECORD_ALL, IDC_RADIO_ALL, -1, 0, 0, 0, "Switch off Multitracking", false, 0, 0, - WINDOWITEMS_RECORD_1P, IDC_RADIO_1P, -1, 0, 0, 0, "Select Joypad 1 as current", false, EMUCMD_TASEDITOR_SWITCH_MULTITRACKING, 0, - WINDOWITEMS_RECORD_2P, IDC_RADIO_2P, -1, 0, 0, 0, "Select Joypad 2 as current", false, EMUCMD_TASEDITOR_SWITCH_MULTITRACKING, 0, - WINDOWITEMS_RECORD_3P, IDC_RADIO_3P, -1, 0, 0, 0, "Select Joypad 3 as current", false, EMUCMD_TASEDITOR_SWITCH_MULTITRACKING, 0, - WINDOWITEMS_RECORD_4P, IDC_RADIO_4P, -1, 0, 0, 0, "Select Joypad 4 as current", false, EMUCMD_TASEDITOR_SWITCH_MULTITRACKING, 0, - WINDOWITEMS_SUPERIMPOSE, IDC_SUPERIMPOSE, -1, 0, 0, 0, "Allows to superimpose old Input with new buttons, instead of overwriting", false, 0, 0, - WINDOWITEMS_USE_PATTERN, IDC_USEPATTERN, -1, 0, 0, 0, "Applies current Autofire Pattern to Input recording", false, 0, 0, - WINDOWITEMS_SPLICER_BOX, IDC_SPLICER_BOX, -1, 0, 0, 0, "", false, 0, 0, - WINDOWITEMS_SELECTION_TEXT, IDC_TEXT_SELECTION, -1, 0, 0, 0, "Current size of Selection", false, 0, 0, - WINDOWITEMS_CLIPBOARD_TEXT, IDC_TEXT_CLIPBOARD, -1, 0, 0, 0, "Current size of Input in the Clipboard", false, 0, 0, - WINDOWITEMS_LUA_BOX, IDC_LUA_BOX, -1, 0, 0, 0, "", false, 0, 0, - WINDOWITEMS_RUN_MANUAL, TASEDITOR_RUN_MANUAL, -1, 0, 0, 0, "Press the button to execute Lua Manual Function", false, EMUCMD_TASEDITOR_RUN_MANUAL_LUA, 0, - WINDOWITEMS_RUN_AUTO, IDC_RUN_AUTO, -1, 0, 0, 0, "Enable Lua Auto Function (but first it must be registered by Lua script)", false, 0, 0, - WINDOWITEMS_BRANCHES_BUTTON, IDC_BRANCHES_BUTTON, -1, 0, 0, 0, "Click here to switch between Bookmarks List and Branches Tree", false, 0, 0, - WINDOWITEMS_BOOKMARKS_BOX, IDC_BOOKMARKS_BOX, -1, 0, 0, 0, "", false, 0, 0, - WINDOWITEMS_BOOKMARKS_LIST, IDC_BOOKMARKSLIST, -1, 0, 0, 0, "Right click = set Bookmark, Left click = jump to Bookmark or load Branch", false, 0, 0, - WINDOWITEMS_BRANCHES_BITMAP, IDC_BRANCHES_BITMAP, -1, 0, 0, 0, "Right click = set Bookmark, single Left click = jump to Bookmark, double Left click = load Branch", false, 0, 0, - WINDOWITEMS_HISTORY_BOX, IDC_HISTORY_BOX, -1, 0, 0, -1, "", false, 0, 0, - WINDOWITEMS_HISTORY_LIST, IDC_HISTORYLIST, -1, 0, 0, -1, "Click to revert the project back to that time", false, 0, 0, - WINDOWITEMS_PREVIOUS_MARKER, TASEDITOR_PREV_MARKER, -1, -1, 0, -1, "Send Selection to previous Marker (mouse: Ctrl+Wheel up) (hotkey: Ctrl+PageUp)", false, 0, 0, - WINDOWITEMS_SIMILAR, TASEDITOR_FIND_BEST_SIMILAR_MARKER, -1, -1, 0, -1, "Auto-search for Marker Note", false, 0, 0, - WINDOWITEMS_MORE, TASEDITOR_FIND_NEXT_SIMILAR_MARKER, -1, -1, 0, -1, "Continue Auto-search", false, 0, 0, - WINDOWITEMS_NEXT_MARKER, TASEDITOR_NEXT_MARKER, -1, -1, 0, -1, "Send Selection to next Marker (mouse: Ctrl+Wheel up) (hotkey: Ctrl+PageDown)", false, 0, 0, + WINDOWITEMS_PIANO_ROLL, IDC_LIST1, 0, 0, -1, -1, "", "", false, 0, 0, + WINDOWITEMS_PLAYBACK_MARKER, IDC_PLAYBACK_MARKER, 0, 0, 0, 0, "Click here to scroll Piano Roll to Playback cursor (hotkey: tap Shift twice)", "", false, 0, 0, + WINDOWITEMS_PLAYBACK_MARKER_EDIT, IDC_PLAYBACK_MARKER_EDIT, 0, 0, -1, 0, "Click to edit text", "", false, 0, 0, + WINDOWITEMS_SELECTION_MARKER, IDC_SELECTION_MARKER, 0, -1, 0, -1, "Click here to scroll Piano Roll to Selection (hotkey: tap Ctrl twice)", "", false, 0, 0, + WINDOWITEMS_SELECTION_MARKER_EDIT, IDC_SELECTION_MARKER_EDIT, 0, -1, -1, -1, "Click to edit text", "", false, 0, 0, + WINDOWITEMS_PLAYBACK_BOX, IDC_PLAYBACK_BOX, -1, 0, 0, 0, "", "", false, 0, 0, + WINDOWITEMS_PROGRESS_BUTTON, IDC_PROGRESS_BUTTON, -1, 0, 0, 0, "Click here when you want to abort seeking", "", false, EMUCMD_TASEDITOR_CANCEL_SEEKING, 0, + WINDOWITEMS_REWIND_FULL, TASEDITOR_REWIND_FULL, -1, 0, 0, 0, "Send Playback to previous Marker (mouse: Shift+Wheel up) (hotkey: Shift+PageUp)", "", false, 0, 0, + WINDOWITEMS_REWIND, TASEDITOR_REWIND, -1, 0, 0, 0, "Rewind 1 frame (mouse: Right button+Wheel up) (hotkey: Shift+Up)", "", false, EMUCMD_TASEDITOR_REWIND, 0, + WINDOWITEMS_PAUSE, TASEDITOR_PLAYSTOP, -1, 0, 0, 0, "Pause/Unpause Emulation (mouse: Middle button)", "", false, EMUCMD_PAUSE, 0, + WINDOWITEMS_FORWARD, TASEDITOR_FORWARD, -1, 0, 0, 0, "Advance 1 frame (mouse: Right button+Wheel down) (hotkey: Shift+Down)", "", false, EMUCMD_FRAME_ADVANCE, 0, + WINDOWITEMS_FORWARD_FULL, TASEDITOR_FORWARD_FULL, -1, 0, 0, 0, "Send Playback to next Marker (mouse: Shift+Wheel down) (hotkey: Shift+PageDown)", "", false, 0, 0, + WINDOWITEMS_PROGRESS_BAR, IDC_PROGRESS1, -1, 0, 0, 0, "", "", false, 0, 0, + WINDOWITEMS_FOLLOW_CURSOR, CHECK_FOLLOW_CURSOR, -1, 0, 0, 0, "The Piano Roll will follow Playback cursor movements", "", false, 0, 0, + WINDOWITEMS_TURBO_SEEK, CHECK_TURBO_SEEK, -1, 0, 0, 0, "Uncheck when you need to watch seeking in slow motion", "", false, 0, 0, + WINDOWITEMS_AUTORESTORE_PLAYBACK, CHECK_AUTORESTORE_PLAYBACK, -1, 0, 0, 0, "Whenever you change Input above Playback cursor, the cursor returns to where it was before the change", "", false, EMUCMD_TASEDITOR_SWITCH_AUTORESTORING, 0, + WINDOWITEMS_RECORDER_BOX, IDC_RECORDER_BOX, -1, 0, 0, 0, "", "", false, 0, 0, + WINDOWITEMS_RECORDING, IDC_RECORDING, -1, 0, 0, 0, "Switch Input Recording on/off", "", false, EMUCMD_MOVIE_READONLY_TOGGLE, 0, + WINDOWITEMS_RECORD_ALL, IDC_RADIO_ALL, -1, 0, 0, 0, "Switch off Multitracking", "", false, 0, 0, + WINDOWITEMS_RECORD_1P, IDC_RADIO_1P, -1, 0, 0, 0, "Select Joypad 1 as current", "", false, EMUCMD_TASEDITOR_SWITCH_MULTITRACKING, 0, + WINDOWITEMS_RECORD_2P, IDC_RADIO_2P, -1, 0, 0, 0, "Select Joypad 2 as current", "", false, EMUCMD_TASEDITOR_SWITCH_MULTITRACKING, 0, + WINDOWITEMS_RECORD_3P, IDC_RADIO_3P, -1, 0, 0, 0, "Select Joypad 3 as current", "", false, EMUCMD_TASEDITOR_SWITCH_MULTITRACKING, 0, + WINDOWITEMS_RECORD_4P, IDC_RADIO_4P, -1, 0, 0, 0, "Select Joypad 4 as current", "", false, EMUCMD_TASEDITOR_SWITCH_MULTITRACKING, 0, + WINDOWITEMS_SUPERIMPOSE, IDC_SUPERIMPOSE, -1, 0, 0, 0, "Allows to superimpose old Input with new buttons, instead of overwriting", "", false, 0, 0, + WINDOWITEMS_USE_PATTERN, IDC_USEPATTERN, -1, 0, 0, 0, "Applies current Autofire Pattern to Input recording", "", false, 0, 0, + WINDOWITEMS_SPLICER_BOX, IDC_SPLICER_BOX, -1, 0, 0, 0, "", "", false, 0, 0, + WINDOWITEMS_SELECTION_TEXT, IDC_TEXT_SELECTION, -1, 0, 0, 0, "Current size of Selection", "", false, 0, 0, + WINDOWITEMS_CLIPBOARD_TEXT, IDC_TEXT_CLIPBOARD, -1, 0, 0, 0, "Current size of Input in the Clipboard", "", false, 0, 0, + WINDOWITEMS_LUA_BOX, IDC_LUA_BOX, -1, 0, 0, 0, "", "", false, 0, 0, + WINDOWITEMS_RUN_MANUAL, TASEDITOR_RUN_MANUAL, -1, 0, 0, 0, "Press the button to execute Lua Manual Function", "", false, EMUCMD_TASEDITOR_RUN_MANUAL_LUA, 0, + WINDOWITEMS_RUN_AUTO, IDC_RUN_AUTO, -1, 0, 0, 0, "Enable Lua Auto Function (but first it must be registered by Lua script)", "", false, 0, 0, + WINDOWITEMS_BRANCHES_BUTTON, IDC_BRANCHES_BUTTON, -1, 0, 0, 0, "Click here to switch between Bookmarks List and Branches Tree", "", false, 0, 0, + WINDOWITEMS_BOOKMARKS_BOX, IDC_BOOKMARKS_BOX, -1, 0, 0, 0, "", "", false, 0, 0, + WINDOWITEMS_BOOKMARKS_LIST, IDC_BOOKMARKSLIST, -1, 0, 0, 0, "Right click = set Bookmark, Left click = jump to Bookmark or load Branch", "", false, 0, 0, + WINDOWITEMS_BRANCHES_BITMAP, IDC_BRANCHES_BITMAP, -1, 0, 0, 0, "Right click = set Bookmark, single Left click = jump to Bookmark, double Left click = load Branch", "", false, 0, 0, + WINDOWITEMS_HISTORY_BOX, IDC_HISTORY_BOX, -1, 0, 0, -1, "", "", false, 0, 0, + WINDOWITEMS_HISTORY_LIST, IDC_HISTORYLIST, -1, 0, 0, -1, "Click to revert the project back to that time", "", false, 0, 0, + WINDOWITEMS_PREVIOUS_MARKER, TASEDITOR_PREV_MARKER, -1, -1, 0, -1, "Send Selection to previous Marker (mouse: Ctrl+Wheel up) (hotkey: Ctrl+PageUp)", "", false, 0, 0, + WINDOWITEMS_SIMILAR, TASEDITOR_FIND_BEST_SIMILAR_MARKER, -1, -1, 0, -1, "Auto-search for Marker Note", "", false, 0, 0, + WINDOWITEMS_MORE, TASEDITOR_FIND_NEXT_SIMILAR_MARKER, -1, -1, 0, -1, "Continue Auto-search", "", false, 0, 0, + WINDOWITEMS_NEXT_MARKER, TASEDITOR_NEXT_MARKER, -1, -1, 0, -1, "Send Selection to next Marker (mouse: Ctrl+Wheel up) (hotkey: Ctrl+PageDown)", "", false, 0, 0, }; TASEDITOR_WINDOW::TASEDITOR_WINDOW() @@ -186,64 +186,6 @@ TASEDITOR_WINDOW::TASEDITOR_WINDOW() minHeight = 0; } -void TASEDITOR_WINDOW::updateTooltips() -{ - for (int i = 0; i < TASEDITOR_WINDOW_TOTAL_ITEMS; ++i) - { - TOOLINFO toolInfo = { 0 }; - toolInfo.cbSize = sizeof(TOOLINFO); - toolInfo.hwnd = hwndTASEditor; - toolInfo.uId = (UINT_PTR)GetDlgItem(hwndTASEditor, windowItems[i].id); - if (windowItems[i].isStaticRect) - { - // for static text we specify rectangle - RECT toolRect; - GetWindowRect(GetDlgItem(hwndTASEditor, windowItems[i].id), &toolRect); - POINT pt; - pt.x = toolRect.left; - pt.y = toolRect.top; - ScreenToClient(hwndTASEditor, &pt); - toolInfo.rect.left = pt.x; - toolInfo.rect.top = pt.y; - toolInfo.rect.right = toolInfo.rect.left + toolRect.right - toolRect.left; - toolInfo.rect.bottom = toolInfo.rect.top + toolRect.bottom - toolRect.top; - toolInfo.uFlags = TTF_SUBCLASS; - } - else - // for other controls we provide hwnd - toolInfo.uFlags = TTF_IDISHWND | TTF_SUBCLASS; - char tooltipText[TOOLTIP_TEXT_MAX_LEN]; - if (windowItems[i].hotkeyEmuCmd && FCEUD_CommandMapping[windowItems[i].hotkeyEmuCmd]) - { - // add hotkey mapping if needed - strcpy(tooltipText, windowItems[i].tooltipText); - strcat(tooltipText, " (hotkey: "); - strcat(tooltipText, GetKeyComboName(FCEUD_CommandMapping[windowItems[i].hotkeyEmuCmd])); - strcat(tooltipText, ")"); - toolInfo.lpszText = tooltipText; - } else - // No hotkey, use the tooltip text itself - toolInfo.lpszText = windowItems[i].tooltipText; - - if(!windowItems[i].tooltipHWND) - { - // if the tooltip handle is not created yet, create one - if (windowItems[i].tooltipHWND = CreateWindowEx(NULL, TOOLTIPS_CLASS, NULL, - WS_POPUP | TTS_ALWAYSTIP | TTS_BALLOON | TTS_NOANIMATE | TTS_NOFADE, - CW_USEDEFAULT, CW_USEDEFAULT, - CW_USEDEFAULT, CW_USEDEFAULT, - hwndTASEditor, NULL, - fceu_hInstance, NULL)) - { - SendMessage(windowItems[i].tooltipHWND, TTM_ADDTOOL, 0, (LPARAM)&toolInfo); - SendMessage(windowItems[i].tooltipHWND, TTM_SETDELAYTIME, TTDT_AUTOPOP, TOOLTIPS_AUTOPOP_TIMEOUT); - } - } else - // The tooltip handle is already created, just update the tooltip info - SendMessage(windowItems[i].tooltipHWND, TTM_SETTOOLINFO, 0, (LPARAM)&toolInfo); - } -} - void TASEDITOR_WINDOW::init() { isReadyForResizing = false; @@ -261,8 +203,61 @@ void TASEDITOR_WINDOW::init() updateCheckedItems(); hPatternsMenu = GetSubMenu(hMainMenu, PATTERNS_MENU_POS); // tooltips + for (int i = 0; i < TASEDITOR_WINDOW_TOTAL_ITEMS; ++i) + { + if (windowItems[i].tooltipTextBase[0]) + { + windowItems[i].tooltipHWND = CreateWindowEx(NULL, TOOLTIPS_CLASS, NULL, + WS_POPUP | TTS_ALWAYSTIP | TTS_BALLOON | TTS_NOANIMATE | TTS_NOFADE, + CW_USEDEFAULT, CW_USEDEFAULT, + CW_USEDEFAULT, CW_USEDEFAULT, + hwndTASEditor, NULL, + fceu_hInstance, NULL); + if (windowItems[i].tooltipHWND) + { + // Associate the tooltip with the tool + TOOLINFO toolInfo = {0}; + toolInfo.cbSize = sizeof(toolInfo); + toolInfo.hwnd = hwndTASEditor; + toolInfo.uId = (UINT_PTR)GetDlgItem(hwndTASEditor, windowItems[i].id); + if (windowItems[i].isStaticRect) + { + // for static text we specify rectangle + toolInfo.uFlags = TTF_SUBCLASS; + RECT toolRect; + GetWindowRect(GetDlgItem(hwndTASEditor, windowItems[i].id), &toolRect); + POINT pt; + pt.x = toolRect.left; + pt.y = toolRect.top; + ScreenToClient(hwndTASEditor, &pt); + toolInfo.rect.left = pt.x; + toolInfo.rect.right = toolInfo.rect.left + (toolRect.right - toolRect.left); + toolInfo.rect.top = pt.y; + toolInfo.rect.bottom = toolInfo.rect.top + (toolRect.bottom - toolRect.top); + } else + { + // for other controls we provide hwnd + toolInfo.uFlags = TTF_IDISHWND | TTF_SUBCLASS; + } + // add hotkey mapping if needed + if (windowItems[i].hotkeyEmuCmd && FCEUD_CommandMapping[windowItems[i].hotkeyEmuCmd]) + { + windowItems[i].tooltipText[0] = 0; + strcpy(windowItems[i].tooltipText, windowItems[i].tooltipTextBase); + strcat(windowItems[i].tooltipText, " (hotkey: "); + strncat(windowItems[i].tooltipText, GetKeyComboName(FCEUD_CommandMapping[windowItems[i].hotkeyEmuCmd]), TOOLTIP_TEXT_MAX_LEN - strlen(windowItems[i].tooltipText) - 1); + strncat(windowItems[i].tooltipText, ")", TOOLTIP_TEXT_MAX_LEN - strlen(windowItems[i].tooltipText) - 1); + toolInfo.lpszText = windowItems[i].tooltipText; + } else + { + toolInfo.lpszText = windowItems[i].tooltipTextBase; + } + SendMessage(windowItems[i].tooltipHWND, TTM_ADDTOOL, 0, (LPARAM)&toolInfo); + SendMessage(windowItems[i].tooltipHWND, TTM_SETDELAYTIME, TTDT_AUTOPOP, TOOLTIPS_AUTOPOP_TIMEOUT); + } + } + } updateTooltips(); - toggleTooltips(); // subclass "Marker X" text fields IDC_PLAYBACK_MARKER_oldWndProc = (WNDPROC)SetWindowLong(GetDlgItem(hwndTASEditor, IDC_PLAYBACK_MARKER), GWL_WNDPROC, (LONG)IDC_PLAYBACK_MARKER_WndProc); IDC_SELECTION_MARKER_oldWndProc = (WNDPROC)SetWindowLong(GetDlgItem(hwndTASEditor, IDC_SELECTION_MARKER), GWL_WNDPROC, (LONG)IDC_SELECTION_MARKER_WndProc); @@ -540,7 +535,7 @@ void TASEDITOR_WINDOW::changeBookmarksListHeight(int newHeight) ShowWindow(hwndTASEditor, SW_SHOWMAXIMIZED); } -void TASEDITOR_WINDOW::toggleTooltips() +void TASEDITOR_WINDOW::updateTooltips() { if (taseditorConfig.tooltipsEnabled) { @@ -1263,7 +1258,7 @@ BOOL CALLBACK TASEditorWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPara case ID_HELP_TOOLTIPS: taseditorConfig.tooltipsEnabled ^= 1; taseditorWindow.updateCheckedItems(); - taseditorWindow.toggleTooltips(); + taseditorWindow.updateTooltips(); break; case ID_HELP_ABOUT: DialogBox(fceu_hInstance, MAKEINTRESOURCE(IDD_TASEDITOR_ABOUT), taseditorWindow.hwndTASEditor, aboutWndProc); diff --git a/src/drivers/win/taseditor/taseditor_window.h b/src/drivers/win/taseditor/taseditor_window.h index 6274547a..687d55fa 100644 --- a/src/drivers/win/taseditor/taseditor_window.h +++ b/src/drivers/win/taseditor/taseditor_window.h @@ -62,8 +62,8 @@ struct WindowItemData int y; int width; int height; -// char* tooltipTextBase; - char* tooltipText; + char tooltipTextBase[TOOLTIP_TEXT_MAX_LEN]; + char tooltipText[TOOLTIP_TEXT_MAX_LEN]; bool isStaticRect; int hotkeyEmuCmd; HWND tooltipHWND; @@ -83,7 +83,6 @@ public: void handleWindowMovingOrResizing(); void changeBookmarksListHeight(int newHeight); - void toggleTooltips(); void updateTooltips(); void updateCaption(); void updateCheckedItems(); diff --git a/src/drivers/win/texthook.h b/src/drivers/win/texthook.h index e897569a..334b2c79 100644 --- a/src/drivers/win/texthook.h +++ b/src/drivers/win/texthook.h @@ -14,5 +14,3 @@ void UpdateTextHooker(); void KillTextHooker(); void DoTextHooker(); void TextHookerCheck(); - -extern HWND hTextHooker; \ No newline at end of file diff --git a/src/drivers/win/timing.cpp b/src/drivers/win/timing.cpp index 89bc6e35..9f29adec 100644 --- a/src/drivers/win/timing.cpp +++ b/src/drivers/win/timing.cpp @@ -44,23 +44,20 @@ void CloseTimingDialog(HWND hwndDlg) if (postrenderscanlines < 0) { postrenderscanlines = 0; - MessageBox(hwndDlg, "Overclocking is when you speed up your CPU, not slow it down!", "Error", MB_OK | MB_ICONERROR); + MessageBox(hwndDlg, "Overclocking is when you speed up your CPU, not slow it down!", "Error", MB_OK); sprintf(str,"%d",postrenderscanlines); SetDlgItemText(hwndDlg,IDC_EXTRA_SCANLINES,str); - SetFocus(GetDlgItem(hwndDlg, IDC_EXTRA_SCANLINES)); } else if (vblankscanlines < 0) { vblankscanlines = 0; - MessageBox(hwndDlg, "Overclocking is when you speed up your CPU, not slow it down!", "Error", MB_OK | MB_ICONERROR); + MessageBox(hwndDlg, "Overclocking is when you speed up your CPU, not slow it down!", "Error", MB_OK); sprintf(str,"%d",vblankscanlines); SetDlgItemText(hwndDlg,IDC_VBLANK_SCANLINES,str); - SetFocus(GetDlgItem(hwndDlg, IDC_VBLANK_SCANLINES)); } else if (overclock_enabled && newppu) { - MessageBox(hwndDlg, "Overclocking doesn't work with new PPU!", "Error", MB_OK | MB_ICONERROR); - SetFocus(GetDlgItem(hwndDlg, CB_OVERCLOCKING)); + MessageBox(hwndDlg, "Overclocking doesn't work with new PPU!", "Error", MB_OK); } else EndDialog(hwndDlg, 0); @@ -88,20 +85,9 @@ BOOL CALLBACK TimingConCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar CheckDlgButton(hwndDlg, CB_DISABLE_SPEED_THROTTLING, BST_CHECKED); } - if(newppu) - { - EnableWindow(GetDlgItem(hwndDlg, CB_OVERCLOCKING), false); - } - if(overclock_enabled) - { CheckDlgButton(hwndDlg, CB_OVERCLOCKING, BST_CHECKED); - EnableWindow(GetDlgItem(hwndDlg, IDC_EXTRA_SCANLINES), true); - EnableWindow(GetDlgItem(hwndDlg, CB_SKIP_7BIT), true); - EnableWindow(GetDlgItem(hwndDlg, IDC_VBLANK_SCANLINES), true); - EnableWindow(GetDlgItem(hwndDlg, IDC_VBLANK_SCANLINES_TEXT), true); - EnableWindow(GetDlgItem(hwndDlg, IDC_EXTRA_SCANLINES_TEXT), true); - } + if(skip_7bit_overclocking) CheckDlgButton(hwndDlg, CB_SKIP_7BIT, BST_CHECKED); @@ -131,16 +117,6 @@ BOOL CALLBACK TimingConCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar { case 1: CloseTimingDialog(hwndDlg); - break; - case CB_OVERCLOCKING: - bool chk = IsDlgButtonChecked(hwndDlg, CB_OVERCLOCKING) == BST_CHECKED; - - EnableWindow(GetDlgItem(hwndDlg, IDC_EXTRA_SCANLINES), chk); - EnableWindow(GetDlgItem(hwndDlg, CB_SKIP_7BIT), chk); - EnableWindow(GetDlgItem(hwndDlg, IDC_VBLANK_SCANLINES), chk); - EnableWindow(GetDlgItem(hwndDlg, IDC_VBLANK_SCANLINES_TEXT), chk); - EnableWindow(GetDlgItem(hwndDlg, IDC_EXTRA_SCANLINES_TEXT), chk); - break; } } diff --git a/src/drivers/win/video.cpp b/src/drivers/win/video.cpp index e48bcd72..e72dad77 100644 --- a/src/drivers/win/video.cpp +++ b/src/drivers/win/video.cpp @@ -1283,11 +1283,6 @@ BOOL CALLBACK VideoConCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara strcat(buf, " (double-click anywhere)"); } SetDlgItemText(hwndDlg, IDC_VIDEOCONFIG_FS, buf); - - EnableWindow(GetDlgItem(hwndDlg, IDC_TVASPECT_X), eoptions&EO_TVASPECT); - EnableWindow(GetDlgItem(hwndDlg, IDC_TVASPECT_Y), eoptions&EO_TVASPECT); - EnableWindow(GetDlgItem(hwndDlg, IDC_STATIC_SLASHTEXT), eoptions&EO_TVASPECT); - break; } case WM_CLOSE: @@ -1403,11 +1398,6 @@ gornk: fssync=SendDlgItemMessage(hwndDlg,IDC_VIDEOCONFIG_SYNC_METHOD_FS,CB_GETCURSEL,0,(LPARAM)(LPSTR)0); EndDialog(hwndDlg,0); break; - case IDC_VIDEOCONFIG_TVASPECT: - bool enable = SendDlgItemMessage(hwndDlg, IDC_VIDEOCONFIG_TVASPECT, BM_GETCHECK, 0, 0) == BST_CHECKED; - EnableWindow(GetDlgItem(hwndDlg, IDC_TVASPECT_X), enable); - EnableWindow(GetDlgItem(hwndDlg, IDC_TVASPECT_Y), enable); - EnableWindow(GetDlgItem(hwndDlg, IDC_STATIC_SLASHTEXT), enable); } } return 0; diff --git a/src/drivers/win/window.cpp b/src/drivers/win/window.cpp index 37291a21..971dc7c5 100644 --- a/src/drivers/win/window.cpp +++ b/src/drivers/win/window.cpp @@ -94,6 +94,7 @@ using namespace std; #define FCEUX_CONTEXT_TOGGLESUBTITLES 60003 #define FCEUX_CONTEXT_DUMPSUBTITLES 60004 + //******************************************************************************** //Globals //******************************************************************************** @@ -108,9 +109,6 @@ HMENU hfceuxcontext; //Handle to context menu HMENU hfceuxcontextsub; //Handle to context sub menu HWND MainhWnd; //Main FCEUX(Parent) window Handle. Dialogs should use GetMainHWND() to get this -// HWND list for menu update, refers to FCEU_MENU_HWND -HMENU hmenuList[FCEUMENU_LIMIT]; - //Extern variables------------------------------------- extern bool movieSubtitles; extern FCEUGI *GameInfo; @@ -420,9 +418,9 @@ void UpdateCheckedMenuItems() CheckMenuItem(fceumenu, polo2[x], *polo[x] ? MF_CHECKED : MF_UNCHECKED); } //File Menu - if (movieRecordMode == MOVIE_RECORD_MODE_TRUNCATE) CheckMenuRadioItem(fceumenu, ID_FILE_RECORDMODE_TRUNCATE, ID_FILE_RECORDMODE_INSERT, ID_FILE_RECORDMODE_TRUNCATE, MF_BYCOMMAND); - if (movieRecordMode == MOVIE_RECORD_MODE_OVERWRITE) CheckMenuRadioItem(fceumenu, ID_FILE_RECORDMODE_TRUNCATE, ID_FILE_RECORDMODE_INSERT, ID_FILE_RECORDMODE_OVERWRITE, MF_BYCOMMAND); - if (movieRecordMode == MOVIE_RECORD_MODE_INSERT) CheckMenuRadioItem(fceumenu, ID_FILE_RECORDMODE_TRUNCATE, ID_FILE_RECORDMODE_INSERT, ID_FILE_RECORDMODE_INSERT, MF_BYCOMMAND); + CheckMenuItem(fceumenu, ID_FILE_RECORDMODE_TRUNCATE, movieRecordMode == MOVIE_RECORD_MODE_TRUNCATE ? MF_CHECKED : MF_UNCHECKED); + CheckMenuItem(fceumenu, ID_FILE_RECORDMODE_OVERWRITE, movieRecordMode == MOVIE_RECORD_MODE_OVERWRITE ? MF_CHECKED : MF_UNCHECKED); + CheckMenuItem(fceumenu, ID_FILE_RECORDMODE_INSERT, movieRecordMode == MOVIE_RECORD_MODE_INSERT ? MF_CHECKED : MF_UNCHECKED); CheckMenuItem(fceumenu, ID_FILE_MOVIE_TOGGLEREAD, movie_readonly ? MF_CHECKED : MF_UNCHECKED); CheckMenuItem(fceumenu, ID_FILE_OPENLUAWINDOW, LuaConsoleHWnd ? MF_CHECKED : MF_UNCHECKED); CheckMenuItem(fceumenu, ID_AVI_ENABLEHUDRECORDING, FCEUI_AviEnableHUDrecording() ? MF_CHECKED : MF_UNCHECKED); @@ -516,9 +514,9 @@ void UpdateContextMenuItems(HMENU context, int whichContext) EnableMenuItem(context, FCEUX_CONTEXT_DELETE_1_FRAME, MF_BYCOMMAND | MF_GRAYED); EnableMenuItem(context, FCEUX_CONTEXT_TRUNCATE_MOVIE, MF_BYCOMMAND | MF_GRAYED); } - if (movieRecordMode == MOVIE_RECORD_MODE_TRUNCATE) CheckMenuRadioItem(context, FCEUX_CONTEXT_RECORDMODE_TRUNCATE, FCEUX_CONTEXT_RECORDMODE_INSERT, FCEUX_CONTEXT_RECORDMODE_TRUNCATE, MF_BYCOMMAND); - if (movieRecordMode == MOVIE_RECORD_MODE_OVERWRITE) CheckMenuRadioItem(context, FCEUX_CONTEXT_RECORDMODE_TRUNCATE, FCEUX_CONTEXT_RECORDMODE_INSERT, FCEUX_CONTEXT_RECORDMODE_OVERWRITE, MF_BYCOMMAND); - if (movieRecordMode == MOVIE_RECORD_MODE_INSERT) CheckMenuRadioItem(context, FCEUX_CONTEXT_RECORDMODE_TRUNCATE, FCEUX_CONTEXT_RECORDMODE_INSERT, FCEUX_CONTEXT_RECORDMODE_INSERT, MF_BYCOMMAND); + CheckMenuItem(context, FCEUX_CONTEXT_RECORDMODE_TRUNCATE, movieRecordMode == MOVIE_RECORD_MODE_TRUNCATE ? MF_CHECKED : MF_UNCHECKED); + CheckMenuItem(context, FCEUX_CONTEXT_RECORDMODE_OVERWRITE, movieRecordMode == MOVIE_RECORD_MODE_OVERWRITE ? MF_CHECKED : MF_UNCHECKED); + CheckMenuItem(context, FCEUX_CONTEXT_RECORDMODE_INSERT, movieRecordMode == MOVIE_RECORD_MODE_INSERT ? MF_CHECKED : MF_UNCHECKED); //Undo Loadstate if (CheckBackupSaveStateExist() && (undoLS || redoLS)) @@ -570,12 +568,12 @@ void UpdateContextMenuItems(HMENU context, int whichContext) if (tog) { InsertMenu(context, 0xFFFF, MF_SEPARATOR, 0, ""); - InsertMenu(context,0xFFFF, MF_BYCOMMAND, FCEUX_CONTEXT_UNHIDEMENU, HOTKEYMENUINDEX::getQualifiedMenuText("Unhide Menu", EMUCMD_HIDE_MENU_TOGGLE).c_str()); + InsertMenu(context,0xFFFF, MF_BYCOMMAND, FCEUX_CONTEXT_UNHIDEMENU, "Unhide Menu"); } if (whichContext > 1 && currMovieData.subtitles.size() != 0){ // At position 3 is "View comments and subtitles". Insert this there: - InsertMenu(context,0x3, MF_BYPOSITION, FCEUX_CONTEXT_TOGGLESUBTITLES, HOTKEYMENUINDEX::getQualifiedMenuText(movieSubtitles ? "Subtitle Display: On" : "Subtitle Display: Off", EMUCMD_MISC_DISPLAY_MOVIESUBTITLES).c_str()); + InsertMenu(context,0x3, MF_BYPOSITION, FCEUX_CONTEXT_TOGGLESUBTITLES, movieSubtitles ? "Subtitle Display: On" : "Subtitle Display: Off"); // At position 4(+1) is after View comments and subtitles. Insert this there: InsertMenu(context,0x5, MF_BYPOSITION, FCEUX_CONTEXT_DUMPSUBTITLES, "Dump Subtitles to SRT file"); } @@ -1069,9 +1067,7 @@ bool ALoad(const char *nameo, char* innerFilename, bool silent) { int oldPaused = EmulationPaused; - // loading is not started yet, so the game can continue; - // FCEUI_LoadGameVirtual() already had an FCEUI_CloseGame() call after loading success; - // if (GameInfo) FCEUI_CloseGame(); + if (GameInfo) FCEUI_CloseGame(); if (FCEUI_LoadGameVirtual(nameo, !(pal_setting_specified || dendy_setting_specified), silent)) { @@ -1422,9 +1418,7 @@ LRESULT FAR PASCAL AppWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) whichContext = 0; // NoGame hfceuxcontext = LoadMenu(fceu_hInstance,"FCEUCONTEXTMENUS"); - hmenuList[FCEUMENU_HWND::FCEUMENU_CONTEXT] = hfceuxcontext; hfceuxcontextsub = GetSubMenu(hfceuxcontext, whichContext); - hmenuList[whichContext] = hfceuxcontextsub; UpdateContextMenuItems(hfceuxcontextsub, whichContext); pt.x = LOWORD(lParam); //Get mouse x in terms of client area pt.y = HIWORD(lParam); //Get mouse y in terms of client area @@ -1548,25 +1542,12 @@ LRESULT FAR PASCAL AppWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) { UINT len; - /* - Using DragQueryFileW() and wcstombs() is not a proper way to convert Unicode string - to a multibyte one, the system has its own codepage but wcstombs seems ignores it and only - convert it to UTF-8. Similarly, functions such named FCEUD_UTF8fopen() acturally perform ANSI - behaviour which follows the codepage of the system rather than UTF-8. I knew Windows with some - languages has a very narrow codepage like 1252 and may have a problem to load a filename - which contains extra characters without its convert, but the wcstombs() may corrupt the string - to garbage text to the title and menu in some multibyte language Windows systems, it's due to - the limitation of ANSI application and system itself, not the fault of the emulator, so there's - no responsibility for the emulator to use a different API to solve it, just leave it as the - default definition. - */ - len = DragQueryFile((HDROP)wParam, 0, 0, 0) + 1; - char* ftmp = new char[len]; + len=DragQueryFileW((HDROP)wParam,0,0,0)+1; + wchar_t* wftmp = new wchar_t[len]; { - DragQueryFile((HDROP)wParam,0,ftmp,len); - // std::string fileDropped = wcstombs(wftmp); - std::string fileDropped = ftmp; - delete[] ftmp; + DragQueryFileW((HDROP)wParam,0,wftmp,len); + std::string fileDropped = wcstombs(wftmp); + delete[] wftmp; //adelikat: Drag and Drop only checks file extension, the internal functions are responsible for file error checking //------------------------------------------------------- @@ -2109,9 +2090,6 @@ LRESULT FAR PASCAL AppWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) break; case ID_NEWPPU: - if(overclock_enabled && - MessageBox(hWnd, "The new PPU doesn't support overclocking, it will be disabled. Do you want to continue?", "Overclocking", MB_ICONQUESTION | MB_YESNO) == IDNO) - break; case ID_OLDPPU: FCEU_TogglePPU(); break; @@ -2689,7 +2667,6 @@ int CreateMainWindow() AdjustWindowRectEx(&tmp, WS_OVERLAPPEDWINDOW, 1, 0); fceumenu = LoadMenu(fceu_hInstance,"FCEUMENU"); - hmenuList[FCEUMENU_MAIN] = fceumenu; recentmenu = CreateMenu(); recentluamenu = CreateMenu(); @@ -2896,274 +2873,300 @@ void ChangeMenuItemText(int menuitem, string text) SetMenuItemInfo(fceumenu, menuitem, FALSE, &moo); } -string HOTKEYMENUINDEX::getQualifiedMenuText() { - int length = GetMenuString(hmenuList[hmenu_index], menu_id, 0, 0, flags) + 1; - char* buffer = new char[length]; - GetMenuString(hmenuList[hmenu_index], menu_id, buffer, length, flags); - if (char* pTab = strrchr(buffer, '\t')) - *pTab = '\0'; - std::string menustr = HOTKEYMENUINDEX::getQualifiedMenuText(buffer, cmd_id); - delete[] buffer; - return menustr; -} - -string HOTKEYMENUINDEX::getQualifiedMenuText(char* text, int emu_cmd_id) { - char* combo = GetKeyComboName(FCEUD_CommandMapping[emu_cmd_id]); - char* str = new char[strlen(text) + strlen(combo) + strlen("\t") + 1]; - strcpy(str, text); - if (strcmp("", combo)) - { - strcat(str, "\t"); - strcat(str, combo); - } - string menustr = str; - delete[] str; - return menustr; -} - -struct HOTKEYMENUINDEX HOTKEYMENUINDEXs[] = { - // "&Open..." - { MENU_OPEN_FILE,EMUCMD_OPENROM }, - // "Open ROM" - { FCEU_CONTEXT_OPENROM,EMUCMD_OPENROM,FCEUMENU_CONTEXT_OFF }, - // "&Close" - { MENU_CLOSE_FILE,EMUCMD_CLOSEROM }, - // "Close ROM" - { FCEU_CONTEXT_CLOSEROM,EMUCMD_CLOSEROM,FCEUMENU_CONTEXT_GAME }, - // "&Load State" - { MENU_LOADSTATE,EMUCMD_LOAD_STATE,FCEUMENU_CONTEXT_GAME }, - // "&Save State" - { MENU_SAVESTATE,EMUCMD_SAVE_STATE }, - // "Load State &From..." - { MENU_LOAD_STATE,EMUCMD_LOAD_STATE_FROM }, - // "Save State &As..." - { MENU_SAVE_STATE,EMUCMD_SAVE_STATE_AS }, - // "&Next save slot" - { MENU_NEXTSAVESTATE,EMUCMD_SAVE_SLOT_NEXT }, - // "&Previous save slot" - { MENU_PREVIOUSSAVESTATE,EMUCMD_SAVE_SLOT_PREV }, - // "&View save slots" - { MENU_VIEWSAVESLOTS,EMUCMD_MISC_SHOWSTATES }, - // "Record Movie..." - { FCEUX_CONTEXT_RECORDMOVIE,EMUCMD_MOVIE_RECORD_TO,FCEUMENU_CONTEXT_GAME }, - // "&Record Movie..." - { MENU_RECORD_MOVIE,EMUCMD_MOVIE_RECORD_TO }, - // "Play Movie..." - { FCEUX_CONTEXT_REPLAYMOVIE,EMUCMD_MOVIE_REPLAY_FROM,FCEUMENU_CONTEXT_GAME }, - // "&Play Movie..." - { MENU_REPLAY_MOVIE,EMUCMD_MOVIE_REPLAY_FROM }, - // "&Stop Movie" - { MENU_STOP_MOVIE,EMUCMD_MOVIE_STOP }, - // "Stop Movie Replay" - { FCEU_CONTEXT_STOPMOVIE,EMUCMD_MOVIE_STOP,FCEUMENU_CONTEXT_PLAYING_READONLY }, - // "Stop Movie Replay" - { FCEU_CONTEXT_STOPMOVIE,EMUCMD_MOVIE_STOP,FCEUMENU_CONTEXT_PLAYING_READWRITE }, - // "Stop Movie Recording" - { FCEU_CONTEXT_STOPMOVIE,EMUCMD_MOVIE_STOP,FCEUMENU_CONTEXT_RECORDING_READONLY }, - // "Stop Movie Recording" - { FCEU_CONTEXT_STOPMOVIE,EMUCMD_MOVIE_STOP,FCEUMENU_CONTEXT_RECORDING_READWRITE }, - // "Play Movie from Beginning" - { FCEU_CONTEXT_PLAYMOVIEFROMBEGINNING,EMUCMD_MOVIE_PLAY_FROM_BEGINNING,FCEUMENU_CONTEXT_PLAYING_READONLY }, - // "Play Movie from Beginning" - { FCEU_CONTEXT_PLAYMOVIEFROMBEGINNING,EMUCMD_MOVIE_PLAY_FROM_BEGINNING,FCEUMENU_CONTEXT_PLAYING_READWRITE }, - // "Play Movie from Beginning" - { FCEU_CONTEXT_PLAYMOVIEFROMBEGINNING,EMUCMD_MOVIE_PLAY_FROM_BEGINNING,FCEUMENU_CONTEXT_RECORDING_READONLY }, - // "Play Movie from Beginning" - { FCEU_CONTEXT_PLAYMOVIEFROMBEGINNING,EMUCMD_MOVIE_PLAY_FROM_BEGINNING,FCEUMENU_CONTEXT_RECORDING_READWRITE }, - // "Play from &Beginning" - { ID_FILE_PLAYMOVIEFROMBEGINNING,EMUCMD_MOVIE_PLAY_FROM_BEGINNING }, - // "&Read-only" - { ID_FILE_MOVIE_TOGGLEREAD,EMUCMD_MOVIE_READONLY_TOGGLE }, - // "Toggle to read+write" - { FCEUX_CONTEXT_READONLYTOGGLE,EMUCMD_MOVIE_READONLY_TOGGLE,FCEUMENU_CONTEXT_PLAYING_READONLY }, - // "Toggle to Read-only" - { FCEUX_CONTEXT_READONLYTOGGLE,EMUCMD_MOVIE_READONLY_TOGGLE,FCEUMENU_CONTEXT_PLAYING_READWRITE }, - // "Toggle to read+write" - { FCEUX_CONTEXT_READONLYTOGGLE,EMUCMD_MOVIE_READONLY_TOGGLE,FCEUMENU_CONTEXT_RECORDING_READONLY }, - // "Toggle to Read-only" - { FCEUX_CONTEXT_READONLYTOGGLE,EMUCMD_MOVIE_READONLY_TOGGLE,FCEUMENU_CONTEXT_RECORDING_READWRITE }, - // "&Screenshot" - { ID_FILE_SCREENSHOT,EMUCMD_SCREENSHOT }, - // "Screenshot" - { FCEUX_CONTEXT_SCREENSHOT,EMUCMD_SCREENSHOT, FCEUMENU_CONTEXT_GAME }, - // "&Record AVI..." - { MENU_RECORD_AVI,EMUCMD_AVI_RECORD_AS }, - //"&Stop AVI" - { MENU_STOP_AVI,EMUCMD_AVI_STOP }, - // "&Reset" - { MENU_RESET,EMUCMD_RESET }, - // "&Power" - { MENU_POWER,EMUCMD_POWER }, - // "&Eject/Insert Disk" - { MENU_EJECT_DISK,EMUCMD_FDS_EJECT_INSERT }, - // "&Switch Disk Side" - { MENU_SWITCH_DISK,EMUCMD_FDS_SIDE_SELECT }, - // "&Insert Coin" - { MENU_INSERT_COIN,EMUCMD_VSUNI_COIN }, - // "Speed &Up" - { ID_NES_SPEEDUP,EMUCMD_SPEED_FASTER }, - // "Slow &Down" - { ID_NES_SLOWDOWN,EMUCMD_SPEED_SLOWER }, - // "&Slowest Speed" - { ID_NES_SLOWESTSPEED,EMUCMD_SPEED_SLOWEST }, - // "&Normal Speed" - { ID_NES_NORMALSPEED,EMUCMD_SPEED_NORMAL }, - // "&Turbo" - { ID_NES_TURBO,EMUCMD_SPEED_TURBO_TOGGLE }, - // "&Pause" - { ID_NES_PAUSE,EMUCMD_PAUSE }, - // "&Hide Menu" - { MENU_HIDE_MENU,EMUCMD_HIDE_MENU_TOGGLE }, - // "Unhide Menu" - { FCEUX_CONTEXT_UNHIDEMENU,EMUCMD_HIDE_MENU_TOGGLE,FCEUMENU_CONTEXT_GAME }, - // "Unhide Menu" - { FCEUX_CONTEXT_UNHIDEMENU,EMUCMD_HIDE_MENU_TOGGLE,FCEUMENU_CONTEXT_PLAYING_READONLY }, - // "Unhide Menu" - { FCEUX_CONTEXT_UNHIDEMENU,EMUCMD_HIDE_MENU_TOGGLE,FCEUMENU_CONTEXT_PLAYING_READWRITE }, - // "Unhide Menu" - { FCEUX_CONTEXT_UNHIDEMENU,EMUCMD_HIDE_MENU_TOGGLE,FCEUMENU_CONTEXT_RECORDING_READONLY }, - // "Unhide Menu" - { FCEUX_CONTEXT_UNHIDEMENU,EMUCMD_HIDE_MENU_TOGGLE,FCEUMENU_CONTEXT_RECORDING_READWRITE }, - // "&Frame Adv. - Skip Lag" - { MENU_DISPLAY_FA_LAGSKIP,EMUCMD_FRAMEADV_SKIPLAG }, - // "&Lag Counter" - { MENU_DISPLAY_LAGCOUNTER,EMUCMD_MISC_DISPLAY_LAGCOUNTER_TOGGLE }, - // "&Frame Counter" - { ID_DISPLAY_FRAMECOUNTER,EMUCMD_MOVIE_FRAME_DISPLAY_TOGGLE }, - // "&Rerecord Counter - { ID_DISPLAY_RERECORDCOUNTER,EMUCMD_RERECORD_DISPLAY_TOGGLE }, - // "&Movie status icon" - { ID_DISPLAY_MOVIESTATUSICON,EMUCMD_MOVIE_ICON_DISPLAY_TOGGLE }, - // "FPS" - { ID_DISPLAY_FPS,EMUCMD_FPS_DISPLAY_TOGGLE }, - // "Graphics: &BG" - { MENU_DISPLAY_BG,EMUCMD_MISC_DISPLAY_BG_TOGGLE }, - // "Graphics: &OBJ" - { MENU_DISPLAY_OBJ,EMUCMD_MISC_DISPLAY_OBJ_TOGGLE }, - // "&Cheats..." - { MENU_CHEATS,EMUCMD_TOOL_OPENCHEATS }, - // "RAM Search..." - { ID_RAM_SEARCH,EMUCMD_TOOL_OPENRAMSEARCH }, - // "RAM Watch..." - { ID_RAM_WATCH,EMUCMD_TOOL_OPENRAMWATCH }, - // "&Memory Watch..." - { MENU_MEMORY_WATCH,EMUCMD_TOOL_OPENMEMORYWATCH }, - // "&TAS Editor..." - { MENU_TASEDITOR,EMUCMD_MISC_OPENTASEDITOR }, - // "&Debugger..." - { MENU_DEBUGGER,EMUCMD_TOOL_OPENDEBUGGER }, - // "&PPU Viewer..." - { MENU_PPUVIEWER,EMUCMD_TOOL_OPENPPU }, - // "&Name Table Viewer..." - { MENU_NAMETABLEVIEWER,EMUCMD_TOOL_OPENNTVIEW }, - // "&Hex Editor..." - { MENU_HEXEDITOR,EMUCMD_TOOL_OPENHEX }, - // "&Trace Logger..." - { MENU_TRACELOGGER,EMUCMD_TOOL_OPENTRACELOGGER }, - // "&Code/Data Logger..." - { MENU_CDLOGGER,EMUCMD_TOOL_OPENCDLOGGER }, - // "Undo savestate" - { FCEUX_CONTEXT_UNDOSAVESTATE,EMUCMD_MISC_UNDOREDOSAVESTATE,FCEUMENU_CONTEXT_GAME }, - // "Undo savestate" - { FCEUX_CONTEXT_UNDOSAVESTATE,EMUCMD_MISC_UNDOREDOSAVESTATE,FCEUMENU_CONTEXT_PLAYING_READONLY }, - // "Undo savestate" - { FCEUX_CONTEXT_UNDOSAVESTATE,EMUCMD_MISC_UNDOREDOSAVESTATE,FCEUMENU_CONTEXT_PLAYING_READWRITE }, - // "Undo savestate" - { FCEUX_CONTEXT_UNDOSAVESTATE,EMUCMD_MISC_UNDOREDOSAVESTATE,FCEUMENU_CONTEXT_RECORDING_READONLY }, - // "Undo savestate" - { FCEUX_CONTEXT_UNDOSAVESTATE,EMUCMD_MISC_UNDOREDOSAVESTATE,FCEUMENU_CONTEXT_RECORDING_READWRITE }, - // "Rewind to last auto-save" - { FCEUX_CONTEXT_REWINDTOLASTAUTO,EMUCMD_MISC_AUTOSAVE,FCEUMENU_CONTEXT_GAME }, - // "Rewind to last auto-save" - { FCEUX_CONTEXT_REWINDTOLASTAUTO,EMUCMD_MISC_AUTOSAVE,FCEUMENU_CONTEXT_PLAYING_READONLY }, - // "Rewind to last auto-save" - { FCEUX_CONTEXT_REWINDTOLASTAUTO,EMUCMD_MISC_AUTOSAVE,FCEUMENU_CONTEXT_PLAYING_READWRITE }, - // "Rewind to last auto-save" - { FCEUX_CONTEXT_REWINDTOLASTAUTO,EMUCMD_MISC_AUTOSAVE,FCEUMENU_CONTEXT_RECORDING_READONLY }, - // "Rewind to last auto-save" - { FCEUX_CONTEXT_REWINDTOLASTAUTO,EMUCMD_MISC_AUTOSAVE,FCEUMENU_CONTEXT_RECORDING_READWRITE }, - // "Toggle to Recording" - { FCEUX_CONTEXT_TOGGLE_RECORDING,EMUCMD_MOVIE_TOGGLE_RECORDING,FCEUMENU_CONTEXT_PLAYING_READONLY }, - // "Toggle to Recording" - { FCEUX_CONTEXT_TOGGLE_RECORDING,EMUCMD_MOVIE_TOGGLE_RECORDING,FCEUMENU_CONTEXT_PLAYING_READWRITE }, - // "Toggle to Playing" - { FCEUX_CONTEXT_TOGGLE_RECORDING,EMUCMD_MOVIE_TOGGLE_RECORDING,FCEUMENU_CONTEXT_RECORDING_READONLY }, - // "Toggle to Playing" - { FCEUX_CONTEXT_TOGGLE_RECORDING,EMUCMD_MOVIE_TOGGLE_RECORDING,FCEUMENU_CONTEXT_RECORDING_READWRITE }, - // "&Toggle Recording/Playing" - { ID_FILE_TOGGLE_RECORDING_MOVIE,EMUCMD_MOVIE_TOGGLE_RECORDING }, - // "&Truncate at Current Frame" - { ID_FILE_TRUNCATE_MOVIE,EMUCMD_MOVIE_TRUNCATE }, - // "Truncate at Current Frame" - { FCEUX_CONTEXT_TRUNCATE_MOVIE,EMUCMD_MOVIE_TRUNCATE,FCEUMENU_CONTEXT_PLAYING_READONLY }, - // "Truncate at Current Frame" - { FCEUX_CONTEXT_TRUNCATE_MOVIE,EMUCMD_MOVIE_TRUNCATE,FCEUMENU_CONTEXT_PLAYING_READWRITE }, - // "Truncate at Current Frame" - { FCEUX_CONTEXT_TRUNCATE_MOVIE,EMUCMD_MOVIE_TRUNCATE,FCEUMENU_CONTEXT_RECORDING_READONLY }, - // "Truncate at Current Frame" - { FCEUX_CONTEXT_TRUNCATE_MOVIE,EMUCMD_MOVIE_TRUNCATE,FCEUMENU_CONTEXT_RECORDING_READWRITE }, - // "&Insert 1 Frame" - { ID_FILE_INSERT_1_FRAME,EMUCMD_MOVIE_INSERT_1_FRAME }, - // "Insert 1 Frame" - { FCEUX_CONTEXT_INSERT_1_FRAME,EMUCMD_MOVIE_INSERT_1_FRAME,FCEUMENU_CONTEXT_PLAYING_READONLY }, - // "Insert 1 Frame" - { FCEUX_CONTEXT_INSERT_1_FRAME,EMUCMD_MOVIE_INSERT_1_FRAME,FCEUMENU_CONTEXT_PLAYING_READWRITE }, - // "Insert 1 Frame" - { FCEUX_CONTEXT_INSERT_1_FRAME,EMUCMD_MOVIE_INSERT_1_FRAME,FCEUMENU_CONTEXT_RECORDING_READONLY }, - // "Insert 1 Frame" - { FCEUX_CONTEXT_INSERT_1_FRAME,EMUCMD_MOVIE_INSERT_1_FRAME,FCEUMENU_CONTEXT_RECORDING_READWRITE }, - // "&Delete 1 Frame" - { ID_FILE_DELETE_1_FRAME,EMUCMD_MOVIE_DELETE_1_FRAME }, - // "Delete 1 Frame" - { FCEUX_CONTEXT_DELETE_1_FRAME,EMUCMD_MOVIE_DELETE_1_FRAME,FCEUMENU_CONTEXT_PLAYING_READONLY }, - // "Delete 1 Frame" - { FCEUX_CONTEXT_DELETE_1_FRAME,EMUCMD_MOVIE_DELETE_1_FRAME,FCEUMENU_CONTEXT_PLAYING_READWRITE }, - // "Delete 1 Frame" - { FCEUX_CONTEXT_DELETE_1_FRAME,EMUCMD_MOVIE_DELETE_1_FRAME,FCEUMENU_CONTEXT_RECORDING_READONLY }, - // "Delete 1 Frame" - { FCEUX_CONTEXT_DELETE_1_FRAME,EMUCMD_MOVIE_DELETE_1_FRAME,FCEUMENU_CONTEXT_RECORDING_READWRITE }, - // "&Next Record Mode" - { ID_FILE_NEXTRECORDMODE,EMUCMD_MOVIE_NEXT_RECORD_MODE }, - // "&Truncate - { ID_FILE_RECORDMODE_TRUNCATE,EMUCMD_MOVIE_RECORD_MODE_TRUNCATE }, - // "&Truncate" - { FCEUX_CONTEXT_RECORDMODE_TRUNCATE,EMUCMD_MOVIE_RECORD_MODE_TRUNCATE,FCEUMENU_CONTEXT_PLAYING_READONLY }, - // "&Truncate" - { FCEUX_CONTEXT_RECORDMODE_TRUNCATE,EMUCMD_MOVIE_RECORD_MODE_TRUNCATE,FCEUMENU_CONTEXT_PLAYING_READWRITE }, - // "&Truncate" - { FCEUX_CONTEXT_RECORDMODE_TRUNCATE,EMUCMD_MOVIE_RECORD_MODE_TRUNCATE,FCEUMENU_CONTEXT_RECORDING_READONLY }, - // "&Truncate" - { FCEUX_CONTEXT_RECORDMODE_TRUNCATE,EMUCMD_MOVIE_RECORD_MODE_TRUNCATE,FCEUMENU_CONTEXT_RECORDING_READWRITE }, - // "&Overwrite[W]" - { ID_FILE_RECORDMODE_OVERWRITE,EMUCMD_MOVIE_RECORD_MODE_OVERWRITE }, - // "&Overwrite[W]" - { FCEUX_CONTEXT_RECORDMODE_OVERWRITE,EMUCMD_MOVIE_RECORD_MODE_OVERWRITE,FCEUMENU_CONTEXT_PLAYING_READONLY }, - // "&Overwrite[W]" - { FCEUX_CONTEXT_RECORDMODE_OVERWRITE,EMUCMD_MOVIE_RECORD_MODE_OVERWRITE,FCEUMENU_CONTEXT_PLAYING_READWRITE }, - // "&Overwrite[W]" - { FCEUX_CONTEXT_RECORDMODE_OVERWRITE,EMUCMD_MOVIE_RECORD_MODE_OVERWRITE,FCEUMENU_CONTEXT_RECORDING_READONLY }, - // "&Overwrite[W]" - { FCEUX_CONTEXT_RECORDMODE_OVERWRITE,EMUCMD_MOVIE_RECORD_MODE_OVERWRITE,FCEUMENU_CONTEXT_RECORDING_READWRITE }, - // "&Insert[I]" - { ID_FILE_RECORDMODE_INSERT,EMUCMD_MOVIE_RECORD_MODE_INSERT }, - // "&Insert[I]" - { FCEUX_CONTEXT_RECORDMODE_INSERT,EMUCMD_MOVIE_RECORD_MODE_INSERT,FCEUMENU_CONTEXT_PLAYING_READONLY }, - // "&Insert[I]" - { FCEUX_CONTEXT_RECORDMODE_INSERT,EMUCMD_MOVIE_RECORD_MODE_INSERT,FCEUMENU_CONTEXT_PLAYING_READWRITE }, - // "&Insert[I]" - { FCEUX_CONTEXT_RECORDMODE_INSERT,EMUCMD_MOVIE_RECORD_MODE_INSERT,FCEUMENU_CONTEXT_RECORDING_READONLY }, - // "&Insert[I]" - { FCEUX_CONTEXT_RECORDMODE_INSERT,EMUCMD_MOVIE_RECORD_MODE_INSERT,FCEUMENU_CONTEXT_RECORDING_READWRITE } -}; - -int HOTKEYMENUINDEX::updateMenuText() { - return ModifyMenu(hmenuList[hmenu_index], menu_id, GetMenuState(hmenuList[hmenu_index], menu_id, flags) | flags, menu_id, getQualifiedMenuText().c_str()); -} - void UpdateMenuHotkeys() { - for (int i = 0; i < sizeof(HOTKEYMENUINDEXs) / sizeof(HOTKEYMENUINDEX); ++i) - HOTKEYMENUINDEXs[i].updateMenuText(); + //Update all menu items that can be called from a hotkey to include the current hotkey assignment + string combo, combined; + + //-------------------------------FILE--------------------------------------- + //Open ROM + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_OPENROM]); + combined = "&Open ROM...\t" + combo; + ChangeMenuItemText(MENU_OPEN_FILE, combined); + + //Close ROM + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_CLOSEROM]); + combined = "&Close\t" + combo; + ChangeMenuItemText(MENU_CLOSE_FILE, combined); + + //Load State + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_LOAD_STATE]); + combined = "&Load State\t" + combo; + ChangeMenuItemText(MENU_LOADSTATE, combined); + + //Save State + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_SAVE_STATE]); + combined = "&Save State\t" + combo; + ChangeMenuItemText(MENU_SAVESTATE, combined); + + //Loadstate from + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_LOAD_STATE_FROM]); + combined = "Load State &From...\t" + combo; + ChangeMenuItemText(MENU_LOAD_STATE, combined); + + //Savestate as + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_SAVE_STATE_AS]); + combined = "Save State &As...\t" + combo; + ChangeMenuItemText(MENU_SAVE_STATE, combined); + + //Next Save Slot + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_SAVE_SLOT_NEXT]); + combined = "&Next save slot\t" + combo; + ChangeMenuItemText(MENU_NEXTSAVESTATE, combined); + + //Previous Save Slot + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_SAVE_SLOT_PREV]); + combined = "&Previous save slot\t" + combo; + ChangeMenuItemText(MENU_PREVIOUSSAVESTATE, combined); + + //View Save Slots + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MISC_SHOWSTATES]); + combined = "&View save slots\t" + combo; + ChangeMenuItemText(MENU_VIEWSAVESLOTS, combined); + + //Record Movie + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_RECORD_TO]); + combined = "&Record Movie...\t" + combo; + ChangeMenuItemText(MENU_RECORD_MOVIE, combined); + + //Play movie + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_REPLAY_FROM]); + combined = "&Play Movie...\t" + combo; + ChangeMenuItemText(MENU_REPLAY_MOVIE, combined); + + //Stop movie + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_STOP]); + combined = "&Stop Movie\t" + combo; + ChangeMenuItemText(MENU_STOP_MOVIE, combined); + + //Play Movie from Beginning + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_PLAY_FROM_BEGINNING]); + combined = "Play from &Beginning\t" + combo; + ChangeMenuItemText(ID_FILE_PLAYMOVIEFROMBEGINNING, combined); + + //Toggle Movie Recording/Playing + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_TOGGLE_RECORDING]); + combined = "&Toggle Recording/Playing\t" + combo; + ChangeMenuItemText(ID_FILE_TOGGLE_RECORDING_MOVIE, combined); + + //Insert 1 Frame + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_INSERT_1_FRAME]); + combined = "&Insert 1 Frame\t" + combo; + ChangeMenuItemText(ID_FILE_INSERT_1_FRAME, combined); + + //Delete 1 Frame + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_DELETE_1_FRAME]); + combined = "&Delete 1 Frame\t" + combo; + ChangeMenuItemText(ID_FILE_DELETE_1_FRAME, combined); + + //Truncate Movie at Current Frame + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_TRUNCATE]); + combined = "&Truncate at &Current Frame\t" + combo; + ChangeMenuItemText(ID_FILE_TRUNCATE_MOVIE, combined); + + //Read only + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_READONLY_TOGGLE]); + combined = "&Read only\t" + combo; + ChangeMenuItemText(ID_FILE_MOVIE_TOGGLEREAD, combined); + + //Next Record Mode + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_NEXT_RECORD_MODE]); + combined = "&Next Record Mode\t" + combo; + ChangeMenuItemText(ID_FILE_NEXTRECORDMODE, combined); + + //Prev Record Mode + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_PREV_RECORD_MODE]); + combined = "&Prev Record Mode\t" + combo; + ChangeMenuItemText(ID_FILE_PREVRECORDMODE, combined); + + //Record Mode Truncate + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_RECORD_MODE_TRUNCATE]); + combined = "&Truncate\t" + combo; + ChangeMenuItemText(ID_FILE_RECORDMODE_TRUNCATE, combined); + + //Record Mode Overwrite + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_RECORD_MODE_OVERWRITE]); + combined = "&Overwrite[W]\t" + combo; + ChangeMenuItemText(ID_FILE_RECORDMODE_OVERWRITE, combined); + + //Record Mode Insert + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_RECORD_MODE_INSERT]); + combined = "&Insert[I]\t" + combo; + ChangeMenuItemText(ID_FILE_RECORDMODE_INSERT, combined); + + //Screenshot + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_SCREENSHOT]); + combined = "&Screenshot\t" + combo; + ChangeMenuItemText(ID_FILE_SCREENSHOT, combined); + + //Record AVI + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_AVI_RECORD_AS]); + combined = "&Record AVI...\t" + combo; + ChangeMenuItemText(MENU_RECORD_AVI, combined); + + //Stop AVI + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_AVI_STOP]); + combined = "&Stop AVI\t" + combo; + ChangeMenuItemText(MENU_STOP_AVI, combined); + + //-------------------------------NES---------------------------------------- + //Reset + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_RESET]); + combined = "&Reset\t" + combo; + ChangeMenuItemText(MENU_RESET, combined); + + //Power + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_POWER]); + combined = "&Power\t" + combo; + ChangeMenuItemText(MENU_POWER, combined); + + //Eject/Insert Disk + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_FDS_EJECT_INSERT]); + combined = "&Eject/Insert Disk\t" + combo; + ChangeMenuItemText(MENU_EJECT_DISK, combined); + + //Switch Disk Side + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_FDS_SIDE_SELECT]); + combined = "&Switch Disk Side\t" + combo; + ChangeMenuItemText(MENU_SWITCH_DISK, combined); + + //Insert Coin + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_VSUNI_COIN]); + combined = "&Insert Coin\t" + combo; + ChangeMenuItemText(MENU_INSERT_COIN, combined); + + //Speed Up + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_SPEED_FASTER]); + combined = "Speed &Up\t" + combo; + ChangeMenuItemText(ID_NES_SPEEDUP, combined); + + //Slow Down + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_SPEED_SLOWER]); + combined = "Slow &Down\t" + combo; + ChangeMenuItemText(ID_NES_SLOWDOWN, combined); + + //Pause + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_PAUSE]); + combined = "&Pause\t" + combo; + ChangeMenuItemText(ID_NES_PAUSE, combined); + + //Slowest Speed + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_SPEED_SLOWEST]); + combined = "&Slowest Speed\t" + combo; + ChangeMenuItemText(ID_NES_SLOWESTSPEED, combined); + + //Normal Speed + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_SPEED_NORMAL]); + combined = "&Normal Speed\t" + combo; + ChangeMenuItemText(ID_NES_NORMALSPEED, combined); + + //Turbo + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_SPEED_TURBO_TOGGLE]); + combined = "&Turbo\t" + combo; + ChangeMenuItemText(ID_NES_TURBO, combined); + + //-------------------------------Config------------------------------------- + //Hide Menu + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_HIDE_MENU_TOGGLE]); + combined = "&Hide Menu\t" + combo; + ChangeMenuItemText(MENU_HIDE_MENU, combined); + + //Frame Adv. skip lag + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_FRAMEADV_SKIPLAG]); + combined = "&Frame Adv. - Skip Lag\t" + combo; + ChangeMenuItemText(MENU_DISPLAY_FA_LAGSKIP, combined); + + //Lag Counter + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MISC_DISPLAY_LAGCOUNTER_TOGGLE]); + combined = "&Lag Counter\t" + combo; + ChangeMenuItemText(MENU_DISPLAY_LAGCOUNTER, combined); + + //Frame Counter + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_FRAME_DISPLAY_TOGGLE]); + combined = "&Frame Counter\t" + combo; + ChangeMenuItemText(ID_DISPLAY_FRAMECOUNTER, combined); + + //Rerecord Counter + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_RERECORD_DISPLAY_TOGGLE]); + combined = "&Rerecord Counter\t" + combo; + ChangeMenuItemText(ID_DISPLAY_RERECORDCOUNTER, combined); + + //Movie status icon + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_ICON_DISPLAY_TOGGLE]); + combined = "&Movie status icon\t" + combo; + ChangeMenuItemText(ID_DISPLAY_MOVIESTATUSICON, combined); + + //FPS counter + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_FPS_DISPLAY_TOGGLE]); + combined = "FPS\t" + combo; + ChangeMenuItemText(ID_DISPLAY_FPS, combined); + + //Graphics: BG + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MISC_DISPLAY_BG_TOGGLE]); + combined = "Graphics: &BG\t" + combo; + ChangeMenuItemText(MENU_DISPLAY_BG, combined); + + //Graphics: OBJ + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MISC_DISPLAY_OBJ_TOGGLE]); + combined = "Graphics: &OBJ\t" + combo; + ChangeMenuItemText(MENU_DISPLAY_OBJ, combined); + + //-------------------------------Tools-------------------------------------- + //Open Cheats + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_TOOL_OPENCHEATS]); + combined = "&Cheats...\t" + combo; + ChangeMenuItemText(MENU_CHEATS, combined); + + //Open RAM Search + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_TOOL_OPENRAMSEARCH]); + combined = "&RAM Search...\t" + combo; + ChangeMenuItemText(ID_RAM_SEARCH, combined); + + //Open RAM Watch + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_TOOL_OPENRAMWATCH]); + combined = "&RAM Watch...\t" + combo; + ChangeMenuItemText(ID_RAM_WATCH, combined); + + //Open Memory Watch + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_TOOL_OPENMEMORYWATCH]); + combined = "&Memory Watch...\t" + combo; + ChangeMenuItemText(MENU_MEMORY_WATCH, combined); + + //Open TAS Editor + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MISC_OPENTASEDITOR]); + combined = "&TAS Editor...\t" + combo; + ChangeMenuItemText(MENU_TASEDITOR, combined); + + //-------------------------------Debug-------------------------------------- + //Open Debugger + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_TOOL_OPENDEBUGGER]); + combined = "&Debugger...\t" + combo; + ChangeMenuItemText(MENU_DEBUGGER, combined); + + //Open PPU Viewer + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_TOOL_OPENPPU]); + combined = "&PPU Viewer...\t" + combo; + ChangeMenuItemText(MENU_PPUVIEWER, combined); + + //Open Nametable Viewer + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_TOOL_OPENNTVIEW]); + combined = "&Name table Viewer...\t" + combo; + ChangeMenuItemText(MENU_NAMETABLEVIEWER, combined); + + //Open Hex editor + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_TOOL_OPENHEX]); + combined = "&Hex Editor...\t" + combo; + ChangeMenuItemText(MENU_HEXEDITOR, combined); + + //Open Trace Logger + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_TOOL_OPENTRACELOGGER]); + combined = "&Trace Logger...\t" + combo; + ChangeMenuItemText(MENU_TRACELOGGER, combined); + + //Open Code/Data Logger + combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_TOOL_OPENCDLOGGER]); + combined = "&Code/Data Logger...\t" + combo; + ChangeMenuItemText(MENU_CDLOGGER, combined); } //This function is for the context menu item Save Movie As... diff --git a/src/drivers/win/window.h b/src/drivers/win/window.h index 9525a077..66284072 100644 --- a/src/drivers/win/window.h +++ b/src/drivers/win/window.h @@ -54,31 +54,4 @@ inline std::wstring GetDlgItemTextW(HWND hDlg, int nIDDlgItem) { return buf; } -enum FCEUMENU_HWND { - FCEUMENU_CONTEXT_OFF, // NoGame - FCEUMENU_CONTEXT_GAME, // Game+NoMovie - FCEUMENU_CONTEXT_PLAYING_READONLY, //Game+Movie+Playing+ReadOnly - FCEUMENU_CONTEXT_PLAYING_READWRITE, //Game+Movie+Playing+ReadWrite - FCEUMENU_CONTEXT_RECORDING_READONLY, //Game+Movie+Recording+ReadOnly - FCEUMENU_CONTEXT_RECORDING_READWRITE, //Game+Movie+Recording+Readwrite - FCEUMENU_CONTEXT, // parent menu of all context menus, - // not recommended to use it since there's duplicate ids in context menus, - // unless you're quite sure the id is unique in all submenus. - FCEUMENU_MAIN, // main fceux menu - FCEUMENU_LIMIT -}; - -struct HOTKEYMENUINDEX { - int menu_id; // menu ID - int cmd_id; // hotkey ID - int hmenu_index = FCEUMENU_MAIN; // whitch menu it belongs to, refers to FCEUMENU_HWND - int flags = MF_BYCOMMAND; // flags when searching and modifying menu item, usually MF_BYCOMMAND - // returns an std::string contains original menu text followed with shortcut keys. - std::string getQualifiedMenuText(); - // this is used when you only want to create a qualified menu text String - static std::string getQualifiedMenuText(char* text, int cmdid); - int updateMenuText(); - HOTKEYMENUINDEX(int id, int cmd, int menu = FCEUMENU_MAIN, int _flags = MF_BYCOMMAND) : menu_id(id), cmd_id(cmd), hmenu_index(menu), flags(_flags) {} -}; - #endif diff --git a/src/fceu.cpp b/src/fceu.cpp index cb0d147f..659307ea 100644 --- a/src/fceu.cpp +++ b/src/fceu.cpp @@ -416,13 +416,10 @@ FCEUGI *FCEUI_LoadGameVirtual(const char *name, int OverwriteVidMode, bool silen if (!fp) { - extern bool archiveManuallyCanceled; - // Although !fp, if the operation was canceled from archive select dialog box, don't show the error message; - if (!silent && !archiveManuallyCanceled) - FCEU_PrintError("´ò¿ª \"%s\" ´íÎó£¡", name); + if (!silent) + FCEU_PrintError("Error opening \"%s\"!", name); return 0; - } - else if (fp->archiveFilename != "") + } else if (fp->archiveFilename != "") { strcpy(fullname, fp->archiveFilename.c_str()); strcat(fullname, "|"); From 0aa3e7da7f4b988bab4604c6e40a2d880be250dd Mon Sep 17 00:00:00 2001 From: zeromus Date: Tue, 1 Jan 2019 15:41:48 -0500 Subject: [PATCH 5/7] hack vcxproj to select platformtoolset between 2015 (vc140_xp) and 2017 depending on what's available --- vc/vc14_fceux.vcxproj | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/vc/vc14_fceux.vcxproj b/vc/vc14_fceux.vcxproj index 9287935b..e29d1bb6 100644 --- a/vc/vc14_fceux.vcxproj +++ b/vc/vc14_fceux.vcxproj @@ -68,6 +68,15 @@ NotSet v140_xp + + + + v141 + + + v141_xp + + From 5eb6cc31c9a28a0cbaf5897a3e1f58f71d8b2d1f Mon Sep 17 00:00:00 2001 From: zeromus Date: Tue, 1 Jan 2019 15:45:32 -0500 Subject: [PATCH 6/7] Revert "Revert "Some ui interface logic changes and improvements."" This reverts commit d48105e97d4825e7ad1c9fcb23e29954031d16e0. --- src/cheat.cpp | 17 + src/cheat.h | 4 +- src/drivers/win/archive.cpp | 8 + src/drivers/win/cheat.cpp | 30 +- src/drivers/win/cheat.h | 2 + src/drivers/win/directories.cpp | 6 +- src/drivers/win/gui.cpp | 27 +- src/drivers/win/gui.h | 2 +- src/drivers/win/input.cpp | 9 +- src/drivers/win/log.cpp | 2 +- src/drivers/win/main.cpp | 48 +- src/drivers/win/mapinput.cpp | 11 +- src/drivers/win/memview.cpp | 15 +- src/drivers/win/memviewsp.cpp | 2 +- src/drivers/win/ntview.cpp | 2 + src/drivers/win/palette.cpp | 10 + src/drivers/win/replay.cpp | 20 + src/drivers/win/res.rc | 235 ++++--- src/drivers/win/resource.h | 13 +- src/drivers/win/sound.cpp | 4 +- src/drivers/win/taseditor.cpp | 11 + src/drivers/win/taseditor/piano_roll.cpp | 18 +- src/drivers/win/taseditor/piano_roll.h | 2 +- .../win/taseditor/taseditor_window.cpp | 199 +++--- src/drivers/win/taseditor/taseditor_window.h | 5 +- src/drivers/win/texthook.h | 2 + src/drivers/win/timing.cpp | 34 +- src/drivers/win/video.cpp | 10 + src/drivers/win/window.cpp | 611 +++++++++--------- src/drivers/win/window.h | 27 + src/fceu.cpp | 9 +- 31 files changed, 839 insertions(+), 556 deletions(-) diff --git a/src/cheat.cpp b/src/cheat.cpp index 44ea34ec..41092e3a 100644 --- a/src/cheat.cpp +++ b/src/cheat.cpp @@ -964,3 +964,20 @@ void UpdateFrozenList(void) } //FCEUI_DispMessage("FrozenCount: %d",0,FrozenAddressCount);//Debug } + +// disable all cheats +int FCEU_DisableAllCheats(){ + int count = 0; + struct CHEATF *next=cheats; + while(next) + { + if(next->status){ + count++; + } + next->status = 0; + next = next->next; + } + savecheats=1; + RebuildSubCheats(); + return count; +} diff --git a/src/cheat.h b/src/cheat.h index 431ff0a5..136f6025 100644 --- a/src/cheat.h +++ b/src/cheat.h @@ -9,4 +9,6 @@ void FCEU_PowerCheats(void); int FCEU_CheatGetByte(uint32 A); void FCEU_CheatSetByte(uint32 A, uint8 V); -extern int savecheats; \ No newline at end of file +extern int savecheats; + +int FCEU_DisableAllCheats(); \ No newline at end of file diff --git a/src/drivers/win/archive.cpp b/src/drivers/win/archive.cpp index 7175b9ec..118aca61 100644 --- a/src/drivers/win/archive.cpp +++ b/src/drivers/win/archive.cpp @@ -275,6 +275,9 @@ public: } }; +// indicator for the open in archive dialog that if the load was canceled by the user. +// TODO: Since I can't think of a better way to indicate it, hope someone could imporve it. +bool archiveManuallyCanceled; static BOOL CALLBACK ArchiveFileSelectorCallback(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { @@ -282,6 +285,8 @@ static BOOL CALLBACK ArchiveFileSelectorCallback(HWND hwndDlg, UINT uMsg, WPARAM { case WM_INITDIALOG: { + // TODO: find a better way to do this. + archiveManuallyCanceled = false; HWND hwndListbox = GetDlgItem(hwndDlg,IDC_LIST1); for(uint32 i=0;isize();i++) { @@ -307,6 +312,9 @@ static BOOL CALLBACK ArchiveFileSelectorCallback(HWND hwndDlg, UINT uMsg, WPARAM case IDCANCEL: EndDialog(hwndDlg, LB_ERR); + // Tell the parent window that the operation was canceled rather than loading error + // TODO: find a better way to do this. + archiveManuallyCanceled = true; return TRUE; } break; diff --git a/src/drivers/win/cheat.cpp b/src/drivers/win/cheat.cpp index ad2a582e..ef60cc3f 100644 --- a/src/drivers/win/cheat.cpp +++ b/src/drivers/win/cheat.cpp @@ -901,6 +901,7 @@ BOOL CALLBACK GGConvCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) EnableWindow(GetDlgItem(hCheat,IDC_BTN_CHEAT_DEL),TRUE); EnableWindow(GetDlgItem(hCheat,IDC_BTN_CHEAT_UPD),TRUE); + UpdateCheatsAdded(); } } break; @@ -1026,4 +1027,31 @@ void DoGGConv() void ListBox::OnRButtonDown(UINT nFlags, CPoint point) { CPoint test = point; -} */ \ No newline at end of file +} */ + +void DisableAllCheats() +{ + if(!FCEU_DisableAllCheats() || !hCheat){ + return; + } + int selcheattemp = SendDlgItemMessage(hCheat, IDC_LIST_CHEATS, LB_GETCOUNT, 0, 0) - 1; + LRESULT sel; char str[259]; + while(selcheattemp >= 0) + { + SendDlgItemMessage(hCheat,IDC_LIST_CHEATS,LB_GETTEXT,selcheattemp, (LPARAM)(LPCTSTR)str); + if(str[0] == '*') + { + sel = SendDlgItemMessage(hCheat,IDC_LIST_CHEATS,LB_GETSEL,selcheattemp,0); + str[0] = ' '; + SendDlgItemMessage(hCheat,IDC_LIST_CHEATS,LB_DELETESTRING,selcheattemp,0); + SendDlgItemMessage(hCheat,IDC_LIST_CHEATS,LB_INSERTSTRING,selcheattemp, (LPARAM)(LPSTR)str); + if(sel) + { + SendDlgItemMessage(hCheat,IDC_LIST_CHEATS,LB_SETSEL,1,selcheattemp); + } + } + selcheattemp--; + } + sprintf(str, "Active Cheats %d", 0); + SetDlgItemText(hCheat, 201, str); +} \ No newline at end of file diff --git a/src/drivers/win/cheat.h b/src/drivers/win/cheat.h index 44f35a5c..8d9f5b2b 100644 --- a/src/drivers/win/cheat.h +++ b/src/drivers/win/cheat.h @@ -14,3 +14,5 @@ void UpdateCheatsAdded(); extern unsigned int FrozenAddressCount; extern std::vector FrozenAddresses; //void ConfigAddCheat(HWND wnd); //bbit edited:commented out this line + +void DisableAllCheats(); \ No newline at end of file diff --git a/src/drivers/win/directories.cpp b/src/drivers/win/directories.cpp index 75a0bf67..accda7d5 100644 --- a/src/drivers/win/directories.cpp +++ b/src/drivers/win/directories.cpp @@ -143,9 +143,11 @@ static BOOL CALLBACK DirConCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM "Base Directory", }; - char name[MAX_PATH]; + char name[MAX_PATH]; + char path[MAX_PATH]; + GetDlgItemText(hwndDlg, EDIT_ROMS + ((wParam & 0xFFFF) - BUTTON_ROMS), path, MAX_PATH); - if(BrowseForFolder(hwndDlg, helpert[ ( (wParam & 0xFFFF) - BUTTON_ROMS)], name)) + if(BrowseForFolder(hwndDlg, helpert[ ( (wParam & 0xFFFF) - BUTTON_ROMS)], name, path)) { SetDlgItemText(hwndDlg, EDIT_ROMS + ((wParam & 0xFFFF) - BUTTON_ROMS), name); } diff --git a/src/drivers/win/gui.cpp b/src/drivers/win/gui.cpp index ab3a158c..171187ae 100644 --- a/src/drivers/win/gui.cpp +++ b/src/drivers/win/gui.cpp @@ -3,6 +3,8 @@ #include #include // For directories configuration dialog. +int CALLBACK SHBrowseForFolderCallbackProc(HWND, UINT, LPARAM, LPARAM); + /** * Centers a window relative to its parent window. * @@ -96,18 +98,26 @@ void ShowCursorAbs(int set_visible) * * @return 0 or 1 to indicate failure or success. **/ -int BrowseForFolder(HWND hParent, const char *htext, char *buf) +int BrowseForFolder(HWND hParent, const char *htext, char *buf, char* defPath = NULL) { BROWSEINFO bi; LPCITEMIDLIST pidl; - buf[0] = 0; - memset(&bi, 0, sizeof(bi)); - bi.hwndOwner = hParent; bi.lpszTitle = htext; - bi.ulFlags = BIF_RETURNONLYFSDIRS; + bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_EDITBOX; + + if(defPath == NULL || defPath[0] == '\0') + { + char currentDir[MAX_PATH]; + GetCurrentDirectory(MAX_PATH, currentDir); + bi.lParam = (LPARAM)currentDir; + } else { + bi.lParam = (LPARAM)defPath; + } + + bi.lpfn = SHBrowseForFolderCallbackProc; if(FAILED(CoInitialize(0))) { @@ -134,4 +144,9 @@ int BrowseForFolder(HWND hParent, const char *htext, char *buf) return 1; } - +// Automatically expand to the configured folder. +int CALLBACK SHBrowseForFolderCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData) { + if(uMsg == BFFM_INITIALIZED) + SendMessage(hwnd, BFFM_SETSELECTION, TRUE, (LPARAM)(const char*)lpData); + return 0; +} \ No newline at end of file diff --git a/src/drivers/win/gui.h b/src/drivers/win/gui.h index 25d71c6d..e1825c90 100644 --- a/src/drivers/win/gui.h +++ b/src/drivers/win/gui.h @@ -1,4 +1,4 @@ void ShowCursorAbs(int set_visible); -int BrowseForFolder(HWND hParent, const char *htext, char *buf); +int BrowseForFolder(HWND hParent, const char *htext, char *buf, char* defPath = NULL); void CenterWindow(HWND hwndDlg); void CenterWindowOnScreen(HWND hwnd); diff --git a/src/drivers/win/input.cpp b/src/drivers/win/input.cpp index 3021348e..50668570 100644 --- a/src/drivers/win/input.cpp +++ b/src/drivers/win/input.cpp @@ -1202,6 +1202,9 @@ static void UpdateFourscoreState(HWND dlg) SetDlgItemText(dlg,TXT_PAD1,ESI_Name(SI_GAMEPAD)); SetDlgItemText(dlg,TXT_PAD2,ESI_Name(SI_GAMEPAD)); } + + EnableWindow(GetDlgItem(dlg,102), enable); + EnableWindow(GetDlgItem(dlg,103), enable); } //Callback function of the input configuration dialog. @@ -1302,7 +1305,7 @@ BOOL CALLBACK InputConCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara char btext[128]; if (autoHoldKey) { - if (!GetKeyNameText(autoHoldKey << 16, btext, 128)) + if (!GetKeyNameText((autoHoldKey & 0x7F) << 16 | (autoHoldKey & 0x80) << 17, btext, 128)) sprintf(btext, "KB: %d", autoHoldKey); } else { @@ -1483,7 +1486,7 @@ BOOL CALLBACK InputConCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara if(button) { - if(!GetKeyNameText(button << 16, btext, 128)) + if(!GetKeyNameText((button & 0x7F) << 16 | (button & 0x80) << 17, btext, 128)) { sprintf(btext, "KB: %d", button); } @@ -1509,7 +1512,7 @@ BOOL CALLBACK InputConCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara if(button) { - if( !GetKeyNameText(button << 16, btext, sizeof(btext))) + if( !GetKeyNameText((button & 0x7F) << 16 | (button & 0x80 << 17), btext, sizeof(btext))) { sprintf(btext, "KB: %d", button); } diff --git a/src/drivers/win/log.cpp b/src/drivers/win/log.cpp index a7305209..4232180b 100644 --- a/src/drivers/win/log.cpp +++ b/src/drivers/win/log.cpp @@ -2,7 +2,7 @@ #include "common.h" #include "tracer.h" -static HWND logwin = 0; +HWND logwin = 0; static char *logtext[MAXIMUM_NUMBER_OF_LOGS]; static int logcount=0; diff --git a/src/drivers/win/main.cpp b/src/drivers/win/main.cpp index 81a92c70..1190e2a7 100644 --- a/src/drivers/win/main.cpp +++ b/src/drivers/win/main.cpp @@ -354,16 +354,51 @@ int BlockingCheck() } } - if(!handled && taseditorWindow.hwndTASEditor && taseditorEnableAcceleratorKeys) + if(!handled && taseditorWindow.hwndTASEditor) { - if(IsChild(taseditorWindow.hwndTASEditor, msg.hwnd)) - handled = TranslateAccelerator(taseditorWindow.hwndTASEditor, fceu_hAccel, &msg); + if(taseditorEnableAcceleratorKeys) + if(IsChild(taseditorWindow.hwndTASEditor, msg.hwnd)) + handled = TranslateAccelerator(taseditorWindow.hwndTASEditor, fceu_hAccel, &msg); + if(!handled && taseditorWindow.hwndTASEditor){ + handled = IsDialogMessage(taseditorWindow.hwndTASEditor, &msg); + } } if(!handled && taseditorWindow.hwndFindNote) { if(IsChild(taseditorWindow.hwndFindNote, msg.hwnd)) handled = IsDialogMessage(taseditorWindow.hwndFindNote, &msg); } + + extern HWND uug; + if(!handled && uug && IsChild(uug, msg.hwnd)) + handled = IsDialogMessage(uug, &msg); + if(!handled && pwindow && IsChild(pwindow, msg.hwnd)) + handled = IsDialogMessage(pwindow, &msg); + if(!handled && hCDLogger && IsChild(hCDLogger, msg.hwnd)) + handled = IsDialogMessage(hCDLogger, &msg); + if(!handled && hTracer && IsChild(hTracer, msg.hwnd)) + handled = IsDialogMessage(hTracer, &msg); + extern HWND hGGConv; + if(!handled && hGGConv && IsChild(hGGConv, msg.hwnd)) + handled = IsDialogMessage(hGGConv, &msg); + if(!handled && hDebug && IsChild(hDebug, msg.hwnd)) + handled = IsDialogMessage(hDebug, &msg); + extern HWND hPPUView; + if(!handled && hPPUView && IsChild(hPPUView, msg.hwnd)) + handled = IsDialogMessage(hPPUView, &msg); + extern HWND hNTView; + if(!handled && hNTView && IsChild(hNTView, msg.hwnd)) + handled = IsDialogMessage(hNTView, &msg); + extern HWND hTextHooker; + if(!handled && hTextHooker && IsChild(hTextHooker, msg.hwnd)) + handled = IsDialogMessage(hTextHooker, &msg); + extern HWND LuaConsoleHWnd; + if(!handled && LuaConsoleHWnd && IsChild(LuaConsoleHWnd, msg.hwnd)) + handled = IsDialogMessage(LuaConsoleHWnd, &msg); + extern HWND logwin; + if(!handled && logwin && IsChild(logwin, msg.hwnd)) + handled = IsDialogMessage(logwin, &msg); + /* //adelikat - Currently no accel keys are used in the main window. Uncomment this block to activate them. if(!handled) if(msg.hwnd == hAppWnd) @@ -711,8 +746,6 @@ int main(int argc,char *argv[]) fullscreen=0; } - CreateMainWindow(); - // Do single instance coding, since we now know if the user wants it, // and we have a source window to send from // http://wiki.github.com/ffi/ffi/windows-examples @@ -741,12 +774,17 @@ int main(int argc,char *argv[]) { //kill this one, activate the other one SetActiveWindow(DoInstantiatedExitWindow); + if(IsIconic(DoInstantiatedExitWindow)) + ShowWindow(DoInstantiatedExitWindow, SW_RESTORE); + SetForegroundWindow(DoInstantiatedExitWindow); do_exit(); return 0; } } } + CreateMainWindow(); + if(!InitDInput()) { do_exit(); diff --git a/src/drivers/win/mapinput.cpp b/src/drivers/win/mapinput.cpp index 307aa518..98b97dfe 100644 --- a/src/drivers/win/mapinput.cpp +++ b/src/drivers/win/mapinput.cpp @@ -7,6 +7,7 @@ #include "../../input.h" #include #include "window.h" +#include "taseditor/taseditor_window.h" void KeyboardUpdateState(void); //mbg merge 7/17/06 yech had to add this @@ -689,7 +690,11 @@ BOOL CALLBACK MapInputDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM PopulateMappingDisplay(hwndDlg); // Autosize last column. - SendMessage(hwndListView, LVM_SETCOLUMNWIDTH, (WPARAM)2, MAKELPARAM(LVSCW_AUTOSIZE_USEHEADER, 0)); + SendMessage(hwndListView, LVM_SETCOLUMNWIDTH, (WPARAM)2, MAKELPARAM(LVSCW_AUTOSIZE, 0)); + SendMessage(hwndListView, LVM_SETCOLUMNWIDTH, (WPARAM)1, MAKELPARAM(LVSCW_AUTOSIZE, 0)); + RECT rect; + GetClientRect(hwndListView, &rect); + SendMessage(hwndListView, LVM_SETCOLUMNWIDTH, (WPARAM)2, MAKELPARAM(rect.right - rect.left - SendMessage(hwndListView, LVM_GETCOLUMNWIDTH, 0, 0) - SendMessage(hwndListView, LVM_GETCOLUMNWIDTH, 1, 0), 0)); CenterWindowOnScreen(hwndDlg); } @@ -708,6 +713,10 @@ BOOL CALLBACK MapInputDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM { case IDOK: UpdateMenuHotkeys(); + // Update TAS Editor's tooltips if it's opening. + extern TASEDITOR_WINDOW taseditorWindow; + if (taseditorWindow.hwndTASEditor) + taseditorWindow.updateTooltips(); EndDialog(hwndDlg, 1); return TRUE; diff --git a/src/drivers/win/memview.cpp b/src/drivers/win/memview.cpp index 7ce539a4..6f46e452 100644 --- a/src/drivers/win/memview.cpp +++ b/src/drivers/win/memview.cpp @@ -1262,9 +1262,10 @@ LRESULT CALLBACK MemViewCallB(HWND hwnd, UINT message, WPARAM wParam, LPARAM lPa // update menus for (i = MODE_NES_MEMORY; i <= MODE_NES_FILE; i++) - { - CheckMenuItem(GetMenu(hwnd), MENU_MV_VIEW_RAM + i, (EditingMode == i) ? MF_CHECKED : MF_UNCHECKED); - } + if(EditingMode == i) { + CheckMenuRadioItem(GetMenu(hMemView), MENU_MV_VIEW_RAM, MENU_MV_VIEW_ROM, MENU_MV_VIEW_RAM + i, MF_BYCOMMAND); + break; + } CheckMenuItem(GetMenu(hwnd), ID_HIGHLIGHTING_HIGHLIGHT_ACTIVITY, (MemView_HighlightActivity) ? MF_CHECKED: MF_UNCHECKED); CheckMenuItem(GetMenu(hwnd), ID_HIGHLIGHTING_FADEWHENPAUSED, (MemView_HighlightActivity_FadeWhenPaused) ? MF_CHECKED: MF_UNCHECKED); @@ -2038,9 +2039,11 @@ LRESULT CALLBACK MemViewCallB(HWND hwnd, UINT message, WPARAM wParam, LPARAM lPa case MENU_MV_VIEW_ROM: EditingMode = wParam - MENU_MV_VIEW_RAM; for (i = MODE_NES_MEMORY; i <= MODE_NES_FILE; i++) - { - CheckMenuItem(GetMenu(hMemView), MENU_MV_VIEW_RAM + i, (EditingMode == i) ? MF_CHECKED : MF_UNCHECKED); - } + if(EditingMode == i) + { + CheckMenuRadioItem(GetMenu(hMemView), MENU_MV_VIEW_RAM, MENU_MV_VIEW_ROM, MENU_MV_VIEW_RAM + i, MF_BYCOMMAND); + break; + } if (EditingMode == MODE_NES_MEMORY) MaxSize = 0x10000; if (EditingMode == MODE_NES_PPU) diff --git a/src/drivers/win/memviewsp.cpp b/src/drivers/win/memviewsp.cpp index 83efde3d..1f155455 100644 --- a/src/drivers/win/memviewsp.cpp +++ b/src/drivers/win/memviewsp.cpp @@ -181,7 +181,7 @@ void updateBookmarkMenus(HMENU menu) { // Get the text of the menu char buffer[0x100]; - sprintf(buffer, i < 10 ? "$%04X - %s\tCTRL-%d" : "$%04X - %s", hexBookmarks[i].address, hexBookmarks[i].description, i); + sprintf(buffer, i < 10 ? "&%d. $%04X - %s\tCtrl+%d" : "%d. $%04X - %s",i, hexBookmarks[i].address, hexBookmarks[i].description, i); mi.dwTypeData = buffer; mi.cch = strlen(buffer); diff --git a/src/drivers/win/ntview.cpp b/src/drivers/win/ntview.cpp index b8ac8d61..0ebb504e 100644 --- a/src/drivers/win/ntview.cpp +++ b/src/drivers/win/ntview.cpp @@ -567,6 +567,8 @@ BOOL CALLBACK NTViewCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) break; case IDC_NTVIEW_SHOW_SCROLL_LINES : scrolllines ^= 1; + EnableWindow(GetDlgItem(hwndDlg, IDC_NTVIEW_SCANLINE_TEXT), scrolllines); + EnableWindow(GetDlgItem(hwndDlg, IDC_NTVIEW_SCANLINE), scrolllines); chrchanged = 1; break; case IDC_NTVIEW_SHOW_ATTRIBUTES : diff --git a/src/drivers/win/palette.cpp b/src/drivers/win/palette.cpp index 4c77e92d..bed79087 100644 --- a/src/drivers/win/palette.cpp +++ b/src/drivers/win/palette.cpp @@ -117,6 +117,11 @@ BOOL CALLBACK PaletteConCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa CenterWindowOnScreen(hwndDlg); + EnableWindow(GetDlgItem(hwndDlg, 65463), ntsccol_enable); + EnableWindow(GetDlgItem(hwndDlg, 64395), ntsccol_enable); + EnableWindow(GetDlgItem(hwndDlg, CTL_HUE_TRACKBAR), ntsccol_enable); + EnableWindow(GetDlgItem(hwndDlg, CTL_TINT_TRACKBAR), ntsccol_enable); + break; case WM_HSCROLL: @@ -153,6 +158,11 @@ BOOL CALLBACK PaletteConCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa case CHECK_PALETTE_ENABLED: ntsccol_enable ^= 1; FCEUI_SetNTSCTH(ntsccol_enable, ntsctint, ntschue); // it recalculates everything, use it for PAL block too! + EnableWindow(GetDlgItem(hwndDlg, 65463), ntsccol_enable); + EnableWindow(GetDlgItem(hwndDlg, 64395), ntsccol_enable); + EnableWindow(GetDlgItem(hwndDlg, CTL_HUE_TRACKBAR), ntsccol_enable); + EnableWindow(GetDlgItem(hwndDlg, CTL_TINT_TRACKBAR), ntsccol_enable); + break; case CHECK_PALETTE_GRAYSCALE: diff --git a/src/drivers/win/replay.cpp b/src/drivers/win/replay.cpp index fb5cd8d1..9b5e7520 100644 --- a/src/drivers/win/replay.cpp +++ b/src/drivers/win/replay.cpp @@ -289,6 +289,8 @@ void UpdateReplayDialog(HWND hwndDlg) EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK_READONLY),FALSE); EnableWindow(GetDlgItem(hwndDlg,IDOK),FALSE); } + EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK_STOPMOVIE), !doClear); + EnableWindow(GetDlgItem(hwndDlg,IDC_EDIT_STOPFRAME), !doClear && SendDlgItemMessage(hwndDlg, IDC_CHECK_STOPMOVIE, BM_GETCHECK, 0, 0) == BST_CHECKED); } // C:\fceu\movies\bla.fcm + C:\fceu\fceu\ -> C:\fceu\movies\bla.fcm @@ -649,6 +651,9 @@ BOOL CALLBACK ReplayDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lP int wID = LOWORD(wParam); switch(wID) { + case IDC_CHECK_STOPMOVIE: + EnableWindow(GetDlgItem(hwndDlg, IDC_EDIT_STOPFRAME), SendDlgItemMessage(hwndDlg, IDC_CHECK_STOPMOVIE, BM_GETCHECK, 0, 0) == BST_CHECKED); + break; case IDC_BUTTON_METADATA: DialogBoxParam(fceu_hInstance, "IDD_REPLAY_METADATA", hwndDlg, ReplayMetadataDialogProc, (LPARAM)0); break; @@ -714,6 +719,21 @@ BOOL CALLBACK ReplayDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lP } else { + extern unsigned int FrozenAddressCount; + if(FrozenAddressCount) + { + char ch[512]; + sprintf(ch, "You have %d activated cheats. If this is not your intentional, it can cause playback prblems! Do you want to disable all of them and continue?", FrozenAddressCount); + switch(MessageBox(hwndDlg, ch, "Movie playing problem", MB_YESNOCANCEL|MB_ICONEXCLAMATION)) + { + case IDCANCEL: + return TRUE; + case IDYES: + extern void DisableAllCheats(); + DisableAllCheats(); + } + + } // user had made their choice // TODO: warn the user when they open a movie made with a different ROM char* fn=GetReplayPath(hwndDlg); diff --git a/src/drivers/win/res.rc b/src/drivers/win/res.rc index 1e9e6102..1ee99401 100644 --- a/src/drivers/win/res.rc +++ b/src/drivers/win/res.rc @@ -7,93 +7,16 @@ // // Generated from the TEXTINCLUDE 2 resource. // -#include "afxres.h" - +#include "afxres.h" ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// -// Russian (Russia) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) -LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT -#pragma code_page(1251) - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_TASEDITOR_SAVINGOPTIONS DIALOGEX 0, 0, 223, 208 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Project file saving options" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - DEFPUSHBUTTON "OK",IDOK,109,187,50,14 - PUSHBUTTON "Cancel",IDCANCEL,165,187,50,14 - CONTROL " Binary format of Input",IDC_CHECK_BINARY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,17,89,10 - CONTROL " Markers",IDC_CHECK_MARKERS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,32,67,10 - CONTROL " Bookmarks",IDC_CHECK_BOOKMARKS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,47,67,10 - CONTROL " History",IDC_CHECK_HISTORY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,62,67,10 - CONTROL " Piano Roll",IDC_CHECK_PIANO_ROLL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,77,67,10 - CONTROL " Selection",IDC_CHECK_SELECTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,92,67,10 - GROUPBOX "File contents",IDC_STATIC,105,4,111,177 - GROUPBOX "Greenzone saving options",IDC_STATIC,112,106,97,69 - CONTROL " all frames",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON,122,117,77,10 - CONTROL " every 16th frame",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,122,131,77,10 - CONTROL " marked frames",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,122,145,77,10 - CONTROL " don't save",IDC_RADIO4,"Button",BS_AUTORADIOBUTTON,122,159,77,10 - CONTROL " Autosave project",IDC_AUTOSAVE_PROJECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,17,81,10 - CONTROL " silently",IDC_SILENT_AUTOSAVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,47,42,10 - LTEXT "every",IDC_STATIC,14,32,21,8 - EDITTEXT IDC_AUTOSAVE_PERIOD,36,30,24,14,ES_AUTOHSCROLL | ES_NUMBER - LTEXT "minutes",IDC_STATIC,64,32,28,8 - GROUPBOX "Settings",IDC_STATIC,6,4,91,177 -END - -IDD_SYMBOLIC_DEBUG_NAMING DIALOGEX 0, 0, 245, 83 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Symbolic Debug Naming" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - DEFPUSHBUTTON "OK",IDOK,132,62,50,14 - PUSHBUTTON "Cancel",IDCANCEL,189,62,50,14 - LTEXT "File",IDC_STATIC,7,7,15,9 - EDITTEXT IDC_SYMBOLIC_ADDRESS,38,24,33,13,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP - LTEXT "Address",IDC_STATIC,6,26,30,10 - EDITTEXT IDC_SYMBOLIC_NAME,107,24,132,13,ES_AUTOHSCROLL - LTEXT "Name",IDC_STATIC,83,26,22,10 - LTEXT "Comment",IDC_STATIC,6,45,37,10 - EDITTEXT IDC_SYMBOLIC_COMMENT,45,43,194,13,ES_AUTOHSCROLL - EDITTEXT IDC_SYMBOLIC_FILENAME,24,6,215,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_SYMBOLIC_DEBUG_NAMING, DIALOG - BEGIN - BOTTOMMARGIN, 82 - END -END -#endif // APSTUDIO_INVOKED - -#endif // Russian (Russia) resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// Neutral resources +// ·ÇÌØ¶¨ÓïÑÔ resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU) LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL -#pragma code_page(1252) +#pragma code_page(936) ///////////////////////////////////////////////////////////////////////////// // @@ -431,11 +354,11 @@ BEGIN GROUPBOX "NES Palette",302,10,8,102,81,WS_GROUP DEFPUSHBUTTON "&Load Palette...",BTN_PALETTE_LOAD,18,39,58,14 CONTROL "Enabled",CHECK_PALETTE_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,22,87,12 - CONTROL "Tint",CTL_TINT_TRACKBAR,"msctls_trackbar32",WS_TABSTOP,121,44,91,11 + CONTROL "Tint",CTL_TINT_TRACKBAR,"msctls_trackbar32",WS_DISABLED | WS_TABSTOP,121,44,91,11 GROUPBOX "NTSC Color Emulation",101,115,8,103,81,WS_GROUP - CONTROL "Hue",CTL_HUE_TRACKBAR,"msctls_trackbar32",WS_TABSTOP,121,69,91,11 - CTEXT "Hue",64395,124,59,85,8 - CTEXT "Tint",65463,123,34,85,8 + CONTROL "Hue",CTL_HUE_TRACKBAR,"msctls_trackbar32",WS_DISABLED | WS_TABSTOP,121,69,91,11 + CTEXT "Hue",64395,124,59,85,8,WS_DISABLED + CTEXT "Tint",65463,123,34,85,8,WS_DISABLED CONTROL "Force Grayscale",CHECK_PALETTE_GRAYSCALE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,57,85,12 CONTROL "Use Custom Palette",CHECK_PALETTE_CUSTOM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,22,85,12 GROUPBOX "PAL Emulation",IDC_STATIC,10,89,208,66,WS_DISABLED @@ -513,7 +436,7 @@ BEGIN COMBOBOX COMBO_SOUND_RATE,50,61,53,46,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "Hz",65460,108,64,15,9 LTEXT "Depth:",65462,17,85,27,10 - COMBOBOX COMBO_SOUND_8BIT,50,82,67,45,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX COMBO_SOUND_8BIT,50,82,67,45,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP CONTROL "Mute frame advance",CHECK_SOUND_MUTEFA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,110,87,11 CONTROL "Mute Turbo",CHECK_SOUND_MUTETURBO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,138,111,53,10 GROUPBOX "Triangle",131,70,142,44,93,WS_GROUP @@ -654,11 +577,11 @@ BEGIN "Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,8,183,12 CONTROL "Set high-priority thread.",CB_SET_HIGH_PRIORITY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,24,102,12 CONTROL "Overclocking (old PPU only).",CB_OVERCLOCKING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,41,101,10 - EDITTEXT IDC_EXTRA_SCANLINES,104,55,84,14,ES_AUTOHSCROLL - LTEXT "Post-render scanlines:",IDC_STATIC,21,57,74,8 - CONTROL "Don't overclock 7-bit samples.",CB_SKIP_7BIT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,87,111,10 - EDITTEXT IDC_VBLANK_SCANLINES,104,68,84,14,ES_AUTOHSCROLL - LTEXT "VBlank scanlines:",IDC_STATIC,21,71,76,8 + EDITTEXT IDC_EXTRA_SCANLINES,104,55,84,14,ES_AUTOHSCROLL | WS_DISABLED + LTEXT "Post-render scanlines:",IDC_EXTRA_SCANLINES_TEXT,21,57,74,8, WS_DISABLED + CONTROL "Don't overclock 7-bit samples.",CB_SKIP_7BIT,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,10,87,111,10 + EDITTEXT IDC_VBLANK_SCANLINES,104,68,84,14,ES_AUTOHSCROLL | WS_DISABLED + LTEXT "VBlank scanlines:",IDC_VBLANK_SCANLINES_TEXT,21,71,76,8, WS_DISABLED END MOVIEOPTIONS DIALOGEX 65520, 76, 147, 222 @@ -944,7 +867,7 @@ BEGIN LTEXT "Refresh: More",-1,225,254,50,9 CONTROL "",IDC_NTVIEW_REFRESH_TRACKBAR,"msctls_trackbar32",WS_TABSTOP,275,254,50,11 LTEXT "Less",-1,325,254,18,10 - LTEXT "Display on scanline:",-1,253,269,65,9 + LTEXT "Display on scanline:",IDC_NTVIEW_SCANLINE_TEXT,253,269,65,9 EDITTEXT IDC_NTVIEW_SCANLINE,315,267,27,12 CONTROL "Show Scroll Lines",IDC_NTVIEW_SHOW_SCROLL_LINES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,254,69,10 CONTROL "Show Attributes",IDC_NTVIEW_SHOW_ATTRIBUTES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,265,69,10 @@ -1512,9 +1435,9 @@ BEGIN CONTROL "TV Aspect",IDC_VIDEOCONFIG_TVASPECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,357,29,48,12 GROUPBOX "When resizing the window",65431,188,38,152,43,WS_GROUP CONTROL "Square pixels",IDC_VIDEOCONFIG_SQUARE_PIXELS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,448,14,55,12 - EDITTEXT IDC_TVASPECT_X,407,28,41,12,ES_AUTOHSCROLL - EDITTEXT IDC_TVASPECT_Y,458,28,41,12,ES_AUTOHSCROLL - CTEXT "/",IDC_STATIC_SLASHTEXT,449,31,8,8 + EDITTEXT IDC_TVASPECT_X,407,28,41,12,ES_AUTOHSCROLL | WS_DISABLED + EDITTEXT IDC_TVASPECT_Y,458,28,41,12,ES_AUTOHSCROLL | WS_DISABLED + CTEXT "/",IDC_STATIC_SLASHTEXT,449,31,8,8,WS_DISABLED LTEXT "DirectDraw:",65454,11,126,46,10 LTEXT "DirectDraw:",65455,188,125,46,10 COMBOBOX IDC_VIDEOCONFIG_DIRECTDRAW_FS,59,123,105,50,CBS_DROPDOWNLIST | WS_TABSTOP @@ -1730,6 +1653,10 @@ BEGIN BOTTOMMARGIN, 121 END + "NTVIEW", DIALOG + BEGIN + END + "MONITOR", DIALOG BEGIN LEFTMARGIN, 7 @@ -1756,6 +1683,10 @@ BEGIN BOTTOMMARGIN, 198 END + "TASEDITOR", DIALOG + BEGIN + END + "ASSEMBLER", DIALOG BEGIN LEFTMARGIN, 7 @@ -2460,12 +2391,119 @@ BEGIN END END -#endif // Neutral resources + +///////////////////////////////////////////////////////////////////////////// +// +// AFX_DIALOG_LAYOUT +// + +NTVIEW AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +TIMINGCONFIG AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +#endif // ·ÇÌØ¶¨ÓïÑÔ resources ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// -// English (United States) resources +// ¶íÓï(¶íÂÞ˹) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) +LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT +#pragma code_page(1251) + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_TASEDITOR_SAVINGOPTIONS DIALOGEX 0, 0, 223, 208 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Project file saving options" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + DEFPUSHBUTTON "OK",IDOK,109,187,50,14 + PUSHBUTTON "Cancel",IDCANCEL,165,187,50,14 + CONTROL " Binary format of Input",IDC_CHECK_BINARY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,17,89,10 + CONTROL " Markers",IDC_CHECK_MARKERS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,32,67,10 + CONTROL " Bookmarks",IDC_CHECK_BOOKMARKS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,47,67,10 + CONTROL " History",IDC_CHECK_HISTORY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,62,67,10 + CONTROL " Piano Roll",IDC_CHECK_PIANO_ROLL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,77,67,10 + CONTROL " Selection",IDC_CHECK_SELECTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,92,67,10 + GROUPBOX "File contents",IDC_STATIC,105,4,111,177 + GROUPBOX "Greenzone saving options",IDC_STATIC,112,106,97,69 + CONTROL " all frames",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON,122,117,77,10 + CONTROL " every 16th frame",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,122,131,77,10 + CONTROL " marked frames",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,122,145,77,10 + CONTROL " don't save",IDC_RADIO4,"Button",BS_AUTORADIOBUTTON,122,159,77,10 + CONTROL " Autosave project",IDC_AUTOSAVE_PROJECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,17,81,10 + CONTROL " silently",IDC_SILENT_AUTOSAVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,47,42,10 + LTEXT "every",IDC_AUTOSAVE_PERIOD_EVERY_TEXT,14,32,21,8 + EDITTEXT IDC_AUTOSAVE_PERIOD,36,30,24,14,ES_AUTOHSCROLL | ES_NUMBER + LTEXT "minutes",IDC_AUTOSAVE_PERIOD_MINUTES_TEXT,64,32,28,8 + GROUPBOX "Settings",IDC_STATIC,6,4,91,177 +END + +IDD_SYMBOLIC_DEBUG_NAMING DIALOGEX 0, 0, 245, 83 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Symbolic Debug Naming" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + DEFPUSHBUTTON "OK",IDOK,132,62,50,14 + PUSHBUTTON "Cancel",IDCANCEL,189,62,50,14 + LTEXT "File",IDC_STATIC,7,7,15,9 + EDITTEXT IDC_SYMBOLIC_ADDRESS,38,24,33,13,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP + LTEXT "Address",IDC_STATIC,6,26,30,10 + EDITTEXT IDC_SYMBOLIC_NAME,107,24,132,13,ES_AUTOHSCROLL + LTEXT "Name",IDC_STATIC,83,26,22,10 + LTEXT "Comment",IDC_STATIC,6,45,37,10 + EDITTEXT IDC_SYMBOLIC_COMMENT,45,43,194,13,ES_AUTOHSCROLL + EDITTEXT IDC_SYMBOLIC_FILENAME,24,6,215,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_TASEDITOR_SAVINGOPTIONS, DIALOG + BEGIN + END + + IDD_SYMBOLIC_DEBUG_NAMING, DIALOG + BEGIN + BOTTOMMARGIN, 82 + END +END +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// AFX_DIALOG_LAYOUT +// + +IDD_TASEDITOR_SAVINGOPTIONS AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +#endif // ¶íÓï(¶íÂÞ˹) resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// Ó¢Óï(ÃÀ¹ú) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US @@ -2699,7 +2737,7 @@ IDB_BITMAP_SELECTED17 BITMAP "res\\te_17_selected.bmp" IDB_BITMAP_SELECTED18 BITMAP "res\\te_18_selected.bmp" IDB_BITMAP_SELECTED19 BITMAP "res\\te_19_selected.bmp" IDB_BRANCH_SPRITESHEET BITMAP "res\\branch_spritesheet.bmp" -#endif // English (United States) resources +#endif // Ó¢Óï(ÃÀ¹ú) resources ///////////////////////////////////////////////////////////////////////////// @@ -2709,8 +2747,7 @@ IDB_BRANCH_SPRITESHEET BITMAP "res\\branch_spritesheet.bmp" // // Generated from the TEXTINCLUDE 3 resource. // - - + ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED diff --git a/src/drivers/win/resource.h b/src/drivers/win/resource.h index dcd58f63..1839a585 100644 --- a/src/drivers/win/resource.h +++ b/src/drivers/win/resource.h @@ -1,6 +1,6 @@ //{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by res.rc +// Microsoft Visual C++ Éú³ÉµÄ°üº¬Îļþ¡£ +// ¹© res.rc ʹÓà // #define CLOSE_BUTTON 1 #define BUTTON_CLOSE 1 @@ -784,6 +784,10 @@ #define IDC_RICHEDIT_DISASM 1304 #define IDC_CHECK2 1305 #define DEBUGIDAFONT 1305 +#define IDC_AUTOSAVE_PERIOD_EVERY_TEXT 1306 +#define IDC_AUTOSAVE_PERIOD_MINUTES_TEXT 1307 +#define IDC_VBLANK_SCANLINES_TEXT 1308 +#define IDC_EXTRA_SCANLINES_TEXT 1309 #define MENU_NETWORK 40040 #define MENU_PALETTE 40041 #define MENU_SOUND 40042 @@ -1271,14 +1275,15 @@ #define IDC_STATIC_SLASHTEXT 65442 #define IDC_BOOKMARK_NAME_TEXT 65535 #define ID_CDL 65535 +#define IDC_NTVIEW_SCANLINE_TEXT 65535 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 293 +#define _APS_NEXT_RESOURCE_VALUE 296 #define _APS_NEXT_COMMAND_VALUE 40600 -#define _APS_NEXT_CONTROL_VALUE 1306 +#define _APS_NEXT_CONTROL_VALUE 1310 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif diff --git a/src/drivers/win/sound.cpp b/src/drivers/win/sound.cpp index baef27fd..ae5f1a86 100644 --- a/src/drivers/win/sound.cpp +++ b/src/drivers/win/sound.cpp @@ -387,7 +387,7 @@ void win_SoundWriteData(int32 *buffer, int count) { //-------- //GUI and control APIs -static HWND uug=0; +HWND uug=0; static void UpdateSD(HWND hwndDlg) { @@ -450,6 +450,7 @@ static void UpdateSD(HWND hwndDlg) EnableWindow(GetDlgItem(hwndDlg,65457),FALSE); //Misc. Output Format group EnableWindow(GetDlgItem(hwndDlg,65455),FALSE); + EnableWindow(GetDlgItem(hwndDlg,65462),FALSE); EnableWindow(GetDlgItem(hwndDlg,65461),FALSE); EnableWindow(GetDlgItem(hwndDlg,65460),FALSE); @@ -490,6 +491,7 @@ static void UpdateSD(HWND hwndDlg) EnableWindow(GetDlgItem(hwndDlg,65457),TRUE); //Misc. Output Format group EnableWindow(GetDlgItem(hwndDlg,65455),TRUE); + EnableWindow(GetDlgItem(hwndDlg,65462),TRUE); EnableWindow(GetDlgItem(hwndDlg,65461),TRUE); EnableWindow(GetDlgItem(hwndDlg,65460),TRUE); diff --git a/src/drivers/win/taseditor.cpp b/src/drivers/win/taseditor.cpp index ef423732..86f89e6b 100644 --- a/src/drivers/win/taseditor.cpp +++ b/src/drivers/win/taseditor.cpp @@ -682,12 +682,23 @@ BOOL CALLBACK savingOptionsWndProc(HWND hwndDlg, UINT message, WPARAM wParam, LP CheckDlgButton(hwndDlg, IDC_CHECK_PIANO_ROLL, taseditorConfig.projectSavingOptions_SavePianoRoll?BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwndDlg, IDC_CHECK_SELECTION, taseditorConfig.projectSavingOptions_SaveSelection?BST_CHECKED : BST_UNCHECKED); CheckRadioButton(hwndDlg, IDC_RADIO1, IDC_RADIO4, IDC_RADIO1 + (taseditorConfig.projectSavingOptions_GreenzoneSavingMode % GREENZONE_SAVING_MODES_TOTAL)); + EnableWindow(GetDlgItem(hwndDlg, IDC_AUTOSAVE_PERIOD), taseditorConfig.autosaveEnabled); + EnableWindow(GetDlgItem(hwndDlg, IDC_AUTOSAVE_PERIOD_EVERY_TEXT), taseditorConfig.autosaveEnabled); + EnableWindow(GetDlgItem(hwndDlg, IDC_AUTOSAVE_PERIOD_MINUTES_TEXT), taseditorConfig.autosaveEnabled); return TRUE; } case WM_COMMAND: { switch (LOWORD(wParam)) { + case IDC_AUTOSAVE_PROJECT: + { + bool chk = BST_CHECKED == SendDlgItemMessage(hwndDlg, IDC_AUTOSAVE_PROJECT, BM_GETCHECK, 0, 0); + EnableWindow(GetDlgItem(hwndDlg, IDC_AUTOSAVE_PERIOD), chk); + EnableWindow(GetDlgItem(hwndDlg, IDC_AUTOSAVE_PERIOD_EVERY_TEXT), chk); + EnableWindow(GetDlgItem(hwndDlg, IDC_AUTOSAVE_PERIOD_MINUTES_TEXT), chk); + } + break; case IDOK: { taseditorConfig.autosaveEnabled = (SendDlgItemMessage(hwndDlg, IDC_AUTOSAVE_PROJECT, BM_GETCHECK, 0, 0) == BST_CHECKED); diff --git a/src/drivers/win/taseditor/piano_roll.cpp b/src/drivers/win/taseditor/piano_roll.cpp index f0198fc2..ae3161d6 100644 --- a/src/drivers/win/taseditor/piano_roll.cpp +++ b/src/drivers/win/taseditor/piano_roll.cpp @@ -433,7 +433,7 @@ void PIANO_ROLL::reset() mustRedrawList = mustCheckItemUnderMouse = true; playbackCursorOffset = 0; shiftHeld = ctrlHeld = altHeld = false; - shiftTimer = ctrlTimer = shiftActionsÑount = ctrlActionsÑount = 0; + shiftTimer = ctrlTimer = shiftActionsCount = ctrlActionsCount = 0; nextHeaderUpdateTime = headerItemUnderMouse = 0; // delete all columns except 0th while (ListView_DeleteColumn(hwndList, 1)) {} @@ -480,16 +480,16 @@ void PIANO_ROLL::update() { if ((int)(shiftTimer + GetDoubleClickTime()) > clock()) { - shiftActionsÑount++; - if (shiftActionsÑount >= DOUBLETAP_COUNT) + shiftActionsCount++; + if (shiftActionsCount >= DOUBLETAP_COUNT) { if (taseditorWindow.TASEditorIsInFocus) followPlaybackCursor(); - shiftActionsÑount = ctrlActionsÑount = 0; + shiftActionsCount = ctrlActionsCount = 0; } } else { - shiftActionsÑount = 0; + shiftActionsCount = 0; } shiftTimer = clock(); } @@ -497,16 +497,16 @@ void PIANO_ROLL::update() { if ((int)(ctrlTimer + GetDoubleClickTime()) > clock()) { - ctrlActionsÑount++; - if (ctrlActionsÑount >= DOUBLETAP_COUNT) + ctrlActionsCount++; + if (ctrlActionsCount >= DOUBLETAP_COUNT) { if (taseditorWindow.TASEditorIsInFocus) followSelection(); - ctrlActionsÑount = shiftActionsÑount = 0; + ctrlActionsCount = shiftActionsCount = 0; } } else { - ctrlActionsÑount = 0; + ctrlActionsCount = 0; } ctrlTimer = clock(); } diff --git a/src/drivers/win/taseditor/piano_roll.h b/src/drivers/win/taseditor/piano_roll.h index 9d912a9e..033d5f13 100644 --- a/src/drivers/win/taseditor/piano_roll.h +++ b/src/drivers/win/taseditor/piano_roll.h @@ -217,7 +217,7 @@ public: bool shiftHeld, ctrlHeld, altHeld; int shiftTimer, ctrlTimer; - int shiftActionsÑount, ctrlActionsÑount; + int shiftActionsCount, ctrlActionsCount; HWND hwndMarkerDragBox, hwndMarkerDragBoxText; // GDI stuff diff --git a/src/drivers/win/taseditor/taseditor_window.cpp b/src/drivers/win/taseditor/taseditor_window.cpp index c4afb7fd..815c6a46 100644 --- a/src/drivers/win/taseditor/taseditor_window.cpp +++ b/src/drivers/win/taseditor/taseditor_window.cpp @@ -132,47 +132,47 @@ char taseditorHelpFilename[] = "\\taseditor.chm"; // "y < 0" means that the coordinate is counted from the lower border of the window (bottom-aligned) // The items in this array MUST be sorted by the same order as the Window_items_enum! WindowItemData windowItems[TASEDITOR_WINDOW_TOTAL_ITEMS] = { - WINDOWITEMS_PIANO_ROLL, IDC_LIST1, 0, 0, -1, -1, "", "", false, 0, 0, - WINDOWITEMS_PLAYBACK_MARKER, IDC_PLAYBACK_MARKER, 0, 0, 0, 0, "Click here to scroll Piano Roll to Playback cursor (hotkey: tap Shift twice)", "", false, 0, 0, - WINDOWITEMS_PLAYBACK_MARKER_EDIT, IDC_PLAYBACK_MARKER_EDIT, 0, 0, -1, 0, "Click to edit text", "", false, 0, 0, - WINDOWITEMS_SELECTION_MARKER, IDC_SELECTION_MARKER, 0, -1, 0, -1, "Click here to scroll Piano Roll to Selection (hotkey: tap Ctrl twice)", "", false, 0, 0, - WINDOWITEMS_SELECTION_MARKER_EDIT, IDC_SELECTION_MARKER_EDIT, 0, -1, -1, -1, "Click to edit text", "", false, 0, 0, - WINDOWITEMS_PLAYBACK_BOX, IDC_PLAYBACK_BOX, -1, 0, 0, 0, "", "", false, 0, 0, - WINDOWITEMS_PROGRESS_BUTTON, IDC_PROGRESS_BUTTON, -1, 0, 0, 0, "Click here when you want to abort seeking", "", false, EMUCMD_TASEDITOR_CANCEL_SEEKING, 0, - WINDOWITEMS_REWIND_FULL, TASEDITOR_REWIND_FULL, -1, 0, 0, 0, "Send Playback to previous Marker (mouse: Shift+Wheel up) (hotkey: Shift+PageUp)", "", false, 0, 0, - WINDOWITEMS_REWIND, TASEDITOR_REWIND, -1, 0, 0, 0, "Rewind 1 frame (mouse: Right button+Wheel up) (hotkey: Shift+Up)", "", false, EMUCMD_TASEDITOR_REWIND, 0, - WINDOWITEMS_PAUSE, TASEDITOR_PLAYSTOP, -1, 0, 0, 0, "Pause/Unpause Emulation (mouse: Middle button)", "", false, EMUCMD_PAUSE, 0, - WINDOWITEMS_FORWARD, TASEDITOR_FORWARD, -1, 0, 0, 0, "Advance 1 frame (mouse: Right button+Wheel down) (hotkey: Shift+Down)", "", false, EMUCMD_FRAME_ADVANCE, 0, - WINDOWITEMS_FORWARD_FULL, TASEDITOR_FORWARD_FULL, -1, 0, 0, 0, "Send Playback to next Marker (mouse: Shift+Wheel down) (hotkey: Shift+PageDown)", "", false, 0, 0, - WINDOWITEMS_PROGRESS_BAR, IDC_PROGRESS1, -1, 0, 0, 0, "", "", false, 0, 0, - WINDOWITEMS_FOLLOW_CURSOR, CHECK_FOLLOW_CURSOR, -1, 0, 0, 0, "The Piano Roll will follow Playback cursor movements", "", false, 0, 0, - WINDOWITEMS_TURBO_SEEK, CHECK_TURBO_SEEK, -1, 0, 0, 0, "Uncheck when you need to watch seeking in slow motion", "", false, 0, 0, - WINDOWITEMS_AUTORESTORE_PLAYBACK, CHECK_AUTORESTORE_PLAYBACK, -1, 0, 0, 0, "Whenever you change Input above Playback cursor, the cursor returns to where it was before the change", "", false, EMUCMD_TASEDITOR_SWITCH_AUTORESTORING, 0, - WINDOWITEMS_RECORDER_BOX, IDC_RECORDER_BOX, -1, 0, 0, 0, "", "", false, 0, 0, - WINDOWITEMS_RECORDING, IDC_RECORDING, -1, 0, 0, 0, "Switch Input Recording on/off", "", false, EMUCMD_MOVIE_READONLY_TOGGLE, 0, - WINDOWITEMS_RECORD_ALL, IDC_RADIO_ALL, -1, 0, 0, 0, "Switch off Multitracking", "", false, 0, 0, - WINDOWITEMS_RECORD_1P, IDC_RADIO_1P, -1, 0, 0, 0, "Select Joypad 1 as current", "", false, EMUCMD_TASEDITOR_SWITCH_MULTITRACKING, 0, - WINDOWITEMS_RECORD_2P, IDC_RADIO_2P, -1, 0, 0, 0, "Select Joypad 2 as current", "", false, EMUCMD_TASEDITOR_SWITCH_MULTITRACKING, 0, - WINDOWITEMS_RECORD_3P, IDC_RADIO_3P, -1, 0, 0, 0, "Select Joypad 3 as current", "", false, EMUCMD_TASEDITOR_SWITCH_MULTITRACKING, 0, - WINDOWITEMS_RECORD_4P, IDC_RADIO_4P, -1, 0, 0, 0, "Select Joypad 4 as current", "", false, EMUCMD_TASEDITOR_SWITCH_MULTITRACKING, 0, - WINDOWITEMS_SUPERIMPOSE, IDC_SUPERIMPOSE, -1, 0, 0, 0, "Allows to superimpose old Input with new buttons, instead of overwriting", "", false, 0, 0, - WINDOWITEMS_USE_PATTERN, IDC_USEPATTERN, -1, 0, 0, 0, "Applies current Autofire Pattern to Input recording", "", false, 0, 0, - WINDOWITEMS_SPLICER_BOX, IDC_SPLICER_BOX, -1, 0, 0, 0, "", "", false, 0, 0, - WINDOWITEMS_SELECTION_TEXT, IDC_TEXT_SELECTION, -1, 0, 0, 0, "Current size of Selection", "", false, 0, 0, - WINDOWITEMS_CLIPBOARD_TEXT, IDC_TEXT_CLIPBOARD, -1, 0, 0, 0, "Current size of Input in the Clipboard", "", false, 0, 0, - WINDOWITEMS_LUA_BOX, IDC_LUA_BOX, -1, 0, 0, 0, "", "", false, 0, 0, - WINDOWITEMS_RUN_MANUAL, TASEDITOR_RUN_MANUAL, -1, 0, 0, 0, "Press the button to execute Lua Manual Function", "", false, EMUCMD_TASEDITOR_RUN_MANUAL_LUA, 0, - WINDOWITEMS_RUN_AUTO, IDC_RUN_AUTO, -1, 0, 0, 0, "Enable Lua Auto Function (but first it must be registered by Lua script)", "", false, 0, 0, - WINDOWITEMS_BRANCHES_BUTTON, IDC_BRANCHES_BUTTON, -1, 0, 0, 0, "Click here to switch between Bookmarks List and Branches Tree", "", false, 0, 0, - WINDOWITEMS_BOOKMARKS_BOX, IDC_BOOKMARKS_BOX, -1, 0, 0, 0, "", "", false, 0, 0, - WINDOWITEMS_BOOKMARKS_LIST, IDC_BOOKMARKSLIST, -1, 0, 0, 0, "Right click = set Bookmark, Left click = jump to Bookmark or load Branch", "", false, 0, 0, - WINDOWITEMS_BRANCHES_BITMAP, IDC_BRANCHES_BITMAP, -1, 0, 0, 0, "Right click = set Bookmark, single Left click = jump to Bookmark, double Left click = load Branch", "", false, 0, 0, - WINDOWITEMS_HISTORY_BOX, IDC_HISTORY_BOX, -1, 0, 0, -1, "", "", false, 0, 0, - WINDOWITEMS_HISTORY_LIST, IDC_HISTORYLIST, -1, 0, 0, -1, "Click to revert the project back to that time", "", false, 0, 0, - WINDOWITEMS_PREVIOUS_MARKER, TASEDITOR_PREV_MARKER, -1, -1, 0, -1, "Send Selection to previous Marker (mouse: Ctrl+Wheel up) (hotkey: Ctrl+PageUp)", "", false, 0, 0, - WINDOWITEMS_SIMILAR, TASEDITOR_FIND_BEST_SIMILAR_MARKER, -1, -1, 0, -1, "Auto-search for Marker Note", "", false, 0, 0, - WINDOWITEMS_MORE, TASEDITOR_FIND_NEXT_SIMILAR_MARKER, -1, -1, 0, -1, "Continue Auto-search", "", false, 0, 0, - WINDOWITEMS_NEXT_MARKER, TASEDITOR_NEXT_MARKER, -1, -1, 0, -1, "Send Selection to next Marker (mouse: Ctrl+Wheel up) (hotkey: Ctrl+PageDown)", "", false, 0, 0, + WINDOWITEMS_PIANO_ROLL, IDC_LIST1, 0, 0, -1, -1, "", false, 0, 0, + WINDOWITEMS_PLAYBACK_MARKER, IDC_PLAYBACK_MARKER, 0, 0, 0, 0, "Click here to scroll Piano Roll to Playback cursor (hotkey: tap Shift twice)", false, 0, 0, + WINDOWITEMS_PLAYBACK_MARKER_EDIT, IDC_PLAYBACK_MARKER_EDIT, 0, 0, -1, 0, "Click to edit text", false, 0, 0, + WINDOWITEMS_SELECTION_MARKER, IDC_SELECTION_MARKER, 0, -1, 0, -1, "Click here to scroll Piano Roll to Selection (hotkey: tap Ctrl twice)", false, 0, 0, + WINDOWITEMS_SELECTION_MARKER_EDIT, IDC_SELECTION_MARKER_EDIT, 0, -1, -1, -1, "Click to edit text", false, 0, 0, + WINDOWITEMS_PLAYBACK_BOX, IDC_PLAYBACK_BOX, -1, 0, 0, 0, "", false, 0, 0, + WINDOWITEMS_PROGRESS_BUTTON, IDC_PROGRESS_BUTTON, -1, 0, 0, 0, "Click here when you want to abort seeking", false, EMUCMD_TASEDITOR_CANCEL_SEEKING, 0, + WINDOWITEMS_REWIND_FULL, TASEDITOR_REWIND_FULL, -1, 0, 0, 0, "Send Playback to previous Marker (mouse: Shift+Wheel up) (hotkey: Shift+PageUp)", false, 0, 0, + WINDOWITEMS_REWIND, TASEDITOR_REWIND, -1, 0, 0, 0, "Rewind 1 frame (mouse: Right button+Wheel up) (hotkey: Shift+Up)", false, EMUCMD_TASEDITOR_REWIND, 0, + WINDOWITEMS_PAUSE, TASEDITOR_PLAYSTOP, -1, 0, 0, 0, "Pause/Unpause Emulation (mouse: Middle button)", false, EMUCMD_PAUSE, 0, + WINDOWITEMS_FORWARD, TASEDITOR_FORWARD, -1, 0, 0, 0, "Advance 1 frame (mouse: Right button+Wheel down) (hotkey: Shift+Down)", false, EMUCMD_FRAME_ADVANCE, 0, + WINDOWITEMS_FORWARD_FULL, TASEDITOR_FORWARD_FULL, -1, 0, 0, 0, "Send Playback to next Marker (mouse: Shift+Wheel down) (hotkey: Shift+PageDown)", false, 0, 0, + WINDOWITEMS_PROGRESS_BAR, IDC_PROGRESS1, -1, 0, 0, 0, "", false, 0, 0, + WINDOWITEMS_FOLLOW_CURSOR, CHECK_FOLLOW_CURSOR, -1, 0, 0, 0, "The Piano Roll will follow Playback cursor movements", false, 0, 0, + WINDOWITEMS_TURBO_SEEK, CHECK_TURBO_SEEK, -1, 0, 0, 0, "Uncheck when you need to watch seeking in slow motion", false, 0, 0, + WINDOWITEMS_AUTORESTORE_PLAYBACK, CHECK_AUTORESTORE_PLAYBACK, -1, 0, 0, 0, "Whenever you change Input above Playback cursor, the cursor returns to where it was before the change", false, EMUCMD_TASEDITOR_SWITCH_AUTORESTORING, 0, + WINDOWITEMS_RECORDER_BOX, IDC_RECORDER_BOX, -1, 0, 0, 0, "", false, 0, 0, + WINDOWITEMS_RECORDING, IDC_RECORDING, -1, 0, 0, 0, "Switch Input Recording on/off", false, EMUCMD_MOVIE_READONLY_TOGGLE, 0, + WINDOWITEMS_RECORD_ALL, IDC_RADIO_ALL, -1, 0, 0, 0, "Switch off Multitracking", false, 0, 0, + WINDOWITEMS_RECORD_1P, IDC_RADIO_1P, -1, 0, 0, 0, "Select Joypad 1 as current", false, EMUCMD_TASEDITOR_SWITCH_MULTITRACKING, 0, + WINDOWITEMS_RECORD_2P, IDC_RADIO_2P, -1, 0, 0, 0, "Select Joypad 2 as current", false, EMUCMD_TASEDITOR_SWITCH_MULTITRACKING, 0, + WINDOWITEMS_RECORD_3P, IDC_RADIO_3P, -1, 0, 0, 0, "Select Joypad 3 as current", false, EMUCMD_TASEDITOR_SWITCH_MULTITRACKING, 0, + WINDOWITEMS_RECORD_4P, IDC_RADIO_4P, -1, 0, 0, 0, "Select Joypad 4 as current", false, EMUCMD_TASEDITOR_SWITCH_MULTITRACKING, 0, + WINDOWITEMS_SUPERIMPOSE, IDC_SUPERIMPOSE, -1, 0, 0, 0, "Allows to superimpose old Input with new buttons, instead of overwriting", false, 0, 0, + WINDOWITEMS_USE_PATTERN, IDC_USEPATTERN, -1, 0, 0, 0, "Applies current Autofire Pattern to Input recording", false, 0, 0, + WINDOWITEMS_SPLICER_BOX, IDC_SPLICER_BOX, -1, 0, 0, 0, "", false, 0, 0, + WINDOWITEMS_SELECTION_TEXT, IDC_TEXT_SELECTION, -1, 0, 0, 0, "Current size of Selection", false, 0, 0, + WINDOWITEMS_CLIPBOARD_TEXT, IDC_TEXT_CLIPBOARD, -1, 0, 0, 0, "Current size of Input in the Clipboard", false, 0, 0, + WINDOWITEMS_LUA_BOX, IDC_LUA_BOX, -1, 0, 0, 0, "", false, 0, 0, + WINDOWITEMS_RUN_MANUAL, TASEDITOR_RUN_MANUAL, -1, 0, 0, 0, "Press the button to execute Lua Manual Function", false, EMUCMD_TASEDITOR_RUN_MANUAL_LUA, 0, + WINDOWITEMS_RUN_AUTO, IDC_RUN_AUTO, -1, 0, 0, 0, "Enable Lua Auto Function (but first it must be registered by Lua script)", false, 0, 0, + WINDOWITEMS_BRANCHES_BUTTON, IDC_BRANCHES_BUTTON, -1, 0, 0, 0, "Click here to switch between Bookmarks List and Branches Tree", false, 0, 0, + WINDOWITEMS_BOOKMARKS_BOX, IDC_BOOKMARKS_BOX, -1, 0, 0, 0, "", false, 0, 0, + WINDOWITEMS_BOOKMARKS_LIST, IDC_BOOKMARKSLIST, -1, 0, 0, 0, "Right click = set Bookmark, Left click = jump to Bookmark or load Branch", false, 0, 0, + WINDOWITEMS_BRANCHES_BITMAP, IDC_BRANCHES_BITMAP, -1, 0, 0, 0, "Right click = set Bookmark, single Left click = jump to Bookmark, double Left click = load Branch", false, 0, 0, + WINDOWITEMS_HISTORY_BOX, IDC_HISTORY_BOX, -1, 0, 0, -1, "", false, 0, 0, + WINDOWITEMS_HISTORY_LIST, IDC_HISTORYLIST, -1, 0, 0, -1, "Click to revert the project back to that time", false, 0, 0, + WINDOWITEMS_PREVIOUS_MARKER, TASEDITOR_PREV_MARKER, -1, -1, 0, -1, "Send Selection to previous Marker (mouse: Ctrl+Wheel up) (hotkey: Ctrl+PageUp)", false, 0, 0, + WINDOWITEMS_SIMILAR, TASEDITOR_FIND_BEST_SIMILAR_MARKER, -1, -1, 0, -1, "Auto-search for Marker Note", false, 0, 0, + WINDOWITEMS_MORE, TASEDITOR_FIND_NEXT_SIMILAR_MARKER, -1, -1, 0, -1, "Continue Auto-search", false, 0, 0, + WINDOWITEMS_NEXT_MARKER, TASEDITOR_NEXT_MARKER, -1, -1, 0, -1, "Send Selection to next Marker (mouse: Ctrl+Wheel up) (hotkey: Ctrl+PageDown)", false, 0, 0, }; TASEDITOR_WINDOW::TASEDITOR_WINDOW() @@ -186,6 +186,64 @@ TASEDITOR_WINDOW::TASEDITOR_WINDOW() minHeight = 0; } +void TASEDITOR_WINDOW::updateTooltips() +{ + for (int i = 0; i < TASEDITOR_WINDOW_TOTAL_ITEMS; ++i) + { + TOOLINFO toolInfo = { 0 }; + toolInfo.cbSize = sizeof(TOOLINFO); + toolInfo.hwnd = hwndTASEditor; + toolInfo.uId = (UINT_PTR)GetDlgItem(hwndTASEditor, windowItems[i].id); + if (windowItems[i].isStaticRect) + { + // for static text we specify rectangle + RECT toolRect; + GetWindowRect(GetDlgItem(hwndTASEditor, windowItems[i].id), &toolRect); + POINT pt; + pt.x = toolRect.left; + pt.y = toolRect.top; + ScreenToClient(hwndTASEditor, &pt); + toolInfo.rect.left = pt.x; + toolInfo.rect.top = pt.y; + toolInfo.rect.right = toolInfo.rect.left + toolRect.right - toolRect.left; + toolInfo.rect.bottom = toolInfo.rect.top + toolRect.bottom - toolRect.top; + toolInfo.uFlags = TTF_SUBCLASS; + } + else + // for other controls we provide hwnd + toolInfo.uFlags = TTF_IDISHWND | TTF_SUBCLASS; + char tooltipText[TOOLTIP_TEXT_MAX_LEN]; + if (windowItems[i].hotkeyEmuCmd && FCEUD_CommandMapping[windowItems[i].hotkeyEmuCmd]) + { + // add hotkey mapping if needed + strcpy(tooltipText, windowItems[i].tooltipText); + strcat(tooltipText, " (hotkey: "); + strcat(tooltipText, GetKeyComboName(FCEUD_CommandMapping[windowItems[i].hotkeyEmuCmd])); + strcat(tooltipText, ")"); + toolInfo.lpszText = tooltipText; + } else + // No hotkey, use the tooltip text itself + toolInfo.lpszText = windowItems[i].tooltipText; + + if(!windowItems[i].tooltipHWND) + { + // if the tooltip handle is not created yet, create one + if (windowItems[i].tooltipHWND = CreateWindowEx(NULL, TOOLTIPS_CLASS, NULL, + WS_POPUP | TTS_ALWAYSTIP | TTS_BALLOON | TTS_NOANIMATE | TTS_NOFADE, + CW_USEDEFAULT, CW_USEDEFAULT, + CW_USEDEFAULT, CW_USEDEFAULT, + hwndTASEditor, NULL, + fceu_hInstance, NULL)) + { + SendMessage(windowItems[i].tooltipHWND, TTM_ADDTOOL, 0, (LPARAM)&toolInfo); + SendMessage(windowItems[i].tooltipHWND, TTM_SETDELAYTIME, TTDT_AUTOPOP, TOOLTIPS_AUTOPOP_TIMEOUT); + } + } else + // The tooltip handle is already created, just update the tooltip info + SendMessage(windowItems[i].tooltipHWND, TTM_SETTOOLINFO, 0, (LPARAM)&toolInfo); + } +} + void TASEDITOR_WINDOW::init() { isReadyForResizing = false; @@ -203,61 +261,8 @@ void TASEDITOR_WINDOW::init() updateCheckedItems(); hPatternsMenu = GetSubMenu(hMainMenu, PATTERNS_MENU_POS); // tooltips - for (int i = 0; i < TASEDITOR_WINDOW_TOTAL_ITEMS; ++i) - { - if (windowItems[i].tooltipTextBase[0]) - { - windowItems[i].tooltipHWND = CreateWindowEx(NULL, TOOLTIPS_CLASS, NULL, - WS_POPUP | TTS_ALWAYSTIP | TTS_BALLOON | TTS_NOANIMATE | TTS_NOFADE, - CW_USEDEFAULT, CW_USEDEFAULT, - CW_USEDEFAULT, CW_USEDEFAULT, - hwndTASEditor, NULL, - fceu_hInstance, NULL); - if (windowItems[i].tooltipHWND) - { - // Associate the tooltip with the tool - TOOLINFO toolInfo = {0}; - toolInfo.cbSize = sizeof(toolInfo); - toolInfo.hwnd = hwndTASEditor; - toolInfo.uId = (UINT_PTR)GetDlgItem(hwndTASEditor, windowItems[i].id); - if (windowItems[i].isStaticRect) - { - // for static text we specify rectangle - toolInfo.uFlags = TTF_SUBCLASS; - RECT toolRect; - GetWindowRect(GetDlgItem(hwndTASEditor, windowItems[i].id), &toolRect); - POINT pt; - pt.x = toolRect.left; - pt.y = toolRect.top; - ScreenToClient(hwndTASEditor, &pt); - toolInfo.rect.left = pt.x; - toolInfo.rect.right = toolInfo.rect.left + (toolRect.right - toolRect.left); - toolInfo.rect.top = pt.y; - toolInfo.rect.bottom = toolInfo.rect.top + (toolRect.bottom - toolRect.top); - } else - { - // for other controls we provide hwnd - toolInfo.uFlags = TTF_IDISHWND | TTF_SUBCLASS; - } - // add hotkey mapping if needed - if (windowItems[i].hotkeyEmuCmd && FCEUD_CommandMapping[windowItems[i].hotkeyEmuCmd]) - { - windowItems[i].tooltipText[0] = 0; - strcpy(windowItems[i].tooltipText, windowItems[i].tooltipTextBase); - strcat(windowItems[i].tooltipText, " (hotkey: "); - strncat(windowItems[i].tooltipText, GetKeyComboName(FCEUD_CommandMapping[windowItems[i].hotkeyEmuCmd]), TOOLTIP_TEXT_MAX_LEN - strlen(windowItems[i].tooltipText) - 1); - strncat(windowItems[i].tooltipText, ")", TOOLTIP_TEXT_MAX_LEN - strlen(windowItems[i].tooltipText) - 1); - toolInfo.lpszText = windowItems[i].tooltipText; - } else - { - toolInfo.lpszText = windowItems[i].tooltipTextBase; - } - SendMessage(windowItems[i].tooltipHWND, TTM_ADDTOOL, 0, (LPARAM)&toolInfo); - SendMessage(windowItems[i].tooltipHWND, TTM_SETDELAYTIME, TTDT_AUTOPOP, TOOLTIPS_AUTOPOP_TIMEOUT); - } - } - } updateTooltips(); + toggleTooltips(); // subclass "Marker X" text fields IDC_PLAYBACK_MARKER_oldWndProc = (WNDPROC)SetWindowLong(GetDlgItem(hwndTASEditor, IDC_PLAYBACK_MARKER), GWL_WNDPROC, (LONG)IDC_PLAYBACK_MARKER_WndProc); IDC_SELECTION_MARKER_oldWndProc = (WNDPROC)SetWindowLong(GetDlgItem(hwndTASEditor, IDC_SELECTION_MARKER), GWL_WNDPROC, (LONG)IDC_SELECTION_MARKER_WndProc); @@ -535,7 +540,7 @@ void TASEDITOR_WINDOW::changeBookmarksListHeight(int newHeight) ShowWindow(hwndTASEditor, SW_SHOWMAXIMIZED); } -void TASEDITOR_WINDOW::updateTooltips() +void TASEDITOR_WINDOW::toggleTooltips() { if (taseditorConfig.tooltipsEnabled) { @@ -1258,7 +1263,7 @@ BOOL CALLBACK TASEditorWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPara case ID_HELP_TOOLTIPS: taseditorConfig.tooltipsEnabled ^= 1; taseditorWindow.updateCheckedItems(); - taseditorWindow.updateTooltips(); + taseditorWindow.toggleTooltips(); break; case ID_HELP_ABOUT: DialogBox(fceu_hInstance, MAKEINTRESOURCE(IDD_TASEDITOR_ABOUT), taseditorWindow.hwndTASEditor, aboutWndProc); diff --git a/src/drivers/win/taseditor/taseditor_window.h b/src/drivers/win/taseditor/taseditor_window.h index 687d55fa..6274547a 100644 --- a/src/drivers/win/taseditor/taseditor_window.h +++ b/src/drivers/win/taseditor/taseditor_window.h @@ -62,8 +62,8 @@ struct WindowItemData int y; int width; int height; - char tooltipTextBase[TOOLTIP_TEXT_MAX_LEN]; - char tooltipText[TOOLTIP_TEXT_MAX_LEN]; +// char* tooltipTextBase; + char* tooltipText; bool isStaticRect; int hotkeyEmuCmd; HWND tooltipHWND; @@ -83,6 +83,7 @@ public: void handleWindowMovingOrResizing(); void changeBookmarksListHeight(int newHeight); + void toggleTooltips(); void updateTooltips(); void updateCaption(); void updateCheckedItems(); diff --git a/src/drivers/win/texthook.h b/src/drivers/win/texthook.h index 334b2c79..e897569a 100644 --- a/src/drivers/win/texthook.h +++ b/src/drivers/win/texthook.h @@ -14,3 +14,5 @@ void UpdateTextHooker(); void KillTextHooker(); void DoTextHooker(); void TextHookerCheck(); + +extern HWND hTextHooker; \ No newline at end of file diff --git a/src/drivers/win/timing.cpp b/src/drivers/win/timing.cpp index 9f29adec..89bc6e35 100644 --- a/src/drivers/win/timing.cpp +++ b/src/drivers/win/timing.cpp @@ -44,20 +44,23 @@ void CloseTimingDialog(HWND hwndDlg) if (postrenderscanlines < 0) { postrenderscanlines = 0; - MessageBox(hwndDlg, "Overclocking is when you speed up your CPU, not slow it down!", "Error", MB_OK); + MessageBox(hwndDlg, "Overclocking is when you speed up your CPU, not slow it down!", "Error", MB_OK | MB_ICONERROR); sprintf(str,"%d",postrenderscanlines); SetDlgItemText(hwndDlg,IDC_EXTRA_SCANLINES,str); + SetFocus(GetDlgItem(hwndDlg, IDC_EXTRA_SCANLINES)); } else if (vblankscanlines < 0) { vblankscanlines = 0; - MessageBox(hwndDlg, "Overclocking is when you speed up your CPU, not slow it down!", "Error", MB_OK); + MessageBox(hwndDlg, "Overclocking is when you speed up your CPU, not slow it down!", "Error", MB_OK | MB_ICONERROR); sprintf(str,"%d",vblankscanlines); SetDlgItemText(hwndDlg,IDC_VBLANK_SCANLINES,str); + SetFocus(GetDlgItem(hwndDlg, IDC_VBLANK_SCANLINES)); } else if (overclock_enabled && newppu) { - MessageBox(hwndDlg, "Overclocking doesn't work with new PPU!", "Error", MB_OK); + MessageBox(hwndDlg, "Overclocking doesn't work with new PPU!", "Error", MB_OK | MB_ICONERROR); + SetFocus(GetDlgItem(hwndDlg, CB_OVERCLOCKING)); } else EndDialog(hwndDlg, 0); @@ -85,9 +88,20 @@ BOOL CALLBACK TimingConCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar CheckDlgButton(hwndDlg, CB_DISABLE_SPEED_THROTTLING, BST_CHECKED); } - if(overclock_enabled) - CheckDlgButton(hwndDlg, CB_OVERCLOCKING, BST_CHECKED); + if(newppu) + { + EnableWindow(GetDlgItem(hwndDlg, CB_OVERCLOCKING), false); + } + if(overclock_enabled) + { + CheckDlgButton(hwndDlg, CB_OVERCLOCKING, BST_CHECKED); + EnableWindow(GetDlgItem(hwndDlg, IDC_EXTRA_SCANLINES), true); + EnableWindow(GetDlgItem(hwndDlg, CB_SKIP_7BIT), true); + EnableWindow(GetDlgItem(hwndDlg, IDC_VBLANK_SCANLINES), true); + EnableWindow(GetDlgItem(hwndDlg, IDC_VBLANK_SCANLINES_TEXT), true); + EnableWindow(GetDlgItem(hwndDlg, IDC_EXTRA_SCANLINES_TEXT), true); + } if(skip_7bit_overclocking) CheckDlgButton(hwndDlg, CB_SKIP_7BIT, BST_CHECKED); @@ -117,6 +131,16 @@ BOOL CALLBACK TimingConCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar { case 1: CloseTimingDialog(hwndDlg); + break; + case CB_OVERCLOCKING: + bool chk = IsDlgButtonChecked(hwndDlg, CB_OVERCLOCKING) == BST_CHECKED; + + EnableWindow(GetDlgItem(hwndDlg, IDC_EXTRA_SCANLINES), chk); + EnableWindow(GetDlgItem(hwndDlg, CB_SKIP_7BIT), chk); + EnableWindow(GetDlgItem(hwndDlg, IDC_VBLANK_SCANLINES), chk); + EnableWindow(GetDlgItem(hwndDlg, IDC_VBLANK_SCANLINES_TEXT), chk); + EnableWindow(GetDlgItem(hwndDlg, IDC_EXTRA_SCANLINES_TEXT), chk); + break; } } diff --git a/src/drivers/win/video.cpp b/src/drivers/win/video.cpp index e72dad77..e48bcd72 100644 --- a/src/drivers/win/video.cpp +++ b/src/drivers/win/video.cpp @@ -1283,6 +1283,11 @@ BOOL CALLBACK VideoConCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara strcat(buf, " (double-click anywhere)"); } SetDlgItemText(hwndDlg, IDC_VIDEOCONFIG_FS, buf); + + EnableWindow(GetDlgItem(hwndDlg, IDC_TVASPECT_X), eoptions&EO_TVASPECT); + EnableWindow(GetDlgItem(hwndDlg, IDC_TVASPECT_Y), eoptions&EO_TVASPECT); + EnableWindow(GetDlgItem(hwndDlg, IDC_STATIC_SLASHTEXT), eoptions&EO_TVASPECT); + break; } case WM_CLOSE: @@ -1398,6 +1403,11 @@ gornk: fssync=SendDlgItemMessage(hwndDlg,IDC_VIDEOCONFIG_SYNC_METHOD_FS,CB_GETCURSEL,0,(LPARAM)(LPSTR)0); EndDialog(hwndDlg,0); break; + case IDC_VIDEOCONFIG_TVASPECT: + bool enable = SendDlgItemMessage(hwndDlg, IDC_VIDEOCONFIG_TVASPECT, BM_GETCHECK, 0, 0) == BST_CHECKED; + EnableWindow(GetDlgItem(hwndDlg, IDC_TVASPECT_X), enable); + EnableWindow(GetDlgItem(hwndDlg, IDC_TVASPECT_Y), enable); + EnableWindow(GetDlgItem(hwndDlg, IDC_STATIC_SLASHTEXT), enable); } } return 0; diff --git a/src/drivers/win/window.cpp b/src/drivers/win/window.cpp index 971dc7c5..37291a21 100644 --- a/src/drivers/win/window.cpp +++ b/src/drivers/win/window.cpp @@ -94,7 +94,6 @@ using namespace std; #define FCEUX_CONTEXT_TOGGLESUBTITLES 60003 #define FCEUX_CONTEXT_DUMPSUBTITLES 60004 - //******************************************************************************** //Globals //******************************************************************************** @@ -109,6 +108,9 @@ HMENU hfceuxcontext; //Handle to context menu HMENU hfceuxcontextsub; //Handle to context sub menu HWND MainhWnd; //Main FCEUX(Parent) window Handle. Dialogs should use GetMainHWND() to get this +// HWND list for menu update, refers to FCEU_MENU_HWND +HMENU hmenuList[FCEUMENU_LIMIT]; + //Extern variables------------------------------------- extern bool movieSubtitles; extern FCEUGI *GameInfo; @@ -418,9 +420,9 @@ void UpdateCheckedMenuItems() CheckMenuItem(fceumenu, polo2[x], *polo[x] ? MF_CHECKED : MF_UNCHECKED); } //File Menu - CheckMenuItem(fceumenu, ID_FILE_RECORDMODE_TRUNCATE, movieRecordMode == MOVIE_RECORD_MODE_TRUNCATE ? MF_CHECKED : MF_UNCHECKED); - CheckMenuItem(fceumenu, ID_FILE_RECORDMODE_OVERWRITE, movieRecordMode == MOVIE_RECORD_MODE_OVERWRITE ? MF_CHECKED : MF_UNCHECKED); - CheckMenuItem(fceumenu, ID_FILE_RECORDMODE_INSERT, movieRecordMode == MOVIE_RECORD_MODE_INSERT ? MF_CHECKED : MF_UNCHECKED); + if (movieRecordMode == MOVIE_RECORD_MODE_TRUNCATE) CheckMenuRadioItem(fceumenu, ID_FILE_RECORDMODE_TRUNCATE, ID_FILE_RECORDMODE_INSERT, ID_FILE_RECORDMODE_TRUNCATE, MF_BYCOMMAND); + if (movieRecordMode == MOVIE_RECORD_MODE_OVERWRITE) CheckMenuRadioItem(fceumenu, ID_FILE_RECORDMODE_TRUNCATE, ID_FILE_RECORDMODE_INSERT, ID_FILE_RECORDMODE_OVERWRITE, MF_BYCOMMAND); + if (movieRecordMode == MOVIE_RECORD_MODE_INSERT) CheckMenuRadioItem(fceumenu, ID_FILE_RECORDMODE_TRUNCATE, ID_FILE_RECORDMODE_INSERT, ID_FILE_RECORDMODE_INSERT, MF_BYCOMMAND); CheckMenuItem(fceumenu, ID_FILE_MOVIE_TOGGLEREAD, movie_readonly ? MF_CHECKED : MF_UNCHECKED); CheckMenuItem(fceumenu, ID_FILE_OPENLUAWINDOW, LuaConsoleHWnd ? MF_CHECKED : MF_UNCHECKED); CheckMenuItem(fceumenu, ID_AVI_ENABLEHUDRECORDING, FCEUI_AviEnableHUDrecording() ? MF_CHECKED : MF_UNCHECKED); @@ -514,9 +516,9 @@ void UpdateContextMenuItems(HMENU context, int whichContext) EnableMenuItem(context, FCEUX_CONTEXT_DELETE_1_FRAME, MF_BYCOMMAND | MF_GRAYED); EnableMenuItem(context, FCEUX_CONTEXT_TRUNCATE_MOVIE, MF_BYCOMMAND | MF_GRAYED); } - CheckMenuItem(context, FCEUX_CONTEXT_RECORDMODE_TRUNCATE, movieRecordMode == MOVIE_RECORD_MODE_TRUNCATE ? MF_CHECKED : MF_UNCHECKED); - CheckMenuItem(context, FCEUX_CONTEXT_RECORDMODE_OVERWRITE, movieRecordMode == MOVIE_RECORD_MODE_OVERWRITE ? MF_CHECKED : MF_UNCHECKED); - CheckMenuItem(context, FCEUX_CONTEXT_RECORDMODE_INSERT, movieRecordMode == MOVIE_RECORD_MODE_INSERT ? MF_CHECKED : MF_UNCHECKED); + if (movieRecordMode == MOVIE_RECORD_MODE_TRUNCATE) CheckMenuRadioItem(context, FCEUX_CONTEXT_RECORDMODE_TRUNCATE, FCEUX_CONTEXT_RECORDMODE_INSERT, FCEUX_CONTEXT_RECORDMODE_TRUNCATE, MF_BYCOMMAND); + if (movieRecordMode == MOVIE_RECORD_MODE_OVERWRITE) CheckMenuRadioItem(context, FCEUX_CONTEXT_RECORDMODE_TRUNCATE, FCEUX_CONTEXT_RECORDMODE_INSERT, FCEUX_CONTEXT_RECORDMODE_OVERWRITE, MF_BYCOMMAND); + if (movieRecordMode == MOVIE_RECORD_MODE_INSERT) CheckMenuRadioItem(context, FCEUX_CONTEXT_RECORDMODE_TRUNCATE, FCEUX_CONTEXT_RECORDMODE_INSERT, FCEUX_CONTEXT_RECORDMODE_INSERT, MF_BYCOMMAND); //Undo Loadstate if (CheckBackupSaveStateExist() && (undoLS || redoLS)) @@ -568,12 +570,12 @@ void UpdateContextMenuItems(HMENU context, int whichContext) if (tog) { InsertMenu(context, 0xFFFF, MF_SEPARATOR, 0, ""); - InsertMenu(context,0xFFFF, MF_BYCOMMAND, FCEUX_CONTEXT_UNHIDEMENU, "Unhide Menu"); + InsertMenu(context,0xFFFF, MF_BYCOMMAND, FCEUX_CONTEXT_UNHIDEMENU, HOTKEYMENUINDEX::getQualifiedMenuText("Unhide Menu", EMUCMD_HIDE_MENU_TOGGLE).c_str()); } if (whichContext > 1 && currMovieData.subtitles.size() != 0){ // At position 3 is "View comments and subtitles". Insert this there: - InsertMenu(context,0x3, MF_BYPOSITION, FCEUX_CONTEXT_TOGGLESUBTITLES, movieSubtitles ? "Subtitle Display: On" : "Subtitle Display: Off"); + InsertMenu(context,0x3, MF_BYPOSITION, FCEUX_CONTEXT_TOGGLESUBTITLES, HOTKEYMENUINDEX::getQualifiedMenuText(movieSubtitles ? "Subtitle Display: On" : "Subtitle Display: Off", EMUCMD_MISC_DISPLAY_MOVIESUBTITLES).c_str()); // At position 4(+1) is after View comments and subtitles. Insert this there: InsertMenu(context,0x5, MF_BYPOSITION, FCEUX_CONTEXT_DUMPSUBTITLES, "Dump Subtitles to SRT file"); } @@ -1067,7 +1069,9 @@ bool ALoad(const char *nameo, char* innerFilename, bool silent) { int oldPaused = EmulationPaused; - if (GameInfo) FCEUI_CloseGame(); + // loading is not started yet, so the game can continue; + // FCEUI_LoadGameVirtual() already had an FCEUI_CloseGame() call after loading success; + // if (GameInfo) FCEUI_CloseGame(); if (FCEUI_LoadGameVirtual(nameo, !(pal_setting_specified || dendy_setting_specified), silent)) { @@ -1418,7 +1422,9 @@ LRESULT FAR PASCAL AppWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) whichContext = 0; // NoGame hfceuxcontext = LoadMenu(fceu_hInstance,"FCEUCONTEXTMENUS"); + hmenuList[FCEUMENU_HWND::FCEUMENU_CONTEXT] = hfceuxcontext; hfceuxcontextsub = GetSubMenu(hfceuxcontext, whichContext); + hmenuList[whichContext] = hfceuxcontextsub; UpdateContextMenuItems(hfceuxcontextsub, whichContext); pt.x = LOWORD(lParam); //Get mouse x in terms of client area pt.y = HIWORD(lParam); //Get mouse y in terms of client area @@ -1542,12 +1548,25 @@ LRESULT FAR PASCAL AppWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) { UINT len; - len=DragQueryFileW((HDROP)wParam,0,0,0)+1; - wchar_t* wftmp = new wchar_t[len]; + /* + Using DragQueryFileW() and wcstombs() is not a proper way to convert Unicode string + to a multibyte one, the system has its own codepage but wcstombs seems ignores it and only + convert it to UTF-8. Similarly, functions such named FCEUD_UTF8fopen() acturally perform ANSI + behaviour which follows the codepage of the system rather than UTF-8. I knew Windows with some + languages has a very narrow codepage like 1252 and may have a problem to load a filename + which contains extra characters without its convert, but the wcstombs() may corrupt the string + to garbage text to the title and menu in some multibyte language Windows systems, it's due to + the limitation of ANSI application and system itself, not the fault of the emulator, so there's + no responsibility for the emulator to use a different API to solve it, just leave it as the + default definition. + */ + len = DragQueryFile((HDROP)wParam, 0, 0, 0) + 1; + char* ftmp = new char[len]; { - DragQueryFileW((HDROP)wParam,0,wftmp,len); - std::string fileDropped = wcstombs(wftmp); - delete[] wftmp; + DragQueryFile((HDROP)wParam,0,ftmp,len); + // std::string fileDropped = wcstombs(wftmp); + std::string fileDropped = ftmp; + delete[] ftmp; //adelikat: Drag and Drop only checks file extension, the internal functions are responsible for file error checking //------------------------------------------------------- @@ -2090,6 +2109,9 @@ LRESULT FAR PASCAL AppWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) break; case ID_NEWPPU: + if(overclock_enabled && + MessageBox(hWnd, "The new PPU doesn't support overclocking, it will be disabled. Do you want to continue?", "Overclocking", MB_ICONQUESTION | MB_YESNO) == IDNO) + break; case ID_OLDPPU: FCEU_TogglePPU(); break; @@ -2667,6 +2689,7 @@ int CreateMainWindow() AdjustWindowRectEx(&tmp, WS_OVERLAPPEDWINDOW, 1, 0); fceumenu = LoadMenu(fceu_hInstance,"FCEUMENU"); + hmenuList[FCEUMENU_MAIN] = fceumenu; recentmenu = CreateMenu(); recentluamenu = CreateMenu(); @@ -2873,300 +2896,274 @@ void ChangeMenuItemText(int menuitem, string text) SetMenuItemInfo(fceumenu, menuitem, FALSE, &moo); } +string HOTKEYMENUINDEX::getQualifiedMenuText() { + int length = GetMenuString(hmenuList[hmenu_index], menu_id, 0, 0, flags) + 1; + char* buffer = new char[length]; + GetMenuString(hmenuList[hmenu_index], menu_id, buffer, length, flags); + if (char* pTab = strrchr(buffer, '\t')) + *pTab = '\0'; + std::string menustr = HOTKEYMENUINDEX::getQualifiedMenuText(buffer, cmd_id); + delete[] buffer; + return menustr; +} + +string HOTKEYMENUINDEX::getQualifiedMenuText(char* text, int emu_cmd_id) { + char* combo = GetKeyComboName(FCEUD_CommandMapping[emu_cmd_id]); + char* str = new char[strlen(text) + strlen(combo) + strlen("\t") + 1]; + strcpy(str, text); + if (strcmp("", combo)) + { + strcat(str, "\t"); + strcat(str, combo); + } + string menustr = str; + delete[] str; + return menustr; +} + +struct HOTKEYMENUINDEX HOTKEYMENUINDEXs[] = { + // "&Open..." + { MENU_OPEN_FILE,EMUCMD_OPENROM }, + // "Open ROM" + { FCEU_CONTEXT_OPENROM,EMUCMD_OPENROM,FCEUMENU_CONTEXT_OFF }, + // "&Close" + { MENU_CLOSE_FILE,EMUCMD_CLOSEROM }, + // "Close ROM" + { FCEU_CONTEXT_CLOSEROM,EMUCMD_CLOSEROM,FCEUMENU_CONTEXT_GAME }, + // "&Load State" + { MENU_LOADSTATE,EMUCMD_LOAD_STATE,FCEUMENU_CONTEXT_GAME }, + // "&Save State" + { MENU_SAVESTATE,EMUCMD_SAVE_STATE }, + // "Load State &From..." + { MENU_LOAD_STATE,EMUCMD_LOAD_STATE_FROM }, + // "Save State &As..." + { MENU_SAVE_STATE,EMUCMD_SAVE_STATE_AS }, + // "&Next save slot" + { MENU_NEXTSAVESTATE,EMUCMD_SAVE_SLOT_NEXT }, + // "&Previous save slot" + { MENU_PREVIOUSSAVESTATE,EMUCMD_SAVE_SLOT_PREV }, + // "&View save slots" + { MENU_VIEWSAVESLOTS,EMUCMD_MISC_SHOWSTATES }, + // "Record Movie..." + { FCEUX_CONTEXT_RECORDMOVIE,EMUCMD_MOVIE_RECORD_TO,FCEUMENU_CONTEXT_GAME }, + // "&Record Movie..." + { MENU_RECORD_MOVIE,EMUCMD_MOVIE_RECORD_TO }, + // "Play Movie..." + { FCEUX_CONTEXT_REPLAYMOVIE,EMUCMD_MOVIE_REPLAY_FROM,FCEUMENU_CONTEXT_GAME }, + // "&Play Movie..." + { MENU_REPLAY_MOVIE,EMUCMD_MOVIE_REPLAY_FROM }, + // "&Stop Movie" + { MENU_STOP_MOVIE,EMUCMD_MOVIE_STOP }, + // "Stop Movie Replay" + { FCEU_CONTEXT_STOPMOVIE,EMUCMD_MOVIE_STOP,FCEUMENU_CONTEXT_PLAYING_READONLY }, + // "Stop Movie Replay" + { FCEU_CONTEXT_STOPMOVIE,EMUCMD_MOVIE_STOP,FCEUMENU_CONTEXT_PLAYING_READWRITE }, + // "Stop Movie Recording" + { FCEU_CONTEXT_STOPMOVIE,EMUCMD_MOVIE_STOP,FCEUMENU_CONTEXT_RECORDING_READONLY }, + // "Stop Movie Recording" + { FCEU_CONTEXT_STOPMOVIE,EMUCMD_MOVIE_STOP,FCEUMENU_CONTEXT_RECORDING_READWRITE }, + // "Play Movie from Beginning" + { FCEU_CONTEXT_PLAYMOVIEFROMBEGINNING,EMUCMD_MOVIE_PLAY_FROM_BEGINNING,FCEUMENU_CONTEXT_PLAYING_READONLY }, + // "Play Movie from Beginning" + { FCEU_CONTEXT_PLAYMOVIEFROMBEGINNING,EMUCMD_MOVIE_PLAY_FROM_BEGINNING,FCEUMENU_CONTEXT_PLAYING_READWRITE }, + // "Play Movie from Beginning" + { FCEU_CONTEXT_PLAYMOVIEFROMBEGINNING,EMUCMD_MOVIE_PLAY_FROM_BEGINNING,FCEUMENU_CONTEXT_RECORDING_READONLY }, + // "Play Movie from Beginning" + { FCEU_CONTEXT_PLAYMOVIEFROMBEGINNING,EMUCMD_MOVIE_PLAY_FROM_BEGINNING,FCEUMENU_CONTEXT_RECORDING_READWRITE }, + // "Play from &Beginning" + { ID_FILE_PLAYMOVIEFROMBEGINNING,EMUCMD_MOVIE_PLAY_FROM_BEGINNING }, + // "&Read-only" + { ID_FILE_MOVIE_TOGGLEREAD,EMUCMD_MOVIE_READONLY_TOGGLE }, + // "Toggle to read+write" + { FCEUX_CONTEXT_READONLYTOGGLE,EMUCMD_MOVIE_READONLY_TOGGLE,FCEUMENU_CONTEXT_PLAYING_READONLY }, + // "Toggle to Read-only" + { FCEUX_CONTEXT_READONLYTOGGLE,EMUCMD_MOVIE_READONLY_TOGGLE,FCEUMENU_CONTEXT_PLAYING_READWRITE }, + // "Toggle to read+write" + { FCEUX_CONTEXT_READONLYTOGGLE,EMUCMD_MOVIE_READONLY_TOGGLE,FCEUMENU_CONTEXT_RECORDING_READONLY }, + // "Toggle to Read-only" + { FCEUX_CONTEXT_READONLYTOGGLE,EMUCMD_MOVIE_READONLY_TOGGLE,FCEUMENU_CONTEXT_RECORDING_READWRITE }, + // "&Screenshot" + { ID_FILE_SCREENSHOT,EMUCMD_SCREENSHOT }, + // "Screenshot" + { FCEUX_CONTEXT_SCREENSHOT,EMUCMD_SCREENSHOT, FCEUMENU_CONTEXT_GAME }, + // "&Record AVI..." + { MENU_RECORD_AVI,EMUCMD_AVI_RECORD_AS }, + //"&Stop AVI" + { MENU_STOP_AVI,EMUCMD_AVI_STOP }, + // "&Reset" + { MENU_RESET,EMUCMD_RESET }, + // "&Power" + { MENU_POWER,EMUCMD_POWER }, + // "&Eject/Insert Disk" + { MENU_EJECT_DISK,EMUCMD_FDS_EJECT_INSERT }, + // "&Switch Disk Side" + { MENU_SWITCH_DISK,EMUCMD_FDS_SIDE_SELECT }, + // "&Insert Coin" + { MENU_INSERT_COIN,EMUCMD_VSUNI_COIN }, + // "Speed &Up" + { ID_NES_SPEEDUP,EMUCMD_SPEED_FASTER }, + // "Slow &Down" + { ID_NES_SLOWDOWN,EMUCMD_SPEED_SLOWER }, + // "&Slowest Speed" + { ID_NES_SLOWESTSPEED,EMUCMD_SPEED_SLOWEST }, + // "&Normal Speed" + { ID_NES_NORMALSPEED,EMUCMD_SPEED_NORMAL }, + // "&Turbo" + { ID_NES_TURBO,EMUCMD_SPEED_TURBO_TOGGLE }, + // "&Pause" + { ID_NES_PAUSE,EMUCMD_PAUSE }, + // "&Hide Menu" + { MENU_HIDE_MENU,EMUCMD_HIDE_MENU_TOGGLE }, + // "Unhide Menu" + { FCEUX_CONTEXT_UNHIDEMENU,EMUCMD_HIDE_MENU_TOGGLE,FCEUMENU_CONTEXT_GAME }, + // "Unhide Menu" + { FCEUX_CONTEXT_UNHIDEMENU,EMUCMD_HIDE_MENU_TOGGLE,FCEUMENU_CONTEXT_PLAYING_READONLY }, + // "Unhide Menu" + { FCEUX_CONTEXT_UNHIDEMENU,EMUCMD_HIDE_MENU_TOGGLE,FCEUMENU_CONTEXT_PLAYING_READWRITE }, + // "Unhide Menu" + { FCEUX_CONTEXT_UNHIDEMENU,EMUCMD_HIDE_MENU_TOGGLE,FCEUMENU_CONTEXT_RECORDING_READONLY }, + // "Unhide Menu" + { FCEUX_CONTEXT_UNHIDEMENU,EMUCMD_HIDE_MENU_TOGGLE,FCEUMENU_CONTEXT_RECORDING_READWRITE }, + // "&Frame Adv. - Skip Lag" + { MENU_DISPLAY_FA_LAGSKIP,EMUCMD_FRAMEADV_SKIPLAG }, + // "&Lag Counter" + { MENU_DISPLAY_LAGCOUNTER,EMUCMD_MISC_DISPLAY_LAGCOUNTER_TOGGLE }, + // "&Frame Counter" + { ID_DISPLAY_FRAMECOUNTER,EMUCMD_MOVIE_FRAME_DISPLAY_TOGGLE }, + // "&Rerecord Counter + { ID_DISPLAY_RERECORDCOUNTER,EMUCMD_RERECORD_DISPLAY_TOGGLE }, + // "&Movie status icon" + { ID_DISPLAY_MOVIESTATUSICON,EMUCMD_MOVIE_ICON_DISPLAY_TOGGLE }, + // "FPS" + { ID_DISPLAY_FPS,EMUCMD_FPS_DISPLAY_TOGGLE }, + // "Graphics: &BG" + { MENU_DISPLAY_BG,EMUCMD_MISC_DISPLAY_BG_TOGGLE }, + // "Graphics: &OBJ" + { MENU_DISPLAY_OBJ,EMUCMD_MISC_DISPLAY_OBJ_TOGGLE }, + // "&Cheats..." + { MENU_CHEATS,EMUCMD_TOOL_OPENCHEATS }, + // "RAM Search..." + { ID_RAM_SEARCH,EMUCMD_TOOL_OPENRAMSEARCH }, + // "RAM Watch..." + { ID_RAM_WATCH,EMUCMD_TOOL_OPENRAMWATCH }, + // "&Memory Watch..." + { MENU_MEMORY_WATCH,EMUCMD_TOOL_OPENMEMORYWATCH }, + // "&TAS Editor..." + { MENU_TASEDITOR,EMUCMD_MISC_OPENTASEDITOR }, + // "&Debugger..." + { MENU_DEBUGGER,EMUCMD_TOOL_OPENDEBUGGER }, + // "&PPU Viewer..." + { MENU_PPUVIEWER,EMUCMD_TOOL_OPENPPU }, + // "&Name Table Viewer..." + { MENU_NAMETABLEVIEWER,EMUCMD_TOOL_OPENNTVIEW }, + // "&Hex Editor..." + { MENU_HEXEDITOR,EMUCMD_TOOL_OPENHEX }, + // "&Trace Logger..." + { MENU_TRACELOGGER,EMUCMD_TOOL_OPENTRACELOGGER }, + // "&Code/Data Logger..." + { MENU_CDLOGGER,EMUCMD_TOOL_OPENCDLOGGER }, + // "Undo savestate" + { FCEUX_CONTEXT_UNDOSAVESTATE,EMUCMD_MISC_UNDOREDOSAVESTATE,FCEUMENU_CONTEXT_GAME }, + // "Undo savestate" + { FCEUX_CONTEXT_UNDOSAVESTATE,EMUCMD_MISC_UNDOREDOSAVESTATE,FCEUMENU_CONTEXT_PLAYING_READONLY }, + // "Undo savestate" + { FCEUX_CONTEXT_UNDOSAVESTATE,EMUCMD_MISC_UNDOREDOSAVESTATE,FCEUMENU_CONTEXT_PLAYING_READWRITE }, + // "Undo savestate" + { FCEUX_CONTEXT_UNDOSAVESTATE,EMUCMD_MISC_UNDOREDOSAVESTATE,FCEUMENU_CONTEXT_RECORDING_READONLY }, + // "Undo savestate" + { FCEUX_CONTEXT_UNDOSAVESTATE,EMUCMD_MISC_UNDOREDOSAVESTATE,FCEUMENU_CONTEXT_RECORDING_READWRITE }, + // "Rewind to last auto-save" + { FCEUX_CONTEXT_REWINDTOLASTAUTO,EMUCMD_MISC_AUTOSAVE,FCEUMENU_CONTEXT_GAME }, + // "Rewind to last auto-save" + { FCEUX_CONTEXT_REWINDTOLASTAUTO,EMUCMD_MISC_AUTOSAVE,FCEUMENU_CONTEXT_PLAYING_READONLY }, + // "Rewind to last auto-save" + { FCEUX_CONTEXT_REWINDTOLASTAUTO,EMUCMD_MISC_AUTOSAVE,FCEUMENU_CONTEXT_PLAYING_READWRITE }, + // "Rewind to last auto-save" + { FCEUX_CONTEXT_REWINDTOLASTAUTO,EMUCMD_MISC_AUTOSAVE,FCEUMENU_CONTEXT_RECORDING_READONLY }, + // "Rewind to last auto-save" + { FCEUX_CONTEXT_REWINDTOLASTAUTO,EMUCMD_MISC_AUTOSAVE,FCEUMENU_CONTEXT_RECORDING_READWRITE }, + // "Toggle to Recording" + { FCEUX_CONTEXT_TOGGLE_RECORDING,EMUCMD_MOVIE_TOGGLE_RECORDING,FCEUMENU_CONTEXT_PLAYING_READONLY }, + // "Toggle to Recording" + { FCEUX_CONTEXT_TOGGLE_RECORDING,EMUCMD_MOVIE_TOGGLE_RECORDING,FCEUMENU_CONTEXT_PLAYING_READWRITE }, + // "Toggle to Playing" + { FCEUX_CONTEXT_TOGGLE_RECORDING,EMUCMD_MOVIE_TOGGLE_RECORDING,FCEUMENU_CONTEXT_RECORDING_READONLY }, + // "Toggle to Playing" + { FCEUX_CONTEXT_TOGGLE_RECORDING,EMUCMD_MOVIE_TOGGLE_RECORDING,FCEUMENU_CONTEXT_RECORDING_READWRITE }, + // "&Toggle Recording/Playing" + { ID_FILE_TOGGLE_RECORDING_MOVIE,EMUCMD_MOVIE_TOGGLE_RECORDING }, + // "&Truncate at Current Frame" + { ID_FILE_TRUNCATE_MOVIE,EMUCMD_MOVIE_TRUNCATE }, + // "Truncate at Current Frame" + { FCEUX_CONTEXT_TRUNCATE_MOVIE,EMUCMD_MOVIE_TRUNCATE,FCEUMENU_CONTEXT_PLAYING_READONLY }, + // "Truncate at Current Frame" + { FCEUX_CONTEXT_TRUNCATE_MOVIE,EMUCMD_MOVIE_TRUNCATE,FCEUMENU_CONTEXT_PLAYING_READWRITE }, + // "Truncate at Current Frame" + { FCEUX_CONTEXT_TRUNCATE_MOVIE,EMUCMD_MOVIE_TRUNCATE,FCEUMENU_CONTEXT_RECORDING_READONLY }, + // "Truncate at Current Frame" + { FCEUX_CONTEXT_TRUNCATE_MOVIE,EMUCMD_MOVIE_TRUNCATE,FCEUMENU_CONTEXT_RECORDING_READWRITE }, + // "&Insert 1 Frame" + { ID_FILE_INSERT_1_FRAME,EMUCMD_MOVIE_INSERT_1_FRAME }, + // "Insert 1 Frame" + { FCEUX_CONTEXT_INSERT_1_FRAME,EMUCMD_MOVIE_INSERT_1_FRAME,FCEUMENU_CONTEXT_PLAYING_READONLY }, + // "Insert 1 Frame" + { FCEUX_CONTEXT_INSERT_1_FRAME,EMUCMD_MOVIE_INSERT_1_FRAME,FCEUMENU_CONTEXT_PLAYING_READWRITE }, + // "Insert 1 Frame" + { FCEUX_CONTEXT_INSERT_1_FRAME,EMUCMD_MOVIE_INSERT_1_FRAME,FCEUMENU_CONTEXT_RECORDING_READONLY }, + // "Insert 1 Frame" + { FCEUX_CONTEXT_INSERT_1_FRAME,EMUCMD_MOVIE_INSERT_1_FRAME,FCEUMENU_CONTEXT_RECORDING_READWRITE }, + // "&Delete 1 Frame" + { ID_FILE_DELETE_1_FRAME,EMUCMD_MOVIE_DELETE_1_FRAME }, + // "Delete 1 Frame" + { FCEUX_CONTEXT_DELETE_1_FRAME,EMUCMD_MOVIE_DELETE_1_FRAME,FCEUMENU_CONTEXT_PLAYING_READONLY }, + // "Delete 1 Frame" + { FCEUX_CONTEXT_DELETE_1_FRAME,EMUCMD_MOVIE_DELETE_1_FRAME,FCEUMENU_CONTEXT_PLAYING_READWRITE }, + // "Delete 1 Frame" + { FCEUX_CONTEXT_DELETE_1_FRAME,EMUCMD_MOVIE_DELETE_1_FRAME,FCEUMENU_CONTEXT_RECORDING_READONLY }, + // "Delete 1 Frame" + { FCEUX_CONTEXT_DELETE_1_FRAME,EMUCMD_MOVIE_DELETE_1_FRAME,FCEUMENU_CONTEXT_RECORDING_READWRITE }, + // "&Next Record Mode" + { ID_FILE_NEXTRECORDMODE,EMUCMD_MOVIE_NEXT_RECORD_MODE }, + // "&Truncate + { ID_FILE_RECORDMODE_TRUNCATE,EMUCMD_MOVIE_RECORD_MODE_TRUNCATE }, + // "&Truncate" + { FCEUX_CONTEXT_RECORDMODE_TRUNCATE,EMUCMD_MOVIE_RECORD_MODE_TRUNCATE,FCEUMENU_CONTEXT_PLAYING_READONLY }, + // "&Truncate" + { FCEUX_CONTEXT_RECORDMODE_TRUNCATE,EMUCMD_MOVIE_RECORD_MODE_TRUNCATE,FCEUMENU_CONTEXT_PLAYING_READWRITE }, + // "&Truncate" + { FCEUX_CONTEXT_RECORDMODE_TRUNCATE,EMUCMD_MOVIE_RECORD_MODE_TRUNCATE,FCEUMENU_CONTEXT_RECORDING_READONLY }, + // "&Truncate" + { FCEUX_CONTEXT_RECORDMODE_TRUNCATE,EMUCMD_MOVIE_RECORD_MODE_TRUNCATE,FCEUMENU_CONTEXT_RECORDING_READWRITE }, + // "&Overwrite[W]" + { ID_FILE_RECORDMODE_OVERWRITE,EMUCMD_MOVIE_RECORD_MODE_OVERWRITE }, + // "&Overwrite[W]" + { FCEUX_CONTEXT_RECORDMODE_OVERWRITE,EMUCMD_MOVIE_RECORD_MODE_OVERWRITE,FCEUMENU_CONTEXT_PLAYING_READONLY }, + // "&Overwrite[W]" + { FCEUX_CONTEXT_RECORDMODE_OVERWRITE,EMUCMD_MOVIE_RECORD_MODE_OVERWRITE,FCEUMENU_CONTEXT_PLAYING_READWRITE }, + // "&Overwrite[W]" + { FCEUX_CONTEXT_RECORDMODE_OVERWRITE,EMUCMD_MOVIE_RECORD_MODE_OVERWRITE,FCEUMENU_CONTEXT_RECORDING_READONLY }, + // "&Overwrite[W]" + { FCEUX_CONTEXT_RECORDMODE_OVERWRITE,EMUCMD_MOVIE_RECORD_MODE_OVERWRITE,FCEUMENU_CONTEXT_RECORDING_READWRITE }, + // "&Insert[I]" + { ID_FILE_RECORDMODE_INSERT,EMUCMD_MOVIE_RECORD_MODE_INSERT }, + // "&Insert[I]" + { FCEUX_CONTEXT_RECORDMODE_INSERT,EMUCMD_MOVIE_RECORD_MODE_INSERT,FCEUMENU_CONTEXT_PLAYING_READONLY }, + // "&Insert[I]" + { FCEUX_CONTEXT_RECORDMODE_INSERT,EMUCMD_MOVIE_RECORD_MODE_INSERT,FCEUMENU_CONTEXT_PLAYING_READWRITE }, + // "&Insert[I]" + { FCEUX_CONTEXT_RECORDMODE_INSERT,EMUCMD_MOVIE_RECORD_MODE_INSERT,FCEUMENU_CONTEXT_RECORDING_READONLY }, + // "&Insert[I]" + { FCEUX_CONTEXT_RECORDMODE_INSERT,EMUCMD_MOVIE_RECORD_MODE_INSERT,FCEUMENU_CONTEXT_RECORDING_READWRITE } +}; + +int HOTKEYMENUINDEX::updateMenuText() { + return ModifyMenu(hmenuList[hmenu_index], menu_id, GetMenuState(hmenuList[hmenu_index], menu_id, flags) | flags, menu_id, getQualifiedMenuText().c_str()); +} + void UpdateMenuHotkeys() { - //Update all menu items that can be called from a hotkey to include the current hotkey assignment - string combo, combined; - - //-------------------------------FILE--------------------------------------- - //Open ROM - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_OPENROM]); - combined = "&Open ROM...\t" + combo; - ChangeMenuItemText(MENU_OPEN_FILE, combined); - - //Close ROM - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_CLOSEROM]); - combined = "&Close\t" + combo; - ChangeMenuItemText(MENU_CLOSE_FILE, combined); - - //Load State - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_LOAD_STATE]); - combined = "&Load State\t" + combo; - ChangeMenuItemText(MENU_LOADSTATE, combined); - - //Save State - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_SAVE_STATE]); - combined = "&Save State\t" + combo; - ChangeMenuItemText(MENU_SAVESTATE, combined); - - //Loadstate from - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_LOAD_STATE_FROM]); - combined = "Load State &From...\t" + combo; - ChangeMenuItemText(MENU_LOAD_STATE, combined); - - //Savestate as - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_SAVE_STATE_AS]); - combined = "Save State &As...\t" + combo; - ChangeMenuItemText(MENU_SAVE_STATE, combined); - - //Next Save Slot - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_SAVE_SLOT_NEXT]); - combined = "&Next save slot\t" + combo; - ChangeMenuItemText(MENU_NEXTSAVESTATE, combined); - - //Previous Save Slot - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_SAVE_SLOT_PREV]); - combined = "&Previous save slot\t" + combo; - ChangeMenuItemText(MENU_PREVIOUSSAVESTATE, combined); - - //View Save Slots - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MISC_SHOWSTATES]); - combined = "&View save slots\t" + combo; - ChangeMenuItemText(MENU_VIEWSAVESLOTS, combined); - - //Record Movie - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_RECORD_TO]); - combined = "&Record Movie...\t" + combo; - ChangeMenuItemText(MENU_RECORD_MOVIE, combined); - - //Play movie - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_REPLAY_FROM]); - combined = "&Play Movie...\t" + combo; - ChangeMenuItemText(MENU_REPLAY_MOVIE, combined); - - //Stop movie - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_STOP]); - combined = "&Stop Movie\t" + combo; - ChangeMenuItemText(MENU_STOP_MOVIE, combined); - - //Play Movie from Beginning - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_PLAY_FROM_BEGINNING]); - combined = "Play from &Beginning\t" + combo; - ChangeMenuItemText(ID_FILE_PLAYMOVIEFROMBEGINNING, combined); - - //Toggle Movie Recording/Playing - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_TOGGLE_RECORDING]); - combined = "&Toggle Recording/Playing\t" + combo; - ChangeMenuItemText(ID_FILE_TOGGLE_RECORDING_MOVIE, combined); - - //Insert 1 Frame - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_INSERT_1_FRAME]); - combined = "&Insert 1 Frame\t" + combo; - ChangeMenuItemText(ID_FILE_INSERT_1_FRAME, combined); - - //Delete 1 Frame - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_DELETE_1_FRAME]); - combined = "&Delete 1 Frame\t" + combo; - ChangeMenuItemText(ID_FILE_DELETE_1_FRAME, combined); - - //Truncate Movie at Current Frame - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_TRUNCATE]); - combined = "&Truncate at &Current Frame\t" + combo; - ChangeMenuItemText(ID_FILE_TRUNCATE_MOVIE, combined); - - //Read only - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_READONLY_TOGGLE]); - combined = "&Read only\t" + combo; - ChangeMenuItemText(ID_FILE_MOVIE_TOGGLEREAD, combined); - - //Next Record Mode - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_NEXT_RECORD_MODE]); - combined = "&Next Record Mode\t" + combo; - ChangeMenuItemText(ID_FILE_NEXTRECORDMODE, combined); - - //Prev Record Mode - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_PREV_RECORD_MODE]); - combined = "&Prev Record Mode\t" + combo; - ChangeMenuItemText(ID_FILE_PREVRECORDMODE, combined); - - //Record Mode Truncate - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_RECORD_MODE_TRUNCATE]); - combined = "&Truncate\t" + combo; - ChangeMenuItemText(ID_FILE_RECORDMODE_TRUNCATE, combined); - - //Record Mode Overwrite - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_RECORD_MODE_OVERWRITE]); - combined = "&Overwrite[W]\t" + combo; - ChangeMenuItemText(ID_FILE_RECORDMODE_OVERWRITE, combined); - - //Record Mode Insert - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_RECORD_MODE_INSERT]); - combined = "&Insert[I]\t" + combo; - ChangeMenuItemText(ID_FILE_RECORDMODE_INSERT, combined); - - //Screenshot - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_SCREENSHOT]); - combined = "&Screenshot\t" + combo; - ChangeMenuItemText(ID_FILE_SCREENSHOT, combined); - - //Record AVI - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_AVI_RECORD_AS]); - combined = "&Record AVI...\t" + combo; - ChangeMenuItemText(MENU_RECORD_AVI, combined); - - //Stop AVI - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_AVI_STOP]); - combined = "&Stop AVI\t" + combo; - ChangeMenuItemText(MENU_STOP_AVI, combined); - - //-------------------------------NES---------------------------------------- - //Reset - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_RESET]); - combined = "&Reset\t" + combo; - ChangeMenuItemText(MENU_RESET, combined); - - //Power - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_POWER]); - combined = "&Power\t" + combo; - ChangeMenuItemText(MENU_POWER, combined); - - //Eject/Insert Disk - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_FDS_EJECT_INSERT]); - combined = "&Eject/Insert Disk\t" + combo; - ChangeMenuItemText(MENU_EJECT_DISK, combined); - - //Switch Disk Side - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_FDS_SIDE_SELECT]); - combined = "&Switch Disk Side\t" + combo; - ChangeMenuItemText(MENU_SWITCH_DISK, combined); - - //Insert Coin - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_VSUNI_COIN]); - combined = "&Insert Coin\t" + combo; - ChangeMenuItemText(MENU_INSERT_COIN, combined); - - //Speed Up - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_SPEED_FASTER]); - combined = "Speed &Up\t" + combo; - ChangeMenuItemText(ID_NES_SPEEDUP, combined); - - //Slow Down - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_SPEED_SLOWER]); - combined = "Slow &Down\t" + combo; - ChangeMenuItemText(ID_NES_SLOWDOWN, combined); - - //Pause - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_PAUSE]); - combined = "&Pause\t" + combo; - ChangeMenuItemText(ID_NES_PAUSE, combined); - - //Slowest Speed - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_SPEED_SLOWEST]); - combined = "&Slowest Speed\t" + combo; - ChangeMenuItemText(ID_NES_SLOWESTSPEED, combined); - - //Normal Speed - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_SPEED_NORMAL]); - combined = "&Normal Speed\t" + combo; - ChangeMenuItemText(ID_NES_NORMALSPEED, combined); - - //Turbo - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_SPEED_TURBO_TOGGLE]); - combined = "&Turbo\t" + combo; - ChangeMenuItemText(ID_NES_TURBO, combined); - - //-------------------------------Config------------------------------------- - //Hide Menu - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_HIDE_MENU_TOGGLE]); - combined = "&Hide Menu\t" + combo; - ChangeMenuItemText(MENU_HIDE_MENU, combined); - - //Frame Adv. skip lag - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_FRAMEADV_SKIPLAG]); - combined = "&Frame Adv. - Skip Lag\t" + combo; - ChangeMenuItemText(MENU_DISPLAY_FA_LAGSKIP, combined); - - //Lag Counter - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MISC_DISPLAY_LAGCOUNTER_TOGGLE]); - combined = "&Lag Counter\t" + combo; - ChangeMenuItemText(MENU_DISPLAY_LAGCOUNTER, combined); - - //Frame Counter - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_FRAME_DISPLAY_TOGGLE]); - combined = "&Frame Counter\t" + combo; - ChangeMenuItemText(ID_DISPLAY_FRAMECOUNTER, combined); - - //Rerecord Counter - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_RERECORD_DISPLAY_TOGGLE]); - combined = "&Rerecord Counter\t" + combo; - ChangeMenuItemText(ID_DISPLAY_RERECORDCOUNTER, combined); - - //Movie status icon - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_ICON_DISPLAY_TOGGLE]); - combined = "&Movie status icon\t" + combo; - ChangeMenuItemText(ID_DISPLAY_MOVIESTATUSICON, combined); - - //FPS counter - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_FPS_DISPLAY_TOGGLE]); - combined = "FPS\t" + combo; - ChangeMenuItemText(ID_DISPLAY_FPS, combined); - - //Graphics: BG - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MISC_DISPLAY_BG_TOGGLE]); - combined = "Graphics: &BG\t" + combo; - ChangeMenuItemText(MENU_DISPLAY_BG, combined); - - //Graphics: OBJ - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MISC_DISPLAY_OBJ_TOGGLE]); - combined = "Graphics: &OBJ\t" + combo; - ChangeMenuItemText(MENU_DISPLAY_OBJ, combined); - - //-------------------------------Tools-------------------------------------- - //Open Cheats - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_TOOL_OPENCHEATS]); - combined = "&Cheats...\t" + combo; - ChangeMenuItemText(MENU_CHEATS, combined); - - //Open RAM Search - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_TOOL_OPENRAMSEARCH]); - combined = "&RAM Search...\t" + combo; - ChangeMenuItemText(ID_RAM_SEARCH, combined); - - //Open RAM Watch - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_TOOL_OPENRAMWATCH]); - combined = "&RAM Watch...\t" + combo; - ChangeMenuItemText(ID_RAM_WATCH, combined); - - //Open Memory Watch - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_TOOL_OPENMEMORYWATCH]); - combined = "&Memory Watch...\t" + combo; - ChangeMenuItemText(MENU_MEMORY_WATCH, combined); - - //Open TAS Editor - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MISC_OPENTASEDITOR]); - combined = "&TAS Editor...\t" + combo; - ChangeMenuItemText(MENU_TASEDITOR, combined); - - //-------------------------------Debug-------------------------------------- - //Open Debugger - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_TOOL_OPENDEBUGGER]); - combined = "&Debugger...\t" + combo; - ChangeMenuItemText(MENU_DEBUGGER, combined); - - //Open PPU Viewer - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_TOOL_OPENPPU]); - combined = "&PPU Viewer...\t" + combo; - ChangeMenuItemText(MENU_PPUVIEWER, combined); - - //Open Nametable Viewer - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_TOOL_OPENNTVIEW]); - combined = "&Name table Viewer...\t" + combo; - ChangeMenuItemText(MENU_NAMETABLEVIEWER, combined); - - //Open Hex editor - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_TOOL_OPENHEX]); - combined = "&Hex Editor...\t" + combo; - ChangeMenuItemText(MENU_HEXEDITOR, combined); - - //Open Trace Logger - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_TOOL_OPENTRACELOGGER]); - combined = "&Trace Logger...\t" + combo; - ChangeMenuItemText(MENU_TRACELOGGER, combined); - - //Open Code/Data Logger - combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_TOOL_OPENCDLOGGER]); - combined = "&Code/Data Logger...\t" + combo; - ChangeMenuItemText(MENU_CDLOGGER, combined); + for (int i = 0; i < sizeof(HOTKEYMENUINDEXs) / sizeof(HOTKEYMENUINDEX); ++i) + HOTKEYMENUINDEXs[i].updateMenuText(); } //This function is for the context menu item Save Movie As... diff --git a/src/drivers/win/window.h b/src/drivers/win/window.h index 66284072..9525a077 100644 --- a/src/drivers/win/window.h +++ b/src/drivers/win/window.h @@ -54,4 +54,31 @@ inline std::wstring GetDlgItemTextW(HWND hDlg, int nIDDlgItem) { return buf; } +enum FCEUMENU_HWND { + FCEUMENU_CONTEXT_OFF, // NoGame + FCEUMENU_CONTEXT_GAME, // Game+NoMovie + FCEUMENU_CONTEXT_PLAYING_READONLY, //Game+Movie+Playing+ReadOnly + FCEUMENU_CONTEXT_PLAYING_READWRITE, //Game+Movie+Playing+ReadWrite + FCEUMENU_CONTEXT_RECORDING_READONLY, //Game+Movie+Recording+ReadOnly + FCEUMENU_CONTEXT_RECORDING_READWRITE, //Game+Movie+Recording+Readwrite + FCEUMENU_CONTEXT, // parent menu of all context menus, + // not recommended to use it since there's duplicate ids in context menus, + // unless you're quite sure the id is unique in all submenus. + FCEUMENU_MAIN, // main fceux menu + FCEUMENU_LIMIT +}; + +struct HOTKEYMENUINDEX { + int menu_id; // menu ID + int cmd_id; // hotkey ID + int hmenu_index = FCEUMENU_MAIN; // whitch menu it belongs to, refers to FCEUMENU_HWND + int flags = MF_BYCOMMAND; // flags when searching and modifying menu item, usually MF_BYCOMMAND + // returns an std::string contains original menu text followed with shortcut keys. + std::string getQualifiedMenuText(); + // this is used when you only want to create a qualified menu text String + static std::string getQualifiedMenuText(char* text, int cmdid); + int updateMenuText(); + HOTKEYMENUINDEX(int id, int cmd, int menu = FCEUMENU_MAIN, int _flags = MF_BYCOMMAND) : menu_id(id), cmd_id(cmd), hmenu_index(menu), flags(_flags) {} +}; + #endif diff --git a/src/fceu.cpp b/src/fceu.cpp index 659307ea..cb0d147f 100644 --- a/src/fceu.cpp +++ b/src/fceu.cpp @@ -416,10 +416,13 @@ FCEUGI *FCEUI_LoadGameVirtual(const char *name, int OverwriteVidMode, bool silen if (!fp) { - if (!silent) - FCEU_PrintError("Error opening \"%s\"!", name); + extern bool archiveManuallyCanceled; + // Although !fp, if the operation was canceled from archive select dialog box, don't show the error message; + if (!silent && !archiveManuallyCanceled) + FCEU_PrintError("´ò¿ª \"%s\" ´íÎó£¡", name); return 0; - } else if (fp->archiveFilename != "") + } + else if (fp->archiveFilename != "") { strcpy(fullname, fp->archiveFilename.c_str()); strcat(fullname, "|"); From a84ccfe3e916b0a461762d64bfb22a781ea816c1 Mon Sep 17 00:00:00 2001 From: zeromus Date: Tue, 1 Jan 2019 15:46:00 -0500 Subject: [PATCH 7/7] dont support vc10 anymore. should make sure 2015 and 2017 works instead (I just confirmed) --- vc/vc10_fceux.sln | 30 - vc/vc10_fceux.vcxproj | 1483 ------------------------- vc/vc10_fceux.vcxproj.filters | 1945 --------------------------------- 3 files changed, 3458 deletions(-) delete mode 100644 vc/vc10_fceux.sln delete mode 100644 vc/vc10_fceux.vcxproj delete mode 100644 vc/vc10_fceux.vcxproj.filters diff --git a/vc/vc10_fceux.sln b/vc/vc10_fceux.sln deleted file mode 100644 index 9cf6f0f1..00000000 --- a/vc/vc10_fceux.sln +++ /dev/null @@ -1,30 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fceux", "vc10_fceux.vcxproj", "{6893EF44-FEA3-46DF-B236-C4C200F54294}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Debug|x64 = Debug|x64 - PublicRelease|Win32 = PublicRelease|Win32 - PublicRelease|x64 = PublicRelease|x64 - Release|Win32 = Release|Win32 - Release|x64 = Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {6893EF44-FEA3-46DF-B236-C4C200F54294}.Debug|Win32.ActiveCfg = Debug|Win32 - {6893EF44-FEA3-46DF-B236-C4C200F54294}.Debug|Win32.Build.0 = Debug|Win32 - {6893EF44-FEA3-46DF-B236-C4C200F54294}.Debug|x64.ActiveCfg = Debug|Win32 - {6893EF44-FEA3-46DF-B236-C4C200F54294}.PublicRelease|Win32.ActiveCfg = PublicRelease|Win32 - {6893EF44-FEA3-46DF-B236-C4C200F54294}.PublicRelease|Win32.Build.0 = PublicRelease|Win32 - {6893EF44-FEA3-46DF-B236-C4C200F54294}.PublicRelease|x64.ActiveCfg = PublicRelease|x64 - {6893EF44-FEA3-46DF-B236-C4C200F54294}.PublicRelease|x64.Build.0 = PublicRelease|x64 - {6893EF44-FEA3-46DF-B236-C4C200F54294}.Release|Win32.ActiveCfg = Release|Win32 - {6893EF44-FEA3-46DF-B236-C4C200F54294}.Release|Win32.Build.0 = Release|Win32 - {6893EF44-FEA3-46DF-B236-C4C200F54294}.Release|x64.ActiveCfg = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/vc/vc10_fceux.vcxproj b/vc/vc10_fceux.vcxproj deleted file mode 100644 index 5a77f031..00000000 --- a/vc/vc10_fceux.vcxproj +++ /dev/null @@ -1,1483 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - PublicRelease - Win32 - - - PublicRelease - x64 - - - Release - Win32 - - - Release - x64 - - - - fceux - {6893EF44-FEA3-46DF-B236-C4C200F54294} - fceux - Win32Proj - - - - Application - NotSet - true - - - Application - NotSet - true - - - Application - NotSet - - - Application - NotSet - true - - - Application - NotSet - true - - - Application - NotSet - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - vc10_bin_$(Configuration)\ - vc10_obj_$(Configuration)\ - ..\output\ - ..\output\ - vc10_obj_$(Configuration)\ - vc10_obj_$(Configuration)\ - false - false - $(SolutionDir)$(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - true - $(SolutionDir)$(Platform)\$(Configuration)\ - $(SolutionDir)$(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - false - false - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - AllRules.ruleset - - - - - AllRules.ruleset - AllRules.ruleset - - - - - true - - - - "%windir%\Sysnative\cscript" /nologo /E:JScript "defaultconfig\make_scmrev.h.js" - - - Disabled - .;../src/drivers/win/zlib;../src/drivers/win/directx;../src;../src/drivers/win/lua/include;userconfig;defaultconfig;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;MSVC;_CRT_SECURE_NO_DEPRECATE;_WIN32_WINDOWS=0x0410;WINVER=0x0410;NETWORK;LSB_FIRST;_USE_32BIT_TIME_T;FCEUDEF_DEBUGGER;_USE_SHARED_MEMORY_;NOMINMAX;HAS_vsnprintf;_S9XLUA_H;%(PreprocessorDefinitions) - false - EnableFastChecks - MultiThreadedDebug - false - false - - - Level3 - EditAndContinue - Default - true - - - Rpcrt4.lib;comctl32.lib;vfw32.lib;winmm.lib;ws2_32.lib;htmlhelp.lib;../src/drivers/win/directx/dsound.lib;../src/drivers/win/directx/dxguid.lib;../src/drivers/win/directx/ddraw.lib;../src/drivers/win/directx/dinput.lib;../src/drivers/win/lua/win32/lua51.lib;LuaPerks.lib;psapi.lib;mpr.lib;%(AdditionalDependencies) - true - Console - mainCRTStartup - false - - - true - MachineX86 - lua51.dll - - - $(ProjectDir)../src/drivers/win/fceu_x86.manifest;%(AdditionalManifestFiles) - true - - - xcopy /y /d "$(ProjectDir)\..\src\drivers\win\7z.dll" "$(OutDir)" - - - - - - "%windir%\Sysnative\cscript" /nologo /E:JScript "defaultconfig\make_scmrev.h.js" - write current revision number to placeholders - - - Full - AnySuitable - true - Speed - true - .;../src/drivers/win/zlib;../src/drivers/win/directx;../src;../src/drivers/win/lua/include;userconfig;defaultconfig;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;MSVC;_CRT_SECURE_NO_DEPRECATE;_WIN32_WINDOWS=0x0410;WINVER=0x0410;NETWORK;LSB_FIRST;_USE_32BIT_TIME_T;FCEUDEF_DEBUGGER;_USE_SHARED_MEMORY_;NOMINMAX;HAS_vsnprintf;_S9XLUA_H;%(PreprocessorDefinitions) - MultiThreaded - - - Level3 - ProgramDatabase - Default - /MP %(AdditionalOptions) - true - - - Rpcrt4.lib;comctl32.lib;vfw32.lib;winmm.lib;ws2_32.lib;htmlhelp.lib;../src/drivers/win/directx/dsound.lib;../src/drivers/win/directx/dxguid.lib;../src/drivers/win/directx/ddraw.lib;../src/drivers/win/directx/dinput.lib;../src/drivers/win/lua/win32/lua51.lib;luaperks.lib;psapi.lib;mpr.lib;%(AdditionalDependencies) - lua51.dll;%(DelayLoadDLLs) - true - Windows - true - true - mainCRTStartup - false - - - MachineX86 - - - $(ProjectDir)../src/drivers/win/fceu_x86.manifest;%(AdditionalManifestFiles) - - - xcopy /y /d "$(ProjectDir)\..\src\drivers\win\7z.dll" "$(OutDir)" - - - - - - "%windir%\Sysnative\cscript" /nologo /E:JScript "defaultconfig\make_scmrev.h.js" - write current revision number to placeholders - - - Full - AnySuitable - true - Speed - true - .;../src/drivers/win/zlib;../src/drivers/win/directx;../src;../src/drivers/win/lua/include;userconfig;defaultconfig;%(AdditionalIncludeDirectories) - PUBLIC_RELEASE;WIN32;NDEBUG;MSVC;_CRT_SECURE_NO_DEPRECATE;_WIN32_WINDOWS=0x0410;WINVER=0x0410;NETWORK;LSB_FIRST;_USE_32BIT_TIME_T;FCEUDEF_DEBUGGER;_USE_SHARED_MEMORY_;NOMINMAX;HAS_vsnprintf;_S9XLUA_H;%(PreprocessorDefinitions) - MultiThreaded - - - Level3 - ProgramDatabase - Default - /MP %(AdditionalOptions) - true - - - Rpcrt4.lib;comctl32.lib;vfw32.lib;winmm.lib;ws2_32.lib;htmlhelp.lib;../src/drivers/win/directx/dsound.lib;../src/drivers/win/directx/dxguid.lib;../src/drivers/win/directx/ddraw.lib;../src/drivers/win/directx/dinput.lib;../src/drivers/win/lua/win32/lua51.lib;luaperks.lib;psapi.lib;mpr.lib;%(AdditionalDependencies) - lua51.dll;%(DelayLoadDLLs) - true - Windows - true - true - mainCRTStartup - false - - - MachineX86 - /pdbaltpath:%_PDB% %(AdditionalOptions) - - - $(ProjectDir)../src/drivers/win/fceu_x86.manifest;%(AdditionalManifestFiles) - - - xcopy /y /d "$(ProjectDir)\..\src\drivers\win\7z.dll" "$(OutDir)" - - - - - - X64 - - - Disabled - ../zlib;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;MSVC;_CRT_SECURE_NO_DEPRECATE;_WIN32_WINDOWS=0x0410;WINVER=0x0410;NETWORK;LSB_FIRST;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebug - false - false - - - Level3 - ProgramDatabase - CompileAsC - - - dxguid.lib;winmm.lib;dinput.lib;ws2_32.lib;ddraw.lib;dsound.lib;../src/drivers/win/lua/x64/lua51.lib;%(AdditionalDependencies) - true - Windows - mainCRTStartup - MachineX64 - lua51.dll - - - "%windir%\Sysnative\cscript" /nologo /E:JScript "defaultconfig\make_scmrev.h.js" - - - - - X64 - - - Full - AnySuitable - true - Speed - true - ../zlib;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;MSVC;_CRT_SECURE_NO_DEPRECATE;_WIN32_WINDOWS=0x0410;WINVER=0x0410;NETWORK;LSB_FIRST;%(PreprocessorDefinitions) - MultiThreaded - - - Level3 - ProgramDatabase - - - dxguid.lib;winmm.lib;dinput.lib;ws2_32.lib;ddraw.lib;dsound.lib;../src/drivers/win/lua/x64/lua51.lib;%(AdditionalDependencies) - true - Windows - true - true - mainCRTStartup - MachineX64 - lua51.dll - - - "%windir%\Sysnative\cscript" /nologo /E:JScript "defaultconfig\make_scmrev.h.js" - - - - - X64 - - - Full - AnySuitable - true - Speed - true - ../zlib;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;MSVC;_CRT_SECURE_NO_DEPRECATE;_WIN32_WINDOWS=0x0410;WINVER=0x0410;NETWORK;LSB_FIRST;%(PreprocessorDefinitions) - MultiThreaded - - - Level3 - ProgramDatabase - - - dxguid.lib;winmm.lib;dinput.lib;ws2_32.lib;ddraw.lib;dsound.lib;../src/drivers/win/lua/x64/lua51.lib;%(AdditionalDependencies) - true - Windows - true - true - mainCRTStartup - MachineX64 - lua51.dll - - - "%windir%\Sysnative\cscript" /nologo /E:JScript "defaultconfig\make_scmrev.h.js" - - - - - false - false - - - - $(IntDir)ass.obj - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CompileAsC - CompileAsC - CompileAsC - - - CompileAsC - CompileAsC - CompileAsC - - - CompileAsC - CompileAsC - CompileAsC - - - CompileAsC - CompileAsC - CompileAsC - - - CompileAsC - CompileAsC - CompileAsC - - - CompileAsC - CompileAsC - CompileAsC - - - CompileAsC - CompileAsC - CompileAsC - - - CompileAsC - CompileAsC - CompileAsC - - - CompileAsC - CompileAsC - CompileAsC - - - CompileAsC - CompileAsC - CompileAsC - - - CompileAsC - CompileAsC - CompileAsC - - - CompileAsC - CompileAsC - CompileAsC - - - CompileAsC - CompileAsC - CompileAsC - - - CompileAsC - CompileAsC - CompileAsC - - - - - 4789 - 4789 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - true - true - true - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - xcopy /y /d "$(ProjectDir)\..\src\auxlib.lua" "$(OutDir)" - - xcopy /y /d "$(ProjectDir)\..\src\auxlib.lua" "$(OutDir)" - - xcopy /y /d "$(ProjectDir)\..\src\auxlib.lua" "$(OutDir)" - - $(OutDir)auxlib.lua;%(Outputs) - $(OutDir)auxlib.lua;%(Outputs) - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (); - foreach( var item in ItemList ) - { - var filename = item.GetMetadata("Filename"); - - //assign reused filenames to increasing numbers - //assign previously unused filenames to 0 - int assignment = 0; - if(assignmentMap.TryGetValue(filename, out assignment)) - assignmentMap[filename] = ++assignment; - else - assignmentMap[filename] = 0; - - var thisFileOutdir = Path.Combine(OutputDir,assignment.ToString()) + "/"; //take care it ends in / so /Fo knows it's a directory and not a filename - item.SetMetadata( "ObjectFileName", thisFileOutdir ); - } - - OutputItemList = ItemList; - ItemList = new Microsoft.Build.Framework.ITaskItem[0]; - - ]]> - - - - - - - - - - - - - - \ No newline at end of file diff --git a/vc/vc10_fceux.vcxproj.filters b/vc/vc10_fceux.vcxproj.filters deleted file mode 100644 index 2dcc634d..00000000 --- a/vc/vc10_fceux.vcxproj.filters +++ /dev/null @@ -1,1945 +0,0 @@ - - - - - {9df8a9c0-b1c6-4cfc-b494-a032de5610dd} - - - {37c56600-9a81-498c-ae95-ad217bb601e7} - - - {4251322f-2a2d-4b6a-9bce-042361a39b04} - - - {aa276048-3e0e-42b0-8562-278c052715a8} - - - {d4ab474f-f74e-4042-8e0a-161e0c89a940} - - - {46e87a33-60b3-41a1-87b1-5fc0b410c0a1} - - - {bfa3a49b-0c30-4093-8119-7e315c80053d} - - - {008e1f62-e23f-4235-bee7-a45a466678e9} - - - {7279627e-c72f-441f-bb8b-48ef8412f051} - - - {8770e1b4-9ef8-4253-bdcd-7c4d5a51461b} - - - {aec82faa-87f7-44b0-963e-01b07ce40e82} - - - {5f356733-cee3-4440-aa40-cf138dcfbd8c} - - - {2a047eb3-7b56-41d4-b228-5df54bc1809d} - - - {b826cbb1-8f65-48a4-89ca-a1b691426971} - - - {19ba9ddc-37b7-4962-a3d7-9eb69929a8dc} - - - {cfac36a2-cdfd-4c0a-be8e-353b1303a909} - - - - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - - - - - - - drivers\common - - - drivers\common - - - drivers\common - - - drivers\common - - - drivers\common - - - drivers\common - - - drivers\common - - - drivers\common - - - drivers\common - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win\zlib - - - drivers\win\zlib - - - drivers\win\zlib - - - drivers\win\zlib - - - drivers\win\zlib - - - drivers\win\zlib - - - drivers\win\zlib - - - drivers\win\zlib - - - drivers\win\zlib - - - drivers\win\zlib - - - drivers\win\zlib - - - drivers\win\zlib - - - drivers\win\zlib - - - drivers\win\zlib - - - - - - - - - input - - - input - - - input - - - input - - - input - - - input - - - input - - - input - - - input - - - input - - - input - - - input - - - input - - - input - - - input - - - input - - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - boards - - - - - - - - - - - - utils - - - utils - - - utils - - - utils - - - utils - - - utils - - - utils - - - utils - - - utils - - - - - - - - drivers\common - - - boards - - - drivers\win - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - boards - - - drivers\win\taseditor - - - drivers\win\taseditor - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - utils - - - boards - - - input - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - boards - - - - - drivers\common - - - drivers\common - - - drivers\common - - - drivers\common - - - drivers\common - - - drivers\common - - - drivers\common - - - drivers\common - - - drivers\common - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win\lua\include - - - drivers\win\lua\include - - - drivers\win\lua\include - - - drivers\win\lua\include - - - drivers\win\lua\include - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - drivers\win - - - fir - - - fir - - - fir - - - fir - - - fir - - - fir - - - input - - - input - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - drivers\win\lua - - - palettes - - - palettes - - - palettes - - - palettes - - - palettes - - - utils - - - utils - - - utils - - - utils - - - utils - - - utils - - - utils - - - utils - - - utils - - - utils - - - drivers\common - - - drivers\common - - - drivers\common - - - drivers\win - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - drivers\win\taseditor - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - include files - - - utils - - - input - - - - - drivers\win - - - - - drivers\win\res - - - drivers\win\res - - - - pix - - - pix - - - pix - - - pix - - - pix - - - pix - - - pix - - - pix - - - pix - - - pix - - - pix - - - pix - - - pix - - - pix - - - pix - - - pix - - - pix - - - pix - - - pix - - - pix - - - pix - - - pix - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - drivers\win\res - - - - - - - \ No newline at end of file