diff --git a/src/drivers/win/debugger.cpp b/src/drivers/win/debugger.cpp index 4e343034..49af7b66 100644 --- a/src/drivers/win/debugger.cpp +++ b/src/drivers/win/debugger.cpp @@ -76,6 +76,7 @@ bool debuggerIDAFont = false; unsigned int IDAFontSize = 16; bool debuggerDisplayROMoffsets = false; bool debuggerShowTraceInfo = true; +bool debuggerUnloggedBytesAsData = false; static wchar_t* debug_wstr; static char* debug_cdl_str; @@ -638,7 +639,12 @@ bool IsData(unsigned int addr) { unsigned int romAddr = GetNesFileAddress(addr) - 16; // minus iNES header if (romAddr >= 0 && romAddr < cdloggerdataSize) - return (cdloggerdata[romAddr] & 3) == 2; // Data only + { + uint8 cdlData = cdloggerdata[romAddr] & 3; + return cdlData == 0 + ? debuggerUnloggedBytesAsData + : cdlData == 2; // Only data, not code + } } return false; } @@ -1726,6 +1732,7 @@ inline void UpdateOptionsPopup(HMENU optionsPopup) CheckMenuItem(optionsPopup, ID_DEBUGGER_IDA_FONT, CheckedFlag(debuggerIDAFont)); CheckMenuItem(optionsPopup, ID_DEBUGGER_SHOW_ROM_OFFSETS, CheckedFlag(debuggerDisplayROMoffsets)); CheckMenuItem(optionsPopup, ID_DEBUGGER_SHOW_TRACE_INFO, CheckedFlag(debuggerShowTraceInfo)); + CheckMenuItem(optionsPopup, ID_DEBUGGER_UNLOGGED_AS_DATA, CheckedFlag(debuggerUnloggedBytesAsData)); 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)); @@ -2000,6 +2007,10 @@ void DebuggerBnClicked(HWND hwndDlg, uint16 btnId, HWND hwndBtn) debuggerShowTraceInfo ^= 1; UpdateDebugger(false); break; + case ID_DEBUGGER_UNLOGGED_AS_DATA: + debuggerUnloggedBytesAsData ^= 1; + UpdateDebugger(false); + break; case ID_DEBUGGER_SHOW_ROM_OFFSETS: debuggerDisplayROMoffsets ^= 1; UpdateDebugger(false); diff --git a/src/drivers/win/res.rc b/src/drivers/win/res.rc index db35c600..4432e7a7 100644 --- a/src/drivers/win/res.rc +++ b/src/drivers/win/res.rc @@ -3045,6 +3045,7 @@ BEGIN MENUITEM "IDA Font", ID_DEBUGGER_IDA_FONT, CHECKED MENUITEM "ROM Offsets", ID_DEBUGGER_SHOW_ROM_OFFSETS, CHECKED MENUITEM "Show Trace Info", ID_DEBUGGER_SHOW_TRACE_INFO, CHECKED + MENUITEM "Show Unlogged Bytes as Data" ID_DEBUGGER_UNLOGGED_AS_DATA, CHECKED MENUITEM SEPARATOR MENUITEM "Break on Unofficial Opcodes", ID_DEBUGGER_BREAK_BAD_OPCODES, CHECKED MENUITEM "Break on Unlogged Code", ID_DEBUGGER_BREAK_UNLOGGED_CODE, CHECKED diff --git a/src/drivers/win/resource.h b/src/drivers/win/resource.h index c93d4fe2..d283867c 100644 --- a/src/drivers/win/resource.h +++ b/src/drivers/win/resource.h @@ -1219,6 +1219,7 @@ #define ID_DEBUGGER_BREAK_UNLOGGED_CODE 45555 #define ID_DEBUGGER_BREAK_UNLOGGED_DATA 45556 #define IDR_DEBUGGER_ACCELERATOR 45557 +#define ID_DEBUGGER_UNLOGGED_AS_DATA 45558 #define MW_VALUELABEL2 65423 #define MW_VALUELABEL1 65426 #define IDC_STATIC_SLASHTEXT 65442