* Tracer: do not clear window log when stopping the logging

* Tracer: a change in window layout
* PPU Viewer: minor change in window layout
This commit is contained in:
ansstuff 2013-09-22 20:31:22 +00:00
parent e2ffb40fd5
commit 87ae74a398
3 changed files with 76 additions and 53 deletions

View File

@ -47,14 +47,14 @@ int mouse_x, mouse_y;
#define PATTERNHEIGHT 128
#define PATTERNBITWIDTH PATTERNWIDTH*3
#define PATTERNDESTX_BASE 7
#define PATTERNDESTY_BASE 16
#define PATTERNDESTY_BASE 18
#define ZOOM 2
#define PALETTEWIDTH 32*4*4
#define PALETTEHEIGHT 32*2
#define PALETTEBITWIDTH PALETTEWIDTH*3
#define PALETTEDESTX_BASE 7
#define PALETTEDESTY_BASE 16
#define PALETTEDESTY_BASE 18
#define TBM_SETPOS (WM_USER+5)
#define TBM_SETRANGE (WM_USER+6)

View File

@ -1177,14 +1177,14 @@ FONT 8, "MS Sans Serif", 400, 0, 0x0
BEGIN
EDITTEXT IDC_TRACER_LOG,3,3,300,44,ES_MULTILINE | ES_NOHIDESEL | ES_READONLY | WS_HSCROLL
SCROLLBAR IDC_SCRL_TRACER_LOG,303,3,11,44,SBS_VERT
CONTROL "Log last",IDC_RADIO_LOG_LAST,"Button",BS_AUTORADIOBUTTON | BS_LEFT,9,54,38,10
COMBOBOX IDC_TRACER_LOG_SIZE,50,53,47,13,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
LTEXT "lines to this window",IDC_TEXT_LINES_TO_THIS_WINDOW,100,55,62,10
DEFPUSHBUTTON "Start Logging",IDC_BTN_START_STOP_LOGGING,243,51,71,15,BS_CENTER | BS_VCENTER
CONTROL "Log to File",IDC_RADIO_LOG_TO_FILE,"Button",BS_AUTORADIOBUTTON | BS_LEFT,9,71,46,10
PUSHBUTTON "Browse...",IDC_BTN_LOG_BROWSE,57,69,40,14,BS_CENTER | BS_VCENTER
CONTROL "Log last",IDC_RADIO_LOG_LAST,"Button",BS_AUTORADIOBUTTON | BS_LEFT,9,53,38,10
COMBOBOX IDC_TRACER_LOG_SIZE,49,52,46,13,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
LTEXT "lines",IDC_TEXT_LINES_TO_THIS_WINDOW,97,54,17,10
DEFPUSHBUTTON "Start Logging",IDC_BTN_START_STOP_LOGGING,135,51,49,15,BS_CENTER | BS_VCENTER
CONTROL "Log to File",IDC_RADIO_LOG_TO_FILE,"Button",BS_AUTORADIOBUTTON | BS_LEFT,9,70,46,10
PUSHBUTTON "Browse...",IDC_BTN_LOG_BROWSE,56,68,39,14,BS_CENTER | BS_VCENTER
CONTROL "Automatically update this window while logging",IDC_CHECK_LOG_UPDATE_WINDOW,
"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,113,71,156,10
"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,113,70,156,10
GROUPBOX "Log Options",IDC_GROUP_LOG_OPTIONS,3,85,311,65
CONTROL "Log state of registers",IDC_CHECK_LOG_REGISTERS,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,8,96,99,10
CONTROL "Log Processor status flags",IDC_CHECK_LOG_PROCESSOR_STATUS,
@ -1628,18 +1628,18 @@ STYLE DS_SETFONT | DS_MODALFRAME | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_C
CAPTION "PPU Viewer"
FONT 8, "MS Sans Serif", 0, 0, 0x0
BEGIN
GROUPBOX "Pattern Tables",GRP_PPUVIEW_TABLES,2,-1,351,204,WS_TABSTOP
LTEXT "Tile:",LBL_PPUVIEW_TILE1,6,169,50,9
LTEXT "Tile:",LBL_PPUVIEW_TILE2,177,169,50,9
CONTROL "",CTL_PPUVIEW_TRACKBAR,"msctls_trackbar32",WS_TABSTOP,227,178,106,11
LTEXT "Refresh: More",-1,177,178,50,9
LTEXT "Less",-1,334,178,18,10
GROUPBOX "Palettes",LBL_PPUVIEW_PALETTES,2,204,351,53,WS_TABSTOP
LTEXT "Display on scanline:",-1,6,178,65,9
EDITTEXT IDC_PPUVIEW_SCANLINE,72,176,27,12
GROUPBOX "Pattern Tables",GRP_PPUVIEW_TABLES,2,-1,351,205,WS_TABSTOP
LTEXT "Tile:",LBL_PPUVIEW_TILE1,6,170,50,9
LTEXT "Tile:",LBL_PPUVIEW_TILE2,177,170,50,9
CONTROL "",CTL_PPUVIEW_TRACKBAR,"msctls_trackbar32",WS_TABSTOP,227,179,106,11
LTEXT "Refresh: More",-1,177,179,50,9
LTEXT "Less",-1,334,179,18,10
GROUPBOX "Palettes",LBL_PPUVIEW_PALETTES,2,204,351,54,WS_TABSTOP
LTEXT "Display on scanline:",-1,6,179,65,9
EDITTEXT IDC_PPUVIEW_SCANLINE,72,177,27,12
CONTROL "Mask unused graphics (needs Code/Data Logger)",IDC_MASK_UNUSED_GRAPHICS,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,189,169,10
CONTROL "Invert the mask",IDC_INVERT_THE_MASK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,177,189,61,10
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,190,169,10
CONTROL "Invert the mask",IDC_INVERT_THE_MASK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,177,190,61,10
END
ARCHIVECHOOSERDIALOG DIALOGEX 0, 0, 265, 159

