Revert "Revert "Some ui interface logic changes and improvements.""
This reverts commit d48105e97d
.
This commit is contained in:
parent
82be140eee
commit
5eb6cc31c9
|
@ -964,3 +964,20 @@ void UpdateFrozenList(void)
|
||||||
}
|
}
|
||||||
//FCEUI_DispMessage("FrozenCount: %d",0,FrozenAddressCount);//Debug
|
//FCEUI_DispMessage("FrozenCount: %d",0,FrozenAddressCount);//Debug
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// disable all cheats
|
||||||
|
int FCEU_DisableAllCheats(){
|
||||||
|
int count = 0;
|
||||||
|
struct CHEATF *next=cheats;
|
||||||
|
while(next)
|
||||||
|
{
|
||||||
|
if(next->status){
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
next->status = 0;
|
||||||
|
next = next->next;
|
||||||
|
}
|
||||||
|
savecheats=1;
|
||||||
|
RebuildSubCheats();
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
|
@ -9,4 +9,6 @@ void FCEU_PowerCheats(void);
|
||||||
int FCEU_CheatGetByte(uint32 A);
|
int FCEU_CheatGetByte(uint32 A);
|
||||||
void FCEU_CheatSetByte(uint32 A, uint8 V);
|
void FCEU_CheatSetByte(uint32 A, uint8 V);
|
||||||
|
|
||||||
extern int savecheats;
|
extern int savecheats;
|
||||||
|
|
||||||
|
int FCEU_DisableAllCheats();
|
|
@ -275,6 +275,9 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// indicator for the open in archive dialog that if the load was canceled by the user.
|
||||||
|
// TODO: Since I can't think of a better way to indicate it, hope someone could imporve it.
|
||||||
|
bool archiveManuallyCanceled;
|
||||||
|
|
||||||
static BOOL CALLBACK ArchiveFileSelectorCallback(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
static BOOL CALLBACK ArchiveFileSelectorCallback(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
|
@ -282,6 +285,8 @@ static BOOL CALLBACK ArchiveFileSelectorCallback(HWND hwndDlg, UINT uMsg, WPARAM
|
||||||
{
|
{
|
||||||
case WM_INITDIALOG:
|
case WM_INITDIALOG:
|
||||||
{
|
{
|
||||||
|
// TODO: find a better way to do this.
|
||||||
|
archiveManuallyCanceled = false;
|
||||||
HWND hwndListbox = GetDlgItem(hwndDlg,IDC_LIST1);
|
HWND hwndListbox = GetDlgItem(hwndDlg,IDC_LIST1);
|
||||||
for(uint32 i=0;i<currFileSelectorContext->size();i++)
|
for(uint32 i=0;i<currFileSelectorContext->size();i++)
|
||||||
{
|
{
|
||||||
|
@ -307,6 +312,9 @@ static BOOL CALLBACK ArchiveFileSelectorCallback(HWND hwndDlg, UINT uMsg, WPARAM
|
||||||
|
|
||||||
case IDCANCEL:
|
case IDCANCEL:
|
||||||
EndDialog(hwndDlg, LB_ERR);
|
EndDialog(hwndDlg, LB_ERR);
|
||||||
|
// Tell the parent window that the operation was canceled rather than loading error
|
||||||
|
// TODO: find a better way to do this.
|
||||||
|
archiveManuallyCanceled = true;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -901,6 +901,7 @@ BOOL CALLBACK GGConvCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
|
|
||||||
EnableWindow(GetDlgItem(hCheat,IDC_BTN_CHEAT_DEL),TRUE);
|
EnableWindow(GetDlgItem(hCheat,IDC_BTN_CHEAT_DEL),TRUE);
|
||||||
EnableWindow(GetDlgItem(hCheat,IDC_BTN_CHEAT_UPD),TRUE);
|
EnableWindow(GetDlgItem(hCheat,IDC_BTN_CHEAT_UPD),TRUE);
|
||||||
|
UpdateCheatsAdded();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1026,4 +1027,31 @@ void DoGGConv()
|
||||||
void ListBox::OnRButtonDown(UINT nFlags, CPoint point)
|
void ListBox::OnRButtonDown(UINT nFlags, CPoint point)
|
||||||
{
|
{
|
||||||
CPoint test = point;
|
CPoint test = point;
|
||||||
} */
|
} */
|
||||||
|
|
||||||
|
void DisableAllCheats()
|
||||||
|
{
|
||||||
|
if(!FCEU_DisableAllCheats() || !hCheat){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
int selcheattemp = SendDlgItemMessage(hCheat, IDC_LIST_CHEATS, LB_GETCOUNT, 0, 0) - 1;
|
||||||
|
LRESULT sel; char str[259];
|
||||||
|
while(selcheattemp >= 0)
|
||||||
|
{
|
||||||
|
SendDlgItemMessage(hCheat,IDC_LIST_CHEATS,LB_GETTEXT,selcheattemp, (LPARAM)(LPCTSTR)str);
|
||||||
|
if(str[0] == '*')
|
||||||
|
{
|
||||||
|
sel = SendDlgItemMessage(hCheat,IDC_LIST_CHEATS,LB_GETSEL,selcheattemp,0);
|
||||||
|
str[0] = ' ';
|
||||||
|
SendDlgItemMessage(hCheat,IDC_LIST_CHEATS,LB_DELETESTRING,selcheattemp,0);
|
||||||
|
SendDlgItemMessage(hCheat,IDC_LIST_CHEATS,LB_INSERTSTRING,selcheattemp, (LPARAM)(LPSTR)str);
|
||||||
|
if(sel)
|
||||||
|
{
|
||||||
|
SendDlgItemMessage(hCheat,IDC_LIST_CHEATS,LB_SETSEL,1,selcheattemp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
selcheattemp--;
|
||||||
|
}
|
||||||
|
sprintf(str, "Active Cheats %d", 0);
|
||||||
|
SetDlgItemText(hCheat, 201, str);
|
||||||
|
}
|
|
@ -14,3 +14,5 @@ void UpdateCheatsAdded();
|
||||||
extern unsigned int FrozenAddressCount;
|
extern unsigned int FrozenAddressCount;
|
||||||
extern std::vector<uint16> FrozenAddresses;
|
extern std::vector<uint16> FrozenAddresses;
|
||||||
//void ConfigAddCheat(HWND wnd); //bbit edited:commented out this line
|
//void ConfigAddCheat(HWND wnd); //bbit edited:commented out this line
|
||||||
|
|
||||||
|
void DisableAllCheats();
|
|
@ -143,9 +143,11 @@ static BOOL CALLBACK DirConCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM
|
||||||
"Base Directory",
|
"Base Directory",
|
||||||
};
|
};
|
||||||
|
|
||||||
char name[MAX_PATH];
|
char name[MAX_PATH];
|
||||||
|
char path[MAX_PATH];
|
||||||
|
GetDlgItemText(hwndDlg, EDIT_ROMS + ((wParam & 0xFFFF) - BUTTON_ROMS), path, MAX_PATH);
|
||||||
|
|
||||||
if(BrowseForFolder(hwndDlg, helpert[ ( (wParam & 0xFFFF) - BUTTON_ROMS)], name))
|
if(BrowseForFolder(hwndDlg, helpert[ ( (wParam & 0xFFFF) - BUTTON_ROMS)], name, path))
|
||||||
{
|
{
|
||||||
SetDlgItemText(hwndDlg, EDIT_ROMS + ((wParam & 0xFFFF) - BUTTON_ROMS), name);
|
SetDlgItemText(hwndDlg, EDIT_ROMS + ((wParam & 0xFFFF) - BUTTON_ROMS), name);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
#include <commctrl.h>
|
#include <commctrl.h>
|
||||||
#include <shlobj.h> // For directories configuration dialog.
|
#include <shlobj.h> // For directories configuration dialog.
|
||||||
|
|
||||||
|
int CALLBACK SHBrowseForFolderCallbackProc(HWND, UINT, LPARAM, LPARAM);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Centers a window relative to its parent window.
|
* Centers a window relative to its parent window.
|
||||||
*
|
*
|
||||||
|
@ -96,18 +98,26 @@ void ShowCursorAbs(int set_visible)
|
||||||
*
|
*
|
||||||
* @return 0 or 1 to indicate failure or success.
|
* @return 0 or 1 to indicate failure or success.
|
||||||
**/
|
**/
|
||||||
int BrowseForFolder(HWND hParent, const char *htext, char *buf)
|
int BrowseForFolder(HWND hParent, const char *htext, char *buf, char* defPath = NULL)
|
||||||
{
|
{
|
||||||
BROWSEINFO bi;
|
BROWSEINFO bi;
|
||||||
LPCITEMIDLIST pidl;
|
LPCITEMIDLIST pidl;
|
||||||
|
|
||||||
buf[0] = 0;
|
|
||||||
|
|
||||||
memset(&bi, 0, sizeof(bi));
|
memset(&bi, 0, sizeof(bi));
|
||||||
|
|
||||||
bi.hwndOwner = hParent;
|
bi.hwndOwner = hParent;
|
||||||
bi.lpszTitle = htext;
|
bi.lpszTitle = htext;
|
||||||
bi.ulFlags = BIF_RETURNONLYFSDIRS;
|
bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_EDITBOX;
|
||||||
|
|
||||||
|
if(defPath == NULL || defPath[0] == '\0')
|
||||||
|
{
|
||||||
|
char currentDir[MAX_PATH];
|
||||||
|
GetCurrentDirectory(MAX_PATH, currentDir);
|
||||||
|
bi.lParam = (LPARAM)currentDir;
|
||||||
|
} else {
|
||||||
|
bi.lParam = (LPARAM)defPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
bi.lpfn = SHBrowseForFolderCallbackProc;
|
||||||
|
|
||||||
if(FAILED(CoInitialize(0)))
|
if(FAILED(CoInitialize(0)))
|
||||||
{
|
{
|
||||||
|
@ -134,4 +144,9 @@ int BrowseForFolder(HWND hParent, const char *htext, char *buf)
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
// Automatically expand to the configured folder.
|
||||||
|
int CALLBACK SHBrowseForFolderCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData) {
|
||||||
|
if(uMsg == BFFM_INITIALIZED)
|
||||||
|
SendMessage(hwnd, BFFM_SETSELECTION, TRUE, (LPARAM)(const char*)lpData);
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
void ShowCursorAbs(int set_visible);
|
void ShowCursorAbs(int set_visible);
|
||||||
int BrowseForFolder(HWND hParent, const char *htext, char *buf);
|
int BrowseForFolder(HWND hParent, const char *htext, char *buf, char* defPath = NULL);
|
||||||
void CenterWindow(HWND hwndDlg);
|
void CenterWindow(HWND hwndDlg);
|
||||||
void CenterWindowOnScreen(HWND hwnd);
|
void CenterWindowOnScreen(HWND hwnd);
|
||||||
|
|
|
@ -1202,6 +1202,9 @@ static void UpdateFourscoreState(HWND dlg)
|
||||||
SetDlgItemText(dlg,TXT_PAD1,ESI_Name(SI_GAMEPAD));
|
SetDlgItemText(dlg,TXT_PAD1,ESI_Name(SI_GAMEPAD));
|
||||||
SetDlgItemText(dlg,TXT_PAD2,ESI_Name(SI_GAMEPAD));
|
SetDlgItemText(dlg,TXT_PAD2,ESI_Name(SI_GAMEPAD));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EnableWindow(GetDlgItem(dlg,102), enable);
|
||||||
|
EnableWindow(GetDlgItem(dlg,103), enable);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Callback function of the input configuration dialog.
|
//Callback function of the input configuration dialog.
|
||||||
|
@ -1302,7 +1305,7 @@ BOOL CALLBACK InputConCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
|
||||||
char btext[128];
|
char btext[128];
|
||||||
if (autoHoldKey)
|
if (autoHoldKey)
|
||||||
{
|
{
|
||||||
if (!GetKeyNameText(autoHoldKey << 16, btext, 128))
|
if (!GetKeyNameText((autoHoldKey & 0x7F) << 16 | (autoHoldKey & 0x80) << 17, btext, 128))
|
||||||
sprintf(btext, "KB: %d", autoHoldKey);
|
sprintf(btext, "KB: %d", autoHoldKey);
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
|
@ -1483,7 +1486,7 @@ BOOL CALLBACK InputConCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
|
||||||
|
|
||||||
if(button)
|
if(button)
|
||||||
{
|
{
|
||||||
if(!GetKeyNameText(button << 16, btext, 128))
|
if(!GetKeyNameText((button & 0x7F) << 16 | (button & 0x80) << 17, btext, 128))
|
||||||
{
|
{
|
||||||
sprintf(btext, "KB: %d", button);
|
sprintf(btext, "KB: %d", button);
|
||||||
}
|
}
|
||||||
|
@ -1509,7 +1512,7 @@ BOOL CALLBACK InputConCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
|
||||||
|
|
||||||
if(button)
|
if(button)
|
||||||
{
|
{
|
||||||
if( !GetKeyNameText(button << 16, btext, sizeof(btext)))
|
if( !GetKeyNameText((button & 0x7F) << 16 | (button & 0x80 << 17), btext, sizeof(btext)))
|
||||||
{
|
{
|
||||||
sprintf(btext, "KB: %d", button);
|
sprintf(btext, "KB: %d", button);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "tracer.h"
|
#include "tracer.h"
|
||||||
|
|
||||||
static HWND logwin = 0;
|
HWND logwin = 0;
|
||||||
|
|
||||||
static char *logtext[MAXIMUM_NUMBER_OF_LOGS];
|
static char *logtext[MAXIMUM_NUMBER_OF_LOGS];
|
||||||
static int logcount=0;
|
static int logcount=0;
|
||||||
|
|
|
@ -354,16 +354,51 @@ int BlockingCheck()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!handled && taseditorWindow.hwndTASEditor && taseditorEnableAcceleratorKeys)
|
if(!handled && taseditorWindow.hwndTASEditor)
|
||||||
{
|
{
|
||||||
if(IsChild(taseditorWindow.hwndTASEditor, msg.hwnd))
|
if(taseditorEnableAcceleratorKeys)
|
||||||
handled = TranslateAccelerator(taseditorWindow.hwndTASEditor, fceu_hAccel, &msg);
|
if(IsChild(taseditorWindow.hwndTASEditor, msg.hwnd))
|
||||||
|
handled = TranslateAccelerator(taseditorWindow.hwndTASEditor, fceu_hAccel, &msg);
|
||||||
|
if(!handled && taseditorWindow.hwndTASEditor){
|
||||||
|
handled = IsDialogMessage(taseditorWindow.hwndTASEditor, &msg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(!handled && taseditorWindow.hwndFindNote)
|
if(!handled && taseditorWindow.hwndFindNote)
|
||||||
{
|
{
|
||||||
if(IsChild(taseditorWindow.hwndFindNote, msg.hwnd))
|
if(IsChild(taseditorWindow.hwndFindNote, msg.hwnd))
|
||||||
handled = IsDialogMessage(taseditorWindow.hwndFindNote, &msg);
|
handled = IsDialogMessage(taseditorWindow.hwndFindNote, &msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern HWND uug;
|
||||||
|
if(!handled && uug && IsChild(uug, msg.hwnd))
|
||||||
|
handled = IsDialogMessage(uug, &msg);
|
||||||
|
if(!handled && pwindow && IsChild(pwindow, msg.hwnd))
|
||||||
|
handled = IsDialogMessage(pwindow, &msg);
|
||||||
|
if(!handled && hCDLogger && IsChild(hCDLogger, msg.hwnd))
|
||||||
|
handled = IsDialogMessage(hCDLogger, &msg);
|
||||||
|
if(!handled && hTracer && IsChild(hTracer, msg.hwnd))
|
||||||
|
handled = IsDialogMessage(hTracer, &msg);
|
||||||
|
extern HWND hGGConv;
|
||||||
|
if(!handled && hGGConv && IsChild(hGGConv, msg.hwnd))
|
||||||
|
handled = IsDialogMessage(hGGConv, &msg);
|
||||||
|
if(!handled && hDebug && IsChild(hDebug, msg.hwnd))
|
||||||
|
handled = IsDialogMessage(hDebug, &msg);
|
||||||
|
extern HWND hPPUView;
|
||||||
|
if(!handled && hPPUView && IsChild(hPPUView, msg.hwnd))
|
||||||
|
handled = IsDialogMessage(hPPUView, &msg);
|
||||||
|
extern HWND hNTView;
|
||||||
|
if(!handled && hNTView && IsChild(hNTView, msg.hwnd))
|
||||||
|
handled = IsDialogMessage(hNTView, &msg);
|
||||||
|
extern HWND hTextHooker;
|
||||||
|
if(!handled && hTextHooker && IsChild(hTextHooker, msg.hwnd))
|
||||||
|
handled = IsDialogMessage(hTextHooker, &msg);
|
||||||
|
extern HWND LuaConsoleHWnd;
|
||||||
|
if(!handled && LuaConsoleHWnd && IsChild(LuaConsoleHWnd, msg.hwnd))
|
||||||
|
handled = IsDialogMessage(LuaConsoleHWnd, &msg);
|
||||||
|
extern HWND logwin;
|
||||||
|
if(!handled && logwin && IsChild(logwin, msg.hwnd))
|
||||||
|
handled = IsDialogMessage(logwin, &msg);
|
||||||
|
|
||||||
/* //adelikat - Currently no accel keys are used in the main window. Uncomment this block to activate them.
|
/* //adelikat - Currently no accel keys are used in the main window. Uncomment this block to activate them.
|
||||||
if(!handled)
|
if(!handled)
|
||||||
if(msg.hwnd == hAppWnd)
|
if(msg.hwnd == hAppWnd)
|
||||||
|
@ -711,8 +746,6 @@ int main(int argc,char *argv[])
|
||||||
fullscreen=0;
|
fullscreen=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
CreateMainWindow();
|
|
||||||
|
|
||||||
// Do single instance coding, since we now know if the user wants it,
|
// Do single instance coding, since we now know if the user wants it,
|
||||||
// and we have a source window to send from
|
// and we have a source window to send from
|
||||||
// http://wiki.github.com/ffi/ffi/windows-examples
|
// http://wiki.github.com/ffi/ffi/windows-examples
|
||||||
|
@ -741,12 +774,17 @@ int main(int argc,char *argv[])
|
||||||
{
|
{
|
||||||
//kill this one, activate the other one
|
//kill this one, activate the other one
|
||||||
SetActiveWindow(DoInstantiatedExitWindow);
|
SetActiveWindow(DoInstantiatedExitWindow);
|
||||||
|
if(IsIconic(DoInstantiatedExitWindow))
|
||||||
|
ShowWindow(DoInstantiatedExitWindow, SW_RESTORE);
|
||||||
|
SetForegroundWindow(DoInstantiatedExitWindow);
|
||||||
do_exit();
|
do_exit();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CreateMainWindow();
|
||||||
|
|
||||||
if(!InitDInput())
|
if(!InitDInput())
|
||||||
{
|
{
|
||||||
do_exit();
|
do_exit();
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#include "../../input.h"
|
#include "../../input.h"
|
||||||
#include <commctrl.h>
|
#include <commctrl.h>
|
||||||
#include "window.h"
|
#include "window.h"
|
||||||
|
#include "taseditor/taseditor_window.h"
|
||||||
|
|
||||||
void KeyboardUpdateState(void); //mbg merge 7/17/06 yech had to add this
|
void KeyboardUpdateState(void); //mbg merge 7/17/06 yech had to add this
|
||||||
|
|
||||||
|
@ -689,7 +690,11 @@ BOOL CALLBACK MapInputDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM
|
||||||
PopulateMappingDisplay(hwndDlg);
|
PopulateMappingDisplay(hwndDlg);
|
||||||
|
|
||||||
// Autosize last column.
|
// Autosize last column.
|
||||||
SendMessage(hwndListView, LVM_SETCOLUMNWIDTH, (WPARAM)2, MAKELPARAM(LVSCW_AUTOSIZE_USEHEADER, 0));
|
SendMessage(hwndListView, LVM_SETCOLUMNWIDTH, (WPARAM)2, MAKELPARAM(LVSCW_AUTOSIZE, 0));
|
||||||
|
SendMessage(hwndListView, LVM_SETCOLUMNWIDTH, (WPARAM)1, MAKELPARAM(LVSCW_AUTOSIZE, 0));
|
||||||
|
RECT rect;
|
||||||
|
GetClientRect(hwndListView, &rect);
|
||||||
|
SendMessage(hwndListView, LVM_SETCOLUMNWIDTH, (WPARAM)2, MAKELPARAM(rect.right - rect.left - SendMessage(hwndListView, LVM_GETCOLUMNWIDTH, 0, 0) - SendMessage(hwndListView, LVM_GETCOLUMNWIDTH, 1, 0), 0));
|
||||||
|
|
||||||
CenterWindowOnScreen(hwndDlg);
|
CenterWindowOnScreen(hwndDlg);
|
||||||
}
|
}
|
||||||
|
@ -708,6 +713,10 @@ BOOL CALLBACK MapInputDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM
|
||||||
{
|
{
|
||||||
case IDOK:
|
case IDOK:
|
||||||
UpdateMenuHotkeys();
|
UpdateMenuHotkeys();
|
||||||
|
// Update TAS Editor's tooltips if it's opening.
|
||||||
|
extern TASEDITOR_WINDOW taseditorWindow;
|
||||||
|
if (taseditorWindow.hwndTASEditor)
|
||||||
|
taseditorWindow.updateTooltips();
|
||||||
EndDialog(hwndDlg, 1);
|
EndDialog(hwndDlg, 1);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
|
|
@ -1262,9 +1262,10 @@ LRESULT CALLBACK MemViewCallB(HWND hwnd, UINT message, WPARAM wParam, LPARAM lPa
|
||||||
|
|
||||||
// update menus
|
// update menus
|
||||||
for (i = MODE_NES_MEMORY; i <= MODE_NES_FILE; i++)
|
for (i = MODE_NES_MEMORY; i <= MODE_NES_FILE; i++)
|
||||||
{
|
if(EditingMode == i) {
|
||||||
CheckMenuItem(GetMenu(hwnd), MENU_MV_VIEW_RAM + i, (EditingMode == i) ? MF_CHECKED : MF_UNCHECKED);
|
CheckMenuRadioItem(GetMenu(hMemView), MENU_MV_VIEW_RAM, MENU_MV_VIEW_ROM, MENU_MV_VIEW_RAM + i, MF_BYCOMMAND);
|
||||||
}
|
break;
|
||||||
|
}
|
||||||
CheckMenuItem(GetMenu(hwnd), ID_HIGHLIGHTING_HIGHLIGHT_ACTIVITY, (MemView_HighlightActivity) ? MF_CHECKED: MF_UNCHECKED);
|
CheckMenuItem(GetMenu(hwnd), ID_HIGHLIGHTING_HIGHLIGHT_ACTIVITY, (MemView_HighlightActivity) ? MF_CHECKED: MF_UNCHECKED);
|
||||||
CheckMenuItem(GetMenu(hwnd), ID_HIGHLIGHTING_FADEWHENPAUSED, (MemView_HighlightActivity_FadeWhenPaused) ? MF_CHECKED: MF_UNCHECKED);
|
CheckMenuItem(GetMenu(hwnd), ID_HIGHLIGHTING_FADEWHENPAUSED, (MemView_HighlightActivity_FadeWhenPaused) ? MF_CHECKED: MF_UNCHECKED);
|
||||||
|
|
||||||
|
@ -2038,9 +2039,11 @@ LRESULT CALLBACK MemViewCallB(HWND hwnd, UINT message, WPARAM wParam, LPARAM lPa
|
||||||
case MENU_MV_VIEW_ROM:
|
case MENU_MV_VIEW_ROM:
|
||||||
EditingMode = wParam - MENU_MV_VIEW_RAM;
|
EditingMode = wParam - MENU_MV_VIEW_RAM;
|
||||||
for (i = MODE_NES_MEMORY; i <= MODE_NES_FILE; i++)
|
for (i = MODE_NES_MEMORY; i <= MODE_NES_FILE; i++)
|
||||||
{
|
if(EditingMode == i)
|
||||||
CheckMenuItem(GetMenu(hMemView), MENU_MV_VIEW_RAM + i, (EditingMode == i) ? MF_CHECKED : MF_UNCHECKED);
|
{
|
||||||
}
|
CheckMenuRadioItem(GetMenu(hMemView), MENU_MV_VIEW_RAM, MENU_MV_VIEW_ROM, MENU_MV_VIEW_RAM + i, MF_BYCOMMAND);
|
||||||
|
break;
|
||||||
|
}
|
||||||
if (EditingMode == MODE_NES_MEMORY)
|
if (EditingMode == MODE_NES_MEMORY)
|
||||||
MaxSize = 0x10000;
|
MaxSize = 0x10000;
|
||||||
if (EditingMode == MODE_NES_PPU)
|
if (EditingMode == MODE_NES_PPU)
|
||||||
|
|
|
@ -181,7 +181,7 @@ void updateBookmarkMenus(HMENU menu)
|
||||||
{
|
{
|
||||||
// Get the text of the menu
|
// Get the text of the menu
|
||||||
char buffer[0x100];
|
char buffer[0x100];
|
||||||
sprintf(buffer, i < 10 ? "$%04X - %s\tCTRL-%d" : "$%04X - %s", hexBookmarks[i].address, hexBookmarks[i].description, i);
|
sprintf(buffer, i < 10 ? "&%d. $%04X - %s\tCtrl+%d" : "%d. $%04X - %s",i, hexBookmarks[i].address, hexBookmarks[i].description, i);
|
||||||
|
|
||||||
mi.dwTypeData = buffer;
|
mi.dwTypeData = buffer;
|
||||||
mi.cch = strlen(buffer);
|
mi.cch = strlen(buffer);
|
||||||
|
|
|
@ -567,6 +567,8 @@ BOOL CALLBACK NTViewCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
break;
|
break;
|
||||||
case IDC_NTVIEW_SHOW_SCROLL_LINES :
|
case IDC_NTVIEW_SHOW_SCROLL_LINES :
|
||||||
scrolllines ^= 1;
|
scrolllines ^= 1;
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDC_NTVIEW_SCANLINE_TEXT), scrolllines);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDC_NTVIEW_SCANLINE), scrolllines);
|
||||||
chrchanged = 1;
|
chrchanged = 1;
|
||||||
break;
|
break;
|
||||||
case IDC_NTVIEW_SHOW_ATTRIBUTES :
|
case IDC_NTVIEW_SHOW_ATTRIBUTES :
|
||||||
|
|
|
@ -117,6 +117,11 @@ BOOL CALLBACK PaletteConCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
|
||||||
|
|
||||||
CenterWindowOnScreen(hwndDlg);
|
CenterWindowOnScreen(hwndDlg);
|
||||||
|
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, 65463), ntsccol_enable);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, 64395), ntsccol_enable);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, CTL_HUE_TRACKBAR), ntsccol_enable);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, CTL_TINT_TRACKBAR), ntsccol_enable);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WM_HSCROLL:
|
case WM_HSCROLL:
|
||||||
|
@ -153,6 +158,11 @@ BOOL CALLBACK PaletteConCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
|
||||||
case CHECK_PALETTE_ENABLED:
|
case CHECK_PALETTE_ENABLED:
|
||||||
ntsccol_enable ^= 1;
|
ntsccol_enable ^= 1;
|
||||||
FCEUI_SetNTSCTH(ntsccol_enable, ntsctint, ntschue); // it recalculates everything, use it for PAL block too!
|
FCEUI_SetNTSCTH(ntsccol_enable, ntsctint, ntschue); // it recalculates everything, use it for PAL block too!
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, 65463), ntsccol_enable);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, 64395), ntsccol_enable);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, CTL_HUE_TRACKBAR), ntsccol_enable);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, CTL_TINT_TRACKBAR), ntsccol_enable);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CHECK_PALETTE_GRAYSCALE:
|
case CHECK_PALETTE_GRAYSCALE:
|
||||||
|
|
|
@ -289,6 +289,8 @@ void UpdateReplayDialog(HWND hwndDlg)
|
||||||
EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK_READONLY),FALSE);
|
EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK_READONLY),FALSE);
|
||||||
EnableWindow(GetDlgItem(hwndDlg,IDOK),FALSE);
|
EnableWindow(GetDlgItem(hwndDlg,IDOK),FALSE);
|
||||||
}
|
}
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK_STOPMOVIE), !doClear);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg,IDC_EDIT_STOPFRAME), !doClear && SendDlgItemMessage(hwndDlg, IDC_CHECK_STOPMOVIE, BM_GETCHECK, 0, 0) == BST_CHECKED);
|
||||||
}
|
}
|
||||||
|
|
||||||
// C:\fceu\movies\bla.fcm + C:\fceu\fceu\ -> C:\fceu\movies\bla.fcm
|
// C:\fceu\movies\bla.fcm + C:\fceu\fceu\ -> C:\fceu\movies\bla.fcm
|
||||||
|
@ -649,6 +651,9 @@ BOOL CALLBACK ReplayDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lP
|
||||||
int wID = LOWORD(wParam);
|
int wID = LOWORD(wParam);
|
||||||
switch(wID)
|
switch(wID)
|
||||||
{
|
{
|
||||||
|
case IDC_CHECK_STOPMOVIE:
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDC_EDIT_STOPFRAME), SendDlgItemMessage(hwndDlg, IDC_CHECK_STOPMOVIE, BM_GETCHECK, 0, 0) == BST_CHECKED);
|
||||||
|
break;
|
||||||
case IDC_BUTTON_METADATA:
|
case IDC_BUTTON_METADATA:
|
||||||
DialogBoxParam(fceu_hInstance, "IDD_REPLAY_METADATA", hwndDlg, ReplayMetadataDialogProc, (LPARAM)0);
|
DialogBoxParam(fceu_hInstance, "IDD_REPLAY_METADATA", hwndDlg, ReplayMetadataDialogProc, (LPARAM)0);
|
||||||
break;
|
break;
|
||||||
|
@ -714,6 +719,21 @@ BOOL CALLBACK ReplayDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lP
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
extern unsigned int FrozenAddressCount;
|
||||||
|
if(FrozenAddressCount)
|
||||||
|
{
|
||||||
|
char ch[512];
|
||||||
|
sprintf(ch, "You have %d activated cheats. If this is not your intentional, it can cause playback prblems! Do you want to disable all of them and continue?", FrozenAddressCount);
|
||||||
|
switch(MessageBox(hwndDlg, ch, "Movie playing problem", MB_YESNOCANCEL|MB_ICONEXCLAMATION))
|
||||||
|
{
|
||||||
|
case IDCANCEL:
|
||||||
|
return TRUE;
|
||||||
|
case IDYES:
|
||||||
|
extern void DisableAllCheats();
|
||||||
|
DisableAllCheats();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
// user had made their choice
|
// user had made their choice
|
||||||
// TODO: warn the user when they open a movie made with a different ROM
|
// TODO: warn the user when they open a movie made with a different ROM
|
||||||
char* fn=GetReplayPath(hwndDlg);
|
char* fn=GetReplayPath(hwndDlg);
|
||||||
|
|
|
@ -7,93 +7,16 @@
|
||||||
//
|
//
|
||||||
// Generated from the TEXTINCLUDE 2 resource.
|
// Generated from the TEXTINCLUDE 2 resource.
|
||||||
//
|
//
|
||||||
#include "afxres.h"
|
#include "afxres.h"
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
#undef APSTUDIO_READONLY_SYMBOLS
|
#undef APSTUDIO_READONLY_SYMBOLS
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
// Russian (Russia) 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_STATIC,14,32,21,8
|
|
||||||
EDITTEXT IDC_AUTOSAVE_PERIOD,36,30,24,14,ES_AUTOHSCROLL | ES_NUMBER
|
|
||||||
LTEXT "minutes",IDC_STATIC,64,32,28,8
|
|
||||||
GROUPBOX "Settings",IDC_STATIC,6,4,91,177
|
|
||||||
END
|
|
||||||
|
|
||||||
IDD_SYMBOLIC_DEBUG_NAMING DIALOGEX 0, 0, 245, 83
|
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
|
||||||
CAPTION "Symbolic Debug Naming"
|
|
||||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
|
||||||
BEGIN
|
|
||||||
DEFPUSHBUTTON "OK",IDOK,132,62,50,14
|
|
||||||
PUSHBUTTON "Cancel",IDCANCEL,189,62,50,14
|
|
||||||
LTEXT "File",IDC_STATIC,7,7,15,9
|
|
||||||
EDITTEXT IDC_SYMBOLIC_ADDRESS,38,24,33,13,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
|
|
||||||
LTEXT "Address",IDC_STATIC,6,26,30,10
|
|
||||||
EDITTEXT IDC_SYMBOLIC_NAME,107,24,132,13,ES_AUTOHSCROLL
|
|
||||||
LTEXT "Name",IDC_STATIC,83,26,22,10
|
|
||||||
LTEXT "Comment",IDC_STATIC,6,45,37,10
|
|
||||||
EDITTEXT IDC_SYMBOLIC_COMMENT,45,43,194,13,ES_AUTOHSCROLL
|
|
||||||
EDITTEXT IDC_SYMBOLIC_FILENAME,24,6,215,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
|
|
||||||
END
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// DESIGNINFO
|
|
||||||
//
|
|
||||||
|
|
||||||
#ifdef APSTUDIO_INVOKED
|
|
||||||
GUIDELINES DESIGNINFO
|
|
||||||
BEGIN
|
|
||||||
IDD_SYMBOLIC_DEBUG_NAMING, DIALOG
|
|
||||||
BEGIN
|
|
||||||
BOTTOMMARGIN, 82
|
|
||||||
END
|
|
||||||
END
|
|
||||||
#endif // APSTUDIO_INVOKED
|
|
||||||
|
|
||||||
#endif // Russian (Russia) resources
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
// Neutral resources
|
|
||||||
|
|
||||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU)
|
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU)
|
||||||
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||||
#pragma code_page(1252)
|
#pragma code_page(936)
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
|
@ -431,11 +354,11 @@ BEGIN
|
||||||
GROUPBOX "NES Palette",302,10,8,102,81,WS_GROUP
|
GROUPBOX "NES Palette",302,10,8,102,81,WS_GROUP
|
||||||
DEFPUSHBUTTON "&Load Palette...",BTN_PALETTE_LOAD,18,39,58,14
|
DEFPUSHBUTTON "&Load Palette...",BTN_PALETTE_LOAD,18,39,58,14
|
||||||
CONTROL "Enabled",CHECK_PALETTE_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,22,87,12
|
CONTROL "Enabled",CHECK_PALETTE_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,22,87,12
|
||||||
CONTROL "Tint",CTL_TINT_TRACKBAR,"msctls_trackbar32",WS_TABSTOP,121,44,91,11
|
CONTROL "Tint",CTL_TINT_TRACKBAR,"msctls_trackbar32",WS_DISABLED | WS_TABSTOP,121,44,91,11
|
||||||
GROUPBOX "NTSC Color Emulation",101,115,8,103,81,WS_GROUP
|
GROUPBOX "NTSC Color Emulation",101,115,8,103,81,WS_GROUP
|
||||||
CONTROL "Hue",CTL_HUE_TRACKBAR,"msctls_trackbar32",WS_TABSTOP,121,69,91,11
|
CONTROL "Hue",CTL_HUE_TRACKBAR,"msctls_trackbar32",WS_DISABLED | WS_TABSTOP,121,69,91,11
|
||||||
CTEXT "Hue",64395,124,59,85,8
|
CTEXT "Hue",64395,124,59,85,8,WS_DISABLED
|
||||||
CTEXT "Tint",65463,123,34,85,8
|
CTEXT "Tint",65463,123,34,85,8,WS_DISABLED
|
||||||
CONTROL "Force Grayscale",CHECK_PALETTE_GRAYSCALE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,57,85,12
|
CONTROL "Force Grayscale",CHECK_PALETTE_GRAYSCALE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,57,85,12
|
||||||
CONTROL "Use Custom Palette",CHECK_PALETTE_CUSTOM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,22,85,12
|
CONTROL "Use Custom Palette",CHECK_PALETTE_CUSTOM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,22,85,12
|
||||||
GROUPBOX "PAL Emulation",IDC_STATIC,10,89,208,66,WS_DISABLED
|
GROUPBOX "PAL Emulation",IDC_STATIC,10,89,208,66,WS_DISABLED
|
||||||
|
@ -513,7 +436,7 @@ BEGIN
|
||||||
COMBOBOX COMBO_SOUND_RATE,50,61,53,46,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
COMBOBOX COMBO_SOUND_RATE,50,61,53,46,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||||
LTEXT "Hz",65460,108,64,15,9
|
LTEXT "Hz",65460,108,64,15,9
|
||||||
LTEXT "Depth:",65462,17,85,27,10
|
LTEXT "Depth:",65462,17,85,27,10
|
||||||
COMBOBOX COMBO_SOUND_8BIT,50,82,67,45,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
COMBOBOX COMBO_SOUND_8BIT,50,82,67,45,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||||
CONTROL "Mute frame advance",CHECK_SOUND_MUTEFA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,110,87,11
|
CONTROL "Mute frame advance",CHECK_SOUND_MUTEFA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,110,87,11
|
||||||
CONTROL "Mute Turbo",CHECK_SOUND_MUTETURBO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,138,111,53,10
|
CONTROL "Mute Turbo",CHECK_SOUND_MUTETURBO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,138,111,53,10
|
||||||
GROUPBOX "Triangle",131,70,142,44,93,WS_GROUP
|
GROUPBOX "Triangle",131,70,142,44,93,WS_GROUP
|
||||||
|
@ -654,11 +577,11 @@ BEGIN
|
||||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,8,183,12
|
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,8,183,12
|
||||||
CONTROL "Set high-priority thread.",CB_SET_HIGH_PRIORITY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,24,102,12
|
CONTROL "Set high-priority thread.",CB_SET_HIGH_PRIORITY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,24,102,12
|
||||||
CONTROL "Overclocking (old PPU only).",CB_OVERCLOCKING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,41,101,10
|
CONTROL "Overclocking (old PPU only).",CB_OVERCLOCKING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,41,101,10
|
||||||
EDITTEXT IDC_EXTRA_SCANLINES,104,55,84,14,ES_AUTOHSCROLL
|
EDITTEXT IDC_EXTRA_SCANLINES,104,55,84,14,ES_AUTOHSCROLL | WS_DISABLED
|
||||||
LTEXT "Post-render scanlines:",IDC_STATIC,21,57,74,8
|
LTEXT "Post-render scanlines:",IDC_EXTRA_SCANLINES_TEXT,21,57,74,8, WS_DISABLED
|
||||||
CONTROL "Don't overclock 7-bit samples.",CB_SKIP_7BIT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,87,111,10
|
CONTROL "Don't overclock 7-bit samples.",CB_SKIP_7BIT,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,10,87,111,10
|
||||||
EDITTEXT IDC_VBLANK_SCANLINES,104,68,84,14,ES_AUTOHSCROLL
|
EDITTEXT IDC_VBLANK_SCANLINES,104,68,84,14,ES_AUTOHSCROLL | WS_DISABLED
|
||||||
LTEXT "VBlank scanlines:",IDC_STATIC,21,71,76,8
|
LTEXT "VBlank scanlines:",IDC_VBLANK_SCANLINES_TEXT,21,71,76,8, WS_DISABLED
|
||||||
END
|
END
|
||||||
|
|
||||||
MOVIEOPTIONS DIALOGEX 65520, 76, 147, 222
|
MOVIEOPTIONS DIALOGEX 65520, 76, 147, 222
|
||||||
|
@ -944,7 +867,7 @@ BEGIN
|
||||||
LTEXT "Refresh: More",-1,225,254,50,9
|
LTEXT "Refresh: More",-1,225,254,50,9
|
||||||
CONTROL "",IDC_NTVIEW_REFRESH_TRACKBAR,"msctls_trackbar32",WS_TABSTOP,275,254,50,11
|
CONTROL "",IDC_NTVIEW_REFRESH_TRACKBAR,"msctls_trackbar32",WS_TABSTOP,275,254,50,11
|
||||||
LTEXT "Less",-1,325,254,18,10
|
LTEXT "Less",-1,325,254,18,10
|
||||||
LTEXT "Display on scanline:",-1,253,269,65,9
|
LTEXT "Display on scanline:",IDC_NTVIEW_SCANLINE_TEXT,253,269,65,9
|
||||||
EDITTEXT IDC_NTVIEW_SCANLINE,315,267,27,12
|
EDITTEXT IDC_NTVIEW_SCANLINE,315,267,27,12
|
||||||
CONTROL "Show Scroll Lines",IDC_NTVIEW_SHOW_SCROLL_LINES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,254,69,10
|
CONTROL "Show Scroll Lines",IDC_NTVIEW_SHOW_SCROLL_LINES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,254,69,10
|
||||||
CONTROL "Show Attributes",IDC_NTVIEW_SHOW_ATTRIBUTES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,265,69,10
|
CONTROL "Show Attributes",IDC_NTVIEW_SHOW_ATTRIBUTES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,265,69,10
|
||||||
|
@ -1512,9 +1435,9 @@ BEGIN
|
||||||
CONTROL "TV Aspect",IDC_VIDEOCONFIG_TVASPECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,357,29,48,12
|
CONTROL "TV Aspect",IDC_VIDEOCONFIG_TVASPECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,357,29,48,12
|
||||||
GROUPBOX "When resizing the window",65431,188,38,152,43,WS_GROUP
|
GROUPBOX "When resizing the window",65431,188,38,152,43,WS_GROUP
|
||||||
CONTROL "Square pixels",IDC_VIDEOCONFIG_SQUARE_PIXELS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,448,14,55,12
|
CONTROL "Square pixels",IDC_VIDEOCONFIG_SQUARE_PIXELS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,448,14,55,12
|
||||||
EDITTEXT IDC_TVASPECT_X,407,28,41,12,ES_AUTOHSCROLL
|
EDITTEXT IDC_TVASPECT_X,407,28,41,12,ES_AUTOHSCROLL | WS_DISABLED
|
||||||
EDITTEXT IDC_TVASPECT_Y,458,28,41,12,ES_AUTOHSCROLL
|
EDITTEXT IDC_TVASPECT_Y,458,28,41,12,ES_AUTOHSCROLL | WS_DISABLED
|
||||||
CTEXT "/",IDC_STATIC_SLASHTEXT,449,31,8,8
|
CTEXT "/",IDC_STATIC_SLASHTEXT,449,31,8,8,WS_DISABLED
|
||||||
LTEXT "DirectDraw:",65454,11,126,46,10
|
LTEXT "DirectDraw:",65454,11,126,46,10
|
||||||
LTEXT "DirectDraw:",65455,188,125,46,10
|
LTEXT "DirectDraw:",65455,188,125,46,10
|
||||||
COMBOBOX IDC_VIDEOCONFIG_DIRECTDRAW_FS,59,123,105,50,CBS_DROPDOWNLIST | WS_TABSTOP
|
COMBOBOX IDC_VIDEOCONFIG_DIRECTDRAW_FS,59,123,105,50,CBS_DROPDOWNLIST | WS_TABSTOP
|
||||||
|
@ -1730,6 +1653,10 @@ BEGIN
|
||||||
BOTTOMMARGIN, 121
|
BOTTOMMARGIN, 121
|
||||||
END
|
END
|
||||||
|
|
||||||
|
"NTVIEW", DIALOG
|
||||||
|
BEGIN
|
||||||
|
END
|
||||||
|
|
||||||
"MONITOR", DIALOG
|
"MONITOR", DIALOG
|
||||||
BEGIN
|
BEGIN
|
||||||
LEFTMARGIN, 7
|
LEFTMARGIN, 7
|
||||||
|
@ -1756,6 +1683,10 @@ BEGIN
|
||||||
BOTTOMMARGIN, 198
|
BOTTOMMARGIN, 198
|
||||||
END
|
END
|
||||||
|
|
||||||
|
"TASEDITOR", DIALOG
|
||||||
|
BEGIN
|
||||||
|
END
|
||||||
|
|
||||||
"ASSEMBLER", DIALOG
|
"ASSEMBLER", DIALOG
|
||||||
BEGIN
|
BEGIN
|
||||||
LEFTMARGIN, 7
|
LEFTMARGIN, 7
|
||||||
|
@ -2460,12 +2391,119 @@ BEGIN
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
|
|
||||||
#endif // Neutral resources
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// AFX_DIALOG_LAYOUT
|
||||||
|
//
|
||||||
|
|
||||||
|
NTVIEW AFX_DIALOG_LAYOUT
|
||||||
|
BEGIN
|
||||||
|
0
|
||||||
|
END
|
||||||
|
|
||||||
|
TIMINGCONFIG AFX_DIALOG_LAYOUT
|
||||||
|
BEGIN
|
||||||
|
0
|
||||||
|
END
|
||||||
|
|
||||||
|
#endif // 非特定语言 resources
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
// English (United States) resources
|
// 俄语(俄罗斯) resources
|
||||||
|
|
||||||
|
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
|
||||||
|
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
|
||||||
|
#pragma code_page(1251)
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Dialog
|
||||||
|
//
|
||||||
|
|
||||||
|
IDD_TASEDITOR_SAVINGOPTIONS DIALOGEX 0, 0, 223, 208
|
||||||
|
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||||
|
CAPTION "Project file saving options"
|
||||||
|
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||||
|
BEGIN
|
||||||
|
DEFPUSHBUTTON "OK",IDOK,109,187,50,14
|
||||||
|
PUSHBUTTON "Cancel",IDCANCEL,165,187,50,14
|
||||||
|
CONTROL " Binary format of Input",IDC_CHECK_BINARY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,17,89,10
|
||||||
|
CONTROL " Markers",IDC_CHECK_MARKERS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,32,67,10
|
||||||
|
CONTROL " Bookmarks",IDC_CHECK_BOOKMARKS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,47,67,10
|
||||||
|
CONTROL " History",IDC_CHECK_HISTORY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,62,67,10
|
||||||
|
CONTROL " Piano Roll",IDC_CHECK_PIANO_ROLL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,77,67,10
|
||||||
|
CONTROL " Selection",IDC_CHECK_SELECTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,92,67,10
|
||||||
|
GROUPBOX "File contents",IDC_STATIC,105,4,111,177
|
||||||
|
GROUPBOX "Greenzone saving options",IDC_STATIC,112,106,97,69
|
||||||
|
CONTROL " all frames",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON,122,117,77,10
|
||||||
|
CONTROL " every 16th frame",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,122,131,77,10
|
||||||
|
CONTROL " marked frames",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,122,145,77,10
|
||||||
|
CONTROL " don't save",IDC_RADIO4,"Button",BS_AUTORADIOBUTTON,122,159,77,10
|
||||||
|
CONTROL " Autosave project",IDC_AUTOSAVE_PROJECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,17,81,10
|
||||||
|
CONTROL " silently",IDC_SILENT_AUTOSAVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,47,42,10
|
||||||
|
LTEXT "every",IDC_AUTOSAVE_PERIOD_EVERY_TEXT,14,32,21,8
|
||||||
|
EDITTEXT IDC_AUTOSAVE_PERIOD,36,30,24,14,ES_AUTOHSCROLL | ES_NUMBER
|
||||||
|
LTEXT "minutes",IDC_AUTOSAVE_PERIOD_MINUTES_TEXT,64,32,28,8
|
||||||
|
GROUPBOX "Settings",IDC_STATIC,6,4,91,177
|
||||||
|
END
|
||||||
|
|
||||||
|
IDD_SYMBOLIC_DEBUG_NAMING DIALOGEX 0, 0, 245, 83
|
||||||
|
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||||
|
CAPTION "Symbolic Debug Naming"
|
||||||
|
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||||
|
BEGIN
|
||||||
|
DEFPUSHBUTTON "OK",IDOK,132,62,50,14
|
||||||
|
PUSHBUTTON "Cancel",IDCANCEL,189,62,50,14
|
||||||
|
LTEXT "File",IDC_STATIC,7,7,15,9
|
||||||
|
EDITTEXT IDC_SYMBOLIC_ADDRESS,38,24,33,13,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
|
||||||
|
LTEXT "Address",IDC_STATIC,6,26,30,10
|
||||||
|
EDITTEXT IDC_SYMBOLIC_NAME,107,24,132,13,ES_AUTOHSCROLL
|
||||||
|
LTEXT "Name",IDC_STATIC,83,26,22,10
|
||||||
|
LTEXT "Comment",IDC_STATIC,6,45,37,10
|
||||||
|
EDITTEXT IDC_SYMBOLIC_COMMENT,45,43,194,13,ES_AUTOHSCROLL
|
||||||
|
EDITTEXT IDC_SYMBOLIC_FILENAME,24,6,215,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// DESIGNINFO
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifdef APSTUDIO_INVOKED
|
||||||
|
GUIDELINES DESIGNINFO
|
||||||
|
BEGIN
|
||||||
|
IDD_TASEDITOR_SAVINGOPTIONS, DIALOG
|
||||||
|
BEGIN
|
||||||
|
END
|
||||||
|
|
||||||
|
IDD_SYMBOLIC_DEBUG_NAMING, DIALOG
|
||||||
|
BEGIN
|
||||||
|
BOTTOMMARGIN, 82
|
||||||
|
END
|
||||||
|
END
|
||||||
|
#endif // APSTUDIO_INVOKED
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// AFX_DIALOG_LAYOUT
|
||||||
|
//
|
||||||
|
|
||||||
|
IDD_TASEDITOR_SAVINGOPTIONS AFX_DIALOG_LAYOUT
|
||||||
|
BEGIN
|
||||||
|
0
|
||||||
|
END
|
||||||
|
|
||||||
|
#endif // 俄语(俄罗斯) resources
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// 英语(美国) resources
|
||||||
|
|
||||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||||
|
@ -2699,7 +2737,7 @@ IDB_BITMAP_SELECTED17 BITMAP "res\\te_17_selected.bmp"
|
||||||
IDB_BITMAP_SELECTED18 BITMAP "res\\te_18_selected.bmp"
|
IDB_BITMAP_SELECTED18 BITMAP "res\\te_18_selected.bmp"
|
||||||
IDB_BITMAP_SELECTED19 BITMAP "res\\te_19_selected.bmp"
|
IDB_BITMAP_SELECTED19 BITMAP "res\\te_19_selected.bmp"
|
||||||
IDB_BRANCH_SPRITESHEET BITMAP "res\\branch_spritesheet.bmp"
|
IDB_BRANCH_SPRITESHEET BITMAP "res\\branch_spritesheet.bmp"
|
||||||
#endif // English (United States) resources
|
#endif // 英语(美国) resources
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
@ -2709,8 +2747,7 @@ IDB_BRANCH_SPRITESHEET BITMAP "res\\branch_spritesheet.bmp"
|
||||||
//
|
//
|
||||||
// Generated from the TEXTINCLUDE 3 resource.
|
// Generated from the TEXTINCLUDE 3 resource.
|
||||||
//
|
//
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
#endif // not APSTUDIO_INVOKED
|
#endif // not APSTUDIO_INVOKED
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
//{{NO_DEPENDENCIES}}
|
//{{NO_DEPENDENCIES}}
|
||||||
// Microsoft Visual C++ generated include file.
|
// Microsoft Visual C++ 生成的包含文件。
|
||||||
// Used by res.rc
|
// 供 res.rc 使用
|
||||||
//
|
//
|
||||||
#define CLOSE_BUTTON 1
|
#define CLOSE_BUTTON 1
|
||||||
#define BUTTON_CLOSE 1
|
#define BUTTON_CLOSE 1
|
||||||
|
@ -784,6 +784,10 @@
|
||||||
#define IDC_RICHEDIT_DISASM 1304
|
#define IDC_RICHEDIT_DISASM 1304
|
||||||
#define IDC_CHECK2 1305
|
#define IDC_CHECK2 1305
|
||||||
#define DEBUGIDAFONT 1305
|
#define DEBUGIDAFONT 1305
|
||||||
|
#define IDC_AUTOSAVE_PERIOD_EVERY_TEXT 1306
|
||||||
|
#define IDC_AUTOSAVE_PERIOD_MINUTES_TEXT 1307
|
||||||
|
#define IDC_VBLANK_SCANLINES_TEXT 1308
|
||||||
|
#define IDC_EXTRA_SCANLINES_TEXT 1309
|
||||||
#define MENU_NETWORK 40040
|
#define MENU_NETWORK 40040
|
||||||
#define MENU_PALETTE 40041
|
#define MENU_PALETTE 40041
|
||||||
#define MENU_SOUND 40042
|
#define MENU_SOUND 40042
|
||||||
|
@ -1271,14 +1275,15 @@
|
||||||
#define IDC_STATIC_SLASHTEXT 65442
|
#define IDC_STATIC_SLASHTEXT 65442
|
||||||
#define IDC_BOOKMARK_NAME_TEXT 65535
|
#define IDC_BOOKMARK_NAME_TEXT 65535
|
||||||
#define ID_CDL 65535
|
#define ID_CDL 65535
|
||||||
|
#define IDC_NTVIEW_SCANLINE_TEXT 65535
|
||||||
|
|
||||||
// Next default values for new objects
|
// Next default values for new objects
|
||||||
//
|
//
|
||||||
#ifdef APSTUDIO_INVOKED
|
#ifdef APSTUDIO_INVOKED
|
||||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||||
#define _APS_NEXT_RESOURCE_VALUE 293
|
#define _APS_NEXT_RESOURCE_VALUE 296
|
||||||
#define _APS_NEXT_COMMAND_VALUE 40600
|
#define _APS_NEXT_COMMAND_VALUE 40600
|
||||||
#define _APS_NEXT_CONTROL_VALUE 1306
|
#define _APS_NEXT_CONTROL_VALUE 1310
|
||||||
#define _APS_NEXT_SYMED_VALUE 101
|
#define _APS_NEXT_SYMED_VALUE 101
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -387,7 +387,7 @@ void win_SoundWriteData(int32 *buffer, int count) {
|
||||||
//--------
|
//--------
|
||||||
//GUI and control APIs
|
//GUI and control APIs
|
||||||
|
|
||||||
static HWND uug=0;
|
HWND uug=0;
|
||||||
|
|
||||||
static void UpdateSD(HWND hwndDlg)
|
static void UpdateSD(HWND hwndDlg)
|
||||||
{
|
{
|
||||||
|
@ -450,6 +450,7 @@ static void UpdateSD(HWND hwndDlg)
|
||||||
EnableWindow(GetDlgItem(hwndDlg,65457),FALSE);
|
EnableWindow(GetDlgItem(hwndDlg,65457),FALSE);
|
||||||
//Misc. Output Format group
|
//Misc. Output Format group
|
||||||
EnableWindow(GetDlgItem(hwndDlg,65455),FALSE);
|
EnableWindow(GetDlgItem(hwndDlg,65455),FALSE);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg,65462),FALSE);
|
||||||
EnableWindow(GetDlgItem(hwndDlg,65461),FALSE);
|
EnableWindow(GetDlgItem(hwndDlg,65461),FALSE);
|
||||||
EnableWindow(GetDlgItem(hwndDlg,65460),FALSE);
|
EnableWindow(GetDlgItem(hwndDlg,65460),FALSE);
|
||||||
|
|
||||||
|
@ -490,6 +491,7 @@ static void UpdateSD(HWND hwndDlg)
|
||||||
EnableWindow(GetDlgItem(hwndDlg,65457),TRUE);
|
EnableWindow(GetDlgItem(hwndDlg,65457),TRUE);
|
||||||
//Misc. Output Format group
|
//Misc. Output Format group
|
||||||
EnableWindow(GetDlgItem(hwndDlg,65455),TRUE);
|
EnableWindow(GetDlgItem(hwndDlg,65455),TRUE);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg,65462),TRUE);
|
||||||
EnableWindow(GetDlgItem(hwndDlg,65461),TRUE);
|
EnableWindow(GetDlgItem(hwndDlg,65461),TRUE);
|
||||||
EnableWindow(GetDlgItem(hwndDlg,65460),TRUE);
|
EnableWindow(GetDlgItem(hwndDlg,65460),TRUE);
|
||||||
|
|
||||||
|
|
|
@ -682,12 +682,23 @@ BOOL CALLBACK savingOptionsWndProc(HWND hwndDlg, UINT message, WPARAM wParam, LP
|
||||||
CheckDlgButton(hwndDlg, IDC_CHECK_PIANO_ROLL, taseditorConfig.projectSavingOptions_SavePianoRoll?BST_CHECKED : BST_UNCHECKED);
|
CheckDlgButton(hwndDlg, IDC_CHECK_PIANO_ROLL, taseditorConfig.projectSavingOptions_SavePianoRoll?BST_CHECKED : BST_UNCHECKED);
|
||||||
CheckDlgButton(hwndDlg, IDC_CHECK_SELECTION, taseditorConfig.projectSavingOptions_SaveSelection?BST_CHECKED : BST_UNCHECKED);
|
CheckDlgButton(hwndDlg, IDC_CHECK_SELECTION, taseditorConfig.projectSavingOptions_SaveSelection?BST_CHECKED : BST_UNCHECKED);
|
||||||
CheckRadioButton(hwndDlg, IDC_RADIO1, IDC_RADIO4, IDC_RADIO1 + (taseditorConfig.projectSavingOptions_GreenzoneSavingMode % GREENZONE_SAVING_MODES_TOTAL));
|
CheckRadioButton(hwndDlg, IDC_RADIO1, IDC_RADIO4, IDC_RADIO1 + (taseditorConfig.projectSavingOptions_GreenzoneSavingMode % GREENZONE_SAVING_MODES_TOTAL));
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDC_AUTOSAVE_PERIOD), taseditorConfig.autosaveEnabled);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDC_AUTOSAVE_PERIOD_EVERY_TEXT), taseditorConfig.autosaveEnabled);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDC_AUTOSAVE_PERIOD_MINUTES_TEXT), taseditorConfig.autosaveEnabled);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
case WM_COMMAND:
|
case WM_COMMAND:
|
||||||
{
|
{
|
||||||
switch (LOWORD(wParam))
|
switch (LOWORD(wParam))
|
||||||
{
|
{
|
||||||
|
case IDC_AUTOSAVE_PROJECT:
|
||||||
|
{
|
||||||
|
bool chk = BST_CHECKED == SendDlgItemMessage(hwndDlg, IDC_AUTOSAVE_PROJECT, BM_GETCHECK, 0, 0);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDC_AUTOSAVE_PERIOD), chk);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDC_AUTOSAVE_PERIOD_EVERY_TEXT), chk);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDC_AUTOSAVE_PERIOD_MINUTES_TEXT), chk);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case IDOK:
|
case IDOK:
|
||||||
{
|
{
|
||||||
taseditorConfig.autosaveEnabled = (SendDlgItemMessage(hwndDlg, IDC_AUTOSAVE_PROJECT, BM_GETCHECK, 0, 0) == BST_CHECKED);
|
taseditorConfig.autosaveEnabled = (SendDlgItemMessage(hwndDlg, IDC_AUTOSAVE_PROJECT, BM_GETCHECK, 0, 0) == BST_CHECKED);
|
||||||
|
|
|
@ -433,7 +433,7 @@ void PIANO_ROLL::reset()
|
||||||
mustRedrawList = mustCheckItemUnderMouse = true;
|
mustRedrawList = mustCheckItemUnderMouse = true;
|
||||||
playbackCursorOffset = 0;
|
playbackCursorOffset = 0;
|
||||||
shiftHeld = ctrlHeld = altHeld = false;
|
shiftHeld = ctrlHeld = altHeld = false;
|
||||||
shiftTimer = ctrlTimer = shiftActionsÑount = ctrlActionsÑount = 0;
|
shiftTimer = ctrlTimer = shiftActionsCount = ctrlActionsCount = 0;
|
||||||
nextHeaderUpdateTime = headerItemUnderMouse = 0;
|
nextHeaderUpdateTime = headerItemUnderMouse = 0;
|
||||||
// delete all columns except 0th
|
// delete all columns except 0th
|
||||||
while (ListView_DeleteColumn(hwndList, 1)) {}
|
while (ListView_DeleteColumn(hwndList, 1)) {}
|
||||||
|
@ -480,16 +480,16 @@ void PIANO_ROLL::update()
|
||||||
{
|
{
|
||||||
if ((int)(shiftTimer + GetDoubleClickTime()) > clock())
|
if ((int)(shiftTimer + GetDoubleClickTime()) > clock())
|
||||||
{
|
{
|
||||||
shiftActionsÑount++;
|
shiftActionsCount++;
|
||||||
if (shiftActionsÑount >= DOUBLETAP_COUNT)
|
if (shiftActionsCount >= DOUBLETAP_COUNT)
|
||||||
{
|
{
|
||||||
if (taseditorWindow.TASEditorIsInFocus)
|
if (taseditorWindow.TASEditorIsInFocus)
|
||||||
followPlaybackCursor();
|
followPlaybackCursor();
|
||||||
shiftActionsÑount = ctrlActionsÑount = 0;
|
shiftActionsCount = ctrlActionsCount = 0;
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
shiftActionsÑount = 0;
|
shiftActionsCount = 0;
|
||||||
}
|
}
|
||||||
shiftTimer = clock();
|
shiftTimer = clock();
|
||||||
}
|
}
|
||||||
|
@ -497,16 +497,16 @@ void PIANO_ROLL::update()
|
||||||
{
|
{
|
||||||
if ((int)(ctrlTimer + GetDoubleClickTime()) > clock())
|
if ((int)(ctrlTimer + GetDoubleClickTime()) > clock())
|
||||||
{
|
{
|
||||||
ctrlActionsÑount++;
|
ctrlActionsCount++;
|
||||||
if (ctrlActionsÑount >= DOUBLETAP_COUNT)
|
if (ctrlActionsCount >= DOUBLETAP_COUNT)
|
||||||
{
|
{
|
||||||
if (taseditorWindow.TASEditorIsInFocus)
|
if (taseditorWindow.TASEditorIsInFocus)
|
||||||
followSelection();
|
followSelection();
|
||||||
ctrlActionsÑount = shiftActionsÑount = 0;
|
ctrlActionsCount = shiftActionsCount = 0;
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
ctrlActionsÑount = 0;
|
ctrlActionsCount = 0;
|
||||||
}
|
}
|
||||||
ctrlTimer = clock();
|
ctrlTimer = clock();
|
||||||
}
|
}
|
||||||
|
|
|
@ -217,7 +217,7 @@ public:
|
||||||
|
|
||||||
bool shiftHeld, ctrlHeld, altHeld;
|
bool shiftHeld, ctrlHeld, altHeld;
|
||||||
int shiftTimer, ctrlTimer;
|
int shiftTimer, ctrlTimer;
|
||||||
int shiftActionsÑount, ctrlActionsÑount;
|
int shiftActionsCount, ctrlActionsCount;
|
||||||
|
|
||||||
HWND hwndMarkerDragBox, hwndMarkerDragBoxText;
|
HWND hwndMarkerDragBox, hwndMarkerDragBoxText;
|
||||||
// GDI stuff
|
// GDI stuff
|
||||||
|
|
|
@ -132,47 +132,47 @@ char taseditorHelpFilename[] = "\\taseditor.chm";
|
||||||
// "y < 0" means that the coordinate is counted from the lower border of the window (bottom-aligned)
|
// "y < 0" means that the coordinate is counted from the lower border of the window (bottom-aligned)
|
||||||
// The items in this array MUST be sorted by the same order as the Window_items_enum!
|
// The items in this array MUST be sorted by the same order as the Window_items_enum!
|
||||||
WindowItemData windowItems[TASEDITOR_WINDOW_TOTAL_ITEMS] = {
|
WindowItemData windowItems[TASEDITOR_WINDOW_TOTAL_ITEMS] = {
|
||||||
WINDOWITEMS_PIANO_ROLL, IDC_LIST1, 0, 0, -1, -1, "", "", false, 0, 0,
|
WINDOWITEMS_PIANO_ROLL, IDC_LIST1, 0, 0, -1, -1, "", false, 0, 0,
|
||||||
WINDOWITEMS_PLAYBACK_MARKER, IDC_PLAYBACK_MARKER, 0, 0, 0, 0, "Click here to scroll Piano Roll to Playback cursor (hotkey: tap Shift twice)", "", false, 0, 0,
|
WINDOWITEMS_PLAYBACK_MARKER, IDC_PLAYBACK_MARKER, 0, 0, 0, 0, "Click here to scroll Piano Roll to Playback cursor (hotkey: tap Shift twice)", false, 0, 0,
|
||||||
WINDOWITEMS_PLAYBACK_MARKER_EDIT, IDC_PLAYBACK_MARKER_EDIT, 0, 0, -1, 0, "Click to edit text", "", false, 0, 0,
|
WINDOWITEMS_PLAYBACK_MARKER_EDIT, IDC_PLAYBACK_MARKER_EDIT, 0, 0, -1, 0, "Click to edit text", false, 0, 0,
|
||||||
WINDOWITEMS_SELECTION_MARKER, IDC_SELECTION_MARKER, 0, -1, 0, -1, "Click here to scroll Piano Roll to Selection (hotkey: tap Ctrl twice)", "", false, 0, 0,
|
WINDOWITEMS_SELECTION_MARKER, IDC_SELECTION_MARKER, 0, -1, 0, -1, "Click here to scroll Piano Roll to Selection (hotkey: tap Ctrl twice)", false, 0, 0,
|
||||||
WINDOWITEMS_SELECTION_MARKER_EDIT, IDC_SELECTION_MARKER_EDIT, 0, -1, -1, -1, "Click to edit text", "", false, 0, 0,
|
WINDOWITEMS_SELECTION_MARKER_EDIT, IDC_SELECTION_MARKER_EDIT, 0, -1, -1, -1, "Click to edit text", false, 0, 0,
|
||||||
WINDOWITEMS_PLAYBACK_BOX, IDC_PLAYBACK_BOX, -1, 0, 0, 0, "", "", false, 0, 0,
|
WINDOWITEMS_PLAYBACK_BOX, IDC_PLAYBACK_BOX, -1, 0, 0, 0, "", false, 0, 0,
|
||||||
WINDOWITEMS_PROGRESS_BUTTON, IDC_PROGRESS_BUTTON, -1, 0, 0, 0, "Click here when you want to abort seeking", "", false, EMUCMD_TASEDITOR_CANCEL_SEEKING, 0,
|
WINDOWITEMS_PROGRESS_BUTTON, IDC_PROGRESS_BUTTON, -1, 0, 0, 0, "Click here when you want to abort seeking", false, EMUCMD_TASEDITOR_CANCEL_SEEKING, 0,
|
||||||
WINDOWITEMS_REWIND_FULL, TASEDITOR_REWIND_FULL, -1, 0, 0, 0, "Send Playback to previous Marker (mouse: Shift+Wheel up) (hotkey: Shift+PageUp)", "", false, 0, 0,
|
WINDOWITEMS_REWIND_FULL, TASEDITOR_REWIND_FULL, -1, 0, 0, 0, "Send Playback to previous Marker (mouse: Shift+Wheel up) (hotkey: Shift+PageUp)", false, 0, 0,
|
||||||
WINDOWITEMS_REWIND, TASEDITOR_REWIND, -1, 0, 0, 0, "Rewind 1 frame (mouse: Right button+Wheel up) (hotkey: Shift+Up)", "", false, EMUCMD_TASEDITOR_REWIND, 0,
|
WINDOWITEMS_REWIND, TASEDITOR_REWIND, -1, 0, 0, 0, "Rewind 1 frame (mouse: Right button+Wheel up) (hotkey: Shift+Up)", false, EMUCMD_TASEDITOR_REWIND, 0,
|
||||||
WINDOWITEMS_PAUSE, TASEDITOR_PLAYSTOP, -1, 0, 0, 0, "Pause/Unpause Emulation (mouse: Middle button)", "", false, EMUCMD_PAUSE, 0,
|
WINDOWITEMS_PAUSE, TASEDITOR_PLAYSTOP, -1, 0, 0, 0, "Pause/Unpause Emulation (mouse: Middle button)", false, EMUCMD_PAUSE, 0,
|
||||||
WINDOWITEMS_FORWARD, TASEDITOR_FORWARD, -1, 0, 0, 0, "Advance 1 frame (mouse: Right button+Wheel down) (hotkey: Shift+Down)", "", false, EMUCMD_FRAME_ADVANCE, 0,
|
WINDOWITEMS_FORWARD, TASEDITOR_FORWARD, -1, 0, 0, 0, "Advance 1 frame (mouse: Right button+Wheel down) (hotkey: Shift+Down)", false, EMUCMD_FRAME_ADVANCE, 0,
|
||||||
WINDOWITEMS_FORWARD_FULL, TASEDITOR_FORWARD_FULL, -1, 0, 0, 0, "Send Playback to next Marker (mouse: Shift+Wheel down) (hotkey: Shift+PageDown)", "", false, 0, 0,
|
WINDOWITEMS_FORWARD_FULL, TASEDITOR_FORWARD_FULL, -1, 0, 0, 0, "Send Playback to next Marker (mouse: Shift+Wheel down) (hotkey: Shift+PageDown)", false, 0, 0,
|
||||||
WINDOWITEMS_PROGRESS_BAR, IDC_PROGRESS1, -1, 0, 0, 0, "", "", false, 0, 0,
|
WINDOWITEMS_PROGRESS_BAR, IDC_PROGRESS1, -1, 0, 0, 0, "", false, 0, 0,
|
||||||
WINDOWITEMS_FOLLOW_CURSOR, CHECK_FOLLOW_CURSOR, -1, 0, 0, 0, "The Piano Roll will follow Playback cursor movements", "", false, 0, 0,
|
WINDOWITEMS_FOLLOW_CURSOR, CHECK_FOLLOW_CURSOR, -1, 0, 0, 0, "The Piano Roll will follow Playback cursor movements", false, 0, 0,
|
||||||
WINDOWITEMS_TURBO_SEEK, CHECK_TURBO_SEEK, -1, 0, 0, 0, "Uncheck when you need to watch seeking in slow motion", "", false, 0, 0,
|
WINDOWITEMS_TURBO_SEEK, CHECK_TURBO_SEEK, -1, 0, 0, 0, "Uncheck when you need to watch seeking in slow motion", false, 0, 0,
|
||||||
WINDOWITEMS_AUTORESTORE_PLAYBACK, CHECK_AUTORESTORE_PLAYBACK, -1, 0, 0, 0, "Whenever you change Input above Playback cursor, the cursor returns to where it was before the change", "", false, EMUCMD_TASEDITOR_SWITCH_AUTORESTORING, 0,
|
WINDOWITEMS_AUTORESTORE_PLAYBACK, CHECK_AUTORESTORE_PLAYBACK, -1, 0, 0, 0, "Whenever you change Input above Playback cursor, the cursor returns to where it was before the change", false, EMUCMD_TASEDITOR_SWITCH_AUTORESTORING, 0,
|
||||||
WINDOWITEMS_RECORDER_BOX, IDC_RECORDER_BOX, -1, 0, 0, 0, "", "", false, 0, 0,
|
WINDOWITEMS_RECORDER_BOX, IDC_RECORDER_BOX, -1, 0, 0, 0, "", false, 0, 0,
|
||||||
WINDOWITEMS_RECORDING, IDC_RECORDING, -1, 0, 0, 0, "Switch Input Recording on/off", "", false, EMUCMD_MOVIE_READONLY_TOGGLE, 0,
|
WINDOWITEMS_RECORDING, IDC_RECORDING, -1, 0, 0, 0, "Switch Input Recording on/off", false, EMUCMD_MOVIE_READONLY_TOGGLE, 0,
|
||||||
WINDOWITEMS_RECORD_ALL, IDC_RADIO_ALL, -1, 0, 0, 0, "Switch off Multitracking", "", false, 0, 0,
|
WINDOWITEMS_RECORD_ALL, IDC_RADIO_ALL, -1, 0, 0, 0, "Switch off Multitracking", false, 0, 0,
|
||||||
WINDOWITEMS_RECORD_1P, IDC_RADIO_1P, -1, 0, 0, 0, "Select Joypad 1 as current", "", false, EMUCMD_TASEDITOR_SWITCH_MULTITRACKING, 0,
|
WINDOWITEMS_RECORD_1P, IDC_RADIO_1P, -1, 0, 0, 0, "Select Joypad 1 as current", false, EMUCMD_TASEDITOR_SWITCH_MULTITRACKING, 0,
|
||||||
WINDOWITEMS_RECORD_2P, IDC_RADIO_2P, -1, 0, 0, 0, "Select Joypad 2 as current", "", false, EMUCMD_TASEDITOR_SWITCH_MULTITRACKING, 0,
|
WINDOWITEMS_RECORD_2P, IDC_RADIO_2P, -1, 0, 0, 0, "Select Joypad 2 as current", false, EMUCMD_TASEDITOR_SWITCH_MULTITRACKING, 0,
|
||||||
WINDOWITEMS_RECORD_3P, IDC_RADIO_3P, -1, 0, 0, 0, "Select Joypad 3 as current", "", false, EMUCMD_TASEDITOR_SWITCH_MULTITRACKING, 0,
|
WINDOWITEMS_RECORD_3P, IDC_RADIO_3P, -1, 0, 0, 0, "Select Joypad 3 as current", false, EMUCMD_TASEDITOR_SWITCH_MULTITRACKING, 0,
|
||||||
WINDOWITEMS_RECORD_4P, IDC_RADIO_4P, -1, 0, 0, 0, "Select Joypad 4 as current", "", false, EMUCMD_TASEDITOR_SWITCH_MULTITRACKING, 0,
|
WINDOWITEMS_RECORD_4P, IDC_RADIO_4P, -1, 0, 0, 0, "Select Joypad 4 as current", false, EMUCMD_TASEDITOR_SWITCH_MULTITRACKING, 0,
|
||||||
WINDOWITEMS_SUPERIMPOSE, IDC_SUPERIMPOSE, -1, 0, 0, 0, "Allows to superimpose old Input with new buttons, instead of overwriting", "", false, 0, 0,
|
WINDOWITEMS_SUPERIMPOSE, IDC_SUPERIMPOSE, -1, 0, 0, 0, "Allows to superimpose old Input with new buttons, instead of overwriting", false, 0, 0,
|
||||||
WINDOWITEMS_USE_PATTERN, IDC_USEPATTERN, -1, 0, 0, 0, "Applies current Autofire Pattern to Input recording", "", false, 0, 0,
|
WINDOWITEMS_USE_PATTERN, IDC_USEPATTERN, -1, 0, 0, 0, "Applies current Autofire Pattern to Input recording", false, 0, 0,
|
||||||
WINDOWITEMS_SPLICER_BOX, IDC_SPLICER_BOX, -1, 0, 0, 0, "", "", false, 0, 0,
|
WINDOWITEMS_SPLICER_BOX, IDC_SPLICER_BOX, -1, 0, 0, 0, "", false, 0, 0,
|
||||||
WINDOWITEMS_SELECTION_TEXT, IDC_TEXT_SELECTION, -1, 0, 0, 0, "Current size of Selection", "", false, 0, 0,
|
WINDOWITEMS_SELECTION_TEXT, IDC_TEXT_SELECTION, -1, 0, 0, 0, "Current size of Selection", false, 0, 0,
|
||||||
WINDOWITEMS_CLIPBOARD_TEXT, IDC_TEXT_CLIPBOARD, -1, 0, 0, 0, "Current size of Input in the Clipboard", "", false, 0, 0,
|
WINDOWITEMS_CLIPBOARD_TEXT, IDC_TEXT_CLIPBOARD, -1, 0, 0, 0, "Current size of Input in the Clipboard", false, 0, 0,
|
||||||
WINDOWITEMS_LUA_BOX, IDC_LUA_BOX, -1, 0, 0, 0, "", "", false, 0, 0,
|
WINDOWITEMS_LUA_BOX, IDC_LUA_BOX, -1, 0, 0, 0, "", false, 0, 0,
|
||||||
WINDOWITEMS_RUN_MANUAL, TASEDITOR_RUN_MANUAL, -1, 0, 0, 0, "Press the button to execute Lua Manual Function", "", false, EMUCMD_TASEDITOR_RUN_MANUAL_LUA, 0,
|
WINDOWITEMS_RUN_MANUAL, TASEDITOR_RUN_MANUAL, -1, 0, 0, 0, "Press the button to execute Lua Manual Function", false, EMUCMD_TASEDITOR_RUN_MANUAL_LUA, 0,
|
||||||
WINDOWITEMS_RUN_AUTO, IDC_RUN_AUTO, -1, 0, 0, 0, "Enable Lua Auto Function (but first it must be registered by Lua script)", "", false, 0, 0,
|
WINDOWITEMS_RUN_AUTO, IDC_RUN_AUTO, -1, 0, 0, 0, "Enable Lua Auto Function (but first it must be registered by Lua script)", false, 0, 0,
|
||||||
WINDOWITEMS_BRANCHES_BUTTON, IDC_BRANCHES_BUTTON, -1, 0, 0, 0, "Click here to switch between Bookmarks List and Branches Tree", "", false, 0, 0,
|
WINDOWITEMS_BRANCHES_BUTTON, IDC_BRANCHES_BUTTON, -1, 0, 0, 0, "Click here to switch between Bookmarks List and Branches Tree", false, 0, 0,
|
||||||
WINDOWITEMS_BOOKMARKS_BOX, IDC_BOOKMARKS_BOX, -1, 0, 0, 0, "", "", false, 0, 0,
|
WINDOWITEMS_BOOKMARKS_BOX, IDC_BOOKMARKS_BOX, -1, 0, 0, 0, "", false, 0, 0,
|
||||||
WINDOWITEMS_BOOKMARKS_LIST, IDC_BOOKMARKSLIST, -1, 0, 0, 0, "Right click = set Bookmark, Left click = jump to Bookmark or load Branch", "", false, 0, 0,
|
WINDOWITEMS_BOOKMARKS_LIST, IDC_BOOKMARKSLIST, -1, 0, 0, 0, "Right click = set Bookmark, Left click = jump to Bookmark or load Branch", false, 0, 0,
|
||||||
WINDOWITEMS_BRANCHES_BITMAP, IDC_BRANCHES_BITMAP, -1, 0, 0, 0, "Right click = set Bookmark, single Left click = jump to Bookmark, double Left click = load Branch", "", false, 0, 0,
|
WINDOWITEMS_BRANCHES_BITMAP, IDC_BRANCHES_BITMAP, -1, 0, 0, 0, "Right click = set Bookmark, single Left click = jump to Bookmark, double Left click = load Branch", false, 0, 0,
|
||||||
WINDOWITEMS_HISTORY_BOX, IDC_HISTORY_BOX, -1, 0, 0, -1, "", "", false, 0, 0,
|
WINDOWITEMS_HISTORY_BOX, IDC_HISTORY_BOX, -1, 0, 0, -1, "", false, 0, 0,
|
||||||
WINDOWITEMS_HISTORY_LIST, IDC_HISTORYLIST, -1, 0, 0, -1, "Click to revert the project back to that time", "", false, 0, 0,
|
WINDOWITEMS_HISTORY_LIST, IDC_HISTORYLIST, -1, 0, 0, -1, "Click to revert the project back to that time", false, 0, 0,
|
||||||
WINDOWITEMS_PREVIOUS_MARKER, TASEDITOR_PREV_MARKER, -1, -1, 0, -1, "Send Selection to previous Marker (mouse: Ctrl+Wheel up) (hotkey: Ctrl+PageUp)", "", false, 0, 0,
|
WINDOWITEMS_PREVIOUS_MARKER, TASEDITOR_PREV_MARKER, -1, -1, 0, -1, "Send Selection to previous Marker (mouse: Ctrl+Wheel up) (hotkey: Ctrl+PageUp)", false, 0, 0,
|
||||||
WINDOWITEMS_SIMILAR, TASEDITOR_FIND_BEST_SIMILAR_MARKER, -1, -1, 0, -1, "Auto-search for Marker Note", "", false, 0, 0,
|
WINDOWITEMS_SIMILAR, TASEDITOR_FIND_BEST_SIMILAR_MARKER, -1, -1, 0, -1, "Auto-search for Marker Note", false, 0, 0,
|
||||||
WINDOWITEMS_MORE, TASEDITOR_FIND_NEXT_SIMILAR_MARKER, -1, -1, 0, -1, "Continue Auto-search", "", false, 0, 0,
|
WINDOWITEMS_MORE, TASEDITOR_FIND_NEXT_SIMILAR_MARKER, -1, -1, 0, -1, "Continue Auto-search", false, 0, 0,
|
||||||
WINDOWITEMS_NEXT_MARKER, TASEDITOR_NEXT_MARKER, -1, -1, 0, -1, "Send Selection to next Marker (mouse: Ctrl+Wheel up) (hotkey: Ctrl+PageDown)", "", false, 0, 0,
|
WINDOWITEMS_NEXT_MARKER, TASEDITOR_NEXT_MARKER, -1, -1, 0, -1, "Send Selection to next Marker (mouse: Ctrl+Wheel up) (hotkey: Ctrl+PageDown)", false, 0, 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
TASEDITOR_WINDOW::TASEDITOR_WINDOW()
|
TASEDITOR_WINDOW::TASEDITOR_WINDOW()
|
||||||
|
@ -186,6 +186,64 @@ TASEDITOR_WINDOW::TASEDITOR_WINDOW()
|
||||||
minHeight = 0;
|
minHeight = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TASEDITOR_WINDOW::updateTooltips()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < TASEDITOR_WINDOW_TOTAL_ITEMS; ++i)
|
||||||
|
{
|
||||||
|
TOOLINFO toolInfo = { 0 };
|
||||||
|
toolInfo.cbSize = sizeof(TOOLINFO);
|
||||||
|
toolInfo.hwnd = hwndTASEditor;
|
||||||
|
toolInfo.uId = (UINT_PTR)GetDlgItem(hwndTASEditor, windowItems[i].id);
|
||||||
|
if (windowItems[i].isStaticRect)
|
||||||
|
{
|
||||||
|
// for static text we specify rectangle
|
||||||
|
RECT toolRect;
|
||||||
|
GetWindowRect(GetDlgItem(hwndTASEditor, windowItems[i].id), &toolRect);
|
||||||
|
POINT pt;
|
||||||
|
pt.x = toolRect.left;
|
||||||
|
pt.y = toolRect.top;
|
||||||
|
ScreenToClient(hwndTASEditor, &pt);
|
||||||
|
toolInfo.rect.left = pt.x;
|
||||||
|
toolInfo.rect.top = pt.y;
|
||||||
|
toolInfo.rect.right = toolInfo.rect.left + toolRect.right - toolRect.left;
|
||||||
|
toolInfo.rect.bottom = toolInfo.rect.top + toolRect.bottom - toolRect.top;
|
||||||
|
toolInfo.uFlags = TTF_SUBCLASS;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
// for other controls we provide hwnd
|
||||||
|
toolInfo.uFlags = TTF_IDISHWND | TTF_SUBCLASS;
|
||||||
|
char tooltipText[TOOLTIP_TEXT_MAX_LEN];
|
||||||
|
if (windowItems[i].hotkeyEmuCmd && FCEUD_CommandMapping[windowItems[i].hotkeyEmuCmd])
|
||||||
|
{
|
||||||
|
// add hotkey mapping if needed
|
||||||
|
strcpy(tooltipText, windowItems[i].tooltipText);
|
||||||
|
strcat(tooltipText, " (hotkey: ");
|
||||||
|
strcat(tooltipText, GetKeyComboName(FCEUD_CommandMapping[windowItems[i].hotkeyEmuCmd]));
|
||||||
|
strcat(tooltipText, ")");
|
||||||
|
toolInfo.lpszText = tooltipText;
|
||||||
|
} else
|
||||||
|
// No hotkey, use the tooltip text itself
|
||||||
|
toolInfo.lpszText = windowItems[i].tooltipText;
|
||||||
|
|
||||||
|
if(!windowItems[i].tooltipHWND)
|
||||||
|
{
|
||||||
|
// if the tooltip handle is not created yet, create one
|
||||||
|
if (windowItems[i].tooltipHWND = CreateWindowEx(NULL, TOOLTIPS_CLASS, NULL,
|
||||||
|
WS_POPUP | TTS_ALWAYSTIP | TTS_BALLOON | TTS_NOANIMATE | TTS_NOFADE,
|
||||||
|
CW_USEDEFAULT, CW_USEDEFAULT,
|
||||||
|
CW_USEDEFAULT, CW_USEDEFAULT,
|
||||||
|
hwndTASEditor, NULL,
|
||||||
|
fceu_hInstance, NULL))
|
||||||
|
{
|
||||||
|
SendMessage(windowItems[i].tooltipHWND, TTM_ADDTOOL, 0, (LPARAM)&toolInfo);
|
||||||
|
SendMessage(windowItems[i].tooltipHWND, TTM_SETDELAYTIME, TTDT_AUTOPOP, TOOLTIPS_AUTOPOP_TIMEOUT);
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
// The tooltip handle is already created, just update the tooltip info
|
||||||
|
SendMessage(windowItems[i].tooltipHWND, TTM_SETTOOLINFO, 0, (LPARAM)&toolInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void TASEDITOR_WINDOW::init()
|
void TASEDITOR_WINDOW::init()
|
||||||
{
|
{
|
||||||
isReadyForResizing = false;
|
isReadyForResizing = false;
|
||||||
|
@ -203,61 +261,8 @@ void TASEDITOR_WINDOW::init()
|
||||||
updateCheckedItems();
|
updateCheckedItems();
|
||||||
hPatternsMenu = GetSubMenu(hMainMenu, PATTERNS_MENU_POS);
|
hPatternsMenu = GetSubMenu(hMainMenu, PATTERNS_MENU_POS);
|
||||||
// tooltips
|
// tooltips
|
||||||
for (int i = 0; i < TASEDITOR_WINDOW_TOTAL_ITEMS; ++i)
|
|
||||||
{
|
|
||||||
if (windowItems[i].tooltipTextBase[0])
|
|
||||||
{
|
|
||||||
windowItems[i].tooltipHWND = CreateWindowEx(NULL, TOOLTIPS_CLASS, NULL,
|
|
||||||
WS_POPUP | TTS_ALWAYSTIP | TTS_BALLOON | TTS_NOANIMATE | TTS_NOFADE,
|
|
||||||
CW_USEDEFAULT, CW_USEDEFAULT,
|
|
||||||
CW_USEDEFAULT, CW_USEDEFAULT,
|
|
||||||
hwndTASEditor, NULL,
|
|
||||||
fceu_hInstance, NULL);
|
|
||||||
if (windowItems[i].tooltipHWND)
|
|
||||||
{
|
|
||||||
// Associate the tooltip with the tool
|
|
||||||
TOOLINFO toolInfo = {0};
|
|
||||||
toolInfo.cbSize = sizeof(toolInfo);
|
|
||||||
toolInfo.hwnd = hwndTASEditor;
|
|
||||||
toolInfo.uId = (UINT_PTR)GetDlgItem(hwndTASEditor, windowItems[i].id);
|
|
||||||
if (windowItems[i].isStaticRect)
|
|
||||||
{
|
|
||||||
// for static text we specify rectangle
|
|
||||||
toolInfo.uFlags = TTF_SUBCLASS;
|
|
||||||
RECT toolRect;
|
|
||||||
GetWindowRect(GetDlgItem(hwndTASEditor, windowItems[i].id), &toolRect);
|
|
||||||
POINT pt;
|
|
||||||
pt.x = toolRect.left;
|
|
||||||
pt.y = toolRect.top;
|
|
||||||
ScreenToClient(hwndTASEditor, &pt);
|
|
||||||
toolInfo.rect.left = pt.x;
|
|
||||||
toolInfo.rect.right = toolInfo.rect.left + (toolRect.right - toolRect.left);
|
|
||||||
toolInfo.rect.top = pt.y;
|
|
||||||
toolInfo.rect.bottom = toolInfo.rect.top + (toolRect.bottom - toolRect.top);
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
// for other controls we provide hwnd
|
|
||||||
toolInfo.uFlags = TTF_IDISHWND | TTF_SUBCLASS;
|
|
||||||
}
|
|
||||||
// add hotkey mapping if needed
|
|
||||||
if (windowItems[i].hotkeyEmuCmd && FCEUD_CommandMapping[windowItems[i].hotkeyEmuCmd])
|
|
||||||
{
|
|
||||||
windowItems[i].tooltipText[0] = 0;
|
|
||||||
strcpy(windowItems[i].tooltipText, windowItems[i].tooltipTextBase);
|
|
||||||
strcat(windowItems[i].tooltipText, " (hotkey: ");
|
|
||||||
strncat(windowItems[i].tooltipText, GetKeyComboName(FCEUD_CommandMapping[windowItems[i].hotkeyEmuCmd]), TOOLTIP_TEXT_MAX_LEN - strlen(windowItems[i].tooltipText) - 1);
|
|
||||||
strncat(windowItems[i].tooltipText, ")", TOOLTIP_TEXT_MAX_LEN - strlen(windowItems[i].tooltipText) - 1);
|
|
||||||
toolInfo.lpszText = windowItems[i].tooltipText;
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
toolInfo.lpszText = windowItems[i].tooltipTextBase;
|
|
||||||
}
|
|
||||||
SendMessage(windowItems[i].tooltipHWND, TTM_ADDTOOL, 0, (LPARAM)&toolInfo);
|
|
||||||
SendMessage(windowItems[i].tooltipHWND, TTM_SETDELAYTIME, TTDT_AUTOPOP, TOOLTIPS_AUTOPOP_TIMEOUT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
updateTooltips();
|
updateTooltips();
|
||||||
|
toggleTooltips();
|
||||||
// subclass "Marker X" text fields
|
// subclass "Marker X" text fields
|
||||||
IDC_PLAYBACK_MARKER_oldWndProc = (WNDPROC)SetWindowLong(GetDlgItem(hwndTASEditor, IDC_PLAYBACK_MARKER), GWL_WNDPROC, (LONG)IDC_PLAYBACK_MARKER_WndProc);
|
IDC_PLAYBACK_MARKER_oldWndProc = (WNDPROC)SetWindowLong(GetDlgItem(hwndTASEditor, IDC_PLAYBACK_MARKER), GWL_WNDPROC, (LONG)IDC_PLAYBACK_MARKER_WndProc);
|
||||||
IDC_SELECTION_MARKER_oldWndProc = (WNDPROC)SetWindowLong(GetDlgItem(hwndTASEditor, IDC_SELECTION_MARKER), GWL_WNDPROC, (LONG)IDC_SELECTION_MARKER_WndProc);
|
IDC_SELECTION_MARKER_oldWndProc = (WNDPROC)SetWindowLong(GetDlgItem(hwndTASEditor, IDC_SELECTION_MARKER), GWL_WNDPROC, (LONG)IDC_SELECTION_MARKER_WndProc);
|
||||||
|
@ -535,7 +540,7 @@ void TASEDITOR_WINDOW::changeBookmarksListHeight(int newHeight)
|
||||||
ShowWindow(hwndTASEditor, SW_SHOWMAXIMIZED);
|
ShowWindow(hwndTASEditor, SW_SHOWMAXIMIZED);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TASEDITOR_WINDOW::updateTooltips()
|
void TASEDITOR_WINDOW::toggleTooltips()
|
||||||
{
|
{
|
||||||
if (taseditorConfig.tooltipsEnabled)
|
if (taseditorConfig.tooltipsEnabled)
|
||||||
{
|
{
|
||||||
|
@ -1258,7 +1263,7 @@ BOOL CALLBACK TASEditorWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPara
|
||||||
case ID_HELP_TOOLTIPS:
|
case ID_HELP_TOOLTIPS:
|
||||||
taseditorConfig.tooltipsEnabled ^= 1;
|
taseditorConfig.tooltipsEnabled ^= 1;
|
||||||
taseditorWindow.updateCheckedItems();
|
taseditorWindow.updateCheckedItems();
|
||||||
taseditorWindow.updateTooltips();
|
taseditorWindow.toggleTooltips();
|
||||||
break;
|
break;
|
||||||
case ID_HELP_ABOUT:
|
case ID_HELP_ABOUT:
|
||||||
DialogBox(fceu_hInstance, MAKEINTRESOURCE(IDD_TASEDITOR_ABOUT), taseditorWindow.hwndTASEditor, aboutWndProc);
|
DialogBox(fceu_hInstance, MAKEINTRESOURCE(IDD_TASEDITOR_ABOUT), taseditorWindow.hwndTASEditor, aboutWndProc);
|
||||||
|
|
|
@ -62,8 +62,8 @@ struct WindowItemData
|
||||||
int y;
|
int y;
|
||||||
int width;
|
int width;
|
||||||
int height;
|
int height;
|
||||||
char tooltipTextBase[TOOLTIP_TEXT_MAX_LEN];
|
// char* tooltipTextBase;
|
||||||
char tooltipText[TOOLTIP_TEXT_MAX_LEN];
|
char* tooltipText;
|
||||||
bool isStaticRect;
|
bool isStaticRect;
|
||||||
int hotkeyEmuCmd;
|
int hotkeyEmuCmd;
|
||||||
HWND tooltipHWND;
|
HWND tooltipHWND;
|
||||||
|
@ -83,6 +83,7 @@ public:
|
||||||
void handleWindowMovingOrResizing();
|
void handleWindowMovingOrResizing();
|
||||||
void changeBookmarksListHeight(int newHeight);
|
void changeBookmarksListHeight(int newHeight);
|
||||||
|
|
||||||
|
void toggleTooltips();
|
||||||
void updateTooltips();
|
void updateTooltips();
|
||||||
void updateCaption();
|
void updateCaption();
|
||||||
void updateCheckedItems();
|
void updateCheckedItems();
|
||||||
|
|
|
@ -14,3 +14,5 @@ void UpdateTextHooker();
|
||||||
void KillTextHooker();
|
void KillTextHooker();
|
||||||
void DoTextHooker();
|
void DoTextHooker();
|
||||||
void TextHookerCheck();
|
void TextHookerCheck();
|
||||||
|
|
||||||
|
extern HWND hTextHooker;
|
|
@ -44,20 +44,23 @@ void CloseTimingDialog(HWND hwndDlg)
|
||||||
if (postrenderscanlines < 0)
|
if (postrenderscanlines < 0)
|
||||||
{
|
{
|
||||||
postrenderscanlines = 0;
|
postrenderscanlines = 0;
|
||||||
MessageBox(hwndDlg, "Overclocking is when you speed up your CPU, not slow it down!", "Error", MB_OK);
|
MessageBox(hwndDlg, "Overclocking is when you speed up your CPU, not slow it down!", "Error", MB_OK | MB_ICONERROR);
|
||||||
sprintf(str,"%d",postrenderscanlines);
|
sprintf(str,"%d",postrenderscanlines);
|
||||||
SetDlgItemText(hwndDlg,IDC_EXTRA_SCANLINES,str);
|
SetDlgItemText(hwndDlg,IDC_EXTRA_SCANLINES,str);
|
||||||
|
SetFocus(GetDlgItem(hwndDlg, IDC_EXTRA_SCANLINES));
|
||||||
}
|
}
|
||||||
else if (vblankscanlines < 0)
|
else if (vblankscanlines < 0)
|
||||||
{
|
{
|
||||||
vblankscanlines = 0;
|
vblankscanlines = 0;
|
||||||
MessageBox(hwndDlg, "Overclocking is when you speed up your CPU, not slow it down!", "Error", MB_OK);
|
MessageBox(hwndDlg, "Overclocking is when you speed up your CPU, not slow it down!", "Error", MB_OK | MB_ICONERROR);
|
||||||
sprintf(str,"%d",vblankscanlines);
|
sprintf(str,"%d",vblankscanlines);
|
||||||
SetDlgItemText(hwndDlg,IDC_VBLANK_SCANLINES,str);
|
SetDlgItemText(hwndDlg,IDC_VBLANK_SCANLINES,str);
|
||||||
|
SetFocus(GetDlgItem(hwndDlg, IDC_VBLANK_SCANLINES));
|
||||||
}
|
}
|
||||||
else if (overclock_enabled && newppu)
|
else if (overclock_enabled && newppu)
|
||||||
{
|
{
|
||||||
MessageBox(hwndDlg, "Overclocking doesn't work with new PPU!", "Error", MB_OK);
|
MessageBox(hwndDlg, "Overclocking doesn't work with new PPU!", "Error", MB_OK | MB_ICONERROR);
|
||||||
|
SetFocus(GetDlgItem(hwndDlg, CB_OVERCLOCKING));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
EndDialog(hwndDlg, 0);
|
EndDialog(hwndDlg, 0);
|
||||||
|
@ -85,9 +88,20 @@ BOOL CALLBACK TimingConCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
|
||||||
CheckDlgButton(hwndDlg, CB_DISABLE_SPEED_THROTTLING, BST_CHECKED);
|
CheckDlgButton(hwndDlg, CB_DISABLE_SPEED_THROTTLING, BST_CHECKED);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(overclock_enabled)
|
if(newppu)
|
||||||
CheckDlgButton(hwndDlg, CB_OVERCLOCKING, BST_CHECKED);
|
{
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, CB_OVERCLOCKING), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(overclock_enabled)
|
||||||
|
{
|
||||||
|
CheckDlgButton(hwndDlg, CB_OVERCLOCKING, BST_CHECKED);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDC_EXTRA_SCANLINES), true);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, CB_SKIP_7BIT), true);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDC_VBLANK_SCANLINES), true);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDC_VBLANK_SCANLINES_TEXT), true);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDC_EXTRA_SCANLINES_TEXT), true);
|
||||||
|
}
|
||||||
if(skip_7bit_overclocking)
|
if(skip_7bit_overclocking)
|
||||||
CheckDlgButton(hwndDlg, CB_SKIP_7BIT, BST_CHECKED);
|
CheckDlgButton(hwndDlg, CB_SKIP_7BIT, BST_CHECKED);
|
||||||
|
|
||||||
|
@ -117,6 +131,16 @@ BOOL CALLBACK TimingConCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
CloseTimingDialog(hwndDlg);
|
CloseTimingDialog(hwndDlg);
|
||||||
|
break;
|
||||||
|
case CB_OVERCLOCKING:
|
||||||
|
bool chk = IsDlgButtonChecked(hwndDlg, CB_OVERCLOCKING) == BST_CHECKED;
|
||||||
|
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDC_EXTRA_SCANLINES), chk);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, CB_SKIP_7BIT), chk);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDC_VBLANK_SCANLINES), chk);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDC_VBLANK_SCANLINES_TEXT), chk);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDC_EXTRA_SCANLINES_TEXT), chk);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1283,6 +1283,11 @@ BOOL CALLBACK VideoConCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
|
||||||
strcat(buf, " (double-click anywhere)");
|
strcat(buf, " (double-click anywhere)");
|
||||||
}
|
}
|
||||||
SetDlgItemText(hwndDlg, IDC_VIDEOCONFIG_FS, buf);
|
SetDlgItemText(hwndDlg, IDC_VIDEOCONFIG_FS, buf);
|
||||||
|
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDC_TVASPECT_X), eoptions&EO_TVASPECT);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDC_TVASPECT_Y), eoptions&EO_TVASPECT);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDC_STATIC_SLASHTEXT), eoptions&EO_TVASPECT);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case WM_CLOSE:
|
case WM_CLOSE:
|
||||||
|
@ -1398,6 +1403,11 @@ gornk:
|
||||||
fssync=SendDlgItemMessage(hwndDlg,IDC_VIDEOCONFIG_SYNC_METHOD_FS,CB_GETCURSEL,0,(LPARAM)(LPSTR)0);
|
fssync=SendDlgItemMessage(hwndDlg,IDC_VIDEOCONFIG_SYNC_METHOD_FS,CB_GETCURSEL,0,(LPARAM)(LPSTR)0);
|
||||||
EndDialog(hwndDlg,0);
|
EndDialog(hwndDlg,0);
|
||||||
break;
|
break;
|
||||||
|
case IDC_VIDEOCONFIG_TVASPECT:
|
||||||
|
bool enable = SendDlgItemMessage(hwndDlg, IDC_VIDEOCONFIG_TVASPECT, BM_GETCHECK, 0, 0) == BST_CHECKED;
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDC_TVASPECT_X), enable);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDC_TVASPECT_Y), enable);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDC_STATIC_SLASHTEXT), enable);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -94,7 +94,6 @@ using namespace std;
|
||||||
#define FCEUX_CONTEXT_TOGGLESUBTITLES 60003
|
#define FCEUX_CONTEXT_TOGGLESUBTITLES 60003
|
||||||
#define FCEUX_CONTEXT_DUMPSUBTITLES 60004
|
#define FCEUX_CONTEXT_DUMPSUBTITLES 60004
|
||||||
|
|
||||||
|
|
||||||
//********************************************************************************
|
//********************************************************************************
|
||||||
//Globals
|
//Globals
|
||||||
//********************************************************************************
|
//********************************************************************************
|
||||||
|
@ -109,6 +108,9 @@ HMENU hfceuxcontext; //Handle to context menu
|
||||||
HMENU hfceuxcontextsub; //Handle to context sub menu
|
HMENU hfceuxcontextsub; //Handle to context sub menu
|
||||||
HWND MainhWnd; //Main FCEUX(Parent) window Handle. Dialogs should use GetMainHWND() to get this
|
HWND MainhWnd; //Main FCEUX(Parent) window Handle. Dialogs should use GetMainHWND() to get this
|
||||||
|
|
||||||
|
// HWND list for menu update, refers to FCEU_MENU_HWND
|
||||||
|
HMENU hmenuList[FCEUMENU_LIMIT];
|
||||||
|
|
||||||
//Extern variables-------------------------------------
|
//Extern variables-------------------------------------
|
||||||
extern bool movieSubtitles;
|
extern bool movieSubtitles;
|
||||||
extern FCEUGI *GameInfo;
|
extern FCEUGI *GameInfo;
|
||||||
|
@ -418,9 +420,9 @@ void UpdateCheckedMenuItems()
|
||||||
CheckMenuItem(fceumenu, polo2[x], *polo[x] ? MF_CHECKED : MF_UNCHECKED);
|
CheckMenuItem(fceumenu, polo2[x], *polo[x] ? MF_CHECKED : MF_UNCHECKED);
|
||||||
}
|
}
|
||||||
//File Menu
|
//File Menu
|
||||||
CheckMenuItem(fceumenu, ID_FILE_RECORDMODE_TRUNCATE, movieRecordMode == MOVIE_RECORD_MODE_TRUNCATE ? MF_CHECKED : MF_UNCHECKED);
|
if (movieRecordMode == MOVIE_RECORD_MODE_TRUNCATE) CheckMenuRadioItem(fceumenu, ID_FILE_RECORDMODE_TRUNCATE, ID_FILE_RECORDMODE_INSERT, ID_FILE_RECORDMODE_TRUNCATE, MF_BYCOMMAND);
|
||||||
CheckMenuItem(fceumenu, ID_FILE_RECORDMODE_OVERWRITE, movieRecordMode == MOVIE_RECORD_MODE_OVERWRITE ? MF_CHECKED : MF_UNCHECKED);
|
if (movieRecordMode == MOVIE_RECORD_MODE_OVERWRITE) CheckMenuRadioItem(fceumenu, ID_FILE_RECORDMODE_TRUNCATE, ID_FILE_RECORDMODE_INSERT, ID_FILE_RECORDMODE_OVERWRITE, MF_BYCOMMAND);
|
||||||
CheckMenuItem(fceumenu, ID_FILE_RECORDMODE_INSERT, movieRecordMode == MOVIE_RECORD_MODE_INSERT ? MF_CHECKED : MF_UNCHECKED);
|
if (movieRecordMode == MOVIE_RECORD_MODE_INSERT) CheckMenuRadioItem(fceumenu, ID_FILE_RECORDMODE_TRUNCATE, ID_FILE_RECORDMODE_INSERT, ID_FILE_RECORDMODE_INSERT, MF_BYCOMMAND);
|
||||||
CheckMenuItem(fceumenu, ID_FILE_MOVIE_TOGGLEREAD, movie_readonly ? MF_CHECKED : MF_UNCHECKED);
|
CheckMenuItem(fceumenu, ID_FILE_MOVIE_TOGGLEREAD, movie_readonly ? MF_CHECKED : MF_UNCHECKED);
|
||||||
CheckMenuItem(fceumenu, ID_FILE_OPENLUAWINDOW, LuaConsoleHWnd ? MF_CHECKED : MF_UNCHECKED);
|
CheckMenuItem(fceumenu, ID_FILE_OPENLUAWINDOW, LuaConsoleHWnd ? MF_CHECKED : MF_UNCHECKED);
|
||||||
CheckMenuItem(fceumenu, ID_AVI_ENABLEHUDRECORDING, FCEUI_AviEnableHUDrecording() ? MF_CHECKED : MF_UNCHECKED);
|
CheckMenuItem(fceumenu, ID_AVI_ENABLEHUDRECORDING, FCEUI_AviEnableHUDrecording() ? MF_CHECKED : MF_UNCHECKED);
|
||||||
|
@ -514,9 +516,9 @@ void UpdateContextMenuItems(HMENU context, int whichContext)
|
||||||
EnableMenuItem(context, FCEUX_CONTEXT_DELETE_1_FRAME, MF_BYCOMMAND | MF_GRAYED);
|
EnableMenuItem(context, FCEUX_CONTEXT_DELETE_1_FRAME, MF_BYCOMMAND | MF_GRAYED);
|
||||||
EnableMenuItem(context, FCEUX_CONTEXT_TRUNCATE_MOVIE, MF_BYCOMMAND | MF_GRAYED);
|
EnableMenuItem(context, FCEUX_CONTEXT_TRUNCATE_MOVIE, MF_BYCOMMAND | MF_GRAYED);
|
||||||
}
|
}
|
||||||
CheckMenuItem(context, FCEUX_CONTEXT_RECORDMODE_TRUNCATE, movieRecordMode == MOVIE_RECORD_MODE_TRUNCATE ? MF_CHECKED : MF_UNCHECKED);
|
if (movieRecordMode == MOVIE_RECORD_MODE_TRUNCATE) CheckMenuRadioItem(context, FCEUX_CONTEXT_RECORDMODE_TRUNCATE, FCEUX_CONTEXT_RECORDMODE_INSERT, FCEUX_CONTEXT_RECORDMODE_TRUNCATE, MF_BYCOMMAND);
|
||||||
CheckMenuItem(context, FCEUX_CONTEXT_RECORDMODE_OVERWRITE, movieRecordMode == MOVIE_RECORD_MODE_OVERWRITE ? MF_CHECKED : MF_UNCHECKED);
|
if (movieRecordMode == MOVIE_RECORD_MODE_OVERWRITE) CheckMenuRadioItem(context, FCEUX_CONTEXT_RECORDMODE_TRUNCATE, FCEUX_CONTEXT_RECORDMODE_INSERT, FCEUX_CONTEXT_RECORDMODE_OVERWRITE, MF_BYCOMMAND);
|
||||||
CheckMenuItem(context, FCEUX_CONTEXT_RECORDMODE_INSERT, movieRecordMode == MOVIE_RECORD_MODE_INSERT ? MF_CHECKED : MF_UNCHECKED);
|
if (movieRecordMode == MOVIE_RECORD_MODE_INSERT) CheckMenuRadioItem(context, FCEUX_CONTEXT_RECORDMODE_TRUNCATE, FCEUX_CONTEXT_RECORDMODE_INSERT, FCEUX_CONTEXT_RECORDMODE_INSERT, MF_BYCOMMAND);
|
||||||
|
|
||||||
//Undo Loadstate
|
//Undo Loadstate
|
||||||
if (CheckBackupSaveStateExist() && (undoLS || redoLS))
|
if (CheckBackupSaveStateExist() && (undoLS || redoLS))
|
||||||
|
@ -568,12 +570,12 @@ void UpdateContextMenuItems(HMENU context, int whichContext)
|
||||||
if (tog)
|
if (tog)
|
||||||
{
|
{
|
||||||
InsertMenu(context, 0xFFFF, MF_SEPARATOR, 0, "");
|
InsertMenu(context, 0xFFFF, MF_SEPARATOR, 0, "");
|
||||||
InsertMenu(context,0xFFFF, MF_BYCOMMAND, FCEUX_CONTEXT_UNHIDEMENU, "Unhide Menu");
|
InsertMenu(context,0xFFFF, MF_BYCOMMAND, FCEUX_CONTEXT_UNHIDEMENU, HOTKEYMENUINDEX::getQualifiedMenuText("Unhide Menu", EMUCMD_HIDE_MENU_TOGGLE).c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (whichContext > 1 && currMovieData.subtitles.size() != 0){
|
if (whichContext > 1 && currMovieData.subtitles.size() != 0){
|
||||||
// At position 3 is "View comments and subtitles". Insert this there:
|
// At position 3 is "View comments and subtitles". Insert this there:
|
||||||
InsertMenu(context,0x3, MF_BYPOSITION, FCEUX_CONTEXT_TOGGLESUBTITLES, movieSubtitles ? "Subtitle Display: On" : "Subtitle Display: Off");
|
InsertMenu(context,0x3, MF_BYPOSITION, FCEUX_CONTEXT_TOGGLESUBTITLES, HOTKEYMENUINDEX::getQualifiedMenuText(movieSubtitles ? "Subtitle Display: On" : "Subtitle Display: Off", EMUCMD_MISC_DISPLAY_MOVIESUBTITLES).c_str());
|
||||||
// At position 4(+1) is after View comments and subtitles. Insert this there:
|
// At position 4(+1) is after View comments and subtitles. Insert this there:
|
||||||
InsertMenu(context,0x5, MF_BYPOSITION, FCEUX_CONTEXT_DUMPSUBTITLES, "Dump Subtitles to SRT file");
|
InsertMenu(context,0x5, MF_BYPOSITION, FCEUX_CONTEXT_DUMPSUBTITLES, "Dump Subtitles to SRT file");
|
||||||
}
|
}
|
||||||
|
@ -1067,7 +1069,9 @@ bool ALoad(const char *nameo, char* innerFilename, bool silent)
|
||||||
{
|
{
|
||||||
int oldPaused = EmulationPaused;
|
int oldPaused = EmulationPaused;
|
||||||
|
|
||||||
if (GameInfo) FCEUI_CloseGame();
|
// loading is not started yet, so the game can continue;
|
||||||
|
// FCEUI_LoadGameVirtual() already had an FCEUI_CloseGame() call after loading success;
|
||||||
|
// if (GameInfo) FCEUI_CloseGame();
|
||||||
|
|
||||||
if (FCEUI_LoadGameVirtual(nameo, !(pal_setting_specified || dendy_setting_specified), silent))
|
if (FCEUI_LoadGameVirtual(nameo, !(pal_setting_specified || dendy_setting_specified), silent))
|
||||||
{
|
{
|
||||||
|
@ -1418,7 +1422,9 @@ LRESULT FAR PASCAL AppWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
|
||||||
whichContext = 0; // NoGame
|
whichContext = 0; // NoGame
|
||||||
|
|
||||||
hfceuxcontext = LoadMenu(fceu_hInstance,"FCEUCONTEXTMENUS");
|
hfceuxcontext = LoadMenu(fceu_hInstance,"FCEUCONTEXTMENUS");
|
||||||
|
hmenuList[FCEUMENU_HWND::FCEUMENU_CONTEXT] = hfceuxcontext;
|
||||||
hfceuxcontextsub = GetSubMenu(hfceuxcontext, whichContext);
|
hfceuxcontextsub = GetSubMenu(hfceuxcontext, whichContext);
|
||||||
|
hmenuList[whichContext] = hfceuxcontextsub;
|
||||||
UpdateContextMenuItems(hfceuxcontextsub, whichContext);
|
UpdateContextMenuItems(hfceuxcontextsub, whichContext);
|
||||||
pt.x = LOWORD(lParam); //Get mouse x in terms of client area
|
pt.x = LOWORD(lParam); //Get mouse x in terms of client area
|
||||||
pt.y = HIWORD(lParam); //Get mouse y in terms of client area
|
pt.y = HIWORD(lParam); //Get mouse y in terms of client area
|
||||||
|
@ -1542,12 +1548,25 @@ LRESULT FAR PASCAL AppWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
|
||||||
{
|
{
|
||||||
UINT len;
|
UINT len;
|
||||||
|
|
||||||
len=DragQueryFileW((HDROP)wParam,0,0,0)+1;
|
/*
|
||||||
wchar_t* wftmp = new wchar_t[len];
|
Using DragQueryFileW() and wcstombs() is not a proper way to convert Unicode string
|
||||||
|
to a multibyte one, the system has its own codepage but wcstombs seems ignores it and only
|
||||||
|
convert it to UTF-8. Similarly, functions such named FCEUD_UTF8fopen() acturally perform ANSI
|
||||||
|
behaviour which follows the codepage of the system rather than UTF-8. I knew Windows with some
|
||||||
|
languages has a very narrow codepage like 1252 and may have a problem to load a filename
|
||||||
|
which contains extra characters without its convert, but the wcstombs() may corrupt the string
|
||||||
|
to garbage text to the title and menu in some multibyte language Windows systems, it's due to
|
||||||
|
the limitation of ANSI application and system itself, not the fault of the emulator, so there's
|
||||||
|
no responsibility for the emulator to use a different API to solve it, just leave it as the
|
||||||
|
default definition.
|
||||||
|
*/
|
||||||
|
len = DragQueryFile((HDROP)wParam, 0, 0, 0) + 1;
|
||||||
|
char* ftmp = new char[len];
|
||||||
{
|
{
|
||||||
DragQueryFileW((HDROP)wParam,0,wftmp,len);
|
DragQueryFile((HDROP)wParam,0,ftmp,len);
|
||||||
std::string fileDropped = wcstombs(wftmp);
|
// std::string fileDropped = wcstombs(wftmp);
|
||||||
delete[] wftmp;
|
std::string fileDropped = ftmp;
|
||||||
|
delete[] ftmp;
|
||||||
//adelikat: Drag and Drop only checks file extension, the internal functions are responsible for file error checking
|
//adelikat: Drag and Drop only checks file extension, the internal functions are responsible for file error checking
|
||||||
|
|
||||||
//-------------------------------------------------------
|
//-------------------------------------------------------
|
||||||
|
@ -2090,6 +2109,9 @@ LRESULT FAR PASCAL AppWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_NEWPPU:
|
case ID_NEWPPU:
|
||||||
|
if(overclock_enabled &&
|
||||||
|
MessageBox(hWnd, "The new PPU doesn't support overclocking, it will be disabled. Do you want to continue?", "Overclocking", MB_ICONQUESTION | MB_YESNO) == IDNO)
|
||||||
|
break;
|
||||||
case ID_OLDPPU:
|
case ID_OLDPPU:
|
||||||
FCEU_TogglePPU();
|
FCEU_TogglePPU();
|
||||||
break;
|
break;
|
||||||
|
@ -2667,6 +2689,7 @@ int CreateMainWindow()
|
||||||
AdjustWindowRectEx(&tmp, WS_OVERLAPPEDWINDOW, 1, 0);
|
AdjustWindowRectEx(&tmp, WS_OVERLAPPEDWINDOW, 1, 0);
|
||||||
|
|
||||||
fceumenu = LoadMenu(fceu_hInstance,"FCEUMENU");
|
fceumenu = LoadMenu(fceu_hInstance,"FCEUMENU");
|
||||||
|
hmenuList[FCEUMENU_MAIN] = fceumenu;
|
||||||
|
|
||||||
recentmenu = CreateMenu();
|
recentmenu = CreateMenu();
|
||||||
recentluamenu = CreateMenu();
|
recentluamenu = CreateMenu();
|
||||||
|
@ -2873,300 +2896,274 @@ void ChangeMenuItemText(int menuitem, string text)
|
||||||
SetMenuItemInfo(fceumenu, menuitem, FALSE, &moo);
|
SetMenuItemInfo(fceumenu, menuitem, FALSE, &moo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
string HOTKEYMENUINDEX::getQualifiedMenuText() {
|
||||||
|
int length = GetMenuString(hmenuList[hmenu_index], menu_id, 0, 0, flags) + 1;
|
||||||
|
char* buffer = new char[length];
|
||||||
|
GetMenuString(hmenuList[hmenu_index], menu_id, buffer, length, flags);
|
||||||
|
if (char* pTab = strrchr(buffer, '\t'))
|
||||||
|
*pTab = '\0';
|
||||||
|
std::string menustr = HOTKEYMENUINDEX::getQualifiedMenuText(buffer, cmd_id);
|
||||||
|
delete[] buffer;
|
||||||
|
return menustr;
|
||||||
|
}
|
||||||
|
|
||||||
|
string HOTKEYMENUINDEX::getQualifiedMenuText(char* text, int emu_cmd_id) {
|
||||||
|
char* combo = GetKeyComboName(FCEUD_CommandMapping[emu_cmd_id]);
|
||||||
|
char* str = new char[strlen(text) + strlen(combo) + strlen("\t") + 1];
|
||||||
|
strcpy(str, text);
|
||||||
|
if (strcmp("", combo))
|
||||||
|
{
|
||||||
|
strcat(str, "\t");
|
||||||
|
strcat(str, combo);
|
||||||
|
}
|
||||||
|
string menustr = str;
|
||||||
|
delete[] str;
|
||||||
|
return menustr;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct HOTKEYMENUINDEX HOTKEYMENUINDEXs[] = {
|
||||||
|
// "&Open..."
|
||||||
|
{ MENU_OPEN_FILE,EMUCMD_OPENROM },
|
||||||
|
// "Open ROM"
|
||||||
|
{ FCEU_CONTEXT_OPENROM,EMUCMD_OPENROM,FCEUMENU_CONTEXT_OFF },
|
||||||
|
// "&Close"
|
||||||
|
{ MENU_CLOSE_FILE,EMUCMD_CLOSEROM },
|
||||||
|
// "Close ROM"
|
||||||
|
{ FCEU_CONTEXT_CLOSEROM,EMUCMD_CLOSEROM,FCEUMENU_CONTEXT_GAME },
|
||||||
|
// "&Load State"
|
||||||
|
{ MENU_LOADSTATE,EMUCMD_LOAD_STATE,FCEUMENU_CONTEXT_GAME },
|
||||||
|
// "&Save State"
|
||||||
|
{ MENU_SAVESTATE,EMUCMD_SAVE_STATE },
|
||||||
|
// "Load State &From..."
|
||||||
|
{ MENU_LOAD_STATE,EMUCMD_LOAD_STATE_FROM },
|
||||||
|
// "Save State &As..."
|
||||||
|
{ MENU_SAVE_STATE,EMUCMD_SAVE_STATE_AS },
|
||||||
|
// "&Next save slot"
|
||||||
|
{ MENU_NEXTSAVESTATE,EMUCMD_SAVE_SLOT_NEXT },
|
||||||
|
// "&Previous save slot"
|
||||||
|
{ MENU_PREVIOUSSAVESTATE,EMUCMD_SAVE_SLOT_PREV },
|
||||||
|
// "&View save slots"
|
||||||
|
{ MENU_VIEWSAVESLOTS,EMUCMD_MISC_SHOWSTATES },
|
||||||
|
// "Record Movie..."
|
||||||
|
{ FCEUX_CONTEXT_RECORDMOVIE,EMUCMD_MOVIE_RECORD_TO,FCEUMENU_CONTEXT_GAME },
|
||||||
|
// "&Record Movie..."
|
||||||
|
{ MENU_RECORD_MOVIE,EMUCMD_MOVIE_RECORD_TO },
|
||||||
|
// "Play Movie..."
|
||||||
|
{ FCEUX_CONTEXT_REPLAYMOVIE,EMUCMD_MOVIE_REPLAY_FROM,FCEUMENU_CONTEXT_GAME },
|
||||||
|
// "&Play Movie..."
|
||||||
|
{ MENU_REPLAY_MOVIE,EMUCMD_MOVIE_REPLAY_FROM },
|
||||||
|
// "&Stop Movie"
|
||||||
|
{ MENU_STOP_MOVIE,EMUCMD_MOVIE_STOP },
|
||||||
|
// "Stop Movie Replay"
|
||||||
|
{ FCEU_CONTEXT_STOPMOVIE,EMUCMD_MOVIE_STOP,FCEUMENU_CONTEXT_PLAYING_READONLY },
|
||||||
|
// "Stop Movie Replay"
|
||||||
|
{ FCEU_CONTEXT_STOPMOVIE,EMUCMD_MOVIE_STOP,FCEUMENU_CONTEXT_PLAYING_READWRITE },
|
||||||
|
// "Stop Movie Recording"
|
||||||
|
{ FCEU_CONTEXT_STOPMOVIE,EMUCMD_MOVIE_STOP,FCEUMENU_CONTEXT_RECORDING_READONLY },
|
||||||
|
// "Stop Movie Recording"
|
||||||
|
{ FCEU_CONTEXT_STOPMOVIE,EMUCMD_MOVIE_STOP,FCEUMENU_CONTEXT_RECORDING_READWRITE },
|
||||||
|
// "Play Movie from Beginning"
|
||||||
|
{ FCEU_CONTEXT_PLAYMOVIEFROMBEGINNING,EMUCMD_MOVIE_PLAY_FROM_BEGINNING,FCEUMENU_CONTEXT_PLAYING_READONLY },
|
||||||
|
// "Play Movie from Beginning"
|
||||||
|
{ FCEU_CONTEXT_PLAYMOVIEFROMBEGINNING,EMUCMD_MOVIE_PLAY_FROM_BEGINNING,FCEUMENU_CONTEXT_PLAYING_READWRITE },
|
||||||
|
// "Play Movie from Beginning"
|
||||||
|
{ FCEU_CONTEXT_PLAYMOVIEFROMBEGINNING,EMUCMD_MOVIE_PLAY_FROM_BEGINNING,FCEUMENU_CONTEXT_RECORDING_READONLY },
|
||||||
|
// "Play Movie from Beginning"
|
||||||
|
{ FCEU_CONTEXT_PLAYMOVIEFROMBEGINNING,EMUCMD_MOVIE_PLAY_FROM_BEGINNING,FCEUMENU_CONTEXT_RECORDING_READWRITE },
|
||||||
|
// "Play from &Beginning"
|
||||||
|
{ ID_FILE_PLAYMOVIEFROMBEGINNING,EMUCMD_MOVIE_PLAY_FROM_BEGINNING },
|
||||||
|
// "&Read-only"
|
||||||
|
{ ID_FILE_MOVIE_TOGGLEREAD,EMUCMD_MOVIE_READONLY_TOGGLE },
|
||||||
|
// "Toggle to read+write"
|
||||||
|
{ FCEUX_CONTEXT_READONLYTOGGLE,EMUCMD_MOVIE_READONLY_TOGGLE,FCEUMENU_CONTEXT_PLAYING_READONLY },
|
||||||
|
// "Toggle to Read-only"
|
||||||
|
{ FCEUX_CONTEXT_READONLYTOGGLE,EMUCMD_MOVIE_READONLY_TOGGLE,FCEUMENU_CONTEXT_PLAYING_READWRITE },
|
||||||
|
// "Toggle to read+write"
|
||||||
|
{ FCEUX_CONTEXT_READONLYTOGGLE,EMUCMD_MOVIE_READONLY_TOGGLE,FCEUMENU_CONTEXT_RECORDING_READONLY },
|
||||||
|
// "Toggle to Read-only"
|
||||||
|
{ FCEUX_CONTEXT_READONLYTOGGLE,EMUCMD_MOVIE_READONLY_TOGGLE,FCEUMENU_CONTEXT_RECORDING_READWRITE },
|
||||||
|
// "&Screenshot"
|
||||||
|
{ ID_FILE_SCREENSHOT,EMUCMD_SCREENSHOT },
|
||||||
|
// "Screenshot"
|
||||||
|
{ FCEUX_CONTEXT_SCREENSHOT,EMUCMD_SCREENSHOT, FCEUMENU_CONTEXT_GAME },
|
||||||
|
// "&Record AVI..."
|
||||||
|
{ MENU_RECORD_AVI,EMUCMD_AVI_RECORD_AS },
|
||||||
|
//"&Stop AVI"
|
||||||
|
{ MENU_STOP_AVI,EMUCMD_AVI_STOP },
|
||||||
|
// "&Reset"
|
||||||
|
{ MENU_RESET,EMUCMD_RESET },
|
||||||
|
// "&Power"
|
||||||
|
{ MENU_POWER,EMUCMD_POWER },
|
||||||
|
// "&Eject/Insert Disk"
|
||||||
|
{ MENU_EJECT_DISK,EMUCMD_FDS_EJECT_INSERT },
|
||||||
|
// "&Switch Disk Side"
|
||||||
|
{ MENU_SWITCH_DISK,EMUCMD_FDS_SIDE_SELECT },
|
||||||
|
// "&Insert Coin"
|
||||||
|
{ MENU_INSERT_COIN,EMUCMD_VSUNI_COIN },
|
||||||
|
// "Speed &Up"
|
||||||
|
{ ID_NES_SPEEDUP,EMUCMD_SPEED_FASTER },
|
||||||
|
// "Slow &Down"
|
||||||
|
{ ID_NES_SLOWDOWN,EMUCMD_SPEED_SLOWER },
|
||||||
|
// "&Slowest Speed"
|
||||||
|
{ ID_NES_SLOWESTSPEED,EMUCMD_SPEED_SLOWEST },
|
||||||
|
// "&Normal Speed"
|
||||||
|
{ ID_NES_NORMALSPEED,EMUCMD_SPEED_NORMAL },
|
||||||
|
// "&Turbo"
|
||||||
|
{ ID_NES_TURBO,EMUCMD_SPEED_TURBO_TOGGLE },
|
||||||
|
// "&Pause"
|
||||||
|
{ ID_NES_PAUSE,EMUCMD_PAUSE },
|
||||||
|
// "&Hide Menu"
|
||||||
|
{ MENU_HIDE_MENU,EMUCMD_HIDE_MENU_TOGGLE },
|
||||||
|
// "Unhide Menu"
|
||||||
|
{ FCEUX_CONTEXT_UNHIDEMENU,EMUCMD_HIDE_MENU_TOGGLE,FCEUMENU_CONTEXT_GAME },
|
||||||
|
// "Unhide Menu"
|
||||||
|
{ FCEUX_CONTEXT_UNHIDEMENU,EMUCMD_HIDE_MENU_TOGGLE,FCEUMENU_CONTEXT_PLAYING_READONLY },
|
||||||
|
// "Unhide Menu"
|
||||||
|
{ FCEUX_CONTEXT_UNHIDEMENU,EMUCMD_HIDE_MENU_TOGGLE,FCEUMENU_CONTEXT_PLAYING_READWRITE },
|
||||||
|
// "Unhide Menu"
|
||||||
|
{ FCEUX_CONTEXT_UNHIDEMENU,EMUCMD_HIDE_MENU_TOGGLE,FCEUMENU_CONTEXT_RECORDING_READONLY },
|
||||||
|
// "Unhide Menu"
|
||||||
|
{ FCEUX_CONTEXT_UNHIDEMENU,EMUCMD_HIDE_MENU_TOGGLE,FCEUMENU_CONTEXT_RECORDING_READWRITE },
|
||||||
|
// "&Frame Adv. - Skip Lag"
|
||||||
|
{ MENU_DISPLAY_FA_LAGSKIP,EMUCMD_FRAMEADV_SKIPLAG },
|
||||||
|
// "&Lag Counter"
|
||||||
|
{ MENU_DISPLAY_LAGCOUNTER,EMUCMD_MISC_DISPLAY_LAGCOUNTER_TOGGLE },
|
||||||
|
// "&Frame Counter"
|
||||||
|
{ ID_DISPLAY_FRAMECOUNTER,EMUCMD_MOVIE_FRAME_DISPLAY_TOGGLE },
|
||||||
|
// "&Rerecord Counter
|
||||||
|
{ ID_DISPLAY_RERECORDCOUNTER,EMUCMD_RERECORD_DISPLAY_TOGGLE },
|
||||||
|
// "&Movie status icon"
|
||||||
|
{ ID_DISPLAY_MOVIESTATUSICON,EMUCMD_MOVIE_ICON_DISPLAY_TOGGLE },
|
||||||
|
// "FPS"
|
||||||
|
{ ID_DISPLAY_FPS,EMUCMD_FPS_DISPLAY_TOGGLE },
|
||||||
|
// "Graphics: &BG"
|
||||||
|
{ MENU_DISPLAY_BG,EMUCMD_MISC_DISPLAY_BG_TOGGLE },
|
||||||
|
// "Graphics: &OBJ"
|
||||||
|
{ MENU_DISPLAY_OBJ,EMUCMD_MISC_DISPLAY_OBJ_TOGGLE },
|
||||||
|
// "&Cheats..."
|
||||||
|
{ MENU_CHEATS,EMUCMD_TOOL_OPENCHEATS },
|
||||||
|
// "RAM Search..."
|
||||||
|
{ ID_RAM_SEARCH,EMUCMD_TOOL_OPENRAMSEARCH },
|
||||||
|
// "RAM Watch..."
|
||||||
|
{ ID_RAM_WATCH,EMUCMD_TOOL_OPENRAMWATCH },
|
||||||
|
// "&Memory Watch..."
|
||||||
|
{ MENU_MEMORY_WATCH,EMUCMD_TOOL_OPENMEMORYWATCH },
|
||||||
|
// "&TAS Editor..."
|
||||||
|
{ MENU_TASEDITOR,EMUCMD_MISC_OPENTASEDITOR },
|
||||||
|
// "&Debugger..."
|
||||||
|
{ MENU_DEBUGGER,EMUCMD_TOOL_OPENDEBUGGER },
|
||||||
|
// "&PPU Viewer..."
|
||||||
|
{ MENU_PPUVIEWER,EMUCMD_TOOL_OPENPPU },
|
||||||
|
// "&Name Table Viewer..."
|
||||||
|
{ MENU_NAMETABLEVIEWER,EMUCMD_TOOL_OPENNTVIEW },
|
||||||
|
// "&Hex Editor..."
|
||||||
|
{ MENU_HEXEDITOR,EMUCMD_TOOL_OPENHEX },
|
||||||
|
// "&Trace Logger..."
|
||||||
|
{ MENU_TRACELOGGER,EMUCMD_TOOL_OPENTRACELOGGER },
|
||||||
|
// "&Code/Data Logger..."
|
||||||
|
{ MENU_CDLOGGER,EMUCMD_TOOL_OPENCDLOGGER },
|
||||||
|
// "Undo savestate"
|
||||||
|
{ FCEUX_CONTEXT_UNDOSAVESTATE,EMUCMD_MISC_UNDOREDOSAVESTATE,FCEUMENU_CONTEXT_GAME },
|
||||||
|
// "Undo savestate"
|
||||||
|
{ FCEUX_CONTEXT_UNDOSAVESTATE,EMUCMD_MISC_UNDOREDOSAVESTATE,FCEUMENU_CONTEXT_PLAYING_READONLY },
|
||||||
|
// "Undo savestate"
|
||||||
|
{ FCEUX_CONTEXT_UNDOSAVESTATE,EMUCMD_MISC_UNDOREDOSAVESTATE,FCEUMENU_CONTEXT_PLAYING_READWRITE },
|
||||||
|
// "Undo savestate"
|
||||||
|
{ FCEUX_CONTEXT_UNDOSAVESTATE,EMUCMD_MISC_UNDOREDOSAVESTATE,FCEUMENU_CONTEXT_RECORDING_READONLY },
|
||||||
|
// "Undo savestate"
|
||||||
|
{ FCEUX_CONTEXT_UNDOSAVESTATE,EMUCMD_MISC_UNDOREDOSAVESTATE,FCEUMENU_CONTEXT_RECORDING_READWRITE },
|
||||||
|
// "Rewind to last auto-save"
|
||||||
|
{ FCEUX_CONTEXT_REWINDTOLASTAUTO,EMUCMD_MISC_AUTOSAVE,FCEUMENU_CONTEXT_GAME },
|
||||||
|
// "Rewind to last auto-save"
|
||||||
|
{ FCEUX_CONTEXT_REWINDTOLASTAUTO,EMUCMD_MISC_AUTOSAVE,FCEUMENU_CONTEXT_PLAYING_READONLY },
|
||||||
|
// "Rewind to last auto-save"
|
||||||
|
{ FCEUX_CONTEXT_REWINDTOLASTAUTO,EMUCMD_MISC_AUTOSAVE,FCEUMENU_CONTEXT_PLAYING_READWRITE },
|
||||||
|
// "Rewind to last auto-save"
|
||||||
|
{ FCEUX_CONTEXT_REWINDTOLASTAUTO,EMUCMD_MISC_AUTOSAVE,FCEUMENU_CONTEXT_RECORDING_READONLY },
|
||||||
|
// "Rewind to last auto-save"
|
||||||
|
{ FCEUX_CONTEXT_REWINDTOLASTAUTO,EMUCMD_MISC_AUTOSAVE,FCEUMENU_CONTEXT_RECORDING_READWRITE },
|
||||||
|
// "Toggle to Recording"
|
||||||
|
{ FCEUX_CONTEXT_TOGGLE_RECORDING,EMUCMD_MOVIE_TOGGLE_RECORDING,FCEUMENU_CONTEXT_PLAYING_READONLY },
|
||||||
|
// "Toggle to Recording"
|
||||||
|
{ FCEUX_CONTEXT_TOGGLE_RECORDING,EMUCMD_MOVIE_TOGGLE_RECORDING,FCEUMENU_CONTEXT_PLAYING_READWRITE },
|
||||||
|
// "Toggle to Playing"
|
||||||
|
{ FCEUX_CONTEXT_TOGGLE_RECORDING,EMUCMD_MOVIE_TOGGLE_RECORDING,FCEUMENU_CONTEXT_RECORDING_READONLY },
|
||||||
|
// "Toggle to Playing"
|
||||||
|
{ FCEUX_CONTEXT_TOGGLE_RECORDING,EMUCMD_MOVIE_TOGGLE_RECORDING,FCEUMENU_CONTEXT_RECORDING_READWRITE },
|
||||||
|
// "&Toggle Recording/Playing"
|
||||||
|
{ ID_FILE_TOGGLE_RECORDING_MOVIE,EMUCMD_MOVIE_TOGGLE_RECORDING },
|
||||||
|
// "&Truncate at Current Frame"
|
||||||
|
{ ID_FILE_TRUNCATE_MOVIE,EMUCMD_MOVIE_TRUNCATE },
|
||||||
|
// "Truncate at Current Frame"
|
||||||
|
{ FCEUX_CONTEXT_TRUNCATE_MOVIE,EMUCMD_MOVIE_TRUNCATE,FCEUMENU_CONTEXT_PLAYING_READONLY },
|
||||||
|
// "Truncate at Current Frame"
|
||||||
|
{ FCEUX_CONTEXT_TRUNCATE_MOVIE,EMUCMD_MOVIE_TRUNCATE,FCEUMENU_CONTEXT_PLAYING_READWRITE },
|
||||||
|
// "Truncate at Current Frame"
|
||||||
|
{ FCEUX_CONTEXT_TRUNCATE_MOVIE,EMUCMD_MOVIE_TRUNCATE,FCEUMENU_CONTEXT_RECORDING_READONLY },
|
||||||
|
// "Truncate at Current Frame"
|
||||||
|
{ FCEUX_CONTEXT_TRUNCATE_MOVIE,EMUCMD_MOVIE_TRUNCATE,FCEUMENU_CONTEXT_RECORDING_READWRITE },
|
||||||
|
// "&Insert 1 Frame"
|
||||||
|
{ ID_FILE_INSERT_1_FRAME,EMUCMD_MOVIE_INSERT_1_FRAME },
|
||||||
|
// "Insert 1 Frame"
|
||||||
|
{ FCEUX_CONTEXT_INSERT_1_FRAME,EMUCMD_MOVIE_INSERT_1_FRAME,FCEUMENU_CONTEXT_PLAYING_READONLY },
|
||||||
|
// "Insert 1 Frame"
|
||||||
|
{ FCEUX_CONTEXT_INSERT_1_FRAME,EMUCMD_MOVIE_INSERT_1_FRAME,FCEUMENU_CONTEXT_PLAYING_READWRITE },
|
||||||
|
// "Insert 1 Frame"
|
||||||
|
{ FCEUX_CONTEXT_INSERT_1_FRAME,EMUCMD_MOVIE_INSERT_1_FRAME,FCEUMENU_CONTEXT_RECORDING_READONLY },
|
||||||
|
// "Insert 1 Frame"
|
||||||
|
{ FCEUX_CONTEXT_INSERT_1_FRAME,EMUCMD_MOVIE_INSERT_1_FRAME,FCEUMENU_CONTEXT_RECORDING_READWRITE },
|
||||||
|
// "&Delete 1 Frame"
|
||||||
|
{ ID_FILE_DELETE_1_FRAME,EMUCMD_MOVIE_DELETE_1_FRAME },
|
||||||
|
// "Delete 1 Frame"
|
||||||
|
{ FCEUX_CONTEXT_DELETE_1_FRAME,EMUCMD_MOVIE_DELETE_1_FRAME,FCEUMENU_CONTEXT_PLAYING_READONLY },
|
||||||
|
// "Delete 1 Frame"
|
||||||
|
{ FCEUX_CONTEXT_DELETE_1_FRAME,EMUCMD_MOVIE_DELETE_1_FRAME,FCEUMENU_CONTEXT_PLAYING_READWRITE },
|
||||||
|
// "Delete 1 Frame"
|
||||||
|
{ FCEUX_CONTEXT_DELETE_1_FRAME,EMUCMD_MOVIE_DELETE_1_FRAME,FCEUMENU_CONTEXT_RECORDING_READONLY },
|
||||||
|
// "Delete 1 Frame"
|
||||||
|
{ FCEUX_CONTEXT_DELETE_1_FRAME,EMUCMD_MOVIE_DELETE_1_FRAME,FCEUMENU_CONTEXT_RECORDING_READWRITE },
|
||||||
|
// "&Next Record Mode"
|
||||||
|
{ ID_FILE_NEXTRECORDMODE,EMUCMD_MOVIE_NEXT_RECORD_MODE },
|
||||||
|
// "&Truncate
|
||||||
|
{ ID_FILE_RECORDMODE_TRUNCATE,EMUCMD_MOVIE_RECORD_MODE_TRUNCATE },
|
||||||
|
// "&Truncate"
|
||||||
|
{ FCEUX_CONTEXT_RECORDMODE_TRUNCATE,EMUCMD_MOVIE_RECORD_MODE_TRUNCATE,FCEUMENU_CONTEXT_PLAYING_READONLY },
|
||||||
|
// "&Truncate"
|
||||||
|
{ FCEUX_CONTEXT_RECORDMODE_TRUNCATE,EMUCMD_MOVIE_RECORD_MODE_TRUNCATE,FCEUMENU_CONTEXT_PLAYING_READWRITE },
|
||||||
|
// "&Truncate"
|
||||||
|
{ FCEUX_CONTEXT_RECORDMODE_TRUNCATE,EMUCMD_MOVIE_RECORD_MODE_TRUNCATE,FCEUMENU_CONTEXT_RECORDING_READONLY },
|
||||||
|
// "&Truncate"
|
||||||
|
{ FCEUX_CONTEXT_RECORDMODE_TRUNCATE,EMUCMD_MOVIE_RECORD_MODE_TRUNCATE,FCEUMENU_CONTEXT_RECORDING_READWRITE },
|
||||||
|
// "&Overwrite[W]"
|
||||||
|
{ ID_FILE_RECORDMODE_OVERWRITE,EMUCMD_MOVIE_RECORD_MODE_OVERWRITE },
|
||||||
|
// "&Overwrite[W]"
|
||||||
|
{ FCEUX_CONTEXT_RECORDMODE_OVERWRITE,EMUCMD_MOVIE_RECORD_MODE_OVERWRITE,FCEUMENU_CONTEXT_PLAYING_READONLY },
|
||||||
|
// "&Overwrite[W]"
|
||||||
|
{ FCEUX_CONTEXT_RECORDMODE_OVERWRITE,EMUCMD_MOVIE_RECORD_MODE_OVERWRITE,FCEUMENU_CONTEXT_PLAYING_READWRITE },
|
||||||
|
// "&Overwrite[W]"
|
||||||
|
{ FCEUX_CONTEXT_RECORDMODE_OVERWRITE,EMUCMD_MOVIE_RECORD_MODE_OVERWRITE,FCEUMENU_CONTEXT_RECORDING_READONLY },
|
||||||
|
// "&Overwrite[W]"
|
||||||
|
{ FCEUX_CONTEXT_RECORDMODE_OVERWRITE,EMUCMD_MOVIE_RECORD_MODE_OVERWRITE,FCEUMENU_CONTEXT_RECORDING_READWRITE },
|
||||||
|
// "&Insert[I]"
|
||||||
|
{ ID_FILE_RECORDMODE_INSERT,EMUCMD_MOVIE_RECORD_MODE_INSERT },
|
||||||
|
// "&Insert[I]"
|
||||||
|
{ FCEUX_CONTEXT_RECORDMODE_INSERT,EMUCMD_MOVIE_RECORD_MODE_INSERT,FCEUMENU_CONTEXT_PLAYING_READONLY },
|
||||||
|
// "&Insert[I]"
|
||||||
|
{ FCEUX_CONTEXT_RECORDMODE_INSERT,EMUCMD_MOVIE_RECORD_MODE_INSERT,FCEUMENU_CONTEXT_PLAYING_READWRITE },
|
||||||
|
// "&Insert[I]"
|
||||||
|
{ FCEUX_CONTEXT_RECORDMODE_INSERT,EMUCMD_MOVIE_RECORD_MODE_INSERT,FCEUMENU_CONTEXT_RECORDING_READONLY },
|
||||||
|
// "&Insert[I]"
|
||||||
|
{ FCEUX_CONTEXT_RECORDMODE_INSERT,EMUCMD_MOVIE_RECORD_MODE_INSERT,FCEUMENU_CONTEXT_RECORDING_READWRITE }
|
||||||
|
};
|
||||||
|
|
||||||
|
int HOTKEYMENUINDEX::updateMenuText() {
|
||||||
|
return ModifyMenu(hmenuList[hmenu_index], menu_id, GetMenuState(hmenuList[hmenu_index], menu_id, flags) | flags, menu_id, getQualifiedMenuText().c_str());
|
||||||
|
}
|
||||||
|
|
||||||
void UpdateMenuHotkeys()
|
void UpdateMenuHotkeys()
|
||||||
{
|
{
|
||||||
//Update all menu items that can be called from a hotkey to include the current hotkey assignment
|
for (int i = 0; i < sizeof(HOTKEYMENUINDEXs) / sizeof(HOTKEYMENUINDEX); ++i)
|
||||||
string combo, combined;
|
HOTKEYMENUINDEXs[i].updateMenuText();
|
||||||
|
|
||||||
//-------------------------------FILE---------------------------------------
|
|
||||||
//Open ROM
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_OPENROM]);
|
|
||||||
combined = "&Open ROM...\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_OPEN_FILE, combined);
|
|
||||||
|
|
||||||
//Close ROM
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_CLOSEROM]);
|
|
||||||
combined = "&Close\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_CLOSE_FILE, combined);
|
|
||||||
|
|
||||||
//Load State
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_LOAD_STATE]);
|
|
||||||
combined = "&Load State\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_LOADSTATE, combined);
|
|
||||||
|
|
||||||
//Save State
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_SAVE_STATE]);
|
|
||||||
combined = "&Save State\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_SAVESTATE, combined);
|
|
||||||
|
|
||||||
//Loadstate from
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_LOAD_STATE_FROM]);
|
|
||||||
combined = "Load State &From...\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_LOAD_STATE, combined);
|
|
||||||
|
|
||||||
//Savestate as
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_SAVE_STATE_AS]);
|
|
||||||
combined = "Save State &As...\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_SAVE_STATE, combined);
|
|
||||||
|
|
||||||
//Next Save Slot
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_SAVE_SLOT_NEXT]);
|
|
||||||
combined = "&Next save slot\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_NEXTSAVESTATE, combined);
|
|
||||||
|
|
||||||
//Previous Save Slot
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_SAVE_SLOT_PREV]);
|
|
||||||
combined = "&Previous save slot\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_PREVIOUSSAVESTATE, combined);
|
|
||||||
|
|
||||||
//View Save Slots
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MISC_SHOWSTATES]);
|
|
||||||
combined = "&View save slots\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_VIEWSAVESLOTS, combined);
|
|
||||||
|
|
||||||
//Record Movie
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_RECORD_TO]);
|
|
||||||
combined = "&Record Movie...\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_RECORD_MOVIE, combined);
|
|
||||||
|
|
||||||
//Play movie
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_REPLAY_FROM]);
|
|
||||||
combined = "&Play Movie...\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_REPLAY_MOVIE, combined);
|
|
||||||
|
|
||||||
//Stop movie
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_STOP]);
|
|
||||||
combined = "&Stop Movie\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_STOP_MOVIE, combined);
|
|
||||||
|
|
||||||
//Play Movie from Beginning
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_PLAY_FROM_BEGINNING]);
|
|
||||||
combined = "Play from &Beginning\t" + combo;
|
|
||||||
ChangeMenuItemText(ID_FILE_PLAYMOVIEFROMBEGINNING, combined);
|
|
||||||
|
|
||||||
//Toggle Movie Recording/Playing
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_TOGGLE_RECORDING]);
|
|
||||||
combined = "&Toggle Recording/Playing\t" + combo;
|
|
||||||
ChangeMenuItemText(ID_FILE_TOGGLE_RECORDING_MOVIE, combined);
|
|
||||||
|
|
||||||
//Insert 1 Frame
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_INSERT_1_FRAME]);
|
|
||||||
combined = "&Insert 1 Frame\t" + combo;
|
|
||||||
ChangeMenuItemText(ID_FILE_INSERT_1_FRAME, combined);
|
|
||||||
|
|
||||||
//Delete 1 Frame
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_DELETE_1_FRAME]);
|
|
||||||
combined = "&Delete 1 Frame\t" + combo;
|
|
||||||
ChangeMenuItemText(ID_FILE_DELETE_1_FRAME, combined);
|
|
||||||
|
|
||||||
//Truncate Movie at Current Frame
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_TRUNCATE]);
|
|
||||||
combined = "&Truncate at &Current Frame\t" + combo;
|
|
||||||
ChangeMenuItemText(ID_FILE_TRUNCATE_MOVIE, combined);
|
|
||||||
|
|
||||||
//Read only
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_READONLY_TOGGLE]);
|
|
||||||
combined = "&Read only\t" + combo;
|
|
||||||
ChangeMenuItemText(ID_FILE_MOVIE_TOGGLEREAD, combined);
|
|
||||||
|
|
||||||
//Next Record Mode
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_NEXT_RECORD_MODE]);
|
|
||||||
combined = "&Next Record Mode\t" + combo;
|
|
||||||
ChangeMenuItemText(ID_FILE_NEXTRECORDMODE, combined);
|
|
||||||
|
|
||||||
//Prev Record Mode
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_PREV_RECORD_MODE]);
|
|
||||||
combined = "&Prev Record Mode\t" + combo;
|
|
||||||
ChangeMenuItemText(ID_FILE_PREVRECORDMODE, combined);
|
|
||||||
|
|
||||||
//Record Mode Truncate
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_RECORD_MODE_TRUNCATE]);
|
|
||||||
combined = "&Truncate\t" + combo;
|
|
||||||
ChangeMenuItemText(ID_FILE_RECORDMODE_TRUNCATE, combined);
|
|
||||||
|
|
||||||
//Record Mode Overwrite
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_RECORD_MODE_OVERWRITE]);
|
|
||||||
combined = "&Overwrite[W]\t" + combo;
|
|
||||||
ChangeMenuItemText(ID_FILE_RECORDMODE_OVERWRITE, combined);
|
|
||||||
|
|
||||||
//Record Mode Insert
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_RECORD_MODE_INSERT]);
|
|
||||||
combined = "&Insert[I]\t" + combo;
|
|
||||||
ChangeMenuItemText(ID_FILE_RECORDMODE_INSERT, combined);
|
|
||||||
|
|
||||||
//Screenshot
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_SCREENSHOT]);
|
|
||||||
combined = "&Screenshot\t" + combo;
|
|
||||||
ChangeMenuItemText(ID_FILE_SCREENSHOT, combined);
|
|
||||||
|
|
||||||
//Record AVI
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_AVI_RECORD_AS]);
|
|
||||||
combined = "&Record AVI...\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_RECORD_AVI, combined);
|
|
||||||
|
|
||||||
//Stop AVI
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_AVI_STOP]);
|
|
||||||
combined = "&Stop AVI\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_STOP_AVI, combined);
|
|
||||||
|
|
||||||
//-------------------------------NES----------------------------------------
|
|
||||||
//Reset
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_RESET]);
|
|
||||||
combined = "&Reset\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_RESET, combined);
|
|
||||||
|
|
||||||
//Power
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_POWER]);
|
|
||||||
combined = "&Power\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_POWER, combined);
|
|
||||||
|
|
||||||
//Eject/Insert Disk
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_FDS_EJECT_INSERT]);
|
|
||||||
combined = "&Eject/Insert Disk\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_EJECT_DISK, combined);
|
|
||||||
|
|
||||||
//Switch Disk Side
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_FDS_SIDE_SELECT]);
|
|
||||||
combined = "&Switch Disk Side\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_SWITCH_DISK, combined);
|
|
||||||
|
|
||||||
//Insert Coin
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_VSUNI_COIN]);
|
|
||||||
combined = "&Insert Coin\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_INSERT_COIN, combined);
|
|
||||||
|
|
||||||
//Speed Up
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_SPEED_FASTER]);
|
|
||||||
combined = "Speed &Up\t" + combo;
|
|
||||||
ChangeMenuItemText(ID_NES_SPEEDUP, combined);
|
|
||||||
|
|
||||||
//Slow Down
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_SPEED_SLOWER]);
|
|
||||||
combined = "Slow &Down\t" + combo;
|
|
||||||
ChangeMenuItemText(ID_NES_SLOWDOWN, combined);
|
|
||||||
|
|
||||||
//Pause
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_PAUSE]);
|
|
||||||
combined = "&Pause\t" + combo;
|
|
||||||
ChangeMenuItemText(ID_NES_PAUSE, combined);
|
|
||||||
|
|
||||||
//Slowest Speed
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_SPEED_SLOWEST]);
|
|
||||||
combined = "&Slowest Speed\t" + combo;
|
|
||||||
ChangeMenuItemText(ID_NES_SLOWESTSPEED, combined);
|
|
||||||
|
|
||||||
//Normal Speed
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_SPEED_NORMAL]);
|
|
||||||
combined = "&Normal Speed\t" + combo;
|
|
||||||
ChangeMenuItemText(ID_NES_NORMALSPEED, combined);
|
|
||||||
|
|
||||||
//Turbo
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_SPEED_TURBO_TOGGLE]);
|
|
||||||
combined = "&Turbo\t" + combo;
|
|
||||||
ChangeMenuItemText(ID_NES_TURBO, combined);
|
|
||||||
|
|
||||||
//-------------------------------Config-------------------------------------
|
|
||||||
//Hide Menu
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_HIDE_MENU_TOGGLE]);
|
|
||||||
combined = "&Hide Menu\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_HIDE_MENU, combined);
|
|
||||||
|
|
||||||
//Frame Adv. skip lag
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_FRAMEADV_SKIPLAG]);
|
|
||||||
combined = "&Frame Adv. - Skip Lag\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_DISPLAY_FA_LAGSKIP, combined);
|
|
||||||
|
|
||||||
//Lag Counter
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MISC_DISPLAY_LAGCOUNTER_TOGGLE]);
|
|
||||||
combined = "&Lag Counter\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_DISPLAY_LAGCOUNTER, combined);
|
|
||||||
|
|
||||||
//Frame Counter
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_FRAME_DISPLAY_TOGGLE]);
|
|
||||||
combined = "&Frame Counter\t" + combo;
|
|
||||||
ChangeMenuItemText(ID_DISPLAY_FRAMECOUNTER, combined);
|
|
||||||
|
|
||||||
//Rerecord Counter
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_RERECORD_DISPLAY_TOGGLE]);
|
|
||||||
combined = "&Rerecord Counter\t" + combo;
|
|
||||||
ChangeMenuItemText(ID_DISPLAY_RERECORDCOUNTER, combined);
|
|
||||||
|
|
||||||
//Movie status icon
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MOVIE_ICON_DISPLAY_TOGGLE]);
|
|
||||||
combined = "&Movie status icon\t" + combo;
|
|
||||||
ChangeMenuItemText(ID_DISPLAY_MOVIESTATUSICON, combined);
|
|
||||||
|
|
||||||
//FPS counter
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_FPS_DISPLAY_TOGGLE]);
|
|
||||||
combined = "FPS\t" + combo;
|
|
||||||
ChangeMenuItemText(ID_DISPLAY_FPS, combined);
|
|
||||||
|
|
||||||
//Graphics: BG
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MISC_DISPLAY_BG_TOGGLE]);
|
|
||||||
combined = "Graphics: &BG\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_DISPLAY_BG, combined);
|
|
||||||
|
|
||||||
//Graphics: OBJ
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MISC_DISPLAY_OBJ_TOGGLE]);
|
|
||||||
combined = "Graphics: &OBJ\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_DISPLAY_OBJ, combined);
|
|
||||||
|
|
||||||
//-------------------------------Tools--------------------------------------
|
|
||||||
//Open Cheats
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_TOOL_OPENCHEATS]);
|
|
||||||
combined = "&Cheats...\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_CHEATS, combined);
|
|
||||||
|
|
||||||
//Open RAM Search
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_TOOL_OPENRAMSEARCH]);
|
|
||||||
combined = "&RAM Search...\t" + combo;
|
|
||||||
ChangeMenuItemText(ID_RAM_SEARCH, combined);
|
|
||||||
|
|
||||||
//Open RAM Watch
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_TOOL_OPENRAMWATCH]);
|
|
||||||
combined = "&RAM Watch...\t" + combo;
|
|
||||||
ChangeMenuItemText(ID_RAM_WATCH, combined);
|
|
||||||
|
|
||||||
//Open Memory Watch
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_TOOL_OPENMEMORYWATCH]);
|
|
||||||
combined = "&Memory Watch...\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_MEMORY_WATCH, combined);
|
|
||||||
|
|
||||||
//Open TAS Editor
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_MISC_OPENTASEDITOR]);
|
|
||||||
combined = "&TAS Editor...\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_TASEDITOR, combined);
|
|
||||||
|
|
||||||
//-------------------------------Debug--------------------------------------
|
|
||||||
//Open Debugger
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_TOOL_OPENDEBUGGER]);
|
|
||||||
combined = "&Debugger...\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_DEBUGGER, combined);
|
|
||||||
|
|
||||||
//Open PPU Viewer
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_TOOL_OPENPPU]);
|
|
||||||
combined = "&PPU Viewer...\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_PPUVIEWER, combined);
|
|
||||||
|
|
||||||
//Open Nametable Viewer
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_TOOL_OPENNTVIEW]);
|
|
||||||
combined = "&Name table Viewer...\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_NAMETABLEVIEWER, combined);
|
|
||||||
|
|
||||||
//Open Hex editor
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_TOOL_OPENHEX]);
|
|
||||||
combined = "&Hex Editor...\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_HEXEDITOR, combined);
|
|
||||||
|
|
||||||
//Open Trace Logger
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_TOOL_OPENTRACELOGGER]);
|
|
||||||
combined = "&Trace Logger...\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_TRACELOGGER, combined);
|
|
||||||
|
|
||||||
//Open Code/Data Logger
|
|
||||||
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_TOOL_OPENCDLOGGER]);
|
|
||||||
combined = "&Code/Data Logger...\t" + combo;
|
|
||||||
ChangeMenuItemText(MENU_CDLOGGER, combined);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//This function is for the context menu item Save Movie As...
|
//This function is for the context menu item Save Movie As...
|
||||||
|
|
|
@ -54,4 +54,31 @@ inline std::wstring GetDlgItemTextW(HWND hDlg, int nIDDlgItem) {
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum FCEUMENU_HWND {
|
||||||
|
FCEUMENU_CONTEXT_OFF, // NoGame
|
||||||
|
FCEUMENU_CONTEXT_GAME, // Game+NoMovie
|
||||||
|
FCEUMENU_CONTEXT_PLAYING_READONLY, //Game+Movie+Playing+ReadOnly
|
||||||
|
FCEUMENU_CONTEXT_PLAYING_READWRITE, //Game+Movie+Playing+ReadWrite
|
||||||
|
FCEUMENU_CONTEXT_RECORDING_READONLY, //Game+Movie+Recording+ReadOnly
|
||||||
|
FCEUMENU_CONTEXT_RECORDING_READWRITE, //Game+Movie+Recording+Readwrite
|
||||||
|
FCEUMENU_CONTEXT, // parent menu of all context menus,
|
||||||
|
// not recommended to use it since there's duplicate ids in context menus,
|
||||||
|
// unless you're quite sure the id is unique in all submenus.
|
||||||
|
FCEUMENU_MAIN, // main fceux menu
|
||||||
|
FCEUMENU_LIMIT
|
||||||
|
};
|
||||||
|
|
||||||
|
struct HOTKEYMENUINDEX {
|
||||||
|
int menu_id; // menu ID
|
||||||
|
int cmd_id; // hotkey ID
|
||||||
|
int hmenu_index = FCEUMENU_MAIN; // whitch menu it belongs to, refers to FCEUMENU_HWND
|
||||||
|
int flags = MF_BYCOMMAND; // flags when searching and modifying menu item, usually MF_BYCOMMAND
|
||||||
|
// returns an std::string contains original menu text followed with shortcut keys.
|
||||||
|
std::string getQualifiedMenuText();
|
||||||
|
// this is used when you only want to create a qualified menu text String
|
||||||
|
static std::string getQualifiedMenuText(char* text, int cmdid);
|
||||||
|
int updateMenuText();
|
||||||
|
HOTKEYMENUINDEX(int id, int cmd, int menu = FCEUMENU_MAIN, int _flags = MF_BYCOMMAND) : menu_id(id), cmd_id(cmd), hmenu_index(menu), flags(_flags) {}
|
||||||
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -416,10 +416,13 @@ FCEUGI *FCEUI_LoadGameVirtual(const char *name, int OverwriteVidMode, bool silen
|
||||||
|
|
||||||
if (!fp)
|
if (!fp)
|
||||||
{
|
{
|
||||||
if (!silent)
|
extern bool archiveManuallyCanceled;
|
||||||
FCEU_PrintError("Error opening \"%s\"!", name);
|
// Although !fp, if the operation was canceled from archive select dialog box, don't show the error message;
|
||||||
|
if (!silent && !archiveManuallyCanceled)
|
||||||
|
FCEU_PrintError("打开 \"%s\" 错误!", name);
|
||||||
return 0;
|
return 0;
|
||||||
} else if (fp->archiveFilename != "")
|
}
|
||||||
|
else if (fp->archiveFilename != "")
|
||||||
{
|
{
|
||||||
strcpy(fullname, fp->archiveFilename.c_str());
|
strcpy(fullname, fp->archiveFilename.c_str());
|
||||||
strcat(fullname, "|");
|
strcat(fullname, "|");
|
||||||
|
|
Loading…
Reference in New Issue