From 7b1609e75e9319e214c5a6c865a2d765c02863c5 Mon Sep 17 00:00:00 2001 From: feos-tas Date: Sat, 17 Sep 2016 13:28:23 +0000 Subject: [PATCH] tracer: log bank number mandatory when debugging banking glitches --- trunk/src/drivers/win/debugger.cpp | 2 +- trunk/src/drivers/win/res.rc | 3 ++- trunk/src/drivers/win/resource.h | 1 + trunk/src/drivers/win/tracer.cpp | 17 ++++++++++++++++- trunk/src/drivers/win/tracer.h | 3 ++- 5 files changed, 22 insertions(+), 4 deletions(-) diff --git a/trunk/src/drivers/win/debugger.cpp b/trunk/src/drivers/win/debugger.cpp index a9e75cf4..dd9f5504 100644 --- a/trunk/src/drivers/win/debugger.cpp +++ b/trunk/src/drivers/win/debugger.cpp @@ -482,7 +482,7 @@ void Disassemble(HWND hWnd, int id, int scrollid, unsigned int addr) } } else { - sprintf(chr, " :%04X:", addr); + sprintf(chr, " %04X:", addr); } // Add address diff --git a/trunk/src/drivers/win/res.rc b/trunk/src/drivers/win/res.rc index 22f49101..ca58239a 100644 --- a/trunk/src/drivers/win/res.rc +++ b/trunk/src/drivers/win/res.rc @@ -817,7 +817,7 @@ BEGIN CONTROL "Log Frames count",IDC_CHECK_LOG_FRAMES_COUNT,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,8,109,98,10 CONTROL "Log Cycles count",IDC_CHECK_LOG_CYCLES_COUNT,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,113,109,94,10 CONTROL "Log Instructions count",IDC_CHECK_LOG_INSTRUCTIONS_COUNT, - "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,211,109,98,10 + "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,211,109,100,10 CONTROL "Log emulator messages",IDC_CHECK_LOG_MESSAGES,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,8,122,97,10 CONTROL "Log breakpoint hits",IDC_CHECK_LOG_BREAKPOINTS,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,113,122,91,10 CONTROL "Symbolic trace",IDC_CHECK_SYMBOLIC_TRACING,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,8,135,96,10 @@ -828,6 +828,7 @@ BEGIN "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,8,162,102,10 CONTROL "Only log code that accesses newly mapped data",IDC_CHECK_LOG_NEW_DATA, "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,112,162,171,10 + CONTROL "Log Bank number",IDC_CHECK_LOG_BANK_NUMBER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,211,121,100,10 END ADDBP DIALOGEX 66, 83, 196, 130 diff --git a/trunk/src/drivers/win/resource.h b/trunk/src/drivers/win/resource.h index 87fc8523..1ea42240 100644 --- a/trunk/src/drivers/win/resource.h +++ b/trunk/src/drivers/win/resource.h @@ -643,6 +643,7 @@ #define CHECK_SOUND_SWAPDUTY 1203 #define CB_OVERCLOCKING 1203 #define CHECK_DEEMPH_SWAP 1203 +#define IDC_CHECK_LOG_BANK_NUMBER 1203 #define IDC_VOLUMEGROUP 1204 #define IDC_OMITBLANK 1204 #define IDC_CHECK3 1204 diff --git a/trunk/src/drivers/win/tracer.cpp b/trunk/src/drivers/win/tracer.cpp index 4f806e73..d3a65fe1 100644 --- a/trunk/src/drivers/win/tracer.cpp +++ b/trunk/src/drivers/win/tracer.cpp @@ -433,6 +433,7 @@ BOOL CALLBACK TracerCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) CheckDlgButton(hwndDlg, IDC_CHECK_LOG_BREAKPOINTS, (logging_options & LOG_BREAKPOINTS) ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwndDlg, IDC_CHECK_SYMBOLIC_TRACING, (logging_options & LOG_SYMBOLIC) ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwndDlg, IDC_CHECK_CODE_TABBING, (logging_options & LOG_CODE_TABBING) ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_CHECK_LOG_BANK_NUMBER, (logging_options & LOG_BANK_NUMBER) ? BST_CHECKED : BST_UNCHECKED); EnableWindow(GetDlgItem(hwndDlg, IDC_TRACER_LOG_SIZE), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_LOG_BROWSE), FALSE); @@ -576,6 +577,10 @@ BOOL CALLBACK TracerCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) logging_options ^= LOG_CODE_TABBING; CheckDlgButton(hwndDlg, IDC_CHECK_CODE_TABBING, (logging_options & LOG_CODE_TABBING) ? BST_CHECKED : BST_UNCHECKED); break; + case IDC_CHECK_LOG_BANK_NUMBER: + logging_options ^= LOG_BANK_NUMBER; + CheckDlgButton(hwndDlg, IDC_CHECK_LOG_BANK_NUMBER, (logging_options & LOG_BANK_NUMBER) ? BST_CHECKED : BST_UNCHECKED); + break; case IDC_CHECK_LOG_NEW_INSTRUCTIONS: logging_options ^= LOG_NEW_INSTRUCTIONS; if(logging && (!PromptForCDLogger())) @@ -932,7 +937,17 @@ void FCEUD_TraceInstruction(uint8 *opcode, int size) strcat(str_result, " "); } - sprintf(str_address, "$%04X:", addr); + if (logging_options & LOG_BANK_NUMBER) + { + if (addr >= 0x8000) + sprintf(str_address, "$%02X:%04X: ", getBank(addr), addr); + else + sprintf(str_address, " $%04X: ", addr); + } else + { + sprintf(str_address, "$%04X: ", addr); + } + strcat(str_result, str_address); strcat(str_result, str_data); strcat(str_result, str_disassembly); diff --git a/trunk/src/drivers/win/tracer.h b/trunk/src/drivers/win/tracer.h index f00f8e3a..b2748aa9 100644 --- a/trunk/src/drivers/win/tracer.h +++ b/trunk/src/drivers/win/tracer.h @@ -12,6 +12,7 @@ #define LOG_CODE_TABBING 512 #define LOG_CYCLES_COUNT 1024 #define LOG_INSTRUCTIONS_COUNT 2048 +#define LOG_BANK_NUMBER 4096 #define LOG_LINE_MAX_LEN 160 // Frames count - 1+6+1 symbols @@ -29,7 +30,7 @@ #define LOG_AXYSTATE_MAX_LEN 21 #define LOG_PROCSTATUS_MAX_LEN 12 #define LOG_TABS_MASK 31 -#define LOG_ADDRESS_MAX_LEN 7 +#define LOG_ADDRESS_MAX_LEN 13 #define LOG_DATA_MAX_LEN 11 #define LOG_DISASSEMBLY_MAX_LEN 46