* Debugger: added CDL data column in place of left panel. It helps to distinguish executed branches of code from not logged code
* Debugger: clever autoscrolling when stepping/seeking to PC. It maintains relative position of the ">" pointer inside the Disassembly window
This commit is contained in:
parent
4d1e93b9e8
commit
da2b1ddb3d
|
@ -76,12 +76,17 @@ bool debuggerSaveLoadDEBFiles = true;
|
||||||
bool debuggerDisplayROMoffsets = false;
|
bool debuggerDisplayROMoffsets = false;
|
||||||
|
|
||||||
char debug_str[35000] = {0};
|
char debug_str[35000] = {0};
|
||||||
|
char debug_cdl_str[500] = {0};
|
||||||
char* debug_decoration_name;
|
char* debug_decoration_name;
|
||||||
char* debug_decoration_comment;
|
char* debug_decoration_comment;
|
||||||
char debug_str_decoration_comment[NL_MAX_MULTILINE_COMMENT_LEN + 2] = {0};
|
char debug_str_decoration_comment[NL_MAX_MULTILINE_COMMENT_LEN + 2] = {0};
|
||||||
|
|
||||||
// this is used to keep track of addresses that lines of Disassembly window correspont to
|
// this is used to keep track of addresses that lines of Disassembly window correspond to
|
||||||
std::vector<unsigned int> disassembly_addresses;
|
std::vector<unsigned int> disassembly_addresses;
|
||||||
|
// this is used to autoscroll the Disassembly window while keeping relative position of the ">" pointer inside this window
|
||||||
|
unsigned int PC_pointerOffset = 0;
|
||||||
|
// this is used for dirty, but unavoidable hack, which is necessary to ensure the ">" pointer is visible when stepping/seeking to PC
|
||||||
|
bool PC_pointerWasDrawn = false;
|
||||||
|
|
||||||
#define INVALID_START_OFFSET 1
|
#define INVALID_START_OFFSET 1
|
||||||
#define INVALID_END_OFFSET 2
|
#define INVALID_END_OFFSET 2
|
||||||
|
@ -189,6 +194,46 @@ unsigned int AddBreak(HWND hwndDlg)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This function is for "smart" scrolling...
|
||||||
|
// it attempts to scroll up one line by a whole instruction
|
||||||
|
int InstructionUp(int from)
|
||||||
|
{
|
||||||
|
int i = std::min(16, from), j;
|
||||||
|
|
||||||
|
while (i > 0)
|
||||||
|
{
|
||||||
|
j = i;
|
||||||
|
while (j > 0)
|
||||||
|
{
|
||||||
|
if (GetMem(from - j) == 0x00)
|
||||||
|
break; // BRK usually signifies data
|
||||||
|
if (opsize[GetMem(from - j)] == 0)
|
||||||
|
break; // invalid instruction!
|
||||||
|
if (opsize[GetMem(from - j)] > j)
|
||||||
|
break; // instruction is too long!
|
||||||
|
if (opsize[GetMem(from - j)] == j)
|
||||||
|
return (from - j); // instruction is just right! :D
|
||||||
|
j -= opsize[GetMem(from - j)];
|
||||||
|
}
|
||||||
|
i--;
|
||||||
|
}
|
||||||
|
|
||||||
|
// if we get here, no suitable instruction was found
|
||||||
|
if ((from >= 2) && (GetMem(from - 2) == 0x00))
|
||||||
|
return (from - 2); // if a BRK instruction is possible, use that
|
||||||
|
if (from)
|
||||||
|
return (from - 1); // else, scroll up one byte
|
||||||
|
return 0; // of course, if we can't scroll up, just return 0!
|
||||||
|
}
|
||||||
|
int InstructionDown(int from)
|
||||||
|
{
|
||||||
|
int tmp = opsize[GetMem(si.nPos)];
|
||||||
|
if ((tmp))
|
||||||
|
return from + tmp;
|
||||||
|
else
|
||||||
|
return from + 1; // this is data or undefined instruction
|
||||||
|
}
|
||||||
|
|
||||||
static void UpdateDialog(HWND hwndDlg) {
|
static void UpdateDialog(HWND hwndDlg) {
|
||||||
BOOL forbid = IsDlgButtonChecked(hwndDlg, IDC_ADDBP_MODE_F);
|
BOOL forbid = IsDlgButtonChecked(hwndDlg, IDC_ADDBP_MODE_F);
|
||||||
BOOL enable = !forbid;
|
BOOL enable = !forbid;
|
||||||
|
@ -370,6 +415,7 @@ void Disassemble(HWND hWnd, int id, int scrollid, unsigned int addr)
|
||||||
int lines = (rect.bottom-rect.top) / debugSystem->fixedFontHeight;
|
int lines = (rect.bottom-rect.top) / debugSystem->fixedFontHeight;
|
||||||
|
|
||||||
debug_str[0] = 0;
|
debug_str[0] = 0;
|
||||||
|
unsigned int instructions_count = 0;
|
||||||
for (int i = 0; i < lines; i++)
|
for (int i = 0; i < lines; i++)
|
||||||
{
|
{
|
||||||
// PC pointer
|
// PC pointer
|
||||||
|
@ -420,9 +466,14 @@ void Disassemble(HWND hWnd, int id, int scrollid, unsigned int addr)
|
||||||
// ################################## End of SP CODE ###########################
|
// ################################## End of SP CODE ###########################
|
||||||
|
|
||||||
if (addr == X.PC)
|
if (addr == X.PC)
|
||||||
|
{
|
||||||
|
PC_pointerOffset = instructions_count;
|
||||||
|
PC_pointerWasDrawn = true;
|
||||||
strcat(debug_str, ">");
|
strcat(debug_str, ">");
|
||||||
else
|
} else
|
||||||
|
{
|
||||||
strcat(debug_str, " ");
|
strcat(debug_str, " ");
|
||||||
|
}
|
||||||
|
|
||||||
if (addr >= 0x8000)
|
if (addr >= 0x8000)
|
||||||
{
|
{
|
||||||
|
@ -497,8 +548,37 @@ void Disassemble(HWND hWnd, int id, int scrollid, unsigned int addr)
|
||||||
strcat(strcat(debug_str, " "), a);
|
strcat(strcat(debug_str, " "), a);
|
||||||
}
|
}
|
||||||
strcat(debug_str, "\r\n");
|
strcat(debug_str, "\r\n");
|
||||||
|
instructions_count++;
|
||||||
}
|
}
|
||||||
SetDlgItemText(hWnd, id, debug_str);
|
SetDlgItemText(hWnd, id, debug_str);
|
||||||
|
|
||||||
|
// fill the left panel data
|
||||||
|
debug_cdl_str[0] = 0;
|
||||||
|
if (cdloggerdataSize)
|
||||||
|
{
|
||||||
|
uint8 cdl_data;
|
||||||
|
lines = disassembly_addresses.size();
|
||||||
|
for (int i = 0; i < lines; ++i)
|
||||||
|
{
|
||||||
|
instruction_addr = GetNesFileAddress(disassembly_addresses[i]) - 16;
|
||||||
|
if (instruction_addr >= 0 && instruction_addr < cdloggerdataSize)
|
||||||
|
{
|
||||||
|
cdl_data = cdloggerdata[instruction_addr] & 3;
|
||||||
|
if (cdl_data == 3)
|
||||||
|
strcat(debug_cdl_str, "cd\r\n"); // both Code and Data
|
||||||
|
else if (cdl_data == 2)
|
||||||
|
strcat(debug_cdl_str, " d\r\n"); // Data
|
||||||
|
else if (cdl_data == 1)
|
||||||
|
strcat(debug_cdl_str, "c\r\n"); // Code
|
||||||
|
else
|
||||||
|
strcat(debug_cdl_str, "\r\n"); // not logged
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
strcat(debug_cdl_str, "\r\n"); // cannot be logged
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SetDlgItemText(hWnd, IDC_DEBUGGER_DISASSEMBLY_LEFT_PANEL, debug_cdl_str);
|
||||||
}
|
}
|
||||||
|
|
||||||
char *DisassembleLine(int addr) {
|
char *DisassembleLine(int addr) {
|
||||||
|
@ -712,16 +792,47 @@ void UpdateDebugger(bool jump_to_pc)
|
||||||
SetForegroundWindow(hDebug);
|
SetForegroundWindow(hDebug);
|
||||||
|
|
||||||
char str[512] = {0}, str2[512] = {0}, chr[8];
|
char str[512] = {0}, str2[512] = {0}, chr[8];
|
||||||
int tmp, ret, i, starting_addres;
|
int tmp, ret, i, starting_address;
|
||||||
|
|
||||||
if (jump_to_pc || disassembly_addresses.size() == 0)
|
if (jump_to_pc || disassembly_addresses.size() == 0)
|
||||||
starting_addres = X.PC;
|
{
|
||||||
else
|
starting_address = X.PC;
|
||||||
starting_addres = disassembly_addresses[0];
|
|
||||||
Disassemble(hDebug, IDC_DEBUGGER_DISASSEMBLY, IDC_DEBUGGER_DISASSEMBLY_VSCR, starting_addres);
|
// ensure that PC pointer will be visible even after the window was resized
|
||||||
|
RECT rect;
|
||||||
|
GetClientRect(GetDlgItem(hDebug, IDC_DEBUGGER_DISASSEMBLY), &rect);
|
||||||
|
unsigned int lines = (rect.bottom-rect.top) / debugSystem->fixedFontHeight;
|
||||||
|
if (PC_pointerOffset >= lines)
|
||||||
|
PC_pointerOffset = 0;
|
||||||
|
|
||||||
|
// keep the relative position of the ">" pointer inside the Disassembly window
|
||||||
|
for (int i = PC_pointerOffset; i > 0; i--)
|
||||||
|
{
|
||||||
|
starting_address = InstructionUp(starting_address);
|
||||||
|
}
|
||||||
|
PC_pointerWasDrawn = false;
|
||||||
|
Disassemble(hDebug, IDC_DEBUGGER_DISASSEMBLY, IDC_DEBUGGER_DISASSEMBLY_VSCR, starting_address);
|
||||||
|
|
||||||
|
// HACK, but I don't see any other way to ensure the ">" pointer is visible when "Symbolic debug" is enabled
|
||||||
|
if (!PC_pointerWasDrawn && PC_pointerOffset)
|
||||||
|
{
|
||||||
|
// we've got a problem, probably due to Symbolic info taking so much space that PC pointer couldn't be seen with (PC_pointerOffset > 0)
|
||||||
|
PC_pointerOffset = 0;
|
||||||
|
starting_address = X.PC;
|
||||||
|
// retry with (PC_pointerOffset = 0) now
|
||||||
|
Disassemble(hDebug, IDC_DEBUGGER_DISASSEMBLY, IDC_DEBUGGER_DISASSEMBLY_VSCR, starting_address);
|
||||||
|
}
|
||||||
|
|
||||||
|
starting_address = X.PC;
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
starting_address = disassembly_addresses[0];
|
||||||
|
Disassemble(hDebug, IDC_DEBUGGER_DISASSEMBLY, IDC_DEBUGGER_DISASSEMBLY_VSCR, starting_address);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// "Address Bookmark Add" follows the address
|
// "Address Bookmark Add" follows the address
|
||||||
sprintf(str,"%04X", starting_addres);
|
sprintf(str,"%04X", starting_address);
|
||||||
SetDlgItemText(hDebug, IDC_DEBUGGER_BOOKMARK, str);
|
SetDlgItemText(hDebug, IDC_DEBUGGER_BOOKMARK, str);
|
||||||
|
|
||||||
sprintf(str, "%02X", X.A);
|
sprintf(str, "%02X", X.A);
|
||||||
|
@ -1199,10 +1310,10 @@ BOOL CALLBACK DebuggerEnumWindowsProc(HWND hwnd, LPARAM lParam)
|
||||||
int dx = (newDebuggerRect.right-newDebuggerRect.left)-(currDebuggerRect.right-currDebuggerRect.left); //Calculate & store difference in width of old size vs new size
|
int dx = (newDebuggerRect.right-newDebuggerRect.left)-(currDebuggerRect.right-currDebuggerRect.left); //Calculate & store difference in width of old size vs new size
|
||||||
int dy = (newDebuggerRect.bottom-newDebuggerRect.top)-(currDebuggerRect.bottom-currDebuggerRect.top); //ditto wtih height
|
int dy = (newDebuggerRect.bottom-newDebuggerRect.top)-(currDebuggerRect.bottom-currDebuggerRect.top); //ditto wtih height
|
||||||
|
|
||||||
HWND editbox = GetDlgItem(hDebug,IDC_DEBUGGER_DISASSEMBLY); //Get handle for Disassembly list box (large guy on the left)
|
HWND editbox = GetDlgItem(hDebug, IDC_DEBUGGER_DISASSEMBLY); //Get handle for Disassembly list box (large guy on the left)
|
||||||
HWND icontray = GetDlgItem(hDebug,IDC_DEBUGGER_ICONTRAY); //Get handle for Icontray, vertical column to the left of disassembly
|
HWND icontray = GetDlgItem(hDebug, IDC_DEBUGGER_DISASSEMBLY_LEFT_PANEL); //Get handle for Icontray, vertical column to the left of disassembly
|
||||||
HWND addrline = GetDlgItem(hDebug,IDC_DEBUGGER_ADDR_LINE); //Get handle of address line (text area under the disassembly
|
HWND addrline = GetDlgItem(hDebug, IDC_DEBUGGER_ADDR_LINE); //Get handle of address line (text area under the disassembly
|
||||||
HWND vscr = GetDlgItem(hDebug,IDC_DEBUGGER_DISASSEMBLY_VSCR); //Get handle for disassembly Vertical Scrollbar
|
HWND vscr = GetDlgItem(hDebug, IDC_DEBUGGER_DISASSEMBLY_VSCR); //Get handle for disassembly Vertical Scrollbar
|
||||||
|
|
||||||
char str[8] = {0};
|
char str[8] = {0};
|
||||||
|
|
||||||
|
@ -1252,46 +1363,6 @@ void LoadGameDebuggerData(HWND hwndDlg = hDebug)
|
||||||
FillBreakList(hwndDlg);
|
FillBreakList(hwndDlg);
|
||||||
}
|
}
|
||||||
|
|
||||||
// This function is for "smart" scrolling...
|
|
||||||
// it attempts to scroll up one line by a whole instruction
|
|
||||||
int InstructionUp(int from)
|
|
||||||
{
|
|
||||||
int i = std::min(16, from), j;
|
|
||||||
|
|
||||||
while (i > 0)
|
|
||||||
{
|
|
||||||
j = i;
|
|
||||||
while (j > 0)
|
|
||||||
{
|
|
||||||
if (GetMem(from - j) == 0x00)
|
|
||||||
break; // BRK usually signifies data
|
|
||||||
if (opsize[GetMem(from - j)] == 0)
|
|
||||||
break; // invalid instruction!
|
|
||||||
if (opsize[GetMem(from - j)] > j)
|
|
||||||
break; // instruction is too long!
|
|
||||||
if (opsize[GetMem(from - j)] == j)
|
|
||||||
return (from - j); // instruction is just right! :D
|
|
||||||
j -= opsize[GetMem(from - j)];
|
|
||||||
}
|
|
||||||
i--;
|
|
||||||
}
|
|
||||||
|
|
||||||
// if we get here, no suitable instruction was found
|
|
||||||
if ((from >= 2) && (GetMem(from - 2) == 0x00))
|
|
||||||
return (from - 2); // if a BRK instruction is possible, use that
|
|
||||||
if (from)
|
|
||||||
return (from - 1); // else, scroll up one byte
|
|
||||||
return 0; // of course, if we can't scroll up, just return 0!
|
|
||||||
}
|
|
||||||
int InstructionDown(int from)
|
|
||||||
{
|
|
||||||
int tmp = opsize[GetMem(si.nPos)];
|
|
||||||
if ((tmp))
|
|
||||||
return from + tmp;
|
|
||||||
else
|
|
||||||
return from + 1; // this is data or undefined instruction
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOL CALLBACK IDC_DEBUGGER_DISASSEMBLY_WndProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
BOOL CALLBACK IDC_DEBUGGER_DISASSEMBLY_WndProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
switch(uMsg)
|
switch(uMsg)
|
||||||
|
@ -1458,6 +1529,7 @@ BOOL CALLBACK DebuggerCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
|
||||||
|
|
||||||
//setup font
|
//setup font
|
||||||
SendDlgItemMessage(hwndDlg,IDC_DEBUGGER_DISASSEMBLY,WM_SETFONT,(WPARAM)debugSystem->hFixedFont,FALSE);
|
SendDlgItemMessage(hwndDlg,IDC_DEBUGGER_DISASSEMBLY,WM_SETFONT,(WPARAM)debugSystem->hFixedFont,FALSE);
|
||||||
|
SendDlgItemMessage(hwndDlg,IDC_DEBUGGER_DISASSEMBLY_LEFT_PANEL,WM_SETFONT,(WPARAM)debugSystem->hFixedFont,FALSE);
|
||||||
SendDlgItemMessage(hwndDlg,IDC_DEBUGGER_VAL_A,WM_SETFONT,(WPARAM)debugSystem->hFixedFont,FALSE);
|
SendDlgItemMessage(hwndDlg,IDC_DEBUGGER_VAL_A,WM_SETFONT,(WPARAM)debugSystem->hFixedFont,FALSE);
|
||||||
SendDlgItemMessage(hwndDlg,IDC_DEBUGGER_VAL_X,WM_SETFONT,(WPARAM)debugSystem->hFixedFont,FALSE);
|
SendDlgItemMessage(hwndDlg,IDC_DEBUGGER_VAL_X,WM_SETFONT,(WPARAM)debugSystem->hFixedFont,FALSE);
|
||||||
SendDlgItemMessage(hwndDlg,IDC_DEBUGGER_VAL_Y,WM_SETFONT,(WPARAM)debugSystem->hFixedFont,FALSE);
|
SendDlgItemMessage(hwndDlg,IDC_DEBUGGER_VAL_Y,WM_SETFONT,(WPARAM)debugSystem->hFixedFont,FALSE);
|
||||||
|
@ -1738,7 +1810,7 @@ BOOL CALLBACK DebuggerCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
|
||||||
mouse_y = GET_Y_LPARAM(lParam);
|
mouse_y = GET_Y_LPARAM(lParam);
|
||||||
|
|
||||||
bool setString = false;
|
bool setString = false;
|
||||||
if ((mouse_x > 8) && (mouse_x < 22) && (mouse_y > 10))
|
if ((mouse_x > 6) && (mouse_x < 30) && (mouse_y > 10))
|
||||||
{
|
{
|
||||||
setString = true;
|
setString = true;
|
||||||
RECT rectDisassembly;
|
RECT rectDisassembly;
|
||||||
|
@ -1765,7 +1837,7 @@ BOOL CALLBACK DebuggerCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
|
||||||
// mouse_y < 538
|
// mouse_y < 538
|
||||||
// > 33) tmp = 33
|
// > 33) tmp = 33
|
||||||
//mbg merge 7/18/06 changed pausing check
|
//mbg merge 7/18/06 changed pausing check
|
||||||
if (FCEUI_EmulationPaused() && (mouse_x > 8) && (mouse_x < 22) && (mouse_y > 10))
|
if (FCEUI_EmulationPaused() && (mouse_x > 6) && (mouse_x < 30) && (mouse_y > 10))
|
||||||
{
|
{
|
||||||
tmp = (mouse_y - 10) / debugSystem->fixedFontHeight;
|
tmp = (mouse_y - 10) / debugSystem->fixedFontHeight;
|
||||||
// ################################## End of SP CODE ###########################
|
// ################################## End of SP CODE ###########################
|
||||||
|
@ -1788,7 +1860,7 @@ BOOL CALLBACK DebuggerCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
|
||||||
mouse_x = GET_X_LPARAM(lParam);
|
mouse_x = GET_X_LPARAM(lParam);
|
||||||
mouse_y = GET_Y_LPARAM(lParam);
|
mouse_y = GET_Y_LPARAM(lParam);
|
||||||
//mbg merge 7/18/06 changed pausing check
|
//mbg merge 7/18/06 changed pausing check
|
||||||
if (FCEUI_EmulationPaused() && (mouse_x > 8) && (mouse_x < 22) && (mouse_y > 10))
|
if (FCEUI_EmulationPaused() && (mouse_x > 6) && (mouse_x < 30) && (mouse_y > 10))
|
||||||
{
|
{
|
||||||
tmp = (mouse_y - 10) / debugSystem->fixedFontHeight;
|
tmp = (mouse_y - 10) / debugSystem->fixedFontHeight;
|
||||||
if (tmp < (int)disassembly_addresses.size())
|
if (tmp < (int)disassembly_addresses.size())
|
||||||
|
@ -1809,7 +1881,7 @@ BOOL CALLBACK DebuggerCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
|
||||||
mouse_x = GET_X_LPARAM(lParam);
|
mouse_x = GET_X_LPARAM(lParam);
|
||||||
mouse_y = GET_Y_LPARAM(lParam);
|
mouse_y = GET_Y_LPARAM(lParam);
|
||||||
//mbg merge 7/18/06 changed pausing check
|
//mbg merge 7/18/06 changed pausing check
|
||||||
if (FCEUI_EmulationPaused() && (mouse_x > 8) && (mouse_x < 22) && (mouse_y > 10))
|
if (FCEUI_EmulationPaused() && (mouse_x > 6) && (mouse_x < 30) && (mouse_y > 10))
|
||||||
{
|
{
|
||||||
tmp = (mouse_y - 10) / debugSystem->fixedFontHeight;
|
tmp = (mouse_y - 10) / debugSystem->fixedFontHeight;
|
||||||
if (tmp < (int)disassembly_addresses.size())
|
if (tmp < (int)disassembly_addresses.size())
|
||||||
|
@ -1920,7 +1992,8 @@ BOOL CALLBACK DebuggerCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
|
||||||
break;
|
break;
|
||||||
case IDC_DEBUGGER_SEEK_PC:
|
case IDC_DEBUGGER_SEEK_PC:
|
||||||
//mbg merge 7/18/06 changed pausing check
|
//mbg merge 7/18/06 changed pausing check
|
||||||
if (FCEUI_EmulationPaused()) {
|
if (FCEUI_EmulationPaused())
|
||||||
|
{
|
||||||
UpdateRegs(hwndDlg);
|
UpdateRegs(hwndDlg);
|
||||||
UpdateDebugger(true);
|
UpdateDebugger(true);
|
||||||
}
|
}
|
||||||
|
@ -1928,7 +2001,8 @@ BOOL CALLBACK DebuggerCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
|
||||||
case IDC_DEBUGGER_SEEK_TO:
|
case IDC_DEBUGGER_SEEK_TO:
|
||||||
{
|
{
|
||||||
//mbg merge 7/18/06 changed pausing check
|
//mbg merge 7/18/06 changed pausing check
|
||||||
if (FCEUI_EmulationPaused()) UpdateRegs(hwndDlg);
|
if (FCEUI_EmulationPaused())
|
||||||
|
UpdateRegs(hwndDlg);
|
||||||
GetDlgItemText(hwndDlg,IDC_DEBUGGER_VAL_PCSEEK,str,5);
|
GetDlgItemText(hwndDlg,IDC_DEBUGGER_VAL_PCSEEK,str,5);
|
||||||
tmp = offsetStringToInt(BT_C, str);
|
tmp = offsetStringToInt(BT_C, str);
|
||||||
if (tmp != -1)
|
if (tmp != -1)
|
||||||
|
|
|
@ -1087,7 +1087,7 @@ STYLE DS_SETFONT | DS_3DLOOK | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_V
|
||||||
CAPTION "6502 Debugger"
|
CAPTION "6502 Debugger"
|
||||||
FONT 8, "MS Sans Serif", 0, 0, 0x0
|
FONT 8, "MS Sans Serif", 0, 0, 0x0
|
||||||
BEGIN
|
BEGIN
|
||||||
EDITTEXT IDC_DEBUGGER_DISASSEMBLY,15,5,318,301,ES_MULTILINE | ES_NOHIDESEL | ES_READONLY | WS_HSCROLL
|
EDITTEXT IDC_DEBUGGER_DISASSEMBLY,18,5,316,301,ES_MULTILINE | ES_NOHIDESEL | ES_READONLY | WS_HSCROLL
|
||||||
SCROLLBAR IDC_DEBUGGER_DISASSEMBLY_VSCR,334,5,11,301,SBS_VERT
|
SCROLLBAR IDC_DEBUGGER_DISASSEMBLY_VSCR,334,5,11,301,SBS_VERT
|
||||||
GROUPBOX "Status Flags",401,434,140,106,35,WS_TABSTOP
|
GROUPBOX "Status Flags",401,434,140,106,35,WS_TABSTOP
|
||||||
CONTROL "N",IDC_DEBUGGER_FLAG_N,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,440,149,18,12
|
CONTROL "N",IDC_DEBUGGER_FLAG_N,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,440,149,18,12
|
||||||
|
@ -1144,7 +1144,6 @@ BEGIN
|
||||||
PUSHBUTTON "Add",IDC_DEBUGGER_BOOKMARK_ADD,431,256,30,14
|
PUSHBUTTON "Add",IDC_DEBUGGER_BOOKMARK_ADD,431,256,30,14
|
||||||
PUSHBUTTON "Delete",IDC_DEBUGGER_BOOKMARK_DEL,431,272,30,14
|
PUSHBUTTON "Delete",IDC_DEBUGGER_BOOKMARK_DEL,431,272,30,14
|
||||||
PUSHBUTTON "Rom Patcher",IDC_DEBUGGER_ROM_PATCHER,472,288,64,14
|
PUSHBUTTON "Rom Patcher",IDC_DEBUGGER_ROM_PATCHER,472,288,64,14
|
||||||
CONTROL "",IDC_DEBUGGER_ICONTRAY,"Static",SS_BLACKFRAME,4,5,11,301
|
|
||||||
PUSHBUTTON "",IDC_DEBUGGER_RESTORESIZE,349,308,13,10
|
PUSHBUTTON "",IDC_DEBUGGER_RESTORESIZE,349,308,13,10
|
||||||
LTEXT "Default window size",IDC_STATIC,364,309,68,9
|
LTEXT "Default window size",IDC_STATIC,364,309,68,9
|
||||||
PUSHBUTTON "Run Line",IDC_DEBUGGER_RUN_LINE,351,37,38,14
|
PUSHBUTTON "Run Line",IDC_DEBUGGER_RUN_LINE,351,37,38,14
|
||||||
|
@ -1162,6 +1161,7 @@ BEGIN
|
||||||
GROUPBOX "",IDC_STATIC,468,241,72,65
|
GROUPBOX "",IDC_STATIC,468,241,72,65
|
||||||
CONTROL "ROM offsets",IDC_DEBUGGER_ROM_OFFSETS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,473,249,62,10
|
CONTROL "ROM offsets",IDC_DEBUGGER_ROM_OFFSETS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,473,249,62,10
|
||||||
PUSHBUTTON "Name",IDC_DEBUGGER_BOOKMARK_NAME,431,288,30,14
|
PUSHBUTTON "Name",IDC_DEBUGGER_BOOKMARK_NAME,431,288,30,14
|
||||||
|
EDITTEXT IDC_DEBUGGER_DISASSEMBLY_LEFT_PANEL,4,5,14,301,ES_MULTILINE | ES_AUTOHSCROLL | ES_READONLY | WS_DISABLED
|
||||||
END
|
END
|
||||||
|
|
||||||
TRACER DIALOGEX 65527, 65513, 403, 339
|
TRACER DIALOGEX 65527, 65513, 403, 339
|
||||||
|
|
|
@ -135,7 +135,6 @@
|
||||||
#define BTN_AUTO_HOLD 112
|
#define BTN_AUTO_HOLD 112
|
||||||
#define IDC_BTN_LOG_BROWSE 112
|
#define IDC_BTN_LOG_BROWSE 112
|
||||||
#define IDC_DEBUGGER_BOOKMARK_ADD 112
|
#define IDC_DEBUGGER_BOOKMARK_ADD 112
|
||||||
#define IDC_VIDEOCONFIG_SYNC_METHOD_WIN2 112
|
|
||||||
#define IDC_VIDEOCONFIG_DIRECTDRAW_WIN 112
|
#define IDC_VIDEOCONFIG_DIRECTDRAW_WIN 112
|
||||||
#define IDC_DEBUGGER_BOOKMARK_DEL 113
|
#define IDC_DEBUGGER_BOOKMARK_DEL 113
|
||||||
#define BTN_CLEAR_AH 114
|
#define BTN_CLEAR_AH 114
|
||||||
|
@ -387,6 +386,8 @@
|
||||||
#define IDC_LABEL_AUTHORINFO 303
|
#define IDC_LABEL_AUTHORINFO 303
|
||||||
#define IDC_BTN_CHEAT_UPD 303
|
#define IDC_BTN_CHEAT_UPD 303
|
||||||
#define IDC_VIDEOCONFIG_YSCALE 303
|
#define IDC_VIDEOCONFIG_YSCALE 303
|
||||||
|
#define IDC_DEBUGGER_DISASSEMBLY2 303
|
||||||
|
#define IDC_DEBUGGER_DISASSEMBLY_LEFT_PANEL 303
|
||||||
#define MENU_ENABLE_AUTOSAVE 304
|
#define MENU_ENABLE_AUTOSAVE 304
|
||||||
#define IDC_LABEL_ROMUSED 304
|
#define IDC_LABEL_ROMUSED 304
|
||||||
#define IDC_BTN_CHEAT_RESET 304
|
#define IDC_BTN_CHEAT_RESET 304
|
||||||
|
|
Loading…
Reference in New Issue