New features in Symbolic Name Debugging (#268)
* New Symbolic Debug Naming dialog: 1. Multiline comments can be directly edited in the dialog. 2. You can add an array of comments to the addresses. 3. More convinient features of symbolic debug naming. * Update the help document with the new feature of symbolic naming in Debugger.
This commit is contained in:
parent
6aebbcbb9b
commit
4ad03e4cb1
|
@ -936,11 +936,20 @@ INT_PTR CALLBACK SymbolicNamingCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPA
|
|||
if (node->comment && node->comment[0])
|
||||
SetDlgItemText(hwndDlg, IDC_SYMBOLIC_COMMENT, node->comment);
|
||||
}
|
||||
SetDlgItemText(hwndDlg, IDC_EDIT_SYMBOLIC_ARRAY, "10");
|
||||
SetDlgItemText(hwndDlg, IDC_EDIT_SYMBOLIC_INIT, "0");
|
||||
// set focus to IDC_SYMBOLIC_NAME
|
||||
SendMessage(hwndDlg, WM_NEXTDLGCTL, (WPARAM)GetDlgItem(hwndDlg, IDC_SYMBOLIC_NAME), true);
|
||||
//always set the limits
|
||||
SendDlgItemMessage(hwndDlg, IDC_SYMBOLIC_NAME, EM_SETLIMITTEXT, NL_MAX_NAME_LEN, 0);
|
||||
SendDlgItemMessage(hwndDlg, IDC_SYMBOLIC_COMMENT, EM_SETLIMITTEXT, NL_MAX_MULTILINE_COMMENT_LEN, 0);
|
||||
SendDlgItemMessage(hwndDlg, IDC_EDIT_SYMBOLIC_ARRAY, EM_SETLIMITTEXT, 2, 0);
|
||||
SendDlgItemMessage(hwndDlg, IDC_EDIT_SYMBOLIC_INIT, EM_SETLIMITTEXT, 2, 0);
|
||||
DefaultEditCtrlProc = (WNDPROC)SetWindowLongPtr(GetDlgItem(hwndDlg, IDC_EDIT_SYMBOLIC_ARRAY), GWLP_WNDPROC, (LONG_PTR)FilterEditCtrlProc);
|
||||
DefaultEditCtrlProc = (WNDPROC)SetWindowLongPtr(GetDlgItem(hwndDlg, IDC_EDIT_SYMBOLIC_INIT), GWLP_WNDPROC, (LONG_PTR)FilterEditCtrlProc);
|
||||
|
||||
CheckDlgButton(hwndDlg, IDC_CHECK_SYMBOLIC_NAME_OVERWRITE, BST_CHECKED);
|
||||
CheckDlgButton(hwndDlg, IDC_CHECK_SYMBOLIC_COMMENT_ARRAY_HEAD, BST_CHECKED);
|
||||
break;
|
||||
}
|
||||
case WM_CLOSE:
|
||||
|
@ -954,19 +963,86 @@ INT_PTR CALLBACK SymbolicNamingCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPA
|
|||
{
|
||||
switch(LOWORD(wParam))
|
||||
{
|
||||
case IDC_CHECK_SYMBOLIC_DELETE:
|
||||
{
|
||||
bool delete_mode = IsDlgButtonChecked(hwndDlg, IDC_CHECK_SYMBOLIC_DELETE) == BST_CHECKED;
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_STATIC_SYMBOLIC_NAME), !delete_mode);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_STATIC_SYMBOLIC_COMMENT), !delete_mode);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_SYMBOLIC_NAME), !delete_mode);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_SYMBOLIC_COMMENT), !delete_mode);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_CHECK_SYMBOLIC_NAME_OVERWRITE), !delete_mode);
|
||||
if (delete_mode)
|
||||
{
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_CHECK_SYMBOLIC_COMMENT_OVERWRITE), FALSE);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_CHECK_SYMBOLIC_COMMENT_ARRAY_HEAD), FALSE);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_STATIC_SYMBOLIC_INIT), FALSE);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_EDIT_SYMBOLIC_INIT), FALSE);
|
||||
} else
|
||||
{
|
||||
bool array_chk = IsDlgButtonChecked(hwndDlg, IDC_CHECK_SYMBOLIC_ARRAY) == BST_CHECKED;
|
||||
bool comment_head_only = IsDlgButtonChecked(hwndDlg, IDC_CHECK_SYMBOLIC_COMMENT_ARRAY_HEAD) == BST_CHECKED;
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_CHECK_SYMBOLIC_COMMENT_ARRAY_HEAD), array_chk);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_CHECK_SYMBOLIC_NAME_OVERWRITE), array_chk);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_CHECK_SYMBOLIC_COMMENT_OVERWRITE), array_chk && !comment_head_only);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_STATIC_SYMBOLIC_INIT), array_chk);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_EDIT_SYMBOLIC_INIT), array_chk);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case IDC_CHECK_SYMBOLIC_ARRAY:
|
||||
{
|
||||
bool array_chk = IsDlgButtonChecked(hwndDlg, IDC_CHECK_SYMBOLIC_ARRAY) == BST_CHECKED;
|
||||
bool delete_mode = IsDlgButtonChecked(hwndDlg, IDC_CHECK_SYMBOLIC_DELETE) == BST_CHECKED;
|
||||
bool comment_head_only = IsDlgButtonChecked(hwndDlg, IDC_CHECK_SYMBOLIC_COMMENT_ARRAY_HEAD) == BST_CHECKED;
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_CHECK_SYMBOLIC_NAME_OVERWRITE), array_chk && !delete_mode);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_CHECK_SYMBOLIC_COMMENT_ARRAY_HEAD), array_chk && !delete_mode);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_CHECK_SYMBOLIC_COMMENT_OVERWRITE), array_chk && !comment_head_only && !delete_mode);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_EDIT_SYMBOLIC_ARRAY), array_chk);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_STATIC_SYMBOLIC_BYTE), array_chk);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_STATIC_SYMBOLIC_INIT), array_chk && !delete_mode);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_EDIT_SYMBOLIC_INIT), array_chk && !delete_mode);
|
||||
break;
|
||||
}
|
||||
case IDC_CHECK_SYMBOLIC_COMMENT_ARRAY_HEAD:
|
||||
{
|
||||
bool comment_head_only = IsDlgButtonChecked(hwndDlg, IDC_CHECK_SYMBOLIC_COMMENT_ARRAY_HEAD) == BST_CHECKED;
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_CHECK_SYMBOLIC_COMMENT_OVERWRITE), !comment_head_only);
|
||||
break;
|
||||
}
|
||||
case IDOK:
|
||||
{
|
||||
unsigned int newAddress = 0;
|
||||
char newOffset[6] = {0};
|
||||
char newOffset[6] = { 0 };
|
||||
GetDlgItemText(hwndDlg, IDC_SYMBOLIC_ADDRESS, newOffset, 6);
|
||||
if (sscanf(newOffset, "%*[$]%4X", &newAddress) != EOF)
|
||||
{
|
||||
char newName[NL_MAX_NAME_LEN + 1] = {0};
|
||||
GetDlgItemText(hwndDlg, IDC_SYMBOLIC_NAME, newName, NL_MAX_NAME_LEN + 1);
|
||||
char newComment[NL_MAX_MULTILINE_COMMENT_LEN + 1] = {0};
|
||||
GetDlgItemText(hwndDlg, IDC_SYMBOLIC_COMMENT, newComment, NL_MAX_MULTILINE_COMMENT_LEN + 1);
|
||||
|
||||
AddNewSymbolicName(newAddress, newOffset, newName, newComment);
|
||||
unsigned int arraySize = 0;
|
||||
unsigned int arrayInit = 0;
|
||||
if (IsDlgButtonChecked(hwndDlg, IDC_CHECK_SYMBOLIC_ARRAY) == BST_CHECKED)
|
||||
{
|
||||
char strArraySize[6] = { 0 };
|
||||
GetDlgItemText(hwndDlg, IDC_EDIT_SYMBOLIC_ARRAY, strArraySize, 6);
|
||||
if (*strArraySize)
|
||||
sscanf(strArraySize, "%4X", &arraySize);
|
||||
}
|
||||
|
||||
if (IsDlgButtonChecked(hwndDlg, IDC_CHECK_SYMBOLIC_DELETE) == BST_UNCHECKED)
|
||||
{
|
||||
char newName[NL_MAX_NAME_LEN + 1] = { 0 };
|
||||
GetDlgItemText(hwndDlg, IDC_SYMBOLIC_NAME, newName, NL_MAX_NAME_LEN + 1);
|
||||
char newComment[NL_MAX_MULTILINE_COMMENT_LEN + 1] = { 0 };
|
||||
GetDlgItemText(hwndDlg, IDC_SYMBOLIC_COMMENT, newComment, NL_MAX_MULTILINE_COMMENT_LEN + 1);
|
||||
|
||||
char strArrayInit[6] = { 0 };
|
||||
GetDlgItemText(hwndDlg, IDC_EDIT_SYMBOLIC_INIT, strArrayInit, 6);
|
||||
if (*strArrayInit)
|
||||
sscanf(strArrayInit, "%4X", &arrayInit);
|
||||
|
||||
AddNewSymbolicName(newAddress, newOffset, newName, newComment, arraySize, arrayInit, IsDlgButtonChecked(hwndDlg, IDC_CHECK_SYMBOLIC_NAME_OVERWRITE) == BST_CHECKED, IsDlgButtonChecked(hwndDlg, IDC_CHECK_SYMBOLIC_COMMENT_ARRAY_HEAD) == BST_CHECKED, IsDlgButtonChecked(hwndDlg, IDC_CHECK_SYMBOLIC_COMMENT_OVERWRITE) == BST_CHECKED);
|
||||
} else
|
||||
DeleteSymbolicName(newAddress, arraySize);
|
||||
|
||||
WriteNameFileToDisk(generateNLFilenameForAddress(newAddress), getNamesPointerForAddress(newAddress));
|
||||
}
|
||||
EndDialog(hwndDlg, 1);
|
||||
|
@ -998,11 +1074,8 @@ bool DoSymbolicDebugNaming(int offset, HWND parentHWND)
|
|||
return false;
|
||||
}
|
||||
|
||||
void AddNewSymbolicName(uint16 newAddress, char* newOffset, char* newName, char* newComment)
|
||||
void AddNewSymbolicName(uint16 newAddress, char* newOffset, char* newName, char* newComment, int size, int init, bool nameOverwrite, bool commentHeadOnly, bool commentOverwrite)
|
||||
{
|
||||
Name* initialNode = getNamesPointerForAddress(newAddress);
|
||||
Name* node = initialNode;
|
||||
|
||||
// remove all delimiterChars from name and comment
|
||||
char* pos = newName;
|
||||
while (pos < newName + strlen(newName))
|
||||
|
@ -1025,122 +1098,172 @@ void AddNewSymbolicName(uint16 newAddress, char* newOffset, char* newName, char*
|
|||
|
||||
if (*newName || *newComment)
|
||||
{
|
||||
if (!initialNode)
|
||||
{
|
||||
// no previous data, create new list
|
||||
node = (Name*)malloc(sizeof(Name));
|
||||
node->offset = (char*)malloc(strlen(newOffset) + 1);
|
||||
strcpy(node->offset, newOffset);
|
||||
node->offsetNumeric = newAddress;
|
||||
if (strlen(newName))
|
||||
int i = 0;
|
||||
char* tmpNewOffset = (char*)malloc(strlen(newOffset) + 1);
|
||||
strcpy(tmpNewOffset, newOffset);
|
||||
uint16 tmpNewAddress = newAddress;
|
||||
int tmpInit = init;
|
||||
do {
|
||||
Name* node = getNamesPointerForAddress(tmpNewAddress);
|
||||
if (!node)
|
||||
{
|
||||
node->name = (char*)malloc(strlen(newName) + 1);
|
||||
strcpy(node->name, newName);
|
||||
}
|
||||
else
|
||||
{
|
||||
node->name = 0;
|
||||
}
|
||||
if (strlen(newComment))
|
||||
{
|
||||
node->comment = (char*)malloc(strlen(newComment) + 1);
|
||||
strcpy(node->comment, newComment);
|
||||
} else
|
||||
{
|
||||
node->comment = 0;
|
||||
}
|
||||
node->next = 0;
|
||||
setNamesPointerForAddress(newAddress, node);
|
||||
} else
|
||||
{
|
||||
// search the list
|
||||
while (node)
|
||||
{
|
||||
if (node->offsetNumeric == newAddress)
|
||||
node = (Name*)malloc(sizeof(Name));
|
||||
node->offset = (char*)malloc(strlen(tmpNewOffset) + 1);
|
||||
strcpy(node->offset, tmpNewOffset);
|
||||
node->offsetNumeric = tmpNewAddress;
|
||||
|
||||
// Node name
|
||||
if (strlen(newName))
|
||||
{
|
||||
// found matching address - replace its name and comment
|
||||
if (node->name)
|
||||
free(node->name);
|
||||
if (strlen(newName))
|
||||
if (size)
|
||||
{
|
||||
char arr_index[16];
|
||||
sprintf(arr_index, "[%X]", tmpInit);
|
||||
node->name = (char*)malloc(strlen(newName) + strlen(arr_index) + 1);
|
||||
strcpy(node->name, newName);
|
||||
strcat(node->name, arr_index);
|
||||
}
|
||||
else
|
||||
{
|
||||
node->name = (char*)malloc(strlen(newName) + 1);
|
||||
strcpy(node->name, newName);
|
||||
} else
|
||||
{
|
||||
node->name = 0;
|
||||
}
|
||||
if (node->comment)
|
||||
{
|
||||
free(node->comment);
|
||||
}
|
||||
if (strlen(newComment))
|
||||
{
|
||||
node->comment = (char*)malloc(strlen(newComment) + 1);
|
||||
strcpy(node->comment, newComment);
|
||||
} else
|
||||
{
|
||||
node->comment = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (node->next)
|
||||
{
|
||||
node = node->next;
|
||||
} else
|
||||
{
|
||||
// this is the last node in the list - so just append the address
|
||||
Name* newNode = (Name*)malloc(sizeof(Name));
|
||||
node->next = newNode;
|
||||
newNode->offset = (char*)malloc(strlen(newOffset) + 1);
|
||||
strcpy(newNode->offset, newOffset);
|
||||
newNode->offsetNumeric = newAddress;
|
||||
else
|
||||
node->name = 0;
|
||||
|
||||
if (strlen(newName))
|
||||
if ((i == 0 || !commentHeadOnly) && strlen(newComment))
|
||||
{
|
||||
node->comment = (char*)malloc(strlen(newComment) + 1);
|
||||
strcpy(node->comment, newComment);
|
||||
}
|
||||
else
|
||||
node->comment = 0;
|
||||
|
||||
node->next = 0;
|
||||
setNamesPointerForAddress(tmpNewAddress, node);
|
||||
}
|
||||
else
|
||||
{
|
||||
while (node)
|
||||
{
|
||||
if (node->offsetNumeric == tmpNewAddress)
|
||||
{
|
||||
newNode->name = (char*)malloc(strlen(newName) + 1);
|
||||
strcpy(newNode->name, newName);
|
||||
// found matching address, proccessing its name and comment based on the configuration
|
||||
if ((i == 0 || nameOverwrite) && node->name)
|
||||
{
|
||||
free(node->name);
|
||||
node->name = 0;
|
||||
}
|
||||
if (!node->name && strlen(newName))
|
||||
{
|
||||
if (size)
|
||||
{
|
||||
char arr_index[16];
|
||||
sprintf(arr_index, "[%X]", tmpInit);
|
||||
node->name = (char*)malloc(strlen(newName) + strlen(arr_index) + 1);
|
||||
strcpy(node->name, newName);
|
||||
strcat(node->name, arr_index);
|
||||
}
|
||||
else
|
||||
{
|
||||
node->name = (char*)malloc(strlen(newName) + 1);
|
||||
strcpy(node->name, newName);
|
||||
}
|
||||
}
|
||||
|
||||
if ((i == 0 || !commentHeadOnly && commentOverwrite) && node->comment)
|
||||
{
|
||||
free(node->comment);
|
||||
node->comment = 0;
|
||||
}
|
||||
if (!node->comment && strlen(newComment))
|
||||
{
|
||||
node->comment = (char*)malloc(strlen(newComment) + 1);
|
||||
strcpy(node->comment, newComment);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (node->next)
|
||||
node = node->next;
|
||||
else {
|
||||
newNode->name = 0;
|
||||
// this is the last node in the list - so just append the address
|
||||
Name* newNode = (Name*)malloc(sizeof(Name));
|
||||
newNode->offset = (char*)malloc(strlen(tmpNewOffset) + 1);
|
||||
strcpy(newNode->offset, tmpNewOffset);
|
||||
newNode->offsetNumeric = tmpNewAddress;
|
||||
|
||||
// Node name
|
||||
if (strlen(newName))
|
||||
{
|
||||
if (size)
|
||||
{
|
||||
char arr_index[16];
|
||||
sprintf(arr_index, "[%X]", tmpInit);
|
||||
newNode->name = (char*)malloc(strlen(newName) + strlen(arr_index) + 1);
|
||||
strcpy(newNode->name, newName);
|
||||
strcat(newNode->name, arr_index);
|
||||
}
|
||||
else
|
||||
{
|
||||
newNode->name = (char*)malloc(strlen(newName) + 1);
|
||||
strcpy(newNode->name, newName);
|
||||
}
|
||||
}
|
||||
else
|
||||
newNode->name = 0;
|
||||
|
||||
if ((i == 0 || !commentHeadOnly) && strlen(newComment))
|
||||
{
|
||||
newNode->comment = (char*)malloc(strlen(newComment) + 1);
|
||||
strcpy(newNode->comment, newComment);
|
||||
}
|
||||
else
|
||||
newNode->comment = 0;
|
||||
|
||||
newNode->next = 0;
|
||||
node->next = newNode;
|
||||
break;
|
||||
}
|
||||
if (strlen(newComment))
|
||||
{
|
||||
newNode->comment = (char*)malloc(strlen(newComment) + 1);
|
||||
strcpy(newNode->comment, newComment);
|
||||
} else {
|
||||
newNode->comment = 0;
|
||||
}
|
||||
newNode->next = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else
|
||||
{
|
||||
// name and comment field are all empty - remove the address from the list
|
||||
Name* previousNode = 0;
|
||||
++tmpNewAddress;
|
||||
++tmpInit;
|
||||
sprintf(tmpNewOffset, "$%04X", tmpNewAddress);
|
||||
} while (++i < size);
|
||||
}
|
||||
}
|
||||
|
||||
void DeleteSymbolicName(uint16 address, int size)
|
||||
{
|
||||
int i = 0;
|
||||
uint16 tmpAddress = address;
|
||||
do {
|
||||
Name* prev = 0;
|
||||
Name* initialNode = getNamesPointerForAddress(tmpAddress);
|
||||
Name* node = initialNode;
|
||||
while (node)
|
||||
{
|
||||
if (node->offsetNumeric == newAddress)
|
||||
if (node->offsetNumeric == tmpAddress)
|
||||
{
|
||||
// found matching address - delete it
|
||||
if (node->offset)
|
||||
free(node->offset);
|
||||
if (node->name)
|
||||
free(node->name);
|
||||
if (node->comment)
|
||||
free(node->comment);
|
||||
if (previousNode)
|
||||
previousNode->next = node->next;
|
||||
if (prev)
|
||||
prev->next = node->next;
|
||||
if (node == initialNode)
|
||||
setNamesPointerForAddress(newAddress, node->next);
|
||||
setNamesPointerForAddress(tmpAddress, node->next);
|
||||
free(node);
|
||||
break;
|
||||
}
|
||||
previousNode = node;
|
||||
prev = node;
|
||||
node = node->next;
|
||||
}
|
||||
}
|
||||
++tmpAddress;
|
||||
} while (++i < size);
|
||||
}
|
||||
|
||||
void WriteNameFileToDisk(const char* filename, Name* node)
|
||||
|
|
|
@ -64,5 +64,6 @@ void GoToDebuggerBookmark(HWND hwnd);
|
|||
int isHex(char c);
|
||||
|
||||
bool DoSymbolicDebugNaming(int offset, HWND parentHWND);
|
||||
void AddNewSymbolicName(uint16 newAddress, char* newOffset, char* newName, char* newComment);
|
||||
void AddNewSymbolicName(uint16 newAddress, char* newOffset, char* newName, char* newComment, int size, int init, bool nameOverwrite, bool commentHeadOnly, bool commentOverwrite);
|
||||
void DeleteSymbolicName(uint16 address, int size);
|
||||
void WriteNameFileToDisk(const char* filename, Name* node);
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
#include "afxres.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
|
@ -466,10 +465,10 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | WS_POPUP | WS_VISIB
|
|||
CAPTION "Zapper Configuration"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "Close", BTN_CLOSE, 13, 94, 56, 14
|
||||
GROUPBOX "Zapper", 312, 8, 7, 118, 75, WS_GROUP
|
||||
PUSHBUTTON "Trigger", 300, 15, 38, 30, 12
|
||||
PUSHBUTTON "Light Sensor", 301, 14, 19, 98, 12
|
||||
DEFPUSHBUTTON "Close",BTN_CLOSE,13,94,56,14
|
||||
GROUPBOX "Zapper",312,8,7,118,75,WS_GROUP
|
||||
PUSHBUTTON "Trigger",300,15,38,30,12
|
||||
PUSHBUTTON "Light Sensor",301,14,19,98,12
|
||||
END
|
||||
|
||||
QUIZKINGDIALOG DIALOG 30, 123, 160, 74
|
||||
|
@ -1696,21 +1695,33 @@ BEGIN
|
|||
GROUPBOX "Settings",IDC_STATIC,6,4,91,177
|
||||
END
|
||||
|
||||
IDD_SYMBOLIC_DEBUG_NAMING DIALOGEX 0, 0, 245, 83
|
||||
IDD_SYMBOLIC_DEBUG_NAMING DIALOGEX 0, 0, 253, 168
|
||||
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
|
||||
LTEXT "File",IDC_STATIC,7,7,15,9
|
||||
EDITTEXT IDC_SYMBOLIC_FILENAME,24,6,215,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
|
||||
LTEXT "Address",IDC_STATIC,6,26,30,10
|
||||
EDITTEXT IDC_SYMBOLIC_ADDRESS,38,24,33,13,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
|
||||
LTEXT "Name",IDC_STATIC,83,26,22,10
|
||||
EDITTEXT IDC_SYMBOLIC_NAME,107,24,132,13,ES_AUTOHSCROLL
|
||||
LTEXT "Comment",IDC_STATIC,6,45,37,10
|
||||
EDITTEXT IDC_SYMBOLIC_COMMENT,45,43,194,13,ES_AUTOHSCROLL
|
||||
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_FILENAME,26,6,220,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
|
||||
LTEXT "&Address:",IDC_STATIC_SYMBOLIC_ADDRESS,13,26,30,10
|
||||
EDITTEXT IDC_SYMBOLIC_ADDRESS,45,24,33,13,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
|
||||
CONTROL "A&rray size: 0x",IDC_CHECK_SYMBOLIC_ARRAY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,83,25,60,10
|
||||
EDITTEXT IDC_EDIT_SYMBOLIC_ARRAY,144,23,20,14,ES_UPPERCASE | ES_AUTOHSCROLL | WS_DISABLED
|
||||
LTEXT "byte(s)",IDC_STATIC_SYMBOLIC_BYTE,168,26,24,8,WS_DISABLED
|
||||
LTEXT "&Init: 0x",IDC_STATIC_SYMBOLIC_INIT,199,26,26,8,WS_DISABLED
|
||||
EDITTEXT IDC_EDIT_SYMBOLIC_INIT,226,23,20,14,ES_UPPERCASE | ES_AUTOHSCROLL | WS_DISABLED
|
||||
LTEXT "&Name:",IDC_STATIC_SYMBOLIC_NAME,20,44,22,10
|
||||
EDITTEXT IDC_SYMBOLIC_NAME,45,42,201,13,ES_AUTOHSCROLL
|
||||
CONTROL "&Overwrite names in array body",IDC_CHECK_SYMBOLIC_NAME_OVERWRITE,
|
||||
"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,45,59,117,10
|
||||
LTEXT "&Comment:",IDC_STATIC_SYMBOLIC_COMMENT,6,75,37,10
|
||||
EDITTEXT IDC_SYMBOLIC_COMMENT,45,75,201,43,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN
|
||||
CONTROL "Co&mment head address only",IDC_CHECK_SYMBOLIC_COMMENT_ARRAY_HEAD,
|
||||
"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,45,122,108,10
|
||||
CONTROL "O&verwrite comments in array body",IDC_CHECK_SYMBOLIC_COMMENT_OVERWRITE,
|
||||
"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,45,134,129,10
|
||||
CONTROL "De&lete",IDC_CHECK_SYMBOLIC_DELETE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,151,37,10
|
||||
DEFPUSHBUTTON "OK",IDOK,142,149,50,14
|
||||
PUSHBUTTON "Cancel",IDCANCEL,195,149,50,14
|
||||
END
|
||||
|
||||
IDD_REPLAY_METADATA DIALOGEX 0, 0, 325, 250
|
||||
|
@ -1873,6 +1884,10 @@ BEGIN
|
|||
BEGIN
|
||||
END
|
||||
|
||||
"LCDCOMPZAPPERDIALOG", DIALOG
|
||||
BEGIN
|
||||
END
|
||||
|
||||
"QUIZKINGDIALOG", DIALOG
|
||||
BEGIN
|
||||
END
|
||||
|
@ -2038,11 +2053,6 @@ BEGIN
|
|||
BOTTOMMARGIN, 226
|
||||
END
|
||||
|
||||
"LCDCOMPZAPPERDIALOG", DIALOG
|
||||
BEGIN
|
||||
END
|
||||
|
||||
"QUIZKINGDIALOG", DIALOG
|
||||
IDD_LUA, DIALOG
|
||||
BEGIN
|
||||
END
|
||||
|
@ -2074,7 +2084,8 @@ BEGIN
|
|||
|
||||
IDD_SYMBOLIC_DEBUG_NAMING, DIALOG
|
||||
BEGIN
|
||||
BOTTOMMARGIN, 82
|
||||
RIGHTMARGIN, 252
|
||||
BOTTOMMARGIN, 167
|
||||
END
|
||||
|
||||
"IDD_REPLAY_METADATA", DIALOG
|
||||
|
@ -2211,6 +2222,11 @@ BEGIN
|
|||
0
|
||||
END
|
||||
|
||||
IDD_SYMBOLIC_DEBUG_NAMING AFX_DIALOG_LAYOUT
|
||||
BEGIN
|
||||
0
|
||||
END
|
||||
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -3079,7 +3095,6 @@ IDB_BRANCH_SPRITESHEET BITMAP "res\\branch_spritesheet.bmp"
|
|||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
//{{NO_DEPENDENCIES}}
|
||||
// Microsoft Visual C++ 生成的包含文件。
|
||||
// 供 res.rc 使用
|
||||
// Microsoft Visual C++ generated include file.
|
||||
// Used by res.rc
|
||||
//
|
||||
#define CLOSE_BUTTON 1
|
||||
#define BUTTON_CLOSE 1
|
||||
|
@ -510,6 +510,7 @@
|
|||
#define IDC_CHECK1 1013
|
||||
#define IDC_CHEAT_AUTOLOADSAVE 1013
|
||||
#define IDC_CHECK_SHORTCUT 1013
|
||||
#define IDC_CHECK_SYMBOLIC_ARRAY 1013
|
||||
#define IDC_RESTORE_BUTTON 1014
|
||||
#define MW_VAL04 1014
|
||||
#define MW_NAME05 1015
|
||||
|
@ -517,38 +518,50 @@
|
|||
#define IDC_EDIT_SHORTCUT0 1016
|
||||
#define MW_VAL05 1017
|
||||
#define IDC_EDIT_SHORTCUT1 1017
|
||||
#define IDC_CHECK_SYMBOLIC_DELETE 1017
|
||||
#define IDC_PRGROM_COMBO 1018
|
||||
#define MW_NAME06 1018
|
||||
#define IDC_EDIT_SHORTCUT2 1018
|
||||
#define IDC_EDIT_SYMBOLIC_ARRAY 1018
|
||||
#define MW_ADDR06 1019
|
||||
#define IDC_CHRROM_COMBO 1019
|
||||
#define IDC_EDIT_SHORTCUT7 1019
|
||||
#define IDC_RADIO_MIRR_HORIZONTAL 1020
|
||||
#define MW_VAL06 1020
|
||||
#define IDC_EDIT_SHORTCUT6 1020
|
||||
#define IDC_STATIC_SYMBOLIC_NAME 1020
|
||||
#define IDC_RADIO_MIRR_VERTICAL 1021
|
||||
#define MW_NAME07 1021
|
||||
#define IDC_EDIT6 1021
|
||||
#define IDC_EDIT_SHORTCUT9 1021
|
||||
#define IDC_STATIC_SYMBOLIC_COMMENT 1021
|
||||
#define MW_ADDR07 1022
|
||||
#define IDC_RADIO_MIRR_4SCREEN 1022
|
||||
#define IDC_EDIT_SHORTCUT5 1022
|
||||
#define IDC_STATIC_SYMBOLIC_ADDRESS 1022
|
||||
#define MW_VAL07 1023
|
||||
#define IDC_EDIT_SHORTCUT4 1023
|
||||
#define IDC_CHECK_SYMBOLIC_COMMENT_ARRAY_HEAD 1023
|
||||
#define IDC_CHECK_TRAINER 1024
|
||||
#define MW_NAME08 1024
|
||||
#define IDC_EDIT_SHORTCUT8 1024
|
||||
#define IDC_CHECK_SYMBOLIC_COMMENT_OVERWRITE 1024
|
||||
#define MW_ADDR08 1025
|
||||
#define IDC_PRGRAM_COMBO 1025
|
||||
#define IDC_EDIT_SHORTCUT3 1025
|
||||
#define IDC_CHECK4 1025
|
||||
#define IDC_MAPPER_COMBO 1026
|
||||
#define MW_VAL08 1026
|
||||
#define IDC_CHECK_SYMBOLIC_OVERWRITE_NAME 1026
|
||||
#define IDC_CHECK_SYMBOLIC_NAME_OVERWRITE 1026
|
||||
#define IDC_SUBMAPPER_EDIT 1027
|
||||
#define MW_NAME09 1027
|
||||
#define IDC_STATIC_SYMBOLIC_BYTE 1027
|
||||
#define MW_ADDR09 1028
|
||||
#define IDC_CHRRAM_COMBO 1028
|
||||
#define IDC_PRGNVRAM_COMBO 1029
|
||||
#define MW_VAL09 1029
|
||||
#define IDC_STATIC_SYMBOLIC_INIT 1029
|
||||
#define IDC_CHRNVRAM_COMBO 1030
|
||||
#define MW_NAME10 1030
|
||||
#define MW_ADDR10 1031
|
||||
|
@ -890,6 +903,7 @@
|
|||
#define IDC_CHEAT_LABEL_KNOWN 1316
|
||||
#define IDC_BINARY 1317
|
||||
#define IDC_GAME_GENIE_ADDR 1501
|
||||
#define IDC_EDIT_SYMBOLIC_INIT 1502
|
||||
#define MENU_INESHEADEREDITOR 40001
|
||||
#define MENU_INPUT_BARCODE 40004
|
||||
#define ID_BOOKMARKS_IMPORT 40005
|
||||
|
@ -1191,9 +1205,9 @@
|
|||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 311
|
||||
#define _APS_NEXT_RESOURCE_VALUE 312
|
||||
#define _APS_NEXT_COMMAND_VALUE 40009
|
||||
#define _APS_NEXT_CONTROL_VALUE 1017
|
||||
#define _APS_NEXT_CONTROL_VALUE 1030
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -3358,6 +3358,9 @@ bool inline (*GetIsLetterLegal(UINT id))(char letter)
|
|||
// Debugger -> Add breakpoint
|
||||
case IDC_ADDBP_ADDR_START: case IDC_ADDBP_ADDR_END:
|
||||
|
||||
// Array Size, Init value in Symbolic Name in Debugger
|
||||
case IDC_EDIT_SYMBOLIC_ARRAY: case IDC_EDIT_SYMBOLIC_INIT:
|
||||
|
||||
// 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_VAL_KNOWN: case IDC_CHEAT_VAL_NE_BY:
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue