tracer: log bank number

mandatory when debugging banking glitches
This commit is contained in:
feos-tas 2016-09-17 13:28:23 +00:00
parent a01894c913
commit 7b1609e75e
5 changed files with 22 additions and 4 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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);

View File

@ -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