gb gpu view: implement selectable sprite back color and continual mouseover update when the emulator is running. still some quirks and stuff to finish
This commit is contained in:
parent
e07919476c
commit
188e3b8770
|
@ -11,15 +11,22 @@ namespace BizHawk.MultiClient.GBtools
|
||||||
{
|
{
|
||||||
public partial class BmpView : Control
|
public partial class BmpView : Control
|
||||||
{
|
{
|
||||||
|
[Browsable(false)]
|
||||||
public Bitmap bmp { get; private set; }
|
public Bitmap bmp { get; private set; }
|
||||||
|
[Browsable(true)]
|
||||||
bool scaled;
|
bool scaled;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// if true, the backcolor will be drawn. otherwise, nothing (so HOM with transparent images)
|
||||||
|
/// </summary>
|
||||||
|
public bool DrawBackdrop { get; set; }
|
||||||
|
|
||||||
public BmpView()
|
public BmpView()
|
||||||
{
|
{
|
||||||
if (System.Diagnostics.Process.GetCurrentProcess().ProcessName == "devenv")
|
if (System.Diagnostics.Process.GetCurrentProcess().ProcessName == "devenv")
|
||||||
{
|
{
|
||||||
// in the designer
|
// in the designer
|
||||||
this.BackColor = Color.Black;
|
//this.BackColor = Color.Black;
|
||||||
SetStyle(ControlStyles.SupportsTransparentBackColor, true);
|
SetStyle(ControlStyles.SupportsTransparentBackColor, true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -43,6 +50,10 @@ namespace BizHawk.MultiClient.GBtools
|
||||||
|
|
||||||
void BmpView_Paint(object sender, PaintEventArgs e)
|
void BmpView_Paint(object sender, PaintEventArgs e)
|
||||||
{
|
{
|
||||||
|
if (DrawBackdrop)
|
||||||
|
{
|
||||||
|
e.Graphics.Clear(BackColor);
|
||||||
|
}
|
||||||
if (scaled)
|
if (scaled)
|
||||||
{
|
{
|
||||||
e.Graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
|
e.Graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
|
||||||
|
@ -83,8 +94,8 @@ namespace BizHawk.MultiClient.GBtools
|
||||||
}
|
}
|
||||||
|
|
||||||
// kill unused props
|
// kill unused props
|
||||||
[Browsable(false)]
|
//[Browsable(false)]
|
||||||
public override Color BackColor { get { return base.BackColor; } set { base.BackColor = Color.Black; } }
|
//public override Color BackColor { get { return base.BackColor; } set { base.BackColor = Color.Blue; } }
|
||||||
//[Browsable(false)]
|
//[Browsable(false)]
|
||||||
//public override string Text { get { return base.Text; } set { base.Text = value; } }
|
//public override string Text { get { return base.Text; } set { base.Text = value; } }
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,6 +52,9 @@
|
||||||
this.labelMemory = new System.Windows.Forms.Label();
|
this.labelMemory = new System.Windows.Forms.Label();
|
||||||
this.groupBox6 = new System.Windows.Forms.GroupBox();
|
this.groupBox6 = new System.Windows.Forms.GroupBox();
|
||||||
this.labelClipboard = new System.Windows.Forms.Label();
|
this.labelClipboard = new System.Windows.Forms.Label();
|
||||||
|
this.groupBox7 = new System.Windows.Forms.GroupBox();
|
||||||
|
this.checkBoxSavePos = new System.Windows.Forms.CheckBox();
|
||||||
|
this.checkBoxAutoLoad = new System.Windows.Forms.CheckBox();
|
||||||
this.bmpViewMemory = new BizHawk.MultiClient.GBtools.BmpView();
|
this.bmpViewMemory = new BizHawk.MultiClient.GBtools.BmpView();
|
||||||
this.bmpViewDetails = new BizHawk.MultiClient.GBtools.BmpView();
|
this.bmpViewDetails = new BizHawk.MultiClient.GBtools.BmpView();
|
||||||
this.bmpViewOAM = new BizHawk.MultiClient.GBtools.BmpView();
|
this.bmpViewOAM = new BizHawk.MultiClient.GBtools.BmpView();
|
||||||
|
@ -61,9 +64,10 @@
|
||||||
this.bmpViewTiles2 = new BizHawk.MultiClient.GBtools.BmpView();
|
this.bmpViewTiles2 = new BizHawk.MultiClient.GBtools.BmpView();
|
||||||
this.bmpViewBG = new BizHawk.MultiClient.GBtools.BmpView();
|
this.bmpViewBG = new BizHawk.MultiClient.GBtools.BmpView();
|
||||||
this.bmpViewWin = new BizHawk.MultiClient.GBtools.BmpView();
|
this.bmpViewWin = new BizHawk.MultiClient.GBtools.BmpView();
|
||||||
this.groupBox7 = new System.Windows.Forms.GroupBox();
|
this.groupBox8 = new System.Windows.Forms.GroupBox();
|
||||||
this.checkBoxAutoLoad = new System.Windows.Forms.CheckBox();
|
this.panelSpriteBackColor = new System.Windows.Forms.Panel();
|
||||||
this.checkBoxSavePos = new System.Windows.Forms.CheckBox();
|
this.buttonChangeColor = new System.Windows.Forms.Button();
|
||||||
|
this.labelSpriteBackColor = new System.Windows.Forms.Label();
|
||||||
this.groupBox1.SuspendLayout();
|
this.groupBox1.SuspendLayout();
|
||||||
this.groupBox2.SuspendLayout();
|
this.groupBox2.SuspendLayout();
|
||||||
this.groupBox3.SuspendLayout();
|
this.groupBox3.SuspendLayout();
|
||||||
|
@ -73,6 +77,7 @@
|
||||||
this.groupBoxMemory.SuspendLayout();
|
this.groupBoxMemory.SuspendLayout();
|
||||||
this.groupBox6.SuspendLayout();
|
this.groupBox6.SuspendLayout();
|
||||||
this.groupBox7.SuspendLayout();
|
this.groupBox7.SuspendLayout();
|
||||||
|
this.groupBox8.SuspendLayout();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
// label1
|
// label1
|
||||||
|
@ -329,9 +334,43 @@
|
||||||
this.labelClipboard.TabIndex = 0;
|
this.labelClipboard.TabIndex = 0;
|
||||||
this.labelClipboard.Text = "CTRL+C copies the pane under the mouse.";
|
this.labelClipboard.Text = "CTRL+C copies the pane under the mouse.";
|
||||||
//
|
//
|
||||||
|
// groupBox7
|
||||||
|
//
|
||||||
|
this.groupBox7.Controls.Add(this.checkBoxSavePos);
|
||||||
|
this.groupBox7.Controls.Add(this.checkBoxAutoLoad);
|
||||||
|
this.groupBox7.Location = new System.Drawing.Point(350, 312);
|
||||||
|
this.groupBox7.Name = "groupBox7";
|
||||||
|
this.groupBox7.Size = new System.Drawing.Size(192, 41);
|
||||||
|
this.groupBox7.TabIndex = 24;
|
||||||
|
this.groupBox7.TabStop = false;
|
||||||
|
this.groupBox7.Text = "Config";
|
||||||
|
//
|
||||||
|
// checkBoxSavePos
|
||||||
|
//
|
||||||
|
this.checkBoxSavePos.AutoSize = true;
|
||||||
|
this.checkBoxSavePos.Location = new System.Drawing.Point(87, 19);
|
||||||
|
this.checkBoxSavePos.Name = "checkBoxSavePos";
|
||||||
|
this.checkBoxSavePos.Size = new System.Drawing.Size(90, 17);
|
||||||
|
this.checkBoxSavePos.TabIndex = 1;
|
||||||
|
this.checkBoxSavePos.Text = "Save position";
|
||||||
|
this.checkBoxSavePos.UseVisualStyleBackColor = true;
|
||||||
|
this.checkBoxSavePos.CheckedChanged += new System.EventHandler(this.checkBoxSavePos_CheckedChanged);
|
||||||
|
//
|
||||||
|
// checkBoxAutoLoad
|
||||||
|
//
|
||||||
|
this.checkBoxAutoLoad.AutoSize = true;
|
||||||
|
this.checkBoxAutoLoad.Location = new System.Drawing.Point(6, 19);
|
||||||
|
this.checkBoxAutoLoad.Name = "checkBoxAutoLoad";
|
||||||
|
this.checkBoxAutoLoad.Size = new System.Drawing.Size(75, 17);
|
||||||
|
this.checkBoxAutoLoad.TabIndex = 0;
|
||||||
|
this.checkBoxAutoLoad.Text = "Auto-Load";
|
||||||
|
this.checkBoxAutoLoad.UseVisualStyleBackColor = true;
|
||||||
|
this.checkBoxAutoLoad.CheckedChanged += new System.EventHandler(this.checkBoxAutoLoad_CheckedChanged);
|
||||||
|
//
|
||||||
// bmpViewMemory
|
// bmpViewMemory
|
||||||
//
|
//
|
||||||
this.bmpViewMemory.BackColor = System.Drawing.Color.Black;
|
this.bmpViewMemory.BackColor = System.Drawing.Color.Black;
|
||||||
|
this.bmpViewMemory.DrawBackdrop = true;
|
||||||
this.bmpViewMemory.Location = new System.Drawing.Point(6, 19);
|
this.bmpViewMemory.Location = new System.Drawing.Point(6, 19);
|
||||||
this.bmpViewMemory.Name = "bmpViewMemory";
|
this.bmpViewMemory.Name = "bmpViewMemory";
|
||||||
this.bmpViewMemory.Size = new System.Drawing.Size(64, 128);
|
this.bmpViewMemory.Size = new System.Drawing.Size(64, 128);
|
||||||
|
@ -341,6 +380,7 @@
|
||||||
// bmpViewDetails
|
// bmpViewDetails
|
||||||
//
|
//
|
||||||
this.bmpViewDetails.BackColor = System.Drawing.Color.Black;
|
this.bmpViewDetails.BackColor = System.Drawing.Color.Black;
|
||||||
|
this.bmpViewDetails.DrawBackdrop = true;
|
||||||
this.bmpViewDetails.Location = new System.Drawing.Point(6, 19);
|
this.bmpViewDetails.Location = new System.Drawing.Point(6, 19);
|
||||||
this.bmpViewDetails.Name = "bmpViewDetails";
|
this.bmpViewDetails.Name = "bmpViewDetails";
|
||||||
this.bmpViewDetails.Size = new System.Drawing.Size(64, 128);
|
this.bmpViewDetails.Size = new System.Drawing.Size(64, 128);
|
||||||
|
@ -351,6 +391,7 @@
|
||||||
// bmpViewOAM
|
// bmpViewOAM
|
||||||
//
|
//
|
||||||
this.bmpViewOAM.BackColor = System.Drawing.Color.Black;
|
this.bmpViewOAM.BackColor = System.Drawing.Color.Black;
|
||||||
|
this.bmpViewOAM.DrawBackdrop = true;
|
||||||
this.bmpViewOAM.Location = new System.Drawing.Point(6, 19);
|
this.bmpViewOAM.Location = new System.Drawing.Point(6, 19);
|
||||||
this.bmpViewOAM.Name = "bmpViewOAM";
|
this.bmpViewOAM.Name = "bmpViewOAM";
|
||||||
this.bmpViewOAM.Size = new System.Drawing.Size(320, 16);
|
this.bmpViewOAM.Size = new System.Drawing.Size(320, 16);
|
||||||
|
@ -364,6 +405,7 @@
|
||||||
// bmpViewBGPal
|
// bmpViewBGPal
|
||||||
//
|
//
|
||||||
this.bmpViewBGPal.BackColor = System.Drawing.Color.Black;
|
this.bmpViewBGPal.BackColor = System.Drawing.Color.Black;
|
||||||
|
this.bmpViewBGPal.DrawBackdrop = true;
|
||||||
this.bmpViewBGPal.Location = new System.Drawing.Point(6, 32);
|
this.bmpViewBGPal.Location = new System.Drawing.Point(6, 32);
|
||||||
this.bmpViewBGPal.Name = "bmpViewBGPal";
|
this.bmpViewBGPal.Name = "bmpViewBGPal";
|
||||||
this.bmpViewBGPal.Size = new System.Drawing.Size(128, 64);
|
this.bmpViewBGPal.Size = new System.Drawing.Size(128, 64);
|
||||||
|
@ -377,6 +419,7 @@
|
||||||
// bmpViewSPPal
|
// bmpViewSPPal
|
||||||
//
|
//
|
||||||
this.bmpViewSPPal.BackColor = System.Drawing.Color.Black;
|
this.bmpViewSPPal.BackColor = System.Drawing.Color.Black;
|
||||||
|
this.bmpViewSPPal.DrawBackdrop = true;
|
||||||
this.bmpViewSPPal.Location = new System.Drawing.Point(140, 32);
|
this.bmpViewSPPal.Location = new System.Drawing.Point(140, 32);
|
||||||
this.bmpViewSPPal.Name = "bmpViewSPPal";
|
this.bmpViewSPPal.Name = "bmpViewSPPal";
|
||||||
this.bmpViewSPPal.Size = new System.Drawing.Size(128, 64);
|
this.bmpViewSPPal.Size = new System.Drawing.Size(128, 64);
|
||||||
|
@ -390,6 +433,7 @@
|
||||||
// bmpViewTiles1
|
// bmpViewTiles1
|
||||||
//
|
//
|
||||||
this.bmpViewTiles1.BackColor = System.Drawing.Color.Black;
|
this.bmpViewTiles1.BackColor = System.Drawing.Color.Black;
|
||||||
|
this.bmpViewTiles1.DrawBackdrop = false;
|
||||||
this.bmpViewTiles1.Location = new System.Drawing.Point(6, 32);
|
this.bmpViewTiles1.Location = new System.Drawing.Point(6, 32);
|
||||||
this.bmpViewTiles1.Name = "bmpViewTiles1";
|
this.bmpViewTiles1.Name = "bmpViewTiles1";
|
||||||
this.bmpViewTiles1.Size = new System.Drawing.Size(128, 192);
|
this.bmpViewTiles1.Size = new System.Drawing.Size(128, 192);
|
||||||
|
@ -403,6 +447,7 @@
|
||||||
// bmpViewTiles2
|
// bmpViewTiles2
|
||||||
//
|
//
|
||||||
this.bmpViewTiles2.BackColor = System.Drawing.Color.Black;
|
this.bmpViewTiles2.BackColor = System.Drawing.Color.Black;
|
||||||
|
this.bmpViewTiles2.DrawBackdrop = false;
|
||||||
this.bmpViewTiles2.Location = new System.Drawing.Point(140, 32);
|
this.bmpViewTiles2.Location = new System.Drawing.Point(140, 32);
|
||||||
this.bmpViewTiles2.Name = "bmpViewTiles2";
|
this.bmpViewTiles2.Name = "bmpViewTiles2";
|
||||||
this.bmpViewTiles2.Size = new System.Drawing.Size(128, 192);
|
this.bmpViewTiles2.Size = new System.Drawing.Size(128, 192);
|
||||||
|
@ -416,6 +461,7 @@
|
||||||
// bmpViewBG
|
// bmpViewBG
|
||||||
//
|
//
|
||||||
this.bmpViewBG.BackColor = System.Drawing.Color.Black;
|
this.bmpViewBG.BackColor = System.Drawing.Color.Black;
|
||||||
|
this.bmpViewBG.DrawBackdrop = false;
|
||||||
this.bmpViewBG.Location = new System.Drawing.Point(6, 32);
|
this.bmpViewBG.Location = new System.Drawing.Point(6, 32);
|
||||||
this.bmpViewBG.Name = "bmpViewBG";
|
this.bmpViewBG.Name = "bmpViewBG";
|
||||||
this.bmpViewBG.Size = new System.Drawing.Size(256, 256);
|
this.bmpViewBG.Size = new System.Drawing.Size(256, 256);
|
||||||
|
@ -429,6 +475,7 @@
|
||||||
// bmpViewWin
|
// bmpViewWin
|
||||||
//
|
//
|
||||||
this.bmpViewWin.BackColor = System.Drawing.Color.Black;
|
this.bmpViewWin.BackColor = System.Drawing.Color.Black;
|
||||||
|
this.bmpViewWin.DrawBackdrop = false;
|
||||||
this.bmpViewWin.Location = new System.Drawing.Point(268, 32);
|
this.bmpViewWin.Location = new System.Drawing.Point(268, 32);
|
||||||
this.bmpViewWin.Name = "bmpViewWin";
|
this.bmpViewWin.Name = "bmpViewWin";
|
||||||
this.bmpViewWin.Size = new System.Drawing.Size(256, 256);
|
this.bmpViewWin.Size = new System.Drawing.Size(256, 256);
|
||||||
|
@ -439,44 +486,51 @@
|
||||||
this.bmpViewWin.MouseLeave += new System.EventHandler(this.bmpViewWin_MouseLeave);
|
this.bmpViewWin.MouseLeave += new System.EventHandler(this.bmpViewWin_MouseLeave);
|
||||||
this.bmpViewWin.MouseMove += new System.Windows.Forms.MouseEventHandler(this.bmpViewWin_MouseMove);
|
this.bmpViewWin.MouseMove += new System.Windows.Forms.MouseEventHandler(this.bmpViewWin_MouseMove);
|
||||||
//
|
//
|
||||||
// groupBox7
|
// groupBox8
|
||||||
//
|
//
|
||||||
this.groupBox7.Controls.Add(this.checkBoxSavePos);
|
this.groupBox8.Controls.Add(this.labelSpriteBackColor);
|
||||||
this.groupBox7.Controls.Add(this.checkBoxAutoLoad);
|
this.groupBox8.Controls.Add(this.buttonChangeColor);
|
||||||
this.groupBox7.Location = new System.Drawing.Point(350, 312);
|
this.groupBox8.Controls.Add(this.panelSpriteBackColor);
|
||||||
this.groupBox7.Name = "groupBox7";
|
this.groupBox8.Location = new System.Drawing.Point(548, 518);
|
||||||
this.groupBox7.Size = new System.Drawing.Size(192, 41);
|
this.groupBox8.Name = "groupBox8";
|
||||||
this.groupBox7.TabIndex = 24;
|
this.groupBox8.Size = new System.Drawing.Size(274, 48);
|
||||||
this.groupBox7.TabStop = false;
|
this.groupBox8.TabIndex = 25;
|
||||||
this.groupBox7.Text = "Config";
|
this.groupBox8.TabStop = false;
|
||||||
|
this.groupBox8.Text = "Sprite Backdrop";
|
||||||
//
|
//
|
||||||
// checkBoxAutoLoad
|
// panelSpriteBackColor
|
||||||
//
|
//
|
||||||
this.checkBoxAutoLoad.AutoSize = true;
|
this.panelSpriteBackColor.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
|
||||||
this.checkBoxAutoLoad.Location = new System.Drawing.Point(6, 19);
|
this.panelSpriteBackColor.Location = new System.Drawing.Point(6, 19);
|
||||||
this.checkBoxAutoLoad.Name = "checkBoxAutoLoad";
|
this.panelSpriteBackColor.Name = "panelSpriteBackColor";
|
||||||
this.checkBoxAutoLoad.Size = new System.Drawing.Size(75, 17);
|
this.panelSpriteBackColor.Size = new System.Drawing.Size(55, 23);
|
||||||
this.checkBoxAutoLoad.TabIndex = 0;
|
this.panelSpriteBackColor.TabIndex = 0;
|
||||||
this.checkBoxAutoLoad.Text = "Auto-Load";
|
|
||||||
this.checkBoxAutoLoad.UseVisualStyleBackColor = true;
|
|
||||||
this.checkBoxAutoLoad.CheckedChanged += new System.EventHandler(this.checkBoxAutoLoad_CheckedChanged);
|
|
||||||
//
|
//
|
||||||
// checkBoxSavePos
|
// buttonChangeColor
|
||||||
//
|
//
|
||||||
this.checkBoxSavePos.AutoSize = true;
|
this.buttonChangeColor.Location = new System.Drawing.Point(164, 19);
|
||||||
this.checkBoxSavePos.Location = new System.Drawing.Point(87, 19);
|
this.buttonChangeColor.Name = "buttonChangeColor";
|
||||||
this.checkBoxSavePos.Name = "checkBoxSavePos";
|
this.buttonChangeColor.Size = new System.Drawing.Size(104, 23);
|
||||||
this.checkBoxSavePos.Size = new System.Drawing.Size(90, 17);
|
this.buttonChangeColor.TabIndex = 1;
|
||||||
this.checkBoxSavePos.TabIndex = 1;
|
this.buttonChangeColor.Text = "Change Color...";
|
||||||
this.checkBoxSavePos.Text = "Save position";
|
this.buttonChangeColor.UseVisualStyleBackColor = true;
|
||||||
this.checkBoxSavePos.UseVisualStyleBackColor = true;
|
this.buttonChangeColor.Click += new System.EventHandler(this.buttonChangeColor_Click);
|
||||||
this.checkBoxSavePos.CheckedChanged += new System.EventHandler(this.checkBoxSavePos_CheckedChanged);
|
//
|
||||||
|
// labelSpriteBackColor
|
||||||
|
//
|
||||||
|
this.labelSpriteBackColor.AutoSize = true;
|
||||||
|
this.labelSpriteBackColor.Location = new System.Drawing.Point(67, 24);
|
||||||
|
this.labelSpriteBackColor.Name = "labelSpriteBackColor";
|
||||||
|
this.labelSpriteBackColor.Size = new System.Drawing.Size(35, 13);
|
||||||
|
this.labelSpriteBackColor.TabIndex = 2;
|
||||||
|
this.labelSpriteBackColor.Text = "label8";
|
||||||
//
|
//
|
||||||
// GBGPUView
|
// GBGPUView
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.ClientSize = new System.Drawing.Size(834, 524);
|
this.ClientSize = new System.Drawing.Size(834, 590);
|
||||||
|
this.Controls.Add(this.groupBox8);
|
||||||
this.Controls.Add(this.groupBox7);
|
this.Controls.Add(this.groupBox7);
|
||||||
this.Controls.Add(this.groupBox6);
|
this.Controls.Add(this.groupBox6);
|
||||||
this.Controls.Add(this.groupBoxMemory);
|
this.Controls.Add(this.groupBoxMemory);
|
||||||
|
@ -510,6 +564,8 @@
|
||||||
this.groupBox6.PerformLayout();
|
this.groupBox6.PerformLayout();
|
||||||
this.groupBox7.ResumeLayout(false);
|
this.groupBox7.ResumeLayout(false);
|
||||||
this.groupBox7.PerformLayout();
|
this.groupBox7.PerformLayout();
|
||||||
|
this.groupBox8.ResumeLayout(false);
|
||||||
|
this.groupBox8.PerformLayout();
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -552,5 +608,9 @@
|
||||||
private System.Windows.Forms.GroupBox groupBox7;
|
private System.Windows.Forms.GroupBox groupBox7;
|
||||||
private System.Windows.Forms.CheckBox checkBoxSavePos;
|
private System.Windows.Forms.CheckBox checkBoxSavePos;
|
||||||
private System.Windows.Forms.CheckBox checkBoxAutoLoad;
|
private System.Windows.Forms.CheckBox checkBoxAutoLoad;
|
||||||
|
private System.Windows.Forms.GroupBox groupBox8;
|
||||||
|
private System.Windows.Forms.Panel panelSpriteBackColor;
|
||||||
|
private System.Windows.Forms.Button buttonChangeColor;
|
||||||
|
private System.Windows.Forms.Label labelSpriteBackColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -6,6 +6,7 @@ using System.Drawing;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
namespace BizHawk.MultiClient.GBtools
|
namespace BizHawk.MultiClient.GBtools
|
||||||
{
|
{
|
||||||
|
@ -28,6 +29,29 @@ namespace BizHawk.MultiClient.GBtools
|
||||||
|
|
||||||
IntPtr tilespal; // current palette to use on tiles
|
IntPtr tilespal; // current palette to use on tiles
|
||||||
|
|
||||||
|
Color _spriteback;
|
||||||
|
Color spriteback
|
||||||
|
{
|
||||||
|
get { return _spriteback; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_spriteback = value;
|
||||||
|
SetSpriteBack(_spriteback, this);
|
||||||
|
panelSpriteBackColor.BackColor = _spriteback;
|
||||||
|
labelSpriteBackColor.Text = string.Format("({0},{1},{2})", _spriteback.R, _spriteback.G, _spriteback.B);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
static void SetSpriteBack(Color color, Control control)
|
||||||
|
{
|
||||||
|
foreach (Control c in control.Controls)
|
||||||
|
{
|
||||||
|
if (c is BmpView && (c as BmpView).DrawBackdrop)
|
||||||
|
c.BackColor = color;
|
||||||
|
if (c.Controls.Count > 0)
|
||||||
|
SetSpriteBack(color, c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public GBGPUView()
|
public GBGPUView()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
@ -52,6 +76,9 @@ namespace BizHawk.MultiClient.GBtools
|
||||||
|
|
||||||
checkBoxAutoLoad.Checked = Global.Config.AutoLoadGBGPUView;
|
checkBoxAutoLoad.Checked = Global.Config.AutoLoadGBGPUView;
|
||||||
checkBoxSavePos.Checked = Global.Config.GBGPUViewSaveWindowPosition;
|
checkBoxSavePos.Checked = Global.Config.GBGPUViewSaveWindowPosition;
|
||||||
|
|
||||||
|
// TODO: from config
|
||||||
|
spriteback = Color.Black;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Restart()
|
public void Restart()
|
||||||
|
@ -349,6 +376,10 @@ namespace BizHawk.MultiClient.GBtools
|
||||||
p = (int*)sppal;
|
p = (int*)sppal;
|
||||||
for (int i = 0; i < 32; i++)
|
for (int i = 0; i < 32; i++)
|
||||||
p[i] |= unchecked((int)0xff000000);
|
p[i] |= unchecked((int)0xff000000);
|
||||||
|
// transparent all sprite color 0s
|
||||||
|
int c = spriteback.B | spriteback.G << 8 | spriteback.R << 16;
|
||||||
|
for (int i = 0; i < 32; i += 4)
|
||||||
|
p[i] = c;
|
||||||
}
|
}
|
||||||
|
|
||||||
// bg maps
|
// bg maps
|
||||||
|
@ -439,6 +470,11 @@ namespace BizHawk.MultiClient.GBtools
|
||||||
}
|
}
|
||||||
DrawOam(bmpViewOAM.bmp, oam, vram, sppal, lcdc.Bit(2), cgb);
|
DrawOam(bmpViewOAM.bmp, oam, vram, sppal, lcdc.Bit(2), cgb);
|
||||||
bmpViewOAM.Refresh();
|
bmpViewOAM.Refresh();
|
||||||
|
|
||||||
|
// try to run the current mouseover, to refresh if the mouse is being held over a pane while the emulator runs
|
||||||
|
// this doesn't really work well; the update rate seems to be throttled
|
||||||
|
MouseEventArgs e = new MouseEventArgs(System.Windows.Forms.MouseButtons.None, 0, System.Windows.Forms.Cursor.Position.X, System.Windows.Forms.Cursor.Position.Y, 0);
|
||||||
|
this.OnMouseMove(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void GBGPUView_FormClosed(object sender, FormClosedEventArgs e)
|
private void GBGPUView_FormClosed(object sender, FormClosedEventArgs e)
|
||||||
|
@ -878,7 +914,8 @@ namespace BizHawk.MultiClient.GBtools
|
||||||
|
|
||||||
if (found != null && found is BmpView)
|
if (found != null && found is BmpView)
|
||||||
{
|
{
|
||||||
Clipboard.SetImage((found as BmpView).bmp);
|
var bv = found as BmpView;
|
||||||
|
Clipboard.SetImage(bv.bmp);
|
||||||
labelClipboard.Text = found.Text + " copied to clipboard.";
|
labelClipboard.Text = found.Text + " copied to clipboard.";
|
||||||
messagetimer.Stop();
|
messagetimer.Stop();
|
||||||
messagetimer.Start();
|
messagetimer.Start();
|
||||||
|
@ -911,5 +948,25 @@ namespace BizHawk.MultiClient.GBtools
|
||||||
{
|
{
|
||||||
Global.Config.GBGPUViewSaveWindowPosition = (sender as CheckBox).Checked;
|
Global.Config.GBGPUViewSaveWindowPosition = (sender as CheckBox).Checked;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void buttonChangeColor_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
using (var dlg = new ColorDialog())
|
||||||
|
{
|
||||||
|
dlg.AllowFullOpen = true;
|
||||||
|
dlg.AnyColor = true;
|
||||||
|
dlg.FullOpen = true;
|
||||||
|
dlg.Color = spriteback;
|
||||||
|
|
||||||
|
Global.Sound.StopSound();
|
||||||
|
var result = dlg.ShowDialog();
|
||||||
|
Global.Sound.StartSound();
|
||||||
|
if (result == System.Windows.Forms.DialogResult.OK)
|
||||||
|
{
|
||||||
|
// force full opaque
|
||||||
|
spriteback = Color.FromArgb(255, dlg.Color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue