Debugger: PPU Viewer - Add auto-refresh speed option (15/30/60 FPS)
This commit is contained in:
parent
bdbb16866b
commit
b2b841421f
7 changed files with 79 additions and 13 deletions
|
@ -183,6 +183,7 @@ namespace Mesen.GUI.Config
|
|||
|
||||
public Point? PpuWindowLocation = null;
|
||||
public bool PpuAutoRefresh = true;
|
||||
public RefreshSpeed PpuAutoRefreshSpeed = RefreshSpeed.Normal;
|
||||
public bool PpuRefreshOnBreak = true;
|
||||
public bool PpuPartialDraw = false;
|
||||
public bool PpuShowPreviousFrame = false;
|
||||
|
|
|
@ -128,7 +128,7 @@ namespace Mesen.GUI.Debugger.Controls
|
|||
_hdCopyHelper.RefreshData();
|
||||
}
|
||||
|
||||
public void RefreshViewer(bool refreshPreview = false)
|
||||
public void RefreshViewer()
|
||||
{
|
||||
_forceChrRefresh = true;
|
||||
|
||||
|
@ -183,6 +183,7 @@ namespace Mesen.GUI.Debugger.Controls
|
|||
}
|
||||
}
|
||||
chrBanks[i].Image = chrBankImage;
|
||||
chrBanks[i].Refresh();
|
||||
} finally {
|
||||
handle.Free();
|
||||
}
|
||||
|
|
|
@ -165,6 +165,7 @@ namespace Mesen.GUI.Debugger.Controls
|
|||
}
|
||||
|
||||
this.picNametable.Image = target;
|
||||
this.picNametable.Refresh();
|
||||
|
||||
if(_firstDraw) {
|
||||
_currentPpuAddress = 0x2000;
|
||||
|
|
|
@ -59,6 +59,8 @@ namespace Mesen.GUI.Debugger.Controls
|
|||
handle.Free();
|
||||
}
|
||||
|
||||
this.picPalette.Refresh();
|
||||
|
||||
if(_paletteIndex == -1) {
|
||||
UpdateColorInformation(0);
|
||||
}
|
||||
|
|
|
@ -103,6 +103,8 @@ namespace Mesen.GUI.Debugger.Controls
|
|||
SelectSpriteUnderCursor();
|
||||
}
|
||||
CreateScreenPreview();
|
||||
picPreview.Refresh();
|
||||
picSprites.Refresh();
|
||||
|
||||
if(_firstDraw) {
|
||||
//Update the UI with the first sprite when showing for the first time
|
||||
|
|
41
GUI.NET/Debugger/frmPpuViewer.Designer.cs
generated
41
GUI.NET/Debugger/frmPpuViewer.Designer.cs
generated
|
@ -38,6 +38,10 @@ namespace Mesen.GUI.Debugger
|
|||
this.mnuClose = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.viewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mnuRefresh = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.autorefreshSpeedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mnuAutoRefreshLow = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mnuAutoRefreshNormal = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mnuAutoRefreshHigh = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.mnuAutoRefresh = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mnuRefreshOnBreak = new System.Windows.Forms.ToolStripMenuItem();
|
||||
|
@ -90,6 +94,7 @@ namespace Mesen.GUI.Debugger
|
|||
//
|
||||
this.viewToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.mnuRefresh,
|
||||
this.autorefreshSpeedToolStripMenuItem,
|
||||
this.toolStripMenuItem1,
|
||||
this.mnuAutoRefresh,
|
||||
this.mnuRefreshOnBreak});
|
||||
|
@ -105,6 +110,38 @@ namespace Mesen.GUI.Debugger
|
|||
this.mnuRefresh.Text = "Refresh";
|
||||
this.mnuRefresh.Click += new System.EventHandler(this.mnuRefresh_Click);
|
||||
//
|
||||
// autorefreshSpeedToolStripMenuItem
|
||||
//
|
||||
this.autorefreshSpeedToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.mnuAutoRefreshLow,
|
||||
this.mnuAutoRefreshNormal,
|
||||
this.mnuAutoRefreshHigh});
|
||||
this.autorefreshSpeedToolStripMenuItem.Image = global::Mesen.GUI.Properties.Resources.Speed;
|
||||
this.autorefreshSpeedToolStripMenuItem.Name = "autorefreshSpeedToolStripMenuItem";
|
||||
this.autorefreshSpeedToolStripMenuItem.Size = new System.Drawing.Size(198, 22);
|
||||
this.autorefreshSpeedToolStripMenuItem.Text = "Auto-refresh Speed";
|
||||
//
|
||||
// mnuAutoRefreshLow
|
||||
//
|
||||
this.mnuAutoRefreshLow.Name = "mnuAutoRefreshLow";
|
||||
this.mnuAutoRefreshLow.Size = new System.Drawing.Size(159, 22);
|
||||
this.mnuAutoRefreshLow.Text = "Low (15 FPS)";
|
||||
this.mnuAutoRefreshLow.Click += new System.EventHandler(this.mnuAutoRefreshSpeed_Click);
|
||||
//
|
||||
// mnuAutoRefreshNormal
|
||||
//
|
||||
this.mnuAutoRefreshNormal.Name = "mnuAutoRefreshNormal";
|
||||
this.mnuAutoRefreshNormal.Size = new System.Drawing.Size(159, 22);
|
||||
this.mnuAutoRefreshNormal.Text = "Normal (30 FPS)";
|
||||
this.mnuAutoRefreshNormal.Click += new System.EventHandler(this.mnuAutoRefreshSpeed_Click);
|
||||
//
|
||||
// mnuAutoRefreshHigh
|
||||
//
|
||||
this.mnuAutoRefreshHigh.Name = "mnuAutoRefreshHigh";
|
||||
this.mnuAutoRefreshHigh.Size = new System.Drawing.Size(159, 22);
|
||||
this.mnuAutoRefreshHigh.Text = "High (60 FPS)";
|
||||
this.mnuAutoRefreshHigh.Click += new System.EventHandler(this.mnuAutoRefreshSpeed_Click);
|
||||
//
|
||||
// toolStripMenuItem1
|
||||
//
|
||||
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
|
||||
|
@ -271,5 +308,9 @@ namespace Mesen.GUI.Debugger
|
|||
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuRefreshOnBreak;
|
||||
private Controls.ctrlScanlineCycleSelect ctrlScanlineCycle;
|
||||
private System.Windows.Forms.ToolStripMenuItem autorefreshSpeedToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuAutoRefreshLow;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuAutoRefreshNormal;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuAutoRefreshHigh;
|
||||
}
|
||||
}
|
|
@ -1,13 +1,4 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using Mesen.GUI.Config;
|
||||
using Mesen.GUI.Forms;
|
||||
|
@ -69,6 +60,7 @@ namespace Mesen.GUI.Debugger
|
|||
this.ctrlPaletteViewer.RefreshViewer();
|
||||
|
||||
this.InitShortcuts();
|
||||
this.UpdateRefreshSpeedMenu();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -96,11 +88,16 @@ namespace Mesen.GUI.Debugger
|
|||
|
||||
case InteropEmu.ConsoleNotificationType.PpuViewerDisplayFrame:
|
||||
if(e.Parameter.ToInt32() == _ppuViewerId) {
|
||||
if(ConfigManager.Config.DebugInfo.PpuAutoRefresh && !_refreshing && (DateTime.Now - _lastUpdate).Milliseconds > 66) {
|
||||
//Update at 15 fps most
|
||||
int refreshDelay = 60;
|
||||
switch(ConfigManager.Config.DebugInfo.PpuAutoRefreshSpeed) {
|
||||
case RefreshSpeed.Low: refreshDelay= 60; break;
|
||||
case RefreshSpeed.Normal: refreshDelay = 30; break;
|
||||
case RefreshSpeed.High: refreshDelay = 12; break;
|
||||
}
|
||||
if(ConfigManager.Config.DebugInfo.PpuAutoRefresh && !_refreshing && (DateTime.Now - _lastUpdate).Milliseconds > refreshDelay) {
|
||||
_lastUpdate = DateTime.Now;
|
||||
this.GetData();
|
||||
this.BeginInvoke((MethodInvoker)(() => this.RefreshViewers()));
|
||||
_lastUpdate = DateTime.Now;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -210,5 +207,26 @@ namespace Mesen.GUI.Debugger
|
|||
}
|
||||
tabMain.SelectTab(tpgChrViewer);
|
||||
}
|
||||
|
||||
private void UpdateRefreshSpeedMenu()
|
||||
{
|
||||
mnuAutoRefreshLow.Checked = ConfigManager.Config.DebugInfo.PpuAutoRefreshSpeed == RefreshSpeed.Low;
|
||||
mnuAutoRefreshNormal.Checked = ConfigManager.Config.DebugInfo.PpuAutoRefreshSpeed == RefreshSpeed.Normal;
|
||||
mnuAutoRefreshHigh.Checked = ConfigManager.Config.DebugInfo.PpuAutoRefreshSpeed == RefreshSpeed.High;
|
||||
}
|
||||
|
||||
private void mnuAutoRefreshSpeed_Click(object sender, EventArgs e)
|
||||
{
|
||||
if(sender == mnuAutoRefreshLow) {
|
||||
ConfigManager.Config.DebugInfo.PpuAutoRefreshSpeed = RefreshSpeed.Low;
|
||||
} else if(sender == mnuAutoRefreshNormal) {
|
||||
ConfigManager.Config.DebugInfo.PpuAutoRefreshSpeed = RefreshSpeed.Normal;
|
||||
} else if(sender == mnuAutoRefreshHigh) {
|
||||
ConfigManager.Config.DebugInfo.PpuAutoRefreshSpeed = RefreshSpeed.High;
|
||||
}
|
||||
ConfigManager.ApplyChanges();
|
||||
|
||||
UpdateRefreshSpeedMenu();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue