1. Add more controls to limit input text.

2. Changed limit input behaviour to match the system default ES_NUMBER.
This commit is contained in:
owomomo 2019-06-20 01:58:35 +08:00
parent 4e3473ac5d
commit fee4fc83a8
8 changed files with 286 additions and 166 deletions

View File

@ -70,7 +70,7 @@ static HMENU hDisasmcontext; //Handle to context menu
static HMENU hDisasmcontextsub; //Handle to context sub menu static HMENU hDisasmcontextsub; //Handle to context sub menu
WNDPROC IDC_DEBUGGER_DISASSEMBLY_oldWndProc = 0; WNDPROC IDC_DEBUGGER_DISASSEMBLY_oldWndProc = 0;
static HFONT hFont; // static HFONT hFont;
static SCROLLINFO si; static SCROLLINFO si;
bool debuggerAutoload = false; bool debuggerAutoload = false;
@ -276,8 +276,12 @@ BOOL CALLBACK AddbpCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{ {
case WM_INITDIALOG: case WM_INITDIALOG:
CenterWindow(hwndDlg); CenterWindow(hwndDlg);
SendDlgItemMessage(hwndDlg,IDC_ADDBP_ADDR_START,EM_SETLIMITTEXT,4,0); SendDlgItemMessage(hwndDlg, IDC_ADDBP_ADDR_START, EM_SETLIMITTEXT, 4, 0);
SendDlgItemMessage(hwndDlg,IDC_ADDBP_ADDR_END,EM_SETLIMITTEXT,4,0); SendDlgItemMessage(hwndDlg, IDC_ADDBP_ADDR_END, EM_SETLIMITTEXT, 4, 0);
DefaultEditCtrlProc = (WNDPROC)SetWindowLong(GetDlgItem(hwndDlg, IDC_ADDBP_ADDR_START), GWL_WNDPROC, (LONG)FilterEditCtrlProc);
SetWindowLong(GetDlgItem(hwndDlg, IDC_ADDBP_ADDR_END), GWL_WNDPROC, (LONG)FilterEditCtrlProc);
if (WP_edit >= 0) if (WP_edit >= 0)
{ {
SetWindowText(hwndDlg,"Edit Breakpoint..."); SetWindowText(hwndDlg,"Edit Breakpoint...");
@ -359,7 +363,7 @@ BOOL CALLBACK AddbpCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
int tmp = NewBreakWindows(hwndDlg,WP_edit,(BOOL)(watchpoint[WP_edit].flags&WP_E)); int tmp = NewBreakWindows(hwndDlg,WP_edit,(BOOL)(watchpoint[WP_edit].flags&WP_E));
if (tmp == 2 || tmp == INVALID_BREAKPOINT_CONDITION) if (tmp == 2 || tmp == INVALID_BREAKPOINT_CONDITION)
{ {
MessageBox(hwndDlg, "Invalid breakpoint condition", "Error", MB_OK); MessageBox(hwndDlg, "Invalid breakpoint condition", "Error", MB_OK | MB_ICONERROR);
break; break;
} }
EndDialog(hwndDlg,1); EndDialog(hwndDlg,1);
@ -1820,6 +1824,14 @@ BOOL CALLBACK DebuggerCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
SendDlgItemMessage(hwndDlg,IDC_DEBUGGER_VAL_PPU,EM_SETLIMITTEXT,4,0); SendDlgItemMessage(hwndDlg,IDC_DEBUGGER_VAL_PPU,EM_SETLIMITTEXT,4,0);
SendDlgItemMessage(hwndDlg,IDC_DEBUGGER_VAL_SPR,EM_SETLIMITTEXT,2,0); SendDlgItemMessage(hwndDlg,IDC_DEBUGGER_VAL_SPR,EM_SETLIMITTEXT,2,0);
// limit input
DefaultEditCtrlProc = (WNDPROC)SetWindowLong(GetDlgItem(hwndDlg, IDC_DEBUGGER_VAL_PCSEEK), GWL_WNDPROC, (LONG)FilterEditCtrlProc);
SetWindowLong(GetDlgItem(hwndDlg, IDC_DEBUGGER_VAL_PC), GWL_WNDPROC, (LONG)FilterEditCtrlProc);
SetWindowLong(GetDlgItem(hwndDlg, IDC_DEBUGGER_VAL_A), GWL_WNDPROC, (LONG)FilterEditCtrlProc);
SetWindowLong(GetDlgItem(hwndDlg, IDC_DEBUGGER_VAL_X), GWL_WNDPROC, (LONG)FilterEditCtrlProc);
SetWindowLong(GetDlgItem(hwndDlg, IDC_DEBUGGER_VAL_Y), GWL_WNDPROC, (LONG)FilterEditCtrlProc);
SetWindowLong(GetDlgItem(hwndDlg, IDC_DEBUGGER_BOOKMARK), GWL_WNDPROC, (LONG)FilterEditCtrlProc);
//I'm lazy, disable the controls which I can't mess with right now //I'm lazy, disable the controls which I can't mess with right now
SendDlgItemMessage(hwndDlg,IDC_DEBUGGER_VAL_PPU,EM_SETREADONLY,TRUE,0); SendDlgItemMessage(hwndDlg,IDC_DEBUGGER_VAL_PPU,EM_SETREADONLY,TRUE,0);
SendDlgItemMessage(hwndDlg,IDC_DEBUGGER_VAL_SPR,EM_SETREADONLY,TRUE,0); SendDlgItemMessage(hwndDlg,IDC_DEBUGGER_VAL_SPR,EM_SETREADONLY,TRUE,0);

View File

@ -69,5 +69,7 @@ public:
} *debugSystem; } *debugSystem;
// extern WNDPROC DefaultEditCtrlProc;
// extern LRESULT APIENTRY FilterEditCtrlProc(HWND hwnd, UINT msg, WPARAM wP, LPARAM lP);
#endif #endif

View File

@ -307,10 +307,6 @@ HWND InitHeaderEditDialog(HWND hwnd, iNES_HEADER* header)
SetWindowLong(GetDlgItem(GetDlgItem(hwnd, IDC_CHRRAM_COMBO), IDC_CHRRAM_EDIT), GWL_WNDPROC, (LONG)FilterEditCtrlProc); SetWindowLong(GetDlgItem(GetDlgItem(hwnd, IDC_CHRRAM_COMBO), IDC_CHRRAM_EDIT), GWL_WNDPROC, (LONG)FilterEditCtrlProc);
// CHR NVRAM // CHR NVRAM
SetWindowLong(GetDlgItem(GetDlgItem(hwnd, IDC_CHRNVRAM_COMBO), IDC_CHRNVRAM_EDIT), GWL_WNDPROC, (LONG)FilterEditCtrlProc); SetWindowLong(GetDlgItem(GetDlgItem(hwnd, IDC_CHRNVRAM_COMBO), IDC_CHRNVRAM_EDIT), GWL_WNDPROC, (LONG)FilterEditCtrlProc);
// Sub Mapper#
SetWindowLong(GetDlgItem(hwnd, IDC_SUBMAPPER_EDIT), GWL_WNDPROC, (LONG)FilterEditCtrlProc);
// Misc. ROM(s)
SetWindowLong(GetDlgItem(hwnd, IDC_MISCELLANEOUS_ROMS_EDIT), GWL_WNDPROC, (LONG)FilterEditCtrlProc);
ToggleINES20(hwnd, IsDlgButtonChecked(hwnd, IDC_RADIO_VERSION_INES20) == BST_CHECKED); ToggleINES20(hwnd, IsDlgButtonChecked(hwnd, IDC_RADIO_VERSION_INES20) == BST_CHECKED);

View File

@ -202,29 +202,29 @@ void MemwAddRecentFile(const char *filename)
} }
static const int MW_ADDR[] = { static const int MW_ADDR[] = {
MW_ADDR00,MW_ADDR01,MW_ADDR02,MW_ADDR03, MW_ADDR00, MW_ADDR01, MW_ADDR02, MW_ADDR03,
MW_ADDR04,MW_ADDR05,MW_ADDR06,MW_ADDR07, MW_ADDR04, MW_ADDR05, MW_ADDR06, MW_ADDR07,
MW_ADDR08,MW_ADDR09,MW_ADDR10,MW_ADDR11, MW_ADDR08, MW_ADDR09, MW_ADDR10, MW_ADDR11,
MW_ADDR12,MW_ADDR13,MW_ADDR14,MW_ADDR15, MW_ADDR12, MW_ADDR13, MW_ADDR14, MW_ADDR15,
MW_ADDR16,MW_ADDR17,MW_ADDR18,MW_ADDR19, MW_ADDR16, MW_ADDR17, MW_ADDR18, MW_ADDR19,
MW_ADDR20,MW_ADDR21,MW_ADDR22,MW_ADDR23 MW_ADDR20, MW_ADDR21, MW_ADDR22, MW_ADDR23
}; };
static const int MW_NAME[] = static const int MW_NAME[] =
{ {
MW_NAME00,MW_NAME01,MW_NAME02,MW_NAME03, MW_NAME00, MW_NAME01, MW_NAME02, MW_NAME03,
MW_NAME04,MW_NAME05,MW_NAME06,MW_NAME07, MW_NAME04, MW_NAME05, MW_NAME06, MW_NAME07,
MW_NAME08,MW_NAME09,MW_NAME10,MW_NAME11, MW_NAME08, MW_NAME09, MW_NAME10, MW_NAME11,
MW_NAME12,MW_NAME13,MW_NAME14,MW_NAME15, MW_NAME12, MW_NAME13, MW_NAME14, MW_NAME15,
MW_NAME16,MW_NAME17,MW_NAME18,MW_NAME19, MW_NAME16, MW_NAME17, MW_NAME18, MW_NAME19,
MW_NAME20,MW_NAME21,MW_NAME22,MW_NAME23 MW_NAME20, MW_NAME21, MW_NAME22, MW_NAME23
}; };
static const int MW_VAL[] = { static const int MW_VAL[] = {
MW_VAL00,MW_VAL01,MW_VAL02,MW_VAL03, MW_VAL00, MW_VAL01, MW_VAL02, MW_VAL03,
MW_VAL04,MW_VAL05,MW_VAL06,MW_VAL07, MW_VAL04, MW_VAL05, MW_VAL06, MW_VAL07,
MW_VAL08,MW_VAL09,MW_VAL10,MW_VAL11, MW_VAL08, MW_VAL09, MW_VAL10, MW_VAL11,
MW_VAL12,MW_VAL13,MW_VAL14,MW_VAL15, MW_VAL12, MW_VAL13, MW_VAL14, MW_VAL15,
MW_VAL16,MW_VAL17,MW_VAL18,MW_VAL19, MW_VAL16, MW_VAL17, MW_VAL18, MW_VAL19,
MW_VAL20,MW_VAL21,MW_VAL22,MW_VAL23 MW_VAL20, MW_VAL21, MW_VAL22, MW_VAL23
}; };
static const int MW_RESET[] = { static const int MW_RESET[] = {
MEMW_EDIT00RESET, MEMW_EDIT01RESET, MEMW_EDIT00RESET, MEMW_EDIT01RESET,
@ -240,7 +240,7 @@ static const int MW_RMADDR[] = {
}; };
static const int MW_EDITFORMULA[] = { static const int MW_EDITFORMULA[] = {
MEMW_EDIT00FORMULA, MEMW_EDIT01FORMULA, MEMW_EDIT00FORMULA, MEMW_EDIT01FORMULA,
MEMW_EDIT02FORMULA,MEMW_EDIT03FORMULA MEMW_EDIT02FORMULA, MEMW_EDIT03FORMULA
}; };

View File

@ -707,7 +707,7 @@ END
DIRCONFIG DIALOGEX 63, 7, 305, 255 DIRCONFIG DIALOGEX 63, 7, 305, 255
STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Directories Configuration" CAPTION "Directories Configuration"
FONT 9, "MS Shell Dlg", 0, 0, 0x0 FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN BEGIN
DEFPUSHBUTTON "OK",CLOSE_BUTTON,175,230,56,14 DEFPUSHBUTTON "OK",CLOSE_BUTTON,175,230,56,14
PUSHBUTTON "Cancel",BTN_CANCEL,239,230,56,14 PUSHBUTTON "Cancel",BTN_CANCEL,239,230,56,14
@ -752,7 +752,7 @@ END
DWBDIALOG DIALOG 33, 99, 250, 56 DWBDIALOG DIALOG 33, 99, 250, 56
STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "DWB!" CAPTION "DWB!"
FONT 9, "MS Shell Dlg" FONT 8, "MS Shell Dlg"
BEGIN BEGIN
LTEXT "Text",LBL_DWBDIALOG_TEXT,7,9,237,8 LTEXT "Text",LBL_DWBDIALOG_TEXT,7,9,237,8
PUSHBUTTON "Clear",BTN_CLEAR,64,32,50,14 PUSHBUTTON "Clear",BTN_CLEAR,64,32,50,14
@ -762,7 +762,7 @@ END
FKBDIALOG DIALOG 13, 72, 402, 194 FKBDIALOG DIALOG 13, 72, 402, 194
STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Family Keyboard Configuration" CAPTION "Family Keyboard Configuration"
FONT 9, "MS Shell Dlg" FONT 8, "MS Shell Dlg"
BEGIN BEGIN
DEFPUSHBUTTON "Close",BTN_CLOSE,320,170,56,14 DEFPUSHBUTTON "Close",BTN_CLOSE,320,170,56,14
LTEXT "Remember to push the ""Scroll Lock"" key during emulation to enable Family Keyboard input.",65503,18,6,370,12 LTEXT "Remember to push the ""Scroll Lock"" key during emulation to enable Family Keyboard input.",65503,18,6,370,12
@ -844,7 +844,7 @@ END
GAMEPADDIALOG DIALOGEX 4, 109, 243, 220 GAMEPADDIALOG DIALOGEX 4, 109, 243, 220
STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Gamepad Configuration" CAPTION "Gamepad Configuration"
FONT 9, "MS Shell Dlg", 0, 0, 0x0 FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN BEGIN
DEFPUSHBUTTON "Close",BTN_CLOSE,173,196,56,14 DEFPUSHBUTTON "Close",BTN_CLOSE,173,196,56,14
GROUPBOX "",GRP_GAMEPAD1,4,8,232,82,WS_GROUP GROUPBOX "",GRP_GAMEPAD1,4,8,232,82,WS_GROUP
@ -874,7 +874,7 @@ END
GUICONFIG DIALOGEX 16, 123, 184, 158 GUICONFIG DIALOGEX 16, 123, 184, 158
STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "GUI Configuration" CAPTION "GUI Configuration"
FONT 9, "MS Shell Dlg", 0, 0, 0x0 FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN BEGIN
DEFPUSHBUTTON "Close",BTN_CLOSE,65,136,56,14 DEFPUSHBUTTON "Close",BTN_CLOSE,65,136,56,14
CONTROL "Load ""File Open"" dialog when FCEUX starts.",CB_LOAD_FILE_OPEN, CONTROL "Load ""File Open"" dialog when FCEUX starts.",CB_LOAD_FILE_OPEN,
@ -896,7 +896,7 @@ END
INPUTCONFIG DIALOGEX 122, 105, 349, 199 INPUTCONFIG DIALOGEX 122, 105, 349, 199
STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Input Configuration" CAPTION "Input Configuration"
FONT 9, "MS Shell Dlg", 0, 0, 0x0 FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN BEGIN
GROUPBOX "Port 1:",102,20,31,152,50 GROUPBOX "Port 1:",102,20,31,152,50
COMBOBOX COMBO_PAD1,27,57,71,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP COMBOBOX COMBO_PAD1,27,57,71,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
@ -944,7 +944,7 @@ END
MAHJONGDIALOG DIALOG 65510, 106, 340, 110 MAHJONGDIALOG DIALOG 65510, 106, 340, 110
STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "mahjong" CAPTION "mahjong"
FONT 9, "MS Shell Dlg" FONT 8, "MS Shell Dlg"
BEGIN BEGIN
DEFPUSHBUTTON "Close",BTN_CLOSE,277,91,56,14 DEFPUSHBUTTON "Close",BTN_CLOSE,277,91,56,14
GROUPBOX "",321,8,8,324,73,WS_GROUP GROUPBOX "",321,8,8,324,73,WS_GROUP
@ -974,7 +974,7 @@ END
MAPINPUT DIALOGEX 0, 0, 318, 294 MAPINPUT DIALOGEX 0, 0, 318, 294
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Hotkeys" CAPTION "Hotkeys"
FONT 9, "MS Shell Dlg", 0, 0, 0x0 FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN BEGIN
DEFPUSHBUTTON "OK",IDOK,261,274,50,14 DEFPUSHBUTTON "OK",IDOK,261,274,50,14
PUSHBUTTON "Cancel",BTN_CANCEL,205,274,50,14 PUSHBUTTON "Cancel",BTN_CANCEL,205,274,50,14
@ -987,7 +987,7 @@ END
MESSAGELOG DIALOGEX 33, 38, 197, 229 MESSAGELOG DIALOGEX 33, 38, 197, 229
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Message Log" CAPTION "Message Log"
FONT 9, "MS Shell Dlg", 0, 0, 0x0 FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN BEGIN
EDITTEXT LBL_LOG_TEXT,1,1,194,208,ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | WS_VSCROLL EDITTEXT LBL_LOG_TEXT,1,1,194,208,ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | WS_VSCROLL
PUSHBUTTON "Clear",CLEAR_LOG,94,211,47,14 PUSHBUTTON "Clear",CLEAR_LOG,94,211,47,14
@ -997,7 +997,7 @@ END
NETMOO DIALOGEX 44, 59, 365, 209 NETMOO DIALOGEX 44, 59, 365, 209
STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Network Play" CAPTION "Network Play"
FONT 9, "MS Shell Dlg", 0, 0, 0x0 FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN BEGIN
EDITTEXT IDC_NETMOO_CMD_INPUT,10,137,347,12,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_OEMCONVERT | ES_WANTRETURN EDITTEXT IDC_NETMOO_CMD_INPUT,10,137,347,12,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_OEMCONVERT | ES_WANTRETURN
EDITTEXT IDC_NETMOO_STATUS,10,8,347,130,ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | WS_VSCROLL EDITTEXT IDC_NETMOO_STATUS,10,8,347,130,ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | WS_VSCROLL
@ -1019,7 +1019,7 @@ END
NEWINPUT DIALOGEX 0, 0, 186, 66 NEWINPUT DIALOGEX 0, 0, 186, 66
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Enter New Input" CAPTION "Enter New Input"
FONT 9, "MS Shell Dlg", 0, 0, 0x0 FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN BEGIN
CTEXT "Press a key",LBL_KEY_COMBO,31,14,122,20 CTEXT "Press a key",LBL_KEY_COMBO,31,14,122,20
PUSHBUTTON "Clear",BTN_CLEAR,95,45,50,14 PUSHBUTTON "Clear",BTN_CLEAR,95,45,50,14
@ -1029,7 +1029,7 @@ END
PALCONFIG DIALOGEX 16, 81, 228, 217 PALCONFIG DIALOGEX 16, 81, 228, 217
STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Palette Configuration" CAPTION "Palette Configuration"
FONT 9, "MS Shell Dlg", 0, 0, 0x0 FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN BEGIN
DEFPUSHBUTTON "Close",BUTTON_CLOSE,162,195,56,14 DEFPUSHBUTTON "Close",BUTTON_CLOSE,162,195,56,14
GROUPBOX "NES Palette",302,10,8,102,81,WS_GROUP GROUPBOX "NES Palette",302,10,8,102,81,WS_GROUP
@ -1061,7 +1061,7 @@ END
POWERPADDIALOG DIALOG 30, 123, 131, 119 POWERPADDIALOG DIALOG 30, 123, 131, 119
STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Power Pad Configuration" CAPTION "Power Pad Configuration"
FONT 9, "MS Shell Dlg" FONT 8, "MS Shell Dlg"
BEGIN BEGIN
DEFPUSHBUTTON "Close",BTN_CLOSE,34,95,56,14 DEFPUSHBUTTON "Close",BTN_CLOSE,34,95,56,14
GROUPBOX "",312,8,10,114,74,WS_GROUP GROUPBOX "",312,8,10,114,74,WS_GROUP
@ -1082,7 +1082,7 @@ END
QUIZKINGDIALOG DIALOG 30, 123, 160, 74 QUIZKINGDIALOG DIALOG 30, 123, 160, 74
STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "quiz king" CAPTION "quiz king"
FONT 9, "MS Shell Dlg" FONT 8, "MS Shell Dlg"
BEGIN BEGIN
DEFPUSHBUTTON "Close",BTN_CLOSE,54,56,56,14 DEFPUSHBUTTON "Close",BTN_CLOSE,54,56,56,14
GROUPBOX "Buzzers",312,8,7,144,39,WS_GROUP GROUPBOX "Buzzers",312,8,7,144,39,WS_GROUP
@ -1097,7 +1097,7 @@ END
SOUNDCONFIG DIALOGEX 8, 95, 334, 282 SOUNDCONFIG DIALOGEX 8, 95, 334, 282
STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Sound Configuration" CAPTION "Sound Configuration"
FONT 9, "MS Shell Dlg", 0, 0, 0x0 FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN BEGIN
DEFPUSHBUTTON "Close",BTN_CLOSE,280,260,44,14 DEFPUSHBUTTON "Close",BTN_CLOSE,280,260,44,14
GROUPBOX "Output/Output Format:",302,10,9,131,93,WS_GROUP GROUPBOX "Output/Output Format:",302,10,9,131,93,WS_GROUP
@ -1140,7 +1140,7 @@ END
SUBORKBDIALOG DIALOGEX 13, 72, 478, 171 SUBORKBDIALOG DIALOGEX 13, 72, 478, 171
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Subor Keyboard Configuration" CAPTION "Subor Keyboard Configuration"
FONT 9, "MS Shell Dlg", 0, 0, 0x0 FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN BEGIN
DEFPUSHBUTTON "Close",1,405,151,56,14 DEFPUSHBUTTON "Close",1,405,151,56,14
LTEXT "Remember to push the ""Scroll Lock"" key during emulation to enable Keyboard input.",-1,18,6,370,12 LTEXT "Remember to push the ""Scroll Lock"" key during emulation to enable Keyboard input.",-1,18,6,370,12
@ -1249,26 +1249,26 @@ BEGIN
END END
TIMINGCONFIG DIALOGEX 23, 157, 203, 110 TIMINGCONFIG DIALOGEX 23, 157, 203, 110
STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Timing Configuration" CAPTION "Timing Configuration"
FONT 9, "MS Shell Dlg", 0, 0, 0x0 FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN BEGIN
DEFPUSHBUTTON "Close",1,137,87,56,14 DEFPUSHBUTTON "Close",1,137,87,56,14
CONTROL "Disable speed throttling used when sound is disabled.",CB_DISABLE_SPEED_THROTTLING, CONTROL "Disable speed throttling used when sound is disabled.",CB_DISABLE_SPEED_THROTTLING,
"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 | WS_DISABLED EDITTEXT IDC_EXTRA_SCANLINES,104,55,84,14,ES_AUTOHSCROLL | ES_NUMBER | WS_DISABLED
LTEXT "Post-render scanlines:",IDC_EXTRA_SCANLINES_TEXT,21,57,74,8,WS_DISABLED LTEXT "Post-render scanlines:",IDC_EXTRA_SCANLINES_TEXT,21,57,74,8,WS_DISABLED
CONTROL "Don't overclock 7-bit samples.",CB_SKIP_7BIT,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,10,87,111,10 CONTROL "Don't overclock 7-bit samples.",CB_SKIP_7BIT,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,10,87,111,10
EDITTEXT IDC_VBLANK_SCANLINES,104,68,84,14,ES_AUTOHSCROLL | WS_DISABLED EDITTEXT IDC_VBLANK_SCANLINES,104,68,84,14,ES_AUTOHSCROLL | ES_NUMBER | WS_DISABLED
LTEXT "VBlank scanlines:",IDC_VBLANK_SCANLINES_TEXT,21,71,76,8,WS_DISABLED 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
STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Movie Options" CAPTION "Movie Options"
FONT 9, "MS Shell Dlg", 0, 0, 0x0 FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN BEGIN
DEFPUSHBUTTON "Close",IDC_MOVIE_CLOSE,48,200,49,14,BS_CENTER DEFPUSHBUTTON "Close",IDC_MOVIE_CLOSE,48,200,49,14,BS_CENTER
CONTROL "Pause after playback",IDC_MOVIE_PAUSEAFTERPLAYBACK, CONTROL "Pause after playback",IDC_MOVIE_PAUSEAFTERPLAYBACK,
@ -1295,7 +1295,7 @@ END
DWBDIALOGSIMPLE DIALOGEX 33, 99, 250, 39 DWBDIALOGSIMPLE DIALOGEX 33, 99, 250, 39
STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "DWBS!" CAPTION "DWBS!"
FONT 9, "MS Shell Dlg", 0, 0, 0x0 FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN BEGIN
LTEXT "Type a key, or press Escape to disable.",65429,53,14,125,8 LTEXT "Type a key, or press Escape to disable.",65429,53,14,125,8
END END
@ -1305,7 +1305,7 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_VI
EXSTYLE WS_EX_ACCEPTFILES EXSTYLE WS_EX_ACCEPTFILES
CAPTION "Memory Watch" CAPTION "Memory Watch"
MENU MEMWATCHMENU MENU MEMWATCHMENU
FONT 9, "MS Shell Dlg", 0, 0, 0x0 FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN BEGIN
GROUPBOX "",IDC_STATIC,3,0,126,200 GROUPBOX "",IDC_STATIC,3,0,126,200
GROUPBOX "",IDC_STATIC,131,0,128,200 GROUPBOX "",IDC_STATIC,131,0,128,200
@ -1395,7 +1395,7 @@ END
DEBUGGER DIALOGEX 54, 74, 546, 334 DEBUGGER DIALOGEX 54, 74, 546, 334
STYLE DS_SETFONT | DS_3DLOOK | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME STYLE DS_SETFONT | DS_3DLOOK | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
CAPTION "6502 Debugger" CAPTION "6502 Debugger"
FONT 9, "MS Shell Dlg", 0, 0, 0x0 FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN BEGIN
CONTROL "",IDC_DEBUGGER_DISASSEMBLY,"RichEdit20A",ES_MULTILINE | ES_NOHIDESEL | ES_READONLY | WS_BORDER | WS_HSCROLL,18,5,316,317 CONTROL "",IDC_DEBUGGER_DISASSEMBLY,"RichEdit20A",ES_MULTILINE | ES_NOHIDESEL | ES_READONLY | WS_BORDER | WS_HSCROLL,18,5,316,317
SCROLLBAR IDC_DEBUGGER_DISASSEMBLY_VSCR,334,5,11,317,SBS_VERT SCROLLBAR IDC_DEBUGGER_DISASSEMBLY_VSCR,334,5,11,317,SBS_VERT
@ -1478,7 +1478,7 @@ END
TRACER DIALOGEX 0, 0, 317, 181 TRACER DIALOGEX 0, 0, 317, 181
STYLE DS_SETFONT | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME STYLE DS_SETFONT | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
CAPTION "Trace Logger" CAPTION "Trace Logger"
FONT 9, "MS Shell Dlg", 400, 0, 0x0 FONT 8, "MS Shell Dlg", 400, 0, 0x0
BEGIN BEGIN
EDITTEXT IDC_TRACER_LOG,3,3,300,44,ES_MULTILINE | ES_NOHIDESEL | ES_READONLY | WS_HSCROLL EDITTEXT IDC_TRACER_LOG,3,3,300,44,ES_MULTILINE | ES_NOHIDESEL | ES_READONLY | WS_HSCROLL
SCROLLBAR IDC_SCRL_TRACER_LOG,303,3,11,44,SBS_VERT SCROLLBAR IDC_SCRL_TRACER_LOG,303,3,11,44,SBS_VERT
@ -1516,7 +1516,7 @@ END
ADDBP DIALOGEX 66, 83, 197, 125 ADDBP DIALOGEX 66, 83, 197, 125
STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Add Breakpoint..." CAPTION "Add Breakpoint..."
FONT 9, "MS Shell Dlg", 0, 0, 0x0 FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN BEGIN
LTEXT "&Address:",-1,14,6,30,10 LTEXT "&Address:",-1,14,6,30,10
EDITTEXT IDC_ADDBP_ADDR_START,48,4,30,12,ES_UPPERCASE | ES_WANTRETURN EDITTEXT IDC_ADDBP_ADDR_START,48,4,30,12,ES_UPPERCASE | ES_WANTRETURN
@ -1540,16 +1540,16 @@ BEGIN
END END
NTVIEW DIALOGEX 44, 38, 352, 350 NTVIEW DIALOGEX 44, 38, 352, 350
STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Name Table Viewer" CAPTION "Name Table Viewer"
FONT 9, "MS Shell Dlg", 0, 0, 0x0 FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN BEGIN
GROUPBOX "Name Tables",IDC_NTVIEW_TABLE_BOX,2,0,347,251,WS_TABSTOP GROUPBOX "Name Tables",IDC_NTVIEW_TABLE_BOX,2,0,347,251,WS_TABSTOP
LTEXT "Refresh: More",IDC_STATIC,225,254,50,9 LTEXT "Refresh: More",IDC_STATIC,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",IDC_STATIC,325,254,18,10 LTEXT "Less",IDC_STATIC,325,254,18,10
LTEXT "Display on scanline:",IDC_NTVIEW_SCANLINE_TEXT,253,269,65,9 LTEXT "Display on scanline:",IDC_NTVIEW_SCANLINE_TEXT,249,269,65,9
EDITTEXT IDC_NTVIEW_SCANLINE,315,267,27,12 EDITTEXT IDC_NTVIEW_SCANLINE,315,267,27,12,ES_NUMBER
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
CONTROL "Ignore Palettes",IDC_NTVIEW_HIDE_PALETTES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,276,69,10 CONTROL "Ignore Palettes",IDC_NTVIEW_HIDE_PALETTES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,276,69,10
@ -1571,7 +1571,7 @@ END
ROMPATCHER DIALOGEX 84, 67, 304, 135 ROMPATCHER DIALOGEX 84, 67, 304, 135
STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Rom Data Editor" CAPTION "Rom Data Editor"
FONT 9, "MS Shell Dlg", 0, 0, 0x0 FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN BEGIN
EDITTEXT IDC_ROMPATCHER_CURRENT_DATA,7,47,282,12,ES_READONLY EDITTEXT IDC_ROMPATCHER_CURRENT_DATA,7,47,282,12,ES_READONLY
PUSHBUTTON "Apply",IDC_ROMPATCHER_BTN_APPLY,185,92,54,14 PUSHBUTTON "Apply",IDC_ROMPATCHER_BTN_APPLY,185,92,54,14
@ -1590,7 +1590,7 @@ END
GGCONV DIALOGEX 84, 67, 186, 146 GGCONV DIALOGEX 84, 67, 186, 146
STYLE DS_SYSMODAL | DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SYSMODAL | DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Game Genie Encoder/Decoder Tool" CAPTION "Game Genie Encoder/Decoder Tool"
FONT 9, "MS Shell Dlg", 0, 0, 0x0 FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN BEGIN
GROUPBOX "Game Genie Code",-1,107,5,69,42 GROUPBOX "Game Genie Code",-1,107,5,69,42
EDITTEXT IDC_GAME_GENIE_CODE,115,22,53,14,ES_UPPERCASE | ES_AUTOHSCROLL EDITTEXT IDC_GAME_GENIE_CODE,115,22,53,14,ES_UPPERCASE | ES_AUTOHSCROLL
@ -1867,15 +1867,15 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | WS_POPUP | WS_CAPTI
CAPTION "Inline Assembler" CAPTION "Inline Assembler"
FONT 8, "MS Shell Dlg", 400, 0, 0x1 FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN BEGIN
EDITTEXT IDC_ASSEMBLER_DISASSEMBLY,27,9,167,12,ES_READONLY EDITTEXT IDC_ASSEMBLER_DISASSEMBLY,23,9,171,12,ES_READONLY
COMBOBOX IDC_ASSEMBLER_HISTORY,15,25,180,54,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_ASSEMBLER_HISTORY,7,25,188,54,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "Apply",IDC_ASSEMBLER_APPLY,159,114,36,14 PUSHBUTTON "Apply",IDC_ASSEMBLER_APPLY,159,114,36,14
LTEXT "PC:",-1,15,10,12,10 LTEXT "PC:",-1,8,11,12,8
LTEXT "Patch:",-1,15,41,26,9 LTEXT "Patch:",-1,8,41,22,8
PUSHBUTTON "Save...",IDC_ASSEMBLER_SAVE,117,114,36,14 PUSHBUTTON "Save...",IDC_ASSEMBLER_SAVE,117,114,36,14
PUSHBUTTON "Undo",IDC_ASSEMBLER_UNDO,15,114,35,14 PUSHBUTTON "Undo",IDC_ASSEMBLER_UNDO,6,114,36,14
DEFPUSHBUTTON "Def",IDC_ASSEMBLER_DEFPUSHBUTTON,55,116,16,12,NOT WS_VISIBLE DEFPUSHBUTTON "Define",IDC_ASSEMBLER_DEFPUSHBUTTON,46,114,36,14,NOT WS_VISIBLE
LISTBOX IDC_ASSEMBLER_PATCH_DISASM,15,50,180,59,LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | LBS_NOSEL | WS_VSCROLL | WS_TABSTOP LISTBOX IDC_ASSEMBLER_PATCH_DISASM,7,50,188,59,LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | LBS_NOSEL | WS_VSCROLL | WS_TABSTOP
END END
NAMEBOOKMARKDLG DIALOGEX 0, 0, 186, 73 NAMEBOOKMARKDLG DIALOGEX 0, 0, 186, 73
@ -1934,7 +1934,7 @@ END
PPUVIEW DIALOGEX 44, 38, 353, 234 PPUVIEW DIALOGEX 44, 38, 353, 234
STYLE DS_SETFONT | DS_MODALFRAME | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "PPU Viewer" CAPTION "PPU Viewer"
FONT 9, "MS Shell Dlg", 0, 0, 0x0 FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN BEGIN
GROUPBOX "Pattern Tables",GRP_PPUVIEW_TABLES,2,-1,348,185,WS_TABSTOP GROUPBOX "Pattern Tables",GRP_PPUVIEW_TABLES,2,-1,348,185,WS_TABSTOP
LTEXT "Tile:",LBL_PPUVIEW_TILE1,6,138,50,9 LTEXT "Tile:",LBL_PPUVIEW_TILE1,6,138,50,9
@ -1943,7 +1943,7 @@ BEGIN
CONTROL "",CTL_PPUVIEW_TRACKBAR,"msctls_trackbar32",WS_TABSTOP,280,151,50,11 CONTROL "",CTL_PPUVIEW_TRACKBAR,"msctls_trackbar32",WS_TABSTOP,280,151,50,11
LTEXT "Less",-1,330,151,18,10 LTEXT "Less",-1,330,151,18,10
LTEXT "Display on scanline:",-1,253,166,65,9 LTEXT "Display on scanline:",-1,253,166,65,9
EDITTEXT IDC_PPUVIEW_SCANLINE,315,164,27,12 EDITTEXT IDC_PPUVIEW_SCANLINE,315,164,27,12,ES_NUMBER
CONTROL "Sprites 8x16 mode",IDC_SPRITE16_MODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,151,160,10 CONTROL "Sprites 8x16 mode",IDC_SPRITE16_MODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,151,160,10
CONTROL "Mask unused graphics (Code/Data Logger)",IDC_MASK_UNUSED_GRAPHICS, CONTROL "Mask unused graphics (Code/Data Logger)",IDC_MASK_UNUSED_GRAPHICS,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,162,160,10 "Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,162,160,10
@ -2071,9 +2071,9 @@ BEGIN
END END
VIDEOCONFIG DIALOGEX 65520, 76, 511, 170 VIDEOCONFIG DIALOGEX 65520, 76, 511, 170
STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Video Configuration" CAPTION "Video Configuration"
FONT 9, "MS Shell Dlg", 0, 0, 0x0 FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN BEGIN
GROUPBOX "Full Screen Settings",65453,5,3,171,141,WS_GROUP GROUPBOX "Full Screen Settings",65453,5,3,171,141,WS_GROUP
CONTROL "Full Screen (Alt + Enter or double-click)",IDC_VIDEOCONFIG_FS, CONTROL "Full Screen (Alt + Enter or double-click)",IDC_VIDEOCONFIG_FS,
@ -2083,9 +2083,9 @@ BEGIN
LTEXT "Sync method:",65452,11,108,46,10 LTEXT "Sync method:",65452,11,108,46,10
COMBOBOX IDC_VIDEOCONFIG_SYNC_METHOD_FS,59,106,105,50,CBS_DROPDOWNLIST | WS_TABSTOP COMBOBOX IDC_VIDEOCONFIG_SYNC_METHOD_FS,59,106,105,50,CBS_DROPDOWNLIST | WS_TABSTOP
LTEXT "Mode:",13,11,67,23,9 LTEXT "Mode:",13,11,67,23,9
EDITTEXT IDC_VIDEOCONFIG_XRES,36,65,27,13,ES_RIGHT EDITTEXT IDC_VIDEOCONFIG_XRES,36,65,27,13,ES_RIGHT | ES_NUMBER
LTEXT "by",12,67,67,11,9 LTEXT "by",12,67,67,11,9
EDITTEXT IDC_VIDEOCONFIG_YRES,79,65,27,13,ES_RIGHT EDITTEXT IDC_VIDEOCONFIG_YRES,79,65,27,13,ES_RIGHT | ES_NUMBER
LTEXT "@",11,110,67,11,9 LTEXT "@",11,110,67,11,9
COMBOBOX IDC_VIDEOCONFIG_BPP,122,65,32,12,CBS_DROPDOWNLIST | WS_TABSTOP COMBOBOX IDC_VIDEOCONFIG_BPP,122,65,32,12,CBS_DROPDOWNLIST | WS_TABSTOP
LTEXT "bpp",10,157,67,14,9 LTEXT "bpp",10,157,67,14,9
@ -2110,10 +2110,10 @@ BEGIN
LTEXT "Last line:",65435,367,84,40,9 LTEXT "Last line:",65435,367,84,40,9
CTEXT "NTSC",65434,413,57,27,8 CTEXT "NTSC",65434,413,57,27,8
CTEXT "PAL/Dendy",65433,455,57,48,8 CTEXT "PAL/Dendy",65433,455,57,48,8
EDITTEXT IDC_SCANLINE_FIRST_NTSC,414,66,27,12,ES_RIGHT EDITTEXT IDC_SCANLINE_FIRST_NTSC,414,66,27,12,ES_RIGHT | ES_NUMBER
EDITTEXT IDC_SCANLINE_LAST_NTSC,414,83,27,12,ES_RIGHT EDITTEXT IDC_SCANLINE_LAST_NTSC,414,83,27,12,ES_RIGHT | ES_NUMBER
EDITTEXT IDC_SCANLINE_FIRST_PAL,465,66,27,12,ES_RIGHT EDITTEXT IDC_SCANLINE_FIRST_PAL,465,66,27,12,ES_RIGHT | ES_NUMBER
EDITTEXT IDC_SCANLINE_LAST_PAL,465,83,27,12,ES_RIGHT EDITTEXT IDC_SCANLINE_LAST_PAL,465,83,27,12,ES_RIGHT | ES_NUMBER
CONTROL "Clip left and right sides (8 px on each)",IDC_VIDEOCONFIG_CLIPSIDES, CONTROL "Clip left and right sides (8 px on each)",IDC_VIDEOCONFIG_CLIPSIDES,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,357,98,140,12 "Button",BS_AUTOCHECKBOX | WS_TABSTOP,357,98,140,12
DEFPUSHBUTTON "Close",ID_CANCEL,449,150,56,14 DEFPUSHBUTTON "Close",ID_CANCEL,449,150,56,14
@ -2224,7 +2224,7 @@ END
DLG_SNESPAD DIALOGEX 4, 109, 243, 121 DLG_SNESPAD DIALOGEX 4, 109, 243, 121
STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Gamepad Configuration" CAPTION "Gamepad Configuration"
FONT 9, "MS Shell Dlg", 0, 0, 0x0 FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN BEGIN
DEFPUSHBUTTON "Close",BTN_CLOSE,177,97,56,14 DEFPUSHBUTTON "Close",BTN_CLOSE,177,97,56,14
GROUPBOX "",GRP_GAMEPAD1,4,8,232,82,WS_GROUP GROUPBOX "",GRP_GAMEPAD1,4,8,232,82,WS_GROUP
@ -2312,7 +2312,7 @@ BEGIN
LTEXT "Mapper#:",IDC_MAPPER_TEXT,104,24,33,8,WS_DISABLED LTEXT "Mapper#:",IDC_MAPPER_TEXT,104,24,33,8,WS_DISABLED
COMBOBOX IDC_MAPPER_COMBO,139,22,115,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_MAPPER_COMBO,139,22,115,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP
LTEXT "Sub#:",IDC_SUBMAPPER_TEXT,261,24,21,8,WS_DISABLED LTEXT "Sub#:",IDC_SUBMAPPER_TEXT,261,24,21,8,WS_DISABLED
EDITTEXT IDC_SUBMAPPER_EDIT,284,21,15,14,ES_AUTOHSCROLL | WS_DISABLED EDITTEXT IDC_SUBMAPPER_EDIT,284,21,15,14,ES_AUTOHSCROLL | ES_NUMBER | WS_DISABLED
GROUPBOX "PRG",IDC_PRG_GROUP,14,42,294,27,WS_DISABLED GROUPBOX "PRG",IDC_PRG_GROUP,14,42,294,27,WS_DISABLED
LTEXT "PRG ROM:",IDC_PRGROM_TEXT,20,53,34,8,WS_DISABLED LTEXT "PRG ROM:",IDC_PRGROM_TEXT,20,53,34,8,WS_DISABLED
COMBOBOX IDC_PRGROM_COMBO,57,51,46,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_PRGROM_COMBO,57,51,46,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP
@ -2360,7 +2360,7 @@ BEGIN
LTEXT "Input device:",IDC_INPUT_DEVICE_TEXT,106,218,44,8,WS_DISABLED LTEXT "Input device:",IDC_INPUT_DEVICE_TEXT,106,218,44,8,WS_DISABLED
COMBOBOX IDC_INPUT_DEVICE_COMBO,153,216,154,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_INPUT_DEVICE_COMBO,153,216,154,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP
LTEXT "Misc. ROM(s)",IDC_MISCELLANEOUS_ROMS_TEXT,29,218,48,8,WS_DISABLED LTEXT "Misc. ROM(s)",IDC_MISCELLANEOUS_ROMS_TEXT,29,218,48,8,WS_DISABLED
EDITTEXT IDC_MISCELLANEOUS_ROMS_EDIT,14,215,12,14,ES_AUTOHSCROLL | WS_DISABLED EDITTEXT IDC_MISCELLANEOUS_ROMS_EDIT,14,215,12,14,ES_AUTOHSCROLL | ES_NUMBER | WS_DISABLED
PUSHBUTTON "Restore",IDC_RESTORE_BUTTON,6,237,44,14,WS_DISABLED PUSHBUTTON "Restore",IDC_RESTORE_BUTTON,6,237,44,14,WS_DISABLED
PUSHBUTTON "Save as...",IDSAVE,223,237,44,14,WS_DISABLED PUSHBUTTON "Save as...",IDSAVE,223,237,44,14,WS_DISABLED
DEFPUSHBUTTON "Close",IDCLOSE,270,237,44,14 DEFPUSHBUTTON "Close",IDCLOSE,270,237,44,14
@ -2382,6 +2382,14 @@ BEGIN
TOPMARGIN, 8 TOPMARGIN, 8
END END
"DWBDIALOG", DIALOG
BEGIN
END
"FKBDIALOG", DIALOG
BEGIN
END
"GAMEPADDIALOG", DIALOG "GAMEPADDIALOG", DIALOG
BEGIN BEGIN
END END
@ -2398,6 +2406,10 @@ BEGIN
BOTTOMMARGIN, 191 BOTTOMMARGIN, 191
END END
"MAHJONGDIALOG", DIALOG
BEGIN
END
"NETMOO", DIALOG "NETMOO", DIALOG
BEGIN BEGIN
LEFTMARGIN, 10 LEFTMARGIN, 10
@ -2438,6 +2450,10 @@ BEGIN
BOTTOMMARGIN, 217 BOTTOMMARGIN, 217
END END
"DWBDIALOGSIMPLE", DIALOG
BEGIN
END
"MEMWATCH", DIALOG "MEMWATCH", DIALOG
BEGIN BEGIN
RIGHTMARGIN, 260 RIGHTMARGIN, 260
@ -2497,6 +2513,26 @@ BEGIN
BEGIN BEGIN
END END
IDD_TASEDITOR_ABOUT, DIALOG
BEGIN
END
IDD_TASEDITOR_NEWPROJECT, DIALOG
BEGIN
END
IDD_TASEDITOR_EXPORT, DIALOG
BEGIN
END
IDD_TASEDITOR_FINDNOTE, DIALOG
BEGIN
END
IDD_TASEDITOR_SAVECOMPACT, DIALOG
BEGIN
END
"ASSEMBLER", DIALOG "ASSEMBLER", DIALOG
BEGIN BEGIN
LEFTMARGIN, 7 LEFTMARGIN, 7
@ -2642,6 +2678,21 @@ BEGIN
0 0
END END
ASSEMBLER AFX_DIALOG_LAYOUT
BEGIN
0
END
MEMVIEWFIND AFX_DIALOG_LAYOUT
BEGIN
0
END
VIDEOCONFIG AFX_DIALOG_LAYOUT
BEGIN
0
END
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// //

View File

@ -1288,6 +1288,11 @@ BOOL CALLBACK VideoConCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
EnableWindow(GetDlgItem(hwndDlg, IDC_TVASPECT_Y), eoptions&EO_TVASPECT); EnableWindow(GetDlgItem(hwndDlg, IDC_TVASPECT_Y), eoptions&EO_TVASPECT);
EnableWindow(GetDlgItem(hwndDlg, IDC_STATIC_SLASHTEXT), eoptions&EO_TVASPECT); EnableWindow(GetDlgItem(hwndDlg, IDC_STATIC_SLASHTEXT), eoptions&EO_TVASPECT);
DefaultEditCtrlProc = (WNDPROC)SetWindowLong(GetDlgItem(hwndDlg, IDC_WINSIZE_MUL_X), GWL_WNDPROC, (LONG)FilterEditCtrlProc);
SetWindowLong(GetDlgItem(hwndDlg, IDC_WINSIZE_MUL_Y), GWL_WNDPROC, (LONG)FilterEditCtrlProc);
SetWindowLong(GetDlgItem(hwndDlg, IDC_TVASPECT_X), GWL_WNDPROC, (LONG)FilterEditCtrlProc);
SetWindowLong(GetDlgItem(hwndDlg, IDC_TVASPECT_Y), GWL_WNDPROC, (LONG)FilterEditCtrlProc);
break; break;
} }
case WM_CLOSE: case WM_CLOSE:

