mirror of https://github.com/stella-emu/stella.git
increase maximum iterations and performance of RunToPC command
This commit is contained in:
parent
35a113b628
commit
ac41d12664
|
@ -293,9 +293,10 @@ void Debugger::loadAllStates()
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
int Debugger::step()
|
int Debugger::step(bool save)
|
||||||
{
|
{
|
||||||
saveOldState();
|
if(save)
|
||||||
|
saveOldState();
|
||||||
|
|
||||||
uInt64 startCycle = mySystem.cycles();
|
uInt64 startCycle = mySystem.cycles();
|
||||||
|
|
||||||
|
@ -303,7 +304,8 @@ int Debugger::step()
|
||||||
myOSystem.console().tia().updateScanlineByStep().flushLineCache();
|
myOSystem.console().tia().updateScanlineByStep().flushLineCache();
|
||||||
lockSystem();
|
lockSystem();
|
||||||
|
|
||||||
addState("step");
|
if(save)
|
||||||
|
addState("step");
|
||||||
return int(mySystem.cycles() - startCycle);
|
return int(mySystem.cycles() - startCycle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -306,7 +306,7 @@ class Debugger : public DialogContainer
|
||||||
*/
|
*/
|
||||||
void setQuitState();
|
void setQuitState();
|
||||||
|
|
||||||
int step();
|
int step(bool save = true);
|
||||||
int trace();
|
int trace();
|
||||||
void nextScanline(int lines);
|
void nextScanline(int lines);
|
||||||
void nextFrame(int frames);
|
void nextFrame(int frames);
|
||||||
|
|
|
@ -1744,7 +1744,7 @@ void DebuggerParser::executeRunTo()
|
||||||
|
|
||||||
bool done = false;
|
bool done = false;
|
||||||
do {
|
do {
|
||||||
debugger.step();
|
debugger.step(false);
|
||||||
|
|
||||||
// Update romlist to point to current PC
|
// Update romlist to point to current PC
|
||||||
int pcline = cartdbg.addressToLine(debugger.cpuDebug().pc());
|
int pcline = cartdbg.addressToLine(debugger.cpuDebug().pc());
|
||||||
|
@ -1778,22 +1778,32 @@ void DebuggerParser::executeRunToPc()
|
||||||
|
|
||||||
uInt32 count = 0;
|
uInt32 count = 0;
|
||||||
bool done = false;
|
bool done = false;
|
||||||
|
constexpr uInt32 max_iterations = 1000000;
|
||||||
|
// Create a progress dialog box to show the progress searching through the
|
||||||
|
// disassembly, since this may be a time-consuming operation
|
||||||
|
ostringstream buf;
|
||||||
|
buf << "RunTo PC searching through " << max_iterations << " instructions";
|
||||||
|
ProgressDialog progress(debugger.baseDialog(), debugger.lfont(), buf.str());
|
||||||
|
progress.setRange(0, max_iterations, 5);
|
||||||
|
|
||||||
do {
|
do {
|
||||||
debugger.step();
|
debugger.step(false);
|
||||||
|
|
||||||
// Update romlist to point to current PC
|
// Update romlist to point to current PC
|
||||||
int pcline = cartdbg.addressToLine(debugger.cpuDebug().pc());
|
int pcline = cartdbg.addressToLine(debugger.cpuDebug().pc());
|
||||||
done = (pcline >= 0) && (list[pcline].address == args[0]);
|
done = (pcline >= 0) && (list[pcline].address == args[0]);
|
||||||
} while(!done && ++count < list.size());
|
progress.setProgress(count);
|
||||||
|
} while(!done && ++count < max_iterations/*list.size()*/);
|
||||||
|
progress.close();
|
||||||
|
|
||||||
if(done)
|
if(done)
|
||||||
commandResult
|
commandResult
|
||||||
<< "set PC to " << Base::HEX4 << args[0] << " in "
|
<< "Set PC to $" << Base::HEX4 << args[0] << " in "
|
||||||
<< dec << count << " disassembled instructions";
|
<< dec << count << " instructions";
|
||||||
else
|
else
|
||||||
commandResult
|
commandResult
|
||||||
<< "PC " << Base::HEX4 << args[0] << " not reached or found in "
|
<< "PC $" << Base::HEX4 << args[0] << " not reached or found in "
|
||||||
<< dec << count << " disassembled instructions";
|
<< dec << count << " instructions";
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
|
@ -200,7 +200,8 @@ void RomWidget::runtoPC(int disasm_line)
|
||||||
{
|
{
|
||||||
ostringstream command;
|
ostringstream command;
|
||||||
command << "runtopc #" << list[disasm_line].address;
|
command << "runtopc #" << list[disasm_line].address;
|
||||||
instance().debugger().run(command.str());
|
string msg = instance().debugger().run(command.str());
|
||||||
|
instance().frameBuffer().showMessage(msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue