diff --git a/src/drivers/win/config.cpp b/src/drivers/win/config.cpp
index 056408ad..3ccb3da9 100644
--- a/src/drivers/win/config.cpp
+++ b/src/drivers/win/config.cpp
@@ -87,6 +87,7 @@ extern int PPUViewPosX,PPUViewPosY;
extern int MainWindow_wndx, MainWindow_wndy;
extern int MemWatch_wndx, MemWatch_wndy;
extern int Monitor_wndx, Monitor_wndy;
+extern bool tracer_lines_tabbing;
extern int Tracer_wndx, Tracer_wndy;
extern int CDLogger_wndx, CDLogger_wndy;
extern int GGConv_wndx, GGConv_wndy;
@@ -279,6 +280,7 @@ static CFGSTRUCT fceuconfig[] = {
AC(MemWatch_wndy),
AC(Monitor_wndx),
AC(Monitor_wndy),
+ AC(tracer_lines_tabbing),
AC(Tracer_wndx),
AC(Tracer_wndy),
AC(CDLogger_wndx),
diff --git a/src/drivers/win/debugger.cpp b/src/drivers/win/debugger.cpp
index 9114c695..2a5b521d 100644
--- a/src/drivers/win/debugger.cpp
+++ b/src/drivers/win/debugger.cpp
@@ -1739,12 +1739,12 @@ DebugSystem* debugSystem;
DebugSystem::DebugSystem()
{
- hFixedFont = CreateFont(13,8, /*Height,Width*/
+ hFixedFont = CreateFont(14, 8, /*Height,Width*/
0,0, /*escapement,orientation*/
FW_REGULAR,FALSE,FALSE,FALSE, /*weight, italic, underline, strikeout*/
ANSI_CHARSET,OUT_DEVICE_PRECIS,CLIP_MASK, /*charset, precision, clipping*/
DEFAULT_QUALITY, DEFAULT_PITCH, /*quality, and pitch*/
- "Courier"); /*font name*/
+ "Courier New"); /*font name*/
HDC hdc = GetDC(GetDesktopWindow());
HGDIOBJ old = SelectObject(hdc,hFixedFont);
diff --git a/src/drivers/win/res.rc b/src/drivers/win/res.rc
index 4ffe0891..8e46c99b 100644
--- a/src/drivers/win/res.rc
+++ b/src/drivers/win/res.rc
@@ -1108,9 +1108,9 @@ BEGIN
PUSHBUTTON "Seek PC",IDC_DEBUGGER_SEEK_PC,391,71,39,14
PUSHBUTTON "Seek To:",IDC_DEBUGGER_SEEK_TO,350,54,38,14
EDITTEXT IDC_DEBUGGER_VAL_PCSEEK,391,55,38,12,ES_UPPERCASE | ES_WANTRETURN
- GROUPBOX "",IDC_DEBUGGER_VAL_S2,349,174,50,53,WS_TABSTOP
EDITTEXT IDC_DEBUGGER_VAL_SLINE,383,203,14,11,ES_UPPERCASE | ES_READONLY | ES_WANTRETURN | NOT WS_BORDER,WS_EX_TRANSPARENT
EDITTEXT IDC_DEBUGGER_VAL_PPUPIXEL,372,216,14,11,ES_UPPERCASE | ES_READONLY | ES_WANTRETURN | NOT WS_BORDER,WS_EX_TRANSPARENT
+ GROUPBOX "",IDC_DEBUGGER_VAL_S2,349,174,50,53,WS_TABSTOP
EDITTEXT IDC_DEBUGGER_VAL_CYCLES_COUNT,442,178,46,11,ES_UPPERCASE | ES_NOHIDESEL | ES_READONLY | ES_WANTRETURN | NOT WS_BORDER,WS_EX_TRANSPARENT
EDITTEXT IDC_DEBUGGER_VAL_CYCLES_COUNT2,488,178,51,11,ES_UPPERCASE | ES_READONLY | ES_WANTRETURN | NOT WS_BORDER,WS_EX_TRANSPARENT
EDITTEXT IDC_DEBUGGER_VAL_INSTRUCTIONS_COUNT,441,204,46,11,ES_UPPERCASE | ES_NOHIDESEL | ES_READONLY | ES_WANTRETURN | NOT WS_BORDER,WS_EX_TRANSPARENT
@@ -1149,32 +1149,34 @@ BEGIN
EDITTEXT IDC_DEBUGGER_INSTRUCTIONS_EXCEED,483,216,50,12,ES_UPPERCASE | ES_NOHIDESEL | ES_WANTRETURN | ES_NUMBER
END
-TRACER DIALOGEX 65527, 65513, 423, 319
+TRACER DIALOGEX 65527, 65513, 383, 308
STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Trace Logger"
FONT 8, "MS Sans Serif", 400, 0, 0x0
BEGIN
- SCROLLBAR IDC_SCRL_TRACER_LOG,413,2,10,172,SBS_VERT
- EDITTEXT IDC_TRACER_LOG,3,1,403,172,ES_MULTILINE | ES_READONLY
- CONTROL "Log last",IDC_RADIO_LOG_LAST,"Button",BS_AUTORADIOBUTTON | BS_LEFT,5,195,38,10
- CONTROL "Log to File",IDC_RADIO_LOG_TO_FILE,"Button",BS_AUTORADIOBUTTON | BS_LEFT,5,215,49,10
- LTEXT "Instructions to this window",106,93,196,93,13
- PUSHBUTTON "Start Logging",IDC_BTN_START_STOP_LOGGING,171,177,67,14,BS_CENTER | BS_VCENTER
- COMBOBOX IDC_TRACER_LOG_SIZE,44,194,48,127,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- GROUPBOX "Extra Log Options",109,3,234,402,35
+ SCROLLBAR IDC_SCRL_TRACER_LOG,369,4,10,169,SBS_VERT
+ EDITTEXT IDC_TRACER_LOG,4,4,364,169,ES_MULTILINE | ES_NOHIDESEL | ES_READONLY | WS_HSCROLL
+ CONTROL "Log last",IDC_RADIO_LOG_LAST,"Button",BS_AUTORADIOBUTTON | BS_LEFT,7,195,38,10
+ CONTROL "Log to File",IDC_RADIO_LOG_TO_FILE,"Button",BS_AUTORADIOBUTTON | BS_LEFT,7,214,49,10
+ LTEXT "instructions to this window",106,98,195,87,10
+ PUSHBUTTON "Start Logging",IDC_BTN_START_STOP_LOGGING,171,176,67,14,BS_CENTER | BS_VCENTER
+ COMBOBOX IDC_TRACER_LOG_SIZE,47,193,48,127,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ GROUPBOX "Extra Log Options",109,3,232,376,29
CONTROL "Log state of A, X, Y and S registers",IDC_CHECK_LOG_REGISTERS,
- "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,9,246,126,10
+ "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,9,243,126,10
CONTROL "Log Processor Status Flags",IDC_CHECK_LOG_PROCESSOR_STATUS,
- "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,139,246,103,10
- PUSHBUTTON "Browse...",IDC_BTN_LOG_BROWSE,55,213,43,14,BS_CENTER | BS_VCENTER
- LTEXT "",IDC_TRACER_STATS,123,216,153,14
+ "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,138,243,102,10
+ PUSHBUTTON "Browse...",IDC_BTN_LOG_BROWSE,56,212,45,14,BS_CENTER | BS_VCENTER
+ LTEXT "",IDC_TRACER_STATS,123,213,159,14
CONTROL "Only log newly mapped code",IDC_CHECK_LOG_NEW_INSTRUCTIONS,
- "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,9,284,107,10
- GROUPBOX "Extra Log Options that work with the Code/Data Logger",113,3,272,402,40
+ "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,9,276,107,10
+ GROUPBOX "Extra Log Options that work with the Code/Data Logger",113,3,264,376,40
CONTROL "Only log code that accesses newly mapped data",IDC_CHECK_LOG_NEW_DATA,
- "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,9,297,169,10
+ "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,9,289,169,10
CONTROL "Automatically update Window While logging",IDC_CHECK_LOG_UPDATE_WINDOW,
- "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,181,196,158,10
+ "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,192,195,156,10
+ CONTROL "Use Stack Pointer for lines tabbing",IDC_CHECK_LINES_TABBING,
+ "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,247,243,126,10
END
ADDBP DIALOGEX 66, 83, 196, 130
@@ -1967,6 +1969,10 @@ BEGIN
BEGIN
END
+ "TRACER", DIALOG
+ BEGIN
+ END
+
"ADDBP", DIALOG
BEGIN
RIGHTMARGIN, 185
diff --git a/src/drivers/win/resource.h b/src/drivers/win/resource.h
index ca08ab9e..c1fc472b 100644
--- a/src/drivers/win/resource.h
+++ b/src/drivers/win/resource.h
@@ -139,6 +139,8 @@
#define CHEAT_CONTEXT_TOGGLECHEAT 117
#define IDC_DEBUGGER_RESET_ON_STEP 117
#define IDC_DEBUGGER_BREAK_ON_CYCLES 117
+#define IDC_CHECK_LOG_PROCESSOR_STATUS2 117
+#define IDC_CHECK_LINES_TABBING 117
#define CHEAT_CONTEXT_POKECHEATVALUE 118
#define IDC_DEBUGGER_RESET_ON_BP0 118
#define CHEAT_CONTEXT_GOTOINHEXEDITOR 119
diff --git a/src/drivers/win/tracer.cpp b/src/drivers/win/tracer.cpp
index df0f1321..db708f6b 100644
--- a/src/drivers/win/tracer.cpp
+++ b/src/drivers/win/tracer.cpp
@@ -60,6 +60,8 @@ char **tracelogbuf;
int tracelogbufsize, tracelogbufpos;
int tracelogbufusedsize;
+bool tracer_lines_tabbing = true;
+
FILE *LOG_FP;
int Tracer_wndx=0, Tracer_wndy=0;
@@ -123,11 +125,15 @@ BOOL CALLBACK TracerCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
SetDlgItemText(hwndDlg, IDC_TRACER_LOG, "Welcome to the Trace Logger.");
logtofile = 0;
- if(logging_options == -1){
+
+ CheckDlgButton(hwndDlg, IDC_CHECK_LINES_TABBING, tracer_lines_tabbing ? BST_CHECKED : BST_UNCHECKED);
+ if(logging_options == -1)
+ {
logging_options = (LOG_REGISTERS | LOG_PROCESSOR_STATUS);
CheckDlgButton(hwndDlg, IDC_CHECK_LOG_REGISTERS, BST_CHECKED);
CheckDlgButton(hwndDlg, IDC_CHECK_LOG_PROCESSOR_STATUS, BST_CHECKED);
- } else{
+ } else
+ {
if(logging_options&LOG_REGISTERS)CheckDlgButton(hwndDlg, IDC_CHECK_LOG_REGISTERS, BST_CHECKED);
if(logging_options&LOG_PROCESSOR_STATUS)CheckDlgButton(hwndDlg, IDC_CHECK_LOG_PROCESSOR_STATUS, BST_CHECKED);
}
@@ -168,7 +174,10 @@ BOOL CALLBACK TracerCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
break;
case IDC_CHECK_LOG_PROCESSOR_STATUS:
logging_options ^= LOG_PROCESSOR_STATUS;
- break;
+ break;
+ case IDC_CHECK_LINES_TABBING:
+ tracer_lines_tabbing ^= 1;
+ break;
case IDC_CHECK_LOG_NEW_INSTRUCTIONS:
logging_options ^= LOG_NEW_INSTRUCTIONS;
if(logging && (!PromptForCDLogger())){
@@ -264,10 +273,10 @@ void BeginLoggingSequence(void){
tracelogbufsize = j = log_optn_intlst[SendDlgItemMessage(hTracer,IDC_TRACER_LOG_SIZE,CB_GETCURSEL,0,0)];
tracelogbuf = (char**)malloc(j*sizeof(char *)); //mbg merge 7/19/06 added cast
for(i = 0;i < j;i++){
- tracelogbuf[i] = (char*)malloc(80); //mbg merge 7/19/06 added cast
+ tracelogbuf[i] = (char*)malloc(LOG_LINE_MAX_LEN); //mbg merge 7/19/06 added cast
tracelogbuf[i][0] = 0;
}
- sprintf(str2,"%d Bytes Allocated...\r\n",j*80);
+ sprintf(str2, "%d Bytes Allocated...\r\n", j * LOG_LINE_MAX_LEN);
strcat(str,str2);
strcat(str,pauseMessage.c_str());
SetDlgItemText(hTracer, IDC_TRACER_LOG, str);
@@ -320,8 +329,8 @@ done:
void FCEUD_TraceInstruction(){
if(!logging) return;
- char address[7], data[11], disassembly[28], axystate[21], procstatus[12];
- char str[96];
+ char address[7], data[11], disassembly[LOG_DISASSEMBLY_MAX_LEN], axystate[21], procstatus[12];
+ char str[LOG_LINE_MAX_LEN];
int addr=X.PC;
int size, j;
uint8 opcode[3], tmp;
@@ -379,8 +388,8 @@ void FCEUD_TraceInstruction(){
}
//stretch the disassembly string out if we have to output other stuff.
if(logging_options & (LOG_REGISTERS|LOG_PROCESSOR_STATUS)){
- for(j = strlen(disassembly);j < 27;j++)disassembly[j] = ' ';
- disassembly[27] = 0;
+ for(j = strlen(disassembly);j < LOG_DISASSEMBLY_MAX_LEN - 1;j++)disassembly[j] = ' ';
+ disassembly[LOG_DISASSEMBLY_MAX_LEN - 1] = 0;
}
if(logging_options & LOG_REGISTERS){
@@ -401,6 +410,16 @@ void FCEUD_TraceInstruction(){
);
}
+ if (tracer_lines_tabbing)
+ {
+ // add spaces at the beginning of the line according to stack pointer
+ int spaces = 0xFF - X.S;
+ if (spaces > LOG_TABS_MAX_LEN)
+ spaces = LOG_TABS_MAX_LEN;
+ for (int i = 0; i < spaces; i++)
+ str[i] = ' ';
+ str[spaces] = 0;
+ }
strcat(str,address);
strcat(str,data);
@@ -421,7 +440,8 @@ void OutputLogLine(char *str){
fflush(LOG_FP);
}else{
strcat(str,"\r\n");
- if(strlen(str) < 80)strcpy(tracelogbuf[tracelogbufpos],str);
+ if(strlen(str) < LOG_LINE_MAX_LEN)
+ strcpy(tracelogbuf[tracelogbufpos],str);
tracelogbufpos++;
if(tracelogbufusedsize < tracelogbufsize)tracelogbufusedsize++;
tracelogbufpos%=tracelogbufsize;
diff --git a/src/drivers/win/tracer.h b/src/drivers/win/tracer.h
index a4e81826..03ca9e65 100644
--- a/src/drivers/win/tracer.h
+++ b/src/drivers/win/tracer.h
@@ -4,6 +4,10 @@
#define LOG_NEW_INSTRUCTIONS 4
#define LOG_NEW_DATA 8
+#define LOG_LINE_MAX_LEN 120
+#define LOG_TABS_MAX_LEN 40
+#define LOG_DISASSEMBLY_MAX_LEN 30
+
extern HWND hTracer;
extern int log_update_window;
extern volatile int logtofile, logging;
diff --git a/vc/vc10_fceux.vcxproj b/vc/vc10_fceux.vcxproj
index 17221bc0..f550f2e3 100644
--- a/vc/vc10_fceux.vcxproj
+++ b/vc/vc10_fceux.vcxproj
@@ -872,10 +872,7 @@
-
-
-
diff --git a/vc/vc10_fceux.vcxproj.filters b/vc/vc10_fceux.vcxproj.filters
index e01fc43a..d3139089 100644
--- a/vc/vc10_fceux.vcxproj.filters
+++ b/vc/vc10_fceux.vcxproj.filters
@@ -1540,94 +1540,261 @@
pix
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+
+
+ drivers\win\res
+