Exemplo n.º 1
0
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();
}
Exemplo n.º 2
0
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();
	}
}
Exemplo n.º 3
0
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();
}