Auto Format of Qt code data and trace logger. Fix spaces/tabs code readability.

This commit is contained in:
mjbudd77 2021-02-21 18:32:30 -05:00
parent 9175eabf76
commit 79dcb51073
4 changed files with 1275 additions and 1223 deletions

View File

@ -41,15 +41,15 @@
#include "Qt/config.h"
#include "Qt/fceuWrapper.h"
static int autoSaveCDL = true;
static int autoLoadCDL = true;
static int autoResumeCDL = false;
static int autoSaveCDL = true;
static int autoLoadCDL = true;
static int autoResumeCDL = false;
static char loadedcdfile[512] = {0};
static int getDefaultCDLFile( char *filepath );
static int getDefaultCDLFile(char *filepath);
//----------------------------------------------------
CodeDataLoggerDialog_t::CodeDataLoggerDialog_t(QWidget *parent)
: QDialog( parent, Qt::Window )
: QDialog(parent, Qt::Window)
{
QVBoxLayout *mainLayout, *vbox1, *vbox;
QHBoxLayout *hbox;
@ -57,170 +57,170 @@ CodeDataLoggerDialog_t::CodeDataLoggerDialog_t(QWidget *parent)
QGroupBox *frame, *subframe;
QPushButton *btn;
updateTimer = new QTimer( this );
updateTimer = new QTimer(this);
connect( updateTimer, &QTimer::timeout, this, &CodeDataLoggerDialog_t::updatePeriodic );
connect(updateTimer, &QTimer::timeout, this, &CodeDataLoggerDialog_t::updatePeriodic);
setWindowTitle( tr("Code Data Logger") );
setWindowTitle(tr("Code Data Logger"));
mainLayout = new QVBoxLayout();
vbox1 = new QVBoxLayout();
hbox = new QHBoxLayout();
grid = new QGridLayout();
statLabel = new QLabel( tr(" Logger is Paused: Press Start to Run ") );
cdlFileLabel = new QLabel( tr("CDL File:") );
mainLayout = new QVBoxLayout();
vbox1 = new QVBoxLayout();
hbox = new QHBoxLayout();
grid = new QGridLayout();
statLabel = new QLabel(tr(" Logger is Paused: Press Start to Run "));
cdlFileLabel = new QLabel(tr("CDL File:"));
vbox1->addLayout( grid );
vbox1->addLayout( hbox );
vbox1->addWidget( cdlFileLabel );
vbox1->addLayout(grid);
vbox1->addLayout(hbox);
vbox1->addWidget(cdlFileLabel);
hbox->addWidget( statLabel, 0, Qt::AlignHCenter );
hbox->addWidget(statLabel, 0, Qt::AlignHCenter);
frame = new QGroupBox(tr("Code/Data Log Status"));
frame->setLayout( vbox1 );
frame->setLayout(vbox1);
prgLoggedCodeLabel = new QLabel( tr("0x000000 0.00%") );
prgLoggedDataLabel = new QLabel( tr("0x000000 0.00%") );
prgUnloggedLabel = new QLabel( tr("0x000000 0.00%") );
chrLoggedCodeLabel = new QLabel( tr("0x000000 0.00%") );
chrLoggedDataLabel = new QLabel( tr("0x000000 0.00%") );
chrUnloggedLabel = new QLabel( tr("0x000000 0.00%") );
autoSaveCdlCbox = new QCheckBox( tr("Auto-save .CDL when closing ROMs") );
autoLoadCdlCbox = new QCheckBox( tr("Auto-load .CDL when opening this window") );
autoResumeLogCbox = new QCheckBox( tr("Auto-resume logging when loading ROMs") );
prgLoggedCodeLabel = new QLabel(tr("0x000000 0.00%"));
prgLoggedDataLabel = new QLabel(tr("0x000000 0.00%"));
prgUnloggedLabel = new QLabel(tr("0x000000 0.00%"));
chrLoggedCodeLabel = new QLabel(tr("0x000000 0.00%"));
chrLoggedDataLabel = new QLabel(tr("0x000000 0.00%"));
chrUnloggedLabel = new QLabel(tr("0x000000 0.00%"));
autoSaveCdlCbox = new QCheckBox(tr("Auto-save .CDL when closing ROMs"));
autoLoadCdlCbox = new QCheckBox(tr("Auto-load .CDL when opening this window"));
autoResumeLogCbox = new QCheckBox(tr("Auto-resume logging when loading ROMs"));
g_config->getOption("SDL.AutoSaveCDL", &autoSaveCDL);
g_config->getOption("SDL.AutoLoadCDL", &autoLoadCDL);
g_config->getOption("SDL.AutoResumeCDL", &autoResumeCDL);
autoSaveCdlCbox->setChecked( autoSaveCDL );
autoLoadCdlCbox->setChecked( autoLoadCDL );
autoResumeLogCbox->setChecked( autoResumeCDL );
autoSaveCdlCbox->setChecked(autoSaveCDL);
autoLoadCdlCbox->setChecked(autoLoadCDL);
autoResumeLogCbox->setChecked(autoResumeCDL);
connect(autoSaveCdlCbox , SIGNAL(stateChanged(int)), this, SLOT(autoSaveCdlStateChange(int)) );
connect(autoLoadCdlCbox , SIGNAL(stateChanged(int)), this, SLOT(autoLoadCdlStateChange(int)) );
connect(autoResumeLogCbox, SIGNAL(stateChanged(int)), this, SLOT(autoResumeCdlStateChange(int)) );
connect(autoSaveCdlCbox, SIGNAL(stateChanged(int)), this, SLOT(autoSaveCdlStateChange(int)));
connect(autoLoadCdlCbox, SIGNAL(stateChanged(int)), this, SLOT(autoLoadCdlStateChange(int)));
connect(autoResumeLogCbox, SIGNAL(stateChanged(int)), this, SLOT(autoResumeCdlStateChange(int)));
subframe = new QGroupBox(tr("PRG Logged as Code"));
vbox = new QVBoxLayout();
vbox->addWidget( prgLoggedCodeLabel );
subframe->setLayout( vbox );
vbox = new QVBoxLayout();
vbox->addWidget(prgLoggedCodeLabel);
subframe->setLayout(vbox);
grid->addWidget( subframe, 0, 0, Qt::AlignCenter );
grid->addWidget(subframe, 0, 0, Qt::AlignCenter);
subframe = new QGroupBox(tr("PRG Logged as Data"));
vbox = new QVBoxLayout();
vbox->addWidget( prgLoggedDataLabel );
subframe->setLayout( vbox );
vbox = new QVBoxLayout();
vbox->addWidget(prgLoggedDataLabel);
subframe->setLayout(vbox);
grid->addWidget( subframe, 0, 1, Qt::AlignCenter );
grid->addWidget(subframe, 0, 1, Qt::AlignCenter);
subframe = new QGroupBox(tr("PRG not Logged"));
vbox = new QVBoxLayout();
vbox->addWidget( prgUnloggedLabel );
subframe->setLayout( vbox );
vbox = new QVBoxLayout();
vbox->addWidget(prgUnloggedLabel);
subframe->setLayout(vbox);
grid->addWidget( subframe, 0, 2, Qt::AlignCenter );
grid->addWidget(subframe, 0, 2, Qt::AlignCenter);
subframe = new QGroupBox(tr("CHR Logged as Code"));
vbox = new QVBoxLayout();
vbox->addWidget( chrLoggedCodeLabel );
subframe->setLayout( vbox );
vbox = new QVBoxLayout();
vbox->addWidget(chrLoggedCodeLabel);
subframe->setLayout(vbox);
grid->addWidget( subframe, 1, 0, Qt::AlignCenter );
grid->addWidget(subframe, 1, 0, Qt::AlignCenter);
subframe = new QGroupBox(tr("CHR Logged as Data"));
vbox = new QVBoxLayout();
vbox->addWidget( chrLoggedDataLabel );
subframe->setLayout( vbox );
vbox = new QVBoxLayout();
vbox->addWidget(chrLoggedDataLabel);
subframe->setLayout(vbox);
grid->addWidget( subframe, 1, 1, Qt::AlignCenter );
grid->addWidget(subframe, 1, 1, Qt::AlignCenter);
subframe = new QGroupBox(tr("CHR not Logged"));
vbox = new QVBoxLayout();
vbox->addWidget( chrUnloggedLabel );
subframe->setLayout( vbox );
vbox = new QVBoxLayout();
vbox->addWidget(chrUnloggedLabel);
subframe->setLayout(vbox);
grid->addWidget( subframe, 1, 2, Qt::AlignCenter );
grid->addWidget(subframe, 1, 2, Qt::AlignCenter);
grid = new QGridLayout();
vbox1->addLayout( grid );
btn = new QPushButton( tr("Reset Log") );
grid->addWidget( btn, 0, 0, Qt::AlignCenter );
connect( btn, SIGNAL(clicked(void)), this, SLOT(ResetCDLogClicked(void)));
vbox1->addLayout(grid);
btn = new QPushButton(tr("Reset Log"));
grid->addWidget(btn, 0, 0, Qt::AlignCenter);
connect(btn, SIGNAL(clicked(void)), this, SLOT(ResetCDLogClicked(void)));
startPauseButton = new QPushButton( tr("Start") );
grid->addWidget( startPauseButton, 0, 1, Qt::AlignCenter );
connect( startPauseButton, SIGNAL(clicked(void)), this, SLOT(StartPauseCDLogClicked(void)));
startPauseButton = new QPushButton(tr("Start"));
grid->addWidget(startPauseButton, 0, 1, Qt::AlignCenter);
connect(startPauseButton, SIGNAL(clicked(void)), this, SLOT(StartPauseCDLogClicked(void)));
btn = new QPushButton( tr("Save") );
grid->addWidget( btn, 0, 2, Qt::AlignCenter );
connect( btn, SIGNAL(clicked(void)), this, SLOT(saveCdlFile(void)));
btn = new QPushButton(tr("Save"));
grid->addWidget(btn, 0, 2, Qt::AlignCenter);
connect(btn, SIGNAL(clicked(void)), this, SLOT(saveCdlFile(void)));
btn = new QPushButton( tr("Load") );
grid->addWidget( btn, 1, 0, Qt::AlignCenter );
connect( btn, SIGNAL(clicked(void)), this, SLOT(loadCdlFile(void)));
btn = new QPushButton(tr("Load"));
grid->addWidget(btn, 1, 0, Qt::AlignCenter);
connect(btn, SIGNAL(clicked(void)), this, SLOT(loadCdlFile(void)));
btn = new QPushButton( tr("Save As") );
grid->addWidget( btn, 1, 2, Qt::AlignCenter );
connect( btn, SIGNAL(clicked(void)), this, SLOT(saveCdlFileAs(void)));
btn = new QPushButton(tr("Save As"));
grid->addWidget(btn, 1, 2, Qt::AlignCenter);
connect(btn, SIGNAL(clicked(void)), this, SLOT(saveCdlFileAs(void)));
hbox = new QHBoxLayout();
vbox1->addLayout( hbox );
vbox1->addLayout(hbox);
subframe = new QGroupBox(tr("Logging Workflow Options"));
vbox = new QVBoxLayout();
vbox->addWidget( autoSaveCdlCbox );
vbox->addWidget( autoLoadCdlCbox );
vbox->addWidget( autoResumeLogCbox );
subframe->setLayout( vbox );
hbox->addWidget( subframe );
vbox = new QVBoxLayout();
vbox->addWidget(autoSaveCdlCbox);
vbox->addWidget(autoLoadCdlCbox);
vbox->addWidget(autoResumeLogCbox);
subframe->setLayout(vbox);
hbox->addWidget(subframe);
subframe = new QGroupBox(tr("Generate ROM"));
vbox = new QVBoxLayout();
vbox = new QVBoxLayout();
btn = new QPushButton( tr("Save Stripped Data") );
vbox->addWidget( btn );
connect( btn, SIGNAL(clicked(void)), this, SLOT(SaveStrippedROMClicked(void)));
btn = new QPushButton( tr("Save Unused Data") );
vbox->addWidget( btn );
connect( btn, SIGNAL(clicked(void)), this, SLOT(SaveUnusedROMClicked(void)));
subframe->setLayout( vbox );
hbox->addWidget( subframe );
btn = new QPushButton(tr("Save Stripped Data"));
vbox->addWidget(btn);
connect(btn, SIGNAL(clicked(void)), this, SLOT(SaveStrippedROMClicked(void)));
btn = new QPushButton(tr("Save Unused Data"));
vbox->addWidget(btn);
connect(btn, SIGNAL(clicked(void)), this, SLOT(SaveUnusedROMClicked(void)));
subframe->setLayout(vbox);
hbox->addWidget(subframe);
mainLayout->addWidget( frame );
mainLayout->addWidget(frame);
setLayout( mainLayout );
setLayout(mainLayout);
updateTimer->start( 200 ); // 5hz
updateTimer->start(200); // 5hz
if (autoLoadCDL)
{
char nameo[2048];
getDefaultCDLFile( nameo );
getDefaultCDLFile(nameo);
LoadCDLog(nameo);
}
}
//----------------------------------------------------
CodeDataLoggerDialog_t::~CodeDataLoggerDialog_t(void)
{
updateTimer->stop();
updateTimer->stop();
printf("Code Data Logger Window Deleted\n");
}
//----------------------------------------------------
void CodeDataLoggerDialog_t::closeEvent(QCloseEvent *event)
{
printf("Code Data Logger Close Window Event\n");
done(0);
printf("Code Data Logger Close Window Event\n");
done(0);
deleteLater();
event->accept();
event->accept();
}
//----------------------------------------------------
void CodeDataLoggerDialog_t::closeWindow(void)
{
printf("Code Data Logger Close Window\n");
done(0);
printf("Code Data Logger Close Window\n");
done(0);
deleteLater();
}
//----------------------------------------------------
@ -257,52 +257,52 @@ void CodeDataLoggerDialog_t::updatePeriodic(void)
float fromsize = cdloggerdataSize;
float fvromsize = (cdloggerVideoDataSize != 0) ? cdloggerVideoDataSize : 1;
if ( FCEUI_GetLoggingCD() )
if (FCEUI_GetLoggingCD())
{
startPauseButton->setText( tr("Pause") );
statLabel->setText( tr(" Logger is Running: Press Pause to Stop ") );
startPauseButton->setText(tr("Pause"));
statLabel->setText(tr(" Logger is Running: Press Pause to Stop "));
statLabel->setStyleSheet("background-color: green; color: white;");
}
else
{
startPauseButton->setText( tr("Start") );
statLabel->setText( tr(" Logger is Paused: Press Start to Run ") );
startPauseButton->setText(tr("Start"));
statLabel->setText(tr(" Logger is Paused: Press Start to Run "));
statLabel->setStyleSheet("background-color: red; color: white;");
}
if ( cdloggerdataSize > 0 )
if (cdloggerdataSize > 0)
{
sprintf(str,"0x%06x %.2f%%", codecount, (fcodecount / fromsize) * 100);
prgLoggedCodeLabel->setText( tr(str) );
sprintf(str, "0x%06x %.2f%%", codecount, (fcodecount / fromsize) * 100);
prgLoggedCodeLabel->setText(tr(str));
sprintf(str,"0x%06x %.2f%%", datacount,(fdatacount / fromsize) * 100);
prgLoggedDataLabel->setText( tr(str) );
sprintf(str, "0x%06x %.2f%%", datacount, (fdatacount / fromsize) * 100);
prgLoggedDataLabel->setText(tr(str));
sprintf(str,"0x%06x %.2f%%", undefinedcount, (fundefinedcount / fromsize) * 100);
prgUnloggedLabel->setText( tr(str) );
sprintf(str, "0x%06x %.2f%%", undefinedcount, (fundefinedcount / fromsize) * 100);
prgUnloggedLabel->setText(tr(str));
sprintf(str,"0x%06x %.2f%%", rendercount, (frendercount / fvromsize) * 100);
chrLoggedCodeLabel->setText( tr(str) );
sprintf(str, "0x%06x %.2f%%", rendercount, (frendercount / fvromsize) * 100);
chrLoggedCodeLabel->setText(tr(str));
sprintf(str,"0x%06x %.2f%%", vromreadcount, (fvromreadcount / fvromsize) * 100);
chrLoggedDataLabel->setText( tr(str) );
sprintf(str, "0x%06x %.2f%%", vromreadcount, (fvromreadcount / fvromsize) * 100);
chrLoggedDataLabel->setText(tr(str));
sprintf(str,"0x%06x %.2f%%", undefinedvromcount, (fundefinedvromcount / fvromsize) * 100);
chrUnloggedLabel->setText( tr(str) );
sprintf(str, "0x%06x %.2f%%", undefinedvromcount, (fundefinedvromcount / fvromsize) * 100);
chrUnloggedLabel->setText(tr(str));
}
else
{
prgLoggedCodeLabel->setText( tr("------") );
prgLoggedDataLabel->setText( tr("------") );
prgUnloggedLabel->setText( tr("------") );
chrLoggedCodeLabel->setText( tr("------") );
chrLoggedDataLabel->setText( tr("------") );
chrUnloggedLabel->setText( tr("------") );
prgLoggedCodeLabel->setText(tr("------"));
prgLoggedDataLabel->setText(tr("------"));
prgUnloggedLabel->setText(tr("------"));
chrLoggedCodeLabel->setText(tr("------"));
chrLoggedDataLabel->setText(tr("------"));
chrUnloggedLabel->setText(tr("------"));
}
sprintf( str, "CDL File: %s", loadedcdfile );
sprintf(str, "CDL File: %s", loadedcdfile);
cdlFileLabel->setText( tr(str) );
cdlFileLabel->setText(tr(str));
}
//----------------------------------------------------
void CodeDataLoggerDialog_t::ResetCDLogClicked(void)
@ -312,17 +312,17 @@ void CodeDataLoggerDialog_t::ResetCDLogClicked(void)
//----------------------------------------------------
void CodeDataLoggerDialog_t::StartPauseCDLogClicked(void)
{
if ( FCEUI_GetLoggingCD() )
if (FCEUI_GetLoggingCD())
{
//printf("CD Logging Paused\n");
PauseCDLogging();
startPauseButton->setText( tr("Start") );
startPauseButton->setText(tr("Start"));
}
else
{
//printf("CD Logging Started\n");
StartCDLogging();
startPauseButton->setText( tr("Pause") );
startPauseButton->setText(tr("Pause"));
}
}
//----------------------------------------------------
@ -336,58 +336,58 @@ void CodeDataLoggerDialog_t::saveCdlFileAs(void)
int ret, useNativeFileDialogVal;
QString filename;
const char *romFile;
QFileDialog dialog(this, tr("Save CDL To File") );
QFileDialog dialog(this, tr("Save CDL To File"));
dialog.setFileMode(QFileDialog::AnyFile);
dialog.setNameFilter(tr("CDL Files (*.cdl *.CDL) ;; All files (*)"));
dialog.setViewMode(QFileDialog::List);
dialog.setFilter( QDir::AllEntries | QDir::AllDirs | QDir::Hidden );
dialog.setLabelText( QFileDialog::Accept, tr("Save") );
dialog.setDefaultSuffix( tr(".cdl") );
dialog.setFilter(QDir::AllEntries | QDir::AllDirs | QDir::Hidden);
dialog.setLabelText(QFileDialog::Accept, tr("Save"));
dialog.setDefaultSuffix(tr(".cdl"));
romFile = getRomFile();
if ( romFile != NULL )
if (romFile != NULL)
{
char dir[512], base[256];
parseFilepath( romFile, dir, base );
parseFilepath(romFile, dir, base);
strcat( base, ".cdl");
strcat(base, ".cdl");
dialog.setDirectory( tr(dir) );
dialog.setDirectory(tr(dir));
dialog.selectFile( tr(base) );
dialog.selectFile(tr(base));
}
// Check config option to use native file dialog or not
g_config->getOption ("SDL.UseNativeFileDialog", &useNativeFileDialogVal);
g_config->getOption("SDL.UseNativeFileDialog", &useNativeFileDialogVal);
dialog.setOption(QFileDialog::DontUseNativeDialog, !useNativeFileDialogVal);
ret = dialog.exec();
if ( ret )
if (ret)
{
QStringList fileList;
fileList = dialog.selectedFiles();
if ( fileList.size() > 0 )
if (fileList.size() > 0)
{
filename = fileList[0];
}
}
if ( filename.isNull() )
{
return;
}
if (filename.isNull())
{
return;
}
//qDebug() << "selected file path : " << filename.toUtf8();
fceuWrapperLock();
strcpy( loadedcdfile, filename.toStdString().c_str() );
strcpy(loadedcdfile, filename.toStdString().c_str());
SaveCDLogFile();
fceuWrapperUnLock();
}
@ -398,54 +398,54 @@ void CodeDataLoggerDialog_t::loadCdlFile(void)
QString filename;
char dir[512];
const char *romFile;
QFileDialog dialog(this, tr("Load CDL File") );
QFileDialog dialog(this, tr("Load CDL File"));
dialog.setFileMode(QFileDialog::ExistingFile);
dialog.setNameFilter(tr("CDL files (*.cdl *.CDL) ;; All files (*)"));
dialog.setViewMode(QFileDialog::List);
dialog.setFilter( QDir::AllEntries | QDir::AllDirs | QDir::Hidden );
dialog.setLabelText( QFileDialog::Accept, tr("Load") );
dialog.setFilter(QDir::AllEntries | QDir::AllDirs | QDir::Hidden);
dialog.setLabelText(QFileDialog::Accept, tr("Load"));
romFile = getRomFile();
if ( romFile )
if (romFile)
{
getDirFromFile( romFile, dir );
getDirFromFile(romFile, dir);
dialog.setDirectory( tr(dir) );
dialog.setDirectory(tr(dir));
}
// Check config option to use native file dialog or not
g_config->getOption ("SDL.UseNativeFileDialog", &useNativeFileDialogVal);
g_config->getOption("SDL.UseNativeFileDialog", &useNativeFileDialogVal);
dialog.setOption(QFileDialog::DontUseNativeDialog, !useNativeFileDialogVal);
ret = dialog.exec();
if ( ret )
if (ret)
{
QStringList fileList;
fileList = dialog.selectedFiles();
if ( fileList.size() > 0 )
if (fileList.size() > 0)
{
filename = fileList[0];
}
}
if ( filename.isNull() )
{
return;
}
if (filename.isNull())
{
return;
}
//qDebug() << "selected file path : " << filename.toUtf8();
fceuWrapperLock();
LoadCDLog ( filename.toStdString().c_str() );
LoadCDLog(filename.toStdString().c_str());
fceuWrapperUnLock();
return;
return;
}
//----------------------------------------------------
void CodeDataLoggerDialog_t::SaveStrippedROM(int invert)
@ -457,7 +457,7 @@ void CodeDataLoggerDialog_t::SaveStrippedROM(int invert)
if (!GameInfo)
return;
if (GameInfo->type==GIT_NSF)
if (GameInfo->type == GIT_NSF)
{
printf("Sorry, you're not allowed to save optimized NSFs yet. Please don't optimize individual banks, as there are still some issues with several NSFs to be fixed, and it is easier to fix those issues with as much of the bank data intact as possible.");
return;
@ -472,67 +472,67 @@ void CodeDataLoggerDialog_t::SaveStrippedROM(int invert)
int i, ret, useNativeFileDialogVal;
QString filename;
const char *romFile;
QFileDialog dialog(this, tr("Save Stripped File As...") );
QFileDialog dialog(this, tr("Save Stripped File As..."));
dialog.setFileMode(QFileDialog::AnyFile);
if (GameInfo->type==GIT_NSF)
if (GameInfo->type == GIT_NSF)
{
dialog.setNameFilter(tr("NSF Files (*.nsf *.NSF) ;; All files (*)"));
dialog.setDefaultSuffix( tr(".nsf") );
}
dialog.setDefaultSuffix(tr(".nsf"));
}
else
{
{
dialog.setNameFilter(tr("NES Files (*.nes *.NES) ;; All files (*)"));
dialog.setDefaultSuffix( tr(".nes") );
dialog.setDefaultSuffix(tr(".nes"));
}
dialog.setViewMode(QFileDialog::List);
dialog.setFilter( QDir::AllEntries | QDir::AllDirs | QDir::Hidden );
dialog.setLabelText( QFileDialog::Accept, tr("Save") );
dialog.setFilter(QDir::AllEntries | QDir::AllDirs | QDir::Hidden);
dialog.setLabelText(QFileDialog::Accept, tr("Save"));
romFile = getRomFile();
if ( romFile != NULL )
if (romFile != NULL)
{
char dir[512], base[256];
parseFilepath( romFile, dir, base );
parseFilepath(romFile, dir, base);
dialog.setDirectory( tr(dir) );
dialog.setDirectory(tr(dir));
}
// Check config option to use native file dialog or not
g_config->getOption ("SDL.UseNativeFileDialog", &useNativeFileDialogVal);
g_config->getOption("SDL.UseNativeFileDialog", &useNativeFileDialogVal);
dialog.setOption(QFileDialog::DontUseNativeDialog, !useNativeFileDialogVal);
ret = dialog.exec();
if ( ret )
if (ret)
{
QStringList fileList;
fileList = dialog.selectedFiles();
if ( fileList.size() > 0 )
if (fileList.size() > 0)
{
filename = fileList[0];
}
}
if ( filename.isNull() )
{
return;
}
if (filename.isNull())
{
return;
}
//qDebug() << "selected file path : " << filename.toUtf8();
FILE *fp = fopen( filename.toStdString().c_str(),"wb");
if (!fp)
FILE *fp = fopen(filename.toStdString().c_str(), "wb");
if (!fp)
{
FCEUD_PrintError("Error opening target stripped rom file!");
return;
}
if (GameInfo->type==GIT_NSF)
if (GameInfo->type == GIT_NSF)
{
uint8 NSFLoadLow;
uint8 NSFLoadHigh;
@ -545,26 +545,26 @@ void CodeDataLoggerDialog_t::SaveStrippedROM(int invert)
//Simple store/restore for writing a working NSF header
NSFLoadLow = NSFHeader.LoadAddressLow;
NSFLoadHigh = NSFHeader.LoadAddressHigh;
NSFHeader.LoadAddressLow=0;
NSFHeader.LoadAddressHigh&=0xF0;
fwrite(&NSFHeader,1,0x8,fp);
NSFHeader.LoadAddressLow = 0;
NSFHeader.LoadAddressHigh &= 0xF0;
fwrite(&NSFHeader, 1, 0x8, fp);
NSFHeader.LoadAddressLow = NSFLoadLow;
NSFHeader.LoadAddressHigh = NSFLoadHigh;
fseek(fp,0x8,SEEK_SET);
for (i = 0;i < ((NSFMaxBank+1)*4096);i++){
fseek(fp, 0x8, SEEK_SET);
for (i = 0; i < ((NSFMaxBank + 1) * 4096); i++)
{
unsigned char pchar;
if (cdloggerdata[i] & 3)
{
pchar = invert?0:NSFDATA[i];
pchar = invert ? 0 : NSFDATA[i];
}
else
{
pchar = invert?NSFDATA[i]:0;
pchar = invert ? NSFDATA[i] : 0;
}
fputc(pchar, fp);
}
}
else
{
@ -578,17 +578,18 @@ void CodeDataLoggerDialog_t::SaveStrippedROM(int invert)
cdlhead.ROM_size = cdloggerdataSize >> 14;
cdlhead.VROM_size = cdloggerVideoDataSize >> 13;
fwrite(&cdlhead,1,16,fp);
fwrite(&cdlhead, 1, 16, fp);
for (i = 0; i < (int)cdloggerdataSize; i++){
for (i = 0; i < (int)cdloggerdataSize; i++)
{
unsigned char pchar;
if (cdloggerdata[i] & 3)
{
pchar = invert?0:PRGptr[0][i];
pchar = invert ? 0 : PRGptr[0][i];
}
else
{
pchar = invert?PRGptr[0][i]:0;
pchar = invert ? PRGptr[0][i] : 0;
}
fputc(pchar, fp);
}
@ -596,15 +597,16 @@ void CodeDataLoggerDialog_t::SaveStrippedROM(int invert)
if (cdloggerVideoDataSize != 0)
{
// since the OldPPU at least logs the $2007 read accesses, we should save the data anyway
for (i = 0; i < (int)cdloggerVideoDataSize; i++) {
for (i = 0; i < (int)cdloggerVideoDataSize; i++)
{
unsigned char vchar;
if (cdloggervdata[i] & 3)
{
vchar = invert?0:CHRptr[0][i];
vchar = invert ? 0 : CHRptr[0][i];
}
else
{
vchar = invert?CHRptr[0][i]:0;
vchar = invert ? CHRptr[0][i] : 0;
}
fputc(vchar, fp);
}
@ -623,7 +625,7 @@ void CodeDataLoggerDialog_t::SaveUnusedROMClicked(void)
SaveStrippedROM(1);
}
//----------------------------------------------------
static int getDefaultCDLFile( char *filepath )
static int getDefaultCDLFile(char *filepath)
{
const char *romFile;
char dir[512], baseFile[256];
@ -632,20 +634,20 @@ static int getDefaultCDLFile( char *filepath )
romFile = getRomFile();
if ( romFile == NULL )
if (romFile == NULL)
{
return -1;
}
parseFilepath( romFile, dir, baseFile );
if ( dir[0] == 0 )
parseFilepath(romFile, dir, baseFile);
if (dir[0] == 0)
{
sprintf( filepath, "%s.cdl", baseFile );
sprintf(filepath, "%s.cdl", baseFile);
}
else
{
sprintf( filepath, "%s/%s.cdl", dir, baseFile );
sprintf(filepath, "%s/%s.cdl", dir, baseFile);
}
//printf("%s\n", filepath );
@ -675,14 +677,18 @@ void InitCDLog(void)
{
fceuWrapperLock();
cdloggerdataSize = PRGsize[0];
cdloggerdata = (unsigned char*)malloc(cdloggerdataSize);
if (!CHRram[0] || (CHRptr[0] == PRGptr[0])) { // Some kind of workaround for my OneBus VRAM hack, will remove it if I find another solution for that
cdloggerdata = (unsigned char *)malloc(cdloggerdataSize);
if (!CHRram[0] || (CHRptr[0] == PRGptr[0]))
{ // Some kind of workaround for my OneBus VRAM hack, will remove it if I find another solution for that
cdloggerVideoDataSize = CHRsize[0];
cdloggervdata = (unsigned char*)malloc(cdloggerVideoDataSize);
} else {
if (GameInfo->type != GIT_NSF) {
cdloggervdata = (unsigned char *)malloc(cdloggerVideoDataSize);
}
else
{
if (GameInfo->type != GIT_NSF)
{
cdloggerVideoDataSize = 0;
cdloggervdata = (unsigned char*)malloc(8192);
cdloggervdata = (unsigned char *)malloc(8192);
}
}
fceuWrapperUnLock();
@ -690,7 +696,7 @@ void InitCDLog(void)
//----------------------------------------------------
void ResetCDLog(void)
{
if ( GameInfo == NULL )
if (GameInfo == NULL)
{
return;
}
@ -699,22 +705,22 @@ void ResetCDLog(void)
codecount = datacount = rendercount = vromreadcount = 0;
undefinedcount = cdloggerdataSize;
if ( cdloggerdata != NULL )
if (cdloggerdata != NULL)
{
memset(cdloggerdata, 0, cdloggerdataSize);
}
if (cdloggerVideoDataSize != 0)
if (cdloggerVideoDataSize != 0)
{
undefinedvromcount = cdloggerVideoDataSize;
if ( cdloggervdata != NULL )
if (cdloggervdata != NULL)
{
memset(cdloggervdata, 0, cdloggerVideoDataSize);
}
}
else
{
if (GameInfo->type != GIT_NSF)
else
{
if (GameInfo->type != GIT_NSF)
{
undefinedvromcount = 8192;
memset(cdloggervdata, 0, 8192);
@ -723,10 +729,10 @@ void ResetCDLog(void)
fceuWrapperUnLock();
}
//----------------------------------------------------
bool LoadCDLog(const char* nameo)
bool LoadCDLog(const char *nameo)
{
FILE *FP;
int i,j;
int i, j;
FP = fopen(nameo, "rb");
if (FP == NULL)
@ -734,7 +740,7 @@ bool LoadCDLog(const char* nameo)
return false;
}
for(i = 0;i < (int)cdloggerdataSize;i++)
for (i = 0; i < (int)cdloggerdataSize; i++)
{
j = fgetc(FP);
if (j == EOF)
@ -748,15 +754,19 @@ bool LoadCDLog(const char* nameo)
cdloggerdata[i] |= j;
}
if(cdloggerVideoDataSize != 0)
if (cdloggerVideoDataSize != 0)
{
for(i = 0;i < (int)cdloggerVideoDataSize;i++)
for (i = 0; i < (int)cdloggerVideoDataSize; i++)
{
j = fgetc(FP);
if(j == EOF)break;
if((j & 1) && !(cdloggervdata[i] & 1))rendercount++; //if the new byte has something logged and
if((j & 2) && !(cdloggervdata[i] & 2))vromreadcount++; //if the new byte has something logged and
if((j & 3) && !(cdloggervdata[i] & 3))undefinedvromcount--; //the appropriate counter.
if (j == EOF)
break;
if ((j & 1) && !(cdloggervdata[i] & 1))
rendercount++; //if the new byte has something logged and
if ((j & 2) && !(cdloggervdata[i] & 2))
vromreadcount++; //if the new byte has something logged and
if ((j & 3) && !(cdloggervdata[i] & 3))
undefinedvromcount--; //the appropriate counter.
cdloggervdata[i] |= j;
}
}
@ -815,7 +825,7 @@ void CDLoggerROMChanged(void)
// try to load respective CDL file
char nameo[1024];
getDefaultCDLFile( nameo );
getDefaultCDLFile(nameo);
FILE *FP;
FP = fopen(nameo, "rb");
@ -834,7 +844,7 @@ void CDLoggerROMChanged(void)
}
}
//----------------------------------------------------
void RenameCDLog(const char* newName)
void RenameCDLog(const char *newName)
{
strcpy(loadedcdfile, newName);
}
@ -844,7 +854,7 @@ void SaveCDLogFile(void)
if (loadedcdfile[0] == 0)
{
char nameo[1024];
getDefaultCDLFile( nameo );
getDefaultCDLFile(nameo);
RenameCDLog(nameo);
}

View File

@ -18,46 +18,45 @@
class CodeDataLoggerDialog_t : public QDialog
{
Q_OBJECT
Q_OBJECT
public:
CodeDataLoggerDialog_t(QWidget *parent = 0);
~CodeDataLoggerDialog_t(void);
public:
CodeDataLoggerDialog_t(QWidget *parent = 0);
~CodeDataLoggerDialog_t(void);
protected:
QTimer *updateTimer;
QLabel *prgLoggedCodeLabel;
QLabel *prgLoggedDataLabel;
QLabel *prgUnloggedLabel;
QLabel *chrLoggedCodeLabel;
QLabel *chrLoggedDataLabel;
QLabel *chrUnloggedLabel;
QLabel *cdlFileLabel;
QLabel *statLabel;
QCheckBox *autoSaveCdlCbox;
QCheckBox *autoLoadCdlCbox;
QCheckBox *autoResumeLogCbox;
QPushButton *startPauseButton;
void closeEvent(QCloseEvent *bar);
protected:
QTimer *updateTimer;
QLabel *prgLoggedCodeLabel;
QLabel *prgLoggedDataLabel;
QLabel *prgUnloggedLabel;
QLabel *chrLoggedCodeLabel;
QLabel *chrLoggedDataLabel;
QLabel *chrUnloggedLabel;
QLabel *cdlFileLabel;
QLabel *statLabel;
QCheckBox *autoSaveCdlCbox;
QCheckBox *autoLoadCdlCbox;
QCheckBox *autoResumeLogCbox;
QPushButton *startPauseButton;
void closeEvent(QCloseEvent *bar);
void SaveStrippedROM(int invert);
void SaveStrippedROM(int invert);
private:
public slots:
void closeWindow(void);
private slots:
void loadCdlFile(void);
void saveCdlFile(void);
void saveCdlFileAs(void);
void updatePeriodic(void);
void ResetCDLogClicked(void);
void StartPauseCDLogClicked(void);
void autoSaveCdlStateChange(int state);
void autoLoadCdlStateChange(int state);
void autoResumeCdlStateChange(int state);
void SaveStrippedROMClicked(void);
void SaveUnusedROMClicked(void);
private:
public slots:
void closeWindow(void);
private slots:
void loadCdlFile(void);
void saveCdlFile(void);
void saveCdlFileAs(void);
void updatePeriodic(void);
void ResetCDLogClicked(void);
void StartPauseCDLogClicked(void);
void autoSaveCdlStateChange(int state);
void autoLoadCdlStateChange(int state);
void autoResumeCdlStateChange(int state);
void SaveStrippedROMClicked(void);
void SaveUnusedROMClicked(void);
};
void InitCDLog(void);
@ -65,9 +64,8 @@ void ResetCDLog(void);
void FreeCDLog(void);
void StartCDLogging(void);
bool PauseCDLogging(void);
bool LoadCDLog(const char* nameo);
void RenameCDLog(const char* newName);
bool LoadCDLog(const char *nameo);
void RenameCDLog(const char *newName);
void CDLoggerROMClosed(void);
void CDLoggerROMChanged(void);
void SaveCDLogFile(void);

File diff suppressed because it is too large Load Diff

View File

@ -25,177 +25,178 @@
struct traceRecord_t
{
struct {
uint16_t PC;
uint8_t A;
uint8_t X;
uint8_t Y;
uint8_t S;
uint8_t P;
struct
{
uint16_t PC;
uint8_t A;
uint8_t X;
uint8_t Y;
uint8_t S;
uint8_t P;
} cpu;
uint8_t opCode[3];
uint8_t opSize;
uint8_t asmTxtSize;
char asmTxt[64];
uint8_t opCode[3];
uint8_t opSize;
uint8_t asmTxtSize;
char asmTxt[64];
uint64_t frameCount;
uint64_t cycleCount;
uint64_t instrCount;
uint64_t flags;
uint64_t frameCount;
uint64_t cycleCount;
uint64_t instrCount;
uint64_t flags;
int32_t callAddr;
int32_t romAddr;
int32_t bank;
int32_t skippedLines;
int32_t callAddr;
int32_t romAddr;
int32_t bank;
int32_t skippedLines;
traceRecord_t(void);
int appendAsmText( const char *txt );
int appendAsmText(const char *txt);
int convToText( char *line, int *len = 0 );
int convToText(char *line, int *len = 0);
};
class QTraceLogView : public QWidget
{
Q_OBJECT
Q_OBJECT
public:
QTraceLogView(QWidget *parent = 0);
~QTraceLogView(void);
public:
QTraceLogView(QWidget *parent = 0);
~QTraceLogView(void);
void setScrollBars( QScrollBar *h, QScrollBar *v );
void highlightClear(void);
protected:
void paintEvent(QPaintEvent *event);
void resizeEvent(QResizeEvent *event);
void wheelEvent(QWheelEvent *event);
void mousePressEvent(QMouseEvent * event);
void mouseReleaseEvent(QMouseEvent * event);
void mouseMoveEvent(QMouseEvent * event);
void keyPressEvent(QKeyEvent *event);
void setScrollBars(QScrollBar *h, QScrollBar *v);
void highlightClear(void);
void calcFontData(void);
QPoint convPixToCursor( QPoint p );
bool textIsHighlighted(void);
void setHighlightEndCoord( int x, int y );
void loadClipboard( const char *txt );
void contextMenuEvent(QContextMenuEvent *event);
void drawText( QPainter *painter, int x, int y, const char *txt, int maxChars = 256 );
void calcTextSel( int x, int y );
void openBpEditWindow( int editIdx, watchpointinfo *wp, traceRecord_t *recp );
void openDebugSymbolEditWindow( int addr, int bank = -1 );
protected:
void paintEvent(QPaintEvent *event);
void resizeEvent(QResizeEvent *event);
void wheelEvent(QWheelEvent *event);
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void keyPressEvent(QKeyEvent *event);
protected:
QFont font;
QScrollBar *vbar;
QScrollBar *hbar;
traceRecord_t rec[64];
void calcFontData(void);
QPoint convPixToCursor(QPoint p);
bool textIsHighlighted(void);
void setHighlightEndCoord(int x, int y);
void loadClipboard(const char *txt);
void contextMenuEvent(QContextMenuEvent *event);
void drawText(QPainter *painter, int x, int y, const char *txt, int maxChars = 256);
void calcTextSel(int x, int y);
void openBpEditWindow(int editIdx, watchpointinfo *wp, traceRecord_t *recp);
void openDebugSymbolEditWindow(int addr, int bank = -1);
int pxCharWidth;
int pxCharHeight;
int pxLineSpacing;
int pxLineLead;
int pxCursorHeight;
int pxLineXScroll;
int pxLineWidth;
int viewLines;
int viewWidth;
int viewHeight;
int wheelPixelCounter;
int txtHlgtAnchorChar;
int txtHlgtAnchorLine;
int txtHlgtStartChar;
int txtHlgtStartLine;
int txtHlgtEndChar;
int txtHlgtEndLine;
protected:
QFont font;
QScrollBar *vbar;
QScrollBar *hbar;
traceRecord_t rec[64];
bool mouseLeftBtnDown;
bool captureHighLightText;
int pxCharWidth;
int pxCharHeight;
int pxLineSpacing;
int pxLineLead;
int pxCursorHeight;
int pxLineXScroll;
int pxLineWidth;
int viewLines;
int viewWidth;
int viewHeight;
int wheelPixelCounter;
int txtHlgtAnchorChar;
int txtHlgtAnchorLine;
int txtHlgtStartChar;
int txtHlgtStartLine;
int txtHlgtEndChar;
int txtHlgtEndLine;
int selAddrIdx;
int selAddrLine;
int selAddrChar;
int selAddrWidth;
int selAddrValue;
char selAddrText[128];
bool mouseLeftBtnDown;
bool captureHighLightText;
int lineBufIdx[64];
std::string hlgtText;
std::string lineText[64];
int selAddrIdx;
int selAddrLine;
int selAddrChar;
int selAddrWidth;
int selAddrValue;
char selAddrText[128];
private slots:
void ctxMenuAddBP(void);
void ctxMenuAddSym(void);
int lineBufIdx[64];
std::string hlgtText;
std::string lineText[64];
private slots:
void ctxMenuAddBP(void);
void ctxMenuAddSym(void);
};
class TraceLoggerDialog_t : public QDialog
{
Q_OBJECT
Q_OBJECT
public:
TraceLoggerDialog_t(QWidget *parent = 0);
~TraceLoggerDialog_t(void);
public:
TraceLoggerDialog_t(QWidget *parent = 0);
~TraceLoggerDialog_t(void);
protected:
QTimer *updateTimer;
QCheckBox *logLastCbox;
QCheckBox *logFileCbox;
QComboBox *logMaxLinesComboBox;
protected:
QTimer *updateTimer;
QCheckBox *logLastCbox;
QCheckBox *logFileCbox;
QComboBox *logMaxLinesComboBox;
QCheckBox *autoUpdateCbox;
QCheckBox *logRegCbox;
QCheckBox *logFrameCbox;
QCheckBox *logEmuMsgCbox;
QCheckBox *logProcStatFlagCbox;
QCheckBox *logCyclesCountCbox;
QCheckBox *logBreakpointCbox;
QCheckBox *useStackPointerCbox;
QCheckBox *toLeftDisassemblyCbox;
QCheckBox *logInstrCountCbox;
QCheckBox *logBankNumCbox;
QCheckBox *symTraceEnaCbox;
QCheckBox *logNewMapCodeCbox;
QCheckBox *logNewMapDataCbox;
QCheckBox *autoUpdateCbox;
QCheckBox *logRegCbox;
QCheckBox *logFrameCbox;
QCheckBox *logEmuMsgCbox;
QCheckBox *logProcStatFlagCbox;
QCheckBox *logCyclesCountCbox;
QCheckBox *logBreakpointCbox;
QCheckBox *useStackPointerCbox;
QCheckBox *toLeftDisassemblyCbox;
QCheckBox *logInstrCountCbox;
QCheckBox *logBankNumCbox;
QCheckBox *symTraceEnaCbox;
QCheckBox *logNewMapCodeCbox;
QCheckBox *logNewMapDataCbox;
QPushButton *selLogFileButton;
QPushButton *startStopButton;
QPushButton *selLogFileButton;
QPushButton *startStopButton;
QTraceLogView *traceView;
QScrollBar *hbar;
QScrollBar *vbar;
QTraceLogView *traceView;
QScrollBar *hbar;
QScrollBar *vbar;
int traceViewCounter;
int recbufHeadLp;
int traceViewCounter;
int recbufHeadLp;
void closeEvent(QCloseEvent *bar);
void closeEvent(QCloseEvent *bar);
private:
public slots:
void closeWindow(void);
private slots:
void updatePeriodic(void);
void toggleLoggingOnOff(void);
void logRegStateChanged(int state);
void logFrameStateChanged(int state);
void logEmuMsgStateChanged(int state);
void symTraceEnaStateChanged(int state);
void logProcStatFlagStateChanged(int state);
void logCyclesCountStateChanged(int state);
void logBreakpointStateChanged(int state);
void useStackPointerStateChanged(int state);
void toLeftDisassemblyStateChanged(int state);
void logInstrCountStateChanged(int state);
void logBankNumStateChanged(int state);
void logNewMapCodeChanged(int state);
void logNewMapDataChanged(int state);
void logMaxLinesChanged(int index);
void hbarChanged(int value);
void vbarChanged(int value);
void openLogFile(void);
private:
public slots:
void closeWindow(void);
private slots:
void updatePeriodic(void);
void toggleLoggingOnOff(void);
void logRegStateChanged(int state);
void logFrameStateChanged(int state);
void logEmuMsgStateChanged(int state);
void symTraceEnaStateChanged(int state);
void logProcStatFlagStateChanged(int state);
void logCyclesCountStateChanged(int state);
void logBreakpointStateChanged(int state);
void useStackPointerStateChanged(int state);
void toLeftDisassemblyStateChanged(int state);
void logInstrCountStateChanged(int state);
void logBankNumStateChanged(int state);
void logNewMapCodeChanged(int state);
void logNewMapDataChanged(int state);
void logMaxLinesChanged(int index);
void hbarChanged(int value);
void vbarChanged(int value);
void openLogFile(void);
};
int initTraceLogBuffer( int maxRecs );
int initTraceLogBuffer(int maxRecs);
void openTraceLoggerWindow( QWidget *parent );
void openTraceLoggerWindow(QWidget *parent);