diff --git a/src/cheat.cpp b/src/cheat.cpp index d8f09421..e6ebbedd 100644 --- a/src/cheat.cpp +++ b/src/cheat.cpp @@ -136,6 +136,14 @@ void FCEU_PowerCheats() RebuildSubCheats(); } +int FCEU_CalcCheatAffectedBytes(uint32 address, uint32 size) { + int count = 0; + for (int i = 0; i < numsubcheats && count < size; ++i) + if (SubCheats[i].addr >= address && SubCheats[i].addr < address + size) + ++count; + return count; +} + static int AddCheatEntry(char *name, uint32 addr, uint8 val, int compare, int status, int type); static void CheatMemErr(void) { diff --git a/src/cheat.h b/src/cheat.h index 10e28492..d7130a37 100644 --- a/src/cheat.h +++ b/src/cheat.h @@ -5,6 +5,8 @@ void FCEU_LoadGameCheats(FILE *override); void FCEU_FlushGameCheats(FILE *override, int nosave); void FCEU_ApplyPeriodicCheats(void); void FCEU_PowerCheats(void); +int FCEU_CalcCheatAffectedBytes(uint32 address, uint32 size); + int FCEU_CheatGetByte(uint32 A); void FCEU_CheatSetByte(uint32 A, uint8 V); @@ -28,4 +30,11 @@ struct CHEATF { int compare; /* -1 for no compare. */ int type; /* 0 for replace, 1 for substitute(GG). */ int status; -}; \ No newline at end of file +}; + + +#define CalcAddressRangeCheatCount(count, address, size) \ + count = 0; \ + for (int i = 0; i < numsubcheats && count < size; ++i) \ + if (SubCheats[i].addr >= address && SubCheats[i].addr < address + size) \ + ++count; diff --git a/src/drivers/win/cheat.cpp b/src/drivers/win/cheat.cpp index ef60cc3f..b9216f73 100644 --- a/src/drivers/win/cheat.cpp +++ b/src/drivers/win/cheat.cpp @@ -471,7 +471,7 @@ BOOL CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l SetDlgItemText(hwndDlg,IDC_CHEAT_COM,(LPTSTR)""); SetDlgItemText(hwndDlg,IDC_CHEAT_NAME,(LPTSTR)""); } - if (hMemView) UpdateColorTable(); //if the memory viewer is open then update any blue freeze locations in it as well + UpdateCheatWindowRelatedWindow(); UpdateCheatsAdded(); break; case ID_CHEATLISTPOPUP_DELETESELECTEDCHEATS: @@ -490,7 +490,7 @@ BOOL CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l SetDlgItemText(hwndDlg,IDC_CHEAT_VAL,(LPTSTR)""); SetDlgItemText(hwndDlg,IDC_CHEAT_COM,(LPTSTR)""); SetDlgItemText(hwndDlg,IDC_CHEAT_NAME,(LPTSTR)""); - if (hMemView) UpdateColorTable(); //if the memory viewer is open then update any blue freeze locations in it as well + UpdateCheatWindowRelatedWindow(); UpdateCheatsAdded(); } } else { @@ -503,7 +503,7 @@ BOOL CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l SetDlgItemText(hwndDlg,IDC_CHEAT_COM,(LPTSTR)""); SetDlgItemText(hwndDlg,IDC_CHEAT_NAME,(LPTSTR)""); } - if (hMemView) UpdateColorTable(); //if the memory viewer is open then update any blue freeze locations in it as well + UpdateCheatWindowRelatedWindow(); UpdateCheatsAdded(); } break; @@ -551,7 +551,7 @@ BOOL CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l SetDlgItemText(hwndDlg,IDC_CHEAT_VAL,(LPTSTR)U8ToStr(v)); if(c == -1) SetDlgItemText(hwndDlg,IDC_CHEAT_COM,(LPTSTR)""); else SetDlgItemText(hwndDlg,IDC_CHEAT_COM,(LPTSTR)U8ToStr(c)); - if(hMemView)UpdateColorTable(); //if the memory viewer is open then update any blue freeze locations in it as well + UpdateCheatWindowRelatedWindow(); break; case IDC_BTN_CHEAT_ADDFROMFILE: { @@ -577,7 +577,7 @@ BOOL CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l if (file) { FCEU_LoadGameCheats(file); - if (hMemView) UpdateColorTable(); //if the memory viewer is open then update any blue freeze locations in it as well + UpdateCheatWindowRelatedWindow(); UpdateCheatsAdded(); savecheats = 1; } @@ -670,7 +670,7 @@ BOOL CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l } } UpdateCheatsAdded(); - UpdateColorTable(); + UpdateCheatWindowRelatedWindow(); SendDlgItemMessage(hwndDlg,IDC_LIST_CHEATS,LB_SETCURSEL,selcheat,0); SendDlgItemMessage(hwndDlg,IDC_LIST_CHEATS,LB_SETSEL,(WPARAM)1,selcheat); break; @@ -1031,27 +1031,43 @@ 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] == '*') + if(FCEU_DisableAllCheats() && hCheat){ + LRESULT sel; char str[259]; + for (int tempSelCheat = SendDlgItemMessage(hCheat, IDC_LIST_CHEATS, LB_GETCOUNT, 0, 0) - 1; tempSelCheat >= 0; --tempSelCheat) { - 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_GETTEXT, tempSelCheat, (LPARAM)(LPCTSTR)str); + if (str[0] == '*') { - SendDlgItemMessage(hCheat,IDC_LIST_CHEATS,LB_SETSEL,1,selcheattemp); + str[0] = ' '; + sel = SendDlgItemMessage(hCheat, IDC_LIST_CHEATS, LB_GETSEL, tempSelCheat, 0); + SendDlgItemMessage(hCheat, IDC_LIST_CHEATS, LB_DELETESTRING, tempSelCheat, 0); + SendDlgItemMessage(hCheat, IDC_LIST_CHEATS, LB_INSERTSTRING, tempSelCheat, (LPARAM)(LPSTR)str); + if (sel) + SendDlgItemMessage(hCheat, IDC_LIST_CHEATS, LB_SETSEL, 1, tempSelCheat); } } - selcheattemp--; - } - sprintf(str, "Active Cheats %d", 0); - SetDlgItemText(hCheat, 201, str); + sprintf(str, "Active Cheats %d", 0); + SetDlgItemText(hCheat, 201, str); + } +} + +void UpdateCheatWindowRelatedWindow() +{ + // hex editor + if (hMemView) + UpdateColorTable(); //if the memory viewer is open then update any blue freeze locations in it as well + extern HWND RamSearchHWnd; + + // ram search + if (RamSearchHWnd) + RedrawWindow(GetDlgItem(RamSearchHWnd, IDC_RAMLIST), NULL, NULL, RDW_INVALIDATE); // if ram search is open then update the ram list. + + // ram watch + extern void UpdateWatchCheats(); + UpdateWatchCheats(); + extern HWND RamWatchHWnd; + if (RamWatchHWnd) + RedrawWindow(GetDlgItem(RamWatchHWnd, IDC_WATCHLIST), NULL, NULL, RDW_INVALIDATE); // update the data in watch list to the newest. + + } \ No newline at end of file diff --git a/src/drivers/win/cheat.h b/src/drivers/win/cheat.h index 8d9f5b2b..bd8a9f26 100644 --- a/src/drivers/win/cheat.h +++ b/src/drivers/win/cheat.h @@ -15,4 +15,6 @@ 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 +void DisableAllCheats(); + +void UpdateCheatWindowRelatedWindow(); diff --git a/src/drivers/win/memview.cpp b/src/drivers/win/memview.cpp index 6f46e452..a6c2cc0a 100644 --- a/src/drivers/win/memview.cpp +++ b/src/drivers/win/memview.cpp @@ -1263,7 +1263,7 @@ 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); + CheckMenuRadioItem(GetMenu(hwnd), MENU_MV_VIEW_RAM, MENU_MV_VIEW_ROM, MENU_MV_VIEW_RAM, MF_BYCOMMAND); break; } CheckMenuItem(GetMenu(hwnd), ID_HIGHLIGHTING_HIGHLIGHT_ACTIVITY, (MemView_HighlightActivity) ? MF_CHECKED: MF_UNCHECKED); diff --git a/src/drivers/win/ram_search.cpp b/src/drivers/win/ram_search.cpp index b7c73a85..b3896160 100644 --- a/src/drivers/win/ram_search.cpp +++ b/src/drivers/win/ram_search.cpp @@ -85,7 +85,7 @@ struct MemoryRegion unsigned int virtualIndex; // index into s_prevValues, s_curValues, and s_numChanges, valid after being initialized in ResetMemoryRegions() unsigned int itemIndex; // index into listbox items, valid when s_itemIndicesInvalid is false - unsigned int cheatAffect; // how many bytes affected by the cheats. 0 indicates for free, max value is the size. + unsigned int cheatCount; // how many bytes affected by the cheats. 0 indicates for free, max value is the size. }; int MAX_RAM_SIZE = 0; @@ -423,10 +423,7 @@ void ItemIndexToVirtualRegion(unsigned int itemIndex, MemoryRegion& virtualRegio virtualRegion.virtualIndex = region->virtualIndex + bytesWithinRegion; virtualRegion.itemIndex = itemIndex; - virtualRegion.cheatAffect = 0; - for (int i = 0; i < numsubcheats; ++i) - if (SubCheats[i].addr >= virtualRegion.hardwareAddress && SubCheats[i].addr < virtualRegion.hardwareAddress + virtualRegion.size) - ++virtualRegion.cheatAffect; + virtualRegion.cheatCount = FCEU_CalcCheatAffectedBytes(virtualRegion.hardwareAddress, virtualRegion.size); } template @@ -494,11 +491,11 @@ unsigned int GetHardwareAddressFromItemIndex(unsigned int itemIndex) return virtualRegion.hardwareAddress; } template -unsigned int GetCheatStatusFromItemIndex(unsigned int itemIndex) +unsigned int GetNumCheatsFromIndex(unsigned int itemIndex) { MemoryRegion virtualRegion; ItemIndexToVirtualRegion(itemIndex, virtualRegion); - return virtualRegion.cheatAffect; + return virtualRegion.cheatCount; } // this one might be unreliable, haven't used it much @@ -995,7 +992,6 @@ bool WriteValueAtHardwareAddress(HWAddressType address, unsigned int value, unsi int ResultCount=0; bool AutoSearch=false; bool AutoSearchAutoRetry=false; -LRESULT CALLBACK PromptWatchNameProc(HWND, UINT, WPARAM, LPARAM); void UpdatePossibilities(int rs_possible, int regions); @@ -1269,20 +1265,30 @@ LRESULT CustomDraw (LPARAM lParam) case CDDS_ITEMPREPAINT: { int rv = CDRF_DODEFAULT; - - if(lplvcd->nmcd.dwItemSpec % 2) - { - // alternate the background color slightly - lplvcd->clrTextBk = RGB(248,248,255); - rv = CDRF_NEWFONT; + int cheat = CALL_WITH_T_SIZE_TYPES_1(GetNumCheatsFromIndex, rs_type_size, rs_t == 's', noMisalign, lplvcd->nmcd.dwItemSpec); + switch (cheat) { + default: + case 0: + if (lplvcd->nmcd.dwItemSpec % 2) + lplvcd->clrTextBk = RGB(248, 248, 255); + break; + case 1: + lplvcd->clrTextBk = RGB(216, 203, 253); break; + case 2: + lplvcd->clrTextBk = RGB(195, 186, 253); break; + case 3: + lplvcd->clrTextBk = RGB(176, 139, 252); break; + case 4: + lplvcd->clrTextBk = RGB(175, 94, 253); + lplvcd->clrText = RGB(255, 255, 255); break; // use a more visual color in dark background } if(!IsSatisfied(lplvcd->nmcd.dwItemSpec)) - { // tint red any items that would be eliminated if a search were to run now - lplvcd->clrText = RGB(192,64,64); - rv = CDRF_NEWFONT; - } + // changed to a more visual color in dark background + lplvcd->clrText = cheat == 4 ? RGB(255,192,0) : RGB(192,64,64); + + rv = CDRF_NEWFONT; return rv; } break; @@ -1518,8 +1524,8 @@ LRESULT CALLBACK RamSearchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPara SendDlgItemMessage(hDlg,IDC_C_SEARCHROM,BM_SETCHECK,ShowROM?BST_CHECKED:BST_UNCHECKED,0); //const char* names[5] = {"Address","Value","Previous","Changes","Notes"}; //int widths[5] = {62,64,64,55,55}; - const char* names[5] = {"Addr.","Value","Previous","Changes","Cheats"}; - int widths[5] = {48,80,80,66,52}; + const char* names[5] = {"Addr.","Value","Previous","Changes"}; + int widths[5] = {68,76,76,68}; if (!ResultCount) reset_address_info(); else @@ -1528,7 +1534,7 @@ LRESULT CALLBACK RamSearchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPara CompactAddrs(); } void init_list_box(HWND Box, const char* Strs[], int numColumns, int *columnWidths); - init_list_box(GetDlgItem(hDlg,IDC_RAMLIST),names,5,widths); + init_list_box(GetDlgItem(hDlg,IDC_RAMLIST),names,4,widths); //ListView_SetItemCount(GetDlgItem(hDlg,IDC_RAMLIST),ResultCount); if (!noMisalign) SendDlgItemMessage(hDlg, IDC_MISALIGN, BM_SETCHECK, BST_CHECKED, 0); //if (littleEndian) SendDlgItemMessage(hDlg, IDC_ENDIAN, BM_SETCHECK, BST_CHECKED, 0); @@ -1627,7 +1633,7 @@ LRESULT CALLBACK RamSearchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPara } return true; case 4: { - int cheat = CALL_WITH_T_SIZE_TYPES_1(GetCheatStatusFromItemIndex, rs_type_size, rs_t=='s', noMisalign, iNum); + int cheat = CALL_WITH_T_SIZE_TYPES_1(GetNumCheatsFromIndex, rs_type_size, rs_t=='s', noMisalign, iNum); sprintf(num, "%d", cheat); Item->item.pszText = num; } @@ -2175,9 +2181,9 @@ void init_list_box(HWND Box, const char* Strs[], int numColumns, int *columnWidt { LVCOLUMN Col; Col.mask = LVCF_FMT | LVCF_ORDER | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH; - Col.fmt = LVCFMT_RIGHT; for (int i = 0; i < numColumns; i++) { + Col.fmt = !strcmp(Strs[i], "Value") || !strcmp(Strs[i], "Previous") || !strcmp(Strs[i], "Changes") ? LVCFMT_RIGHT : LVCFMT_LEFT; Col.iOrder = i; Col.iSubItem = i; Col.pszText = (LPSTR)(Strs[i]); @@ -2238,4 +2244,4 @@ void SetSearchType(int SearchType) { void DoRamSearchOperation() { RamSearchProc(RamSearchHWnd, WM_COMMAND, IDC_C_SEARCH, 0); return; -} \ No newline at end of file +} diff --git a/src/drivers/win/ramwatch.cpp b/src/drivers/win/ramwatch.cpp index 0caa1d0a..aa1ac57e 100644 --- a/src/drivers/win/ramwatch.cpp +++ b/src/drivers/win/ramwatch.cpp @@ -48,7 +48,7 @@ HWND RamWatchHWnd; #define gamefilename GetRomName() #define hWnd hAppWnd #define hInst fceu_hInstance -static char Str_Tmp [1024]; +// static char Str_Tmp [1024]; void init_list_box(HWND Box, const char* Strs[], int numColumns, int *columnWidths); //initializes the ram search and/or ram watch listbox @@ -105,15 +105,22 @@ bool InsertWatch(const AddressWatcher& Watch, char *Comment) AddressWatcher& NewWatch = rswatches[i]; NewWatch = Watch; //if (NewWatch.comment) free(NewWatch.comment); - NewWatch.comment = (char *) malloc(strlen(Comment)+2); - NewWatch.CurValue = GetCurrentValue(NewWatch); + if (NewWatch.comment == NULL) + NewWatch.comment = (char *)malloc(strlen(Comment) + 2); + else + NewWatch.comment = (char *)realloc(NewWatch.comment, strlen(Comment) + 2); strcpy(NewWatch.comment, Comment); + + NewWatch.CurValue = GetCurrentValue(NewWatch); + extern int FCEU_CalcCheatAffectedBytes(uint32, uint32); + NewWatch.Cheats = FCEU_CalcCheatAffectedBytes(NewWatch.Address, WatchSizeConv(NewWatch)); ListView_SetItemCount(GetDlgItem(RamWatchHWnd,IDC_WATCHLIST),WatchCount); RWfileChanged=true; return true; } +/* LRESULT CALLBACK PromptWatchNameProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) //Gets the description of a watched address { RECT r; @@ -168,7 +175,7 @@ LRESULT CALLBACK PromptWatchNameProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM return false; } - +*/ bool InsertWatch(const AddressWatcher& Watch, HWND parent) { if(!VerifyWatchNotAlreadyAdded(Watch)) @@ -183,7 +190,7 @@ bool InsertWatch(const AddressWatcher& Watch, HWND parent) rswatches[WatchCount] = Watch; rswatches[WatchCount].CurValue = GetCurrentValue(rswatches[WatchCount]); - DialogBox(hInst, MAKEINTRESOURCE(IDD_PROMPT), parent, (DLGPROC) PromptWatchNameProc); + DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_EDITWATCH), parent, (DLGPROC) EditWatchProc, (LPARAM)WatchCount); return WatchCount > prevWatchCount; } @@ -242,7 +249,7 @@ bool AskSave() //returns false only if a save was attempted but failed or was cancelled if (RWfileChanged) { - int answer = MessageBox(MESSAGEBOXPARENT, "Save Changes?", "Ram Watch", MB_YESNOCANCEL); + int answer = MessageBox(MESSAGEBOXPARENT, "Save Changes?", "Ram Watch", MB_YESNOCANCEL | MB_ICONQUESTION); if(answer == IDYES) if(!QuickSaveWatches()) return false; @@ -402,6 +409,7 @@ void OpenRWRecentFile(int memwRFileNumber) } } + char Str_Tmp[1024]; strcpy(currentWatch,x); strcpy(Str_Tmp,currentWatch); @@ -409,7 +417,7 @@ void OpenRWRecentFile(int memwRFileNumber) FILE *WatchFile = fopen(Str_Tmp,"rb"); if (!WatchFile) { - int answer = MessageBox(MESSAGEBOXPARENT,"Error opening file.","ERROR",MB_OKCANCEL); + int answer = MessageBox(MESSAGEBOXPARENT,"Error opening file.","ERROR",MB_OKCANCEL | MB_ICONERROR); if (answer == IDOK) { rw_recent_files[rnum][0] = '\0'; //Clear file from list @@ -425,6 +433,7 @@ void OpenRWRecentFile(int memwRFileNumber) Temp.Address = 0; // default values Temp.Size = 'b'; Temp.Type = 'h'; + Temp.comment = NULL; char mode; fgets(Str_Tmp,1024,WatchFile); sscanf(Str_Tmp,"%c%*s",&mode); @@ -536,6 +545,7 @@ int Change_File_S(char *Dest, const char *Dir, const char *Titre, const char *Fi bool Save_Watches() { + char Str_Tmp[1024]; string initdir = FCEU_GetPath(FCEUMKF_MEMW); const char* slash = max(strrchr(gamefilename, '|'), max(strrchr(gamefilename, '\\'), strrchr(gamefilename, '/'))); strcpy(Str_Tmp,slash ? slash+1 : gamefilename); @@ -566,26 +576,25 @@ bool Save_Watches() bool QuickSaveWatches() { -if (RWfileChanged==false) return true; //If file has not changed, no need to save changes -if (currentWatch[0] == NULL) //If there is no currently loaded file, run to Save as and then return + if (RWfileChanged==false) return true; //If file has not changed, no need to save changes + if (currentWatch[0] == NULL) //If there is no currently loaded file, run to Save as and then return + return Save_Watches(); + + char Str_Tmp[1024]; + strcpy(Str_Tmp,currentWatch); + FILE *WatchFile = fopen(Str_Tmp,"w+b"); + fputc('\n',WatchFile); + sprintf(Str_Tmp,"%d\n",WatchCount); + fputs(Str_Tmp,WatchFile); + const char DELIM = '\t'; + for (int i = 0; i < WatchCount; i++) { - return Save_Watches(); - } - - strcpy(Str_Tmp,currentWatch); - FILE *WatchFile = fopen(Str_Tmp,"w+b"); - fputc('\n',WatchFile); - sprintf(Str_Tmp,"%d\n",WatchCount); + sprintf(Str_Tmp,"%05X%c%04X%c%c%c%c%c%d%c%s\n",i,DELIM,rswatches[i].Address,DELIM,rswatches[i].Size,DELIM,rswatches[i].Type,DELIM,rswatches[i].WrongEndian,DELIM,rswatches[i].comment); fputs(Str_Tmp,WatchFile); - const char DELIM = '\t'; - for (int i = 0; i < WatchCount; i++) - { - sprintf(Str_Tmp,"%05X%c%04X%c%c%c%c%c%d%c%s\n",i,DELIM,rswatches[i].Address,DELIM,rswatches[i].Size,DELIM,rswatches[i].Type,DELIM,rswatches[i].WrongEndian,DELIM,rswatches[i].comment); - fputs(Str_Tmp,WatchFile); - } - fclose(WatchFile); - RWfileChanged=false; - return true; + } + fclose(WatchFile); + RWfileChanged=false; + return true; } bool Load_Watches(bool clear, const char* filename) @@ -594,7 +603,7 @@ bool Load_Watches(bool clear, const char* filename) FILE* WatchFile = fopen(filename,"rb"); if (!WatchFile) { - MessageBox(MESSAGEBOXPARENT,"Error opening file.","ERROR",MB_OK); + MessageBox(MESSAGEBOXPARENT,"Error opening file.","ERROR",MB_OK | MB_ICONERROR); return false; } if(clear) @@ -612,6 +621,7 @@ bool Load_Watches(bool clear, const char* filename) Temp.Size = 'b'; Temp.Type = 'h'; char mode; + char Str_Tmp[1024]; fgets(Str_Tmp,1024,WatchFile); sscanf(Str_Tmp,"%c%*s",&mode); int WatchAdd; @@ -656,6 +666,7 @@ bool Load_Watches(bool clear, const char* filename) bool Load_Watches(bool clear) { + char Str_Tmp[1024]; string initdir = FCEU_GetPath(FCEUMKF_MEMW); const char* slash = max(strrchr(gamefilename, '|'), max(strrchr(gamefilename, '\\'), strrchr(gamefilename, '/'))); strcpy(Str_Tmp,slash ? slash+1 : gamefilename); @@ -714,133 +725,144 @@ void RefreshWatchListSelectedItemControlStatus(HWND hDlg) LRESULT CALLBACK EditWatchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) //Gets info for a RAM Watch, and then inserts it into the Watch List { - RECT r; - RECT r2; - int dx1, dy1, dx2, dy2; + static int index; - static char s,t = s = 0; switch(uMsg) { case WM_INITDIALOG: - //Clear_Sound_Buffer(); + { + RECT r; + GetWindowRect(hWnd, &r); + SetWindowPos(hDlg, NULL, r.left, r.top, NULL, NULL, SWP_NOSIZE | SWP_NOZORDER | SWP_SHOWWINDOW); + index = (int)lParam; + AddressWatcher* watcher = &rswatches[index]; + if (watcher->Type != 'S') { + char Str_Tmp[1024]; + sprintf(Str_Tmp, "%04X", watcher->Address); + SetDlgItemText(hDlg, IDC_EDIT_COMPAREADDRESS, Str_Tmp); + switch (watcher->Size) + { + case 'b': + SendDlgItemMessage(hDlg, IDC_1_BYTE, BM_SETCHECK, BST_CHECKED, 0); + break; + case 'w': + SendDlgItemMessage(hDlg, IDC_2_BYTES, BM_SETCHECK, BST_CHECKED, 0); + break; + case 'd': + SendDlgItemMessage(hDlg, IDC_4_BYTES, BM_SETCHECK, BST_CHECKED, 0); + break; + } + switch (watcher->Type) + { + case 's': + SendDlgItemMessage(hDlg, IDC_SIGNED, BM_SETCHECK, BST_CHECKED, 0); + break; + case 'u': + SendDlgItemMessage(hDlg, IDC_UNSIGNED, BM_SETCHECK, BST_CHECKED, 0); + break; + case 'h': + SendDlgItemMessage(hDlg, IDC_HEX, BM_SETCHECK, BST_CHECKED, 0); + break; + } + } else + SetDlgItemText(hDlg, IDC_EDIT_COMPAREADDRESS, "---------"); - GetWindowRect(hWnd, &r); - dx1 = (r.right - r.left) / 2; - dy1 = (r.bottom - r.top) / 2; + if (watcher->comment != NULL) + SetDlgItemText(hDlg, IDC_PROMPT_EDIT, watcher->comment); - GetWindowRect(hDlg, &r2); - dx2 = (r2.right - r2.left) / 2; - dy2 = (r2.bottom - r2.top) / 2; - - //SetWindowPos(hDlg, NULL, max(0, r.left + (dx1 - dx2)), max(0, r.top + (dy1 - dy2)), NULL, NULL, SWP_NOSIZE | SWP_NOZORDER | SWP_SHOWWINDOW); - SetWindowPos(hDlg, NULL, r.left, r.top, NULL, NULL, SWP_NOSIZE | SWP_NOZORDER | SWP_SHOWWINDOW); - index = (int)lParam; - sprintf(Str_Tmp,"%04X",rswatches[index].Address); - SetDlgItemText(hDlg,IDC_EDIT_COMPAREADDRESS,Str_Tmp); - if (rswatches[index].comment != NULL) - SetDlgItemText(hDlg,IDC_PROMPT_EDIT,rswatches[index].comment); - s = rswatches[index].Size; - t = rswatches[index].Type; - switch (s) - { - case 'b': - SendDlgItemMessage(hDlg, IDC_1_BYTE, BM_SETCHECK, BST_CHECKED, 0); - break; - case 'w': - SendDlgItemMessage(hDlg, IDC_2_BYTES, BM_SETCHECK, BST_CHECKED, 0); - break; - case 'd': - SendDlgItemMessage(hDlg, IDC_4_BYTES, BM_SETCHECK, BST_CHECKED, 0); - break; - default: - s = 0; - break; + if (watcher->Type == 'S' || GetParent(hDlg) == RamSearchHWnd) + { + EnableWindow(GetDlgItem(hDlg, IDC_SPECIFICADDRESS), FALSE); + EnableWindow(GetDlgItem(hDlg, IDC_DATATYPE_GROUPBOX), FALSE); + EnableWindow(GetDlgItem(hDlg, IDC_DATASIZE_GROUPBOX), FALSE); + EnableWindow(GetDlgItem(hDlg, IDC_EDIT_COMPAREADDRESS), FALSE); + EnableWindow(GetDlgItem(hDlg, IDC_SIGNED), FALSE); + EnableWindow(GetDlgItem(hDlg, IDC_UNSIGNED), FALSE); + EnableWindow(GetDlgItem(hDlg, IDC_HEX), FALSE); + EnableWindow(GetDlgItem(hDlg, IDC_1_BYTE), FALSE); + EnableWindow(GetDlgItem(hDlg, IDC_2_BYTES), FALSE); + EnableWindow(GetDlgItem(hDlg, IDC_4_BYTES), FALSE); + SetFocus(GetDlgItem(hDlg, IDC_PROMPT_EDIT)); + } } - switch (t) - { - case 's': - SendDlgItemMessage(hDlg, IDC_SIGNED, BM_SETCHECK, BST_CHECKED, 0); - break; - case 'u': - SendDlgItemMessage(hDlg, IDC_UNSIGNED, BM_SETCHECK, BST_CHECKED, 0); - break; - case 'h': - SendDlgItemMessage(hDlg, IDC_HEX, BM_SETCHECK, BST_CHECKED, 0); - break; - default: - t = 0; - break; - } - return true; break; case WM_COMMAND: switch(LOWORD(wParam)) { - case IDC_SIGNED: - t='s'; - return true; - case IDC_UNSIGNED: - t='u'; - return true; - case IDC_HEX: - t='h'; - return true; - case IDC_1_BYTE: - s = 'b'; - return true; - case IDC_2_BYTES: - s = 'w'; - return true; - case IDC_4_BYTES: - s = 'd'; - return true; case IDOK: { - if (s && t) + char Str_Tmp[1024]; + // a normal watch, copy it to a temporary one + AddressWatcher watcher = rswatches[index]; + if (watcher.comment != NULL) + watcher.comment = strcpy((char*)malloc(strlen(watcher.comment) + 2), watcher.comment); + + // It's from ram watch window, not a separator + if (RamWatchHWnd && RamWatchHWnd == GetParent(hDlg) && watcher.Type != 'S') { - AddressWatcher Temp; - Temp.Size = s; - Temp.Type = t; - Temp.WrongEndian = false; //replace this when I get little endian working properly - GetDlgItemText(hDlg,IDC_EDIT_COMPAREADDRESS,Str_Tmp,1024); + GetDlgItemText(hDlg, IDC_PROMPT_EDIT, Str_Tmp, 1024); + + // type + if (SendDlgItemMessage(hDlg, IDC_SIGNED, BM_GETCHECK, 0, 0) == BST_CHECKED) + watcher.Type = 's'; + else if (SendDlgItemMessage(hDlg, IDC_UNSIGNED, BM_GETCHECK, 0, 0) == BST_CHECKED) + watcher.Type = 'u'; + else if (SendDlgItemMessage(hDlg, IDC_HEX, BM_GETCHECK, 0, 0) == BST_CHECKED) + watcher.Type = 'h'; + else { + MessageBox(hDlg, "Type must be specified.", "Error", MB_OK | MB_ICONERROR); + return true; + } + + // size + if (SendDlgItemMessage(hDlg, IDC_1_BYTE, BM_GETCHECK, 0, 0) == BST_CHECKED) + watcher.Size = 'b'; + else if (SendDlgItemMessage(hDlg, IDC_2_BYTES, BM_GETCHECK, 0, 0) == BST_CHECKED) + watcher.Size = 'w'; + else if (SendDlgItemMessage(hDlg, IDC_4_BYTES, BM_GETCHECK, 0, 0) == BST_CHECKED) + watcher.Size = 'd'; + else { + MessageBox(hDlg, "Size must be specified.", "Error", MB_OK | MB_ICONERROR); + return true; + } + + // address + GetDlgItemText(hDlg, IDC_EDIT_COMPAREADDRESS, Str_Tmp, 1024); char *addrstr = Str_Tmp; - if (strlen(Str_Tmp) > 8) addrstr = &(Str_Tmp[strlen(Str_Tmp) - 9]); - for(int i = 0; addrstr[i]; i++) {if(toupper(addrstr[i]) == 'O') addrstr[i] = '0';} - sscanf(addrstr,"%04X",&(Temp.Address)); + if (strlen(Str_Tmp) > 8) + addrstr = &Str_Tmp[strlen(Str_Tmp) - 9]; + for (int i = 0; addrstr[i]; ++i) + if (toupper(addrstr[i]) == 'O') + addrstr[i] = '0'; + sscanf(addrstr, "%04X", &watcher.Address); - if((Temp.Address & ~0xFFFFFF) == ~0xFFFFFF) - Temp.Address &= 0xFFFFFF; + if ((watcher.Address & ~0xFFFFFF) == ~0xFFFFFF) + watcher.Address &= 0xFFFFFF; - if(IsHardwareAddressValid(Temp.Address)) + if (!IsHardwareAddressValid(watcher.Address)) { - GetDlgItemText(hDlg,IDC_PROMPT_EDIT,Str_Tmp,80); - if (index < WatchCount) RemoveWatch(index); - InsertWatch(Temp,Str_Tmp); - if(RamWatchHWnd) - { - ListView_SetItemCount(GetDlgItem(RamWatchHWnd,IDC_WATCHLIST),WatchCount); - } - EndDialog(hDlg, true); - } - else - { - MessageBox(hDlg,"Invalid Address","ERROR",MB_OK); + MessageBox(hDlg, "Invalid Address.", "Error", MB_OK | MB_ICONERROR); + return true; } } - else - { - strcpy(Str_Tmp,"Error:"); - if (!s) - strcat(Str_Tmp," Size must be specified."); - if (!t) - strcat(Str_Tmp," Type must be specified."); - MessageBox(hDlg,Str_Tmp,"ERROR",MB_OK); - } - RWfileChanged=true; + + // comment + GetDlgItemText(hDlg, IDC_PROMPT_EDIT, Str_Tmp, 80); + + // finallly update the watch list + if (index < WatchCount) + // it's a watch editing operation, and the dialog is from Ram Watch Window, remove then insert; + RemoveWatch(index); + InsertWatch(watcher, Str_Tmp); + if (RamWatchHWnd) + ListView_SetItemCount(GetDlgItem(RamWatchHWnd, IDC_WATCHLIST), WatchCount); + EndDialog(hDlg, true); + + RWfileChanged = true; return true; break; } @@ -1037,9 +1059,13 @@ LRESULT CALLBACK RamWatchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam switch (Item->item.iSubItem) { case 0: - sprintf(num,"%04X",rswatches[iNum].Address); + { + int size = WatchSizeConv(rswatches[iNum]); + int addr = rswatches[iNum].Address; + sprintf(num, rswatches[iNum].Type == 'S' ? "------" : size > 1 ? "%04X-%04X" : "%04X", addr, addr + size - 1); Item->item.pszText = num; return true; + } case 1: { int i = rswatches[iNum].CurValue; int t = rswatches[iNum].Type; @@ -1072,6 +1098,42 @@ LRESULT CALLBACK RamWatchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam SetWindowLong(hDlg, DWL_MSGRESULT, ListView_GetSelectionMark(GetDlgItem(hDlg,IDC_WATCHLIST))); return 1; } + case NM_CUSTOMDRAW: + { + LPNMCUSTOMDRAW nmcd = (LPNMCUSTOMDRAW)lParam; + switch (nmcd->dwDrawStage) + { + case CDDS_ITEMPREPAINT: + { + LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)lParam; + if (rswatches[nmcd->dwItemSpec].Type == 'S') + lplvcd->clrTextBk = RGB(247, 187, 67); + else + switch (rswatches[nmcd->dwItemSpec].Cheats) + { + default: + case 0: + SetWindowLong(hDlg, DWL_MSGRESULT, CDRF_DODEFAULT); + return TRUE; + case 1: + lplvcd->clrTextBk = RGB(216, 203, 253); break; + case 2: + lplvcd->clrTextBk = RGB(195, 186, 253); break; + case 3: + lplvcd->clrTextBk = RGB(176, 139, 252); break; + case 4: + lplvcd->clrTextBk = RGB(175, 94, 253); + lplvcd->clrText = RGB(255, 255, 255); break; // use a more visual color in dark background + } + SetWindowLong(hDlg, DWL_MSGRESULT, CDRF_NEWFONT); + } + break; + case CDDS_PREPAINT: + SetWindowLong(hDlg, DWL_MSGRESULT, CDRF_NOTIFYITEMDRAW); + } + return TRUE; + } + } } } @@ -1114,16 +1176,16 @@ LRESULT CALLBACK RamWatchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam watchIndex = ListView_GetSelectionMark(GetDlgItem(hDlg,IDC_WATCHLIST)); if(watchIndex != -1) { - if(rswatches[watchIndex].Size == 'S') return true; - DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_EDITWATCH), hDlg, (DLGPROC) EditWatchProc,(LPARAM) watchIndex); + DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_EDITWATCH), hDlg, (DLGPROC) EditWatchProc,(LPARAM)watchIndex); SetFocus(GetDlgItem(hDlg,IDC_WATCHLIST)); } return true; case IDC_C_WATCH: - rswatches[WatchCount].Address = rswatches[WatchCount].WrongEndian = 0; + rswatches[WatchCount].Address = 0; + rswatches[WatchCount].WrongEndian = 0; rswatches[WatchCount].Size = 'b'; rswatches[WatchCount].Type = 's'; - DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_EDITWATCH), hDlg, (DLGPROC) EditWatchProc,(LPARAM) WatchCount); + DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_EDITWATCH), hDlg, (DLGPROC) EditWatchProc,(LPARAM)WatchCount); SetFocus(GetDlgItem(hDlg,IDC_WATCHLIST)); return true; case IDC_C_WATCH_DUPLICATE: @@ -1134,18 +1196,21 @@ LRESULT CALLBACK RamWatchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam rswatches[WatchCount].WrongEndian = rswatches[watchIndex].WrongEndian; rswatches[WatchCount].Size = rswatches[watchIndex].Size; rswatches[WatchCount].Type = rswatches[watchIndex].Type; - DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_EDITWATCH), hDlg, (DLGPROC) EditWatchProc,(LPARAM) WatchCount); + rswatches[WatchCount].comment = strcpy((char*)malloc(strlen(rswatches[watchIndex].comment) + 2), rswatches[watchIndex].comment); + DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_EDITWATCH), hDlg, (DLGPROC) EditWatchProc,WatchCount); SetFocus(GetDlgItem(hDlg,IDC_WATCHLIST)); } return true; case IDC_C_WATCH_SEPARATE: - AddressWatcher separator; - separator.Address = 0; - separator.WrongEndian = false; - separator.Size = 'S'; - separator.Type = 'S'; - InsertWatch(separator, "----------------------------"); + rswatches[WatchCount].Address = 0; + rswatches[WatchCount].WrongEndian = false; + rswatches[WatchCount].Size = 'S'; + rswatches[WatchCount].Type = 'S'; + + DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_EDITWATCH), hDlg, (DLGPROC)EditWatchProc, (LPARAM)WatchCount); + +// InsertWatch(separator, "----------------------------"); SetFocus(GetDlgItem(hDlg,IDC_WATCHLIST)); return true; @@ -1245,6 +1310,7 @@ LRESULT CALLBACK RamWatchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam } UpdateCheatsAdded(); + UpdateCheatWindowRelatedWindow(); } } break; @@ -1287,6 +1353,7 @@ LRESULT CALLBACK RamWatchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam case WM_DROPFILES: { + char Str_Tmp[1024]; HDROP hDrop = (HDROP)wParam; DragQueryFile(hDrop, 0, Str_Tmp, 1024); DragFinish(hDrop); @@ -1296,3 +1363,10 @@ LRESULT CALLBACK RamWatchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam return false; } + +// TODO: This function may be too slow when both cheats and watches are near the max limit. +void UpdateWatchCheats() { + extern int FCEU_CalcCheatAffectedBytes(uint32, uint32); + for (int i = 0; i < WatchCount; ++i) + rswatches[i].Cheats = FCEU_CalcCheatAffectedBytes(rswatches[i].Address, WatchSizeConv(rswatches[i])); +} \ No newline at end of file diff --git a/src/drivers/win/ramwatch.h b/src/drivers/win/ramwatch.h index 41700089..9cb29645 100644 --- a/src/drivers/win/ramwatch.h +++ b/src/drivers/win/ramwatch.h @@ -26,6 +26,7 @@ struct AddressWatcher bool WrongEndian; char Size; //'d' = 4 bytes, 'w' = 2 bytes, 'b' = 1 byte, and 'S' means it's a separator. char Type;//'s' = signed integer, 'u' = unsigned, 'h' = hex, 'S' = separator + short Cheats; // how many bytes are affected by cheat }; #define MAX_WATCH_COUNT 256 extern AddressWatcher rswatches[MAX_WATCH_COUNT]; @@ -41,8 +42,13 @@ bool InsertWatch(const AddressWatcher& Watch, HWND parent=NULL); // asks user fo void Update_RAM_Watch(); bool Load_Watches(bool clear, const char* filename); void RWAddRecentFile(const char *filename); +void UpdateWatchCheats(); LRESULT CALLBACK RamWatchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); +LRESULT CALLBACK EditWatchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); extern HWND RamWatchHWnd; +#define WatchSizeConv(watch) (watch.Type == 'S' ? 0 : watch.Size == 'd' ? 4 : watch.Size == 'w' ? 2 : watch.Size == 'b' ? 1 : 0) +#define SizeConvWatch(size) (size == 4 ? 'd' : size == 2 ? 'w' : size == 1 : 'b' : 0) + #endif diff --git a/src/drivers/win/replay.cpp b/src/drivers/win/replay.cpp index 9b5e7520..6baf6221 100644 --- a/src/drivers/win/replay.cpp +++ b/src/drivers/win/replay.cpp @@ -731,6 +731,8 @@ BOOL CALLBACK ReplayDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lP case IDYES: extern void DisableAllCheats(); DisableAllCheats(); + extern void UpdateCheatWindowRelatedWindow(); + UpdateCheatWindowRelatedWindow(); } } diff --git a/src/drivers/win/res.rc b/src/drivers/win/res.rc index 3991bcd0..e64930eb 100644 --- a/src/drivers/win/res.rc +++ b/src/drivers/win/res.rc @@ -7,16 +7,666 @@ // // Generated from the TEXTINCLUDE 2 resource. // -#include "afxres.h" +#include "afxres.h" + ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// -// 非特定语言 resources +// #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU) LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL -#pragma code_page(936) +#pragma code_page(1252) + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_ICON3 ICON "res\\taseditor-icon.ico" +IDI_ICON4 ICON "res\\taseditor-icon32.ico" +ICON_1 ICON "res/ICON_1.ico" +ICON_2 ICON "res/ICON_2.ico" + +///////////////////////////////////////////////////////////////////////////// +// +// Menu +// + +FCEUMENU MENU +BEGIN + POPUP "&File" + BEGIN + MENUITEM "&Open...", MENU_OPEN_FILE + MENUITEM "&Close", MENU_CLOSE_FILE + MENUITEM "&Recent", MENU_RECENT_FILES + MENUITEM SEPARATOR + POPUP "&Savestate" + BEGIN + MENUITEM "&Load State", MENU_LOADSTATE + MENUITEM "&Save State", MENU_SAVESTATE + MENUITEM "Load State &From...", MENU_LOAD_STATE + MENUITEM "Save State &As...", MENU_SAVE_STATE + MENUITEM SEPARATOR + MENUITEM "&Next save slot", MENU_NEXTSAVESTATE + MENUITEM "&Previous save slot", MENU_PREVIOUSSAVESTATE + MENUITEM "&View save slots", MENU_VIEWSAVESLOTS + END + POPUP "&Movie" + BEGIN + MENUITEM "Recent", MENU_MOVIE_RECENT + MENUITEM "&Record Movie...", MENU_RECORD_MOVIE + MENUITEM "&Play Movie...", MENU_REPLAY_MOVIE + MENUITEM "&Stop Movie", MENU_STOP_MOVIE + MENUITEM "Play from &Beginning", ID_FILE_PLAYMOVIEFROMBEGINNING + MENUITEM "&Toggle Recording/Playing", ID_FILE_TOGGLE_RECORDING_MOVIE + POPUP "&Quickly Modify" + BEGIN + MENUITEM "&Insert 1 Frame", ID_FILE_INSERT_1_FRAME + MENUITEM "&Delete 1 Frame", ID_FILE_DELETE_1_FRAME + MENUITEM SEPARATOR + MENUITEM "&Truncate at Current Frame", ID_FILE_TRUNCATE_MOVIE + END + MENUITEM SEPARATOR + POPUP "Record &Mode" + BEGIN + MENUITEM "&Next Record Mode", ID_FILE_NEXTRECORDMODE + MENUITEM SEPARATOR + MENUITEM "&Truncate", ID_FILE_RECORDMODE_TRUNCATE + MENUITEM "&Overwrite[W]", ID_FILE_RECORDMODE_OVERWRITE + MENUITEM "&Insert[I]", ID_FILE_RECORDMODE_INSERT + END + MENUITEM "&Read-only", ID_FILE_MOVIE_TOGGLEREAD + END + POPUP "&AVI/Wav" + BEGIN + MENUITEM "&Record AVI...", MENU_RECORD_AVI + MENUITEM "&Stop AVI", MENU_STOP_AVI + MENUITEM "&Record WAV...", MENU_RECORD_WAV + MENUITEM "&Stop WAV", MENU_STOP_WAV + MENUITEM SEPARATOR + MENUITEM "Enable HUD recording", ID_AVI_ENABLEHUDRECORDING + MENUITEM "Disable messages recording", ID_AVI_DISMOVIEMESSAGE + END + POPUP "&Lua" + BEGIN + MENUITEM "&Recent", MENU_LUA_RECENT + MENUITEM "&New Lua Script Window...", ID_FILE_OPENLUAWINDOW + MENUITEM "&Close All Script Windows", ID_FILE_CLOSELUAWINDOWS + END + MENUITEM "&Screenshot", ID_FILE_SCREENSHOT + MENUITEM "Save Screenshot As...", ID_FILE_SAVESCREENSHOTAS + MENUITEM SEPARATOR + MENUITEM "E&xit\tAlt+F4", MENU_EXIT + END + POPUP "&NES" + BEGIN + MENUITEM "&Reset", MENU_RESET + MENUITEM "&Power", MENU_POWER + MENUITEM SEPARATOR + MENUITEM "&Eject/Insert Disk", MENU_EJECT_DISK + MENUITEM "&Switch Disk Side", MENU_SWITCH_DISK + MENUITEM "&Insert Coin", MENU_INSERT_COIN + MENUITEM SEPARATOR + POPUP "E&mulation Speed" + BEGIN + MENUITEM "&Pause", ID_NES_PAUSE + MENUITEM "&Turbo", ID_NES_TURBO + MENUITEM SEPARATOR + MENUITEM "Speed &Up", ID_NES_SPEEDUP + MENUITEM "Slow &Down", ID_NES_SLOWDOWN + MENUITEM "&Slowest Speed", ID_NES_SLOWESTSPEED + MENUITEM "&Normal Speed", ID_NES_NORMALSPEED + MENUITEM "Set &Custom Speed", ID_EMULATIONSPEED_CUSTOMSPEED + MENUITEM SEPARATOR + MENUITEM "Set FrameAdvance Delay", ID_EMULATIONSPEED_SETFRAMEADVANCEDELAY + MENUITEM "Set custom speed for FrameAdvance", ID_EMULATIONSPEED_SETCUSTOMSPEEDFORFRAMEADVANCE + END + END + POPUP "&Config" + BEGIN + MENUITEM "&Hide Menu", MENU_HIDE_MENU + POPUP "&Enable" + BEGIN + MENUITEM "&Run in Background", MENU_RUN_IN_BACKGROUND + MENUITEM "&Background Input", MENU_BACKGROUND_INPUT + MENUITEM "&Auto-savestates", MENU_ENABLE_AUTOSAVE + MENUITEM "&Frame Adv. - Skip Lag", MENU_DISPLAY_FA_LAGSKIP + MENUITEM "Backup Savestates", ID_ENABLE_BACKUPSAVESTATES + MENUITEM "Compress Savestates", ID_ENABLE_COMPRESSSAVESTATES + MENUITEM "&Game Genie ROM", MENU_GAME_GENIE + MENUITEM "Auto-resume old play session", ID_ENABLE_AUTORESUME + END + POPUP "&Display" + BEGIN + POPUP "&Input Display" + BEGIN + MENUITEM "&Off", MENU_INPUTDISPLAY_0 + MENUITEM "&1 player", MENU_INPUTDISPLAY_1 + MENUITEM "&2 player", MENU_INPUTDISPLAY_2 + MENUITEM "&4 player", MENU_INPUTDISPLAY_4 + MENUITEM SEPARATOR + MENUITEM "old style disp.", ID_INPUTDISPLAY_OLDSTYLEDISP + END + MENUITEM "&Lag Counter", MENU_DISPLAY_LAGCOUNTER + MENUITEM "&Frame Counter", ID_DISPLAY_FRAMECOUNTER + MENUITEM "&Rerecord Counter", ID_DISPLAY_RERECORDCOUNTER + MENUITEM "&Movie status icon", ID_DISPLAY_MOVIESTATUSICON + MENUITEM "FPS", ID_DISPLAY_FPS + MENUITEM SEPARATOR + MENUITEM "Graphics: &BG", MENU_DISPLAY_BG + MENUITEM "Graphics: &OBJ", MENU_DISPLAY_OBJ + END + MENUITEM SEPARATOR + POPUP "Region" + BEGIN + MENUITEM "NTSC", MENU_NTSC + MENUITEM "&PAL", MENU_PAL + MENUITEM "Dendy", MENU_DENDY + END + POPUP "PPU" + BEGIN + MENUITEM "Old PPU", ID_OLDPPU + MENUITEM "New PPU", ID_NEWPPU + END + POPUP "RAM Init" + BEGIN + MENUITEM "&Default", MENU_RAMINIT_DEFAULT + MENUITEM "Fill $&FF", MENU_RAMINIT_FF + MENUITEM "Fill $&00", MENU_RAMINIT_00 + MENUITEM "&Random", MENU_RAMINIT_RANDOM + END + MENUITEM SEPARATOR + MENUITEM "&Directories...", MENU_DIRECTORIES + MENUITEM "&GUI...", MENU_GUI_OPTIONS + MENUITEM "&Input...", MENU_INPUT + MENUITEM "&Network Play...", MENU_NETWORK + MENUITEM "&Palette...", MENU_PALETTE + MENUITEM "&Sound...", MENU_SOUND + MENUITEM "&Timing...", MENU_TIMING + MENUITEM "&Video...", MENU_VIDEO + MENUITEM "&Movie options...", MENU_MOVIEOPTIONS + MENUITEM "&Map Hotkeys...", MENU_HOTKEYS + MENUITEM SEPARATOR + MENUITEM "Save Config File", ID_CONFIG_SAVECONFIGFILE + END + POPUP "&Tools" + BEGIN + MENUITEM "&Cheats...", MENU_CHEATS + MENUITEM "RAM Search...", ID_RAM_SEARCH + MENUITEM "RAM Watch...", ID_RAM_WATCH + MENUITEM "&Memory Watch...", MENU_MEMORY_WATCH + MENUITEM "&TAS Editor...", MENU_TASEDITOR + MENUITEM "Convert &FCM...", MENU_CONVERT_MOVIE + MENUITEM SEPARATOR + POPUP "Autofire &Pattern" + BEGIN + MENUITEM "1 on, 1 off", MENU_AUTOFIRE_PATTERN_1 + MENUITEM "1 on, 2 off", MENU_AUTOFIRE_PATTERN_2 + MENUITEM "1 on, 3 off", MENU_AUTOFIRE_PATTERN_3 + MENUITEM "1 on, 4 off", ID_DEBUG_DEBUGGER + MENUITEM "1 on, 5 off", ID_DEBUG_PPUVIEWER + MENUITEM "2 on, 1 off", ID_DEBUG_NAMETABLEVIEWER + MENUITEM "2 on, 2 off", ID_DEBUG_HEXEDITOR + MENUITEM "2 on, 3 off", ID_DEBUG_TRACELOGGER + MENUITEM "2 on, 4 off", MENU_AUTOFIRE_PATTERN_9 + MENUITEM "3 on, 1 off", ID_DEBUG_GAMEGENIEDECODER + MENUITEM "3 on, 2 off", ID_DEBUG_CDLOGGER + MENUITEM "3 on, 3 off", MENU_AUTOFIRE_PATTERN_12 + MENUITEM "4 on, 1 off", MENU_AUTOFIRE_PATTERN_13 + MENUITEM "4 on, 2 off", MENU_AUTOFIRE_PATTERN_14 + MENUITEM "5 on, 1 off", MENU_AUTOFIRE_PATTERN_15 + END + POPUP "Autofire &Offset" + BEGIN + MENUITEM "0 frames", MENU_AUTOFIRE_OFFSET_1 + MENUITEM "1 frame", MENU_AUTOFIRE_OFFSET_2 + MENUITEM "2 frames", MENU_AUTOFIRE_OFFSET_3 + MENUITEM "3 frames", MENU_AUTOFIRE_OFFSET_4 + MENUITEM "4 frames", MENU_AUTOFIRE_OFFSET_5 + MENUITEM "5 frames", MENU_AUTOFIRE_OFFSET_6 + END + MENUITEM "&Alternate A and B", MENU_ALTERNATE_AB + MENUITEM SEPARATOR + MENUITEM "Te&xt Hooker...", ID_TOOLS_TEXTHOOKER + END + POPUP "&Debug" + BEGIN + MENUITEM "&Debugger...", MENU_DEBUGGER + MENUITEM "&PPU Viewer...", MENU_PPUVIEWER + MENUITEM "&Name Table Viewer...", MENU_NAMETABLEVIEWER + MENUITEM "&Hex Editor...", MENU_HEXEDITOR + MENUITEM "&Trace Logger...", MENU_TRACELOGGER + MENUITEM "&Code/Data Logger...", MENU_CDLOGGER + MENUITEM "&Game Genie Decoder/Encoder...", MENU_GAMEGENIEDECODER + END + POPUP "&Help" + BEGIN + MENUITEM "&Help...", MENU_HELP + MENUITEM "&Message Log", MENU_MSGLOG + MENUITEM SEPARATOR + MENUITEM "&About", MENU_ABOUT + END +END + +TASEDITORMENU MENUEX +BEGIN + POPUP "File", 65535,MFT_STRING,MFS_ENABLED + BEGIN + MENUITEM "New", ID_FILE_NEW,MFT_STRING,MFS_ENABLED + MENUITEM "Open", ID_FILE_OPENPROJECT,MFT_STRING,MFS_ENABLED + MENUITEM "Save\tCtrl+S", ID_FILE_SAVEPROJECT,MFT_STRING,MFS_ENABLED + MENUITEM "Save As", ID_FILE_SAVEPROJECTAS,MFT_STRING,MFS_ENABLED + MENUITEM "Save Compact", ID_FILE_SAVECOMPACT,MFT_STRING,MFS_ENABLED + MENUITEM "Recent", ID_FILE_RECENT,MFT_STRING,MFS_ENABLED + MENUITEM MFT_SEPARATOR + MENUITEM "Import Input", ID_FILE_IMPORT,MFT_STRING,MFS_ENABLED + MENUITEM "Export to FM2", ID_FILE_EXPORTFM2,MFT_STRING,MFS_ENABLED + MENUITEM MFT_SEPARATOR + MENUITEM "Close\tAlt+F4", ID_FILE_CLOSE,MFT_STRING,MFS_ENABLED + END + POPUP "Edit", 65535,MFT_STRING,MFS_ENABLED + BEGIN + MENUITEM "Undo\tCtrl+Z", ID_EDIT_UNDO,MFT_STRING,MFS_ENABLED + MENUITEM "Redo\tCtrl+Y", ID_EDIT_REDO,MFT_STRING,MFS_ENABLED + MENUITEM "Selection Undo\tCtrl+Q", ID_EDIT_SELECTIONUNDO,MFT_STRING,MFS_ENABLED + MENUITEM "Selection Redo\tCtrl+W", ID_EDIT_SELECTIONREDO,MFT_STRING,MFS_ENABLED + MENUITEM MFT_SEPARATOR + MENUITEM "Deselect", ID_EDIT_DESELECT,MFT_STRING,MFS_ENABLED + MENUITEM "Select All", ID_EDIT_SELECTALL,MFT_STRING,MFS_ENABLED + MENUITEM "Select between Markers\tCtrl+A", ID_EDIT_SELECTMIDMARKERS,MFT_STRING,MFS_ENABLED + MENUITEM "Reselect Clipboard\tCtrl+B", ID_EDIT_RESELECTCLIPBOARD,MFT_STRING,MFS_ENABLED + MENUITEM MFT_SEPARATOR + MENUITEM "Copy\tCtrl+C", ID_EDIT_COPY,MFT_STRING,MFS_ENABLED + MENUITEM "Paste\tCtrl+V", ID_EDIT_PASTE,MFT_STRING,MFS_ENABLED + MENUITEM "PasteInsert\tCtrl+Shift+V", ID_EDIT_PASTEINSERT,MFT_STRING,MFS_ENABLED + MENUITEM "Cut\tCtrl+X", ID_EDIT_CUT,MFT_STRING,MFS_ENABLED + MENUITEM MFT_SEPARATOR + MENUITEM "Clear\tDel", ID_EDIT_CLEAR,MFT_STRING,MFS_ENABLED + MENUITEM "Delete\tCtrl+Del", ID_EDIT_DELETE,MFT_STRING,MFS_ENABLED + MENUITEM "Clone\tCtrl+Ins", ID_EDIT_CLONEFRAMES,MFT_STRING,MFS_ENABLED + MENUITEM "Insert\tCtrl+Shift+Ins", ID_EDIT_INSERTFRAMES,MFT_STRING,MFS_ENABLED + MENUITEM "Insert # of Frames\tIns", ID_EDIT_INSERT,MFT_STRING,MFS_ENABLED + MENUITEM MFT_SEPARATOR + MENUITEM "Truncate movie", ID_EDIT_TRUNCATE,MFT_STRING,MFS_ENABLED + END + POPUP "View", 65535,MFT_STRING,MFS_ENABLED + BEGIN + MENUITEM "Find Note window\tCtrl+F", ID_VIEW_FINDNOTE,MFT_STRING,MFS_ENABLED + MENUITEM MFT_SEPARATOR + MENUITEM "Display Branch Screenshots", ID_VIEW_SHOWBRANCHSCREENSHOTS,MFT_STRING,MFS_ENABLED + MENUITEM "Display Branch Descriptions", ID_VIEW_SHOWBRANCHTOOLTIPS,MFT_STRING,MFS_ENABLED + MENUITEM "Enable Hot Changes", ID_VIEW_ENABLEHOTCHANGES,MFT_STRING,MFS_ENABLED + MENUITEM MFT_SEPARATOR + MENUITEM "Follow Undo context", ID_VIEW_JUMPWHENMAKINGUNDO,MFT_STRING,MFS_ENABLED + MENUITEM "Follow Marker Note context", ID_VIEW_FOLLOWMARKERNOTECONTEXT,MFT_STRING,MFS_ENABLED + END + POPUP "Config", 65535,MFT_STRING,MFS_ENABLED + BEGIN + MENUITEM "Project file saving options", ID_CONFIG_SAVING_OPTIONS,MFT_STRING,MFS_ENABLED + MENUITEM "Set max Undo levels", ID_CONFIG_SETMAXUNDOLEVELS,MFT_STRING,MFS_ENABLED + MENUITEM "Set Greenzone capacity", ID_CONFIG_SETGREENZONECAPACITY,MFT_STRING,MFS_ENABLED + MENUITEM MFT_SEPARATOR + MENUITEM "Enable Greenzoning", ID_CONFIG_ENABLEGREENZONING,MFT_STRING,MFS_ENABLED + MENUITEM "Autofire Pattern skips Lag", ID_CONFIG_PATTERNSKIPSLAG,MFT_STRING,MFS_ENABLED + MENUITEM "Auto-adjust Input according to Lag", ID_CONFIG_ADJUSTLAG,MFT_STRING,MFS_ENABLED + MENUITEM MFT_SEPARATOR + MENUITEM "Draw Input by dragging", ID_CONFIG_DRAWINPUTBYDRAGGING,MFT_STRING,MFS_ENABLED + MENUITEM "Combine consecutive Recordings/Draws", ID_CONFIG_COMBINECONSECUTIVERECORDINGS,MFT_STRING,MFS_ENABLED + MENUITEM "Use 1P keys for all single Recordings", ID_CONFIG_USE1PFORRECORDING,MFT_STRING,MFS_ENABLED + MENUITEM "Use Input keys for Column Set", ID_CONFIG_USEINPUTKEYSFORCOLUMNSET,MFT_STRING,MFS_ENABLED + MENUITEM MFT_SEPARATOR + MENUITEM "Bind Markers to Input", ID_CONFIG_BINDMARKERSTOINPUT,MFT_STRING,MFS_ENABLED + MENUITEM "Empty new Marker Notes", ID_CONFIG_EMPTYNEWMARKERNOTES,MFT_STRING,MFS_ENABLED + MENUITEM MFT_SEPARATOR + MENUITEM "Old control scheme for Branching", ID_CONFIG_OLDBRANCHINGCONTROLS,MFT_STRING,MFS_ENABLED + MENUITEM "Branches restore entire Movie", ID_CONFIG_BRANCHESRESTOREFULLMOVIE,MFT_STRING,MFS_ENABLED + MENUITEM "HUD in Branch screenshots", ID_CONFIG_HUDINBRANCHSCREENSHOTS,MFT_STRING,MFS_ENABLED + MENUITEM MFT_SEPARATOR + MENUITEM "Autopause at the end of Movie", ID_CONFIG_AUTOPAUSEATTHEENDOFMOVIE,MFT_STRING,MFS_ENABLED + END + POPUP "Help", 65535,MFT_STRING,MFS_ENABLED + BEGIN + MENUITEM "Open TAS Editor Manual", ID_HELP_OPEN_MANUAL,MFT_STRING,MFS_ENABLED + MENUITEM "Enable Tooltips", ID_HELP_TOOLTIPS,MFT_STRING,MFS_ENABLED + MENUITEM MFT_SEPARATOR + MENUITEM "About", ID_HELP_ABOUT,MFT_STRING,MFS_ENABLED + END + POPUP "Pattern", 65535,MFT_STRING | MFT_RIGHTJUSTIFY,MFS_ENABLED + BEGIN + MENUITEM "Dummy", ID_PATTERN_TEST,MFT_STRING,MFS_ENABLED + END +END + +MEMVIEWMENU MENU +BEGIN + POPUP "&File" + BEGIN + MENUITEM "&Save Rom", MENU_MV_FILE_SAVE + MENUITEM "S&ave Rom As...", MENU_MV_FILE_SAVE_AS + MENUITEM "&Load *.TBL File", MENU_MV_FILE_LOAD_TBL + MENUITEM "&Unload *.TBL file", MENU_MV_FILE_UNLOAD_TBL + POPUP "&Dump to file" + BEGIN + MENUITEM "&Ram", MENU_MV_FILE_DUMP_RAM + MENUITEM "&PPU Memory", MENU_MV_FILE_DUMP_PPU + MENUITEM "&OAM Memory", MENU_MV_FILE_DUMP_OAM + MENUITEM "6502 64K", MENU_MV_FILE_DUMP_64K + END + POPUP "Load from &file" + BEGIN + MENUITEM "&Ram", MENU_MV_FILE_LOAD_RAM + MENUITEM "&PPU Memory", MENU_MV_FILE_LOAD_PPU + MENUITEM "&OAM Memory", MENU_MV_FILE_LOAD_OAM + END + MENUITEM "&Goto Address\tCtrl+A", MENU_MV_FILE_GOTO_ADDRESS + MENUITEM SEPARATOR + MENUITEM "&Close\tAlt+F4", ID_MEMWVIEW_FILE_CLOSE + END + POPUP "&Edit" + BEGIN + MENUITEM "&Undo\tCtrl+Z", MENU_MV_EDIT_UNDO + MENUITEM SEPARATOR + MENUITEM "&Copy", MENU_MV_EDIT_COPY + MENUITEM "&Paste", MENU_MV_EDIT_PASTE + MENUITEM SEPARATOR + MENUITEM "&Find...", MENU_MV_EDIT_FIND + END + POPUP "&View" + BEGIN + MENUITEM "&NES Memory", MENU_MV_VIEW_RAM + MENUITEM "&PPU Memory", MENU_MV_VIEW_PPU + MENUITEM "&OAM Memory", MENU_MV_VIEW_OAM + MENUITEM "&ROM File", MENU_MV_VIEW_ROM + END + POPUP "Highlighting" + BEGIN + MENUITEM "Highlight Activity", ID_HIGHLIGHTING_HIGHLIGHT_ACTIVITY + MENUITEM "Set fading period...", ID_HIGHLIGHTING_SETFADINGPERIOD + MENUITEM "Fade when paused", ID_HIGHLIGHTING_FADEWHENPAUSED + END + POPUP "&Bookmarks" + BEGIN + MENUITEM "&Remove all bookmarks", MENU_MV_BOOKMARKS_RM_ALL + END + POPUP "Help" + BEGIN + MENUITEM "&Help...", MENU_MV_HELP + END +END + +MEMWATCHMENU MENU +BEGIN + POPUP "&File " + BEGIN + MENUITEM "&New...\tCtrl+N", MEMW_FILE_NEW + MENUITEM "&Open...\tCtrl+O", MEMW_FILE_OPEN + MENUITEM "&Save\tCtrl+S", MEMW_FILE_SAVE + MENUITEM "S&ave As..\tCtrl+Shift+S", MEMW_FILE_SAVEAS + MENUITEM "&Recent", ID_FILE_RECENT + MENUITEM SEPARATOR + MENUITEM "&Close\tAlt+F4", MEMW_FILE_CLOSE + END + POPUP "&Options" + BEGIN + MENUITEM "&Load on Startup", MEMW_OPTIONS_LOADSTART + MENUITEM "Load Last &File on Startup", MEMW_OPTIONS_LOADLASTFILE + MENUITEM SEPARATOR + MENUITEM "&Collapse to 1 column", MEMW_OPTIONS_EXPANDCOLLAPSE + MENUITEM SEPARATOR + MENUITEM "Bind to Main Window", ID_OPTIONS_BINDTOMAINWINDOW + END + POPUP "&Help" + BEGIN + MENUITEM "&MemWatch Commands", MEMW_HELP_WCOMMANDS + END +END + +TASEDITORCONTEXTMENUS MENU +BEGIN + POPUP "Selected" + BEGIN + MENUITEM "Set Markers\tDbl-Clk", ID_SELECTED_SETMARKERS + MENUITEM "Remove Markers", ID_SELECTED_REMOVEMARKERS + MENUITEM SEPARATOR + MENUITEM "Deselect", ID_SELECTED_DESELECT + MENUITEM "Select between Markers\tCtrl+A", ID_SELECTED_SELECTMIDMARKERS + MENUITEM SEPARATOR + MENUITEM "Ungreenzone", ID_SELECTED_UNGREENZONE + MENUITEM SEPARATOR + MENUITEM "Clear\tDel", ID_CONTEXT_SELECTED_CLEARFRAMES + MENUITEM "Delete\tCtrl+Del", ID_CONTEXT_SELECTED_DELETEFRAMES + MENUITEM "Clone\tCtrl+Ins", ID_SELECTED_CLONE + MENUITEM "Insert\tCtrl+Shift+Ins", ID_CONTEXT_SELECTED_INSERTFRAMES + MENUITEM "Insert # of Frames\tIns", ID_CONTEXT_SELECTED_INSERTFRAMES2 + MENUITEM SEPARATOR + MENUITEM "Truncate movie", ID_CONTEXT_SELECTED_TRUNCATE + END +END + +FCEUCONTEXTMENUS MENU +BEGIN + POPUP "NoGame" + BEGIN + MENUITEM "Open ROM", FCEU_CONTEXT_OPENROM + MENUITEM "Last ROM used", FCEUX_CONTEXT_RECENTROM1 + MENUITEM SEPARATOR + MENUITEM "Help...", FCEU_CONTEXT_FCEUHELP + MENUITEM SEPARATOR + MENUITEM "Use Config > Gui to get zapper right click", FCEUX_CONTEXT_GUICONFIG + END + POPUP "Game+NoMovie" + BEGIN + MENUITEM "Play Movie...", FCEUX_CONTEXT_REPLAYMOVIE + MENUITEM "Record Movie...", FCEUX_CONTEXT_RECORDMOVIE + MENUITEM "Load Last Movie", FCEUX_CONTEXT_LOADLASTMOVIE + MENUITEM SEPARATOR + MENUITEM "Undo savestate", FCEUX_CONTEXT_UNDOSAVESTATE + MENUITEM "Undo loadstate", FCEUX_CONTEXT_UNDOLOADSTATE + MENUITEM "Rewind to last auto-save", FCEUX_CONTEXT_REWINDTOLASTAUTO + MENUITEM "Screenshot", FCEUX_CONTEXT_SCREENSHOT + MENUITEM SEPARATOR + MENUITEM "Close ROM", FCEU_CONTEXT_CLOSEROM + MENUITEM SEPARATOR + MENUITEM "Use Config > Gui to get zapper right click", FCEUX_CONTEXT_GUICONFIG + END + POPUP "Game+Movie+Playing+readonly" + BEGIN + MENUITEM "Toggle to read+write", FCEUX_CONTEXT_READONLYTOGGLE + MENUITEM "Play Movie from Beginning", FCEU_CONTEXT_PLAYMOVIEFROMBEGINNING + MENUITEM "Stop Movie Replay", FCEU_CONTEXT_STOPMOVIE + MENUITEM "View comments and subtitles", FCEUX_CONTEXT_VIEWCOMMENTSSUBTITLES + MENUITEM SEPARATOR + MENUITEM "Toggle to Recording", FCEUX_CONTEXT_TOGGLE_RECORDING + POPUP "Modify Movie" + BEGIN + MENUITEM "Insert 1 Frame", FCEUX_CONTEXT_INSERT_1_FRAME + MENUITEM "Delete 1 Frame", FCEUX_CONTEXT_DELETE_1_FRAME + MENUITEM SEPARATOR + MENUITEM "Truncate at Current Frame", FCEUX_CONTEXT_TRUNCATE_MOVIE + END + POPUP "Record Mode" + BEGIN + MENUITEM "&Truncate", FCEUX_CONTEXT_RECORDMODE_TRUNCATE + MENUITEM "&Overwrite[W]", FCEUX_CONTEXT_RECORDMODE_OVERWRITE + MENUITEM "&Insert[I]", FCEUX_CONTEXT_RECORDMODE_INSERT + END + MENUITEM SEPARATOR + MENUITEM "Undo savestate", FCEUX_CONTEXT_UNDOSAVESTATE + MENUITEM "Rewind to last auto-save", FCEUX_CONTEXT_REWINDTOLASTAUTO + MENUITEM SEPARATOR + MENUITEM "Help....", FCEU_CONTEXT_MOVIEHELP + MENUITEM SEPARATOR + MENUITEM "Use Config > Gui to get zapper right click", FCEUX_CONTEXT_GUICONFIG + END + POPUP "Game+Movie+Playing+readwrite" + BEGIN + MENUITEM "Toggle to Read-only", FCEUX_CONTEXT_READONLYTOGGLE + MENUITEM "Play Movie From Beginning", FCEU_CONTEXT_PLAYMOVIEFROMBEGINNING + MENUITEM "Stop Movie Replay", FCEU_CONTEXT_STOPMOVIE + MENUITEM "View comments and subtitles", FCEUX_CONTEXT_VIEWCOMMENTSSUBTITLES + MENUITEM "Make backup", FCEUX_CONTEXT_MAKEBACKUP + MENUITEM "Save Movie As...", FCEUX_CONTEXT_SAVEMOVIEAS + MENUITEM SEPARATOR + MENUITEM "Toggle to Recording", FCEUX_CONTEXT_TOGGLE_RECORDING + POPUP "Modify Movie" + BEGIN + MENUITEM "Insert 1 Frame", FCEUX_CONTEXT_INSERT_1_FRAME + MENUITEM "Delete 1 Frame", FCEUX_CONTEXT_DELETE_1_FRAME + MENUITEM SEPARATOR + MENUITEM "Truncate at Current Frame", FCEUX_CONTEXT_TRUNCATE_MOVIE + END + POPUP "Record Mode" + BEGIN + MENUITEM "&Truncate", FCEUX_CONTEXT_RECORDMODE_TRUNCATE + MENUITEM "&Overwrite[W]", FCEUX_CONTEXT_RECORDMODE_OVERWRITE + MENUITEM "&Insert[I]", FCEUX_CONTEXT_RECORDMODE_INSERT + END + MENUITEM SEPARATOR + MENUITEM "Undo savestate", FCEUX_CONTEXT_UNDOSAVESTATE + MENUITEM "Undo loadstate", FCEUX_CONTEXT_UNDOLOADSTATE + MENUITEM "Rewind to last auto-save", FCEUX_CONTEXT_REWINDTOLASTAUTO + MENUITEM SEPARATOR + MENUITEM "&Mode: Full state-movie loads", ID_CONTEXT_FULLSAVESTATES + MENUITEM SEPARATOR + MENUITEM "Help...", FCEU_CONTEXT_MOVIEHELP + MENUITEM SEPARATOR + MENUITEM "Use Config > Gui to get zapper right click", FCEUX_CONTEXT_GUICONFIG + END + POPUP "Game+Movie+Recording+readonly" + BEGIN + MENUITEM "Toggle to read+write", FCEUX_CONTEXT_READONLYTOGGLE + MENUITEM "Play Movie from Beginning", FCEU_CONTEXT_PLAYMOVIEFROMBEGINNING + MENUITEM "Stop Movie Recording", FCEU_CONTEXT_STOPMOVIE + MENUITEM "View comments and subtitles", FCEUX_CONTEXT_VIEWCOMMENTSSUBTITLES + MENUITEM SEPARATOR + MENUITEM "Toggle to Playing", FCEUX_CONTEXT_TOGGLE_RECORDING + POPUP "Modify Movie" + BEGIN + MENUITEM "Insert 1 Frame", FCEUX_CONTEXT_INSERT_1_FRAME + MENUITEM "Delete 1 Frame", FCEUX_CONTEXT_DELETE_1_FRAME + MENUITEM SEPARATOR + MENUITEM "Truncate at Current Frame", FCEUX_CONTEXT_TRUNCATE_MOVIE + END + POPUP "Record Mode" + BEGIN + MENUITEM "&Truncate", FCEUX_CONTEXT_RECORDMODE_TRUNCATE + MENUITEM "&Overwrite[W]", FCEUX_CONTEXT_RECORDMODE_OVERWRITE + MENUITEM "&Insert[I]", FCEUX_CONTEXT_RECORDMODE_INSERT + END + MENUITEM SEPARATOR + MENUITEM "Undo savestate", FCEUX_CONTEXT_UNDOSAVESTATE + MENUITEM "Rewind to last auto-save", FCEUX_CONTEXT_REWINDTOLASTAUTO + MENUITEM SEPARATOR + MENUITEM "Help....", FCEU_CONTEXT_MOVIEHELP + MENUITEM SEPARATOR + MENUITEM "Use Config > Gui to get zapper right click", FCEUX_CONTEXT_GUICONFIG + END + POPUP "Game+Movie+Recording+readwrite" + BEGIN + MENUITEM "Toggle to Read-only", FCEUX_CONTEXT_READONLYTOGGLE + MENUITEM "Play Movie From Beginning", FCEU_CONTEXT_PLAYMOVIEFROMBEGINNING + MENUITEM "Stop Movie Recording", FCEU_CONTEXT_STOPMOVIE + MENUITEM "View comments and subtitles", FCEUX_CONTEXT_VIEWCOMMENTSSUBTITLES + MENUITEM "Make backup", FCEUX_CONTEXT_MAKEBACKUP + MENUITEM "Save Movie As...", FCEUX_CONTEXT_SAVEMOVIEAS + MENUITEM SEPARATOR + MENUITEM "Toggle to Playing", FCEUX_CONTEXT_TOGGLE_RECORDING + POPUP "Modify Movie" + BEGIN + MENUITEM "Insert 1 Frame", FCEUX_CONTEXT_INSERT_1_FRAME + MENUITEM "Delete 1 Frame", FCEUX_CONTEXT_DELETE_1_FRAME + MENUITEM SEPARATOR + MENUITEM "Truncate at Current Frame", FCEUX_CONTEXT_TRUNCATE_MOVIE + END + POPUP "Record Mode" + BEGIN + MENUITEM "&Truncate", FCEUX_CONTEXT_RECORDMODE_TRUNCATE + MENUITEM "&Overwrite[W]", FCEUX_CONTEXT_RECORDMODE_OVERWRITE + MENUITEM "&Insert[I]", FCEUX_CONTEXT_RECORDMODE_INSERT + END + MENUITEM SEPARATOR + MENUITEM "Undo savestate", FCEUX_CONTEXT_UNDOSAVESTATE + MENUITEM "Undo loadstate", FCEUX_CONTEXT_UNDOLOADSTATE + MENUITEM "Rewind to last auto-save", FCEUX_CONTEXT_REWINDTOLASTAUTO + MENUITEM SEPARATOR + MENUITEM "&Mode: Full state-movie loads", ID_CONTEXT_FULLSAVESTATES + MENUITEM SEPARATOR + MENUITEM "Help...", FCEU_CONTEXT_MOVIEHELP + MENUITEM SEPARATOR + MENUITEM "Use Config > Gui to get zapper right click", FCEUX_CONTEXT_GUICONFIG + END +END + +RAMWATCH_MENU MENU +BEGIN + POPUP "File" + BEGIN + MENUITEM "&New list\tCtrl N", RAMMENU_FILE_NEW + MENUITEM "&Open...\tCtrl O", RAMMENU_FILE_OPEN + MENUITEM "&Save\tCtrl S", RAMMENU_FILE_SAVE + MENUITEM "Sa&ve As...\tCtrl Shift S", RAMMENU_FILE_SAVEAS + MENUITEM "&Append file...", RAMMENU_FILE_APPEND + MENUITEM "Recent", RAMMENU_FILE_RECENT + MENUITEM SEPARATOR + MENUITEM "Auto-&load", RAMMENU_FILE_AUTOLOAD + MENUITEM "Save Window Position", RAMMENU_FILE_SAVEWINDOW + MENUITEM SEPARATOR + MENUITEM "&Close\tAlt F4", IDCANCEL + END + POPUP "Watches" + BEGIN + MENUITEM "&New Watch\tN", IDC_C_WATCH + MENUITEM "&Edit Watch\tE", IDC_C_WATCH_EDIT + MENUITEM "&Remove Watch\tR", IDC_C_WATCH_REMOVE + MENUITEM "Duplicate Watch\tA", IDC_C_WATCH_DUPLICATE + MENUITEM "Add &Separator\tS", IDC_C_WATCH_SEPARATE + MENUITEM SEPARATOR + MENUITEM "Move Up\tU", IDC_C_WATCH_UP + MENUITEM "Move Down\tD", IDC_C_WATCH_DOWN + END +END + +CHEATCONTEXTMENUS MENU +BEGIN + POPUP "CheatListPopup" + BEGIN + MENUITEM "Toggle selected Cheats\tDbl-Clk", CHEAT_CONTEXT_TOGGLECHEAT + MENUITEM "Poke Cheat Value", CHEAT_CONTEXT_POKECHEATVALUE + MENUITEM "Goto in Hex Editor", CHEAT_CONTEXT_GOTOINHEXEDITOR + MENUITEM "Delete selected Cheats", ID_CHEATLISTPOPUP_DELETESELECTEDCHEATS + END +END + +DEBUGCONTEXTMENUS MENU +BEGIN + POPUP "DebugListPopup" + BEGIN + MENUITEM "Toggle Breakpoint\tDbl-Clk", DEBUGGER_CONTEXT_TOGGLEBREAK + END +END + +LUAWINDOW_MENU MENU +BEGIN + POPUP "Console" + BEGIN + MENUITEM "&Font...", IDC_LUACONSOLE_CHOOSEFONT + MENUITEM "Clear", IDC_LUACONSOLE_CLEAR + END +END + +DISASMCONTEXTMENUS MENU +BEGIN + POPUP "DisasmPopup" + BEGIN + MENUITEM "Copy\tCtrl+C", DISASM_CONTEXT_COPY + MENUITEM "Select All\tCtrl+A", DISASM_CONTEXT_SELECTALL + END +END + ///////////////////////////////////////////////////////////////////////////// // @@ -1449,7 +2099,7 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_ CAPTION " RAM Search" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - CONTROL "",IDC_RAMLIST,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | LVS_OWNERDATA | WS_BORDER | WS_TABSTOP,9,9,214,151,WS_EX_CLIENTEDGE + CONTROL "",IDC_RAMLIST,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_OWNERDATA | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,9,9,214,151,WS_EX_CLIENTEDGE PUSHBUTTON "&Search",IDC_C_SEARCH,226,9,52,16 PUSHBUTTON "&Add Cheat",IDC_C_ADDCHEAT,226,130,52,14,WS_DISABLED PUSHBUTTON "&Watch",IDC_C_WATCH,226,114,52,14 @@ -1497,7 +2147,7 @@ CAPTION " RAM Watch" MENU RAMWATCH_MENU FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - CONTROL "",IDC_WATCHLIST,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_OWNERDATA | WS_BORDER | WS_TABSTOP,9,9,210,279,WS_EX_CLIENTEDGE + CONTROL "",IDC_WATCHLIST,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_OWNERDATA | WS_BORDER | WS_TABSTOP | LVS_NOSORTHEADER,9,9,210,279,WS_EX_CLIENTEDGE PUSHBUTTON "Edit",IDC_C_WATCH_EDIT,226,66,34,14 PUSHBUTTON "Remove",IDC_C_WATCH_REMOVE,226,83,34,14 PUSHBUTTON "New",IDC_C_WATCH,226,100,34,14 @@ -1513,15 +2163,15 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSM CAPTION " Edit Watch" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - CTEXT "Address:",IDC_SPECIFICADDRESS,18,12,35,10 - EDITTEXT IDC_EDIT_COMPAREADDRESS,55,10,65,12,ES_UPPERCASE | ES_AUTOHSCROLL - CTEXT "Notes:",IDC_PROMPT_TEXT,18,24,45,10 - EDITTEXT IDC_PROMPT_EDIT,55,22,65,12,ES_AUTOHSCROLL - GROUPBOX "Data Type",IDC_STATIC,14,37,75,42,0,WS_EX_TRANSPARENT + CTEXT "Address:",IDC_SPECIFICADDRESS,15,12,30,8 + EDITTEXT IDC_EDIT_COMPAREADDRESS,48,10,65,12,ES_UPPERCASE | ES_AUTOHSCROLL + CTEXT "Notes:",IDC_PROMPT_TEXT,23,24,22,8 + EDITTEXT IDC_PROMPT_EDIT,48,22,119,12,ES_AUTOHSCROLL + GROUPBOX "Data Type",IDC_DATATYPE_GROUPBOX,14,37,75,42,0,WS_EX_TRANSPARENT CONTROL "&Signed",IDC_SIGNED,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,18,47,67,9 CONTROL "&Unsigned",IDC_UNSIGNED,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,18,57,67,9 CONTROL "&Hexadecimal",IDC_HEX,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,18,67,67,9 - GROUPBOX "Data Size",IDC_STATIC,94,37,73,42,0,WS_EX_TRANSPARENT + GROUPBOX "Data Size",IDC_DATASIZE_GROUPBOX,94,37,73,42,0,WS_EX_TRANSPARENT CONTROL "&1 byte",IDC_1_BYTE,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,98,47,61,11 CONTROL "&2 bytes",IDC_2_BYTES,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,98,57,61,11 CONTROL "&4 bytes",IDC_4_BYTES,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,98,67,61,11 @@ -1529,16 +2179,6 @@ BEGIN PUSHBUTTON "&Cancel",IDCANCEL,120,80,50,14 END -IDD_PROMPT DIALOG 0, 0, 186, 68 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Input Prompt" -FONT 8, "Ms Shell Dlg 2" -BEGIN - DEFPUSHBUTTON "OK",IDOK,100,43,50,14 - PUSHBUTTON "Cancel",IDCANCEL,37,42,50,14 - EDITTEXT IDC_PROMPT_EDIT,10,15,167,14,ES_AUTOHSCROLL -END - DLG_SNESPAD DIALOGEX 4, 109, 243, 121 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Gamepad Configuration" @@ -1560,6 +2200,59 @@ BEGIN PUSHBUTTON "R",311,198,19,32,12 END +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 + +IDD_REPLAY_METADATA DIALOGEX 0, 0, 325, 250 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Movie Metadata" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + DEFPUSHBUTTON "Close",IDCANCEL,268,229,50,14 + CONTROL "",IDC_LIST1,"SysListView32",LVS_REPORT | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,7,7,311,214 +END + ///////////////////////////////////////////////////////////////////////////// // @@ -1736,662 +2429,43 @@ BEGIN BEGIN END + IDD_RAMSEARCH, DIALOG + BEGIN + END + + IDD_RAMWATCH, DIALOG + BEGIN + END + + IDD_EDITWATCH, DIALOG + BEGIN + BOTTOMMARGIN, 94 + END + DLG_SNESPAD, DIALOG BEGIN END + + IDD_TASEDITOR_SAVINGOPTIONS, DIALOG + BEGIN + END + + IDD_SYMBOLIC_DEBUG_NAMING, DIALOG + BEGIN + BOTTOMMARGIN, 82 + END + + "IDD_REPLAY_METADATA", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 318 + TOPMARGIN, 7 + BOTTOMMARGIN, 243 + END END #endif // APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_ICON3 ICON "res\\taseditor-icon.ico" -IDI_ICON4 ICON "res\\taseditor-icon32.ico" -ICON_1 ICON "res/ICON_1.ico" -ICON_2 ICON "res/ICON_2.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// Menu -// - -FCEUMENU MENU -BEGIN - POPUP "&File" - BEGIN - MENUITEM "&Open...", MENU_OPEN_FILE - MENUITEM "&Close", MENU_CLOSE_FILE - MENUITEM "&Recent", MENU_RECENT_FILES - MENUITEM SEPARATOR - POPUP "&Savestate" - BEGIN - MENUITEM "&Load State", MENU_LOADSTATE - MENUITEM "&Save State", MENU_SAVESTATE - MENUITEM "Load State &From...", MENU_LOAD_STATE - MENUITEM "Save State &As...", MENU_SAVE_STATE - MENUITEM SEPARATOR - MENUITEM "&Next save slot", MENU_NEXTSAVESTATE - MENUITEM "&Previous save slot", MENU_PREVIOUSSAVESTATE - MENUITEM "&View save slots", MENU_VIEWSAVESLOTS - END - POPUP "&Movie" - BEGIN - MENUITEM "Recent", MENU_MOVIE_RECENT - MENUITEM "&Record Movie...", MENU_RECORD_MOVIE - MENUITEM "&Play Movie...", MENU_REPLAY_MOVIE - MENUITEM "&Stop Movie", MENU_STOP_MOVIE - MENUITEM "Play from &Beginning", ID_FILE_PLAYMOVIEFROMBEGINNING - MENUITEM "&Toggle Recording/Playing", ID_FILE_TOGGLE_RECORDING_MOVIE - POPUP "&Quickly Modify" - BEGIN - MENUITEM "&Insert 1 Frame", ID_FILE_INSERT_1_FRAME - MENUITEM "&Delete 1 Frame", ID_FILE_DELETE_1_FRAME - MENUITEM SEPARATOR - MENUITEM "&Truncate at Current Frame", ID_FILE_TRUNCATE_MOVIE - END - MENUITEM SEPARATOR - POPUP "Record &Mode" - BEGIN - MENUITEM "&Next Record Mode", ID_FILE_NEXTRECORDMODE - MENUITEM SEPARATOR - MENUITEM "&Truncate", ID_FILE_RECORDMODE_TRUNCATE - MENUITEM "&Overwrite[W]", ID_FILE_RECORDMODE_OVERWRITE - MENUITEM "&Insert[I]", ID_FILE_RECORDMODE_INSERT - END - MENUITEM "&Read-only", ID_FILE_MOVIE_TOGGLEREAD - END - POPUP "&AVI/Wav" - BEGIN - MENUITEM "&Record AVI...", MENU_RECORD_AVI - MENUITEM "&Stop AVI", MENU_STOP_AVI - MENUITEM "&Record WAV...", MENU_RECORD_WAV - MENUITEM "&Stop WAV", MENU_STOP_WAV - MENUITEM SEPARATOR - MENUITEM "Enable HUD recording", ID_AVI_ENABLEHUDRECORDING - MENUITEM "Disable messages recording", ID_AVI_DISMOVIEMESSAGE - END - POPUP "&Lua" - BEGIN - MENUITEM "&Recent", MENU_LUA_RECENT - MENUITEM "&New Lua Script Window...", ID_FILE_OPENLUAWINDOW - MENUITEM "&Close All Script Windows", ID_FILE_CLOSELUAWINDOWS - END - MENUITEM "&Screenshot", ID_FILE_SCREENSHOT - MENUITEM "Save Screenshot As...", ID_FILE_SAVESCREENSHOTAS - MENUITEM SEPARATOR - MENUITEM "E&xit\tAlt+F4", MENU_EXIT - END - POPUP "&NES" - BEGIN - MENUITEM "&Reset", MENU_RESET - MENUITEM "&Power", MENU_POWER - MENUITEM SEPARATOR - MENUITEM "&Eject/Insert Disk", MENU_EJECT_DISK - MENUITEM "&Switch Disk Side", MENU_SWITCH_DISK - MENUITEM "&Insert Coin", MENU_INSERT_COIN - MENUITEM SEPARATOR - POPUP "E&mulation Speed" - BEGIN - MENUITEM "&Pause", ID_NES_PAUSE - MENUITEM "&Turbo", ID_NES_TURBO - MENUITEM SEPARATOR - MENUITEM "Speed &Up", ID_NES_SPEEDUP - MENUITEM "Slow &Down", ID_NES_SLOWDOWN - MENUITEM "&Slowest Speed", ID_NES_SLOWESTSPEED - MENUITEM "&Normal Speed", ID_NES_NORMALSPEED - MENUITEM "Set &Custom Speed", ID_EMULATIONSPEED_CUSTOMSPEED - MENUITEM SEPARATOR - MENUITEM "Set FrameAdvance Delay", ID_EMULATIONSPEED_SETFRAMEADVANCEDELAY - MENUITEM "Set custom speed for FrameAdvance", ID_EMULATIONSPEED_SETCUSTOMSPEEDFORFRAMEADVANCE - END - END - POPUP "&Config" - BEGIN - MENUITEM "&Hide Menu", MENU_HIDE_MENU - POPUP "&Enable" - BEGIN - MENUITEM "&Run in Background", MENU_RUN_IN_BACKGROUND - MENUITEM "&Background Input", MENU_BACKGROUND_INPUT - MENUITEM "&Auto-savestates", MENU_ENABLE_AUTOSAVE - MENUITEM "&Frame Adv. - Skip Lag", MENU_DISPLAY_FA_LAGSKIP - MENUITEM "Backup Savestates", ID_ENABLE_BACKUPSAVESTATES - MENUITEM "Compress Savestates", ID_ENABLE_COMPRESSSAVESTATES - MENUITEM "&Game Genie ROM", MENU_GAME_GENIE - MENUITEM "Auto-resume old play session", ID_ENABLE_AUTORESUME - END - POPUP "&Display" - BEGIN - POPUP "&Input Display" - BEGIN - MENUITEM "&Off", MENU_INPUTDISPLAY_0 - MENUITEM "&1 player", MENU_INPUTDISPLAY_1 - MENUITEM "&2 player", MENU_INPUTDISPLAY_2 - MENUITEM "&4 player", MENU_INPUTDISPLAY_4 - MENUITEM SEPARATOR - MENUITEM "old style disp.", ID_INPUTDISPLAY_OLDSTYLEDISP - END - MENUITEM "&Lag Counter", MENU_DISPLAY_LAGCOUNTER - MENUITEM "&Frame Counter", ID_DISPLAY_FRAMECOUNTER - MENUITEM "&Rerecord Counter", ID_DISPLAY_RERECORDCOUNTER - MENUITEM "&Movie status icon", ID_DISPLAY_MOVIESTATUSICON - MENUITEM "FPS", ID_DISPLAY_FPS - MENUITEM SEPARATOR - MENUITEM "Graphics: &BG", MENU_DISPLAY_BG - MENUITEM "Graphics: &OBJ", MENU_DISPLAY_OBJ - END - MENUITEM SEPARATOR - POPUP "Region" - BEGIN - MENUITEM "NTSC", MENU_NTSC - MENUITEM "&PAL", MENU_PAL - MENUITEM "Dendy", MENU_DENDY - END - POPUP "PPU" - BEGIN - MENUITEM "Old PPU", ID_OLDPPU - MENUITEM "New PPU", ID_NEWPPU - END - POPUP "RAM Init" - BEGIN - MENUITEM "&Default", MENU_RAMINIT_DEFAULT - MENUITEM "Fill $&FF", MENU_RAMINIT_FF - MENUITEM "Fill $&00", MENU_RAMINIT_00 - MENUITEM "&Random", MENU_RAMINIT_RANDOM - END - MENUITEM SEPARATOR - MENUITEM "&Directories...", MENU_DIRECTORIES - MENUITEM "&GUI...", MENU_GUI_OPTIONS - MENUITEM "&Input...", MENU_INPUT - MENUITEM "&Network Play...", MENU_NETWORK - MENUITEM "&Palette...", MENU_PALETTE - MENUITEM "&Sound...", MENU_SOUND - MENUITEM "&Timing...", MENU_TIMING - MENUITEM "&Video...", MENU_VIDEO - MENUITEM "&Movie options...", MENU_MOVIEOPTIONS - MENUITEM "&Map Hotkeys...", MENU_HOTKEYS - MENUITEM SEPARATOR - MENUITEM "Save Config File", ID_CONFIG_SAVECONFIGFILE - END - POPUP "&Tools" - BEGIN - MENUITEM "&Cheats...", MENU_CHEATS - MENUITEM "RAM Search...", ID_RAM_SEARCH - MENUITEM "RAM Watch...", ID_RAM_WATCH - MENUITEM "&Memory Watch...", MENU_MEMORY_WATCH - MENUITEM "&TAS Editor...", MENU_TASEDITOR - MENUITEM "Convert &FCM...", MENU_CONVERT_MOVIE - MENUITEM SEPARATOR - POPUP "Autofire &Pattern" - BEGIN - MENUITEM "1 on, 1 off", MENU_AUTOFIRE_PATTERN_1 - MENUITEM "1 on, 2 off", MENU_AUTOFIRE_PATTERN_2 - MENUITEM "1 on, 3 off", MENU_AUTOFIRE_PATTERN_3 - MENUITEM "1 on, 4 off", ID_DEBUG_DEBUGGER - MENUITEM "1 on, 5 off", ID_DEBUG_PPUVIEWER - MENUITEM "2 on, 1 off", ID_DEBUG_NAMETABLEVIEWER - MENUITEM "2 on, 2 off", ID_DEBUG_HEXEDITOR - MENUITEM "2 on, 3 off", ID_DEBUG_TRACELOGGER - MENUITEM "2 on, 4 off", MENU_AUTOFIRE_PATTERN_9 - MENUITEM "3 on, 1 off", ID_DEBUG_GAMEGENIEDECODER - MENUITEM "3 on, 2 off", ID_DEBUG_CDLOGGER - MENUITEM "3 on, 3 off", MENU_AUTOFIRE_PATTERN_12 - MENUITEM "4 on, 1 off", MENU_AUTOFIRE_PATTERN_13 - MENUITEM "4 on, 2 off", MENU_AUTOFIRE_PATTERN_14 - MENUITEM "5 on, 1 off", MENU_AUTOFIRE_PATTERN_15 - END - POPUP "Autofire &Offset" - BEGIN - MENUITEM "0 frames", MENU_AUTOFIRE_OFFSET_1 - MENUITEM "1 frame", MENU_AUTOFIRE_OFFSET_2 - MENUITEM "2 frames", MENU_AUTOFIRE_OFFSET_3 - MENUITEM "3 frames", MENU_AUTOFIRE_OFFSET_4 - MENUITEM "4 frames", MENU_AUTOFIRE_OFFSET_5 - MENUITEM "5 frames", MENU_AUTOFIRE_OFFSET_6 - END - MENUITEM "&Alternate A and B", MENU_ALTERNATE_AB - MENUITEM SEPARATOR - MENUITEM "Te&xt Hooker...", ID_TOOLS_TEXTHOOKER - END - POPUP "&Debug" - BEGIN - MENUITEM "&Debugger...", MENU_DEBUGGER - MENUITEM "&PPU Viewer...", MENU_PPUVIEWER - MENUITEM "&Name Table Viewer...", MENU_NAMETABLEVIEWER - MENUITEM "&Hex Editor...", MENU_HEXEDITOR - MENUITEM "&Trace Logger...", MENU_TRACELOGGER - MENUITEM "&Code/Data Logger...", MENU_CDLOGGER - MENUITEM "&Game Genie Decoder/Encoder...", MENU_GAMEGENIEDECODER - END - POPUP "&Help" - BEGIN - MENUITEM "&Help...", MENU_HELP - MENUITEM "&Message Log", MENU_MSGLOG - MENUITEM SEPARATOR - MENUITEM "&About", MENU_ABOUT - END -END - -TASEDITORMENU MENUEX -BEGIN - POPUP "File", 65535,MFT_STRING,MFS_ENABLED - BEGIN - MENUITEM "New", ID_FILE_NEW,MFT_STRING,MFS_ENABLED - MENUITEM "Open", ID_FILE_OPENPROJECT,MFT_STRING,MFS_ENABLED - MENUITEM "Save\tCtrl+S", ID_FILE_SAVEPROJECT,MFT_STRING,MFS_ENABLED - MENUITEM "Save As", ID_FILE_SAVEPROJECTAS,MFT_STRING,MFS_ENABLED - MENUITEM "Save Compact", ID_FILE_SAVECOMPACT,MFT_STRING,MFS_ENABLED - MENUITEM "Recent", ID_FILE_RECENT,MFT_STRING,MFS_ENABLED - MENUITEM MFT_SEPARATOR - MENUITEM "Import Input", ID_FILE_IMPORT,MFT_STRING,MFS_ENABLED - MENUITEM "Export to FM2", ID_FILE_EXPORTFM2,MFT_STRING,MFS_ENABLED - MENUITEM MFT_SEPARATOR - MENUITEM "Close\tAlt+F4", ID_FILE_CLOSE,MFT_STRING,MFS_ENABLED - END - POPUP "Edit", 65535,MFT_STRING,MFS_ENABLED - BEGIN - MENUITEM "Undo\tCtrl+Z", ID_EDIT_UNDO,MFT_STRING,MFS_ENABLED - MENUITEM "Redo\tCtrl+Y", ID_EDIT_REDO,MFT_STRING,MFS_ENABLED - MENUITEM "Selection Undo\tCtrl+Q", ID_EDIT_SELECTIONUNDO,MFT_STRING,MFS_ENABLED - MENUITEM "Selection Redo\tCtrl+W", ID_EDIT_SELECTIONREDO,MFT_STRING,MFS_ENABLED - MENUITEM MFT_SEPARATOR - MENUITEM "Deselect", ID_EDIT_DESELECT,MFT_STRING,MFS_ENABLED - MENUITEM "Select All", ID_EDIT_SELECTALL,MFT_STRING,MFS_ENABLED - MENUITEM "Select between Markers\tCtrl+A", ID_EDIT_SELECTMIDMARKERS,MFT_STRING,MFS_ENABLED - MENUITEM "Reselect Clipboard\tCtrl+B", ID_EDIT_RESELECTCLIPBOARD,MFT_STRING,MFS_ENABLED - MENUITEM MFT_SEPARATOR - MENUITEM "Copy\tCtrl+C", ID_EDIT_COPY,MFT_STRING,MFS_ENABLED - MENUITEM "Paste\tCtrl+V", ID_EDIT_PASTE,MFT_STRING,MFS_ENABLED - MENUITEM "PasteInsert\tCtrl+Shift+V", ID_EDIT_PASTEINSERT,MFT_STRING,MFS_ENABLED - MENUITEM "Cut\tCtrl+X", ID_EDIT_CUT,MFT_STRING,MFS_ENABLED - MENUITEM MFT_SEPARATOR - MENUITEM "Clear\tDel", ID_EDIT_CLEAR,MFT_STRING,MFS_ENABLED - MENUITEM "Delete\tCtrl+Del", ID_EDIT_DELETE,MFT_STRING,MFS_ENABLED - MENUITEM "Clone\tCtrl+Ins", ID_EDIT_CLONEFRAMES,MFT_STRING,MFS_ENABLED - MENUITEM "Insert\tCtrl+Shift+Ins", ID_EDIT_INSERTFRAMES,MFT_STRING,MFS_ENABLED - MENUITEM "Insert # of Frames\tIns", ID_EDIT_INSERT,MFT_STRING,MFS_ENABLED - MENUITEM MFT_SEPARATOR - MENUITEM "Truncate movie", ID_EDIT_TRUNCATE,MFT_STRING,MFS_ENABLED - END - POPUP "View", 65535,MFT_STRING,MFS_ENABLED - BEGIN - MENUITEM "Find Note window\tCtrl+F", ID_VIEW_FINDNOTE,MFT_STRING,MFS_ENABLED - MENUITEM MFT_SEPARATOR - MENUITEM "Display Branch Screenshots", ID_VIEW_SHOWBRANCHSCREENSHOTS,MFT_STRING,MFS_ENABLED - MENUITEM "Display Branch Descriptions", ID_VIEW_SHOWBRANCHTOOLTIPS,MFT_STRING,MFS_ENABLED - MENUITEM "Enable Hot Changes", ID_VIEW_ENABLEHOTCHANGES,MFT_STRING,MFS_ENABLED - MENUITEM MFT_SEPARATOR - MENUITEM "Follow Undo context", ID_VIEW_JUMPWHENMAKINGUNDO,MFT_STRING,MFS_ENABLED - MENUITEM "Follow Marker Note context", ID_VIEW_FOLLOWMARKERNOTECONTEXT,MFT_STRING,MFS_ENABLED - END - POPUP "Config", 65535,MFT_STRING,MFS_ENABLED - BEGIN - MENUITEM "Project file saving options", ID_CONFIG_SAVING_OPTIONS,MFT_STRING,MFS_ENABLED - MENUITEM "Set max Undo levels", ID_CONFIG_SETMAXUNDOLEVELS,MFT_STRING,MFS_ENABLED - MENUITEM "Set Greenzone capacity", ID_CONFIG_SETGREENZONECAPACITY,MFT_STRING,MFS_ENABLED - MENUITEM MFT_SEPARATOR - MENUITEM "Enable Greenzoning", ID_CONFIG_ENABLEGREENZONING,MFT_STRING,MFS_ENABLED - MENUITEM "Autofire Pattern skips Lag", ID_CONFIG_PATTERNSKIPSLAG,MFT_STRING,MFS_ENABLED - MENUITEM "Auto-adjust Input according to Lag", ID_CONFIG_ADJUSTLAG,MFT_STRING,MFS_ENABLED - MENUITEM MFT_SEPARATOR - MENUITEM "Draw Input by dragging", ID_CONFIG_DRAWINPUTBYDRAGGING,MFT_STRING,MFS_ENABLED - MENUITEM "Combine consecutive Recordings/Draws", ID_CONFIG_COMBINECONSECUTIVERECORDINGS,MFT_STRING,MFS_ENABLED - MENUITEM "Use 1P keys for all single Recordings", ID_CONFIG_USE1PFORRECORDING,MFT_STRING,MFS_ENABLED - MENUITEM "Use Input keys for Column Set", ID_CONFIG_USEINPUTKEYSFORCOLUMNSET,MFT_STRING,MFS_ENABLED - MENUITEM MFT_SEPARATOR - MENUITEM "Bind Markers to Input", ID_CONFIG_BINDMARKERSTOINPUT,MFT_STRING,MFS_ENABLED - MENUITEM "Empty new Marker Notes", ID_CONFIG_EMPTYNEWMARKERNOTES,MFT_STRING,MFS_ENABLED - MENUITEM MFT_SEPARATOR - MENUITEM "Old control scheme for Branching", ID_CONFIG_OLDBRANCHINGCONTROLS,MFT_STRING,MFS_ENABLED - MENUITEM "Branches restore entire Movie", ID_CONFIG_BRANCHESRESTOREFULLMOVIE,MFT_STRING,MFS_ENABLED - MENUITEM "HUD in Branch screenshots", ID_CONFIG_HUDINBRANCHSCREENSHOTS,MFT_STRING,MFS_ENABLED - MENUITEM MFT_SEPARATOR - MENUITEM "Autopause at the end of Movie", ID_CONFIG_AUTOPAUSEATTHEENDOFMOVIE,MFT_STRING,MFS_ENABLED - END - POPUP "Help", 65535,MFT_STRING,MFS_ENABLED - BEGIN - MENUITEM "Open TAS Editor Manual", ID_HELP_OPEN_MANUAL,MFT_STRING,MFS_ENABLED - MENUITEM "Enable Tooltips", ID_HELP_TOOLTIPS,MFT_STRING,MFS_ENABLED - MENUITEM MFT_SEPARATOR - MENUITEM "About", ID_HELP_ABOUT,MFT_STRING,MFS_ENABLED - END - POPUP "Pattern", 65535,MFT_STRING | MFT_RIGHTJUSTIFY,MFS_ENABLED - BEGIN - MENUITEM "Dummy", ID_PATTERN_TEST,MFT_STRING,MFS_ENABLED - END -END - -MEMVIEWMENU MENU -BEGIN - POPUP "&File" - BEGIN - MENUITEM "&Save Rom", MENU_MV_FILE_SAVE - MENUITEM "S&ave Rom As...", MENU_MV_FILE_SAVE_AS - MENUITEM "&Load *.TBL File", MENU_MV_FILE_LOAD_TBL - MENUITEM "&Unload *.TBL file", MENU_MV_FILE_UNLOAD_TBL - POPUP "&Dump to file" - BEGIN - MENUITEM "&Ram", MENU_MV_FILE_DUMP_RAM - MENUITEM "&PPU Memory", MENU_MV_FILE_DUMP_PPU - MENUITEM "&OAM Memory", MENU_MV_FILE_DUMP_OAM - MENUITEM "6502 64K", MENU_MV_FILE_DUMP_64K - END - POPUP "Load from &file" - BEGIN - MENUITEM "&Ram", MENU_MV_FILE_LOAD_RAM - MENUITEM "&PPU Memory", MENU_MV_FILE_LOAD_PPU - MENUITEM "&OAM Memory", MENU_MV_FILE_LOAD_OAM - END - MENUITEM "&Goto Address\tCtrl+A", MENU_MV_FILE_GOTO_ADDRESS - MENUITEM SEPARATOR - MENUITEM "&Close\tAlt+F4", ID_MEMWVIEW_FILE_CLOSE - END - POPUP "&Edit" - BEGIN - MENUITEM "&Undo\tCtrl+Z", MENU_MV_EDIT_UNDO - MENUITEM SEPARATOR - MENUITEM "&Copy", MENU_MV_EDIT_COPY - MENUITEM "&Paste", MENU_MV_EDIT_PASTE - MENUITEM SEPARATOR - MENUITEM "&Find...", MENU_MV_EDIT_FIND - END - POPUP "&View" - BEGIN - MENUITEM "&NES Memory", MENU_MV_VIEW_RAM - MENUITEM "&PPU Memory", MENU_MV_VIEW_PPU - MENUITEM "&OAM Memory", MENU_MV_VIEW_OAM - MENUITEM "&ROM File", MENU_MV_VIEW_ROM - END - POPUP "Highlighting" - BEGIN - MENUITEM "Highlight Activity", ID_HIGHLIGHTING_HIGHLIGHT_ACTIVITY - MENUITEM "Set fading period...", ID_HIGHLIGHTING_SETFADINGPERIOD - MENUITEM "Fade when paused", ID_HIGHLIGHTING_FADEWHENPAUSED - END - POPUP "&Bookmarks" - BEGIN - MENUITEM "&Remove all bookmarks", MENU_MV_BOOKMARKS_RM_ALL - END - POPUP "Help" - BEGIN - MENUITEM "&Help...", MENU_MV_HELP - END -END - -MEMWATCHMENU MENU -BEGIN - POPUP "&File " - BEGIN - MENUITEM "&New...\tCtrl+N", MEMW_FILE_NEW - MENUITEM "&Open...\tCtrl+O", MEMW_FILE_OPEN - MENUITEM "&Save\tCtrl+S", MEMW_FILE_SAVE - MENUITEM "S&ave As..\tCtrl+Shift+S", MEMW_FILE_SAVEAS - MENUITEM "&Recent", ID_FILE_RECENT - MENUITEM SEPARATOR - MENUITEM "&Close\tAlt+F4", MEMW_FILE_CLOSE - END - POPUP "&Options" - BEGIN - MENUITEM "&Load on Startup", MEMW_OPTIONS_LOADSTART - MENUITEM "Load Last &File on Startup", MEMW_OPTIONS_LOADLASTFILE - MENUITEM SEPARATOR - MENUITEM "&Collapse to 1 column", MEMW_OPTIONS_EXPANDCOLLAPSE - MENUITEM SEPARATOR - MENUITEM "Bind to Main Window", ID_OPTIONS_BINDTOMAINWINDOW - END - POPUP "&Help" - BEGIN - MENUITEM "&MemWatch Commands", MEMW_HELP_WCOMMANDS - END -END - -TASEDITORCONTEXTMENUS MENU -BEGIN - POPUP "Selected" - BEGIN - MENUITEM "Set Markers\tDbl-Clk", ID_SELECTED_SETMARKERS - MENUITEM "Remove Markers", ID_SELECTED_REMOVEMARKERS - MENUITEM SEPARATOR - MENUITEM "Deselect", ID_SELECTED_DESELECT - MENUITEM "Select between Markers\tCtrl+A", ID_SELECTED_SELECTMIDMARKERS - MENUITEM SEPARATOR - MENUITEM "Ungreenzone", ID_SELECTED_UNGREENZONE - MENUITEM SEPARATOR - MENUITEM "Clear\tDel", ID_CONTEXT_SELECTED_CLEARFRAMES - MENUITEM "Delete\tCtrl+Del", ID_CONTEXT_SELECTED_DELETEFRAMES - MENUITEM "Clone\tCtrl+Ins", ID_SELECTED_CLONE - MENUITEM "Insert\tCtrl+Shift+Ins", ID_CONTEXT_SELECTED_INSERTFRAMES - MENUITEM "Insert # of Frames\tIns", ID_CONTEXT_SELECTED_INSERTFRAMES2 - MENUITEM SEPARATOR - MENUITEM "Truncate movie", ID_CONTEXT_SELECTED_TRUNCATE - END -END - -FCEUCONTEXTMENUS MENU -BEGIN - POPUP "NoGame" - BEGIN - MENUITEM "Open ROM", FCEU_CONTEXT_OPENROM - MENUITEM "Last ROM used", FCEUX_CONTEXT_RECENTROM1 - MENUITEM SEPARATOR - MENUITEM "Help...", FCEU_CONTEXT_FCEUHELP - MENUITEM SEPARATOR - MENUITEM "Use Config > Gui to get zapper right click", FCEUX_CONTEXT_GUICONFIG - END - POPUP "Game+NoMovie" - BEGIN - MENUITEM "Play Movie...", FCEUX_CONTEXT_REPLAYMOVIE - MENUITEM "Record Movie...", FCEUX_CONTEXT_RECORDMOVIE - MENUITEM "Load Last Movie", FCEUX_CONTEXT_LOADLASTMOVIE - MENUITEM SEPARATOR - MENUITEM "Undo savestate", FCEUX_CONTEXT_UNDOSAVESTATE - MENUITEM "Undo loadstate", FCEUX_CONTEXT_UNDOLOADSTATE - MENUITEM "Rewind to last auto-save", FCEUX_CONTEXT_REWINDTOLASTAUTO - MENUITEM "Screenshot", FCEUX_CONTEXT_SCREENSHOT - MENUITEM SEPARATOR - MENUITEM "Close ROM", FCEU_CONTEXT_CLOSEROM - MENUITEM SEPARATOR - MENUITEM "Use Config > Gui to get zapper right click", FCEUX_CONTEXT_GUICONFIG - END - POPUP "Game+Movie+Playing+readonly" - BEGIN - MENUITEM "Toggle to read+write", FCEUX_CONTEXT_READONLYTOGGLE - MENUITEM "Play Movie from Beginning", FCEU_CONTEXT_PLAYMOVIEFROMBEGINNING - MENUITEM "Stop Movie Replay", FCEU_CONTEXT_STOPMOVIE - MENUITEM "View comments and subtitles", FCEUX_CONTEXT_VIEWCOMMENTSSUBTITLES - MENUITEM SEPARATOR - MENUITEM "Toggle to Recording", FCEUX_CONTEXT_TOGGLE_RECORDING - POPUP "Modify Movie" - BEGIN - MENUITEM "Insert 1 Frame", FCEUX_CONTEXT_INSERT_1_FRAME - MENUITEM "Delete 1 Frame", FCEUX_CONTEXT_DELETE_1_FRAME - MENUITEM SEPARATOR - MENUITEM "Truncate at Current Frame", FCEUX_CONTEXT_TRUNCATE_MOVIE - END - POPUP "Record Mode" - BEGIN - MENUITEM "&Truncate", FCEUX_CONTEXT_RECORDMODE_TRUNCATE - MENUITEM "&Overwrite[W]", FCEUX_CONTEXT_RECORDMODE_OVERWRITE - MENUITEM "&Insert[I]", FCEUX_CONTEXT_RECORDMODE_INSERT - END - MENUITEM SEPARATOR - MENUITEM "Undo savestate", FCEUX_CONTEXT_UNDOSAVESTATE - MENUITEM "Rewind to last auto-save", FCEUX_CONTEXT_REWINDTOLASTAUTO - MENUITEM SEPARATOR - MENUITEM "Help....", FCEU_CONTEXT_MOVIEHELP - MENUITEM SEPARATOR - MENUITEM "Use Config > Gui to get zapper right click", FCEUX_CONTEXT_GUICONFIG - END - POPUP "Game+Movie+Playing+readwrite" - BEGIN - MENUITEM "Toggle to Read-only", FCEUX_CONTEXT_READONLYTOGGLE - MENUITEM "Play Movie From Beginning", FCEU_CONTEXT_PLAYMOVIEFROMBEGINNING - MENUITEM "Stop Movie Replay", FCEU_CONTEXT_STOPMOVIE - MENUITEM "View comments and subtitles", FCEUX_CONTEXT_VIEWCOMMENTSSUBTITLES - MENUITEM "Make backup", FCEUX_CONTEXT_MAKEBACKUP - MENUITEM "Save Movie As...", FCEUX_CONTEXT_SAVEMOVIEAS - MENUITEM SEPARATOR - MENUITEM "Toggle to Recording", FCEUX_CONTEXT_TOGGLE_RECORDING - POPUP "Modify Movie" - BEGIN - MENUITEM "Insert 1 Frame", FCEUX_CONTEXT_INSERT_1_FRAME - MENUITEM "Delete 1 Frame", FCEUX_CONTEXT_DELETE_1_FRAME - MENUITEM SEPARATOR - MENUITEM "Truncate at Current Frame", FCEUX_CONTEXT_TRUNCATE_MOVIE - END - POPUP "Record Mode" - BEGIN - MENUITEM "&Truncate", FCEUX_CONTEXT_RECORDMODE_TRUNCATE - MENUITEM "&Overwrite[W]", FCEUX_CONTEXT_RECORDMODE_OVERWRITE - MENUITEM "&Insert[I]", FCEUX_CONTEXT_RECORDMODE_INSERT - END - MENUITEM SEPARATOR - MENUITEM "Undo savestate", FCEUX_CONTEXT_UNDOSAVESTATE - MENUITEM "Undo loadstate", FCEUX_CONTEXT_UNDOLOADSTATE - MENUITEM "Rewind to last auto-save", FCEUX_CONTEXT_REWINDTOLASTAUTO - MENUITEM SEPARATOR - MENUITEM "&Mode: Full state-movie loads", ID_CONTEXT_FULLSAVESTATES - MENUITEM SEPARATOR - MENUITEM "Help...", FCEU_CONTEXT_MOVIEHELP - MENUITEM SEPARATOR - MENUITEM "Use Config > Gui to get zapper right click", FCEUX_CONTEXT_GUICONFIG - END - POPUP "Game+Movie+Recording+readonly" - BEGIN - MENUITEM "Toggle to read+write", FCEUX_CONTEXT_READONLYTOGGLE - MENUITEM "Play Movie from Beginning", FCEU_CONTEXT_PLAYMOVIEFROMBEGINNING - MENUITEM "Stop Movie Recording", FCEU_CONTEXT_STOPMOVIE - MENUITEM "View comments and subtitles", FCEUX_CONTEXT_VIEWCOMMENTSSUBTITLES - MENUITEM SEPARATOR - MENUITEM "Toggle to Playing", FCEUX_CONTEXT_TOGGLE_RECORDING - POPUP "Modify Movie" - BEGIN - MENUITEM "Insert 1 Frame", FCEUX_CONTEXT_INSERT_1_FRAME - MENUITEM "Delete 1 Frame", FCEUX_CONTEXT_DELETE_1_FRAME - MENUITEM SEPARATOR - MENUITEM "Truncate at Current Frame", FCEUX_CONTEXT_TRUNCATE_MOVIE - END - POPUP "Record Mode" - BEGIN - MENUITEM "&Truncate", FCEUX_CONTEXT_RECORDMODE_TRUNCATE - MENUITEM "&Overwrite[W]", FCEUX_CONTEXT_RECORDMODE_OVERWRITE - MENUITEM "&Insert[I]", FCEUX_CONTEXT_RECORDMODE_INSERT - END - MENUITEM SEPARATOR - MENUITEM "Undo savestate", FCEUX_CONTEXT_UNDOSAVESTATE - MENUITEM "Rewind to last auto-save", FCEUX_CONTEXT_REWINDTOLASTAUTO - MENUITEM SEPARATOR - MENUITEM "Help....", FCEU_CONTEXT_MOVIEHELP - MENUITEM SEPARATOR - MENUITEM "Use Config > Gui to get zapper right click", FCEUX_CONTEXT_GUICONFIG - END - POPUP "Game+Movie+Recording+readwrite" - BEGIN - MENUITEM "Toggle to Read-only", FCEUX_CONTEXT_READONLYTOGGLE - MENUITEM "Play Movie From Beginning", FCEU_CONTEXT_PLAYMOVIEFROMBEGINNING - MENUITEM "Stop Movie Recording", FCEU_CONTEXT_STOPMOVIE - MENUITEM "View comments and subtitles", FCEUX_CONTEXT_VIEWCOMMENTSSUBTITLES - MENUITEM "Make backup", FCEUX_CONTEXT_MAKEBACKUP - MENUITEM "Save Movie As...", FCEUX_CONTEXT_SAVEMOVIEAS - MENUITEM SEPARATOR - MENUITEM "Toggle to Playing", FCEUX_CONTEXT_TOGGLE_RECORDING - POPUP "Modify Movie" - BEGIN - MENUITEM "Insert 1 Frame", FCEUX_CONTEXT_INSERT_1_FRAME - MENUITEM "Delete 1 Frame", FCEUX_CONTEXT_DELETE_1_FRAME - MENUITEM SEPARATOR - MENUITEM "Truncate at Current Frame", FCEUX_CONTEXT_TRUNCATE_MOVIE - END - POPUP "Record Mode" - BEGIN - MENUITEM "&Truncate", FCEUX_CONTEXT_RECORDMODE_TRUNCATE - MENUITEM "&Overwrite[W]", FCEUX_CONTEXT_RECORDMODE_OVERWRITE - MENUITEM "&Insert[I]", FCEUX_CONTEXT_RECORDMODE_INSERT - END - MENUITEM SEPARATOR - MENUITEM "Undo savestate", FCEUX_CONTEXT_UNDOSAVESTATE - MENUITEM "Undo loadstate", FCEUX_CONTEXT_UNDOLOADSTATE - MENUITEM "Rewind to last auto-save", FCEUX_CONTEXT_REWINDTOLASTAUTO - MENUITEM SEPARATOR - MENUITEM "&Mode: Full state-movie loads", ID_CONTEXT_FULLSAVESTATES - MENUITEM SEPARATOR - MENUITEM "Help...", FCEU_CONTEXT_MOVIEHELP - MENUITEM SEPARATOR - MENUITEM "Use Config > Gui to get zapper right click", FCEUX_CONTEXT_GUICONFIG - END -END - -RAMWATCH_MENU MENU -BEGIN - POPUP "File" - BEGIN - MENUITEM "&New list\tCtrl N", RAMMENU_FILE_NEW - MENUITEM "&Open...\tCtrl O", RAMMENU_FILE_OPEN - MENUITEM "&Save\tCtrl S", RAMMENU_FILE_SAVE - MENUITEM "Sa&ve As...\tCtrl Shift S", RAMMENU_FILE_SAVEAS - MENUITEM "&Append file...", RAMMENU_FILE_APPEND - MENUITEM "Recent", RAMMENU_FILE_RECENT - MENUITEM SEPARATOR - MENUITEM "Auto-&load", RAMMENU_FILE_AUTOLOAD - MENUITEM "Save Window Position", RAMMENU_FILE_SAVEWINDOW - MENUITEM SEPARATOR - MENUITEM "&Close\tAlt F4", IDCANCEL - END - POPUP "Watches" - BEGIN - MENUITEM "&New Watch\tN", IDC_C_WATCH - MENUITEM "&Edit Watch\tE", IDC_C_WATCH_EDIT - MENUITEM "&Remove Watch\tR", IDC_C_WATCH_REMOVE - MENUITEM "Duplicate Watch\tA", IDC_C_WATCH_DUPLICATE - MENUITEM "Add &Separator\tS", IDC_C_WATCH_SEPARATE - MENUITEM SEPARATOR - MENUITEM "Move Up\tU", IDC_C_WATCH_UP - MENUITEM "Move Down\tD", IDC_C_WATCH_DOWN - END -END - -CHEATCONTEXTMENUS MENU -BEGIN - POPUP "CheatListPopup" - BEGIN - MENUITEM "Toggle selected Cheats\tDbl-Clk", CHEAT_CONTEXT_TOGGLECHEAT - MENUITEM "Poke Cheat Value", CHEAT_CONTEXT_POKECHEATVALUE - MENUITEM "Goto in Hex Editor", CHEAT_CONTEXT_GOTOINHEXEDITOR - MENUITEM "Delete selected Cheats", ID_CHEATLISTPOPUP_DELETESELECTEDCHEATS - END -END - -DEBUGCONTEXTMENUS MENU -BEGIN - POPUP "DebugListPopup" - BEGIN - MENUITEM "Toggle Breakpoint\tDbl-Clk", DEBUGGER_CONTEXT_TOGGLEBREAK - END -END - -LUAWINDOW_MENU MENU -BEGIN - POPUP "Console" - BEGIN - MENUITEM "&Font...", IDC_LUACONSOLE_CHOOSEFONT - MENUITEM "Clear", IDC_LUACONSOLE_CLEAR - END -END - -DISASMCONTEXTMENUS MENU -BEGIN - POPUP "DisasmPopup" - BEGIN - MENUITEM "Copy\tCtrl+C", DISASM_CONTEXT_COPY - MENUITEM "Select All\tCtrl+A", DISASM_CONTEXT_SELECTALL - END -END - - ///////////////////////////////////////////////////////////////////////////// // // AFX_DIALOG_LAYOUT @@ -2407,166 +2481,17 @@ BEGIN 0 END -#endif // 非特定语言 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 -#pragma code_page(1252) - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_REPLAY_METADATA DIALOGEX 0, 0, 325, 250 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Movie Metadata" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 +IDD_EDITWATCH AFX_DIALOG_LAYOUT BEGIN - DEFPUSHBUTTON "Close",IDCANCEL,268,229,50,14 - CONTROL "",IDC_LIST1,"SysListView32",LVS_REPORT | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,7,7,311,214 + 0 END -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - "IDD_REPLAY_METADATA", DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 318 - TOPMARGIN, 7 - BOTTOMMARGIN, 243 - END -END -#endif // APSTUDIO_INVOKED - - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxres.h""\r\0" -END - -#endif // APSTUDIO_INVOKED - - ///////////////////////////////////////////////////////////////////////////// // // Accelerator @@ -2737,7 +2662,41 @@ 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(U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\0" +END + +#endif // APSTUDIO_INVOKED + +#endif // English(U.S.) resources ///////////////////////////////////////////////////////////////////////////// @@ -2747,7 +2706,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 8c8adc06..a94b891b 100644 --- a/src/drivers/win/resource.h +++ b/src/drivers/win/resource.h @@ -195,7 +195,6 @@ #define IDD_RAMSEARCH 154 #define IDD_RAMWATCH 155 #define IDD_EDITWATCH 156 -#define IDD_PROMPT 157 #define IDR_RWACCELERATOR 158 #define IDD_LUA 159 #define IDB_BITMAP0 163 @@ -789,6 +788,8 @@ #define IDC_AUTOSAVE_PERIOD_MINUTES_TEXT 1307 #define IDC_VBLANK_SCANLINES_TEXT 1308 #define IDC_EXTRA_SCANLINES_TEXT 1309 +#define IDC_DATASIZE_GROUPBOX 1310 +#define IDC_DATATYPE_GROUPBOX 1311 #define MENU_NETWORK 40040 #define MENU_PALETTE 40041 #define MENU_SOUND 40042 @@ -1282,9 +1283,9 @@ // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 302 +#define _APS_NEXT_RESOURCE_VALUE 303 #define _APS_NEXT_COMMAND_VALUE 40600 -#define _APS_NEXT_CONTROL_VALUE 1310 +#define _APS_NEXT_CONTROL_VALUE 1312 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif