diff --git a/BizHawk.MultiClient/Config.cs b/BizHawk.MultiClient/Config.cs index d6b235fc82..9a0b7fd607 100644 --- a/BizHawk.MultiClient/Config.cs +++ b/BizHawk.MultiClient/Config.cs @@ -9,6 +9,12 @@ public bool AutoLoadMostRecentRom = false; //TODO: eventually make a class or struct for all the auto-loads, which will include recent roms, movies, etc, as well as autoloading any modeless dialog public RecentFiles RecentRoms = new RecentFiles(8); + // Display options + public bool DisplayFPS = false; + public bool DisplayFrameCounter = false; + public bool DisplayLagCounter = false; + public bool DisplayInput = false; + // RamWatch Settings public bool AutoLoadRamWatch = false; public RecentFiles RecentWatches = new RecentFiles(8); diff --git a/BizHawk.MultiClient/MainForm.Designer.cs b/BizHawk.MultiClient/MainForm.Designer.cs index 51212a51df..6e6a24f40b 100644 --- a/BizHawk.MultiClient/MainForm.Designer.cs +++ b/BizHawk.MultiClient/MainForm.Designer.cs @@ -125,6 +125,9 @@ this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.helpToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator(); + this.gUIToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.pauseWhenMenuActivatedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.menuStrip1.SuspendLayout(); this.SuspendLayout(); // @@ -656,33 +659,33 @@ // pauseToolStripMenuItem // this.pauseToolStripMenuItem.Name = "pauseToolStripMenuItem"; - this.pauseToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.pauseToolStripMenuItem.Size = new System.Drawing.Size(144, 22); this.pauseToolStripMenuItem.Text = "&Pause"; this.pauseToolStripMenuItem.Click += new System.EventHandler(this.pauseToolStripMenuItem_Click); // // toolStripSeparator1 // this.toolStripSeparator1.Name = "toolStripSeparator1"; - this.toolStripSeparator1.Size = new System.Drawing.Size(149, 6); + this.toolStripSeparator1.Size = new System.Drawing.Size(141, 6); // // powerToolStripMenuItem // this.powerToolStripMenuItem.Name = "powerToolStripMenuItem"; - this.powerToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.powerToolStripMenuItem.Size = new System.Drawing.Size(144, 22); this.powerToolStripMenuItem.Text = "Power Cycle"; this.powerToolStripMenuItem.Click += new System.EventHandler(this.powerToolStripMenuItem_Click); // // resetToolStripMenuItem // this.resetToolStripMenuItem.Name = "resetToolStripMenuItem"; - this.resetToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.resetToolStripMenuItem.Size = new System.Drawing.Size(144, 22); this.resetToolStripMenuItem.Text = "&Reset"; this.resetToolStripMenuItem.Click += new System.EventHandler(this.resetToolStripMenuItem_Click); // // toolStripSeparator8 // this.toolStripSeparator8.Name = "toolStripSeparator8"; - this.toolStripSeparator8.Size = new System.Drawing.Size(149, 6); + this.toolStripSeparator8.Size = new System.Drawing.Size(141, 6); // // sega8bitToolStripMenuItem // @@ -691,7 +694,7 @@ this.overclockWhenKnownSafeToolStripMenuItem, this.forceStereoSeparationToolStripMenuItem}); this.sega8bitToolStripMenuItem.Name = "sega8bitToolStripMenuItem"; - this.sega8bitToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.sega8bitToolStripMenuItem.Size = new System.Drawing.Size(144, 22); this.sega8bitToolStripMenuItem.Text = "Sega 8-bit"; // // enableFMChipToolStripMenuItem @@ -722,8 +725,8 @@ this.toolStripSeparator2, this.displayFPSToolStripMenuItem, this.displayFrameCounterToolStripMenuItem, - this.displayInputToolStripMenuItem, - this.displayLagCounterToolStripMenuItem}); + this.displayLagCounterToolStripMenuItem, + this.displayInputToolStripMenuItem}); this.viewToolStripMenuItem.Name = "viewToolStripMenuItem"; this.viewToolStripMenuItem.Size = new System.Drawing.Size(41, 20); this.viewToolStripMenuItem.Text = "&View"; @@ -791,7 +794,6 @@ // // displayFPSToolStripMenuItem // - this.displayFPSToolStripMenuItem.Enabled = false; this.displayFPSToolStripMenuItem.Name = "displayFPSToolStripMenuItem"; this.displayFPSToolStripMenuItem.Size = new System.Drawing.Size(191, 22); this.displayFPSToolStripMenuItem.Text = "Display FPS"; @@ -799,7 +801,6 @@ // // displayFrameCounterToolStripMenuItem // - this.displayFrameCounterToolStripMenuItem.Enabled = false; this.displayFrameCounterToolStripMenuItem.Name = "displayFrameCounterToolStripMenuItem"; this.displayFrameCounterToolStripMenuItem.Size = new System.Drawing.Size(191, 22); this.displayFrameCounterToolStripMenuItem.Text = "Display FrameCounter"; @@ -807,7 +808,6 @@ // // displayInputToolStripMenuItem // - this.displayInputToolStripMenuItem.Enabled = false; this.displayInputToolStripMenuItem.Name = "displayInputToolStripMenuItem"; this.displayInputToolStripMenuItem.Size = new System.Drawing.Size(191, 22); this.displayInputToolStripMenuItem.Text = "Display Input"; @@ -815,7 +815,6 @@ // // displayLagCounterToolStripMenuItem // - this.displayLagCounterToolStripMenuItem.Enabled = false; this.displayLagCounterToolStripMenuItem.Name = "displayLagCounterToolStripMenuItem"; this.displayLagCounterToolStripMenuItem.Size = new System.Drawing.Size(191, 22); this.displayLagCounterToolStripMenuItem.Text = "Display Lag Counter"; @@ -825,7 +824,9 @@ // this.configToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.controllersToolStripMenuItem, - this.hotkeysToolStripMenuItem}); + this.hotkeysToolStripMenuItem, + this.toolStripSeparator9, + this.gUIToolStripMenuItem}); this.configToolStripMenuItem.Name = "configToolStripMenuItem"; this.configToolStripMenuItem.Size = new System.Drawing.Size(50, 20); this.configToolStripMenuItem.Text = "&Config"; @@ -833,7 +834,7 @@ // controllersToolStripMenuItem // this.controllersToolStripMenuItem.Name = "controllersToolStripMenuItem"; - this.controllersToolStripMenuItem.Size = new System.Drawing.Size(137, 22); + this.controllersToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.controllersToolStripMenuItem.Text = "&Controllers"; this.controllersToolStripMenuItem.Click += new System.EventHandler(this.controllersToolStripMenuItem_Click); // @@ -841,7 +842,7 @@ // this.hotkeysToolStripMenuItem.Enabled = false; this.hotkeysToolStripMenuItem.Name = "hotkeysToolStripMenuItem"; - this.hotkeysToolStripMenuItem.Size = new System.Drawing.Size(137, 22); + this.hotkeysToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.hotkeysToolStripMenuItem.Text = "&Hotkeys"; this.hotkeysToolStripMenuItem.Click += new System.EventHandler(this.hotkeysToolStripMenuItem_Click); // @@ -917,6 +918,25 @@ this.aboutToolStripMenuItem.Text = "&About"; this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click); // + // toolStripSeparator9 + // + this.toolStripSeparator9.Name = "toolStripSeparator9"; + this.toolStripSeparator9.Size = new System.Drawing.Size(149, 6); + // + // gUIToolStripMenuItem + // + this.gUIToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.pauseWhenMenuActivatedToolStripMenuItem}); + this.gUIToolStripMenuItem.Name = "gUIToolStripMenuItem"; + this.gUIToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.gUIToolStripMenuItem.Text = "GUI"; + // + // pauseWhenMenuActivatedToolStripMenuItem + // + this.pauseWhenMenuActivatedToolStripMenuItem.Name = "pauseWhenMenuActivatedToolStripMenuItem"; + this.pauseWhenMenuActivatedToolStripMenuItem.Size = new System.Drawing.Size(220, 22); + this.pauseWhenMenuActivatedToolStripMenuItem.Text = "Pause when menu activated"; + // // MainForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -1034,6 +1054,9 @@ private System.Windows.Forms.ToolStripMenuItem stopMovieToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem playFromBeginningToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem forceStereoSeparationToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator9; + private System.Windows.Forms.ToolStripMenuItem gUIToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem pauseWhenMenuActivatedToolStripMenuItem; } } diff --git a/BizHawk.MultiClient/MainForm.cs b/BizHawk.MultiClient/MainForm.cs index 502f896588..18573f9ae9 100644 --- a/BizHawk.MultiClient/MainForm.cs +++ b/BizHawk.MultiClient/MainForm.cs @@ -92,7 +92,7 @@ namespace BizHawk.MultiClient cmdRom = arg; } - if(cmdRom != null) + if(cmdRom != null) //Commandline should always override auto-load LoadRom(cmdRom); else if (Global.Config.AutoLoadMostRecentRom && !Global.Config.RecentRoms.IsEmpty()) LoadRomFromRecent(Global.Config.RecentRoms.GetRecentFileByPosition(0)); @@ -330,8 +330,17 @@ namespace BizHawk.MultiClient [System.Security.SuppressUnmanagedCodeSecurity, DllImport("User32.dll", CharSet = CharSet.Auto)] public static extern bool PeekMessage(out Message msg, IntPtr hWnd, UInt32 msgFilterMin, UInt32 msgFilterMax, UInt32 flags); + /// + /// Handles the display of information like frame counter, lag counter, and input + /// + private void DisplayInfo() + { + //Global.RenderPanel.AddMessage(Global.Emulator.Frame.ToString()); + } + public void GameTick() { + DisplayInfo(); Input.Update(); if (ActiveForm != null) ScreenSaver.ResetTimerPeriodically(); @@ -559,22 +568,34 @@ namespace BizHawk.MultiClient private void displayFPSToolStripMenuItem_Click(object sender, EventArgs e) { - + if (Global.Config.DisplayFPS == true) + Global.Config.DisplayFPS = false; + else + Global.Config.DisplayFPS = true; } private void displayFrameCounterToolStripMenuItem_Click(object sender, EventArgs e) { - + if (Global.Config.DisplayFrameCounter == true) + Global.Config.DisplayFrameCounter = false; + else + Global.Config.DisplayFrameCounter = true; } private void displayInputToolStripMenuItem_Click(object sender, EventArgs e) { - + if (Global.Config.DisplayInput == true) + Global.Config.DisplayInput = false; + else + Global.Config.DisplayInput = true; } private void displayLagCounterToolStripMenuItem_Click(object sender, EventArgs e) { - + if (Global.Config.DisplayLagCounter == true) + Global.Config.DisplayLagCounter = false; + else + Global.Config.DisplayLagCounter = true; } private void screenshotF12ToolStripMenuItem_Click(object sender, EventArgs e) @@ -985,6 +1006,26 @@ namespace BizHawk.MultiClient private void viewToolStripMenuItem_DropDownOpened(object sender, EventArgs e) { + if (Global.Config.DisplayFPS == true) + displayFPSToolStripMenuItem.Checked = true; + else + displayFPSToolStripMenuItem.Checked = false; + + if (Global.Config.DisplayFrameCounter == true) + displayFrameCounterToolStripMenuItem.Checked = true; + else + displayFrameCounterToolStripMenuItem.Checked = false; + + if (Global.Config.DisplayLagCounter == true) + displayLagCounterToolStripMenuItem.Checked = true; + else + displayLagCounterToolStripMenuItem.Checked = false; + + if (Global.Config.DisplayInput == true) + displayInputToolStripMenuItem.Checked = true; + else + displayInputToolStripMenuItem.Checked = false; + x1MenuItem.Checked = false; x2MenuItem.Checked = false; x3MenuItem.Checked = false; diff --git a/BizHawk.MultiClient/RenderPanel.cs b/BizHawk.MultiClient/RenderPanel.cs index 42d9faa0e7..23a32d2b3c 100644 --- a/BizHawk.MultiClient/RenderPanel.cs +++ b/BizHawk.MultiClient/RenderPanel.cs @@ -243,6 +243,16 @@ namespace BizHawk.MultiClient Device.Present(Present.DoNotWait); } + /// + /// Display all screen info objects like fps, frame counter, lag counter, and input display + /// + public void DrawScreenInfo() + { + //TODO: If movie loaded use that frame counter, and also display total movie frame count if read-only + if (Global.Config.DisplayFrameCounter) + MessageFont.DrawString(null, Global.Emulator.Frame.ToString(), 1, 1, new Color4(Color.White)); //TODO: Allow user to set screen coordinates? + } + private List messages = new List(5); public void AddMessage(string message) @@ -253,7 +263,7 @@ namespace BizHawk.MultiClient private void DrawMessages() { messages.RemoveAll(m => DateTime.Now > m.ExpireAt); - + DrawScreenInfo(); int line = 1; for (int i=messages.Count - 1; i>=0; i--, line++) {