void DisassemblyDialog::setDebugMode(bool debugMode, bool switchPC) { bool running = r5900Debug.isAlive(); eeTab->Enable(running); iopTab->Enable(running); if (running) { if (currentCpu == NULL) { wxWindow* currentPage = middleBook->GetCurrentPage(); if (currentPage == eeTab) currentCpu = eeTab; else if (currentPage == iopTab) currentCpu = iopTab; if (currentCpu != NULL) currentCpu->update(); } if (debugMode) { CBreakPoints::ClearTemporaryBreakPoints(); breakRunButton->SetLabel(L"Run"); stepOverButton->Enable(true); stepIntoButton->Enable(true); stepOutButton->Enable(currentCpu == eeTab); if (switchPC || CBreakPoints::GetBreakpointTriggered()) gotoPc(); if (CBreakPoints::GetBreakpointTriggered()) { if (currentCpu != NULL) currentCpu->getDisassembly()->SetFocus(); CBreakPoints::SetBreakpointTriggered(false); } if (currentCpu != NULL) currentCpu->loadCycles(); } else { breakRunButton->SetLabel(L"Break"); stepIntoButton->Enable(false); stepOverButton->Enable(false); stepOutButton->Enable(false); } } else { breakRunButton->SetLabel(L"Run"); stepIntoButton->Enable(false); stepOverButton->Enable(false); stepOutButton->Enable(false); currentCpu = NULL; } update(); }
void DisassemblyDialog::onBreakRunClicked(wxCommandEvent& evt) { if (r5900Debug.isCpuPaused()) { // If the current PC is on a breakpoint, the user doesn't want to do nothing. CBreakPoints::SetSkipFirst(r5900Debug.getPC()); r5900Debug.resumeCpu(); } else { r5900Debug.pauseCpu(); gotoPc(); } }
void DisassemblyDialog::setDebugMode(bool debugMode, bool switchPC) { bool running = r5900Debug.isAlive(); eeTab->Enable(running); iopTab->Enable(running); if (running) { if (debugMode) { CBreakPoints::ClearTemporaryBreakPoints(); breakRunButton->SetLabel(L"Run"); stepOverButton->Enable(true); stepIntoButton->Enable(true); if (switchPC || CBreakPoints::GetBreakpointTriggered()) gotoPc(); if (CBreakPoints::GetBreakpointTriggered()) { if (currentCpu != NULL) currentCpu->getDisassembly()->SetFocus(); CBreakPoints::SetBreakpointTriggered(false); } } else { breakRunButton->SetLabel(L"Break"); stepIntoButton->Enable(false); stepOverButton->Enable(false); stepOutButton->Enable(false); } } update(); }