Debugger: PPU Viewer - Added a "Edit in memory viewer" right-click option on nt/chr/sprite viewer tabs
This commit is contained in:
parent
d3384b75dd
commit
0df0c85767
9 changed files with 214 additions and 61 deletions
26
GUI.NET/Controls/ctrlMesenContextMenuStrip.cs
Normal file
26
GUI.NET/Controls/ctrlMesenContextMenuStrip.cs
Normal file
|
@ -0,0 +1,26 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Mesen.GUI.Controls
|
||||
{
|
||||
public class ctrlMesenContextMenuStrip : ContextMenuStrip
|
||||
{
|
||||
public ctrlMesenContextMenuStrip() : base()
|
||||
{
|
||||
}
|
||||
|
||||
public ctrlMesenContextMenuStrip(IContainer container) : base(container)
|
||||
{
|
||||
}
|
||||
|
||||
internal bool ProcessCommandKey(ref Message msg, Keys keyData)
|
||||
{
|
||||
return this.ProcessCmdKey(ref msg, keyData);
|
||||
}
|
||||
}
|
||||
}
|
53
GUI.NET/Debugger/Controls/ctrlChrViewer.Designer.cs
generated
53
GUI.NET/Debugger/Controls/ctrlChrViewer.Designer.cs
generated
|
@ -1,4 +1,6 @@
|
|||
namespace Mesen.GUI.Debugger.Controls
|
||||
using Mesen.GUI.Controls;
|
||||
|
||||
namespace Mesen.GUI.Debugger.Controls
|
||||
{
|
||||
partial class ctrlChrViewer
|
||||
{
|
||||
|
@ -58,13 +60,15 @@
|
|||
this.ctrlTilePalette = new Mesen.GUI.Debugger.Controls.ctrlTilePalette();
|
||||
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.picChrBank1 = new System.Windows.Forms.PictureBox();
|
||||
this.ctxMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.ctxMenu = new ctrlMesenContextMenuStrip(this.components);
|
||||
this.mnuCopyHdPack = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.mnuCopyToClipboard = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mnuExportToPng = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.picChrBank2 = new System.Windows.Forms.PictureBox();
|
||||
this.toolTip = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.mnuExportToPng = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mnuEditInMemoryViewer = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.tableLayoutPanel3.SuspendLayout();
|
||||
this.grpDisplayOptions.SuspendLayout();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
|
@ -459,18 +463,21 @@
|
|||
this.picChrBank1.TabIndex = 0;
|
||||
this.picChrBank1.TabStop = false;
|
||||
this.picChrBank1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.picChrBank_MouseDown);
|
||||
this.picChrBank1.MouseEnter += new System.EventHandler(this.picChrBank_MouseEnter);
|
||||
this.picChrBank1.MouseLeave += new System.EventHandler(this.picChrBank_MouseLeave);
|
||||
this.picChrBank1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.picChrBank_MouseMove);
|
||||
//
|
||||
// ctxMenu
|
||||
//
|
||||
this.ctxMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.mnuEditInMemoryViewer,
|
||||
this.toolStripMenuItem2,
|
||||
this.mnuCopyHdPack,
|
||||
this.toolStripMenuItem1,
|
||||
this.mnuCopyToClipboard,
|
||||
this.mnuExportToPng});
|
||||
this.ctxMenu.Name = "ctxMenu";
|
||||
this.ctxMenu.Size = new System.Drawing.Size(222, 98);
|
||||
this.ctxMenu.Size = new System.Drawing.Size(222, 126);
|
||||
this.ctxMenu.Opening += new System.ComponentModel.CancelEventHandler(this.ctxMenu_Opening);
|
||||
//
|
||||
// mnuCopyHdPack
|
||||
|
@ -480,6 +487,11 @@
|
|||
this.mnuCopyHdPack.Text = "Copy Tile (HD Pack Format)";
|
||||
this.mnuCopyHdPack.Click += new System.EventHandler(this.mnuCopyHdPack_Click);
|
||||
//
|
||||
// toolStripMenuItem1
|
||||
//
|
||||
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
|
||||
this.toolStripMenuItem1.Size = new System.Drawing.Size(218, 6);
|
||||
//
|
||||
// mnuCopyToClipboard
|
||||
//
|
||||
this.mnuCopyToClipboard.Image = global::Mesen.GUI.Properties.Resources.Copy;
|
||||
|
@ -488,6 +500,14 @@
|
|||
this.mnuCopyToClipboard.Text = "Copy image to clipboard";
|
||||
this.mnuCopyToClipboard.Click += new System.EventHandler(this.mnuCopyToClipboard_Click);
|
||||
//
|
||||
// mnuExportToPng
|
||||
//
|
||||
this.mnuExportToPng.Image = global::Mesen.GUI.Properties.Resources.Export;
|
||||
this.mnuExportToPng.Name = "mnuExportToPng";
|
||||
this.mnuExportToPng.Size = new System.Drawing.Size(221, 22);
|
||||
this.mnuExportToPng.Text = "Export image to PNG";
|
||||
this.mnuExportToPng.Click += new System.EventHandler(this.mnuExportToPng_Click);
|
||||
//
|
||||
// picChrBank2
|
||||
//
|
||||
this.picChrBank2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
|
@ -501,6 +521,7 @@
|
|||
this.picChrBank2.TabIndex = 1;
|
||||
this.picChrBank2.TabStop = false;
|
||||
this.picChrBank2.MouseDown += new System.Windows.Forms.MouseEventHandler(this.picChrBank_MouseDown);
|
||||
this.picChrBank2.MouseEnter += new System.EventHandler(this.picChrBank_MouseEnter);
|
||||
this.picChrBank2.MouseLeave += new System.EventHandler(this.picChrBank_MouseLeave);
|
||||
this.picChrBank2.MouseMove += new System.Windows.Forms.MouseEventHandler(this.picChrBank_MouseMove);
|
||||
//
|
||||
|
@ -510,18 +531,18 @@
|
|||
this.toolTip.InitialDelay = 10;
|
||||
this.toolTip.ReshowDelay = 10;
|
||||
//
|
||||
// toolStripMenuItem1
|
||||
// mnuEditInMemoryViewer
|
||||
//
|
||||
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
|
||||
this.toolStripMenuItem1.Size = new System.Drawing.Size(218, 6);
|
||||
this.mnuEditInMemoryViewer.Image = global::Mesen.GUI.Properties.Resources.CheatCode;
|
||||
this.mnuEditInMemoryViewer.Name = "mnuEditInMemoryViewer";
|
||||
this.mnuEditInMemoryViewer.Size = new System.Drawing.Size(221, 22);
|
||||
this.mnuEditInMemoryViewer.Text = "Edit in Memory Viewer";
|
||||
this.mnuEditInMemoryViewer.Click += new System.EventHandler(this.mnuEditInMemoryViewer_Click);
|
||||
//
|
||||
// mnuExportToPng
|
||||
// toolStripMenuItem2
|
||||
//
|
||||
this.mnuExportToPng.Image = global::Mesen.GUI.Properties.Resources.Export;
|
||||
this.mnuExportToPng.Name = "mnuExportToPng";
|
||||
this.mnuExportToPng.Size = new System.Drawing.Size(221, 22);
|
||||
this.mnuExportToPng.Text = "Export image to PNG";
|
||||
this.mnuExportToPng.Click += new System.EventHandler(this.mnuExportToPng_Click);
|
||||
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
|
||||
this.toolStripMenuItem2.Size = new System.Drawing.Size(218, 6);
|
||||
//
|
||||
// ctrlChrViewer
|
||||
//
|
||||
|
@ -586,7 +607,7 @@
|
|||
private System.Windows.Forms.PictureBox picTileTooltip;
|
||||
private System.Windows.Forms.ToolTip toolTip;
|
||||
private System.Windows.Forms.PictureBox picPaletteTooltip;
|
||||
private System.Windows.Forms.ContextMenuStrip ctxMenu;
|
||||
private ctrlMesenContextMenuStrip ctxMenu;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuCopyHdPack;
|
||||
private ctrlTilePalette ctrlTilePalette;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuCopyToClipboard;
|
||||
|
@ -594,5 +615,7 @@
|
|||
private System.Windows.Forms.CheckBox chkShowSingleColorTilesInGrayscale;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuExportToPng;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuEditInMemoryViewer;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem2;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -69,9 +69,18 @@ namespace Mesen.GUI.Debugger.Controls
|
|||
base.OnLoad(e);
|
||||
if(!IsDesignMode) {
|
||||
mnuCopyToClipboard.InitShortcut(this, nameof(DebuggerShortcutsConfig.Copy));
|
||||
mnuEditInMemoryViewer.InitShortcut(this, nameof(DebuggerShortcutsConfig.CodeWindow_EditInMemoryViewer));
|
||||
}
|
||||
}
|
||||
|
||||
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
|
||||
{
|
||||
if(ctxMenu.ProcessCommandKey(ref msg, keyData)) {
|
||||
return true;
|
||||
}
|
||||
return base.ProcessCmdKey(ref msg, keyData);
|
||||
}
|
||||
|
||||
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
||||
public int SelectedTileIndex
|
||||
{
|
||||
|
@ -499,5 +508,27 @@ namespace Mesen.GUI.Debugger.Controls
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void picChrBank_MouseEnter(object sender, EventArgs e)
|
||||
{
|
||||
if(this.ParentForm.ContainsFocus) {
|
||||
this.Focus();
|
||||
}
|
||||
}
|
||||
|
||||
private void mnuEditInMemoryViewer_Click(object sender, EventArgs e)
|
||||
{
|
||||
int baseAddress = _hoverBottomBank ? 0x1000 : 0x0000;
|
||||
if(this.cboChrSelection.SelectedIndex > 1) {
|
||||
baseAddress += (this.cboChrSelection.SelectedIndex - 1) * 0x2000;
|
||||
}
|
||||
|
||||
bool ppuMemory = this.cboChrSelection.SelectedIndex == 0;
|
||||
bool isChrRam = InteropEmu.DebugGetMemorySize(DebugMemoryType.ChrRom) == 0;
|
||||
DebugMemoryType memType = ppuMemory ? DebugMemoryType.PpuMemory : (isChrRam ? DebugMemoryType.ChrRam : DebugMemoryType.ChrRom);
|
||||
|
||||
int tileIndex = GetLargeSpriteIndex(_hoverTileIndex >= 0 ? _hoverTileIndex : _tileIndex);
|
||||
DebugWindowManager.OpenMemoryViewer(baseAddress + tileIndex * 16, memType);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
namespace Mesen.GUI.Debugger.Controls
|
||||
using Mesen.GUI.Controls;
|
||||
|
||||
namespace Mesen.GUI.Debugger.Controls
|
||||
{
|
||||
partial class ctrlNametableViewer
|
||||
{
|
||||
|
@ -30,12 +32,15 @@
|
|||
this.components = new System.ComponentModel.Container();
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.picNametable = new System.Windows.Forms.PictureBox();
|
||||
this.ctxMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.ctxMenu = new ctrlMesenContextMenuStrip(this.components);
|
||||
this.mnuEditInMemoryViewer = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mnuShowInChrViewer = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.mnuCopyHdPack = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mnuCopyNametableHdPack = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.mnuCopyToClipboard = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mnuExportToPng = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.grpTileInfo = new System.Windows.Forms.GroupBox();
|
||||
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.txtPpuAddress = new System.Windows.Forms.TextBox();
|
||||
|
@ -68,8 +73,6 @@
|
|||
this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.lblMirroring = new System.Windows.Forms.Label();
|
||||
this.lblMirroringType = new System.Windows.Forms.Label();
|
||||
this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.mnuExportToPng = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picNametable)).BeginInit();
|
||||
this.ctxMenu.SuspendLayout();
|
||||
|
@ -113,11 +116,13 @@
|
|||
this.picNametable.TabIndex = 0;
|
||||
this.picNametable.TabStop = false;
|
||||
this.picNametable.DoubleClick += new System.EventHandler(this.picNametable_DoubleClick);
|
||||
this.picNametable.MouseEnter += new System.EventHandler(this.picNametable_MouseEnter);
|
||||
this.picNametable.MouseMove += new System.Windows.Forms.MouseEventHandler(this.picNametable_MouseMove);
|
||||
//
|
||||
// ctxMenu
|
||||
//
|
||||
this.ctxMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.mnuEditInMemoryViewer,
|
||||
this.mnuShowInChrViewer,
|
||||
this.toolStripMenuItem1,
|
||||
this.mnuCopyHdPack,
|
||||
|
@ -129,6 +134,14 @@
|
|||
this.ctxMenu.Size = new System.Drawing.Size(261, 148);
|
||||
this.ctxMenu.Opening += new System.ComponentModel.CancelEventHandler(this.ctxMenu_Opening);
|
||||
//
|
||||
// mnuEditInMemoryViewer
|
||||
//
|
||||
this.mnuEditInMemoryViewer.Image = global::Mesen.GUI.Properties.Resources.CheatCode;
|
||||
this.mnuEditInMemoryViewer.Name = "mnuEditInMemoryViewer";
|
||||
this.mnuEditInMemoryViewer.Size = new System.Drawing.Size(260, 22);
|
||||
this.mnuEditInMemoryViewer.Text = "Edit in Memory Viewer";
|
||||
this.mnuEditInMemoryViewer.Click += new System.EventHandler(this.mnuEditInMemoryViewer_Click);
|
||||
//
|
||||
// mnuShowInChrViewer
|
||||
//
|
||||
this.mnuShowInChrViewer.Image = global::Mesen.GUI.Properties.Resources.NextArrow;
|
||||
|
@ -157,6 +170,11 @@
|
|||
this.mnuCopyNametableHdPack.Text = "Copy Nametable (HD Pack Format)";
|
||||
this.mnuCopyNametableHdPack.Click += new System.EventHandler(this.mnuCopyNametableHdPack_Click);
|
||||
//
|
||||
// toolStripMenuItem2
|
||||
//
|
||||
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
|
||||
this.toolStripMenuItem2.Size = new System.Drawing.Size(257, 6);
|
||||
//
|
||||
// mnuCopyToClipboard
|
||||
//
|
||||
this.mnuCopyToClipboard.Image = global::Mesen.GUI.Properties.Resources.Copy;
|
||||
|
@ -165,6 +183,14 @@
|
|||
this.mnuCopyToClipboard.Text = "Copy image to clipboard";
|
||||
this.mnuCopyToClipboard.Click += new System.EventHandler(this.mnuCopyToClipboard_Click);
|
||||
//
|
||||
// mnuExportToPng
|
||||
//
|
||||
this.mnuExportToPng.Image = global::Mesen.GUI.Properties.Resources.Export;
|
||||
this.mnuExportToPng.Name = "mnuExportToPng";
|
||||
this.mnuExportToPng.Size = new System.Drawing.Size(260, 22);
|
||||
this.mnuExportToPng.Text = "Export image to PNG";
|
||||
this.mnuExportToPng.Click += new System.EventHandler(this.mnuExportToPng_Click);
|
||||
//
|
||||
// grpTileInfo
|
||||
//
|
||||
this.grpTileInfo.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
|
||||
|
@ -536,19 +562,6 @@
|
|||
this.lblMirroringType.TabIndex = 1;
|
||||
this.lblMirroringType.Text = "Horizontal";
|
||||
//
|
||||
// toolStripMenuItem2
|
||||
//
|
||||
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
|
||||
this.toolStripMenuItem2.Size = new System.Drawing.Size(257, 6);
|
||||
//
|
||||
// mnuExportToPng
|
||||
//
|
||||
this.mnuExportToPng.Image = global::Mesen.GUI.Properties.Resources.Export;
|
||||
this.mnuExportToPng.Name = "mnuExportToPng";
|
||||
this.mnuExportToPng.Size = new System.Drawing.Size(260, 22);
|
||||
this.mnuExportToPng.Text = "Export image to PNG";
|
||||
this.mnuExportToPng.Click += new System.EventHandler(this.mnuExportToPng_Click);
|
||||
//
|
||||
// ctrlNametableViewer
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
|
@ -601,7 +614,7 @@
|
|||
private System.Windows.Forms.Label lblLocation;
|
||||
private System.Windows.Forms.TextBox txtPpuAddress;
|
||||
private System.Windows.Forms.Label lblPpuAddress;
|
||||
private System.Windows.Forms.ContextMenuStrip ctxMenu;
|
||||
private ctrlMesenContextMenuStrip ctxMenu;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuCopyHdPack;
|
||||
private ctrlTilePalette ctrlTilePalette;
|
||||
private System.Windows.Forms.CheckBox chkHighlightChrTile;
|
||||
|
@ -617,5 +630,6 @@
|
|||
private System.Windows.Forms.CheckBox chkHighlightAttributeUpdates;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem2;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuExportToPng;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuEditInMemoryViewer;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -54,11 +54,20 @@ namespace Mesen.GUI.Debugger.Controls
|
|||
}
|
||||
}
|
||||
|
||||
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
|
||||
{
|
||||
if(ctxMenu.ProcessCommandKey(ref msg, keyData)) {
|
||||
return true;
|
||||
}
|
||||
return base.ProcessCmdKey(ref msg, keyData);
|
||||
}
|
||||
|
||||
protected override void OnLoad(EventArgs e)
|
||||
{
|
||||
base.OnLoad(e);
|
||||
if(!IsDesignMode) {
|
||||
mnuCopyToClipboard.InitShortcut(this, nameof(DebuggerShortcutsConfig.Copy));
|
||||
mnuEditInMemoryViewer.InitShortcut(this, nameof(DebuggerShortcutsConfig.CodeWindow_EditInMemoryViewer));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -87,8 +96,6 @@ namespace Mesen.GUI.Debugger.Controls
|
|||
|
||||
public void RefreshViewer()
|
||||
{
|
||||
_currentPpuAddress = -1;
|
||||
|
||||
int tileIndexOffset = _state.PPU.ControlFlags.BackgroundPatternAddr == 0x1000 ? 256 : 0;
|
||||
lblMirroringType.Text = ResourceHelper.GetEnumText(_state.Cartridge.Mirroring);
|
||||
|
||||
|
@ -153,6 +160,7 @@ namespace Mesen.GUI.Debugger.Controls
|
|||
this.picNametable.Image = target;
|
||||
|
||||
if(_firstDraw) {
|
||||
_currentPpuAddress = 0x2000;
|
||||
UpdateTileInformation(0, 0, 0x2000, 0);
|
||||
_firstDraw = false;
|
||||
}
|
||||
|
@ -458,5 +466,17 @@ namespace Mesen.GUI.Debugger.Controls
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void mnuEditInMemoryViewer_Click(object sender, EventArgs e)
|
||||
{
|
||||
DebugWindowManager.OpenMemoryViewer(_currentPpuAddress, DebugMemoryType.PpuMemory);
|
||||
}
|
||||
|
||||
private void picNametable_MouseEnter(object sender, EventArgs e)
|
||||
{
|
||||
if(this.ParentForm.ContainsFocus) {
|
||||
this.Focus();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
namespace Mesen.GUI.Debugger.Controls
|
||||
using Mesen.GUI.Controls;
|
||||
|
||||
namespace Mesen.GUI.Debugger.Controls
|
||||
{
|
||||
partial class ctrlSpriteViewer
|
||||
{
|
||||
|
@ -35,12 +37,14 @@
|
|||
this.txtSpriteIndex = new System.Windows.Forms.TextBox();
|
||||
this.lblSpriteIndex = new System.Windows.Forms.Label();
|
||||
this.picPreview = new System.Windows.Forms.PictureBox();
|
||||
this.ctxMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.ctxMenu = new Mesen.GUI.Controls.ctrlMesenContextMenuStrip(this.components);
|
||||
this.mnuShowInChrViewer = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.mnuCopyHdPack = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mnuCopyAllSpritesHdPack = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.mnuCopyToClipboard = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mnuExportToPng = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.lblScreenPreview = new System.Windows.Forms.Label();
|
||||
this.lblTile = new System.Windows.Forms.Label();
|
||||
this.picTile = new System.Windows.Forms.PictureBox();
|
||||
|
@ -58,8 +62,7 @@
|
|||
this.chkBackgroundPriority = new System.Windows.Forms.CheckBox();
|
||||
this.ctrlTilePalette = new Mesen.GUI.Debugger.Controls.ctrlTilePalette();
|
||||
this.picSprites = new System.Windows.Forms.PictureBox();
|
||||
this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.mnuExportToPng = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mnuEditInMemoryViewer = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.tableLayoutPanel3.SuspendLayout();
|
||||
this.grpSpriteInfo.SuspendLayout();
|
||||
this.tableLayoutPanel4.SuspendLayout();
|
||||
|
@ -185,6 +188,7 @@
|
|||
// ctxMenu
|
||||
//
|
||||
this.ctxMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.mnuEditInMemoryViewer,
|
||||
this.mnuShowInChrViewer,
|
||||
this.toolStripMenuItem1,
|
||||
this.mnuCopyHdPack,
|
||||
|
@ -193,7 +197,7 @@
|
|||
this.mnuCopyToClipboard,
|
||||
this.mnuExportToPng});
|
||||
this.ctxMenu.Name = "ctxMenu";
|
||||
this.ctxMenu.Size = new System.Drawing.Size(255, 148);
|
||||
this.ctxMenu.Size = new System.Drawing.Size(255, 170);
|
||||
this.ctxMenu.Opening += new System.ComponentModel.CancelEventHandler(this.ctxMenu_Opening);
|
||||
//
|
||||
// mnuShowInChrViewer
|
||||
|
@ -224,6 +228,11 @@
|
|||
this.mnuCopyAllSpritesHdPack.Text = "Copy All Sprites (HD Pack Format)";
|
||||
this.mnuCopyAllSpritesHdPack.Click += new System.EventHandler(this.mnuCopyAllSpritesHdPack_Click);
|
||||
//
|
||||
// toolStripMenuItem2
|
||||
//
|
||||
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
|
||||
this.toolStripMenuItem2.Size = new System.Drawing.Size(251, 6);
|
||||
//
|
||||
// mnuCopyToClipboard
|
||||
//
|
||||
this.mnuCopyToClipboard.Image = global::Mesen.GUI.Properties.Resources.Copy;
|
||||
|
@ -232,6 +241,14 @@
|
|||
this.mnuCopyToClipboard.Text = "Copy image to clipboard";
|
||||
this.mnuCopyToClipboard.Click += new System.EventHandler(this.mnuCopyToClipboard_Click);
|
||||
//
|
||||
// mnuExportToPng
|
||||
//
|
||||
this.mnuExportToPng.Image = global::Mesen.GUI.Properties.Resources.Export;
|
||||
this.mnuExportToPng.Name = "mnuExportToPng";
|
||||
this.mnuExportToPng.Size = new System.Drawing.Size(254, 22);
|
||||
this.mnuExportToPng.Text = "Export image to PNG";
|
||||
this.mnuExportToPng.Click += new System.EventHandler(this.mnuExportToPng_Click);
|
||||
//
|
||||
// lblScreenPreview
|
||||
//
|
||||
this.lblScreenPreview.AutoSize = true;
|
||||
|
@ -421,18 +438,13 @@
|
|||
this.picSprites.MouseLeave += new System.EventHandler(this.picSprites_MouseLeave);
|
||||
this.picSprites.MouseMove += new System.Windows.Forms.MouseEventHandler(this.picSprites_MouseMove);
|
||||
//
|
||||
// toolStripMenuItem2
|
||||
// mnuEditInMemoryViewer
|
||||
//
|
||||
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
|
||||
this.toolStripMenuItem2.Size = new System.Drawing.Size(251, 6);
|
||||
//
|
||||
// mnuExportToPng
|
||||
//
|
||||
this.mnuExportToPng.Image = global::Mesen.GUI.Properties.Resources.Export;
|
||||
this.mnuExportToPng.Name = "mnuExportToPng";
|
||||
this.mnuExportToPng.Size = new System.Drawing.Size(254, 22);
|
||||
this.mnuExportToPng.Text = "Export image to PNG";
|
||||
this.mnuExportToPng.Click += new System.EventHandler(this.mnuExportToPng_Click);
|
||||
this.mnuEditInMemoryViewer.Image = global::Mesen.GUI.Properties.Resources.CheatCode;
|
||||
this.mnuEditInMemoryViewer.Name = "mnuEditInMemoryViewer";
|
||||
this.mnuEditInMemoryViewer.Size = new System.Drawing.Size(254, 22);
|
||||
this.mnuEditInMemoryViewer.Text = "Edit in Memory Viewer";
|
||||
this.mnuEditInMemoryViewer.Click += new System.EventHandler(this.mnuEditInMemoryViewer_Click);
|
||||
//
|
||||
// ctrlSpriteViewer
|
||||
//
|
||||
|
@ -479,7 +491,7 @@
|
|||
private System.Windows.Forms.Label lblSpriteIndex;
|
||||
private System.Windows.Forms.TextBox txtSpriteIndex;
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
|
||||
private System.Windows.Forms.ContextMenuStrip ctxMenu;
|
||||
private ctrlMesenContextMenuStrip ctxMenu;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuCopyHdPack;
|
||||
private System.Windows.Forms.Label lblPalette;
|
||||
private ctrlTilePalette ctrlTilePalette;
|
||||
|
@ -489,5 +501,6 @@
|
|||
private System.Windows.Forms.ToolStripMenuItem mnuCopyAllSpritesHdPack;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem2;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuExportToPng;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuEditInMemoryViewer;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -41,11 +41,20 @@ namespace Mesen.GUI.Debugger.Controls
|
|||
picSprites.Image = new Bitmap(256, 512, PixelFormat.Format32bppArgb);
|
||||
}
|
||||
|
||||
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
|
||||
{
|
||||
if(ctxMenu.ProcessCommandKey(ref msg, keyData)) {
|
||||
return true;
|
||||
}
|
||||
return base.ProcessCmdKey(ref msg, keyData);
|
||||
}
|
||||
|
||||
protected override void OnLoad(EventArgs e)
|
||||
{
|
||||
base.OnLoad(e);
|
||||
if(!IsDesignMode) {
|
||||
mnuCopyToClipboard.InitShortcut(this, nameof(DebuggerShortcutsConfig.Copy));
|
||||
mnuEditInMemoryViewer.InitShortcut(this, nameof(DebuggerShortcutsConfig.CodeWindow_EditInMemoryViewer));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -335,11 +344,17 @@ namespace Mesen.GUI.Debugger.Controls
|
|||
private void picSprites_MouseEnter(object sender, EventArgs e)
|
||||
{
|
||||
_copyPreview = false;
|
||||
if(this.ParentForm.ContainsFocus) {
|
||||
this.Focus();
|
||||
}
|
||||
}
|
||||
|
||||
private void picPreview_MouseEnter(object sender, EventArgs e)
|
||||
{
|
||||
_copyPreview = true;
|
||||
if(this.ParentForm.ContainsFocus) {
|
||||
this.Focus();
|
||||
}
|
||||
}
|
||||
|
||||
private void mnuCopyToClipboard_Click(object sender, EventArgs e)
|
||||
|
@ -404,5 +419,21 @@ namespace Mesen.GUI.Debugger.Controls
|
|||
Clipboard.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
private void mnuEditInMemoryViewer_Click(object sender, EventArgs e)
|
||||
{
|
||||
if(_selectedSprite < 0 && _contextMenuSpriteIndex < 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
int ramAddr = (_selectedSprite >= 0 ? _selectedSprite : _contextMenuSpriteIndex) * 4;
|
||||
int tileIndex = _spriteRam[ramAddr + 1];
|
||||
|
||||
DebugState state = new DebugState();
|
||||
InteropEmu.DebugGetState(ref state);
|
||||
|
||||
int tileIndexOffset = (!_largeSprites && state.PPU.ControlFlags.SpritePatternAddr == 0x1000) ? 256 : 0;
|
||||
DebugWindowManager.OpenMemoryViewer((tileIndex + tileIndexOffset) * 16, DebugMemoryType.PpuMemory);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -170,15 +170,7 @@ namespace Mesen.GUI.Debugger
|
|||
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
|
||||
{
|
||||
if(!this.ctrlScanlineCycle.ContainsFocus) {
|
||||
if(keyData == ConfigManager.Config.DebugInfo.Shortcuts.Copy) {
|
||||
if(this.tabMain.SelectedTab == tpgNametableViewer) {
|
||||
ctrlNametableViewer.CopyToClipboard();
|
||||
} else if(this.tabMain.SelectedTab == tpgChrViewer) {
|
||||
ctrlChrViewer.CopyToClipboard();
|
||||
} else if(this.tabMain.SelectedTab == tpgSpriteViewer) {
|
||||
ctrlSpriteViewer.CopyToClipboard();
|
||||
}
|
||||
} else if(this.tabMain.SelectedTab == tpgChrViewer) {
|
||||
if(this.tabMain.SelectedTab == tpgChrViewer) {
|
||||
bool shift = keyData.HasFlag(Keys.Shift);
|
||||
keyData &= ~Keys.Shift;
|
||||
|
||||
|
|
|
@ -279,6 +279,9 @@
|
|||
<Compile Include="Controls\ctrlLoadingRom.Designer.cs">
|
||||
<DependentUpon>ctrlLoadingRom.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Controls\ctrlMesenContextMenuStrip.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Controls\ctrlMesenMenuStrip.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
|
|
Loading…
Add table
Reference in a new issue