Minor performance improvements to Qt Ram Search window.
This commit is contained in:
parent
14b07ab5f2
commit
67752c1ea2
|
@ -95,6 +95,7 @@ struct memoryLocation_t
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
static struct memoryLocation_t memLoc[0x10000];
|
static struct memoryLocation_t memLoc[0x10000];
|
||||||
|
static uint8_t lclMemBuf[0x10000];
|
||||||
|
|
||||||
static std::list <struct memoryLocation_t*> actvSrchList;
|
static std::list <struct memoryLocation_t*> actvSrchList;
|
||||||
static std::list <struct memoryLocation_t*> deactvSrchList;
|
static std::list <struct memoryLocation_t*> deactvSrchList;
|
||||||
|
@ -182,9 +183,9 @@ void openRamSearchWindow( QWidget *parent )
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ramSearchWin = new RamSearchDialog_t(parent);
|
ramSearchWin = new RamSearchDialog_t(parent);
|
||||||
|
|
||||||
ramSearchWin->show();
|
ramSearchWin->show();
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
@ -196,7 +197,7 @@ RamSearchDialog_t::RamSearchDialog_t(QWidget *parent)
|
||||||
QVBoxLayout *vbox, *vbox1, *vbox2;
|
QVBoxLayout *vbox, *vbox1, *vbox2;
|
||||||
QGridLayout *grid;
|
QGridLayout *grid;
|
||||||
QGroupBox *frame;
|
QGroupBox *frame;
|
||||||
ramSearchInputValidator *inpValidator;
|
ramSearchInputValidator *inpValidator;
|
||||||
|
|
||||||
setWindowTitle("RAM Search");
|
setWindowTitle("RAM Search");
|
||||||
|
|
||||||
|
@ -216,14 +217,14 @@ RamSearchDialog_t::RamSearchDialog_t(QWidget *parent)
|
||||||
grid->addWidget( hbar , 1, 0 );
|
grid->addWidget( hbar , 1, 0 );
|
||||||
|
|
||||||
connect( hbar, SIGNAL(valueChanged(int)), this, SLOT(hbarChanged(int)) );
|
connect( hbar, SIGNAL(valueChanged(int)), this, SLOT(hbarChanged(int)) );
|
||||||
connect( vbar, SIGNAL(valueChanged(int)), this, SLOT(vbarChanged(int)) );
|
connect( vbar, SIGNAL(valueChanged(int)), this, SLOT(vbarChanged(int)) );
|
||||||
|
|
||||||
ramView->setScrollBars( hbar, vbar );
|
ramView->setScrollBars( hbar, vbar );
|
||||||
hbar->setMinimum(0);
|
hbar->setMinimum(0);
|
||||||
hbar->setMaximum(100);
|
hbar->setMaximum(100);
|
||||||
vbar->setMinimum(0);
|
vbar->setMinimum(0);
|
||||||
vbar->setMaximum(ShowROM ? 0x10000 : 0x8000);
|
vbar->setMaximum(ShowROM ? 0x10000 : 0x8000);
|
||||||
vbar->setValue(0);
|
vbar->setValue(0);
|
||||||
|
|
||||||
vbox = new QVBoxLayout();
|
vbox = new QVBoxLayout();
|
||||||
hbox1->addLayout( grid, 100);
|
hbox1->addLayout( grid, 100);
|
||||||
|
@ -297,14 +298,14 @@ RamSearchDialog_t::RamSearchDialog_t(QWidget *parent)
|
||||||
df_btn->setChecked( cmpOp == 'd' );
|
df_btn->setChecked( cmpOp == 'd' );
|
||||||
md_btn->setChecked( cmpOp == '%' );
|
md_btn->setChecked( cmpOp == '%' );
|
||||||
|
|
||||||
connect( lt_btn, SIGNAL(clicked(void)), this, SLOT(opLtClicked(void)) );
|
connect( lt_btn, SIGNAL(clicked(void)), this, SLOT(opLtClicked(void)) );
|
||||||
connect( gt_btn, SIGNAL(clicked(void)), this, SLOT(opGtClicked(void)) );
|
connect( gt_btn, SIGNAL(clicked(void)), this, SLOT(opGtClicked(void)) );
|
||||||
connect( le_btn, SIGNAL(clicked(void)), this, SLOT(opLeClicked(void)) );
|
connect( le_btn, SIGNAL(clicked(void)), this, SLOT(opLeClicked(void)) );
|
||||||
connect( ge_btn, SIGNAL(clicked(void)), this, SLOT(opGeClicked(void)) );
|
connect( ge_btn, SIGNAL(clicked(void)), this, SLOT(opGeClicked(void)) );
|
||||||
connect( eq_btn, SIGNAL(clicked(void)), this, SLOT(opEqClicked(void)) );
|
connect( eq_btn, SIGNAL(clicked(void)), this, SLOT(opEqClicked(void)) );
|
||||||
connect( ne_btn, SIGNAL(clicked(void)), this, SLOT(opNeClicked(void)) );
|
connect( ne_btn, SIGNAL(clicked(void)), this, SLOT(opNeClicked(void)) );
|
||||||
connect( df_btn, SIGNAL(clicked(void)), this, SLOT(opDfClicked(void)) );
|
connect( df_btn, SIGNAL(clicked(void)), this, SLOT(opDfClicked(void)) );
|
||||||
connect( md_btn, SIGNAL(clicked(void)), this, SLOT(opMdClicked(void)) );
|
connect( md_btn, SIGNAL(clicked(void)), this, SLOT(opMdClicked(void)) );
|
||||||
|
|
||||||
diffByEdit = new QLineEdit();
|
diffByEdit = new QLineEdit();
|
||||||
moduloEdit = new QLineEdit();
|
moduloEdit = new QLineEdit();
|
||||||
|
@ -312,14 +313,14 @@ RamSearchDialog_t::RamSearchDialog_t(QWidget *parent)
|
||||||
diffByEdit->setEnabled( cmpOp == 'd' );
|
diffByEdit->setEnabled( cmpOp == 'd' );
|
||||||
moduloEdit->setEnabled( cmpOp == '%' );
|
moduloEdit->setEnabled( cmpOp == '%' );
|
||||||
|
|
||||||
inpValidator = new ramSearchInputValidator(this);
|
inpValidator = new ramSearchInputValidator(this);
|
||||||
diffByEdit->setMaxLength( 16 );
|
diffByEdit->setMaxLength( 16 );
|
||||||
diffByEdit->setCursorPosition(0);
|
diffByEdit->setCursorPosition(0);
|
||||||
diffByEdit->setValidator( inpValidator );
|
diffByEdit->setValidator( inpValidator );
|
||||||
|
|
||||||
moduloEdit->setMaxLength( 16 );
|
moduloEdit->setMaxLength( 16 );
|
||||||
moduloEdit->setCursorPosition(0);
|
moduloEdit->setCursorPosition(0);
|
||||||
moduloEdit->setValidator( inpValidator );
|
moduloEdit->setValidator( inpValidator );
|
||||||
|
|
||||||
vbox->addWidget( lt_btn );
|
vbox->addWidget( lt_btn );
|
||||||
vbox->addWidget( gt_btn );
|
vbox->addWidget( gt_btn );
|
||||||
|
@ -352,22 +353,22 @@ RamSearchDialog_t::RamSearchDialog_t(QWidget *parent)
|
||||||
|
|
||||||
pv_btn->setChecked(true);
|
pv_btn->setChecked(true);
|
||||||
|
|
||||||
connect( pv_btn, SIGNAL(clicked(void)), this, SLOT(pvBtnClicked(void)) );
|
connect( pv_btn, SIGNAL(clicked(void)), this, SLOT(pvBtnClicked(void)) );
|
||||||
connect( sv_btn, SIGNAL(clicked(void)), this, SLOT(svBtnClicked(void)) );
|
connect( sv_btn, SIGNAL(clicked(void)), this, SLOT(svBtnClicked(void)) );
|
||||||
connect( sa_btn, SIGNAL(clicked(void)), this, SLOT(saBtnClicked(void)) );
|
connect( sa_btn, SIGNAL(clicked(void)), this, SLOT(saBtnClicked(void)) );
|
||||||
connect( nc_btn, SIGNAL(clicked(void)), this, SLOT(ncBtnClicked(void)) );
|
connect( nc_btn, SIGNAL(clicked(void)), this, SLOT(ncBtnClicked(void)) );
|
||||||
|
|
||||||
specValEdit = new QLineEdit();
|
specValEdit = new QLineEdit();
|
||||||
specAddrEdit = new QLineEdit();
|
specAddrEdit = new QLineEdit();
|
||||||
numChangeEdit = new QLineEdit();
|
numChangeEdit = new QLineEdit();
|
||||||
|
|
||||||
specValEdit->setValidator( inpValidator );
|
specValEdit->setValidator( inpValidator );
|
||||||
specAddrEdit->setValidator( inpValidator );
|
specAddrEdit->setValidator( inpValidator );
|
||||||
numChangeEdit->setValidator( inpValidator );
|
numChangeEdit->setValidator( inpValidator );
|
||||||
|
|
||||||
specValEdit->setEnabled(false);
|
specValEdit->setEnabled(false);
|
||||||
specAddrEdit->setEnabled(false);
|
specAddrEdit->setEnabled(false);
|
||||||
numChangeEdit->setEnabled(false);
|
numChangeEdit->setEnabled(false);
|
||||||
|
|
||||||
grid->addWidget( pv_btn , 0, 0, Qt::AlignLeft );
|
grid->addWidget( pv_btn , 0, 0, Qt::AlignLeft );
|
||||||
grid->addWidget( sv_btn , 1, 0, Qt::AlignLeft );
|
grid->addWidget( sv_btn , 1, 0, Qt::AlignLeft );
|
||||||
|
@ -441,7 +442,7 @@ RamSearchDialog_t::RamSearchDialog_t(QWidget *parent)
|
||||||
|
|
||||||
updateTimer = new QTimer( this );
|
updateTimer = new QTimer( this );
|
||||||
|
|
||||||
connect( updateTimer, &QTimer::timeout, this, &RamSearchDialog_t::periodicUpdate );
|
connect( updateTimer, &QTimer::timeout, this, &RamSearchDialog_t::periodicUpdate );
|
||||||
|
|
||||||
updateTimer->start( 8 ); // ~120hz
|
updateTimer->start( 8 ); // ~120hz
|
||||||
}
|
}
|
||||||
|
@ -464,61 +465,63 @@ RamSearchDialog_t::~RamSearchDialog_t(void)
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void RamSearchDialog_t::closeEvent(QCloseEvent *event)
|
void RamSearchDialog_t::closeEvent(QCloseEvent *event)
|
||||||
{
|
{
|
||||||
printf("RAM Search Close Window Event\n");
|
printf("RAM Search Close Window Event\n");
|
||||||
done(0);
|
done(0);
|
||||||
deleteLater();
|
deleteLater();
|
||||||
event->accept();
|
event->accept();
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void RamSearchDialog_t::closeWindow(void)
|
void RamSearchDialog_t::closeWindow(void)
|
||||||
{
|
{
|
||||||
//printf("Close Window\n");
|
//printf("Close Window\n");
|
||||||
done(0);
|
done(0);
|
||||||
deleteLater();
|
deleteLater();
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void RamSearchDialog_t::periodicUpdate(void)
|
void RamSearchDialog_t::periodicUpdate(void)
|
||||||
{
|
{
|
||||||
int selAddr = -1;
|
int selAddr = -1;
|
||||||
|
|
||||||
fceuWrapperLock();
|
|
||||||
if ( currFrameCounter != frameCounterLastPass )
|
if ( currFrameCounter != frameCounterLastPass )
|
||||||
{
|
{
|
||||||
//if ( currFrameCounter != (frameCounterLastPass+1) )
|
fceuWrapperLock();
|
||||||
//{
|
copyRamToLocalBuffer();
|
||||||
// printf("Warning: Ram Search Missed Frame: %i \n", currFrameCounter );
|
fceuWrapperUnLock();
|
||||||
//}
|
|
||||||
|
//if ( currFrameCounter != (frameCounterLastPass+1) )
|
||||||
|
//{
|
||||||
|
// printf("Warning: Ram Search Missed Frame: %i \n", currFrameCounter );
|
||||||
|
//}
|
||||||
updateRamValues();
|
updateRamValues();
|
||||||
|
|
||||||
if ( autoSearchCbox->isChecked() )
|
if ( autoSearchCbox->isChecked() )
|
||||||
{
|
{
|
||||||
runSearch();
|
runSearch();
|
||||||
}
|
}
|
||||||
frameCounterLastPass = currFrameCounter;
|
frameCounterLastPass = currFrameCounter;
|
||||||
}
|
}
|
||||||
fceuWrapperUnLock();
|
|
||||||
|
|
||||||
undoButton->setEnabled( deactvFrameStack.size() > 0 );
|
|
||||||
|
|
||||||
selAddr = ramView->getSelAddr();
|
|
||||||
|
|
||||||
if ( selAddr >= 0 )
|
|
||||||
{
|
|
||||||
elimButton->setEnabled(true);
|
|
||||||
watchButton->setEnabled(true);
|
|
||||||
addCheatButton->setEnabled(true);
|
|
||||||
hexEditButton->setEnabled(true);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
elimButton->setEnabled(false);
|
|
||||||
watchButton->setEnabled(false);
|
|
||||||
addCheatButton->setEnabled(false);
|
|
||||||
hexEditButton->setEnabled(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( (cycleCounter % 10) == 0)
|
if ( (cycleCounter % 10) == 0)
|
||||||
{
|
{
|
||||||
|
undoButton->setEnabled( deactvFrameStack.size() > 0 );
|
||||||
|
|
||||||
|
selAddr = ramView->getSelAddr();
|
||||||
|
|
||||||
|
if ( selAddr >= 0 )
|
||||||
|
{
|
||||||
|
elimButton->setEnabled(true);
|
||||||
|
watchButton->setEnabled(true);
|
||||||
|
addCheatButton->setEnabled(true);
|
||||||
|
hexEditButton->setEnabled(true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
elimButton->setEnabled(false);
|
||||||
|
watchButton->setEnabled(false);
|
||||||
|
addCheatButton->setEnabled(false);
|
||||||
|
hexEditButton->setEnabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
ramView->update();
|
ramView->update();
|
||||||
}
|
}
|
||||||
cycleCounter++;
|
cycleCounter++;
|
||||||
|
@ -1020,7 +1023,7 @@ static unsigned int ReadValueAtHardwareAddress(int address, unsigned int size)
|
||||||
if ( address < maxAddr )
|
if ( address < maxAddr )
|
||||||
{
|
{
|
||||||
value <<= 8;
|
value <<= 8;
|
||||||
value |= GetMem(address);
|
value |= lclMemBuf[address];
|
||||||
address++;
|
address++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1053,8 +1056,22 @@ void RamSearchDialog_t::runSearch(void)
|
||||||
undoButton->setEnabled( deactvFrameStack.size() > 0 );
|
undoButton->setEnabled( deactvFrameStack.size() > 0 );
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
void RamSearchDialog_t::copyRamToLocalBuffer(void)
|
||||||
|
{
|
||||||
|
for (unsigned int addr=0; addr<0x10000; addr++)
|
||||||
|
{
|
||||||
|
lclMemBuf[addr] = GetMem(addr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
void RamSearchDialog_t::resetSearch(void)
|
void RamSearchDialog_t::resetSearch(void)
|
||||||
{
|
{
|
||||||
|
memset( lclMemBuf, 0, sizeof(lclMemBuf));
|
||||||
|
|
||||||
|
fceuWrapperLock();
|
||||||
|
copyRamToLocalBuffer();
|
||||||
|
fceuWrapperUnLock();
|
||||||
|
|
||||||
actvSrchList.clear();
|
actvSrchList.clear();
|
||||||
deactvSrchList.clear();
|
deactvSrchList.clear();
|
||||||
deactvFrameStack.clear();
|
deactvFrameStack.clear();
|
||||||
|
@ -1063,7 +1080,7 @@ void RamSearchDialog_t::resetSearch(void)
|
||||||
{
|
{
|
||||||
memLoc[addr].hist.clear();
|
memLoc[addr].hist.clear();
|
||||||
memLoc[addr].addr = addr;
|
memLoc[addr].addr = addr;
|
||||||
memLoc[addr].val.v8.u = GetMem(addr);
|
memLoc[addr].val.v8.u = lclMemBuf[addr];
|
||||||
memLoc[addr].val.v16.u = ReadValueAtHardwareAddress(addr, 2);
|
memLoc[addr].val.v16.u = ReadValueAtHardwareAddress(addr, 2);
|
||||||
memLoc[addr].val.v32.u = ReadValueAtHardwareAddress(addr, 4);
|
memLoc[addr].val.v32.u = ReadValueAtHardwareAddress(addr, 4);
|
||||||
memLoc[addr].elimMask = 0;
|
memLoc[addr].elimMask = 0;
|
||||||
|
@ -1136,134 +1153,138 @@ void RamSearchDialog_t::clearChangeCounts(void)
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void RamSearchDialog_t::eliminateSelAddr(void)
|
void RamSearchDialog_t::eliminateSelAddr(void)
|
||||||
{
|
{
|
||||||
int elimCount = 0, op = '!';
|
int elimCount = 0, op = '!';
|
||||||
std::list <struct memoryLocation_t*>::iterator it;
|
std::list <struct memoryLocation_t*>::iterator it;
|
||||||
memoryLocation_t *loc = NULL;
|
memoryLocation_t *loc = NULL;
|
||||||
int64_t x = 0, y = 0, p = 0;
|
int64_t x = 0, y = 0, p = 0;
|
||||||
bool (*cmpFun)(int64_t x, int64_t y, int64_t p) = NULL;
|
bool (*cmpFun)(int64_t x, int64_t y, int64_t p) = NULL;
|
||||||
|
|
||||||
switch ( op )
|
switch ( op )
|
||||||
{
|
{
|
||||||
case '<':
|
case '<':
|
||||||
cmpFun = LessCmp;
|
cmpFun = LessCmp;
|
||||||
break;
|
break;
|
||||||
case '>':
|
case '>':
|
||||||
cmpFun = MoreCmp;
|
cmpFun = MoreCmp;
|
||||||
break;
|
break;
|
||||||
case '=':
|
case '=':
|
||||||
cmpFun = EqualCmp;
|
cmpFun = EqualCmp;
|
||||||
break;
|
break;
|
||||||
case '!':
|
case '!':
|
||||||
cmpFun = UnequalCmp;
|
cmpFun = UnequalCmp;
|
||||||
break;
|
break;
|
||||||
case 'l':
|
case 'l':
|
||||||
cmpFun = LessEqualCmp;
|
cmpFun = LessEqualCmp;
|
||||||
break;
|
break;
|
||||||
case 'm':
|
case 'm':
|
||||||
cmpFun = MoreEqualCmp;
|
cmpFun = MoreEqualCmp;
|
||||||
break;
|
break;
|
||||||
case 'd':
|
case 'd':
|
||||||
cmpFun = DiffByCmp;
|
cmpFun = DiffByCmp;
|
||||||
p = getLineEditValue( diffByEdit );
|
p = getLineEditValue( diffByEdit );
|
||||||
break;
|
break;
|
||||||
case '%':
|
case '%':
|
||||||
cmpFun = ModIsCmp;
|
cmpFun = ModIsCmp;
|
||||||
p = getLineEditValue( moduloEdit );
|
p = getLineEditValue( moduloEdit );
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
cmpFun = NULL;
|
cmpFun = NULL;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( cmpFun == NULL )
|
if ( cmpFun == NULL )
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
y = ramView->getSelAddr();
|
y = ramView->getSelAddr();
|
||||||
|
|
||||||
if ( y < 0 )
|
if ( y < 0 )
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("Performing Eliminate Address Operation %zi: 'x %c 0x%llx' '%lli' '0x%llx' \n", deactvFrameStack.size()+1, cmpOp,
|
printf("Performing Eliminate Address Operation %zi: 'x %c 0x%llx' '%lli' '0x%llx' \n", deactvFrameStack.size()+1, cmpOp,
|
||||||
(unsigned long long int)y, (long long int)p, (unsigned long long int)p );
|
(unsigned long long int)y, (long long int)p, (unsigned long long int)p );
|
||||||
|
|
||||||
it = actvSrchList.begin();
|
it = actvSrchList.begin();
|
||||||
|
|
||||||
while (it != actvSrchList.end())
|
while (it != actvSrchList.end())
|
||||||
{
|
{
|
||||||
loc = *it;
|
loc = *it;
|
||||||
|
|
||||||
x = loc->addr;
|
x = loc->addr;
|
||||||
|
|
||||||
if ( cmpFun( x, y, p ) == false )
|
if ( cmpFun( x, y, p ) == false )
|
||||||
{
|
{
|
||||||
//printf("Eliminated Address: $%04X\n", loc->addr );
|
//printf("Eliminated Address: $%04X\n", loc->addr );
|
||||||
it = actvSrchList.erase(it);
|
it = actvSrchList.erase(it);
|
||||||
|
|
||||||
deactvSrchList.push_back( loc ); elimCount++;
|
deactvSrchList.push_back( loc ); elimCount++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
loc->hist.push_back( loc->val );
|
loc->hist.push_back( loc->val );
|
||||||
it++;
|
it++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
deactvFrameStack.push_back( elimCount );
|
deactvFrameStack.push_back( elimCount );
|
||||||
|
|
||||||
vbar->setMaximum( actvSrchList.size() );
|
vbar->setMaximum( actvSrchList.size() );
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void RamSearchDialog_t::addCheatClicked(void)
|
void RamSearchDialog_t::addCheatClicked(void)
|
||||||
{
|
{
|
||||||
int addr = ramView->getSelAddr();
|
int addr = ramView->getSelAddr();
|
||||||
char desc[128];
|
char desc[128];
|
||||||
|
|
||||||
|
if ( addr < 0 )
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
strcpy( desc, "Quick Cheat Add");
|
||||||
|
|
||||||
if ( addr < 0 )
|
fceuWrapperLock();
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
strcpy( desc, "Quick Cheat Add");
|
|
||||||
|
|
||||||
FCEUI_AddCheat( desc, addr, GetMem(addr), -1, 1 );
|
FCEUI_AddCheat( desc, addr, GetMem(addr), -1, 1 );
|
||||||
|
|
||||||
updateCheatDialog();
|
updateCheatDialog();
|
||||||
|
|
||||||
|
fceuWrapperUnLock();
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void RamSearchDialog_t::addRamWatchClicked(void)
|
void RamSearchDialog_t::addRamWatchClicked(void)
|
||||||
{
|
{
|
||||||
int addr = ramView->getSelAddr();
|
int addr = ramView->getSelAddr();
|
||||||
char desc[128];
|
char desc[128];
|
||||||
|
|
||||||
if ( addr < 0 )
|
if ( addr < 0 )
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
strcpy( desc, "Quick Watch Add");
|
strcpy( desc, "Quick Watch Add");
|
||||||
|
|
||||||
int size = 1;
|
int size = 1;
|
||||||
switch (dpySize) {
|
switch (dpySize) {
|
||||||
case 'd': size = 4; break;
|
case 'd': size = 4; break;
|
||||||
case 'w': size = 2; break;
|
case 'w': size = 2; break;
|
||||||
case 'b': size = 1; break;
|
case 'b': size = 1; break;
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
ramWatchList.add_entry( desc, addr, dpyType, size, 0 );
|
ramWatchList.add_entry( desc, addr, dpyType, size, 0 );
|
||||||
|
|
||||||
openRamWatchWindow(consoleWindow);
|
openRamWatchWindow(consoleWindow);
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void RamSearchDialog_t::hexEditSelAddr(void)
|
void RamSearchDialog_t::hexEditSelAddr(void)
|
||||||
{
|
{
|
||||||
int addr = ramView->getSelAddr();
|
int addr = ramView->getSelAddr();
|
||||||
|
|
||||||
if ( addr < 0 )
|
if ( addr < 0 )
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
hexEditorOpenFromDebugger( QHexEdit::MODE_NES_RAM, addr );
|
hexEditorOpenFromDebugger( QHexEdit::MODE_NES_RAM, addr );
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void RamSearchDialog_t::opLtClicked(void)
|
void RamSearchDialog_t::opLtClicked(void)
|
||||||
|
@ -1324,30 +1345,30 @@ void RamSearchDialog_t::opMdClicked(void)
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void RamSearchDialog_t::pvBtnClicked(void)
|
void RamSearchDialog_t::pvBtnClicked(void)
|
||||||
{
|
{
|
||||||
specValEdit->setEnabled(false);
|
specValEdit->setEnabled(false);
|
||||||
specAddrEdit->setEnabled(false);
|
specAddrEdit->setEnabled(false);
|
||||||
numChangeEdit->setEnabled(false);
|
numChangeEdit->setEnabled(false);
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void RamSearchDialog_t::svBtnClicked(void)
|
void RamSearchDialog_t::svBtnClicked(void)
|
||||||
{
|
{
|
||||||
specValEdit->setEnabled(true);
|
specValEdit->setEnabled(true);
|
||||||
specAddrEdit->setEnabled(false);
|
specAddrEdit->setEnabled(false);
|
||||||
numChangeEdit->setEnabled(false);
|
numChangeEdit->setEnabled(false);
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void RamSearchDialog_t::saBtnClicked(void)
|
void RamSearchDialog_t::saBtnClicked(void)
|
||||||
{
|
{
|
||||||
specValEdit->setEnabled(false);
|
specValEdit->setEnabled(false);
|
||||||
specAddrEdit->setEnabled(true);
|
specAddrEdit->setEnabled(true);
|
||||||
numChangeEdit->setEnabled(false);
|
numChangeEdit->setEnabled(false);
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void RamSearchDialog_t::ncBtnClicked(void)
|
void RamSearchDialog_t::ncBtnClicked(void)
|
||||||
{
|
{
|
||||||
specValEdit->setEnabled(false);
|
specValEdit->setEnabled(false);
|
||||||
specAddrEdit->setEnabled(false);
|
specAddrEdit->setEnabled(false);
|
||||||
numChangeEdit->setEnabled(true);
|
numChangeEdit->setEnabled(true);
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void RamSearchDialog_t::ds1Clicked(void)
|
void RamSearchDialog_t::ds1Clicked(void)
|
||||||
|
@ -1459,7 +1480,7 @@ void RamSearchDialog_t::updateRamValues(void)
|
||||||
{
|
{
|
||||||
loc = *it;
|
loc = *it;
|
||||||
|
|
||||||
val.v8.u = GetMem(loc->addr);
|
val.v8.u = lclMemBuf[loc->addr];
|
||||||
val.v16.u = ReadValueAtHardwareAddress(loc->addr, 2);
|
val.v16.u = ReadValueAtHardwareAddress(loc->addr, 2);
|
||||||
val.v32.u = ReadValueAtHardwareAddress(loc->addr, 4);
|
val.v32.u = ReadValueAtHardwareAddress(loc->addr, 4);
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,7 @@ class QRamSearchView : public QWidget
|
||||||
void resizeEvent(QResizeEvent *event);
|
void resizeEvent(QResizeEvent *event);
|
||||||
void wheelEvent(QWheelEvent *event);
|
void wheelEvent(QWheelEvent *event);
|
||||||
|
|
||||||
int convPixToLine( QPoint p );
|
int convPixToLine( QPoint p );
|
||||||
void calcFontData(void);
|
void calcFontData(void);
|
||||||
|
|
||||||
QFont font;
|
QFont font;
|
||||||
|
@ -127,13 +127,14 @@ class RamSearchDialog_t : public QDialog
|
||||||
private:
|
private:
|
||||||
void updateRamValues(void);
|
void updateRamValues(void);
|
||||||
void calcRamList(void);
|
void calcRamList(void);
|
||||||
void SearchRelative(void);
|
void SearchRelative(void);
|
||||||
void SearchSpecificValue(void);
|
void SearchSpecificValue(void);
|
||||||
void SearchSpecificAddress(void);
|
void SearchSpecificAddress(void);
|
||||||
void SearchNumberChanges(void);
|
void SearchNumberChanges(void);
|
||||||
|
void copyRamToLocalBuffer(void);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void closeWindow(void);
|
void closeWindow(void);
|
||||||
private slots:
|
private slots:
|
||||||
void runSearch(void);
|
void runSearch(void);
|
||||||
void resetSearch(void);
|
void resetSearch(void);
|
||||||
|
|
Loading…
Reference in New Issue