Debugger: Improved usability and added shortcuts/features
This commit is contained in:
parent
fd0aefd130
commit
4402be3c52
15 changed files with 456 additions and 105 deletions
|
@ -171,12 +171,13 @@ void Console::Stop(bool sendNotification)
|
||||||
|
|
||||||
void Console::Reset()
|
void Console::Reset()
|
||||||
{
|
{
|
||||||
Lock();
|
|
||||||
shared_ptr<Debugger> debugger = _debugger;
|
shared_ptr<Debugger> debugger = _debugger;
|
||||||
if(debugger) {
|
if(debugger) {
|
||||||
debugger->Run();
|
debugger->Run();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Lock();
|
||||||
|
|
||||||
_dmaController->Reset();
|
_dmaController->Reset();
|
||||||
_internalRegisters->Reset();
|
_internalRegisters->Reset();
|
||||||
_memoryManager->Reset();
|
_memoryManager->Reset();
|
||||||
|
@ -196,6 +197,11 @@ void Console::PowerCycle()
|
||||||
{
|
{
|
||||||
shared_ptr<BaseCartridge> cart = _cart;
|
shared_ptr<BaseCartridge> cart = _cart;
|
||||||
if(cart) {
|
if(cart) {
|
||||||
|
shared_ptr<Debugger> debugger = _debugger;
|
||||||
|
if(debugger) {
|
||||||
|
debugger->Run();
|
||||||
|
}
|
||||||
|
|
||||||
RomInfo info = cart->GetRomInfo();
|
RomInfo info = cart->GetRomInfo();
|
||||||
Lock();
|
Lock();
|
||||||
LoadRom(info.RomFile, info.PatchFile, false);
|
LoadRom(info.RomFile, info.PatchFile, false);
|
||||||
|
|
|
@ -203,10 +203,17 @@ uint32_t Disassembler::GetLineCount()
|
||||||
uint32_t Disassembler::GetLineIndex(uint32_t cpuAddress)
|
uint32_t Disassembler::GetLineIndex(uint32_t cpuAddress)
|
||||||
{
|
{
|
||||||
auto lock = _disassemblyLock.AcquireSafe();
|
auto lock = _disassemblyLock.AcquireSafe();
|
||||||
for(int i = 0; i < _disassembly.size(); i++) {
|
uint32_t lastAddress = 0;
|
||||||
if(_disassembly[i].CpuAddress == cpuAddress) {
|
for(int i = 1; i < _disassembly.size(); i++) {
|
||||||
return i;
|
if(_disassembly[i].CpuAddress < 0) {
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(cpuAddress >= lastAddress && cpuAddress < (uint32_t)_disassembly[i].CpuAddress) {
|
||||||
|
return i - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
lastAddress = _disassembly[i].CpuAddress;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
#include "BaseControlDevice.h"
|
#include "BaseControlDevice.h"
|
||||||
#include "Console.h"
|
#include "Console.h"
|
||||||
|
#include "Debugger.h"
|
||||||
|
|
||||||
class SystemActionManager : public BaseControlDevice
|
class SystemActionManager : public BaseControlDevice
|
||||||
{
|
{
|
||||||
|
@ -46,6 +47,11 @@ public:
|
||||||
bool Reset()
|
bool Reset()
|
||||||
{
|
{
|
||||||
if(!_needReset) {
|
if(!_needReset) {
|
||||||
|
shared_ptr<Debugger> debugger = _console->GetDebugger(false);
|
||||||
|
if(debugger) {
|
||||||
|
debugger->Run();
|
||||||
|
}
|
||||||
|
|
||||||
_needReset = true;
|
_needReset = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -55,6 +61,11 @@ public:
|
||||||
bool PowerCycle()
|
bool PowerCycle()
|
||||||
{
|
{
|
||||||
if(!_needPowerCycle) {
|
if(!_needPowerCycle) {
|
||||||
|
shared_ptr<Debugger> debugger = _console->GetDebugger(false);
|
||||||
|
if(debugger) {
|
||||||
|
debugger->Run();
|
||||||
|
}
|
||||||
|
|
||||||
_needPowerCycle = true;
|
_needPowerCycle = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,8 @@ namespace Mesen.GUI.Debugger.Controls
|
||||||
{
|
{
|
||||||
public partial class ctrlBreakpoints : BaseControl
|
public partial class ctrlBreakpoints : BaseControl
|
||||||
{
|
{
|
||||||
public event EventHandler BreakpointNavigation;
|
public delegate void BreakpointNavigationHandler(Breakpoint bp);
|
||||||
|
public event BreakpointNavigationHandler BreakpointNavigation;
|
||||||
private Font _markedColumnFont;
|
private Font _markedColumnFont;
|
||||||
|
|
||||||
public ctrlBreakpoints()
|
public ctrlBreakpoints()
|
||||||
|
@ -125,7 +126,7 @@ namespace Mesen.GUI.Debugger.Controls
|
||||||
if(BreakpointNavigation != null) {
|
if(BreakpointNavigation != null) {
|
||||||
Breakpoint bp = lstBreakpoints.SelectedItems[0].Tag as Breakpoint;
|
Breakpoint bp = lstBreakpoints.SelectedItems[0].Tag as Breakpoint;
|
||||||
if(bp.IsCpuBreakpoint && bp.GetRelativeAddress() >= 0) {
|
if(bp.IsCpuBreakpoint && bp.GetRelativeAddress() >= 0) {
|
||||||
BreakpointNavigation(bp, null);
|
BreakpointNavigation(bp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -99,6 +99,7 @@
|
||||||
//
|
//
|
||||||
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
|
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
|
||||||
this.toolStripMenuItem2.Size = new System.Drawing.Size(146, 6);
|
this.toolStripMenuItem2.Size = new System.Drawing.Size(146, 6);
|
||||||
|
this.toolStripMenuItem2.Visible = false;
|
||||||
//
|
//
|
||||||
// mnuShowLabels
|
// mnuShowLabels
|
||||||
//
|
//
|
||||||
|
@ -106,6 +107,7 @@
|
||||||
this.mnuShowLabels.Name = "mnuShowLabels";
|
this.mnuShowLabels.Name = "mnuShowLabels";
|
||||||
this.mnuShowLabels.Size = new System.Drawing.Size(149, 22);
|
this.mnuShowLabels.Size = new System.Drawing.Size(149, 22);
|
||||||
this.mnuShowLabels.Text = "Show Labels";
|
this.mnuShowLabels.Text = "Show Labels";
|
||||||
|
this.mnuShowLabels.Visible = false;
|
||||||
//
|
//
|
||||||
// lstBreakpoints
|
// lstBreakpoints
|
||||||
//
|
//
|
||||||
|
|
|
@ -28,5 +28,16 @@ namespace Mesen.GUI.Debugger.Code
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void EnableDisableBreakpoint(int lineIndex)
|
||||||
|
{
|
||||||
|
int address = this._provider.GetLineAddress(lineIndex);
|
||||||
|
if(address >= 0) {
|
||||||
|
BreakpointManager.EnableDisableBreakpoint(new AddressInfo() {
|
||||||
|
Address = address,
|
||||||
|
Type = SnesMemoryType.CpuMemory
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,5 +13,6 @@ namespace Mesen.GUI.Debugger.Code
|
||||||
|
|
||||||
void RefreshCode();
|
void RefreshCode();
|
||||||
void ToggleBreakpoint(int lineIndex);
|
void ToggleBreakpoint(int lineIndex);
|
||||||
|
void EnableDisableBreakpoint(int lineIndex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,12 +91,36 @@ namespace Mesen.GUI.Debugger.Controls
|
||||||
ctrlCode.ScrollToLineIndex(lineIndex, eHistoryType.None, false, true);
|
ctrlCode.ScrollToLineIndex(lineIndex, eHistoryType.None, false, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void mnuToggleBreakpoint_Click(object sender, EventArgs e)
|
public ctrlScrollableTextbox CodeViewer { get { return ctrlCode; } }
|
||||||
|
|
||||||
|
public void GoToAddress(int address)
|
||||||
|
{
|
||||||
|
ctrlCode.ScrollToAddress(address);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void GoToActiveAddress()
|
||||||
|
{
|
||||||
|
if(_styleProvider.ActiveAddress.HasValue) {
|
||||||
|
ctrlCode.ScrollToAddress(_styleProvider.ActiveAddress.Value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ToggleBreakpoint()
|
||||||
{
|
{
|
||||||
_manager.ToggleBreakpoint(ctrlCode.SelectedLine);
|
_manager.ToggleBreakpoint(ctrlCode.SelectedLine);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void EnableDisableBreakpoint()
|
||||||
|
{
|
||||||
|
_manager.EnableDisableBreakpoint(ctrlCode.SelectedLine);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void mnuToggleBreakpoint_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
ToggleBreakpoint();
|
||||||
|
}
|
||||||
|
|
||||||
private void ctrlCode_MouseDown(object sender, MouseEventArgs e)
|
private void ctrlCode_MouseDown(object sender, MouseEventArgs e)
|
||||||
{
|
{
|
||||||
if(e.X < 20) {
|
if(e.X < 20) {
|
||||||
|
|
|
@ -61,6 +61,11 @@ namespace Mesen.GUI.Debugger
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case ConsoleNotificationType.GameLoaded:
|
||||||
|
//Configuration is lost when debugger is restarted (when switching game or power cycling)
|
||||||
|
ctrlScanlineCycleSelect.RefreshSettings();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -77,6 +77,11 @@ namespace Mesen.GUI.Debugger
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case ConsoleNotificationType.GameLoaded:
|
||||||
|
//Configuration is lost when debugger is restarted (when switching game or power cycling)
|
||||||
|
ctrlScanlineCycleSelect.RefreshSettings();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -83,6 +83,11 @@ namespace Mesen.GUI.Debugger
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case ConsoleNotificationType.GameLoaded:
|
||||||
|
//Configuration is lost when debugger is restarted (when switching game or power cycling)
|
||||||
|
ctrlScanlineCycleSelect.RefreshSettings();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,32 +35,32 @@ namespace Mesen.GUI.Debugger
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.Paste)),
|
GetMember(nameof(DebuggerShortcutsConfig.Paste)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.SelectAll)),
|
GetMember(nameof(DebuggerShortcutsConfig.SelectAll)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.Refresh)),
|
GetMember(nameof(DebuggerShortcutsConfig.Refresh)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.MarkAsCode)),
|
//GetMember(nameof(DebuggerShortcutsConfig.MarkAsCode)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.MarkAsData)),
|
//GetMember(nameof(DebuggerShortcutsConfig.MarkAsData)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.MarkAsUnidentified)),
|
//GetMember(nameof(DebuggerShortcutsConfig.MarkAsUnidentified)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.GoToAll)),
|
//GetMember(nameof(DebuggerShortcutsConfig.GoToAll)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.CodeWindow_EditInMemoryViewer)),
|
GetMember(nameof(DebuggerShortcutsConfig.CodeWindow_EditInMemoryViewer)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.MemoryViewer_ViewInDisassembly)),
|
GetMember(nameof(DebuggerShortcutsConfig.MemoryViewer_ViewInDisassembly)),
|
||||||
|
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.OpenApuViewer)),
|
//GetMember(nameof(DebuggerShortcutsConfig.OpenApuViewer)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.OpenAssembler)),
|
//GetMember(nameof(DebuggerShortcutsConfig.OpenAssembler)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.OpenDebugger)),
|
GetMember(nameof(DebuggerShortcutsConfig.OpenDebugger)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.OpenEventViewer)),
|
GetMember(nameof(DebuggerShortcutsConfig.OpenEventViewer)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.OpenMemoryTools)),
|
GetMember(nameof(DebuggerShortcutsConfig.OpenMemoryTools)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.OpenProfiler)),
|
//GetMember(nameof(DebuggerShortcutsConfig.OpenProfiler)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.OpenScriptWindow)),
|
//GetMember(nameof(DebuggerShortcutsConfig.OpenScriptWindow)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.OpenTextHooker)),
|
//GetMember(nameof(DebuggerShortcutsConfig.OpenTextHooker)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.OpenTraceLogger)),
|
GetMember(nameof(DebuggerShortcutsConfig.OpenTraceLogger)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.OpenWatchWindow)),
|
//GetMember(nameof(DebuggerShortcutsConfig.OpenWatchWindow)),
|
||||||
|
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.OpenTilemapViewer)),
|
GetMember(nameof(DebuggerShortcutsConfig.OpenTilemapViewer)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.OpenTileViewer)),
|
GetMember(nameof(DebuggerShortcutsConfig.OpenTileViewer)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.OpenSpriteViewer)),
|
//GetMember(nameof(DebuggerShortcutsConfig.OpenSpriteViewer)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.OpenPaletteViewer)),
|
GetMember(nameof(DebuggerShortcutsConfig.OpenPaletteViewer)),
|
||||||
};
|
};
|
||||||
|
|
||||||
ctrlDbgShortcutsMemoryViewer.Shortcuts = new FieldInfo[] {
|
ctrlDbgShortcutsMemoryViewer.Shortcuts = new FieldInfo[] {
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.MemoryViewer_Freeze)),
|
/*GetMember(nameof(DebuggerShortcutsConfig.MemoryViewer_Freeze)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.MemoryViewer_Unfreeze)),
|
GetMember(nameof(DebuggerShortcutsConfig.MemoryViewer_Unfreeze)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.MemoryViewer_AddToWatch)),
|
GetMember(nameof(DebuggerShortcutsConfig.MemoryViewer_AddToWatch)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.MemoryViewer_EditBreakpoint)),
|
GetMember(nameof(DebuggerShortcutsConfig.MemoryViewer_EditBreakpoint)),
|
||||||
|
@ -68,15 +68,15 @@ namespace Mesen.GUI.Debugger
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.MemoryViewer_Import)),
|
GetMember(nameof(DebuggerShortcutsConfig.MemoryViewer_Import)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.MemoryViewer_Export)),
|
GetMember(nameof(DebuggerShortcutsConfig.MemoryViewer_Export)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.MemoryViewer_ViewInCpuMemory)),
|
GetMember(nameof(DebuggerShortcutsConfig.MemoryViewer_ViewInCpuMemory)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.MemoryViewer_ViewInMemoryType))
|
GetMember(nameof(DebuggerShortcutsConfig.MemoryViewer_ViewInMemoryType))*/
|
||||||
};
|
};
|
||||||
|
|
||||||
ctrlDbgShortcutsScriptWindow.Shortcuts = new FieldInfo[] {
|
/*ctrlDbgShortcutsScriptWindow.Shortcuts = new FieldInfo[] {
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.ScriptWindow_OpenScript)),
|
GetMember(nameof(DebuggerShortcutsConfig.ScriptWindow_OpenScript)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.ScriptWindow_SaveScript)),
|
GetMember(nameof(DebuggerShortcutsConfig.ScriptWindow_SaveScript)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.ScriptWindow_RunScript)),
|
GetMember(nameof(DebuggerShortcutsConfig.ScriptWindow_RunScript)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.ScriptWindow_StopScript))
|
GetMember(nameof(DebuggerShortcutsConfig.ScriptWindow_StopScript))
|
||||||
};
|
};*/
|
||||||
|
|
||||||
ctrlDbgShortcutsDebugger.Shortcuts = new FieldInfo[] {
|
ctrlDbgShortcutsDebugger.Shortcuts = new FieldInfo[] {
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.Reset)),
|
GetMember(nameof(DebuggerShortcutsConfig.Reset)),
|
||||||
|
@ -87,35 +87,35 @@ namespace Mesen.GUI.Debugger
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.StepInto)),
|
GetMember(nameof(DebuggerShortcutsConfig.StepInto)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.StepOver)),
|
GetMember(nameof(DebuggerShortcutsConfig.StepOver)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.StepOut)),
|
GetMember(nameof(DebuggerShortcutsConfig.StepOut)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.StepBack)),
|
//GetMember(nameof(DebuggerShortcutsConfig.StepBack)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.RunPpuCycle)),
|
GetMember(nameof(DebuggerShortcutsConfig.RunPpuCycle)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.RunPpuScanline)),
|
GetMember(nameof(DebuggerShortcutsConfig.RunPpuScanline)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.RunPpuFrame)),
|
GetMember(nameof(DebuggerShortcutsConfig.RunPpuFrame)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.BreakIn)),
|
//GetMember(nameof(DebuggerShortcutsConfig.BreakIn)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.BreakOn)),
|
//GetMember(nameof(DebuggerShortcutsConfig.BreakOn)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.FindOccurrences)),
|
//GetMember(nameof(DebuggerShortcutsConfig.FindOccurrences)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.GoToProgramCounter)),
|
GetMember(nameof(DebuggerShortcutsConfig.GoToProgramCounter)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.CodeWindow_SetNextStatement)),
|
//GetMember(nameof(DebuggerShortcutsConfig.CodeWindow_SetNextStatement)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.CodeWindow_EditSubroutine)),
|
//GetMember(nameof(DebuggerShortcutsConfig.CodeWindow_EditSubroutine)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.CodeWindow_EditSelectedCode)),
|
//GetMember(nameof(DebuggerShortcutsConfig.CodeWindow_EditSelectedCode)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.CodeWindow_EditSourceFile)),
|
//GetMember(nameof(DebuggerShortcutsConfig.CodeWindow_EditSourceFile)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.CodeWindow_EditLabel)),
|
//GetMember(nameof(DebuggerShortcutsConfig.CodeWindow_EditLabel)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.CodeWindow_NavigateBack)),
|
//GetMember(nameof(DebuggerShortcutsConfig.CodeWindow_NavigateBack)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.CodeWindow_NavigateForward)),
|
//GetMember(nameof(DebuggerShortcutsConfig.CodeWindow_NavigateForward)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.CodeWindow_ToggleBreakpoint)),
|
GetMember(nameof(DebuggerShortcutsConfig.CodeWindow_ToggleBreakpoint)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.CodeWindow_DisableEnableBreakpoint)),
|
GetMember(nameof(DebuggerShortcutsConfig.CodeWindow_DisableEnableBreakpoint)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.CodeWindow_SwitchView)),
|
//GetMember(nameof(DebuggerShortcutsConfig.CodeWindow_SwitchView)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.FunctionList_EditLabel)),
|
//GetMember(nameof(DebuggerShortcutsConfig.FunctionList_EditLabel)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.FunctionList_AddBreakpoint)),
|
//GetMember(nameof(DebuggerShortcutsConfig.FunctionList_AddBreakpoint)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.FunctionList_FindOccurrences)),
|
//GetMember(nameof(DebuggerShortcutsConfig.FunctionList_FindOccurrences)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.LabelList_Add)),
|
//GetMember(nameof(DebuggerShortcutsConfig.LabelList_Add)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.LabelList_Edit)),
|
//GetMember(nameof(DebuggerShortcutsConfig.LabelList_Edit)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.LabelList_Delete)),
|
//GetMember(nameof(DebuggerShortcutsConfig.LabelList_Delete)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.LabelList_AddBreakpoint)),
|
//GetMember(nameof(DebuggerShortcutsConfig.LabelList_AddBreakpoint)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.LabelList_AddToWatch)),
|
//GetMember(nameof(DebuggerShortcutsConfig.LabelList_AddToWatch)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.LabelList_FindOccurrences)),
|
//GetMember(nameof(DebuggerShortcutsConfig.LabelList_FindOccurrences)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.LabelList_ViewInCpuMemory)),
|
//GetMember(nameof(DebuggerShortcutsConfig.LabelList_ViewInCpuMemory)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.LabelList_ViewInMemoryType)),
|
//GetMember(nameof(DebuggerShortcutsConfig.LabelList_ViewInMemoryType)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.BreakpointList_Add)),
|
GetMember(nameof(DebuggerShortcutsConfig.BreakpointList_Add)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.BreakpointList_Edit)),
|
GetMember(nameof(DebuggerShortcutsConfig.BreakpointList_Edit)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.BreakpointList_GoToLocation)),
|
GetMember(nameof(DebuggerShortcutsConfig.BreakpointList_GoToLocation)),
|
||||||
|
@ -123,12 +123,12 @@ namespace Mesen.GUI.Debugger
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.WatchList_Delete)),
|
GetMember(nameof(DebuggerShortcutsConfig.WatchList_Delete)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.WatchList_MoveUp)),
|
GetMember(nameof(DebuggerShortcutsConfig.WatchList_MoveUp)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.WatchList_MoveDown)),
|
GetMember(nameof(DebuggerShortcutsConfig.WatchList_MoveDown)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.SaveRom)),
|
//GetMember(nameof(DebuggerShortcutsConfig.SaveRom)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.SaveRomAs)),
|
//GetMember(nameof(DebuggerShortcutsConfig.SaveRomAs)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.SaveEditAsIps)),
|
//GetMember(nameof(DebuggerShortcutsConfig.SaveEditAsIps)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.RevertPrgChrChanges)),
|
//GetMember(nameof(DebuggerShortcutsConfig.RevertPrgChrChanges)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.ToggleVerifiedData)),
|
//GetMember(nameof(DebuggerShortcutsConfig.ToggleVerifiedData)),
|
||||||
GetMember(nameof(DebuggerShortcutsConfig.ToggleUnidentifiedCodeData))
|
//GetMember(nameof(DebuggerShortcutsConfig.ToggleUnidentifiedCodeData))
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
250
UI/Debugger/frmDebugger.Designer.cs
generated
250
UI/Debugger/frmDebugger.Designer.cs
generated
|
@ -46,16 +46,32 @@
|
||||||
this.mnuPowerCycle = new System.Windows.Forms.ToolStripMenuItem();
|
this.mnuPowerCycle = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.toolStripMenuItem24 = new System.Windows.Forms.ToolStripSeparator();
|
this.toolStripMenuItem24 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
this.mnuToggleBreakpoint = new System.Windows.Forms.ToolStripMenuItem();
|
this.mnuToggleBreakpoint = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.mnuDisableEnableBreakpoint = new System.Windows.Forms.ToolStripMenuItem();
|
this.mnuEnableDisableBreakpoint = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator();
|
this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
this.mnuRunCpuCycle = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.mnuRun1000Instructions = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.mnuRunPpuCycle = new System.Windows.Forms.ToolStripMenuItem();
|
this.mnuRunPpuCycle = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.mnuRunScanline = new System.Windows.Forms.ToolStripMenuItem();
|
this.mnuRunScanline = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.mnuRunOneFrame = new System.Windows.Forms.ToolStripMenuItem();
|
this.mnuRunOneFrame = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.toolStripMenuItem8 = new System.Windows.Forms.ToolStripSeparator();
|
this.toolStripMenuItem8 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
this.mnuBreakIn = new System.Windows.Forms.ToolStripMenuItem();
|
this.mnuBreakIn = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.mnuBreakOn = new System.Windows.Forms.ToolStripMenuItem();
|
this.mnuBreakOn = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.searchToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.mnuFind = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.mnuFindNext = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.mnuFindPrev = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.toolStripMenuItem9 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
|
this.mnuFindAllOccurrences = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.mnuGoTo = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.mnuGoToAddress = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.toolStripMenuItem23 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
|
this.mnuGoToProgramCounter = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.toolStripMenuItem22 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
|
this.mnuGoToResetHandler = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.mnuGoToIrqHandler = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.mnuGoToNmiHandler = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.mnuGoToBrkHandler = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.mnuGoToCopHandler = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.optionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.mnuPreferences = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.ctrlSplitContainer = new Mesen.GUI.Controls.ctrlSplitContainer();
|
this.ctrlSplitContainer = new Mesen.GUI.Controls.ctrlSplitContainer();
|
||||||
this.ctrlStatus = new Mesen.GUI.Debugger.Controls.ctrlConsoleStatus();
|
this.ctrlStatus = new Mesen.GUI.Debugger.Controls.ctrlConsoleStatus();
|
||||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||||
|
@ -88,7 +104,9 @@
|
||||||
// ctrlMesenMenuStrip1
|
// ctrlMesenMenuStrip1
|
||||||
//
|
//
|
||||||
this.ctrlMesenMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.ctrlMesenMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
this.debugToolStripMenuItem});
|
this.debugToolStripMenuItem,
|
||||||
|
this.searchToolStripMenuItem,
|
||||||
|
this.optionsToolStripMenuItem});
|
||||||
this.ctrlMesenMenuStrip1.Location = new System.Drawing.Point(0, 0);
|
this.ctrlMesenMenuStrip1.Location = new System.Drawing.Point(0, 0);
|
||||||
this.ctrlMesenMenuStrip1.Name = "ctrlMesenMenuStrip1";
|
this.ctrlMesenMenuStrip1.Name = "ctrlMesenMenuStrip1";
|
||||||
this.ctrlMesenMenuStrip1.Size = new System.Drawing.Size(832, 24);
|
this.ctrlMesenMenuStrip1.Size = new System.Drawing.Size(832, 24);
|
||||||
|
@ -110,10 +128,8 @@
|
||||||
this.mnuPowerCycle,
|
this.mnuPowerCycle,
|
||||||
this.toolStripMenuItem24,
|
this.toolStripMenuItem24,
|
||||||
this.mnuToggleBreakpoint,
|
this.mnuToggleBreakpoint,
|
||||||
this.mnuDisableEnableBreakpoint,
|
this.mnuEnableDisableBreakpoint,
|
||||||
this.toolStripMenuItem2,
|
this.toolStripMenuItem2,
|
||||||
this.mnuRunCpuCycle,
|
|
||||||
this.mnuRun1000Instructions,
|
|
||||||
this.mnuRunPpuCycle,
|
this.mnuRunPpuCycle,
|
||||||
this.mnuRunScanline,
|
this.mnuRunScanline,
|
||||||
this.mnuRunOneFrame,
|
this.mnuRunOneFrame,
|
||||||
|
@ -128,7 +144,7 @@
|
||||||
//
|
//
|
||||||
this.mnuContinue.Image = global::Mesen.GUI.Properties.Resources.MediaPlay;
|
this.mnuContinue.Image = global::Mesen.GUI.Properties.Resources.MediaPlay;
|
||||||
this.mnuContinue.Name = "mnuContinue";
|
this.mnuContinue.Name = "mnuContinue";
|
||||||
this.mnuContinue.Size = new System.Drawing.Size(213, 22);
|
this.mnuContinue.Size = new System.Drawing.Size(212, 22);
|
||||||
this.mnuContinue.Text = "Continue";
|
this.mnuContinue.Text = "Continue";
|
||||||
//
|
//
|
||||||
// mnuBreak
|
// mnuBreak
|
||||||
|
@ -137,135 +153,258 @@
|
||||||
this.mnuBreak.Image = global::Mesen.GUI.Properties.Resources.MediaPause;
|
this.mnuBreak.Image = global::Mesen.GUI.Properties.Resources.MediaPause;
|
||||||
this.mnuBreak.Name = "mnuBreak";
|
this.mnuBreak.Name = "mnuBreak";
|
||||||
this.mnuBreak.ShortcutKeyDisplayString = "";
|
this.mnuBreak.ShortcutKeyDisplayString = "";
|
||||||
this.mnuBreak.Size = new System.Drawing.Size(213, 22);
|
this.mnuBreak.Size = new System.Drawing.Size(212, 22);
|
||||||
this.mnuBreak.Text = "Break";
|
this.mnuBreak.Text = "Break";
|
||||||
//
|
//
|
||||||
// toolStripMenuItem3
|
// toolStripMenuItem3
|
||||||
//
|
//
|
||||||
this.toolStripMenuItem3.Name = "toolStripMenuItem3";
|
this.toolStripMenuItem3.Name = "toolStripMenuItem3";
|
||||||
this.toolStripMenuItem3.Size = new System.Drawing.Size(210, 6);
|
this.toolStripMenuItem3.Size = new System.Drawing.Size(209, 6);
|
||||||
//
|
//
|
||||||
// mnuStepInto
|
// mnuStepInto
|
||||||
//
|
//
|
||||||
this.mnuStepInto.Image = global::Mesen.GUI.Properties.Resources.StepInto;
|
this.mnuStepInto.Image = global::Mesen.GUI.Properties.Resources.StepInto;
|
||||||
this.mnuStepInto.Name = "mnuStepInto";
|
this.mnuStepInto.Name = "mnuStepInto";
|
||||||
this.mnuStepInto.Size = new System.Drawing.Size(213, 22);
|
this.mnuStepInto.Size = new System.Drawing.Size(212, 22);
|
||||||
this.mnuStepInto.Text = "Step Into";
|
this.mnuStepInto.Text = "Step Into";
|
||||||
//
|
//
|
||||||
// mnuStepOver
|
// mnuStepOver
|
||||||
//
|
//
|
||||||
this.mnuStepOver.Image = global::Mesen.GUI.Properties.Resources.StepOver;
|
this.mnuStepOver.Image = global::Mesen.GUI.Properties.Resources.StepOver;
|
||||||
this.mnuStepOver.Name = "mnuStepOver";
|
this.mnuStepOver.Name = "mnuStepOver";
|
||||||
this.mnuStepOver.Size = new System.Drawing.Size(213, 22);
|
this.mnuStepOver.Size = new System.Drawing.Size(212, 22);
|
||||||
this.mnuStepOver.Text = "Step Over";
|
this.mnuStepOver.Text = "Step Over";
|
||||||
//
|
//
|
||||||
// mnuStepOut
|
// mnuStepOut
|
||||||
//
|
//
|
||||||
this.mnuStepOut.Image = global::Mesen.GUI.Properties.Resources.StepOut;
|
this.mnuStepOut.Image = global::Mesen.GUI.Properties.Resources.StepOut;
|
||||||
this.mnuStepOut.Name = "mnuStepOut";
|
this.mnuStepOut.Name = "mnuStepOut";
|
||||||
this.mnuStepOut.Size = new System.Drawing.Size(213, 22);
|
this.mnuStepOut.Size = new System.Drawing.Size(212, 22);
|
||||||
this.mnuStepOut.Text = "Step Out";
|
this.mnuStepOut.Text = "Step Out";
|
||||||
//
|
//
|
||||||
// mnuStepBack
|
// mnuStepBack
|
||||||
//
|
//
|
||||||
this.mnuStepBack.Image = global::Mesen.GUI.Properties.Resources.StepBack;
|
this.mnuStepBack.Image = global::Mesen.GUI.Properties.Resources.StepBack;
|
||||||
this.mnuStepBack.Name = "mnuStepBack";
|
this.mnuStepBack.Name = "mnuStepBack";
|
||||||
this.mnuStepBack.Size = new System.Drawing.Size(213, 22);
|
this.mnuStepBack.Size = new System.Drawing.Size(212, 22);
|
||||||
this.mnuStepBack.Text = "Step Back";
|
this.mnuStepBack.Text = "Step Back";
|
||||||
|
this.mnuStepBack.Visible = false;
|
||||||
//
|
//
|
||||||
// toolStripMenuItem1
|
// toolStripMenuItem1
|
||||||
//
|
//
|
||||||
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
|
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
|
||||||
this.toolStripMenuItem1.Size = new System.Drawing.Size(210, 6);
|
this.toolStripMenuItem1.Size = new System.Drawing.Size(209, 6);
|
||||||
//
|
//
|
||||||
// mnuReset
|
// mnuReset
|
||||||
//
|
//
|
||||||
this.mnuReset.Image = global::Mesen.GUI.Properties.Resources.Refresh;
|
this.mnuReset.Image = global::Mesen.GUI.Properties.Resources.Refresh;
|
||||||
this.mnuReset.Name = "mnuReset";
|
this.mnuReset.Name = "mnuReset";
|
||||||
this.mnuReset.Size = new System.Drawing.Size(213, 22);
|
this.mnuReset.Size = new System.Drawing.Size(212, 22);
|
||||||
this.mnuReset.Text = "Reset";
|
this.mnuReset.Text = "Reset";
|
||||||
//
|
//
|
||||||
// mnuPowerCycle
|
// mnuPowerCycle
|
||||||
//
|
//
|
||||||
this.mnuPowerCycle.Image = global::Mesen.GUI.Properties.Resources.PowerCycle;
|
this.mnuPowerCycle.Image = global::Mesen.GUI.Properties.Resources.PowerCycle;
|
||||||
this.mnuPowerCycle.Name = "mnuPowerCycle";
|
this.mnuPowerCycle.Name = "mnuPowerCycle";
|
||||||
this.mnuPowerCycle.Size = new System.Drawing.Size(213, 22);
|
this.mnuPowerCycle.Size = new System.Drawing.Size(212, 22);
|
||||||
this.mnuPowerCycle.Text = "Power Cycle";
|
this.mnuPowerCycle.Text = "Power Cycle";
|
||||||
//
|
//
|
||||||
// toolStripMenuItem24
|
// toolStripMenuItem24
|
||||||
//
|
//
|
||||||
this.toolStripMenuItem24.Name = "toolStripMenuItem24";
|
this.toolStripMenuItem24.Name = "toolStripMenuItem24";
|
||||||
this.toolStripMenuItem24.Size = new System.Drawing.Size(210, 6);
|
this.toolStripMenuItem24.Size = new System.Drawing.Size(209, 6);
|
||||||
//
|
//
|
||||||
// mnuToggleBreakpoint
|
// mnuToggleBreakpoint
|
||||||
//
|
//
|
||||||
this.mnuToggleBreakpoint.Image = global::Mesen.GUI.Properties.Resources.Breakpoint;
|
this.mnuToggleBreakpoint.Image = global::Mesen.GUI.Properties.Resources.Breakpoint;
|
||||||
this.mnuToggleBreakpoint.Name = "mnuToggleBreakpoint";
|
this.mnuToggleBreakpoint.Name = "mnuToggleBreakpoint";
|
||||||
this.mnuToggleBreakpoint.Size = new System.Drawing.Size(213, 22);
|
this.mnuToggleBreakpoint.Size = new System.Drawing.Size(212, 22);
|
||||||
this.mnuToggleBreakpoint.Text = "Toggle Breakpoint";
|
this.mnuToggleBreakpoint.Text = "Toggle Breakpoint";
|
||||||
//
|
//
|
||||||
// mnuDisableEnableBreakpoint
|
// mnuEnableDisableBreakpoint
|
||||||
//
|
//
|
||||||
this.mnuDisableEnableBreakpoint.Image = global::Mesen.GUI.Properties.Resources.BreakpointDisabled;
|
this.mnuEnableDisableBreakpoint.Image = global::Mesen.GUI.Properties.Resources.BreakpointDisabled;
|
||||||
this.mnuDisableEnableBreakpoint.Name = "mnuDisableEnableBreakpoint";
|
this.mnuEnableDisableBreakpoint.Name = "mnuEnableDisableBreakpoint";
|
||||||
this.mnuDisableEnableBreakpoint.Size = new System.Drawing.Size(213, 22);
|
this.mnuEnableDisableBreakpoint.Size = new System.Drawing.Size(212, 22);
|
||||||
this.mnuDisableEnableBreakpoint.Text = "Disable/Enable Breakpoint";
|
this.mnuEnableDisableBreakpoint.Text = "Disable/Enable Breakpoint";
|
||||||
//
|
//
|
||||||
// toolStripMenuItem2
|
// toolStripMenuItem2
|
||||||
//
|
//
|
||||||
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
|
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
|
||||||
this.toolStripMenuItem2.Size = new System.Drawing.Size(210, 6);
|
this.toolStripMenuItem2.Size = new System.Drawing.Size(209, 6);
|
||||||
//
|
|
||||||
// mnuRunCpuCycle
|
|
||||||
//
|
|
||||||
this.mnuRunCpuCycle.Image = global::Mesen.GUI.Properties.Resources.JumpTarget;
|
|
||||||
this.mnuRunCpuCycle.Name = "mnuRunCpuCycle";
|
|
||||||
this.mnuRunCpuCycle.Size = new System.Drawing.Size(213, 22);
|
|
||||||
this.mnuRunCpuCycle.Text = "Run one CPU cycle";
|
|
||||||
//
|
|
||||||
// mnuRun1000Instructions
|
|
||||||
//
|
|
||||||
this.mnuRun1000Instructions.Name = "mnuRun1000Instructions";
|
|
||||||
this.mnuRun1000Instructions.Size = new System.Drawing.Size(213, 22);
|
|
||||||
this.mnuRun1000Instructions.Text = "Run 1000 CPU instructions";
|
|
||||||
//
|
//
|
||||||
// mnuRunPpuCycle
|
// mnuRunPpuCycle
|
||||||
//
|
//
|
||||||
this.mnuRunPpuCycle.Image = global::Mesen.GUI.Properties.Resources.RunPpuCycle;
|
this.mnuRunPpuCycle.Image = global::Mesen.GUI.Properties.Resources.RunPpuCycle;
|
||||||
this.mnuRunPpuCycle.Name = "mnuRunPpuCycle";
|
this.mnuRunPpuCycle.Name = "mnuRunPpuCycle";
|
||||||
this.mnuRunPpuCycle.Size = new System.Drawing.Size(213, 22);
|
this.mnuRunPpuCycle.Size = new System.Drawing.Size(212, 22);
|
||||||
this.mnuRunPpuCycle.Text = "Run one PPU cycle";
|
this.mnuRunPpuCycle.Text = "Run one PPU cycle";
|
||||||
//
|
//
|
||||||
// mnuRunScanline
|
// mnuRunScanline
|
||||||
//
|
//
|
||||||
this.mnuRunScanline.Image = global::Mesen.GUI.Properties.Resources.RunPpuScanline;
|
this.mnuRunScanline.Image = global::Mesen.GUI.Properties.Resources.RunPpuScanline;
|
||||||
this.mnuRunScanline.Name = "mnuRunScanline";
|
this.mnuRunScanline.Name = "mnuRunScanline";
|
||||||
this.mnuRunScanline.Size = new System.Drawing.Size(213, 22);
|
this.mnuRunScanline.Size = new System.Drawing.Size(212, 22);
|
||||||
this.mnuRunScanline.Text = "Run one scanline";
|
this.mnuRunScanline.Text = "Run one scanline";
|
||||||
//
|
//
|
||||||
// mnuRunOneFrame
|
// mnuRunOneFrame
|
||||||
//
|
//
|
||||||
this.mnuRunOneFrame.Image = global::Mesen.GUI.Properties.Resources.RunPpuFrame;
|
this.mnuRunOneFrame.Image = global::Mesen.GUI.Properties.Resources.RunPpuFrame;
|
||||||
this.mnuRunOneFrame.Name = "mnuRunOneFrame";
|
this.mnuRunOneFrame.Name = "mnuRunOneFrame";
|
||||||
this.mnuRunOneFrame.Size = new System.Drawing.Size(213, 22);
|
this.mnuRunOneFrame.Size = new System.Drawing.Size(212, 22);
|
||||||
this.mnuRunOneFrame.Text = "Run one frame";
|
this.mnuRunOneFrame.Text = "Run one frame";
|
||||||
//
|
//
|
||||||
// toolStripMenuItem8
|
// toolStripMenuItem8
|
||||||
//
|
//
|
||||||
this.toolStripMenuItem8.Name = "toolStripMenuItem8";
|
this.toolStripMenuItem8.Name = "toolStripMenuItem8";
|
||||||
this.toolStripMenuItem8.Size = new System.Drawing.Size(210, 6);
|
this.toolStripMenuItem8.Size = new System.Drawing.Size(209, 6);
|
||||||
|
this.toolStripMenuItem8.Visible = false;
|
||||||
//
|
//
|
||||||
// mnuBreakIn
|
// mnuBreakIn
|
||||||
//
|
//
|
||||||
this.mnuBreakIn.Name = "mnuBreakIn";
|
this.mnuBreakIn.Name = "mnuBreakIn";
|
||||||
this.mnuBreakIn.Size = new System.Drawing.Size(213, 22);
|
this.mnuBreakIn.Size = new System.Drawing.Size(212, 22);
|
||||||
this.mnuBreakIn.Text = "Break in...";
|
this.mnuBreakIn.Text = "Break in...";
|
||||||
|
this.mnuBreakIn.Visible = false;
|
||||||
//
|
//
|
||||||
// mnuBreakOn
|
// mnuBreakOn
|
||||||
//
|
//
|
||||||
this.mnuBreakOn.Name = "mnuBreakOn";
|
this.mnuBreakOn.Name = "mnuBreakOn";
|
||||||
this.mnuBreakOn.Size = new System.Drawing.Size(213, 22);
|
this.mnuBreakOn.Size = new System.Drawing.Size(212, 22);
|
||||||
this.mnuBreakOn.Text = "Break on...";
|
this.mnuBreakOn.Text = "Break on...";
|
||||||
|
this.mnuBreakOn.Visible = false;
|
||||||
|
//
|
||||||
|
// searchToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.searchToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.mnuFind,
|
||||||
|
this.mnuFindNext,
|
||||||
|
this.mnuFindPrev,
|
||||||
|
this.toolStripMenuItem9,
|
||||||
|
this.mnuFindAllOccurrences,
|
||||||
|
this.mnuGoTo});
|
||||||
|
this.searchToolStripMenuItem.Name = "searchToolStripMenuItem";
|
||||||
|
this.searchToolStripMenuItem.Size = new System.Drawing.Size(54, 20);
|
||||||
|
this.searchToolStripMenuItem.Text = "Search";
|
||||||
|
//
|
||||||
|
// mnuFind
|
||||||
|
//
|
||||||
|
this.mnuFind.Image = global::Mesen.GUI.Properties.Resources.Find;
|
||||||
|
this.mnuFind.Name = "mnuFind";
|
||||||
|
this.mnuFind.Size = new System.Drawing.Size(183, 22);
|
||||||
|
this.mnuFind.Text = "Find...";
|
||||||
|
//
|
||||||
|
// mnuFindNext
|
||||||
|
//
|
||||||
|
this.mnuFindNext.Image = global::Mesen.GUI.Properties.Resources.NextArrow;
|
||||||
|
this.mnuFindNext.Name = "mnuFindNext";
|
||||||
|
this.mnuFindNext.Size = new System.Drawing.Size(183, 22);
|
||||||
|
this.mnuFindNext.Text = "Find Next";
|
||||||
|
//
|
||||||
|
// mnuFindPrev
|
||||||
|
//
|
||||||
|
this.mnuFindPrev.Image = global::Mesen.GUI.Properties.Resources.PreviousArrow;
|
||||||
|
this.mnuFindPrev.Name = "mnuFindPrev";
|
||||||
|
this.mnuFindPrev.Size = new System.Drawing.Size(183, 22);
|
||||||
|
this.mnuFindPrev.Text = "Find Previous";
|
||||||
|
//
|
||||||
|
// toolStripMenuItem9
|
||||||
|
//
|
||||||
|
this.toolStripMenuItem9.Name = "toolStripMenuItem9";
|
||||||
|
this.toolStripMenuItem9.Size = new System.Drawing.Size(180, 6);
|
||||||
|
//
|
||||||
|
// mnuFindAllOccurrences
|
||||||
|
//
|
||||||
|
this.mnuFindAllOccurrences.Name = "mnuFindAllOccurrences";
|
||||||
|
this.mnuFindAllOccurrences.Size = new System.Drawing.Size(183, 22);
|
||||||
|
this.mnuFindAllOccurrences.Text = "Find All Occurrences";
|
||||||
|
this.mnuFindAllOccurrences.Visible = false;
|
||||||
|
//
|
||||||
|
// mnuGoTo
|
||||||
|
//
|
||||||
|
this.mnuGoTo.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.mnuGoToAddress,
|
||||||
|
this.toolStripMenuItem23,
|
||||||
|
this.mnuGoToProgramCounter,
|
||||||
|
this.toolStripMenuItem22,
|
||||||
|
this.mnuGoToResetHandler,
|
||||||
|
this.mnuGoToIrqHandler,
|
||||||
|
this.mnuGoToNmiHandler,
|
||||||
|
this.mnuGoToBrkHandler,
|
||||||
|
this.mnuGoToCopHandler});
|
||||||
|
this.mnuGoTo.Name = "mnuGoTo";
|
||||||
|
this.mnuGoTo.Size = new System.Drawing.Size(183, 22);
|
||||||
|
this.mnuGoTo.Text = "Go To...";
|
||||||
|
this.mnuGoTo.DropDownOpening += new System.EventHandler(this.mnuGoTo_DropDownOpening);
|
||||||
|
//
|
||||||
|
// mnuGoToAddress
|
||||||
|
//
|
||||||
|
this.mnuGoToAddress.Name = "mnuGoToAddress";
|
||||||
|
this.mnuGoToAddress.Size = new System.Drawing.Size(166, 22);
|
||||||
|
this.mnuGoToAddress.Text = "Address";
|
||||||
|
//
|
||||||
|
// toolStripMenuItem23
|
||||||
|
//
|
||||||
|
this.toolStripMenuItem23.Name = "toolStripMenuItem23";
|
||||||
|
this.toolStripMenuItem23.Size = new System.Drawing.Size(163, 6);
|
||||||
|
//
|
||||||
|
// mnuGoToProgramCounter
|
||||||
|
//
|
||||||
|
this.mnuGoToProgramCounter.Name = "mnuGoToProgramCounter";
|
||||||
|
this.mnuGoToProgramCounter.ShortcutKeyDisplayString = "";
|
||||||
|
this.mnuGoToProgramCounter.Size = new System.Drawing.Size(166, 22);
|
||||||
|
this.mnuGoToProgramCounter.Text = "Program Counter";
|
||||||
|
//
|
||||||
|
// toolStripMenuItem22
|
||||||
|
//
|
||||||
|
this.toolStripMenuItem22.Name = "toolStripMenuItem22";
|
||||||
|
this.toolStripMenuItem22.Size = new System.Drawing.Size(163, 6);
|
||||||
|
//
|
||||||
|
// mnuGoToResetHandler
|
||||||
|
//
|
||||||
|
this.mnuGoToResetHandler.Name = "mnuGoToResetHandler";
|
||||||
|
this.mnuGoToResetHandler.Size = new System.Drawing.Size(166, 22);
|
||||||
|
this.mnuGoToResetHandler.Text = "Reset Handler";
|
||||||
|
//
|
||||||
|
// mnuGoToIrqHandler
|
||||||
|
//
|
||||||
|
this.mnuGoToIrqHandler.Name = "mnuGoToIrqHandler";
|
||||||
|
this.mnuGoToIrqHandler.Size = new System.Drawing.Size(166, 22);
|
||||||
|
this.mnuGoToIrqHandler.Text = "IRQ Handler";
|
||||||
|
//
|
||||||
|
// mnuGoToNmiHandler
|
||||||
|
//
|
||||||
|
this.mnuGoToNmiHandler.Name = "mnuGoToNmiHandler";
|
||||||
|
this.mnuGoToNmiHandler.Size = new System.Drawing.Size(166, 22);
|
||||||
|
this.mnuGoToNmiHandler.Text = "NMI Handler";
|
||||||
|
//
|
||||||
|
// mnuGoToBrkHandler
|
||||||
|
//
|
||||||
|
this.mnuGoToBrkHandler.Name = "mnuGoToBrkHandler";
|
||||||
|
this.mnuGoToBrkHandler.Size = new System.Drawing.Size(166, 22);
|
||||||
|
this.mnuGoToBrkHandler.Text = "BRK Handler";
|
||||||
|
//
|
||||||
|
// mnuGoToCopHandler
|
||||||
|
//
|
||||||
|
this.mnuGoToCopHandler.Name = "mnuGoToCopHandler";
|
||||||
|
this.mnuGoToCopHandler.Size = new System.Drawing.Size(166, 22);
|
||||||
|
this.mnuGoToCopHandler.Text = "COP Handler";
|
||||||
|
//
|
||||||
|
// optionsToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.optionsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.mnuPreferences});
|
||||||
|
this.optionsToolStripMenuItem.Name = "optionsToolStripMenuItem";
|
||||||
|
this.optionsToolStripMenuItem.Size = new System.Drawing.Size(61, 20);
|
||||||
|
this.optionsToolStripMenuItem.Text = "Options";
|
||||||
|
//
|
||||||
|
// mnuPreferences
|
||||||
|
//
|
||||||
|
this.mnuPreferences.Image = global::Mesen.GUI.Properties.Resources.Settings;
|
||||||
|
this.mnuPreferences.Name = "mnuPreferences";
|
||||||
|
this.mnuPreferences.Size = new System.Drawing.Size(209, 22);
|
||||||
|
this.mnuPreferences.Text = "Configure shortcut keys...";
|
||||||
|
this.mnuPreferences.Click += new System.EventHandler(this.mnuPreferences_Click);
|
||||||
//
|
//
|
||||||
// ctrlSplitContainer
|
// ctrlSplitContainer
|
||||||
//
|
//
|
||||||
|
@ -350,6 +489,7 @@
|
||||||
this.ctrlBreakpoints.Name = "ctrlBreakpoints";
|
this.ctrlBreakpoints.Name = "ctrlBreakpoints";
|
||||||
this.ctrlBreakpoints.Size = new System.Drawing.Size(265, 145);
|
this.ctrlBreakpoints.Size = new System.Drawing.Size(265, 145);
|
||||||
this.ctrlBreakpoints.TabIndex = 0;
|
this.ctrlBreakpoints.TabIndex = 0;
|
||||||
|
this.ctrlBreakpoints.BreakpointNavigation += new Mesen.GUI.Debugger.Controls.ctrlBreakpoints.BreakpointNavigationHandler(this.ctrlBreakpoints_BreakpointNavigation);
|
||||||
//
|
//
|
||||||
// grpCallstack
|
// grpCallstack
|
||||||
//
|
//
|
||||||
|
@ -421,9 +561,8 @@
|
||||||
private System.Windows.Forms.ToolStripMenuItem mnuPowerCycle;
|
private System.Windows.Forms.ToolStripMenuItem mnuPowerCycle;
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem24;
|
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem24;
|
||||||
private System.Windows.Forms.ToolStripMenuItem mnuToggleBreakpoint;
|
private System.Windows.Forms.ToolStripMenuItem mnuToggleBreakpoint;
|
||||||
private System.Windows.Forms.ToolStripMenuItem mnuDisableEnableBreakpoint;
|
private System.Windows.Forms.ToolStripMenuItem mnuEnableDisableBreakpoint;
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem2;
|
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem2;
|
||||||
private System.Windows.Forms.ToolStripMenuItem mnuRunCpuCycle;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem mnuRunPpuCycle;
|
private System.Windows.Forms.ToolStripMenuItem mnuRunPpuCycle;
|
||||||
private System.Windows.Forms.ToolStripMenuItem mnuRunScanline;
|
private System.Windows.Forms.ToolStripMenuItem mnuRunScanline;
|
||||||
private System.Windows.Forms.ToolStripMenuItem mnuRunOneFrame;
|
private System.Windows.Forms.ToolStripMenuItem mnuRunOneFrame;
|
||||||
|
@ -437,9 +576,26 @@
|
||||||
private System.Windows.Forms.GroupBox grpBreakpoints;
|
private System.Windows.Forms.GroupBox grpBreakpoints;
|
||||||
private Controls.ctrlBreakpoints ctrlBreakpoints;
|
private Controls.ctrlBreakpoints ctrlBreakpoints;
|
||||||
private Controls.ctrlConsoleStatus ctrlStatus;
|
private Controls.ctrlConsoleStatus ctrlStatus;
|
||||||
private System.Windows.Forms.ToolStripMenuItem mnuRun1000Instructions;
|
|
||||||
private GUI.Controls.ctrlMesenToolStrip tsToolbar;
|
private GUI.Controls.ctrlMesenToolStrip tsToolbar;
|
||||||
private System.Windows.Forms.GroupBox grpCallstack;
|
private System.Windows.Forms.GroupBox grpCallstack;
|
||||||
private Controls.ctrlCallstack ctrlCallstack;
|
private Controls.ctrlCallstack ctrlCallstack;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem searchToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem mnuFind;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem mnuFindNext;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem mnuFindPrev;
|
||||||
|
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem9;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem mnuFindAllOccurrences;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem mnuGoTo;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem mnuGoToAddress;
|
||||||
|
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem23;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem mnuGoToProgramCounter;
|
||||||
|
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem22;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem mnuGoToResetHandler;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem mnuGoToIrqHandler;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem mnuGoToNmiHandler;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem mnuGoToBrkHandler;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem mnuGoToCopHandler;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem optionsToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem mnuPreferences;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -47,6 +47,20 @@ namespace Mesen.GUI.Debugger
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
|
||||||
|
{
|
||||||
|
if(keyData == ConfigManager.Config.Debug.Shortcuts.ToggleBreakContinue) {
|
||||||
|
if(EmuApi.IsPaused()) {
|
||||||
|
DebugApi.ResumeExecution();
|
||||||
|
} else {
|
||||||
|
DebugApi.Step(1);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return base.ProcessCmdKey(ref msg, keyData);
|
||||||
|
}
|
||||||
|
|
||||||
private void InitShortcuts()
|
private void InitShortcuts()
|
||||||
{
|
{
|
||||||
mnuReset.InitShortcut(this, nameof(DebuggerShortcutsConfig.Reset));
|
mnuReset.InitShortcut(this, nameof(DebuggerShortcutsConfig.Reset));
|
||||||
|
@ -62,41 +76,113 @@ namespace Mesen.GUI.Debugger
|
||||||
mnuStepInto.InitShortcut(this, nameof(DebuggerShortcutsConfig.StepInto));
|
mnuStepInto.InitShortcut(this, nameof(DebuggerShortcutsConfig.StepInto));
|
||||||
mnuStepOver.InitShortcut(this, nameof(DebuggerShortcutsConfig.StepOver));
|
mnuStepOver.InitShortcut(this, nameof(DebuggerShortcutsConfig.StepOver));
|
||||||
|
|
||||||
mnuRunCpuCycle.InitShortcut(this, nameof(DebuggerShortcutsConfig.RunCpuCycle));
|
|
||||||
mnuRunPpuCycle.InitShortcut(this, nameof(DebuggerShortcutsConfig.RunPpuCycle));
|
mnuRunPpuCycle.InitShortcut(this, nameof(DebuggerShortcutsConfig.RunPpuCycle));
|
||||||
mnuRunScanline.InitShortcut(this, nameof(DebuggerShortcutsConfig.RunPpuScanline));
|
mnuRunScanline.InitShortcut(this, nameof(DebuggerShortcutsConfig.RunPpuScanline));
|
||||||
mnuRunOneFrame.InitShortcut(this, nameof(DebuggerShortcutsConfig.RunPpuFrame));
|
mnuRunOneFrame.InitShortcut(this, nameof(DebuggerShortcutsConfig.RunPpuFrame));
|
||||||
|
|
||||||
|
mnuToggleBreakpoint.InitShortcut(this, nameof(DebuggerShortcutsConfig.CodeWindow_ToggleBreakpoint));
|
||||||
|
mnuEnableDisableBreakpoint.InitShortcut(this, nameof(DebuggerShortcutsConfig.CodeWindow_DisableEnableBreakpoint));
|
||||||
|
|
||||||
|
mnuReset.InitShortcut(this, nameof(DebuggerShortcutsConfig.Reset));
|
||||||
|
mnuPowerCycle.InitShortcut(this, nameof(DebuggerShortcutsConfig.PowerCycle));
|
||||||
|
|
||||||
|
mnuGoToAddress.InitShortcut(this, nameof(DebuggerShortcutsConfig.GoTo));
|
||||||
|
mnuGoToProgramCounter.InitShortcut(this, nameof(DebuggerShortcutsConfig.GoToProgramCounter));
|
||||||
|
|
||||||
|
mnuFind.InitShortcut(this, nameof(DebuggerShortcutsConfig.Find));
|
||||||
|
mnuFindNext.InitShortcut(this, nameof(DebuggerShortcutsConfig.FindNext));
|
||||||
|
mnuFindPrev.InitShortcut(this, nameof(DebuggerShortcutsConfig.FindPrev));
|
||||||
|
|
||||||
mnuStepInto.Click += (s, e) => { DebugApi.Step(1); };
|
mnuStepInto.Click += (s, e) => { DebugApi.Step(1); };
|
||||||
mnuStepOver.Click += (s, e) => { DebugApi.Step(1, StepType.CpuStepOver); };
|
mnuStepOver.Click += (s, e) => { DebugApi.Step(1, StepType.CpuStepOver); };
|
||||||
mnuStepOut.Click += (s, e) => { DebugApi.Step(1, StepType.CpuStepOut); };
|
mnuStepOut.Click += (s, e) => { DebugApi.Step(1, StepType.CpuStepOut); };
|
||||||
mnuRun1000Instructions.Click += (s, e) => { DebugApi.Step(1000); };
|
|
||||||
mnuRunPpuCycle.Click += (s, e) => { DebugApi.Step(1, StepType.PpuStep); };
|
mnuRunPpuCycle.Click += (s, e) => { DebugApi.Step(1, StepType.PpuStep); };
|
||||||
mnuRunScanline.Click += (s, e) => { DebugApi.Step(341, StepType.PpuStep); };
|
mnuRunScanline.Click += (s, e) => { DebugApi.Step(341, StepType.PpuStep); };
|
||||||
mnuRunOneFrame.Click += (s, e) => { DebugApi.Step(341*262, StepType.PpuStep); }; //TODO ntsc/pal
|
mnuRunOneFrame.Click += (s, e) => { DebugApi.Step(341*262, StepType.PpuStep); }; //TODO ntsc/pal
|
||||||
mnuContinue.Click += (s, e) => { DebugApi.ResumeExecution(); };
|
mnuContinue.Click += (s, e) => { DebugApi.ResumeExecution(); };
|
||||||
|
mnuBreak.Click += (s, e) => { DebugApi.Step(1); };
|
||||||
|
|
||||||
|
mnuReset.Click += (s, e) => { EmuApi.Reset(); };
|
||||||
|
mnuPowerCycle.Click += (s, e) => { EmuApi.PowerCycle(); };
|
||||||
|
|
||||||
|
mnuToggleBreakpoint.Click += (s, e) => { ctrlDisassemblyView.ToggleBreakpoint(); };
|
||||||
|
mnuEnableDisableBreakpoint.Click += (s, e) => { ctrlDisassemblyView.EnableDisableBreakpoint(); };
|
||||||
|
|
||||||
|
mnuGoToAddress.Click += (s, e) => { GoToAddress(); };
|
||||||
|
mnuGoToNmiHandler.Click += (s, e) => { GoToVector(CpuVector.Nmi); };
|
||||||
|
mnuGoToIrqHandler.Click += (s, e) => { GoToVector(CpuVector.Irq); };
|
||||||
|
mnuGoToResetHandler.Click += (s, e) => { GoToVector(CpuVector.Reset); };
|
||||||
|
mnuGoToBrkHandler.Click += (s, e) => { GoToVector(CpuVector.Brk); };
|
||||||
|
mnuGoToCopHandler.Click += (s, e) => { GoToVector(CpuVector.Cop); };
|
||||||
|
mnuGoToProgramCounter.Click += (s, e) => { ctrlDisassemblyView.GoToActiveAddress(); };
|
||||||
|
|
||||||
|
mnuFind.Click += (s, e) => { ctrlDisassemblyView.CodeViewer.OpenSearchBox(); };
|
||||||
|
mnuFindNext.Click += (s, e) => { ctrlDisassemblyView.CodeViewer.FindNext(); };
|
||||||
|
mnuFindPrev.Click += (s, e) => { ctrlDisassemblyView.CodeViewer.FindPrevious(); };
|
||||||
}
|
}
|
||||||
|
|
||||||
private void InitToolbar()
|
private void InitToolbar()
|
||||||
{
|
{
|
||||||
tsToolbar.AddItemsToToolbar(
|
tsToolbar.AddItemsToToolbar(
|
||||||
mnuContinue, mnuBreak, null,
|
mnuContinue, mnuBreak, null,
|
||||||
mnuStepInto, mnuStepOver, mnuStepOut, mnuStepBack, null,
|
mnuStepInto, mnuStepOver, mnuStepOut, null,
|
||||||
mnuRunCpuCycle, null,
|
|
||||||
mnuRunPpuCycle, mnuRunScanline, mnuRunOneFrame, null,
|
mnuRunPpuCycle, mnuRunScanline, mnuRunOneFrame, null,
|
||||||
mnuToggleBreakpoint, mnuDisableEnableBreakpoint, null,
|
mnuToggleBreakpoint, mnuEnableDisableBreakpoint, null,
|
||||||
mnuBreakIn, null, mnuBreakOn
|
mnuBreakIn, null, mnuBreakOn
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void UpdateContinueAction()
|
||||||
|
{
|
||||||
|
bool paused = EmuApi.IsPaused();
|
||||||
|
mnuContinue.Enabled = paused;
|
||||||
|
mnuBreak.Enabled = !paused;
|
||||||
|
|
||||||
|
if(!paused) {
|
||||||
|
ctrlDisassemblyView.SetActiveAddress(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void GoToAddress()
|
||||||
|
{
|
||||||
|
GoToAddress address = new GoToAddress();
|
||||||
|
using(frmGoToLine frm = new frmGoToLine(address, 6)) {
|
||||||
|
frm.StartPosition = FormStartPosition.CenterParent;
|
||||||
|
if(frm.ShowDialog(ctrlDisassemblyView) == DialogResult.OK) {
|
||||||
|
ctrlDisassemblyView.GoToAddress((int)address.Address);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private int GetVectorAddress(CpuVector vector)
|
||||||
|
{
|
||||||
|
uint address = (uint)vector;
|
||||||
|
byte lsb = DebugApi.GetMemoryValue(SnesMemoryType.CpuMemory, address);
|
||||||
|
byte msb = DebugApi.GetMemoryValue(SnesMemoryType.CpuMemory, address + 1);
|
||||||
|
return (msb << 8) | lsb;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void GoToVector(CpuVector vector)
|
||||||
|
{
|
||||||
|
ctrlDisassemblyView.GoToAddress(GetVectorAddress(vector));
|
||||||
|
}
|
||||||
|
|
||||||
private void OnNotificationReceived(NotificationEventArgs e)
|
private void OnNotificationReceived(NotificationEventArgs e)
|
||||||
{
|
{
|
||||||
switch(e.NotificationType) {
|
switch(e.NotificationType) {
|
||||||
|
case ConsoleNotificationType.PpuFrameDone:
|
||||||
|
this.BeginInvoke((MethodInvoker)(() => {
|
||||||
|
UpdateContinueAction();
|
||||||
|
}));
|
||||||
|
break;
|
||||||
|
|
||||||
case ConsoleNotificationType.CodeBreak:
|
case ConsoleNotificationType.CodeBreak:
|
||||||
DebugState state = DebugApi.GetState();
|
DebugState state = DebugApi.GetState();
|
||||||
int activeAddress = (int)((state.Cpu.K << 16) | state.Cpu.PC);
|
int activeAddress = (int)((state.Cpu.K << 16) | state.Cpu.PC);
|
||||||
|
|
||||||
this.BeginInvoke((MethodInvoker)(() => {
|
this.BeginInvoke((MethodInvoker)(() => {
|
||||||
|
UpdateContinueAction();
|
||||||
|
|
||||||
ctrlStatus.UpdateStatus(state);
|
ctrlStatus.UpdateStatus(state);
|
||||||
ctrlDisassemblyView.SetActiveAddress(activeAddress);
|
ctrlDisassemblyView.SetActiveAddress(activeAddress);
|
||||||
ctrlWatch.UpdateWatch(true);
|
ctrlWatch.UpdateWatch(true);
|
||||||
|
@ -110,5 +196,35 @@ namespace Mesen.GUI.Debugger
|
||||||
{
|
{
|
||||||
ctrlDisassemblyView.ScrollToAddress(address);
|
ctrlDisassemblyView.ScrollToAddress(address);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void mnuPreferences_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
using(frmDbgPreferences frm = new frmDbgPreferences()) {
|
||||||
|
frm.ShowDialog(sender, this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ctrlBreakpoints_BreakpointNavigation(Breakpoint bp)
|
||||||
|
{
|
||||||
|
ctrlDisassemblyView.GoToAddress(bp.GetRelativeAddress());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void mnuGoTo_DropDownOpening(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
mnuGoToNmiHandler.Text = "NMI Handler ($" + GetVectorAddress(CpuVector.Nmi).ToString("X4") + ")";
|
||||||
|
mnuGoToIrqHandler.Text = "IRQ Handler ($" + GetVectorAddress(CpuVector.Irq).ToString("X4") + ")";
|
||||||
|
mnuGoToResetHandler.Text = "Reset Handler ($" + GetVectorAddress(CpuVector.Reset).ToString("X4") + ")";
|
||||||
|
mnuGoToBrkHandler.Text = "BRK Handler ($" + GetVectorAddress(CpuVector.Brk).ToString("X4") + ")";
|
||||||
|
mnuGoToCopHandler.Text = "COP Handler ($" + GetVectorAddress(CpuVector.Cop).ToString("X4") + ")";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum CpuVector
|
||||||
|
{
|
||||||
|
Reset = 0xFFFC,
|
||||||
|
Nmi = 0xFFEA,
|
||||||
|
Irq = 0xFFEE,
|
||||||
|
Brk = 0xFFE6,
|
||||||
|
Cop = 0xFFE4,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@ using System.Threading.Tasks;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using System.Xml.Serialization;
|
using System.Xml.Serialization;
|
||||||
using Mesen.GUI.Config;
|
using Mesen.GUI.Config;
|
||||||
|
using Mesen.GUI.Debugger.Workspace;
|
||||||
using Mesen.GUI.Forms;
|
using Mesen.GUI.Forms;
|
||||||
using Mesen.GUI.Utilities;
|
using Mesen.GUI.Utilities;
|
||||||
|
|
||||||
|
@ -46,7 +47,7 @@ namespace Mesen.GUI
|
||||||
Task.Run(() => {
|
Task.Run(() => {
|
||||||
//Cache deserializers in another thread
|
//Cache deserializers in another thread
|
||||||
new XmlSerializer(typeof(Configuration));
|
new XmlSerializer(typeof(Configuration));
|
||||||
//new XmlSerializer(typeof(DebugWorkspace));
|
new XmlSerializer(typeof(DebugWorkspace));
|
||||||
});
|
});
|
||||||
|
|
||||||
if(Type.GetType("Mono.Runtime") != null) {
|
if(Type.GetType("Mono.Runtime") != null) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue