diff --git a/Windows/Debugger/CtrlDisAsmView.h b/Windows/Debugger/CtrlDisAsmView.h index d58b999360..4bfd1c0fc9 100644 --- a/Windows/Debugger/CtrlDisAsmView.h +++ b/Windows/Debugger/CtrlDisAsmView.h @@ -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; diff --git a/Windows/Debugger/Debugger_Disasm.cpp b/Windows/Debugger/Debugger_Disasm.cpp index 8bc1aed8e9..878f62ca7a 100644 --- a/Windows/Debugger/Debugger_Disasm.cpp +++ b/Windows/Debugger/Debugger_Disasm.cpp @@ -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.