diff --git a/BizHawk.Client.Common/config/Config.cs b/BizHawk.Client.Common/config/Config.cs index bd4e7e692f..2acc5b6b6f 100644 --- a/BizHawk.Client.Common/config/Config.cs +++ b/BizHawk.Client.Common/config/Config.cs @@ -50,6 +50,7 @@ namespace BizHawk.Client.Common public bool StackOSDMessages = true; public int TargetZoomFactor = 2; public int TargetScanlineFilterIntensity = 0; // choose between 0 and 256 + public int TargetDisplayFilter = 0; public RecentFiles RecentRoms = new RecentFiles(8); public bool PauseWhenMenuActivated = true; public bool SaveWindowPosition = true; diff --git a/BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj b/BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj index fa30c49956..29ed0c81ac 100644 --- a/BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj +++ b/BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj @@ -191,6 +191,12 @@ ControllerConfigPanel.cs + + Form + + + DisplayConfigLite.cs + Form @@ -388,7 +394,9 @@ + + @@ -896,6 +904,9 @@ DisplayConfig.cs + + DisplayConfigLite.cs + FirmwaresConfig.cs @@ -1149,6 +1160,7 @@ WatchEditor.cs + SettingsSingleFileGenerator Settings.Designer.cs diff --git a/BizHawk.Client.EmuHawk/DisplayManager/DisplayManager.cs b/BizHawk.Client.EmuHawk/DisplayManager/DisplayManager.cs index 561feea580..77d0d807df 100644 --- a/BizHawk.Client.EmuHawk/DisplayManager/DisplayManager.cs +++ b/BizHawk.Client.EmuHawk/DisplayManager/DisplayManager.cs @@ -37,12 +37,22 @@ namespace BizHawk.Client.EmuHawk Renderer = new GuiRenderer(GL); VideoTextureFrugalizer = new TextureFrugalizer(GL); LuaEmuTextureFrugalizer = new TextureFrugalizer(GL); + Video2xFrugalizer = new RenderTargetFrugalizer(GL); using (var xml = typeof(Program).Assembly.GetManifestResourceStream("BizHawk.Client.EmuHawk.Resources.courier16px.fnt")) using (var tex = typeof(Program).Assembly.GetManifestResourceStream("BizHawk.Client.EmuHawk.Resources.courier16px_0.png")) TheOneFont = new StringRenderer(GL, xml, tex); + + using (var stream = typeof(Program).Assembly.GetManifestResourceStream("BizHawk.Client.EmuHawk.DisplayManager.Filters.hq2x.glsl")) + { + var str = new System.IO.StreamReader(stream).ReadToEnd(); + RetroShader_Hq2x = new Bizware.BizwareGL.Drivers.OpenTK.RetroShader(GL, str); + } + } + Bizware.BizwareGL.Drivers.OpenTK.RetroShader RetroShader_Hq2x; + public bool Disposed { get; private set; } public void Dispose() @@ -78,6 +88,7 @@ namespace BizHawk.Client.EmuHawk int currEmuWidth, currEmuHeight; TextureFrugalizer VideoTextureFrugalizer, LuaEmuTextureFrugalizer; + RenderTargetFrugalizer Video2xFrugalizer; /// /// This will receive an emulated output frame from an IVideoProvider and run it through the complete frame processing pipeline @@ -101,18 +112,31 @@ namespace BizHawk.Client.EmuHawk luaEmuTexture = LuaEmuTextureFrugalizer.Get(luaEmuSurface); + //apply filter chain (currently, over-simplified) + Texture2d currentTexture = videoTexture; + if (Global.Config.TargetDisplayFilter == 1) + { + var rt = Video2xFrugalizer.Get(videoTexture.IntWidth*2,videoTexture.IntHeight*2); + rt.Bind(); + Size outSize = new Size(videoTexture.IntWidth * 2, videoTexture.IntHeight * 2); + RetroShader_Hq2x.Run(videoTexture, videoTexture.Size, outSize, true); + currentTexture = rt.Texture2d; + } + //begin drawing to the PresentationPanel: GraphicsControl.Begin(); //1. clear it with the background color that the emulator specified GL.SetClearColor(Color.FromArgb(videoProvider.BackgroundColor)); GL.Clear(OpenTK.Graphics.OpenGL.ClearBufferMask.ColorBufferBit); + //2. begin 2d rendering Renderer.Begin(GraphicsControl.Width, GraphicsControl.Height); //3. figure out how to draw the emulator output content - var LL = new LetterboxingLogic(GraphicsControl.Width, GraphicsControl.Height, bb.Width, bb.Height); + var LL = new LetterboxingLogic(GraphicsControl.Width, GraphicsControl.Height, currentTexture.IntWidth, currentTexture.IntHeight); + //4. draw the emulator content Renderer.SetBlendState(GL.BlendNone); @@ -123,7 +147,7 @@ namespace BizHawk.Client.EmuHawk videoTexture.SetFilterLinear(); else videoTexture.SetFilterNearest(); - Renderer.Draw(videoTexture); + Renderer.Draw(currentTexture); //4.b draw the "lua emu surface" which is designed for art matching up exactly with the emulator output Renderer.SetBlendState(GL.BlendNormal); if(luaEmuTexture != null) Renderer.Draw(luaEmuTexture); diff --git a/BizHawk.Client.EmuHawk/DisplayManager/FilterManager.cs b/BizHawk.Client.EmuHawk/DisplayManager/FilterManager.cs new file mode 100644 index 0000000000..48551751ee --- /dev/null +++ b/BizHawk.Client.EmuHawk/DisplayManager/FilterManager.cs @@ -0,0 +1,77 @@ +//https://github.com/Themaister/RetroArch/wiki/GLSL-shaders +//https://github.com/Themaister/Emulator-Shader-Pack/blob/master/Cg/README + +using System; +using System.Drawing; + +using BizHawk.Common; +using BizHawk.Client.Common; + +using BizHawk.Bizware.BizwareGL; + + +//Here, I started making code to support GUI editing of filter chains. +//I decided to go for broke and implement retroarch's system first, and then the GUI editing should be able to internally produce a metashader + +//namespace BizHawk.Client.EmuHawk +//{ +// class FilterManager +// { +// class PipelineState +// { +// public PipelineState(PipelineState other) +// { +// Size = other.Size; +// Format = other.Format; +// } +// public Size Size; +// public string Format; +// } + +// abstract class BaseFilter +// { +// bool Connect(FilterChain chain, BaseFilter parent) +// { +// Chain = chain; +// Parent = parent; +// return OnConnect(); +// } + +// public PipelineState OutputState; +// public FilterChain Chain; +// public BaseFilter Parent; + +// public abstract bool OnConnect(); +// } + +// class FilterChain +// { +// public void AddFilter(BaseFilter filter) +// { +// } +// } + +// class Filter_Grayscale : BaseFilter +// { +// public override bool OnConnect() +// { +// if(Parent.OutputState.Format != "rgb") return false; +// OutputState = new PipelineState { Parent.OutputState; } +// } +// } + +// class Filter_EmuOutput_RGBA : BaseFilter +// { +// public Filter_EmuOutput_RGBA(int width, int height) +// { +// OutputState = new PipelineState() { Size = new Size(width, height), Format = "rgb" }; +// } + +// public override bool OnConnect() +// { +// return true; +// } +// } + +// } +//} \ No newline at end of file diff --git a/BizHawk.Client.EmuHawk/DisplayManager/RenderTargetFrugalizer.cs b/BizHawk.Client.EmuHawk/DisplayManager/RenderTargetFrugalizer.cs new file mode 100644 index 0000000000..0c1ef00136 --- /dev/null +++ b/BizHawk.Client.EmuHawk/DisplayManager/RenderTargetFrugalizer.cs @@ -0,0 +1,68 @@ +using System; +using System.Collections.Generic; + +using BizHawk.Common; +using BizHawk.Emulation.Common; +using BizHawk.Client.Common; + +using BizHawk.Bizware.BizwareGL; + +namespace BizHawk.Client.EmuHawk +{ + /// + /// Recycles a pair of temporary render targets, as long as the dimensions match. + /// When the dimensions dont match, a new one will be allocated + /// + class RenderTargetFrugalizer : IDisposable + { + public RenderTargetFrugalizer(IGL gl) + { + GL = gl; + ResetList(); + } + + public void Dispose() + { + foreach (var ct in CurrentRenderTargets) + if (ct != null) + ct.Dispose(); + ResetList(); + } + + void ResetList() + { + CurrentRenderTargets = new List(); + CurrentRenderTargets.Add(null); + CurrentRenderTargets.Add(null); + } + + IGL GL; + List CurrentRenderTargets; + + public RenderTarget Get(int width, int height) + { + //get the current entry + RenderTarget CurrentRenderTarget = CurrentRenderTargets[0]; + + //check if its rotten and needs recreating + if (CurrentRenderTarget == null || CurrentRenderTarget.Texture2d.IntWidth != width || CurrentRenderTarget.Texture2d.IntHeight != height) + { + //needs recreating. be sure to kill the old one... + if (CurrentRenderTarget != null) + CurrentRenderTarget.Dispose(); + //and make a new one + CurrentRenderTarget = GL.CreateRenderTarget(width, height); + } + else + { + //its good! nothing more to do + } + + //now shuffle the buffers + CurrentRenderTargets.Insert(0, CurrentRenderTargets[1]); + CurrentRenderTargets[1] = CurrentRenderTarget; + + return CurrentRenderTarget; + } + } +} \ No newline at end of file diff --git a/BizHawk.Client.EmuHawk/MainForm.Designer.cs b/BizHawk.Client.EmuHawk/MainForm.Designer.cs index a57637036c..00a421388c 100644 --- a/BizHawk.Client.EmuHawk/MainForm.Designer.cs +++ b/BizHawk.Client.EmuHawk/MainForm.Designer.cs @@ -132,6 +132,7 @@ this.SoundMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.AutofireMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.RewindOptionsMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.DisplayConfigMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.FirmwaresMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator(); this.ConfigEnableSubMenu = new System.Windows.Forms.ToolStripMenuItem(); @@ -1098,42 +1099,42 @@ // x1MenuItem // this.x1MenuItem.Name = "x1MenuItem"; - this.x1MenuItem.Size = new System.Drawing.Size(152, 22); + this.x1MenuItem.Size = new System.Drawing.Size(94, 22); this.x1MenuItem.Text = "&1x"; this.x1MenuItem.Click += new System.EventHandler(this.WindowSize_Click); // // x2MenuItem // this.x2MenuItem.Name = "x2MenuItem"; - this.x2MenuItem.Size = new System.Drawing.Size(152, 22); + this.x2MenuItem.Size = new System.Drawing.Size(94, 22); this.x2MenuItem.Text = "&2x"; this.x2MenuItem.Click += new System.EventHandler(this.WindowSize_Click); // // x3MenuItem // this.x3MenuItem.Name = "x3MenuItem"; - this.x3MenuItem.Size = new System.Drawing.Size(152, 22); + this.x3MenuItem.Size = new System.Drawing.Size(94, 22); this.x3MenuItem.Text = "&3x"; this.x3MenuItem.Click += new System.EventHandler(this.WindowSize_Click); // // x4MenuItem // this.x4MenuItem.Name = "x4MenuItem"; - this.x4MenuItem.Size = new System.Drawing.Size(152, 22); + this.x4MenuItem.Size = new System.Drawing.Size(94, 22); this.x4MenuItem.Text = "&4x"; this.x4MenuItem.Click += new System.EventHandler(this.WindowSize_Click); // // x5MenuItem // this.x5MenuItem.Name = "x5MenuItem"; - this.x5MenuItem.Size = new System.Drawing.Size(152, 22); + this.x5MenuItem.Size = new System.Drawing.Size(94, 22); this.x5MenuItem.Text = "&5x"; this.x5MenuItem.Click += new System.EventHandler(this.WindowSize_Click); // // mzMenuItem // this.mzMenuItem.Name = "mzMenuItem"; - this.mzMenuItem.Size = new System.Drawing.Size(152, 22); + this.mzMenuItem.Size = new System.Drawing.Size(94, 22); this.mzMenuItem.Text = "&Max"; this.mzMenuItem.Click += new System.EventHandler(this.WindowSize_Click); // @@ -1221,6 +1222,7 @@ this.SoundMenuItem, this.AutofireMenuItem, this.RewindOptionsMenuItem, + this.DisplayConfigMenuItem, this.FirmwaresMenuItem, this.toolStripSeparator9, this.ConfigEnableSubMenu, @@ -1294,6 +1296,13 @@ this.RewindOptionsMenuItem.Text = "&Rewind..."; this.RewindOptionsMenuItem.Click += new System.EventHandler(this.RewindOptionsMenuItem_Click); // + // DisplayConfigMenuItem + // + this.DisplayConfigMenuItem.Name = "DisplayConfigMenuItem"; + this.DisplayConfigMenuItem.Size = new System.Drawing.Size(152, 22); + this.DisplayConfigMenuItem.Text = "Display..."; + this.DisplayConfigMenuItem.Click += new System.EventHandler(this.DisplayConfigMenuItem_Click); + // // FirmwaresMenuItem // this.FirmwaresMenuItem.Name = "FirmwaresMenuItem"; @@ -3335,6 +3344,7 @@ private System.Windows.Forms.ToolStripMenuItem gBInSGBToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem nESInQuickNESToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem batchRunnerToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem DisplayConfigMenuItem; } } diff --git a/BizHawk.Client.EmuHawk/MainForm.cs b/BizHawk.Client.EmuHawk/MainForm.cs index ad7245ea28..3c6e4ba032 100644 --- a/BizHawk.Client.EmuHawk/MainForm.cs +++ b/BizHawk.Client.EmuHawk/MainForm.cs @@ -3005,5 +3005,13 @@ namespace BizHawk.Client.EmuHawk gBInSGBToolStripMenuItem.Checked = Global.Config.GB_AsSGB; nESInQuickNESToolStripMenuItem.Checked = Global.Config.NES_InQuickNES; } + + private void DisplayConfigMenuItem_Click(object sender, EventArgs e) + { + new config.DisplayConfigLite().ShowDialog(); + } + + + } } diff --git a/BizHawk.Client.EmuHawk/config/DisplayConfig.Designer.cs b/BizHawk.Client.EmuHawk/config/DisplayConfig.Designer.cs index a2fc39835a..3e003278e5 100644 --- a/BizHawk.Client.EmuHawk/config/DisplayConfig.Designer.cs +++ b/BizHawk.Client.EmuHawk/config/DisplayConfig.Designer.cs @@ -29,23 +29,23 @@ private void InitializeComponent() { this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); - this.button1 = new System.Windows.Forms.Button(); this.button3 = new System.Windows.Forms.Button(); - this.listView2 = new System.Windows.Forms.ListView(); - this.label1 = new System.Windows.Forms.Label(); - this.columnHeader4 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.panel1 = new System.Windows.Forms.Panel(); + this.listView2 = new System.Windows.Forms.ListView(); + this.columnHeader4 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.label1 = new System.Windows.Forms.Label(); this.panel2 = new System.Windows.Forms.Panel(); this.button2 = new System.Windows.Forms.Button(); + this.button1 = new System.Windows.Forms.Button(); this.panel3 = new System.Windows.Forms.Panel(); - this.label2 = new System.Windows.Forms.Label(); - this.panel4 = new System.Windows.Forms.Panel(); this.listView1 = new System.Windows.Forms.ListView(); this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.checkBox1 = new System.Windows.Forms.CheckBox(); + this.label2 = new System.Windows.Forms.Label(); + this.panel4 = new System.Windows.Forms.Panel(); this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.checkBox1 = new System.Windows.Forms.CheckBox(); this.tableLayoutPanel1.SuspendLayout(); this.panel1.SuspendLayout(); this.panel2.SuspendLayout(); @@ -73,16 +73,6 @@ this.tableLayoutPanel1.Size = new System.Drawing.Size(557, 433); this.tableLayoutPanel1.TabIndex = 1; // - // button1 - // - this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.button1.Location = new System.Drawing.Point(74, 3); - this.button1.Name = "button1"; - this.button1.Size = new System.Drawing.Size(75, 23); - this.button1.TabIndex = 2; - this.button1.Text = "OK"; - this.button1.UseVisualStyleBackColor = true; - // // button3 // this.button3.Location = new System.Drawing.Point(3, 407); @@ -92,6 +82,16 @@ this.button3.Text = "Defaults"; this.button3.UseVisualStyleBackColor = true; // + // panel1 + // + this.panel1.Controls.Add(this.listView2); + this.panel1.Controls.Add(this.label1); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(330, 3); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(224, 398); + this.panel1.TabIndex = 7; + // // listView2 // this.listView2.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { @@ -104,6 +104,11 @@ this.listView2.UseCompatibleStateImageBehavior = false; this.listView2.View = System.Windows.Forms.View.Details; // + // columnHeader4 + // + this.columnHeader4.Text = ""; + this.columnHeader4.Width = 101; + // // label1 // this.label1.AutoSize = true; @@ -114,21 +119,6 @@ this.label1.TabIndex = 6; this.label1.Text = "Library"; // - // columnHeader4 - // - this.columnHeader4.Text = ""; - this.columnHeader4.Width = 101; - // - // panel1 - // - this.panel1.Controls.Add(this.listView2); - this.panel1.Controls.Add(this.label1); - this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel1.Location = new System.Drawing.Point(330, 3); - this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(224, 398); - this.panel1.TabIndex = 7; - // // panel2 // this.panel2.AutoSize = true; @@ -151,6 +141,16 @@ this.button2.Text = "Cancel"; this.button2.UseVisualStyleBackColor = true; // + // button1 + // + this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.button1.Location = new System.Drawing.Point(74, 3); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(75, 23); + this.button1.TabIndex = 2; + this.button1.Text = "OK"; + this.button1.UseVisualStyleBackColor = true; + // // panel3 // this.panel3.Controls.Add(this.listView1); @@ -162,26 +162,6 @@ this.panel3.Size = new System.Drawing.Size(321, 398); this.panel3.TabIndex = 9; // - // label2 - // - this.label2.AutoSize = true; - this.label2.Dock = System.Windows.Forms.DockStyle.Top; - this.label2.Location = new System.Drawing.Point(0, 0); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(172, 13); - this.label2.TabIndex = 7; - this.label2.Text = "Current Layers/Filters Configuration"; - // - // panel4 - // - this.panel4.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; - this.panel4.Controls.Add(this.groupBox1); - this.panel4.Dock = System.Windows.Forms.DockStyle.Bottom; - this.panel4.Location = new System.Drawing.Point(0, 298); - this.panel4.Name = "panel4"; - this.panel4.Size = new System.Drawing.Size(321, 100); - this.panel4.TabIndex = 4; - // // listView1 // this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { @@ -211,15 +191,25 @@ this.columnHeader3.Text = "Description"; this.columnHeader3.Width = 88; // - // checkBox1 + // label2 // - this.checkBox1.AutoSize = true; - this.checkBox1.Location = new System.Drawing.Point(6, 19); - this.checkBox1.Name = "checkBox1"; - this.checkBox1.Size = new System.Drawing.Size(85, 17); - this.checkBox1.TabIndex = 0; - this.checkBox1.Text = "Bilinear Filter"; - this.checkBox1.UseVisualStyleBackColor = true; + this.label2.AutoSize = true; + this.label2.Dock = System.Windows.Forms.DockStyle.Top; + this.label2.Location = new System.Drawing.Point(0, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(172, 13); + this.label2.TabIndex = 7; + this.label2.Text = "Current Layers/Filters Configuration"; + // + // panel4 + // + this.panel4.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.panel4.Controls.Add(this.groupBox1); + this.panel4.Dock = System.Windows.Forms.DockStyle.Bottom; + this.panel4.Location = new System.Drawing.Point(0, 298); + this.panel4.Name = "panel4"; + this.panel4.Size = new System.Drawing.Size(321, 100); + this.panel4.TabIndex = 4; // // groupBox1 // @@ -231,6 +221,16 @@ this.groupBox1.TabStop = false; this.groupBox1.Text = "Final Presentation:"; // + // checkBox1 + // + this.checkBox1.AutoSize = true; + this.checkBox1.Location = new System.Drawing.Point(6, 19); + this.checkBox1.Name = "checkBox1"; + this.checkBox1.Size = new System.Drawing.Size(85, 17); + this.checkBox1.TabIndex = 0; + this.checkBox1.Text = "Bilinear Filter"; + this.checkBox1.UseVisualStyleBackColor = true; + // // DisplayConfig // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); diff --git a/BizHawk.Client.EmuHawk/config/DisplayConfigLite.Designer.cs b/BizHawk.Client.EmuHawk/config/DisplayConfigLite.Designer.cs new file mode 100644 index 0000000000..2b0b88ae48 --- /dev/null +++ b/BizHawk.Client.EmuHawk/config/DisplayConfigLite.Designer.cs @@ -0,0 +1,161 @@ +namespace BizHawk.Client.EmuHawk.config +{ + partial class DisplayConfigLite + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.btnCancel = new System.Windows.Forms.Button(); + this.btnOk = new System.Windows.Forms.Button(); + this.checkBilinearFilter = new System.Windows.Forms.CheckBox(); + this.label1 = new System.Windows.Forms.Label(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.rbHq2x = new System.Windows.Forms.RadioButton(); + this.rbScanlines = new System.Windows.Forms.RadioButton(); + this.rbNone = new System.Windows.Forms.RadioButton(); + this.groupBox1.SuspendLayout(); + this.SuspendLayout(); + // + // btnCancel + // + this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.btnCancel.Location = new System.Drawing.Point(205, 201); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Size = new System.Drawing.Size(75, 23); + this.btnCancel.TabIndex = 5; + this.btnCancel.Text = "Cancel"; + this.btnCancel.UseVisualStyleBackColor = true; + // + // btnOk + // + this.btnOk.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnOk.Location = new System.Drawing.Point(124, 201); + this.btnOk.Name = "btnOk"; + this.btnOk.Size = new System.Drawing.Size(75, 23); + this.btnOk.TabIndex = 4; + this.btnOk.Text = "OK"; + this.btnOk.UseVisualStyleBackColor = true; + this.btnOk.Click += new System.EventHandler(this.btnOk_Click); + // + // checkBilinearFilter + // + this.checkBilinearFilter.AutoSize = true; + this.checkBilinearFilter.Location = new System.Drawing.Point(12, 143); + this.checkBilinearFilter.Name = "checkBilinearFilter"; + this.checkBilinearFilter.Size = new System.Drawing.Size(85, 17); + this.checkBilinearFilter.TabIndex = 0; + this.checkBilinearFilter.Text = "Bilinear Filter"; + this.checkBilinearFilter.UseVisualStyleBackColor = true; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 9); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(269, 13); + this.label1.TabIndex = 6; + this.label1.Text = "This is a staging ground for more complex configuration."; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.rbNone); + this.groupBox1.Controls.Add(this.rbScanlines); + this.groupBox1.Controls.Add(this.rbHq2x); + this.groupBox1.Location = new System.Drawing.Point(12, 34); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(200, 92); + this.groupBox1.TabIndex = 7; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Filter"; + // + // rbHq2x + // + this.rbHq2x.AutoSize = true; + this.rbHq2x.Location = new System.Drawing.Point(14, 42); + this.rbHq2x.Name = "rbHq2x"; + this.rbHq2x.Size = new System.Drawing.Size(50, 17); + this.rbHq2x.TabIndex = 0; + this.rbHq2x.TabStop = true; + this.rbHq2x.Text = "Hq2x"; + this.rbHq2x.UseVisualStyleBackColor = true; + // + // rbScanlines + // + this.rbScanlines.AutoSize = true; + this.rbScanlines.Location = new System.Drawing.Point(14, 65); + this.rbScanlines.Name = "rbScanlines"; + this.rbScanlines.Size = new System.Drawing.Size(71, 17); + this.rbScanlines.TabIndex = 1; + this.rbScanlines.TabStop = true; + this.rbScanlines.Text = "Scanlines"; + this.rbScanlines.UseVisualStyleBackColor = true; + // + // rbNone + // + this.rbNone.AutoSize = true; + this.rbNone.Location = new System.Drawing.Point(14, 19); + this.rbNone.Name = "rbNone"; + this.rbNone.Size = new System.Drawing.Size(51, 17); + this.rbNone.TabIndex = 2; + this.rbNone.TabStop = true; + this.rbNone.Text = "None"; + this.rbNone.UseVisualStyleBackColor = true; + // + // DisplayConfigLite + // + this.AcceptButton = this.btnOk; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.btnCancel; + this.ClientSize = new System.Drawing.Size(292, 236); + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.label1); + this.Controls.Add(this.checkBilinearFilter); + this.Controls.Add(this.btnCancel); + this.Controls.Add(this.btnOk); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.Name = "DisplayConfigLite"; + this.Text = "Display Configuration"; + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button btnCancel; + private System.Windows.Forms.Button btnOk; + private System.Windows.Forms.CheckBox checkBilinearFilter; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.RadioButton rbNone; + private System.Windows.Forms.RadioButton rbScanlines; + private System.Windows.Forms.RadioButton rbHq2x; + } +} \ No newline at end of file diff --git a/BizHawk.Client.EmuHawk/config/DisplayConfigLite.cs b/BizHawk.Client.EmuHawk/config/DisplayConfigLite.cs new file mode 100644 index 0000000000..c39ad50ebc --- /dev/null +++ b/BizHawk.Client.EmuHawk/config/DisplayConfigLite.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +using BizHawk.Emulation.Common; +using BizHawk.Client.Common; + +namespace BizHawk.Client.EmuHawk.config +{ + public partial class DisplayConfigLite : Form + { + public DisplayConfigLite() + { + InitializeComponent(); + + rbNone.Checked = Global.Config.TargetDisplayFilter == 0; + rbHq2x.Checked = Global.Config.TargetDisplayFilter == 1; + rbScanlines.Checked = Global.Config.TargetDisplayFilter == 2; + checkBilinearFilter.Checked = Global.Config.DispBlurry; + } + + private void btnOk_Click(object sender, EventArgs e) + { + if(rbNone.Checked) + Global.Config.TargetDisplayFilter = 0; + if (rbHq2x.Checked) + Global.Config.TargetDisplayFilter = 1; + if (rbScanlines.Checked) + Global.Config.TargetDisplayFilter = 2; + + Global.Config.DispBlurry = checkBilinearFilter.Checked; + + DialogResult = System.Windows.Forms.DialogResult.OK; + Close(); + } + } +} diff --git a/BizHawk.Client.EmuHawk/config/DisplayConfigLite.resx b/BizHawk.Client.EmuHawk/config/DisplayConfigLite.resx new file mode 100644 index 0000000000..29dcb1b3a3 --- /dev/null +++ b/BizHawk.Client.EmuHawk/config/DisplayConfigLite.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Bizware/BizHawk.Bizware.BizwareGL.OpenTK/BizHawk.Bizware.BizwareGL.OpenTK.csproj b/Bizware/BizHawk.Bizware.BizwareGL.OpenTK/BizHawk.Bizware.BizwareGL.OpenTK.csproj index 5f0a1ccb97..f1ae381fe4 100644 --- a/Bizware/BizHawk.Bizware.BizwareGL.OpenTK/BizHawk.Bizware.BizwareGL.OpenTK.csproj +++ b/Bizware/BizHawk.Bizware.BizwareGL.OpenTK/BizHawk.Bizware.BizwareGL.OpenTK.csproj @@ -63,6 +63,7 @@ UserControl +