From 659f0b48db83c8a55a6c0489b9d810f04ff44c96 Mon Sep 17 00:00:00 2001 From: adelikat Date: Sat, 21 Feb 2009 23:38:20 +0000 Subject: [PATCH] Win32 - Debugger - Added DWEdits patch, it Adds pixel dislpay next to scanline display, and adds two new buttons: Run Line, Run 128 Lines --- changelog.txt | 2 + src/debug.cpp | 40 +++++---------- src/debug.h | 26 +++++++++- src/drivers/win/debugger.cpp | 46 +++++++++++++++-- src/drivers/win/res.rc | 99 +++++++++++++++++++----------------- src/drivers/win/resource.h | 3 ++ src/ppu.cpp | 2 +- 7 files changed, 137 insertions(+), 81 deletions(-) diff --git a/changelog.txt b/changelog.txt index 0da7ad9b..c8648f29 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,4 +1,6 @@ ---version 2.0.4 yet to be released--- +21-feb-2009 - adelikat - win32 - Debugger - Added pixel display after scanline display - Thanks to DWEdit for this patch +21-feb-2009 - adelikat - win32 - Debugger - Added Run Line, Run 128 Lines buttons - Thanks to DWEdit for this patch 21-feb-2009 - adelikat - win32 - Message Log - remembers X,Y position 19-feb-2009 - adelikat - win32 - Memory Watch - fixed recent file menu - no longer crashes when attempting to load a non existent recent file 07-feb-2009 - adelikat - win32 - Fix bug in screenshot numbering that caused numbering to not reset when changing ROMs diff --git a/src/debug.cpp b/src/debug.cpp index b79b7557..49beec02 100644 --- a/src/debug.cpp +++ b/src/debug.cpp @@ -533,7 +533,18 @@ void breakpoint() { BreakHit(true); return; } - + //if we're running for a scanline, we want to check if we've hit the cycle limit + if (dbgstate.runline) { + uint64 ts = timestampbase; + ts+=timestamp; + int diff = dbgstate.runline_end_time-ts; + if (diff<=0) + { + dbgstate.runline=false; + BreakHit(true); + return; + } + } //check the step over address and break if we've hit it if ((watchpoint[64].address == _PC) && (watchpoint[64].flags)) { watchpoint[64].address = 0; @@ -602,33 +613,10 @@ int debug_tracing; void DebugCycle() { - if (numWPs || dbgstate.step || dbgstate.stepout || watchpoint[64].flags || dbgstate.badopbreak) + if (numWPs || dbgstate.step || dbgstate.runline || dbgstate.stepout || watchpoint[64].flags || dbgstate.badopbreak) breakpoint(); if(debug_loggingCD) LogCDData(); //mbg 6/30/06 - this was commented out when i got here. i dont understand it anyway //if(logging || (hMemView && (EditingMode == 2))) LogInstruction(); FCEUD_TraceInstruction(); -} - - -//opbrktype is used to grab the breakpoint type that each instruction will cause. -//WP_X is not used because ALL opcodes will have the execute bit set. -const uint8 opbrktype[256] = { - /*0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F*/ -/*0x00*/ 0, WP_R, 0, 0, 0, WP_R, WP_R|WP_W, 0, 0, 0, 0, 0, 0, WP_R, WP_R|WP_W, 0, -/*0x10*/ 0, WP_R, 0, 0, 0, WP_R, WP_R|WP_W, 0, 0, WP_R, 0, 0, 0, WP_R, WP_R|WP_W, 0, -/*0x20*/ 0, WP_R, 0, 0, WP_R, WP_R, WP_R|WP_W, 0, 0, 0, 0, 0, WP_R, WP_R, WP_R|WP_W, 0, -/*0x30*/ 0, WP_R, 0, 0, 0, WP_R, WP_R|WP_W, 0, 0, WP_R, 0, 0, 0, WP_R, WP_R|WP_W, 0, -/*0x40*/ 0, WP_R, 0, 0, 0, WP_R, WP_R|WP_W, 0, 0, 0, 0, 0, 0, WP_R, WP_R|WP_W, 0, -/*0x50*/ 0, WP_R, 0, 0, 0, WP_R, WP_R|WP_W, 0, 0, WP_R, 0, 0, 0, WP_R, WP_R|WP_W, 0, -/*0x60*/ 0, WP_R, 0, 0, 0, WP_R, WP_R|WP_W, 0, 0, 0, 0, 0, WP_R, WP_R, WP_R|WP_W, 0, -/*0x70*/ 0, WP_R, 0, 0, 0, WP_R, WP_R|WP_W, 0, 0, WP_R, 0, 0, 0, WP_R, WP_R|WP_W, 0, -/*0x80*/ 0, WP_W, 0, 0, WP_W, WP_W, WP_W, 0, 0, 0, 0, 0, WP_W, WP_W, WP_W, 0, -/*0x90*/ 0, WP_W, 0, 0, WP_W, WP_W, WP_W, 0, 0, WP_W, 0, 0, 0, WP_W, 0, 0, -/*0xA0*/ 0, WP_R, 0, 0, WP_R, WP_R, WP_R, 0, 0, 0, 0, 0, WP_R, WP_R, WP_R, 0, -/*0xB0*/ 0, WP_R, 0, 0, WP_R, WP_R, WP_R, 0, 0, WP_R, 0, 0, WP_R, WP_R, WP_R, 0, -/*0xC0*/ 0, WP_R, 0, 0, WP_R, WP_R, WP_R|WP_W, 0, 0, 0, 0, 0, WP_R, WP_R, WP_R|WP_W, 0, -/*0xD0*/ 0, WP_R, 0, 0, 0, WP_R, WP_R|WP_W, 0, 0, WP_R, 0, 0, 0, WP_R, WP_R|WP_W, 0, -/*0xE0*/ 0, WP_R, 0, 0, WP_R, WP_R, WP_R|WP_W, 0, 0, 0, 0, 0, WP_R, WP_R, WP_R|WP_W, 0, -/*0xF0*/ 0, WP_R, 0, 0, 0, WP_R, WP_R|WP_W, 0, 0, WP_R, 0, 0, 0, WP_R, WP_R|WP_W, 0 -}; \ No newline at end of file +} \ No newline at end of file diff --git a/src/debug.h b/src/debug.h index 85d893d5..e948cc52 100644 --- a/src/debug.h +++ b/src/debug.h @@ -17,7 +17,27 @@ #define BT_S 0x40 //break type, sprite mem //opbrktype is used to grab the breakpoint type that each instruction will cause. -extern const uint8 opbrktype[256]; +//WP_X is not used because ALL opcodes will have the execute bit set. +static const uint8 opbrktype[256] = { + /*0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F*/ +/*0x00*/ 0, WP_R, 0, 0, 0, WP_R, WP_R|WP_W, 0, 0, 0, 0, 0, 0, WP_R, WP_R|WP_W, 0, +/*0x10*/ 0, WP_R, 0, 0, 0, WP_R, WP_R|WP_W, 0, 0, WP_R, 0, 0, 0, WP_R, WP_R|WP_W, 0, +/*0x20*/ 0, WP_R, 0, 0, WP_R, WP_R, WP_R|WP_W, 0, 0, 0, 0, 0, WP_R, WP_R, WP_R|WP_W, 0, +/*0x30*/ 0, WP_R, 0, 0, 0, WP_R, WP_R|WP_W, 0, 0, WP_R, 0, 0, 0, WP_R, WP_R|WP_W, 0, +/*0x40*/ 0, WP_R, 0, 0, 0, WP_R, WP_R|WP_W, 0, 0, 0, 0, 0, 0, WP_R, WP_R|WP_W, 0, +/*0x50*/ 0, WP_R, 0, 0, 0, WP_R, WP_R|WP_W, 0, 0, WP_R, 0, 0, 0, WP_R, WP_R|WP_W, 0, +/*0x60*/ 0, WP_R, 0, 0, 0, WP_R, WP_R|WP_W, 0, 0, 0, 0, 0, WP_R, WP_R, WP_R|WP_W, 0, +/*0x70*/ 0, WP_R, 0, 0, 0, WP_R, WP_R|WP_W, 0, 0, WP_R, 0, 0, 0, WP_R, WP_R|WP_W, 0, +/*0x80*/ 0, WP_W, 0, 0, WP_W, WP_W, WP_W, 0, 0, 0, 0, 0, WP_W, WP_W, WP_W, 0, +/*0x90*/ 0, WP_W, 0, 0, WP_W, WP_W, WP_W, 0, 0, WP_W, 0, 0, 0, WP_W, 0, 0, +/*0xA0*/ 0, WP_R, 0, 0, WP_R, WP_R, WP_R, 0, 0, 0, 0, 0, WP_R, WP_R, WP_R, 0, +/*0xB0*/ 0, WP_R, 0, 0, WP_R, WP_R, WP_R, 0, 0, WP_R, 0, 0, WP_R, WP_R, WP_R, 0, +/*0xC0*/ 0, WP_R, 0, 0, WP_R, WP_R, WP_R|WP_W, 0, 0, 0, 0, 0, WP_R, WP_R, WP_R|WP_W, 0, +/*0xD0*/ 0, WP_R, 0, 0, 0, WP_R, WP_R|WP_W, 0, 0, WP_R, 0, 0, 0, WP_R, WP_R|WP_W, 0, +/*0xE0*/ 0, WP_R, 0, 0, WP_R, WP_R, WP_R|WP_W, 0, 0, 0, 0, 0, WP_R, WP_R, WP_R|WP_W, 0, +/*0xF0*/ 0, WP_R, 0, 0, 0, WP_R, WP_R|WP_W, 0, 0, WP_R, 0, 0, 0, WP_R, WP_R|WP_W, 0 +}; + typedef struct { uint16 address; @@ -84,6 +104,10 @@ public: bool step; ///indicates whether the debugger is stepping out of a function call bool stepout; + ///indicates whether the debugger is running one line + bool runline; + ///target timestamp for runline to stop at + uint64 runline_end_time; ///indicates whether the debugger should break on bad opcodes bool badopbreak; ///counts the nest level of the call stack while stepping out diff --git a/src/drivers/win/debugger.cpp b/src/drivers/win/debugger.cpp index bed2c9dd..c23b545a 100644 --- a/src/drivers/win/debugger.cpp +++ b/src/drivers/win/debugger.cpp @@ -67,10 +67,10 @@ static SCROLLINFO si; void RestoreSize(HWND hwndDlg) { - //As of the writing of this function (revision 1053) the Debugger default width = 821 and height of 523 + //As of the writing of this function (revision 1137) the Debugger default width = 821 and height of 523 //If the dialog dimensions are changed those changes need to be reflected here. - adelikat const int DEFAULT_WIDTH = 821; //Original width - const int DEFAULT_HEIGHT = 523; //Original height + const int DEFAULT_HEIGHT = 549; //Original height SetWindowPos(hwndDlg,HWND_TOPMOST,DbgPosX,DbgPosY,DEFAULT_WIDTH,DEFAULT_HEIGHT,SWP_SHOWWINDOW); } @@ -179,7 +179,7 @@ BOOL CALLBACK AddbpCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { char str[8]={0}; int tmp; - + switch(uMsg) { case WM_INITDIALOG: CenterWindow(hwndDlg); @@ -187,7 +187,7 @@ BOOL CALLBACK AddbpCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) SendDlgItemMessage(hwndDlg,IDC_ADDBP_ADDR_END,EM_SETLIMITTEXT,4,0); if (WP_edit >= 0) { SetWindowText(hwndDlg,"Edit Breakpoint..."); - + sprintf(str,"%04X",watchpoint[WP_edit].address); SetDlgItemText(hwndDlg,IDC_ADDBP_ADDR_START,str); sprintf(str,"%04X",watchpoint[WP_edit].endaddress); @@ -536,7 +536,15 @@ void UpdateDebugger() sprintf(str, "%02X", PPU[3]); SetDlgItemText(hDebug, IDC_DEBUGGER_VAL_SPR, str); - sprintf(str, "Scanline: %d", scanline); + extern int linestartts; FCEUI_DispMessage("linestartts = %d",linestartts); + #define GETLASTPIXEL (PAL?((timestamp*48-linestartts)/15) : ((timestamp*48-linestartts)/16) ) + + int ppupixel = GETLASTPIXEL; + + if (ppupixel>999) + ppupixel = 0; //Currently pixel display is borked until Run 128 lines is clicked, this keeps garbage from displaying + + sprintf(str, "Scanline: %d, Pixel %d", scanline,ppupixel); SetDlgItemText(hDebug, IDC_DEBUGGER_VAL_SLINE, str); tmp = X.S|0x0100; @@ -1236,6 +1244,34 @@ BOOL CALLBACK DebuggerCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara FCEUI_SetEmulationPaused(0); UpdateDebugger(); break; + case IDC_DEBUGGER_RUN_LINE: + if (FCEUI_EmulationPaused()) { + UpdateRegs(hwndDlg); + } + FCEUI_Debugger().runline = true; + { + uint64 ts=timestampbase; + ts+=timestamp; + ts+=341/3; + FCEUI_Debugger().runline_end_time=ts; + } + FCEUI_SetEmulationPaused(0); + UpdateDebugger(); + break; + case IDC_DEBUGGER_RUN_FRAME2: + if (FCEUI_EmulationPaused()) { + UpdateRegs(hwndDlg); + } + FCEUI_Debugger().runline = true; + { + uint64 ts=timestampbase; + ts+=timestamp; + ts+=128*341/3; + FCEUI_Debugger().runline_end_time=ts; + } + FCEUI_SetEmulationPaused(0); + UpdateDebugger(); + break; case IDC_DEBUGGER_STEP_OUT: //mbg merge 7/18/06 changed pausing check and set if (FCEUI_EmulationPaused() > 0) { diff --git a/src/drivers/win/res.rc b/src/drivers/win/res.rc index a3ad9f41..1f88c3a3 100644 --- a/src/drivers/win/res.rc +++ b/src/drivers/win/res.rc @@ -918,63 +918,65 @@ BEGIN PUSHBUTTON "<",MEMW_EXPANDCOLLAPSE,1,259,11,10 END -DEBUGGER DIALOGEX 54, 74, 542, 305 +DEBUGGER DIALOGEX 54, 74, 542, 321 STYLE DS_SETFONT | DS_3DLOOK | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME CAPTION "6502 Debugger" FONT 8, "MS Sans Serif", 0, 0, 0x0 BEGIN - EDITTEXT IDC_DEBUGGER_DISASSEMBLY,15,6,318,289,ES_MULTILINE | ES_READONLY | WS_HSCROLL - SCROLLBAR IDC_DEBUGGER_DISASSEMBLY_VSCR,336,6,8,288,SBS_VERT - GROUPBOX "Status Flags",401,430,138,104,38,WS_TABSTOP - CONTROL "N",IDC_DEBUGGER_FLAG_N,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,435,150,22,12 - CONTROL "V",IDC_DEBUGGER_FLAG_V,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,460,150,22,12 - CONTROL "U",IDC_DEBUGGER_FLAG_U,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,485,150,22,12 - CONTROL "B",IDC_DEBUGGER_FLAG_B,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,510,150,22,12 - CONTROL "D",IDC_DEBUGGER_FLAG_D,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,435,161,22,12 - CONTROL "I",IDC_DEBUGGER_FLAG_I,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,460,161,22,12 - CONTROL "Z",IDC_DEBUGGER_FLAG_Z,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,485,161,22,12 - CONTROL "C",IDC_DEBUGGER_FLAG_C,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,510,161,22,12 - GROUPBOX "BreakPoints",402,430,3,104,132,WS_TABSTOP - LISTBOX IDC_DEBUGGER_BP_LIST,437,16,90,74,LBS_SORT | LBS_DISABLENOSCROLL | WS_VSCROLL - PUSHBUTTON "Add...",IDC_DEBUGGER_BP_ADD,437,97,30,15 - PUSHBUTTON "Delete",IDC_DEBUGGER_BP_DEL,469,97,30,15,WS_DISABLED - PUSHBUTTON "Edit",IDC_DEBUGGER_BP_EDIT,501,97,26,15,WS_DISABLED + EDITTEXT IDC_DEBUGGER_DISASSEMBLY,15,6,318,300,ES_MULTILINE | ES_READONLY | WS_HSCROLL + SCROLLBAR IDC_DEBUGGER_DISASSEMBLY_VSCR,336,6,8,300,SBS_VERT + GROUPBOX "Status Flags",401,430,151,104,38,WS_TABSTOP + CONTROL "N",IDC_DEBUGGER_FLAG_N,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,435,163,22,12 + CONTROL "V",IDC_DEBUGGER_FLAG_V,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,460,163,22,12 + CONTROL "U",IDC_DEBUGGER_FLAG_U,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,485,163,22,12 + CONTROL "B",IDC_DEBUGGER_FLAG_B,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,510,163,22,12 + CONTROL "D",IDC_DEBUGGER_FLAG_D,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,435,174,22,12 + CONTROL "I",IDC_DEBUGGER_FLAG_I,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,460,174,22,12 + CONTROL "Z",IDC_DEBUGGER_FLAG_Z,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,485,174,22,12 + CONTROL "C",IDC_DEBUGGER_FLAG_C,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,510,174,22,12 + GROUPBOX "BreakPoints",402,430,3,104,143,WS_TABSTOP + LISTBOX IDC_DEBUGGER_BP_LIST,437,16,90,91,LBS_SORT | LBS_DISABLENOSCROLL | WS_VSCROLL + PUSHBUTTON "Add...",IDC_DEBUGGER_BP_ADD,437,111,30,15 + PUSHBUTTON "Delete",IDC_DEBUGGER_BP_DEL,469,111,30,15,WS_DISABLED + PUSHBUTTON "Edit",IDC_DEBUGGER_BP_EDIT,501,111,26,15,WS_DISABLED PUSHBUTTON "Run",IDC_DEBUGGER_RUN,349,7,37,14 PUSHBUTTON "Step Into",IDC_DEBUGGER_STEP_IN,389,7,38,14 PUSHBUTTON "Step Out",IDC_DEBUGGER_STEP_OUT,349,23,37,14 PUSHBUTTON "Step Over",IDC_DEBUGGER_STEP_OVER,389,23,38,14 - LTEXT "A:",IDC_STATIC,349,83,10,8 - LTEXT "X:",65534,376,83,10,8 - LTEXT "Y:",65533,404,83,10,8 - LTEXT "PC:",65532,349,65,13,8 - EDITTEXT IDC_DEBUGGER_VAL_A,357,81,15,12,ES_UPPERCASE | ES_WANTRETURN - EDITTEXT IDC_DEBUGGER_VAL_X,385,81,15,12,ES_UPPERCASE | ES_WANTRETURN - EDITTEXT IDC_DEBUGGER_VAL_Y,412,81,15,12,ES_UPPERCASE | ES_WANTRETURN - EDITTEXT IDC_DEBUGGER_VAL_PC,361,63,25,12,ES_UPPERCASE | ES_WANTRETURN - GROUPBOX "Stack",IDC_DEBUGGER_VAL_S,349,99,79,78,WS_TABSTOP - EDITTEXT IDC_DEBUGGER_STACK_CONTENTS,354,110,69,62,ES_MULTILINE | ES_UPPERCASE | ES_READONLY - PUSHBUTTON "Seek PC",IDC_DEBUGGER_SEEK_PC,389,62,38,14 - PUSHBUTTON "Seek To:",IDC_DEBUGGER_SEEK_TO,349,43,37,14 - EDITTEXT IDC_DEBUGGER_VAL_PCSEEK,389,44,38,12,ES_UPPERCASE | ES_WANTRETURN - LTEXT "PPU:",65531,349,183,19,10 - LTEXT "Sprite:",65530,395,183,21,10 - EDITTEXT IDC_DEBUGGER_VAL_PPU,367,182,25,12,ES_UPPERCASE | ES_WANTRETURN - EDITTEXT IDC_DEBUGGER_VAL_SPR,417,182,15,12,ES_UPPERCASE | ES_WANTRETURN - LTEXT "Scanline:",IDC_DEBUGGER_VAL_SLINE,435,183,50,10 - CONTROL "",IDC_DEBUGGER_ADDR_LINE,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,5,295,328,10 + LTEXT "A:",IDC_STATIC,349,96,10,8 + LTEXT "X:",65534,376,96,10,8 + LTEXT "Y:",65533,404,96,10,8 + LTEXT "PC:",65532,349,78,13,8 + EDITTEXT IDC_DEBUGGER_VAL_A,357,94,15,12,ES_UPPERCASE | ES_WANTRETURN + EDITTEXT IDC_DEBUGGER_VAL_X,385,94,15,12,ES_UPPERCASE | ES_WANTRETURN + EDITTEXT IDC_DEBUGGER_VAL_Y,412,94,15,12,ES_UPPERCASE | ES_WANTRETURN + EDITTEXT IDC_DEBUGGER_VAL_PC,361,76,25,12,ES_UPPERCASE | ES_WANTRETURN + GROUPBOX "Stack",IDC_DEBUGGER_VAL_S,349,112,79,78,WS_TABSTOP + EDITTEXT IDC_DEBUGGER_STACK_CONTENTS,354,123,69,62,ES_MULTILINE | ES_UPPERCASE | ES_READONLY + PUSHBUTTON "Seek PC",IDC_DEBUGGER_SEEK_PC,389,75,38,14 + PUSHBUTTON "Seek To:",IDC_DEBUGGER_SEEK_TO,349,56,37,14 + EDITTEXT IDC_DEBUGGER_VAL_PCSEEK,389,57,38,12,ES_UPPERCASE | ES_WANTRETURN + LTEXT "PPU:",65531,349,196,19,10 + LTEXT "Sprite:",65530,395,196,21,10 + EDITTEXT IDC_DEBUGGER_VAL_PPU,367,195,25,12,ES_UPPERCASE | ES_WANTRETURN + EDITTEXT IDC_DEBUGGER_VAL_SPR,417,195,15,12,ES_UPPERCASE | ES_WANTRETURN + LTEXT "Scanline:",IDC_DEBUGGER_VAL_SLINE,435,196,97,10 + CONTROL "",IDC_DEBUGGER_ADDR_LINE,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,5,307,328,10 CONTROL "Break on Bad Opcode",IDC_DEBUGGER_BREAK_ON_BAD_OP, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,437,118,90,10 - CONTROL "Symbolic debugging",IDC_DEBUGGER_ENABLE_SYMBOLIC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,347,200,79,10 - PUSHBUTTON "Reload Symbols",IDC_DEBUGGER_RELOAD_SYMS,427,198,55,14 - GROUPBOX "Bookmarks",45535,348,214,119,80 - LISTBOX LIST_DEBUGGER_BOOKMARKS,351,223,67,66,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP - EDITTEXT IDC_DEBUGGER_BOOKMARK,421,223,40,14,ES_AUTOHSCROLL - PUSHBUTTON "Add",IDC_DEBUGGER_BOOKMARK_ADD,421,239,40,14 - PUSHBUTTON "Delete",IDC_DEBUGGER_BOOKMARK_DEL,421,255,40,14 - PUSHBUTTON "Rom Patcher",IDC_DEBUGGER_ROM_PATCHER,487,198,46,14 - CONTROL "",IDC_DEBUGGER_ICONTRAY,"Static",SS_BLACKFRAME,5,7,10,287 - PUSHBUTTON "",IDC_DEBUGGER_RESTORESIZE,348,296,9,7 - LTEXT "Restore original window size",IDC_STATIC,359,295,90,8 + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,437,132,90,10 + CONTROL "Symbolic debugging",IDC_DEBUGGER_ENABLE_SYMBOLIC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,347,213,79,10 + PUSHBUTTON "Reload Symbols",IDC_DEBUGGER_RELOAD_SYMS,427,211,55,14 + GROUPBOX "Bookmarks",45535,348,227,119,80 + LISTBOX LIST_DEBUGGER_BOOKMARKS,351,236,67,66,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP + EDITTEXT IDC_DEBUGGER_BOOKMARK,421,236,40,14,ES_AUTOHSCROLL + PUSHBUTTON "Add",IDC_DEBUGGER_BOOKMARK_ADD,421,252,40,14 + PUSHBUTTON "Delete",IDC_DEBUGGER_BOOKMARK_DEL,421,268,40,14 + PUSHBUTTON "Rom Patcher",IDC_DEBUGGER_ROM_PATCHER,487,211,46,14 + CONTROL "",IDC_DEBUGGER_ICONTRAY,"Static",SS_BLACKFRAME,5,6,10,301 + PUSHBUTTON "",IDC_DEBUGGER_RESTORESIZE,348,308,9,7 + LTEXT "Restore original window size",IDC_STATIC,359,308,90,8 + PUSHBUTTON "Run Line",IDC_DEBUGGER_RUN_LINE,349,39,37,14 + PUSHBUTTON "128 Lines",IDC_DEBUGGER_RUN_FRAME2,389,39,37,14 END TRACER DIALOGEX 65527, 65513, 398, 319 @@ -1564,6 +1566,7 @@ BEGIN "DEBUGGER", DIALOG BEGIN RIGHTMARGIN, 541 + BOTTOMMARGIN, 318 END "ADDBP", DIALOG diff --git a/src/drivers/win/resource.h b/src/drivers/win/resource.h index 50ee3e98..fa3f98cf 100644 --- a/src/drivers/win/resource.h +++ b/src/drivers/win/resource.h @@ -125,9 +125,12 @@ #define BTN_CLEAR_AH 114 #define IDC_CHECK_LOG_NEW_INSTRUCTIONS 114 #define IDD_DIALOG1 114 +#define IDC_DEBUGGER_RUN_LINE 114 #define LBL_AUTO_HOLD 115 #define IDC_CHECK_LOG_NEW_DATA 115 #define IDD_DIALOG2 115 +#define IDC_DEBUGGER_STEP_OUT3 115 +#define IDC_DEBUGGER_RUN_FRAME2 115 #define LBL_CLEAR_AH 116 #define IDC_CHECK_LOG_UPDATE_WINDOW 116 #define CHECK_SOUND_8BIT 122 diff --git a/src/ppu.cpp b/src/ppu.cpp index cf615c71..feaec18f 100644 --- a/src/ppu.cpp +++ b/src/ppu.cpp @@ -691,7 +691,7 @@ static DECLFW(B4014) static uint8 *Pline,*Plinef; static int firsttile; -static int linestartts; +int linestartts; //no longer static so the debugger can see it static int tofix=0; static void ResetRL(uint8 *target)