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 - +