diff --git a/UI/Debugger/Config/DebugInfo.cs b/UI/Debugger/Config/DebugInfo.cs
index 40da9ce..bcc04a1 100644
--- a/UI/Debugger/Config/DebugInfo.cs
+++ b/UI/Debugger/Config/DebugInfo.cs
@@ -19,7 +19,7 @@ namespace Mesen.GUI.Config
public DebuggerShortcutsConfig Shortcuts = new DebuggerShortcutsConfig();
public TraceLoggerInfo TraceLogger = new TraceLoggerInfo();
public HexEditorInfo HexEditor = new HexEditorInfo();
- public EventViewerInfo EventViewer = new EventViewerInfo();
+ public EventViewerConfig EventViewer = new EventViewerConfig();
public DebuggerInfo Debugger = new DebuggerInfo();
public TilemapViewerConfig TilemapViewer = new TilemapViewerConfig();
public TileViewerConfig TileViewer = new TileViewerConfig();
diff --git a/UI/Debugger/Config/EventViewerInfo.cs b/UI/Debugger/Config/EventViewerConfig.cs
similarity index 94%
rename from UI/Debugger/Config/EventViewerInfo.cs
rename to UI/Debugger/Config/EventViewerConfig.cs
index bc355aa..307ccd4 100644
--- a/UI/Debugger/Config/EventViewerInfo.cs
+++ b/UI/Debugger/Config/EventViewerConfig.cs
@@ -8,8 +8,14 @@ using System.Threading.Tasks;
namespace Mesen.GUI.Config
{
- public class EventViewerInfo
+ public class EventViewerConfig
{
+ public Size WindowSize = new Size(0, 0);
+ public Point WindowLocation;
+
+ public int ImageScale = 1;
+ public bool RefreshOnBreakPause = true;
+
public bool ShowPpuRegisterWrites = true;
public bool ShowPpuRegisterReads = true;
public bool ShowCpuRegisterWrites = true;
diff --git a/UI/Debugger/EventViewer/ctrlEventViewerPpuView.Designer.cs b/UI/Debugger/EventViewer/ctrlEventViewerPpuView.Designer.cs
index 497b0e3..909d893 100644
--- a/UI/Debugger/EventViewer/ctrlEventViewerPpuView.Designer.cs
+++ b/UI/Debugger/EventViewer/ctrlEventViewerPpuView.Designer.cs
@@ -30,9 +30,7 @@ namespace Mesen.GUI.Debugger
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
- this.picViewer = new Mesen.GUI.Controls.ctrlMesenPictureBox();
this.tmrOverlay = new System.Windows.Forms.Timer(this.components);
- this.pnlPicture = new System.Windows.Forms.Panel();
this.grpOptions = new System.Windows.Forms.GroupBox();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.chkShowPreviousFrameEvents = new System.Windows.Forms.CheckBox();
@@ -63,8 +61,7 @@ namespace Mesen.GUI.Debugger
this.picPpuReads = new Mesen.GUI.Debugger.ctrlColorPicker();
this.chkShowMarkedBreakpoints = new System.Windows.Forms.CheckBox();
this.picMarkedBreakpoints = new Mesen.GUI.Debugger.ctrlColorPicker();
- ((System.ComponentModel.ISupportInitialize)(this.picViewer)).BeginInit();
- this.pnlPicture.SuspendLayout();
+ this.picViewer = new Mesen.GUI.Debugger.PpuViewer.ctrlImagePanel();
this.grpOptions.SuspendLayout();
this.tableLayoutPanel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.picNmi)).BeginInit();
@@ -80,37 +77,11 @@ namespace Mesen.GUI.Debugger
((System.ComponentModel.ISupportInitialize)(this.picMarkedBreakpoints)).BeginInit();
this.SuspendLayout();
//
- // picViewer
- //
- this.picViewer.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
- this.picViewer.Cursor = System.Windows.Forms.Cursors.Default;
- this.picViewer.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
- this.picViewer.Location = new System.Drawing.Point(0, 0);
- this.picViewer.Margin = new System.Windows.Forms.Padding(0);
- this.picViewer.Name = "picViewer";
- this.picViewer.Size = new System.Drawing.Size(682, 526);
- this.picViewer.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
- this.picViewer.TabIndex = 0;
- this.picViewer.TabStop = false;
- this.picViewer.DoubleClick += new System.EventHandler(this.picPicture_DoubleClick);
- this.picViewer.MouseLeave += new System.EventHandler(this.picPicture_MouseLeave);
- this.picViewer.MouseMove += new System.Windows.Forms.MouseEventHandler(this.picPicture_MouseMove);
- //
// tmrOverlay
//
this.tmrOverlay.Interval = 50;
this.tmrOverlay.Tick += new System.EventHandler(this.tmrOverlay_Tick);
//
- // pnlPicture
- //
- this.pnlPicture.AutoScroll = true;
- this.pnlPicture.Controls.Add(this.picViewer);
- this.pnlPicture.Dock = System.Windows.Forms.DockStyle.Fill;
- this.pnlPicture.Location = new System.Drawing.Point(0, 0);
- this.pnlPicture.Name = "pnlPicture";
- this.pnlPicture.Size = new System.Drawing.Size(686, 529);
- this.pnlPicture.TabIndex = 1;
- //
// grpOptions
//
this.grpOptions.Controls.Add(this.tableLayoutPanel1);
@@ -458,16 +429,29 @@ namespace Mesen.GUI.Debugger
this.picMarkedBreakpoints.TabIndex = 27;
this.picMarkedBreakpoints.TabStop = false;
//
+ // picViewer
+ //
+ this.picViewer.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.picViewer.Image = null;
+ this.picViewer.ImageScale = 1;
+ this.picViewer.ImageSize = new System.Drawing.Size(0, 0);
+ this.picViewer.Location = new System.Drawing.Point(0, 0);
+ this.picViewer.Name = "picViewer";
+ this.picViewer.Selection = new System.Drawing.Rectangle(0, 0, 0, 0);
+ this.picViewer.SelectionWrapPosition = 0;
+ this.picViewer.Size = new System.Drawing.Size(686, 529);
+ this.picViewer.TabIndex = 3;
+ this.picViewer.MouseLeave += new System.EventHandler(this.picPicture_MouseLeave);
+ this.picViewer.MouseMove += new System.Windows.Forms.MouseEventHandler(this.picPicture_MouseMove);
+ //
// ctrlEventViewerPpuView
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.Controls.Add(this.pnlPicture);
+ this.Controls.Add(this.picViewer);
this.Controls.Add(this.grpOptions);
this.Name = "ctrlEventViewerPpuView";
this.Size = new System.Drawing.Size(947, 529);
- ((System.ComponentModel.ISupportInitialize)(this.picViewer)).EndInit();
- this.pnlPicture.ResumeLayout(false);
this.grpOptions.ResumeLayout(false);
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
@@ -487,10 +471,7 @@ namespace Mesen.GUI.Debugger
}
#endregion
-
- private ctrlMesenPictureBox picViewer;
private System.Windows.Forms.Timer tmrOverlay;
- private System.Windows.Forms.Panel pnlPicture;
private System.Windows.Forms.GroupBox grpOptions;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private ctrlColorPicker picNmi;
@@ -521,5 +502,6 @@ namespace Mesen.GUI.Debugger
private System.Windows.Forms.CheckBox chkShowMarkedBreakpoints;
private ctrlColorPicker picMarkedBreakpoints;
private System.Windows.Forms.CheckBox chkShowPreviousFrameEvents;
+ private PpuViewer.ctrlImagePanel picViewer;
}
}
diff --git a/UI/Debugger/EventViewer/ctrlEventViewerPpuView.cs b/UI/Debugger/EventViewer/ctrlEventViewerPpuView.cs
index 17a3bc7..e92b019 100644
--- a/UI/Debugger/EventViewer/ctrlEventViewerPpuView.cs
+++ b/UI/Debugger/EventViewer/ctrlEventViewerPpuView.cs
@@ -27,8 +27,9 @@ namespace Mesen.GUI.Debugger
private Bitmap _displayBitmap = null;
private byte[] _pictureData = null;
private Font _overlayFont;
- private bool _zoomed = false;
-
+
+ public int ImageScale { get { return picViewer.ImageScale; } set { picViewer.ImageScale = value; } }
+
public ctrlEventViewerPpuView()
{
InitializeComponent();
@@ -43,31 +44,31 @@ namespace Mesen.GUI.Debugger
_overlayFont = new Font(BaseControl.MonospaceFontFamily, 10);
_entityBinder.Entity = ConfigManager.Config.Debug.EventViewer;
- _entityBinder.AddBinding(nameof(EventViewerInfo.ApuRegisterReadColor), picApuReads);
- _entityBinder.AddBinding(nameof(EventViewerInfo.ApuRegisterWriteColor), picApuWrites);
- _entityBinder.AddBinding(nameof(EventViewerInfo.CpuRegisterReadColor), picCpuReads);
- _entityBinder.AddBinding(nameof(EventViewerInfo.CpuRegisterWriteColor), picCpuWrites);
- _entityBinder.AddBinding(nameof(EventViewerInfo.IrqColor), picIrq);
- _entityBinder.AddBinding(nameof(EventViewerInfo.BreakpointColor), picMarkedBreakpoints);
- _entityBinder.AddBinding(nameof(EventViewerInfo.NmiColor), picNmi);
- _entityBinder.AddBinding(nameof(EventViewerInfo.PpuRegisterReadColor), picPpuReads);
- _entityBinder.AddBinding(nameof(EventViewerInfo.PpuRegisterWriteColor), picPpuWrites);
- _entityBinder.AddBinding(nameof(EventViewerInfo.WorkRamRegisterReadColor), picWramReads);
- _entityBinder.AddBinding(nameof(EventViewerInfo.WorkRamRegisterWriteColor), picWramWrites);
+ _entityBinder.AddBinding(nameof(EventViewerConfig.ApuRegisterReadColor), picApuReads);
+ _entityBinder.AddBinding(nameof(EventViewerConfig.ApuRegisterWriteColor), picApuWrites);
+ _entityBinder.AddBinding(nameof(EventViewerConfig.CpuRegisterReadColor), picCpuReads);
+ _entityBinder.AddBinding(nameof(EventViewerConfig.CpuRegisterWriteColor), picCpuWrites);
+ _entityBinder.AddBinding(nameof(EventViewerConfig.IrqColor), picIrq);
+ _entityBinder.AddBinding(nameof(EventViewerConfig.BreakpointColor), picMarkedBreakpoints);
+ _entityBinder.AddBinding(nameof(EventViewerConfig.NmiColor), picNmi);
+ _entityBinder.AddBinding(nameof(EventViewerConfig.PpuRegisterReadColor), picPpuReads);
+ _entityBinder.AddBinding(nameof(EventViewerConfig.PpuRegisterWriteColor), picPpuWrites);
+ _entityBinder.AddBinding(nameof(EventViewerConfig.WorkRamRegisterReadColor), picWramReads);
+ _entityBinder.AddBinding(nameof(EventViewerConfig.WorkRamRegisterWriteColor), picWramWrites);
- _entityBinder.AddBinding(nameof(EventViewerInfo.ShowApuRegisterReads), chkShowApuRegisterReads);
- _entityBinder.AddBinding(nameof(EventViewerInfo.ShowApuRegisterWrites), chkShowApuRegisterWrites);
- _entityBinder.AddBinding(nameof(EventViewerInfo.ShowCpuRegisterReads), chkShowCpuRegisterReads);
- _entityBinder.AddBinding(nameof(EventViewerInfo.ShowCpuRegisterWrites), chkShowCpuRegisterWrites);
- _entityBinder.AddBinding(nameof(EventViewerInfo.ShowIrq), chkShowIrq);
- _entityBinder.AddBinding(nameof(EventViewerInfo.ShowMarkedBreakpoints), chkShowMarkedBreakpoints);
- _entityBinder.AddBinding(nameof(EventViewerInfo.ShowNmi), chkShowNmi);
- _entityBinder.AddBinding(nameof(EventViewerInfo.ShowPpuRegisterReads), chkShowPpuRegisterReads);
- _entityBinder.AddBinding(nameof(EventViewerInfo.ShowPpuRegisterWrites), chkShowPpuRegisterWrites);
- _entityBinder.AddBinding(nameof(EventViewerInfo.ShowWorkRamRegisterReads), chkShowWorkRamRegisterReads);
- _entityBinder.AddBinding(nameof(EventViewerInfo.ShowWorkRamRegisterWrites), chkShowWorkRamRegisterWrites);
+ _entityBinder.AddBinding(nameof(EventViewerConfig.ShowApuRegisterReads), chkShowApuRegisterReads);
+ _entityBinder.AddBinding(nameof(EventViewerConfig.ShowApuRegisterWrites), chkShowApuRegisterWrites);
+ _entityBinder.AddBinding(nameof(EventViewerConfig.ShowCpuRegisterReads), chkShowCpuRegisterReads);
+ _entityBinder.AddBinding(nameof(EventViewerConfig.ShowCpuRegisterWrites), chkShowCpuRegisterWrites);
+ _entityBinder.AddBinding(nameof(EventViewerConfig.ShowIrq), chkShowIrq);
+ _entityBinder.AddBinding(nameof(EventViewerConfig.ShowMarkedBreakpoints), chkShowMarkedBreakpoints);
+ _entityBinder.AddBinding(nameof(EventViewerConfig.ShowNmi), chkShowNmi);
+ _entityBinder.AddBinding(nameof(EventViewerConfig.ShowPpuRegisterReads), chkShowPpuRegisterReads);
+ _entityBinder.AddBinding(nameof(EventViewerConfig.ShowPpuRegisterWrites), chkShowPpuRegisterWrites);
+ _entityBinder.AddBinding(nameof(EventViewerConfig.ShowWorkRamRegisterReads), chkShowWorkRamRegisterReads);
+ _entityBinder.AddBinding(nameof(EventViewerConfig.ShowWorkRamRegisterWrites), chkShowWorkRamRegisterWrites);
- _entityBinder.AddBinding(nameof(EventViewerInfo.ShowPreviousFrameEvents), chkShowPreviousFrameEvents);
+ _entityBinder.AddBinding(nameof(EventViewerConfig.ShowPreviousFrameEvents), chkShowPreviousFrameEvents);
_entityBinder.UpdateUI();
@@ -136,14 +137,15 @@ namespace Mesen.GUI.Debugger
g.DrawImage(_overlayBitmap, 0, 0);
if(_lastPos.X >= 0) {
- string location = _lastPos.X / 2 + ", " + (_lastPos.Y / 2);
+ string location = _lastPos.X + ", " + _lastPos.Y;
SizeF size = g.MeasureString(location, _overlayFont);
- int x = _lastPos.X + 15;
- int y = _lastPos.Y - (int)size.Height - 5;
- if(x + size.Width > _displayBitmap.Width - 5) {
- x -= (int)size.Width + 20;
+ int x = _lastPos.X + 5;
+ int y = _lastPos.Y - (int)size.Height / 2 - 5;
+
+ if(x*2 - picViewer.ScrollOffsets.X / picViewer.ImageScale + size.Width > (picViewer.Width / picViewer.ImageScale) - 5) {
+ x -= (int)size.Width / 2 + 10;
}
- if(y < size.Height + 5) {
+ if(y*2 - picViewer.ScrollOffsets.Y / picViewer.ImageScale < size.Height + 5) {
y = _lastPos.Y + 5;
}
@@ -151,6 +153,7 @@ namespace Mesen.GUI.Debugger
}
}
+ picViewer.ImageSize = new Size(_baseWidth, _baseHeight);
picViewer.Image = _displayBitmap;
_needUpdate = false;
}
@@ -188,8 +191,8 @@ namespace Mesen.GUI.Debugger
private Point GetCycleScanline(Point location)
{
return new Point(
- ((location.X & ~0x01) / (_zoomed ? 2 : 1)) / 2,
- ((location.Y & ~0x01) / (_zoomed ? 2 : 1)) / 2
+ ((location.X & ~0x01) / this.ImageScale) / 2,
+ ((location.Y & ~0x01) / this.ImageScale) / 2
);
}
@@ -237,11 +240,10 @@ namespace Mesen.GUI.Debugger
break;
}
- double scale = _zoomed ? 2 : 1;
- UpdateOverlay(new Point((int)(evt.Cycle * 2 * scale), (int)(evt.Scanline * 2 * scale)));
+ UpdateOverlay(new Point((int)(evt.Cycle * 2 * this.ImageScale), (int)(evt.Scanline * 2 * this.ImageScale)));
Form parentForm = this.FindForm();
- Point location = parentForm.PointToClient(picViewer.PointToScreen(e.Location));
+ Point location = parentForm.PointToClient(this.PointToScreen(new Point(e.Location.X - picViewer.ScrollOffsets.X, e.Location.Y - picViewer.ScrollOffsets.Y)));
BaseForm.GetPopupTooltip(parentForm).SetTooltip(location, values);
}
@@ -260,22 +262,20 @@ namespace Mesen.GUI.Debugger
{
UpdateDisplay(false);
}
-
- private void picPicture_DoubleClick(object sender, EventArgs e)
- {
- _zoomed = !_zoomed;
- UpdateViewerSize();
- }
-
- private void UpdateViewerSize()
- {
- picViewer.Width = (_zoomed ? _baseWidth * 2 : _baseWidth) + 2;
- picViewer.Height = (_zoomed ? _baseHeight * 2 : _baseHeight) + 2;
- }
-
+
private void chkOption_Click(object sender, EventArgs e)
{
RefreshViewer();
}
+
+ public void ZoomIn()
+ {
+ picViewer.ZoomIn();
+ }
+
+ public void ZoomOut()
+ {
+ picViewer.ZoomOut();
+ }
}
}
diff --git a/UI/Debugger/EventViewer/frmEventViewer.Designer.cs b/UI/Debugger/EventViewer/frmEventViewer.Designer.cs
index 743192e..a1ec95b 100644
--- a/UI/Debugger/EventViewer/frmEventViewer.Designer.cs
+++ b/UI/Debugger/EventViewer/frmEventViewer.Designer.cs
@@ -28,30 +28,116 @@
private void InitializeComponent()
{
this.ctrlPpuView = new Mesen.GUI.Debugger.ctrlEventViewerPpuView();
+ this.mnuMain = new Mesen.GUI.Controls.ctrlMesenMenuStrip();
+ this.mnuFile = new System.Windows.Forms.ToolStripMenuItem();
+ this.mnuClose = new System.Windows.Forms.ToolStripMenuItem();
+ this.mnuView = new System.Windows.Forms.ToolStripMenuItem();
+ this.mnuRefreshOnBreakPause = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator();
+ this.mnuZoomIn = new System.Windows.Forms.ToolStripMenuItem();
+ this.mnuZoomOut = new System.Windows.Forms.ToolStripMenuItem();
+ this.mnuMain.SuspendLayout();
this.SuspendLayout();
//
// ctrlPpuView
//
this.ctrlPpuView.Dock = System.Windows.Forms.DockStyle.Fill;
- this.ctrlPpuView.Location = new System.Drawing.Point(0, 0);
+ this.ctrlPpuView.ImageScale = 1;
+ this.ctrlPpuView.Location = new System.Drawing.Point(0, 24);
this.ctrlPpuView.Name = "ctrlPpuView";
this.ctrlPpuView.Size = new System.Drawing.Size(945, 531);
this.ctrlPpuView.TabIndex = 0;
//
+ // mnuMain
+ //
+ this.mnuMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.mnuFile,
+ this.mnuView});
+ this.mnuMain.Location = new System.Drawing.Point(0, 0);
+ this.mnuMain.Name = "mnuMain";
+ this.mnuMain.Size = new System.Drawing.Size(945, 24);
+ this.mnuMain.TabIndex = 10;
+ this.mnuMain.Text = "ctrlMesenMenuStrip1";
+ //
+ // mnuFile
+ //
+ this.mnuFile.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.mnuClose});
+ this.mnuFile.Name = "mnuFile";
+ this.mnuFile.Size = new System.Drawing.Size(37, 20);
+ this.mnuFile.Text = "File";
+ //
+ // mnuClose
+ //
+ this.mnuClose.Image = global::Mesen.GUI.Properties.Resources.Exit;
+ this.mnuClose.Name = "mnuClose";
+ this.mnuClose.Size = new System.Drawing.Size(103, 22);
+ this.mnuClose.Text = "Close";
+ //
+ // mnuView
+ //
+ this.mnuView.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.mnuRefreshOnBreakPause,
+ this.toolStripMenuItem1,
+ this.mnuZoomIn,
+ this.mnuZoomOut});
+ this.mnuView.Name = "mnuView";
+ this.mnuView.Size = new System.Drawing.Size(44, 20);
+ this.mnuView.Text = "View";
+ //
+ // mnuRefreshOnBreakPause
+ //
+ this.mnuRefreshOnBreakPause.CheckOnClick = true;
+ this.mnuRefreshOnBreakPause.Name = "mnuRefreshOnBreakPause";
+ this.mnuRefreshOnBreakPause.Size = new System.Drawing.Size(198, 22);
+ this.mnuRefreshOnBreakPause.Text = "Refresh on break/pause";
+ this.mnuRefreshOnBreakPause.Click += new System.EventHandler(this.mnuRefreshOnBreakPause_Click);
+ //
+ // toolStripMenuItem1
+ //
+ this.toolStripMenuItem1.Name = "toolStripMenuItem1";
+ this.toolStripMenuItem1.Size = new System.Drawing.Size(195, 6);
+ //
+ // mnuZoomIn
+ //
+ this.mnuZoomIn.Name = "mnuZoomIn";
+ this.mnuZoomIn.Size = new System.Drawing.Size(198, 22);
+ this.mnuZoomIn.Text = "Zoom In";
+ //
+ // mnuZoomOut
+ //
+ this.mnuZoomOut.Name = "mnuZoomOut";
+ this.mnuZoomOut.Size = new System.Drawing.Size(198, 22);
+ this.mnuZoomOut.Text = "Zoom Out";
+ //
// frmEventViewer
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(945, 531);
+ this.ClientSize = new System.Drawing.Size(945, 555);
this.Controls.Add(this.ctrlPpuView);
+ this.Controls.Add(this.mnuMain);
this.Name = "frmEventViewer";
this.Text = "Event Viewer";
+ this.Controls.SetChildIndex(this.mnuMain, 0);
+ this.Controls.SetChildIndex(this.ctrlPpuView, 0);
+ this.mnuMain.ResumeLayout(false);
+ this.mnuMain.PerformLayout();
this.ResumeLayout(false);
+ this.PerformLayout();
}
#endregion
private ctrlEventViewerPpuView ctrlPpuView;
+ private GUI.Controls.ctrlMesenMenuStrip mnuMain;
+ private System.Windows.Forms.ToolStripMenuItem mnuFile;
+ private System.Windows.Forms.ToolStripMenuItem mnuClose;
+ private System.Windows.Forms.ToolStripMenuItem mnuView;
+ private System.Windows.Forms.ToolStripMenuItem mnuRefreshOnBreakPause;
+ private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1;
+ private System.Windows.Forms.ToolStripMenuItem mnuZoomIn;
+ private System.Windows.Forms.ToolStripMenuItem mnuZoomOut;
}
}
\ No newline at end of file
diff --git a/UI/Debugger/EventViewer/frmEventViewer.cs b/UI/Debugger/EventViewer/frmEventViewer.cs
index a12d079..3f20881 100644
--- a/UI/Debugger/EventViewer/frmEventViewer.cs
+++ b/UI/Debugger/EventViewer/frmEventViewer.cs
@@ -1,4 +1,5 @@
-using Mesen.GUI.Forms;
+using Mesen.GUI.Config;
+using Mesen.GUI.Forms;
using System;
using System.Collections.Generic;
using System.ComponentModel;
@@ -26,6 +27,18 @@ namespace Mesen.GUI.Debugger
base.OnLoad(e);
if(!this.DesignMode) {
+ InitShortcuts();
+
+ EventViewerConfig config = ConfigManager.Config.Debug.EventViewer;
+ if(!config.WindowSize.IsEmpty) {
+ this.StartPosition = FormStartPosition.Manual;
+ this.Size = config.WindowSize;
+ this.Location = config.WindowLocation;
+ }
+
+ mnuRefreshOnBreakPause.Checked = ConfigManager.Config.Debug.EventViewer.RefreshOnBreakPause;
+ ctrlPpuView.ImageScale = config.ImageScale;
+
_notifListener = new NotificationListener();
_notifListener.OnNotification += OnNotificationReceived;
}
@@ -35,12 +48,35 @@ namespace Mesen.GUI.Debugger
{
base.OnFormClosed(e);
_notifListener?.Dispose();
+
+ EventViewerConfig config = ConfigManager.Config.Debug.EventViewer;
+ config.WindowSize = this.WindowState != FormWindowState.Normal ? this.RestoreBounds.Size : this.Size;
+ config.WindowLocation = this.WindowState != FormWindowState.Normal ? this.RestoreBounds.Location : this.Location;
+ config.ImageScale = ctrlPpuView.ImageScale;
+ }
+
+ private void InitShortcuts()
+ {
+ mnuZoomIn.InitShortcut(this, nameof(DebuggerShortcutsConfig.ZoomIn));
+ mnuZoomOut.InitShortcut(this, nameof(DebuggerShortcutsConfig.ZoomOut));
+
+ mnuZoomIn.Click += (s, e) => ctrlPpuView.ZoomIn();
+ mnuZoomOut.Click += (s, e) => ctrlPpuView.ZoomOut();
+ mnuClose.Click += (s, e) => this.Close();
}
private void OnNotificationReceived(NotificationEventArgs e)
{
switch(e.NotificationType) {
case ConsoleNotificationType.CodeBreak:
+ if(ConfigManager.Config.Debug.EventViewer.RefreshOnBreakPause) {
+ ctrlPpuView.RefreshData();
+ this.BeginInvoke((Action)(() => {
+ ctrlPpuView.RefreshViewer();
+ }));
+ }
+ break;
+
case ConsoleNotificationType.EventViewerRefresh:
if((DateTime.Now - _lastUpdate).Milliseconds > 10) {
_lastUpdate = DateTime.Now;
@@ -53,5 +89,11 @@ namespace Mesen.GUI.Debugger
break;
}
}
+
+ private void mnuRefreshOnBreakPause_Click(object sender, EventArgs e)
+ {
+ ConfigManager.Config.Debug.EventViewer.RefreshOnBreakPause = mnuRefreshOnBreakPause.Checked;
+ ConfigManager.ApplyChanges();
+ }
}
}
diff --git a/UI/Debugger/EventViewer/frmEventViewer.resx b/UI/Debugger/EventViewer/frmEventViewer.resx
index 8766f29..d4bbc4c 100644
--- a/UI/Debugger/EventViewer/frmEventViewer.resx
+++ b/UI/Debugger/EventViewer/frmEventViewer.resx
@@ -120,4 +120,7 @@
17, 17
+
+ 107, 17
+
\ No newline at end of file
diff --git a/UI/Debugger/PpuViewer/ctrlImagePanel.cs b/UI/Debugger/PpuViewer/ctrlImagePanel.cs
index 8529277..31f9f41 100644
--- a/UI/Debugger/PpuViewer/ctrlImagePanel.cs
+++ b/UI/Debugger/PpuViewer/ctrlImagePanel.cs
@@ -22,7 +22,10 @@ namespace Mesen.GUI.Debugger.PpuViewer
public Size ImageSize { get { return _imageSize; } set { _imageSize = value; UpdateMapSize(); } }
public Image Image { get { return ctrlImageViewer.Image; } set { ctrlImageViewer.Image = value; } }
public int ImageScale { get { return _scale; } set { _scale = value; UpdateMapSize(); } }
+ public Point ScrollOffsets { get { return new Point(ctrlPanel.HorizontalScroll.Value, ctrlPanel.VerticalScroll.Value); } }
+ public new event EventHandler MouseLeave { add { ctrlImageViewer.MouseLeave += value; } remove { ctrlImageViewer.MouseLeave -= value; } }
+ public new event MouseEventHandler MouseMove { add { ctrlImageViewer.MouseMove += value; } remove { ctrlImageViewer.MouseMove -= value; } }
public new event MouseEventHandler MouseClick { add { ctrlImageViewer.MouseClick += value; } remove { ctrlImageViewer.MouseClick -= value; } }
public ctrlImagePanel()
diff --git a/UI/UI.csproj b/UI/UI.csproj
index 8628bfc..104edbc 100644
--- a/UI/UI.csproj
+++ b/UI/UI.csproj
@@ -326,7 +326,7 @@
ctrlTooltip.cs
-
+