View File

@ -243,7 +243,7 @@ int GetCheckedAutoFirePattern()
if (AFon == 4 && AFoff == 2) return MENU_AUTOFIRE_PATTERN_14; if (AFon == 4 && AFoff == 2) return MENU_AUTOFIRE_PATTERN_14;
if (AFon == 5 && AFoff == 1) return MENU_AUTOFIRE_PATTERN_15; if (AFon == 5 && AFoff == 1) return MENU_AUTOFIRE_PATTERN_15;
return MENU_AUTOFIRE_PATTERN_1; return MENU_AUTOFIRE_PATTERN_1;
} }
int GetCheckedAutoFireOffset() int GetCheckedAutoFireOffset()
@ -3271,6 +3271,7 @@ LRESULT APIENTRY FilterEditCtrlProc(HWND hwnd, UINT msg, WPARAM wP, LPARAM lP)
{ {
case WM_PASTE: case WM_PASTE:
{ {
bool(*IsLetterLegal)(char) = GetIsLetterLegal(GetDlgCtrlID(hwnd)); bool(*IsLetterLegal)(char) = GetIsLetterLegal(GetDlgCtrlID(hwnd));
if (IsLetterLegal) if (IsLetterLegal)
@ -3281,84 +3282,79 @@ LRESULT APIENTRY FilterEditCtrlProc(HWND hwnd, UINT msg, WPARAM wP, LPARAM lP)
if (handle) if (handle)
{ {
// copy the original clipboard string // get the original clipboard string
char* clipStr = (char*)GlobalLock(handle); char* clipStr = (char*)GlobalLock(handle);
char* original = (char*)calloc(1, strlen(clipStr) + 1);
strcpy(original, clipStr);
GlobalUnlock(handle);
// filter it out // check if the text in clipboard has illegal characters
int lmt = SendMessage(hwnd, EM_GETLIMITTEXT, 0, 0); int len = strlen(clipStr);
char* filtered = (char*)calloc(1, lmt + 1); for (int i = 0; i < len; ++i)
int filteredIndex = 0, origIndex = 0;
while (clipStr[origIndex] && filteredIndex < lmt + 1)
{ {
if (IsLetterLegal(clipStr[origIndex])) if (!IsLetterLegal(clipStr[i]))
{ {
filtered[filteredIndex] = clipStr[origIndex];
++filteredIndex;
}
++origIndex;
}
// copy filtered str to clipboard
EmptyClipboard();
HANDLE hNewStr = GlobalAlloc(GMEM_MOVEABLE, lmt);
char* newStr = (char*)GlobalLock(hNewStr);
strcpy(newStr, filtered);
GlobalUnlock(hNewStr);
SetClipboardData(CF_TEXT, hNewStr);
// end
CloseClipboard();
result = CallWindowProc(DefaultEditCtrlProc, hwnd, msg, wP, lP);
through = false; through = false;
free(filtered); // Show Edit control tip, just like the control with ES_NUMBER do
ShowLetterIllegalError(hwnd, IsLetterLegal);
// set it back to normal break;
if (OpenClipboard(hwnd))
{
handle = GetClipboardData(CF_TEXT);
if (handle)
{
EmptyClipboard();
HANDLE hOldStr = GlobalAlloc(GMEM_MOVEABLE, strlen(original) + 1);
char* oldStr = (char*)GlobalLock(hOldStr);
strcpy(oldStr, original);
GlobalUnlock(hOldStr);
SetClipboardData(CF_TEXT, hOldStr);
} }
}
GlobalUnlock(handle);
CloseClipboard(); CloseClipboard();
}
// end
free(original);
} }
} }
} }
} }
break; break;
case WM_CHAR: case WM_CHAR:
through = IsInputLegal(GetDlgCtrlID(GetFocus()), wP); {
bool(*IsLetterLegal)(char) = GetIsLetterLegal(GetDlgCtrlID(hwnd));
through = IsInputLegal(GetIsLetterLegal(GetDlgCtrlID(hwnd)), wP);
if (!through)
ShowLetterIllegalError(hwnd, IsLetterLegal);
}
} }
return through ? CallWindowProc(DefaultEditCtrlProc, hwnd, msg, wP, lP) : result; return through ? CallWindowProc(DefaultEditCtrlProc, hwnd, msg, wP, lP) : result;
} }
// return a letter legal checking function for the specified control with the given id
bool inline (*GetIsLetterLegal(UINT id))(char letter) bool inline (*GetIsLetterLegal(UINT id))(char letter)
{ {
switch (id) switch (id)
{ {
// owomomo TODO: RAM Search is a bit complicated,
// I'll handle it in later development
// Game genie text in Cheat and Game Genie Encoder/Decoder
case IDC_CHEAT_GAME_GENIE_TEXT: case IDC_CHEAT_GAME_GENIE_TEXT:
case IDC_GAME_GENIE_CODE: case IDC_GAME_GENIE_CODE:
return IsLetterLegalGG; return IsLetterLegalGG;
// Addresses in Debugger
case IDC_DEBUGGER_VAL_PCSEEK:
case IDC_DEBUGGER_VAL_PC:
case IDC_DEBUGGER_VAL_A:
case IDC_DEBUGGER_VAL_X:
case IDC_DEBUGGER_VAL_Y:
case IDC_DEBUGGER_BOOKMARK:
// Debugger -> Add breakpoint
case IDC_ADDBP_ADDR_START: case IDC_ADDBP_ADDR_END:
// RAM Watch / RAM Search / Cheat -> Add watch
// TODO: Some other features
// case IDC_EDIT_COMPAREADDRESS:
// Address, Value, Compare, Known Value, Note equal, Greater than and Less than in Cheat
case IDC_CHEAT_ADDR: case IDC_CHEAT_VAL: case IDC_CHEAT_COM: case IDC_CHEAT_ADDR: case IDC_CHEAT_VAL: case IDC_CHEAT_COM:
case IDC_CHEAT_VAL_KNOWN: case IDC_CHEAT_VAL_NE_BY: case IDC_CHEAT_VAL_KNOWN: case IDC_CHEAT_VAL_NE_BY:
case IDC_CHEAT_VAL_GT_BY: case IDC_CHEAT_VAL_LT_BY: case IDC_CHEAT_VAL_GT_BY: case IDC_CHEAT_VAL_LT_BY:
// Address, Value and Compare in Game Genie Encoder/Decoder
case IDC_GAME_GENIE_ADDR: case IDC_GAME_GENIE_VAL: case IDC_GAME_GENIE_COMP: case IDC_GAME_GENIE_ADDR: case IDC_GAME_GENIE_VAL: case IDC_GAME_GENIE_COMP:
// Address controls in Memory watch
case MW_ADDR00: case MW_ADDR01: case MW_ADDR02: case MW_ADDR03: case MW_ADDR00: case MW_ADDR01: case MW_ADDR02: case MW_ADDR03:
case MW_ADDR04: case MW_ADDR05: case MW_ADDR06: case MW_ADDR07: case MW_ADDR04: case MW_ADDR05: case MW_ADDR06: case MW_ADDR07:
case MW_ADDR08: case MW_ADDR09: case MW_ADDR10: case MW_ADDR11: case MW_ADDR08: case MW_ADDR09: case MW_ADDR10: case MW_ADDR11:
@ -3367,30 +3363,84 @@ bool inline (*GetIsLetterLegal(UINT id))(char letter)
case MW_ADDR20: case MW_ADDR21: case MW_ADDR22: case MW_ADDR23: case MW_ADDR20: case MW_ADDR21: case MW_ADDR22: case MW_ADDR23:
return IsLetterLegalHex; return IsLetterLegalHex;
// Size multiplier and TV Aspect in Video Config
case IDC_WINSIZE_MUL_X: case IDC_WINSIZE_MUL_Y:
case IDC_TVASPECT_X: case IDC_TVASPECT_Y:
return IsLetterLegalFloat;
// Cheat code in Cheat
case IDC_CHEAT_TEXT: case IDC_CHEAT_TEXT:
return IsLetterLegalCheat; return IsLetterLegalCheat;
// PRG ROM, PRG RAM, PRG NVRAM, CHR ROM, CHR RAM, CHR NVRAM in iNES Header Editor
case IDC_PRGROM_EDIT: case IDC_PRGRAM_EDIT: case IDC_PRGNVRAM_EDIT: case IDC_PRGROM_EDIT: case IDC_PRGRAM_EDIT: case IDC_PRGNVRAM_EDIT:
case IDC_CHRROM_EDIT: case IDC_CHRRAM_EDIT: case IDC_CHRNVRAM_EDIT: case IDC_CHRROM_EDIT: case IDC_CHRRAM_EDIT: case IDC_CHRNVRAM_EDIT:
return IsLetterLegalSize; return IsLetterLegalSize;
case IDC_SUBMAPPER_EDIT:
case IDC_MISCELLANEOUS_ROMS_EDIT:
return IsLetterLegalPosDec;
} }
return NULL; return NULL;
} }
bool inline IsInputLegal(UINT id, char letter) inline void ShowLetterIllegalError(HWND hwnd, bool(*IsLetterLegal)(char letter), bool balloon)
{
(balloon ? ShowLetterIllegalBalloonTip : ShowLetterIllegalMessageBox)(hwnd, IsLetterLegal);
}
void ShowLetterIllegalBalloonTip(HWND hwnd, bool(*IsLetterLegal)(char letter))
{
char* title = "Unacceptable Character";
int uLen = MultiByteToWideChar(CP_ACP, NULL, title, -1, NULL, 0);
wchar_t* titleW = (wchar_t*)malloc(sizeof(wchar_t) * uLen);
MultiByteToWideChar(CP_ACP, 0, title, -1, (LPWSTR)titleW, uLen);
char* msg = GetLetterIllegalErrMsg(IsLetterLegal);
uLen = MultiByteToWideChar(CP_ACP, NULL, msg, -1, NULL, 0);
wchar_t* msgW = (wchar_t*)malloc(sizeof(wchar_t) * uLen);
MultiByteToWideChar(CP_ACP, 0, msg, -1, (LPWSTR)msgW, uLen);
EDITBALLOONTIP tip;
tip.cbStruct = sizeof(EDITBALLOONTIP);
tip.pszText = msgW;
tip.pszTitle = titleW;
tip.ttiIcon = TTI_ERROR;
SendMessage(hwnd, EM_SHOWBALLOONTIP, 0, (LPARAM)&tip);
free(titleW);
free(msgW);
}
inline void ShowLetterIllegalMessageBox(HWND hwnd, bool(*IsLetterLegal)(char letter))
{
MessageBox(hwnd, GetLetterIllegalErrMsg(IsLetterLegal), "Unacceptable Character", MB_OK | MB_ICONERROR);
}
inline char* GetLetterIllegalErrMsg(bool(*IsLetterLegal)(char letter))
{
if (IsLetterLegal == IsLetterLegalGG)
return "You can only type Game Genie characters:\nA P Z L G I T Y E O X U K S V N";
if (IsLetterLegal == IsLetterLegalHex)
return "You can only type characters for hexadecimal number (0-9,A-F).";
if (IsLetterLegal == IsLetterLegalCheat)
return
"The cheat code comes into the following 2 formats:\n"
"AAAA:VV freezes the value in Address $AAAA to $VV.\n"
"AAAA?CC:VV changes the value in Address $AAAA to $VV only when it's $CC.\n"
"All the characters are hexadecimal number (0-9,A-F).\n";
if (IsLetterLegal == IsLetterLegalFloat)
return "You can only type decimal number (decimal point is acceptable).";
if (IsLetterLegal == IsLetterLegalSize)
return "You can only type decimal number followed with B, KB or MB.";
if (IsLetterLegal == IsLetterLegalDec)
return "You can only type decimal number (minus is acceptable).";
return "Your input contains invalid characters.";
}
inline bool IsInputLegal(bool (*IsLetterLegal)(char letter), char letter)
{ {
bool(*IsLetterLegal)(char) = GetIsLetterLegal(id);
return !IsLetterLegal || letter == VK_BACK || GetKeyState(VK_CONTROL) & 0x8000 || IsLetterLegal(letter); return !IsLetterLegal || letter == VK_BACK || GetKeyState(VK_CONTROL) & 0x8000 || IsLetterLegal(letter);
} }
bool inline IsLetterLegalGG(char letter) inline bool IsLetterLegalGG(char letter)
{ {
char ch = toupper(letter); char ch = toupper(letter);
for (int i = 0; GameGenieLetters[i]; ++i) for (int i = 0; GameGenieLetters[i]; ++i)
@ -3399,27 +3449,27 @@ bool inline IsLetterLegalGG(char letter)
return false; return false;
} }
bool inline IsLetterLegalHex(char letter) inline bool IsLetterLegalHex(char letter)
{ {
return letter >= '0' && letter <= '9' || letter >= 'A' && letter <= 'F' || letter >= 'a' && letter <= 'f'; return letter >= '0' && letter <= '9' || letter >= 'A' && letter <= 'F' || letter >= 'a' && letter <= 'f';
} }
bool inline IsLetterLegalCheat(char letter) inline bool IsLetterLegalCheat(char letter)
{ {
return letter >= '0' && letter <= ':' || letter >= 'A' && letter <= 'F' || letter >= 'a' && letter <= 'f' || letter == '?'; return letter >= '0' && letter <= ':' || letter >= 'A' && letter <= 'F' || letter >= 'a' && letter <= 'f' || letter == '?';
} }
bool inline IsLetterLegalSize(char letter) inline bool IsLetterLegalSize(char letter)
{ {
return letter >= '0' && letter <= '9' || letter == 'm' || letter == 'M' || letter == 'k' || letter == 'K' || letter == 'b' || letter == 'B'; return letter >= '0' && letter <= '9' || letter == 'm' || letter == 'M' || letter == 'k' || letter == 'K' || letter == 'b' || letter == 'B';
} }
bool inline IsLetterLegalPosDec(char letter) inline bool IsLetterLegalDec(char letter)
{
return letter >= '0' && letter <= '9';
}
bool inline IsLetterLegalDec(char letter)
{ {
return letter >= '0' && letter <= '9' || letter == '-'; return letter >= '0' && letter <= '9' || letter == '-';
} }
inline bool IsLetterLegalFloat(char letter)
{
return letter >= '0' && letter <= '9' || letter == '.';
}