View File

@ -100,7 +100,6 @@ KnownWindowItemPosData tracerKnownWindowItems[] = {
IDC_RADIO_LOG_LAST, WINDOW_ITEM_RESIZE_TYPE_LEFT_ALIGNED, WINDOW_ITEM_RESIZE_TYPE_RIGHT_ALIGNED, WINDOW_ITEM_RESIZE_TYPE_LEFT_ALIGNED, WINDOW_ITEM_RESIZE_TYPE_RIGHT_ALIGNED,
IDC_TRACER_LOG_SIZE, WINDOW_ITEM_RESIZE_TYPE_LEFT_ALIGNED, WINDOW_ITEM_RESIZE_TYPE_RIGHT_ALIGNED, WINDOW_ITEM_RESIZE_TYPE_LEFT_ALIGNED, WINDOW_ITEM_RESIZE_TYPE_RIGHT_ALIGNED,
IDC_TEXT_LINES_TO_THIS_WINDOW, WINDOW_ITEM_RESIZE_TYPE_LEFT_ALIGNED, WINDOW_ITEM_RESIZE_TYPE_RIGHT_ALIGNED, WINDOW_ITEM_RESIZE_TYPE_LEFT_ALIGNED, WINDOW_ITEM_RESIZE_TYPE_RIGHT_ALIGNED,
IDC_BTN_START_STOP_LOGGING, WINDOW_ITEM_RESIZE_TYPE_RIGHT_ALIGNED, WINDOW_ITEM_RESIZE_TYPE_RIGHT_ALIGNED, WINDOW_ITEM_RESIZE_TYPE_RIGHT_ALIGNED, WINDOW_ITEM_RESIZE_TYPE_RIGHT_ALIGNED,
IDC_RADIO_LOG_TO_FILE, WINDOW_ITEM_RESIZE_TYPE_LEFT_ALIGNED, WINDOW_ITEM_RESIZE_TYPE_RIGHT_ALIGNED, WINDOW_ITEM_RESIZE_TYPE_LEFT_ALIGNED, WINDOW_ITEM_RESIZE_TYPE_RIGHT_ALIGNED,
IDC_BTN_LOG_BROWSE, WINDOW_ITEM_RESIZE_TYPE_LEFT_ALIGNED, WINDOW_ITEM_RESIZE_TYPE_RIGHT_ALIGNED, WINDOW_ITEM_RESIZE_TYPE_LEFT_ALIGNED, WINDOW_ITEM_RESIZE_TYPE_RIGHT_ALIGNED,
};
@ -113,10 +112,10 @@ int oldcodecount, olddatacount;
SCROLLINFO tracesi;
char **tracelogbuf;
char **tracelogbuf = 0;
std::vector<std::vector<uint16>> tracelogbufAddressesLog;
int tracelogbufsize, tracelogbufpos;
int tracelogbufusedsize;
int tracelogbufsize = 0, tracelogbufpos = 0;
int tracelogbufusedsize = 0;
char str_axystate[LOG_AXYSTATE_MAX_LEN] = {0}, str_procstatus[LOG_PROCSTATUS_MAX_LEN] = {0};
char str_tabs[LOG_TABS_MASK+1] = {0}, str_address[LOG_ADDRESS_MAX_LEN] = {0}, str_data[LOG_DATA_MAX_LEN] = {0}, str_disassembly[LOG_DISASSEMBLY_MAX_LEN] = {0};
@ -139,8 +138,10 @@ WNDPROC IDC_TRACER_LOG_oldWndProc = 0;
void ShowLogDirDialog(void);
void BeginLoggingSequence(void);
void EndLoggingSequence(void);
void ClearTraceLogBuf();
void EndLoggingSequence();
void UpdateLogWindow(void);
void ScrollLogWindowToLastLine();
void UpdateLogText(void);
void EnableTracerMenuItems(void);
int PromptForCDLogger(void);
@ -474,7 +475,7 @@ BOOL CALLBACK TracerCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
if (tracesi.nPos < tracesi.nMin)
tracesi.nPos = tracesi.nMin;
SetScrollInfo(GetDlgItem(hTracer, IDC_SCRL_TRACER_LOG), SB_CTL, &tracesi, TRUE);
if (logging && !logtofile)
if (!logtofile)
UpdateLogText();
}
}
@ -506,8 +507,9 @@ BOOL CALLBACK TracerCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
}
case WM_CLOSE:
case WM_QUIT:
if(logging)
if (logging)
EndLoggingSequence();
ClearTraceLogBuf();
hTracer = 0;
EndDialog(hwndDlg,0);
break;
@ -519,8 +521,10 @@ BOOL CALLBACK TracerCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
switch(LOWORD(wParam))
{
case IDC_BTN_START_STOP_LOGGING:
if(logging)EndLoggingSequence();
else BeginLoggingSequence();
if (logging)
EndLoggingSequence();
else
BeginLoggingSequence();
EnableTracerMenuItems();
break;
case IDC_RADIO_LOG_LAST:
@ -613,7 +617,7 @@ BOOL CALLBACK TracerCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if (lParam)
{
if ((!logging) || logtofile)
if (!tracelogbuf)
break;
if (!FCEUI_EmulationPaused() && !log_update_window)
@ -682,6 +686,8 @@ void BeginLoggingSequence(void)
fprintf(LOG_FP,FCEU_NAME_AND_VERSION" - Trace Log File\n"); //mbg merge 7/19/06 changed string
} else
{
ClearTraceLogBuf();
// create new log
log_lines_option = SendDlgItemMessage(hTracer, IDC_TRACER_LOG_SIZE, CB_GETCURSEL, 0, 0);
if (log_lines_option == CB_ERR)
log_lines_option = 0;
@ -726,7 +732,8 @@ void FCEUD_TraceInstruction(uint8 *opcode, int size)
// if instruction executed from the RAM, skip this, log all instead
// TODO: loops folding mame-lyke style
if(GetPRGAddress(addr) != -1) {
if (GetPRGAddress(addr) != -1)
{
if(((logging_options & LOG_NEW_INSTRUCTIONS) && (oldcodecount != codecount)) ||
((logging_options & LOG_NEW_DATA) && (olddatacount != datacount)))
{
@ -974,7 +981,22 @@ void OutputLogLine(const char *str, std::vector<uint16>* addressesLog, bool add_
}
}
void EndLoggingSequence(void)
void ClearTraceLogBuf(void)
{
if (tracelogbuf)
{
int j = tracelogbufsize;
for(int i = 0; i < j;i++)
{
free(tracelogbuf[i]);
}
free(tracelogbuf);
tracelogbuf = 0;
}
tracelogbufAddressesLog.resize(0);
}
void EndLoggingSequence()
{
int j, i;
if (logtofile)
@ -982,19 +1004,15 @@ void EndLoggingSequence(void)
fclose(LOG_FP);
} else
{
j = tracelogbufsize;
for(i = 0;i < j;i++)
{
free(tracelogbuf[i]);
}
free(tracelogbuf);
tracelogbufAddressesLog.resize(0);
SetDlgItemText(hTracer, IDC_TRACER_LOG, "Welcome to the Trace Logger.");
strcpy(str_result, "Logging finished.");
OutputLogLine(str_result);
ScrollLogWindowToLastLine();
UpdateLogText();
// do not clear the log window
// ClearTraceLogBuf();
}
logging = 0;
SetDlgItemText(hTracer, IDC_BTN_START_STOP_LOGGING,"Start Logging");
}
void UpdateLogWindow(void)
@ -1013,14 +1031,7 @@ void UpdateLogWindow(void)
}
log_old_emu_paused = emu_paused;
tracesi.cbSize = sizeof(SCROLLINFO);
tracesi.fMask = SIF_ALL;
tracesi.nMin = 0;
tracesi.nMax = tracelogbufusedsize;
tracesi.nPos = tracesi.nMax - tracesi.nPage;
if (tracesi.nPos < tracesi.nMin)
tracesi.nPos = tracesi.nMin;
SetScrollInfo(GetDlgItem(hTracer,IDC_SCRL_TRACER_LOG),SB_CTL,&tracesi,TRUE);
ScrollLogWindowToLastLine();
if (logging_options & LOG_SYMBOLIC)
loadNameFiles();
@ -1030,12 +1041,24 @@ void UpdateLogWindow(void)
return;
}
void ScrollLogWindowToLastLine()
{
tracesi.cbSize = sizeof(SCROLLINFO);
tracesi.fMask = SIF_ALL;
tracesi.nMin = 0;
tracesi.nMax = tracelogbufusedsize;
tracesi.nPos = tracesi.nMax - tracesi.nPage;
if (tracesi.nPos < tracesi.nMin)
tracesi.nPos = tracesi.nMin;
SetScrollInfo(GetDlgItem(hTracer,IDC_SCRL_TRACER_LOG),SB_CTL,&tracesi,TRUE);
}
void UpdateLogText(void)
{
int j;
trace_str[0] = 0;
if (!tracelogbufpos)
if (!tracelogbuf || !tracelogbufpos || !tracelogbufsize)
return;
int last_line = tracesi.nPos + tracesi.nPage;
@ -1061,7 +1084,7 @@ void UpdateLogText(void)
void EnableTracerMenuItems(void)
{
if(logging)
if (logging)
{
EnableWindow(GetDlgItem(hTracer,IDC_RADIO_LOG_LAST),FALSE);
EnableWindow(GetDlgItem(hTracer,IDC_RADIO_LOG_TO_FILE),FALSE);
@ -1076,7 +1099,7 @@ void EnableTracerMenuItems(void)
EnableWindow(GetDlgItem(hTracer,IDC_BTN_LOG_BROWSE),TRUE);
EnableWindow(GetDlgItem(hTracer,IDC_CHECK_LOG_NEW_INSTRUCTIONS),TRUE);
if(logtofile)
if (logtofile)
{
EnableWindow(GetDlgItem(hTracer,IDC_TRACER_LOG_SIZE),FALSE);
EnableWindow(GetDlgItem(hTracer,IDC_BTN_LOG_BROWSE),TRUE);