Debugger: Added view in cpu/disassembly/etc shortcuts to hex editor
This commit is contained in:
parent
7e91e632cc
commit
5fbc59ccee
8 changed files with 153 additions and 35 deletions
|
@ -194,6 +194,12 @@ namespace Mesen.GUI.Config
|
|||
public XmlKeys MemoryViewer_Import = Keys.Control | Keys.O;
|
||||
[ShortcutName("Export")]
|
||||
public XmlKeys MemoryViewer_Export = Keys.Control | Keys.S;
|
||||
[ShortcutName("View in CPU Memory")]
|
||||
public XmlKeys MemoryViewer_ViewInCpuMemory = Keys.None;
|
||||
[ShortcutName("View in [memory type]")]
|
||||
public XmlKeys MemoryViewer_ViewInMemoryType = Keys.None;
|
||||
[ShortcutName("View in disassembly")]
|
||||
public XmlKeys MemoryViewer_ViewInDisassembly = Keys.None;
|
||||
|
||||
//Script Window
|
||||
[ShortcutName("Open Script")]
|
||||
|
|
90
GUI.NET/Debugger/Controls/ctrlHexViewer.Designer.cs
generated
90
GUI.NET/Debugger/Controls/ctrlHexViewer.Designer.cs
generated
|
@ -54,7 +54,7 @@
|
|||
this.mnuAddToWatch = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mnuEditBreakpoint = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mnuEditLabel = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.sepViewActions = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.mnuFreeze = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mnuUnfreeze = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripMenuItem3 = new System.Windows.Forms.ToolStripSeparator();
|
||||
|
@ -64,6 +64,10 @@
|
|||
this.mnuPaste = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripMenuItem5 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.mnuSelectAll = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mnuViewInCpuMemory = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripMenuItem6 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.mnuViewInMemoryType = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mnuViewInDisassembly = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.tlpMain.SuspendLayout();
|
||||
this.flowLayoutPanel1.SuspendLayout();
|
||||
this.panelSearch.SuspendLayout();
|
||||
|
@ -267,6 +271,7 @@
|
|||
// ctrlHexBox
|
||||
//
|
||||
this.ctrlHexBox.ByteColorProvider = null;
|
||||
this.ctrlHexBox.ByteEditingMode = false;
|
||||
this.ctrlHexBox.ColumnInfoVisible = true;
|
||||
this.ctrlHexBox.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.ctrlHexBox.EnablePerByteNavigation = false;
|
||||
|
@ -314,7 +319,11 @@
|
|||
this.mnuAddToWatch,
|
||||
this.mnuEditBreakpoint,
|
||||
this.mnuEditLabel,
|
||||
this.toolStripMenuItem2,
|
||||
this.sepViewActions,
|
||||
this.mnuViewInCpuMemory,
|
||||
this.mnuViewInMemoryType,
|
||||
this.mnuViewInDisassembly,
|
||||
this.toolStripMenuItem6,
|
||||
this.mnuFreeze,
|
||||
this.mnuUnfreeze,
|
||||
this.toolStripMenuItem3,
|
||||
|
@ -325,7 +334,7 @@
|
|||
this.toolStripMenuItem5,
|
||||
this.mnuSelectAll});
|
||||
this.ctxMenuStrip.Name = "ctxMenuStrip";
|
||||
this.ctxMenuStrip.Size = new System.Drawing.Size(175, 254);
|
||||
this.ctxMenuStrip.Size = new System.Drawing.Size(187, 348);
|
||||
this.ctxMenuStrip.Opening += new System.ComponentModel.CancelEventHandler(this.ctxMenuStrip_Opening);
|
||||
//
|
||||
// mnuMarkSelectionAs
|
||||
|
@ -335,14 +344,14 @@
|
|||
this.mnuMarkAsData,
|
||||
this.mnuMarkAsUnidentifiedData});
|
||||
this.mnuMarkSelectionAs.Name = "mnuMarkSelectionAs";
|
||||
this.mnuMarkSelectionAs.Size = new System.Drawing.Size(174, 22);
|
||||
this.mnuMarkSelectionAs.Size = new System.Drawing.Size(186, 22);
|
||||
this.mnuMarkSelectionAs.Text = "Mark selection as...";
|
||||
//
|
||||
// mnuMarkAsCode
|
||||
//
|
||||
this.mnuMarkAsCode.Image = global::Mesen.GUI.Properties.Resources.Accept;
|
||||
this.mnuMarkAsCode.Name = "mnuMarkAsCode";
|
||||
this.mnuMarkAsCode.Size = new System.Drawing.Size(235, 22);
|
||||
this.mnuMarkAsCode.Size = new System.Drawing.Size(199, 22);
|
||||
this.mnuMarkAsCode.Text = "Verified Code";
|
||||
this.mnuMarkAsCode.Click += new System.EventHandler(this.mnuMarkAsCode_Click);
|
||||
//
|
||||
|
@ -350,7 +359,7 @@
|
|||
//
|
||||
this.mnuMarkAsData.Image = global::Mesen.GUI.Properties.Resources.VerifiedData;
|
||||
this.mnuMarkAsData.Name = "mnuMarkAsData";
|
||||
this.mnuMarkAsData.Size = new System.Drawing.Size(235, 22);
|
||||
this.mnuMarkAsData.Size = new System.Drawing.Size(199, 22);
|
||||
this.mnuMarkAsData.Text = "Verified Data";
|
||||
this.mnuMarkAsData.Click += new System.EventHandler(this.mnuMarkAsData_Click);
|
||||
//
|
||||
|
@ -358,20 +367,20 @@
|
|||
//
|
||||
this.mnuMarkAsUnidentifiedData.Image = global::Mesen.GUI.Properties.Resources.UnidentifiedData;
|
||||
this.mnuMarkAsUnidentifiedData.Name = "mnuMarkAsUnidentifiedData";
|
||||
this.mnuMarkAsUnidentifiedData.Size = new System.Drawing.Size(235, 22);
|
||||
this.mnuMarkAsUnidentifiedData.Size = new System.Drawing.Size(199, 22);
|
||||
this.mnuMarkAsUnidentifiedData.Text = "Unidentified Code/Data";
|
||||
this.mnuMarkAsUnidentifiedData.Click += new System.EventHandler(this.mnuMarkAsUnidentifiedData_Click);
|
||||
//
|
||||
// toolStripMenuItem1
|
||||
//
|
||||
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
|
||||
this.toolStripMenuItem1.Size = new System.Drawing.Size(171, 6);
|
||||
this.toolStripMenuItem1.Size = new System.Drawing.Size(183, 6);
|
||||
//
|
||||
// mnuAddToWatch
|
||||
//
|
||||
this.mnuAddToWatch.Image = global::Mesen.GUI.Properties.Resources.Add;
|
||||
this.mnuAddToWatch.Name = "mnuAddToWatch";
|
||||
this.mnuAddToWatch.Size = new System.Drawing.Size(174, 22);
|
||||
this.mnuAddToWatch.Size = new System.Drawing.Size(186, 22);
|
||||
this.mnuAddToWatch.Text = "Add to Watch";
|
||||
this.mnuAddToWatch.Click += new System.EventHandler(this.mnuAddToWatch_Click);
|
||||
//
|
||||
|
@ -379,7 +388,7 @@
|
|||
//
|
||||
this.mnuEditBreakpoint.Image = global::Mesen.GUI.Properties.Resources.BreakpointEnableDisable;
|
||||
this.mnuEditBreakpoint.Name = "mnuEditBreakpoint";
|
||||
this.mnuEditBreakpoint.Size = new System.Drawing.Size(174, 22);
|
||||
this.mnuEditBreakpoint.Size = new System.Drawing.Size(186, 22);
|
||||
this.mnuEditBreakpoint.Text = "Edit Breakpoint";
|
||||
this.mnuEditBreakpoint.Click += new System.EventHandler(this.mnuEditBreakpoint_Click);
|
||||
//
|
||||
|
@ -387,20 +396,20 @@
|
|||
//
|
||||
this.mnuEditLabel.Image = global::Mesen.GUI.Properties.Resources.EditLabel;
|
||||
this.mnuEditLabel.Name = "mnuEditLabel";
|
||||
this.mnuEditLabel.Size = new System.Drawing.Size(174, 22);
|
||||
this.mnuEditLabel.Size = new System.Drawing.Size(186, 22);
|
||||
this.mnuEditLabel.Text = "Edit Label";
|
||||
this.mnuEditLabel.Click += new System.EventHandler(this.mnuEditLabel_Click);
|
||||
//
|
||||
// toolStripMenuItem2
|
||||
// sepViewActions
|
||||
//
|
||||
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
|
||||
this.toolStripMenuItem2.Size = new System.Drawing.Size(171, 6);
|
||||
this.sepViewActions.Name = "sepViewActions";
|
||||
this.sepViewActions.Size = new System.Drawing.Size(183, 6);
|
||||
//
|
||||
// mnuFreeze
|
||||
//
|
||||
this.mnuFreeze.Image = global::Mesen.GUI.Properties.Resources.Stop;
|
||||
this.mnuFreeze.Name = "mnuFreeze";
|
||||
this.mnuFreeze.Size = new System.Drawing.Size(174, 22);
|
||||
this.mnuFreeze.Size = new System.Drawing.Size(186, 22);
|
||||
this.mnuFreeze.Text = "Freeze";
|
||||
this.mnuFreeze.Click += new System.EventHandler(this.mnuFreeze_Click);
|
||||
//
|
||||
|
@ -408,33 +417,33 @@
|
|||
//
|
||||
this.mnuUnfreeze.Image = global::Mesen.GUI.Properties.Resources.Play;
|
||||
this.mnuUnfreeze.Name = "mnuUnfreeze";
|
||||
this.mnuUnfreeze.Size = new System.Drawing.Size(174, 22);
|
||||
this.mnuUnfreeze.Size = new System.Drawing.Size(186, 22);
|
||||
this.mnuUnfreeze.Text = "Unfreeze";
|
||||
this.mnuUnfreeze.Click += new System.EventHandler(this.mnuUnfreeze_Click);
|
||||
//
|
||||
// toolStripMenuItem3
|
||||
//
|
||||
this.toolStripMenuItem3.Name = "toolStripMenuItem3";
|
||||
this.toolStripMenuItem3.Size = new System.Drawing.Size(171, 6);
|
||||
this.toolStripMenuItem3.Size = new System.Drawing.Size(183, 6);
|
||||
//
|
||||
// mnuUndo
|
||||
//
|
||||
this.mnuUndo.Image = global::Mesen.GUI.Properties.Resources.Undo;
|
||||
this.mnuUndo.Name = "mnuUndo";
|
||||
this.mnuUndo.Size = new System.Drawing.Size(174, 22);
|
||||
this.mnuUndo.Size = new System.Drawing.Size(186, 22);
|
||||
this.mnuUndo.Text = "Undo";
|
||||
this.mnuUndo.Click += new System.EventHandler(this.mnuUndo_Click);
|
||||
//
|
||||
// toolStripMenuItem4
|
||||
//
|
||||
this.toolStripMenuItem4.Name = "toolStripMenuItem4";
|
||||
this.toolStripMenuItem4.Size = new System.Drawing.Size(171, 6);
|
||||
this.toolStripMenuItem4.Size = new System.Drawing.Size(183, 6);
|
||||
//
|
||||
// mnuCopy
|
||||
//
|
||||
this.mnuCopy.Image = global::Mesen.GUI.Properties.Resources.Copy;
|
||||
this.mnuCopy.Name = "mnuCopy";
|
||||
this.mnuCopy.Size = new System.Drawing.Size(174, 22);
|
||||
this.mnuCopy.Size = new System.Drawing.Size(186, 22);
|
||||
this.mnuCopy.Text = "Copy";
|
||||
this.mnuCopy.Click += new System.EventHandler(this.mnuCopy_Click);
|
||||
//
|
||||
|
@ -442,23 +451,52 @@
|
|||
//
|
||||
this.mnuPaste.Image = global::Mesen.GUI.Properties.Resources.Paste;
|
||||
this.mnuPaste.Name = "mnuPaste";
|
||||
this.mnuPaste.Size = new System.Drawing.Size(174, 22);
|
||||
this.mnuPaste.Size = new System.Drawing.Size(186, 22);
|
||||
this.mnuPaste.Text = "Paste";
|
||||
this.mnuPaste.Click += new System.EventHandler(this.mnuPaste_Click);
|
||||
//
|
||||
// toolStripMenuItem5
|
||||
//
|
||||
this.toolStripMenuItem5.Name = "toolStripMenuItem5";
|
||||
this.toolStripMenuItem5.Size = new System.Drawing.Size(171, 6);
|
||||
this.toolStripMenuItem5.Size = new System.Drawing.Size(183, 6);
|
||||
//
|
||||
// mnuSelectAll
|
||||
//
|
||||
this.mnuSelectAll.Image = global::Mesen.GUI.Properties.Resources.SelectAll;
|
||||
this.mnuSelectAll.Name = "mnuSelectAll";
|
||||
this.mnuSelectAll.Size = new System.Drawing.Size(174, 22);
|
||||
this.mnuSelectAll.Size = new System.Drawing.Size(186, 22);
|
||||
this.mnuSelectAll.Text = "Select All";
|
||||
this.mnuSelectAll.Click += new System.EventHandler(this.mnuSelectAll_Click);
|
||||
//
|
||||
// mnuViewInCpuMemory
|
||||
//
|
||||
this.mnuViewInCpuMemory.Image = global::Mesen.GUI.Properties.Resources.SwitchView;
|
||||
this.mnuViewInCpuMemory.Name = "mnuViewInCpuMemory";
|
||||
this.mnuViewInCpuMemory.Size = new System.Drawing.Size(186, 22);
|
||||
this.mnuViewInCpuMemory.Text = "View in CPU memory";
|
||||
this.mnuViewInCpuMemory.Click += new System.EventHandler(this.mnuViewInCpuMemory_Click);
|
||||
//
|
||||
// toolStripMenuItem6
|
||||
//
|
||||
this.toolStripMenuItem6.Name = "toolStripMenuItem6";
|
||||
this.toolStripMenuItem6.Size = new System.Drawing.Size(183, 6);
|
||||
//
|
||||
// mnuViewInMemoryType
|
||||
//
|
||||
this.mnuViewInMemoryType.Image = global::Mesen.GUI.Properties.Resources.SwitchView;
|
||||
this.mnuViewInMemoryType.Name = "mnuViewInMemoryType";
|
||||
this.mnuViewInMemoryType.Size = new System.Drawing.Size(186, 22);
|
||||
this.mnuViewInMemoryType.Text = "View in {0} memory";
|
||||
this.mnuViewInMemoryType.Click += new System.EventHandler(this.mnuViewInMemoryType_Click);
|
||||
//
|
||||
// mnuViewInDisassembly
|
||||
//
|
||||
this.mnuViewInDisassembly.Image = global::Mesen.GUI.Properties.Resources.Bug;
|
||||
this.mnuViewInDisassembly.Name = "mnuViewInDisassembly";
|
||||
this.mnuViewInDisassembly.Size = new System.Drawing.Size(186, 22);
|
||||
this.mnuViewInDisassembly.Text = "View in disassembly";
|
||||
this.mnuViewInDisassembly.Click += new System.EventHandler(this.mnuViewInDisassembly_Click);
|
||||
//
|
||||
// ctrlHexViewer
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
|
@ -514,7 +552,7 @@
|
|||
private System.Windows.Forms.ToolStripMenuItem mnuEditBreakpoint;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuEditLabel;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuFreeze;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem2;
|
||||
private System.Windows.Forms.ToolStripSeparator sepViewActions;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuUnfreeze;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem3;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuCopy;
|
||||
|
@ -526,5 +564,9 @@
|
|||
private System.Windows.Forms.ToolStripMenuItem mnuMarkAsUnidentifiedData;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem4;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem5;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuViewInCpuMemory;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuViewInDisassembly;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuViewInMemoryType;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem6;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@ using Mesen.GUI.Config;
|
|||
using Be.Windows.Forms;
|
||||
using Mesen.GUI.Controls;
|
||||
using static Be.Windows.Forms.DynamicByteProvider;
|
||||
using Mesen.GUI.Forms;
|
||||
|
||||
namespace Mesen.GUI.Debugger.Controls
|
||||
{
|
||||
|
@ -60,6 +61,10 @@ namespace Mesen.GUI.Debugger.Controls
|
|||
mnuMarkAsCode.InitShortcut(this, nameof(DebuggerShortcutsConfig.MarkAsCode));
|
||||
mnuMarkAsData.InitShortcut(this, nameof(DebuggerShortcutsConfig.MarkAsData));
|
||||
mnuMarkAsUnidentifiedData.InitShortcut(this, nameof(DebuggerShortcutsConfig.MarkAsUnidentified));
|
||||
|
||||
mnuViewInCpuMemory.InitShortcut(this, nameof(DebuggerShortcutsConfig.MemoryViewer_ViewInCpuMemory));
|
||||
mnuViewInDisassembly.InitShortcut(this, nameof(DebuggerShortcutsConfig.MemoryViewer_ViewInDisassembly));
|
||||
mnuViewInMemoryType.InitShortcut(this, nameof(DebuggerShortcutsConfig.MemoryViewer_ViewInMemoryType));
|
||||
}
|
||||
|
||||
public byte[] GetData()
|
||||
|
@ -461,6 +466,8 @@ namespace Mesen.GUI.Debugger.Controls
|
|||
private int SelectionStartAddress { get { return (int)ctrlHexBox.SelectionStart; } }
|
||||
private int SelectionEndAddress { get { return (int)(ctrlHexBox.SelectionStart + (ctrlHexBox.SelectionLength == 0 ? 0 : (ctrlHexBox.SelectionLength - 1))); } }
|
||||
|
||||
public frmMemoryViewer MemoryViewer { get; internal set; }
|
||||
|
||||
private void MarkSelectionAs(int start, int end, CdlPrgFlags type)
|
||||
{
|
||||
if(_memoryType == DebugMemoryType.CpuMemory) {
|
||||
|
@ -559,6 +566,38 @@ namespace Mesen.GUI.Debugger.Controls
|
|||
mnuEditBreakpoint.Text = $"Edit Breakpoint ({addressRange})";
|
||||
mnuAddToWatch.Text = $"Add to Watch ({addressRange})";
|
||||
|
||||
mnuViewInDisassembly.Text = $"View in disassembly ({address})";
|
||||
|
||||
bool viewInCpuMemoryVisible = (_memoryType == DebugMemoryType.PrgRom || _memoryType == DebugMemoryType.WorkRam || _memoryType == DebugMemoryType.SaveRam);
|
||||
bool viewInMemoryTypeVisible = _memoryType == DebugMemoryType.CpuMemory;
|
||||
mnuViewInCpuMemory.Visible = viewInCpuMemoryVisible;
|
||||
mnuViewInMemoryType.Visible = viewInMemoryTypeVisible;
|
||||
mnuViewInDisassembly.Visible = (viewInCpuMemoryVisible || viewInMemoryTypeVisible);
|
||||
sepViewActions.Visible = (viewInCpuMemoryVisible || viewInMemoryTypeVisible);
|
||||
|
||||
if(viewInMemoryTypeVisible) {
|
||||
frmDebugger debugger = DebugWindowManager.GetDebugger();
|
||||
AddressTypeInfo addressInfo = new AddressTypeInfo();
|
||||
InteropEmu.DebugGetAbsoluteAddressAndType(startAddress, addressInfo);
|
||||
mnuViewInMemoryType.Text = $"View in " + ResourceHelper.GetEnumText(addressInfo.Type) + $" ({address})";
|
||||
mnuViewInDisassembly.Enabled = debugger != null;
|
||||
bool viewInMemoryTypeEnabled = addressInfo.Address >= 0 && (addressInfo.Type == AddressType.PrgRom || addressInfo.Type == AddressType.WorkRam || addressInfo.Type == AddressType.SaveRam);
|
||||
mnuViewInMemoryType.Enabled = viewInMemoryTypeEnabled;
|
||||
mnuViewInMemoryType.Visible = viewInMemoryTypeEnabled;
|
||||
mnuViewInCpuMemory.Enabled = false;
|
||||
} else if(viewInCpuMemoryVisible) {
|
||||
frmDebugger debugger = DebugWindowManager.GetDebugger();
|
||||
int relativeAddress = InteropEmu.DebugGetRelativeAddress(startAddress, _memoryType.ToAddressType());
|
||||
mnuViewInCpuMemory.Text = $"View in CPU memory ({address})";
|
||||
mnuViewInCpuMemory.Enabled = relativeAddress >= 0;
|
||||
mnuViewInDisassembly.Enabled = debugger != null && relativeAddress >= 0;
|
||||
mnuViewInMemoryType.Enabled = false;
|
||||
} else {
|
||||
mnuViewInMemoryType.Enabled = false;
|
||||
mnuViewInCpuMemory.Enabled = false;
|
||||
mnuViewInDisassembly.Enabled = false;
|
||||
}
|
||||
|
||||
if(this._memoryType == DebugMemoryType.CpuMemory) {
|
||||
bool[] freezeState = InteropEmu.DebugGetFreezeState((UInt16)startAddress, (UInt16)(endAddress - startAddress + 1));
|
||||
mnuFreeze.Enabled = !freezeState.All((frozen) => frozen);
|
||||
|
@ -643,5 +682,35 @@ namespace Mesen.GUI.Debugger.Controls
|
|||
InteropEmu.DebugPerformUndo();
|
||||
this.RefreshData(_memoryType);
|
||||
}
|
||||
|
||||
private void mnuViewInCpuMemory_Click(object sender, EventArgs e)
|
||||
{
|
||||
int relativeAddress = InteropEmu.DebugGetRelativeAddress((UInt32)SelectionStartAddress, _memoryType.ToAddressType());
|
||||
if(relativeAddress >= 0) {
|
||||
MemoryViewer.ShowAddress(relativeAddress, DebugMemoryType.CpuMemory);
|
||||
}
|
||||
}
|
||||
|
||||
private void mnuViewInMemoryType_Click(object sender, EventArgs e)
|
||||
{
|
||||
AddressTypeInfo addressInfo = new AddressTypeInfo();
|
||||
InteropEmu.DebugGetAbsoluteAddressAndType((UInt32)SelectionStartAddress, addressInfo);
|
||||
if(addressInfo.Address >= 0 && (addressInfo.Type == AddressType.PrgRom || addressInfo.Type == AddressType.WorkRam || addressInfo.Type == AddressType.SaveRam)) {
|
||||
MemoryViewer.ShowAddress(addressInfo.Address, addressInfo.Type.ToMemoryType());
|
||||
}
|
||||
}
|
||||
|
||||
private void mnuViewInDisassembly_Click(object sender, EventArgs e)
|
||||
{
|
||||
frmDebugger debugger = DebugWindowManager.GetDebugger();
|
||||
if(debugger != null) {
|
||||
if(_memoryType == DebugMemoryType.CpuMemory) {
|
||||
debugger.ScrollToAddress(SelectionStartAddress);
|
||||
} else if(_memoryType == DebugMemoryType.PrgRom || _memoryType == DebugMemoryType.WorkRam || _memoryType == DebugMemoryType.SaveRam) {
|
||||
int relativeAddress = InteropEmu.DebugGetRelativeAddress((UInt32)SelectionStartAddress, _memoryType.ToAddressType());
|
||||
debugger.ScrollToAddress(relativeAddress);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -117,9 +117,6 @@
|
|||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="statusStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>107, 17</value>
|
||||
</metadata>
|
||||
|
|
|
@ -10,6 +10,7 @@ using System.Windows.Forms;
|
|||
using System.Collections;
|
||||
using Mesen.GUI.Controls;
|
||||
using Mesen.GUI.Config;
|
||||
using Mesen.GUI.Forms;
|
||||
|
||||
namespace Mesen.GUI.Debugger.Controls
|
||||
{
|
||||
|
@ -199,13 +200,7 @@ namespace Mesen.GUI.Debugger.Controls
|
|||
|
||||
CodeLabel label = (CodeLabel)item.SubItems[1].Tag;
|
||||
if(label.AddressType != AddressType.Register && label.AddressType != AddressType.InternalRam) {
|
||||
string memoryType = "";
|
||||
switch(label.AddressType) {
|
||||
case AddressType.PrgRom: memoryType = "PRG ROM"; break;
|
||||
case AddressType.SaveRam: memoryType = "Save RAM"; break;
|
||||
case AddressType.WorkRam: memoryType = "Work RAM"; break;
|
||||
}
|
||||
mnuViewInMemoryType.Text = "View in " + memoryType;
|
||||
mnuViewInMemoryType.Text = "View in " + ResourceHelper.GetEnumText(label.AddressType);
|
||||
mnuViewInMemoryType.Enabled = true;
|
||||
} else {
|
||||
mnuViewInMemoryType.Enabled = false;
|
||||
|
|
|
@ -55,7 +55,10 @@ namespace Mesen.GUI.Debugger
|
|||
GetMember(nameof(DebuggerShortcutsConfig.MemoryViewer_EditBreakpoint)),
|
||||
GetMember(nameof(DebuggerShortcutsConfig.MemoryViewer_EditLabel)),
|
||||
GetMember(nameof(DebuggerShortcutsConfig.MemoryViewer_Import)),
|
||||
GetMember(nameof(DebuggerShortcutsConfig.MemoryViewer_Export))
|
||||
GetMember(nameof(DebuggerShortcutsConfig.MemoryViewer_Export)),
|
||||
GetMember(nameof(DebuggerShortcutsConfig.MemoryViewer_ViewInCpuMemory)),
|
||||
GetMember(nameof(DebuggerShortcutsConfig.MemoryViewer_ViewInMemoryType)),
|
||||
GetMember(nameof(DebuggerShortcutsConfig.MemoryViewer_ViewInDisassembly))
|
||||
};
|
||||
|
||||
ctrlDbgShortcutsScriptWindow.Shortcuts = new FieldInfo[] {
|
||||
|
|
|
@ -866,6 +866,11 @@ namespace Mesen.GUI.Debugger
|
|||
ctrlSourceViewerSplit.RefreshViewer();
|
||||
}
|
||||
|
||||
public void ScrollToAddress(int address)
|
||||
{
|
||||
_lastCodeWindow.ScrollToLineNumber(address);
|
||||
}
|
||||
|
||||
private void ctrlDebuggerCode_Enter(object sender, EventArgs e)
|
||||
{
|
||||
_lastCodeWindow = (ICodeViewer)sender;
|
||||
|
|
|
@ -77,6 +77,7 @@ namespace Mesen.GUI.Debugger
|
|||
this.InitTblMappings();
|
||||
|
||||
this.ctrlHexViewer.StringViewVisible = mnuShowCharacters.Checked;
|
||||
this.ctrlHexViewer.MemoryViewer = this;
|
||||
|
||||
UpdateImportButton();
|
||||
InitMemoryTypeDropdown(true);
|
||||
|
|
Loading…
Add table
Reference in a new issue