View File

@ -128,14 +128,18 @@ struct HOTKEYMENUINDEX {
void UpdateMenuHotkeys(FCEUMENU_INDEX index); void UpdateMenuHotkeys(FCEUMENU_INDEX index);
int GetCurrentContextIndex(); int GetCurrentContextIndex();
bool inline (*GetIsLetterLegal(UINT id))(char letter); inline bool (*GetIsLetterLegal(UINT id))(char letter);
bool inline IsInputLegal(UINT id, char letter); inline char* GetLetterIllegalErrMsg(bool(*IsLetterLegal)(char letter));
bool inline IsLetterLegalGG(char letter); inline void ShowLetterIllegalError(HWND hwnd, bool(*IsLetterLegal)(char letter), bool balloon = true);
bool inline IsLetterLegalHex(char letter); void ShowLetterIllegalBalloonTip(HWND hwnd, bool(*IsLetterLegal)(char letter));
bool inline IsLetterLegalCheat(char letter); inline void ShowLetterIllegalMessageBox(HWND hwnd, bool(*IsLetterLegal)(char letter));
bool inline IsLetterLegalDec(char letter); inline bool IsInputLegal(bool(*IsLetterLegal)(char letter), char letter);
bool inline IsLetterLegalPosDec(char letter); inline bool IsLetterLegalGG(char letter);
bool inline IsLetterLegalSize(char letter); inline bool IsLetterLegalHex(char letter);
inline bool IsLetterLegalCheat(char letter);
inline bool IsLetterLegalDec(char letter);
inline bool IsLetterLegalSize(char letter);
inline bool IsLetterLegalFloat(char letter);
extern WNDPROC DefaultEditCtrlProc; extern WNDPROC DefaultEditCtrlProc;
extern LRESULT APIENTRY FilterEditCtrlProc(HWND hDlg, UINT msg, WPARAM wP, LPARAM lP); extern LRESULT APIENTRY FilterEditCtrlProc(HWND hDlg, UINT msg, WPARAM wP, LPARAM lP);