mirror of https://github.com/stella-emu/stella.git
replaced the highlighting fix with a much better one :)
This commit is contained in:
parent
7cb3c46704
commit
d13299b184
|
@ -307,7 +307,10 @@ bool CartDebug::disassemble(int bank, uInt16 PC, bool force)
|
||||||
}
|
}
|
||||||
// Otherwise, add the item at the end
|
// Otherwise, add the item at the end
|
||||||
if(i == addresses.end())
|
if(i == addresses.end())
|
||||||
|
{
|
||||||
addresses.push_back(PC);
|
addresses.push_back(PC);
|
||||||
|
addDirective(Device::AccessType::CODE, PC, PC, bank);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Always attempt to resolve code sections unless it's been
|
// Always attempt to resolve code sections unless it's been
|
||||||
|
@ -347,8 +350,8 @@ bool CartDebug::fillDisassemblyList(BankInfo& info, uInt16 search)
|
||||||
const DisassemblyTag& tag = myDisassembly.list[i];
|
const DisassemblyTag& tag = myDisassembly.list[i];
|
||||||
const uInt16 address = tag.address & 0xFFF;
|
const uInt16 address = tag.address & 0xFFF;
|
||||||
|
|
||||||
// Exclude 'Device::ROW'; they don't have a valid address
|
// Exclude 'Device::ROW|NONE'; they don't have a valid address
|
||||||
if(tag.type != Device::ROW)
|
if(tag.type != Device::ROW && tag.type != Device::NONE)
|
||||||
{
|
{
|
||||||
// Create a mapping from addresses to line numbers
|
// Create a mapping from addresses to line numbers
|
||||||
myAddrToLineList.emplace(address, i);
|
myAddrToLineList.emplace(address, i);
|
||||||
|
|
|
@ -76,26 +76,6 @@ void RomWidget::loadConfig()
|
||||||
// Update romlist to point to current PC (if it has changed)
|
// Update romlist to point to current PC (if it has changed)
|
||||||
int pcline = cart.addressToLine(dbg.cpuDebug().pc());
|
int pcline = cart.addressToLine(dbg.cpuDebug().pc());
|
||||||
|
|
||||||
if(pcline < 0)
|
|
||||||
{
|
|
||||||
// If tentative code detection is disabled, the code where PC points to is
|
|
||||||
// not disassembled the first time it is executed. Therefore the rom list
|
|
||||||
// highlight would never be updated!
|
|
||||||
// The following code tries to fix that and moves the highlight to the
|
|
||||||
// line following the last know dissassembled code.
|
|
||||||
const CpuState& oldCpuState = static_cast<const CpuState&>(dbg.cpuDebug().getOldState());
|
|
||||||
int oldPc = oldCpuState.PC;
|
|
||||||
|
|
||||||
if(dbg.cpuDebug().pc() > oldPc && dbg.cpuDebug().pc() - oldPc <= 3)
|
|
||||||
// we assume the code moved forward by one instruction
|
|
||||||
pcline = cart.addressToLine(oldPc);
|
|
||||||
else
|
|
||||||
// code jumped, try to find previous line
|
|
||||||
for(int i = 1; i <= 3 && pcline < 0; ++i)
|
|
||||||
pcline = cart.addressToLine(dbg.cpuDebug().pc() - i);
|
|
||||||
if(pcline >= 0)
|
|
||||||
pcline++;
|
|
||||||
}
|
|
||||||
if(pcline >= 0 && pcline != myRomList->getHighlighted())
|
if(pcline >= 0 && pcline != myRomList->getHighlighted())
|
||||||
myRomList->setHighlighted(pcline);
|
myRomList->setHighlighted(pcline);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue