diff --git a/src/drivers/win/debugger.cpp b/src/drivers/win/debugger.cpp index 4e4ea56c..70fddca2 100644 --- a/src/drivers/win/debugger.cpp +++ b/src/drivers/win/debugger.cpp @@ -77,6 +77,7 @@ unsigned int IDAFontSize = 16; bool debuggerDisplayROMoffsets = false; bool debuggerShowTraceInfo = true; bool debuggerUnloggedBytesAsData = false; +bool debuggerFollowPc = true; static wchar_t* debug_wstr; static char* debug_cdl_str; @@ -1756,6 +1757,7 @@ inline void UpdateOptionsPopup(HMENU optionsPopup) CheckMenuItem(optionsPopup, ID_DEBUGGER_BREAK_BAD_OPCODES, CheckedFlag(FCEUI_Debugger().badopbreak)); CheckMenuItem(optionsPopup, ID_DEBUGGER_BREAK_UNLOGGED_CODE, CheckedFlag(break_on_unlogged_code)); CheckMenuItem(optionsPopup, ID_DEBUGGER_BREAK_UNLOGGED_DATA, CheckedFlag(break_on_unlogged_data)); + CheckMenuItem(optionsPopup, ID_DEBUGGER_FOLLOW_PC, CheckedFlag(debuggerFollowPc)); // Gray out potentially irrelavant options EnableMenuItem(optionsPopup, ID_DEBUGGER_UNLOGGED_AS_DATA, EnabledFlag(cdloggerdataSize)); @@ -2049,6 +2051,9 @@ void DebuggerBnClicked(HWND hwndDlg, uint16 btnId, HWND hwndBtn) case ID_DEBUGGER_BREAK_UNLOGGED_DATA: break_on_unlogged_data ^= 1; break; + case ID_DEBUGGER_FOLLOW_PC: + debuggerFollowPc ^= 1; + break; case ID_DEBUGGER_RESTORE_SIZE: RestoreSize(hwndDlg); break; @@ -2565,6 +2570,7 @@ void DebuggerAccelerator(HWND hwndDlg, uint16 accId) case IDC_DEBUGGER_SEEK_PC: case ID_DEBUGGER_UNLOGGED_AS_DATA: case ID_DEBUGGER_SHOW_ROM_OFFSETS: + case ID_DEBUGGER_FOLLOW_PC: DebuggerBnClicked(hwndDlg, accId, NULL); break; case IDC_DEBUGGER_VAL_PCSEEK: @@ -2717,7 +2723,7 @@ void DoDebug(uint8 halt) updateGameDependentMenusDebugger(); if (GameInfo) - UpdateDebugger(true); + UpdateDebugger(debuggerFollowPc); } } diff --git a/src/drivers/win/res.rc b/src/drivers/win/res.rc index e36a9533..6a18bff4 100644 --- a/src/drivers/win/res.rc +++ b/src/drivers/win/res.rc @@ -3046,6 +3046,7 @@ BEGIN MENUITEM SEPARATOR MENUITEM "&ROM Offsets\tAlt+A", ID_DEBUGGER_SHOW_ROM_OFFSETS, CHECKED MENUITEM "Show Trace Info", ID_DEBUGGER_SHOW_TRACE_INFO, CHECKED + MENUITEM "Follow Program Counter\tAlt+F", ID_DEBUGGER_FOLLOW_PC, CHECKED MENUITEM SEPARATOR POPUP "Code/Data Logger" BEGIN @@ -3144,6 +3145,7 @@ BEGIN "P", IDC_DEBUGGER_SEEK_PC, VIRTKEY, CONTROL "A", ID_DEBUGGER_SHOW_ROM_OFFSETS, VIRTKEY, ALT "D", ID_DEBUGGER_UNLOGGED_AS_DATA, VIRTKEY, CONTROL + "F", ID_DEBUGGER_FOLLOW_PC, VIRTKEY, ALT END diff --git a/src/drivers/win/resource.h b/src/drivers/win/resource.h index d283867c..8ce6e43e 100644 --- a/src/drivers/win/resource.h +++ b/src/drivers/win/resource.h @@ -1220,6 +1220,7 @@ #define ID_DEBUGGER_BREAK_UNLOGGED_DATA 45556 #define IDR_DEBUGGER_ACCELERATOR 45557 #define ID_DEBUGGER_UNLOGGED_AS_DATA 45558 +#define ID_DEBUGGER_FOLLOW_PC 45559 #define MW_VALUELABEL2 65423 #define MW_VALUELABEL1 65426 #define IDC_STATIC_SLASHTEXT 65442