Decouple the last part of step()

This commit is contained in:
Henrik Rydgård
2024-11-02 23:19:27 +01:00
parent 828523165f
commit c851be26eb
2 changed files with 4 additions and 3 deletions
+1 -1
View File
@@ -169,7 +169,7 @@ public:
void setCurAddress(u32 newAddress, bool extend = false)
{
newAddress = manager.getStartAddress(newAddress);
u32 after = manager.getNthNextAddress(newAddress,1);
const u32 after = manager.getNthNextAddress(newAddress,1);
curAddress = newAddress;
selectRangeStart = extend ? std::min(selectRangeStart, newAddress) : newAddress;
selectRangeEnd = extend ? std::max(selectRangeEnd, after) : after;
+3 -2
View File
@@ -208,14 +208,15 @@ void CDisasm::step(CPUStepType stepType)
ptr->setDontRedraw(true);
lastTicks_ = CoreTiming::GetTicks();
u32 oldAddress = cpu->GetPC();
u32 stepSize = ptr->getInstructionSizeAt(oldAddress);
u32 stepSize = ptr->getInstructionSizeAt(cpu->GetPC());
Core_PerformStep(cpu, stepType, stepSize);
Sleep(1);
// At this point, the step should be done, and the new address is just PC.
// Ideally, this part should be done as a reaction to an update message and not directly here.
// That way we could get rid of the sleep.
u32 oldAddress = ptr->getSelection();
u32 newAddress = cpu->GetPC();
if (newAddress > oldAddress && newAddress < oldAddress + 12) {
// Heuristic for when to scroll at the edge rather than jump the window.