clean up the NESSyncSettingsForm

This commit is contained in:
adelikat 2015-08-07 17:15:50 -04:00
parent 551acd8c9e
commit d662d9a700
4 changed files with 434 additions and 384 deletions

File diff suppressed because it is too large Load Diff

View File

@ -31,19 +31,20 @@
this.OkBtn = new System.Windows.Forms.Button(); this.OkBtn = new System.Windows.Forms.Button();
this.CancelBtn = new System.Windows.Forms.Button(); this.CancelBtn = new System.Windows.Forms.Button();
this.dataGridView1 = new System.Windows.Forms.DataGridView(); this.dataGridView1 = new System.Windows.Forms.DataGridView();
this.comboBox1 = new System.Windows.Forms.ComboBox(); this.RegionComboBox = new System.Windows.Forms.ComboBox();
this.HelpBtn = new System.Windows.Forms.Button(); this.HelpBtn = new System.Windows.Forms.Button();
this.label2 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label();
this.groupBox1 = new System.Windows.Forms.GroupBox(); this.BoardPropertiesGroupBox = new System.Windows.Forms.GroupBox();
this.label1 = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label();
this.InfoLabel = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
this.groupBox1.SuspendLayout(); this.BoardPropertiesGroupBox.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
// OkBtn // OkBtn
// //
this.OkBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.OkBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.OkBtn.Location = new System.Drawing.Point(221, 341); this.OkBtn.Location = new System.Drawing.Point(221, 354);
this.OkBtn.Name = "OkBtn"; this.OkBtn.Name = "OkBtn";
this.OkBtn.Size = new System.Drawing.Size(67, 23); this.OkBtn.Size = new System.Drawing.Size(67, 23);
this.OkBtn.TabIndex = 0; this.OkBtn.TabIndex = 0;
@ -55,7 +56,7 @@
// //
this.CancelBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.CancelBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.CancelBtn.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.CancelBtn.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.CancelBtn.Location = new System.Drawing.Point(294, 341); this.CancelBtn.Location = new System.Drawing.Point(294, 354);
this.CancelBtn.Name = "CancelBtn"; this.CancelBtn.Name = "CancelBtn";
this.CancelBtn.Size = new System.Drawing.Size(67, 23); this.CancelBtn.Size = new System.Drawing.Size(67, 23);
this.CancelBtn.TabIndex = 1; this.CancelBtn.TabIndex = 1;
@ -75,23 +76,23 @@
this.dataGridView1.Size = new System.Drawing.Size(333, 203); this.dataGridView1.Size = new System.Drawing.Size(333, 203);
this.dataGridView1.TabIndex = 9; this.dataGridView1.TabIndex = 9;
// //
// comboBox1 // RegionComboBox
// //
this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.RegionComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBox1.FormattingEnabled = true; this.RegionComboBox.FormattingEnabled = true;
this.comboBox1.Location = new System.Drawing.Point(12, 26); this.RegionComboBox.Location = new System.Drawing.Point(12, 26);
this.comboBox1.Name = "comboBox1"; this.RegionComboBox.Name = "RegionComboBox";
this.comboBox1.Size = new System.Drawing.Size(235, 21); this.RegionComboBox.Size = new System.Drawing.Size(124, 21);
this.comboBox1.TabIndex = 11; this.RegionComboBox.TabIndex = 11;
// //
// HelpBtn // HelpBtn
// //
this.HelpBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.HelpBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.HelpBtn.Location = new System.Drawing.Point(12, 67); this.HelpBtn.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Help;
this.HelpBtn.Location = new System.Drawing.Point(12, 87);
this.HelpBtn.Name = "HelpBtn"; this.HelpBtn.Name = "HelpBtn";
this.HelpBtn.Size = new System.Drawing.Size(23, 23); this.HelpBtn.Size = new System.Drawing.Size(23, 23);
this.HelpBtn.TabIndex = 10; this.HelpBtn.TabIndex = 10;
this.HelpBtn.Text = "?";
this.HelpBtn.UseVisualStyleBackColor = true; this.HelpBtn.UseVisualStyleBackColor = true;
this.HelpBtn.Click += new System.EventHandler(this.HelpBtn_Click); this.HelpBtn.Click += new System.EventHandler(this.HelpBtn_Click);
// //
@ -104,49 +105,60 @@
this.label2.TabIndex = 12; this.label2.TabIndex = 12;
this.label2.Text = "Region Override:"; this.label2.Text = "Region Override:";
// //
// groupBox1 // BoardPropertiesGroupBox
// //
this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) this.BoardPropertiesGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.groupBox1.Controls.Add(this.dataGridView1); this.BoardPropertiesGroupBox.Controls.Add(this.dataGridView1);
this.groupBox1.Location = new System.Drawing.Point(12, 96); this.BoardPropertiesGroupBox.Location = new System.Drawing.Point(12, 113);
this.groupBox1.Name = "groupBox1"; this.BoardPropertiesGroupBox.Name = "BoardPropertiesGroupBox";
this.groupBox1.Size = new System.Drawing.Size(349, 228); this.BoardPropertiesGroupBox.Size = new System.Drawing.Size(349, 228);
this.groupBox1.TabIndex = 13; this.BoardPropertiesGroupBox.TabIndex = 13;
this.groupBox1.TabStop = false; this.BoardPropertiesGroupBox.TabStop = false;
this.groupBox1.Text = "Board Properties"; this.BoardPropertiesGroupBox.Text = "Custom Board Properties";
// //
// label1 // label1
// //
this.label1.AutoSize = true; this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(12, 50); this.label1.Location = new System.Drawing.Point(12, 53);
this.label1.Name = "label1"; this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(362, 13); this.label1.Size = new System.Drawing.Size(362, 13);
this.label1.TabIndex = 14; this.label1.TabIndex = 14;
this.label1.Text = "Region Override will be ignored when playing Famicom Disk System games."; this.label1.Text = "Region Override will be ignored when playing Famicom Disk System games.";
// //
// InfoLabel
//
this.InfoLabel.AutoSize = true;
this.InfoLabel.Location = new System.Drawing.Point(40, 92);
this.InfoLabel.Name = "InfoLabel";
this.InfoLabel.Size = new System.Drawing.Size(213, 13);
this.InfoLabel.TabIndex = 15;
this.InfoLabel.Text = "The current board has no custom properties";
//
// NESSyncSettingsForm // NESSyncSettingsForm
// //
this.AcceptButton = this.OkBtn; this.AcceptButton = this.OkBtn;
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.CancelButton = this.CancelBtn; this.CancelButton = this.CancelBtn;
this.ClientSize = new System.Drawing.Size(373, 376); this.ClientSize = new System.Drawing.Size(373, 389);
this.Controls.Add(this.InfoLabel);
this.Controls.Add(this.label1); this.Controls.Add(this.label1);
this.Controls.Add(this.groupBox1); this.Controls.Add(this.BoardPropertiesGroupBox);
this.Controls.Add(this.label2); this.Controls.Add(this.label2);
this.Controls.Add(this.comboBox1); this.Controls.Add(this.RegionComboBox);
this.Controls.Add(this.HelpBtn); this.Controls.Add(this.HelpBtn);
this.Controls.Add(this.CancelBtn); this.Controls.Add(this.CancelBtn);
this.Controls.Add(this.OkBtn); this.Controls.Add(this.OkBtn);
this.MinimumSize = new System.Drawing.Size(210, 150); this.MinimumSize = new System.Drawing.Size(210, 150);
this.Name = "NESSyncSettingsForm"; this.Name = "NESSyncSettingsForm";
this.ShowIcon = false; this.ShowIcon = false;
this.Text = "NES Movie Settings"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "NES Advanced Settings";
this.Load += new System.EventHandler(this.NESSyncSettingsForm_Load); this.Load += new System.EventHandler(this.NESSyncSettingsForm_Load);
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
this.groupBox1.ResumeLayout(false); this.BoardPropertiesGroupBox.ResumeLayout(false);
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout(); this.PerformLayout();
@ -157,10 +169,11 @@
private System.Windows.Forms.Button OkBtn; private System.Windows.Forms.Button OkBtn;
private System.Windows.Forms.Button CancelBtn; private System.Windows.Forms.Button CancelBtn;
private System.Windows.Forms.DataGridView dataGridView1; private System.Windows.Forms.DataGridView dataGridView1;
private System.Windows.Forms.ComboBox comboBox1; private System.Windows.Forms.ComboBox RegionComboBox;
private System.Windows.Forms.Button HelpBtn; private System.Windows.Forms.Button HelpBtn;
private System.Windows.Forms.Label label2; private System.Windows.Forms.Label label2;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label1;
internal System.Windows.Forms.GroupBox BoardPropertiesGroupBox;
private System.Windows.Forms.Label InfoLabel;
} }
} }

