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
+