View File

@ -19,13 +19,26 @@ namespace BizHawk.Client.EmuHawk
public NESSyncSettingsForm() public NESSyncSettingsForm()
{ {
InitializeComponent(); InitializeComponent();
SyncSettings = ((NES)Global.Emulator).GetSyncSettings();
DTDB = new DataTableDictionaryBind<string, string>(SyncSettings.BoardProperties);
dataGridView1.DataSource = DTDB.Table;
comboBox1.DropDownStyle = ComboBoxStyle.DropDownList; SyncSettings = ((NES)Global.Emulator).GetSyncSettings();
comboBox1.Items.AddRange(Enum.GetNames(typeof(NES.NESSyncSettings.Region)));
comboBox1.SelectedItem = Enum.GetName(typeof(NES.NESSyncSettings.Region), SyncSettings.RegionOverride); if ((Global.Emulator as NES).HasMapperProperties)
{
DTDB = new DataTableDictionaryBind<string, string>(SyncSettings.BoardProperties);
dataGridView1.DataSource = DTDB.Table;
InfoLabel.Visible = false;
}
else
{
BoardPropertiesGroupBox.Enabled = false;
dataGridView1.DataSource = null;
dataGridView1.Enabled = false;
InfoLabel.Visible = true;
}
RegionComboBox.Items.AddRange(Enum.GetNames(typeof(NES.NESSyncSettings.Region)));
RegionComboBox.SelectedItem = Enum.GetName(typeof(NES.NESSyncSettings.Region), SyncSettings.RegionOverride);
} }
private void CancelBtn_Click(object sender, EventArgs e) private void CancelBtn_Click(object sender, EventArgs e)
@ -41,9 +54,9 @@ namespace BizHawk.Client.EmuHawk
SyncSettings.RegionOverride = (NES.NESSyncSettings.Region) SyncSettings.RegionOverride = (NES.NESSyncSettings.Region)
Enum.Parse( Enum.Parse(
typeof(NES.NESSyncSettings.Region), typeof(NES.NESSyncSettings.Region),
(string)comboBox1.SelectedItem); (string)RegionComboBox.SelectedItem);
bool changed = DTDB.WasModified || bool changed = (DTDB != null && DTDB.WasModified) ||
old != SyncSettings.RegionOverride; old != SyncSettings.RegionOverride;
DialogResult = DialogResult.OK; DialogResult = DialogResult.OK;
@ -55,7 +68,12 @@ namespace BizHawk.Client.EmuHawk
private void HelpBtn_Click(object sender, EventArgs e) private void HelpBtn_Click(object sender, EventArgs e)
{ {
MessageBox.Show(this, "Board Properties are special per-mapper system settings. They are only useful to advanced users creating Tool Assisted Superplays. No support will be provided if you break something with them.", "Help"); MessageBox.Show(
this,
"Board Properties are special per-mapper system settings. They are only useful to advanced users creating Tool Assisted Superplays. No support will be provided if you break something with them.",
"Help",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
} }
private void NESSyncSettingsForm_Load(object sender, EventArgs e) private void NESSyncSettingsForm_Load(object sender, EventArgs e)

View File

@ -2,6 +2,7 @@
using System.Linq; using System.Linq;
using System.IO; using System.IO;
using System.Collections.Generic; using System.Collections.Generic;
using System.Reflection;
using BizHawk.Common; using BizHawk.Common;
using BizHawk.Common.BufferExtensions; using BizHawk.Common.BufferExtensions;
@ -90,6 +91,24 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
Console.WriteLine("[{0:d5}:{1:d3}:{2:d3}] {3}", Frame, ppu.ppur.status.sl, ppu.ppur.status.cycle, string.Format(format, args)); Console.WriteLine("[{0:d5}:{1:d3}:{2:d3}] {3}", Frame, ppu.ppur.status.sl, ppu.ppur.status.cycle, string.Format(format, args));
} }
public bool HasMapperProperties
{
get
{
var fields = Board.GetType().GetFields();
foreach (var field in fields)
{
var attrib = field.GetCustomAttributes(typeof(MapperPropAttribute), false).OfType<MapperPropAttribute>().SingleOrDefault();
if (attrib != null)
{
return true;
}
}
return false;
}
}
NESWatch GetWatch(NESWatch.EDomain domain, int address) NESWatch GetWatch(NESWatch.EDomain domain, int address)
{ {
if (domain == NESWatch.EDomain.Sysbus) if (domain == NESWatch.EDomain.Sysbus)