diff --git a/BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj b/BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj index 5e3798dc2c..ad085d840b 100644 --- a/BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj +++ b/BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj @@ -412,12 +412,6 @@ ProfileConfig.cs - - Form - - - PSXControllerConfig.cs - Form @@ -1271,9 +1265,6 @@ ProfileConfig.cs - - PSXControllerConfig.cs - PSXControllerConfigNew.cs diff --git a/BizHawk.Client.EmuHawk/MainForm.Designer.cs b/BizHawk.Client.EmuHawk/MainForm.Designer.cs index c1002ff667..4cbf0f2b2e 100644 --- a/BizHawk.Client.EmuHawk/MainForm.Designer.cs +++ b/BizHawk.Client.EmuHawk/MainForm.Designer.cs @@ -2553,7 +2553,7 @@ this.PSXControllerSettingsMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.GameController; this.PSXControllerSettingsMenuItem.Name = "PSXControllerSettingsMenuItem"; this.PSXControllerSettingsMenuItem.Size = new System.Drawing.Size(172, 22); - this.PSXControllerSettingsMenuItem.Text = "Controller Settings"; + this.PSXControllerSettingsMenuItem.Text = "FrontIO Settings"; this.PSXControllerSettingsMenuItem.Click += new System.EventHandler(this.PSXControllerSettingsMenuItem_Click); // // PSXOptionsMenuItem diff --git a/BizHawk.Client.EmuHawk/MainForm.Events.cs b/BizHawk.Client.EmuHawk/MainForm.Events.cs index 2d68d2746c..39adb03adf 100644 --- a/BizHawk.Client.EmuHawk/MainForm.Events.cs +++ b/BizHawk.Client.EmuHawk/MainForm.Events.cs @@ -1746,7 +1746,7 @@ namespace BizHawk.Client.EmuHawk private void PSXControllerSettingsMenuItem_Click(object sender, EventArgs e) { - new PSXControllerConfig().ShowDialog(); + new PSXControllerConfigNew().ShowDialog(); } #endregion diff --git a/BizHawk.Client.EmuHawk/config/NES/NesControllerSettings.cs b/BizHawk.Client.EmuHawk/config/NES/NesControllerSettings.cs index c6d641bbeb..94e7d82c6b 100644 --- a/BizHawk.Client.EmuHawk/config/NES/NesControllerSettings.cs +++ b/BizHawk.Client.EmuHawk/config/NES/NesControllerSettings.cs @@ -58,8 +58,6 @@ namespace BizHawk.Client.EmuHawk SyncSettings.Controls = ctrls; - SyncSettings.Controls = ctrls; - if (changed) { GlobalWin.MainForm.PutCoreSyncSettings(SyncSettings); diff --git a/BizHawk.Client.EmuHawk/config/PSX/PSXControllerConfig.Designer.cs b/BizHawk.Client.EmuHawk/config/PSX/PSXControllerConfig.Designer.cs deleted file mode 100644 index f55c730785..0000000000 --- a/BizHawk.Client.EmuHawk/config/PSX/PSXControllerConfig.Designer.cs +++ /dev/null @@ -1,96 +0,0 @@ -namespace BizHawk.Client.EmuHawk -{ - partial class PSXControllerConfig - { - /// - /// 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() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PSXControllerConfig)); - this.CancelBtn = new System.Windows.Forms.Button(); - this.OkBtn = new System.Windows.Forms.Button(); - this.btnTest = new System.Windows.Forms.Button(); - this.SuspendLayout(); - // - // CancelBtn - // - 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.Location = new System.Drawing.Point(294, 227); - this.CancelBtn.Name = "CancelBtn"; - this.CancelBtn.Size = new System.Drawing.Size(60, 23); - this.CancelBtn.TabIndex = 5; - this.CancelBtn.Text = "&Cancel"; - this.CancelBtn.UseVisualStyleBackColor = true; - this.CancelBtn.Click += new System.EventHandler(this.CancelBtn_Click); - // - // OkBtn - // - this.OkBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.OkBtn.Location = new System.Drawing.Point(228, 227); - this.OkBtn.Name = "OkBtn"; - this.OkBtn.Size = new System.Drawing.Size(60, 23); - this.OkBtn.TabIndex = 4; - this.OkBtn.Text = "&Ok"; - this.OkBtn.UseVisualStyleBackColor = true; - this.OkBtn.Click += new System.EventHandler(this.OkBtn_Click); - // - // btnTest - // - this.btnTest.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnTest.Location = new System.Drawing.Point(12, 227); - this.btnTest.Name = "btnTest"; - this.btnTest.Size = new System.Drawing.Size(60, 23); - this.btnTest.TabIndex = 6; - this.btnTest.Text = "Test"; - this.btnTest.UseVisualStyleBackColor = true; - this.btnTest.Click += new System.EventHandler(this.btnTest_Click); - // - // PSXControllerConfig - // - this.AcceptButton = this.OkBtn; - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.CancelBtn; - this.ClientSize = new System.Drawing.Size(366, 262); - this.Controls.Add(this.btnTest); - this.Controls.Add(this.CancelBtn); - this.Controls.Add(this.OkBtn); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.Name = "PSXControllerConfig"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Controller Settings"; - this.Load += new System.EventHandler(this.PSXControllerConfig_Load); - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.Button CancelBtn; - private System.Windows.Forms.Button OkBtn; - private System.Windows.Forms.Button btnTest; - } -} \ No newline at end of file diff --git a/BizHawk.Client.EmuHawk/config/PSX/PSXControllerConfig.cs b/BizHawk.Client.EmuHawk/config/PSX/PSXControllerConfig.cs deleted file mode 100644 index edafbf1e66..0000000000 --- a/BizHawk.Client.EmuHawk/config/PSX/PSXControllerConfig.cs +++ /dev/null @@ -1,98 +0,0 @@ -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.Common; -using BizHawk.Emulation.Cores.Sony.PSX; -using BizHawk.Client.Common; -using BizHawk.Client.EmuHawk.WinFormExtensions; -using BizHawk.Common.ReflectionExtensions; - -namespace BizHawk.Client.EmuHawk -{ - public partial class PSXControllerConfig : Form - { - public PSXControllerConfig() - { - InitializeComponent(); - } - - private void PSXControllerConfig_Load(object sender, EventArgs e) - { - var psxSettings = ((Octoshock)Global.Emulator).GetSyncSettings(); - for (int i = 0; i < psxSettings.Controllers.Length; i++) - { - Controls.Add(new Label - { - Text = "Controller " + (i + 1), - Location = new Point(15, 19 + (i * 25)), - Width = 85 - }); - Controls.Add(new CheckBox - { - Text = "Connected", - Name = "Controller" + i, - Location = new Point(105, 15 + (i * 25)), - Checked = psxSettings.Controllers[i].IsConnected, - Width = 90 - }); - - var dropdown = new ComboBox - { - Name = "Controller" + i, - DropDownStyle = ComboBoxStyle.DropDownList, - Location = new Point(200, 15 + (i * 25)) - }; - - dropdown.PopulateFromEnum(psxSettings.Controllers[i].Type); - - Controls.Add(dropdown); - } - } - - private void OkBtn_Click(object sender, EventArgs e) - { - var psxSettings = ((Octoshock)Global.Emulator).GetSyncSettings(); - - Controls - .OfType() - .OrderBy(c => c.Name) - .ToList() - .ForEach(c => - { - var index = int.Parse(c.Name.Replace("Controller", "")); - psxSettings.Controllers[index].IsConnected = c.Checked; - }); - - Controls - .OfType() - .OrderBy(c => c.Name) - .ToList() - .ForEach(c => - { - var index = int.Parse(c.Name.Replace("Controller", "")); - psxSettings.Controllers[index].Type = c.SelectedItem.ToString().GetEnumFromDescription(); - }); - - GlobalWin.MainForm.PutCoreSyncSettings(psxSettings); - DialogResult = DialogResult.OK; - Close(); - } - - private void CancelBtn_Click(object sender, EventArgs e) - { - DialogResult = DialogResult.Cancel; - Close(); - } - - private void btnTest_Click(object sender, EventArgs e) - { - new PSXControllerConfigNew().ShowDialog(); - } - } -} diff --git a/BizHawk.Client.EmuHawk/config/PSX/PSXControllerConfig.resx b/BizHawk.Client.EmuHawk/config/PSX/PSXControllerConfig.resx deleted file mode 100644 index 91f294b89b..0000000000 --- a/BizHawk.Client.EmuHawk/config/PSX/PSXControllerConfig.resx +++ /dev/null @@ -1,624 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - - - AAABAAwAMDAQAAAABABoBgAAxgAAACAgEAAAAAQA6AIAAC4HAAAYGBAAAAAEAOgBAAAWCgAAEBAQAAAA - BAAoAQAA/gsAADAwAAAAAAgAqA4AACYNAAAgIAAAAAAIAKgIAADOGwAAGBgAAAAACADIBgAAdiQAABAQ - AAAAAAgAaAUAAD4rAAAwMAAAAAAgAKglAACmMAAAICAAAAAAIACoEAAATlYAABgYAAAAACAAiAkAAPZm - AAAQEAAAAAAgAGgEAAB+cAAAKAAAADAAAABgAAAAAQAEAAAAAACABAAAAAAAAAAAAAAQAAAAEAAAAAAA - AAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP// - /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAHR3AAAAAAAAAAAAAAAAAAAAAAAAAAAAdHdEcAAAAAAAAAAAAAAAAA - AAAAAAAAAHd0d3QAAAAAAAAAAAAAAAAAAAAAAAAAAEd8d3UAAAAAAAAAAAAAAAAAAAAAAAAAB3yHfHZw - AAAAAAAAAAAAAAAAAAAAAAAAd3fIyHVwAAAAAAAAAAAAAAAAAAAAAAAAfHh3jIxwAAAAAAAAAAAAAAAA - AAAAAAAHd8jIyHdgAAAAAAAAAAAAAAAAAAAAAAAHd4yHfIdAAAAAAAAAAAAAAAAAAAAAAAAHyMjIyMhQ - AAAAAAAAAAAAAAAAAAAAAAB3d3eMh4dgAAAAAAAAAAAAAAAAAAAAAAB8jIyIfIdQAAAAAAAAAAAAAAAA - AAAAAAB3h4jIiMh3AAAAAAAAAAAAAAAAAAAAAAB8jIeHeIjHAAAAAAAAAAAAAAAAAAAAAAeIiHh4eMiE - AAAAAAAAAAAAB0dHcAAAAAd8h4eIiIiHcAAAAAAAAAB0d3d3RwAAAAeIeIiIiIh3RwAAAAAAAHR3d8h3 - dAAAAAfIh4iIiHiIx0cAAAAAdHh3eIeHhwAAAAeHiIiIiIiId3R3dHR0eHd4h4eHhAAAAAd4eIiIiIiH - x3d2d3eId4iIiIiIhwAAAAd4eIiI+IiIh3d3eHh3iIiIiIeHwAAAAAfIjHeIiIiIyIeHh4iIiIiIiIiI - cAAAAAeIQ0R3h3iIiMiIiIiIiIiIiIiEAAAAAAfIR3d3d0iIiIh4iIeIiIiIiHhAAAAAAAB4d3d3SHiI - h4fTiIi3iIiIeIwAAAAAAAB3h4d3eIeIiHiJiIuIiIh4jHAAAAAAAAAHyId3h3h4iIh4iIiIiIiHeAAA - AAAAAAAAB8iMiMjIiIiIh4h3aMjHAAAAAAAAAAAAAAdYyIeIiIiMjId6d4eAAAAAAAAAAAAAAAAHdsjH - eIeH6MiId3AAAAAAAAAAAAAAAIiIh4V8jIh4eIfHcAAAAAAAAAAAAACIiIh3AAAHd3h3fHcAAAAAAAAA - AAAAAAiIjHgAAAAAAHx8eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAD///////8AAP///////wAA////////AAD///////8AAP///////wAA//////// - AAD///////8AAP///////wAA//h/////AAD/4D////8AAP/AP////wAA/8A/////AAD/gB////8AAP8A - H////wAA/wAf////AAD+AB////8AAP4AH////wAA/gAf////AAD8AB////8AAPwAH////wAA/AAP//// - AAD8AA////8AAPgAD//+BwAA+AAH//ADAAD4AAP/wAMAAPgAAP8AAwAA+AAAAAADAAD4AAAAAAMAAPgA - AAAABwAA+AAAAAAHAAD4AAAAAA8AAPgAAAAAHwAA/AAAAAA/AAD8AAAAAH8AAP4AAAAA/wAA/4AAAAP/ - AAD/4AAAB/8AAP/4AAAf/wAA/8AAAH//AAD8A+AD//8AAPgP/A///wAA////////AAD///////8AAP// - /////wAA////////AAD///////8AAP///////wAA////////AAAoAAAAIAAAAEAAAAABAAQAAAAAAAAC - AAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAICAgADAwMAAAAD/AAD/ - AAAA//8A/wAAAP8A/wD//wAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdwAAAAAAAAAAAAAAAA - AAd0dAAAAAAAAAAAAAAAAAB3x3cAAAAAAAAAAAAAAAAAd3fHcAAAAAAAAAAAAAAAB3yMh3AAAAAAAAAA - AAAAAAfIeMdwAAAAAAAAAAAAAAAHjIyHQAAAAAAAAAAAAAAAfId4yHAAAAAAAAAAAAAAAHjIyIdQAAAA - AAAAAAAAAAB3iId4YAAAAAAAAAdwAAAAjIiIiIUAAAAAAHd3dAAAB4iIiHh8cAAAAHd3x4dwAAd4iIiI - h3Z3d3R3yIh4cAAHh4iIiIfHd3d4iIiIh3AAB3jHiIiIiHeHiIiIiIwAAAh3dXh4iMiIiIiIiIhwAAAA - yGd0d4iIeIi4iIiMAAAAAIeHd4iIh32IiIiIcAAAAAAAd4jIyIiIiHeHyAAAAAAAAAB3h4iIh8h3dwAA - AAAAAAAIh8fIh4eIaAAAAAAAAACIiHAAB8jIyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////// - ////////////////////n////g////wP///8B///+Af///gH///4B///8Af///AH///wB//n8AP/A+AB - /AHgAAAB4AAAAeAAAAPgAAAH8AAAD/AAAB/8AAA//wAA//4AA//weA////////////////////////// - //8oAAAAGAAAADAAAAABAAQAAAAAACABAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAgAAAgAAAAICAAIAA - AACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRwAAAAAAAAAAAAB3dAAAAAAAAAAAAA - d8dwAAAAAAAAAAAAfId3AAAAAAAAAAAHeMjHAAAAAAAAAAAHyHh3AAAAAAAAAAAHh3eEAAAAAAAAAAAI - yIiHAAAAAHd2cAAIiIiIQAAAd3d4UACHiIiId3d3eHiIcACHh4iIyHeHiIiIcAAIR3d4iIiIiIiMAAAH - d3eIh3iIiIhwAAAAeMh4iIiHiMAAAAAAAHfIiMh4aAAAAAAAiIgHyIfIAAAAAAAIgAAAAIAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8A////AP///wD8f/8A+H//APB/ - /wDwP/8A4D//AOA//wDgP/8A4D/BAOAfAQDAAAEAwAABAOAAAwDgAAcA8AAfAPwAPwDwgP8A5/f/AP// - /wD///8A////ACgAAAAQAAAAIAAAAAEABAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACA - AAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAd1AAAAAAAAB8cAAAAAAAB4eAAAAAAAAHyMgAAAAAAAiIhwAAAHcACI - iHcAd3hwAIz4jIeIiIAAd3eIiIiIAACHeIiIiHAAAACMeMh4AAAAiAAIgAAAAAAAAAAAAAAAAAAAAAAA - AAD//wAA//8AAP//AADj/wAA4/8AAMP/AADB/wAAwfkAAMDBAADAAQAAwAMAAMAHAADwDwAAzn8AAP// - AAD//wAAKAAAADAAAABgAAAAAQAIAAAAAAAACQAAAAAAAAAAAAAAAQAAAAEAAAAAAAA9OzsAZD8/AGg8 - PABtPj4AQkNDAEZIRwBWQkIAV0REAF5AQABbRkYAVklJAFxPTwBTU1MAXFJSAF5ZWQBkQEAAYUREAGZF - RQBqQkEAYEtLAGNPTwBwQUEAfUZGAHJKSgB2SUkAfU9PAGBRUQBgVFQAZlZWAGZYWABqWVkAclZWAHpU - VAB9W1oAbmJiAGtoaABtaWkAcWdnAHdnZwB8Y2MAe2pqAHJxcQB+dHQAd3l5AHl6egCGT08AiU9PAIFP - UACGU1MAjVFRAIlWVgCMV1cAg1xbAIxaWQCQUlIAlVJSAJFXVgCXVVUAmVVVAJZaWQCSXV0AlV9eAJpZ - WgCeW1sAml5eAKBZWgCgXFwAql9fAIRmZQCIZWQAhWtrAI5ragCTYmEAnGBhAJ9kYwCaZmYAk25uAJ1s - awCFdHQAiXd3AIt+fgCWd3cAmHR0AJV5eQCbfHwAo2JhAKZhYQChZWUApGVkAKplZACsZGQAqmhnAKZr - agCnbGsAqmloAKlubQCsbW0AtGZnALhsbACxb3AAv29wAKVxcACrc3IAr35+ALN0cwC5c3MAvXBxALR4 - dgC1fHsAunt6AMNtbgDGb3AAw3FyAMZwcQDGdXUAyHR1AMp3eADBeXkAxnt7AMB/fgDLensANLBSAEWf - TgBBtFwAPMdnADHkdgDciiIAvoF/AISrdwDln0sA35lhAN2XfADgmmEA8LdlAO61cAArWPIALWT+AEh5 - +gDOf4AAfoCAAHiA1ABZv9wAZrnUAGK+2ABxnv4Ad6P/ADPX/QBw0OcAW+D7AIKEgwCPgoIAjI2NAJuC - ggCUiIgAmYqKAJGSkgCjhIQAqoKCAKKLiwC+hIMAsoqKALaSgQCum5sAsZubALqqlQCdgr4Ar6ytALGh - oAC6pKQAwoSDAMyBggDGiIYAyYiHAMWMigDMjIoA0ISFANKHiADUjIwA2Y6NAMCUjQDIk44A0JCPANaP - kADHlZQAzpSSAMScmwDUkpIA2ZSVANWYlgDampcA2ZeYANWcnADam5sA4p2cAMChjwDeoJ4A5aCFAOaj - jQDlpJoA2p6hAMOkowDOoaEAy62tANegoADdoqEA2aGpANGsrwDdq6kAwbG4ANGysQDdtLQA2ri3AOGk - owDjqKYA66ylAOGnqADjq6oA6a2rAOOwrwDssK4A5K+wAOaztADttLIA57i2AO24tgDmurgA6rq6APC1 - swDyuLYA9Ly5APi+uwD1wL0A+cC9AKKMwACkk8QAqprMALSayACptsEAlaDkAOy/wACRxtQAgOv9AJnr - 9wDEwsoA5sbGAOzCwgDuyMcA7MzMAPPEwgDxy8oA9dPTAPja2gAAAAAAAAAAAP///wAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - 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 - AAAAAAAAAADLytDi9tOemQAAAAAAUy9EecLEsa1uPTUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPj11Mme - VakAAAAAAAAAAAAATS84M0akAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAD///////8AAP///////wAA////////AAD///////8AAP///////wAA//////// - AAD///////8AAP///////wAA//h/////AAD/4D////8AAP/AP////wAA/8A/////AAD/gB////8AAP8A - H////wAA/wAf////AAD+AB////8AAP4AH////wAA/gAf////AAD8AB////8AAPwAH////wAA/AAP//// - AAD8AA////8AAPgAD//+BwAA+AAH//ADAAD4AAP/wAMAAPgAAP8AAwAA+AAAAAADAAD4AAAAAAMAAPgA - AAAABwAA+AAAAAAHAAD4AAAAAA8AAPgAAAAAHwAA/AAAAAA/AAD8AAAAAH8AAP4AAAAA/wAA/4AAAAP/ - AAD/4AAAB/8AAP/4AAAf/wAA/8AAAH//AAD8A+AD//8AAPgP/A///wAA////////AAD///////8AAP// - /////wAA////////AAD///////8AAP///////wAA////////AAAoAAAAIAAAAEAAAAABAAgAAAAAAAAE - AAAAAAAAAAAAAAABAAAAAQAAAAAAAFFNTQBRUlIAU1RUAGJHRwBiT08Aa0lIAGJTUwBrVlYAYllZAGZc - XABpWloAb1xbAHNTUwB7V1YAc1hXAHFbWwBkZWUAaWFhAG5kZABpamkAcGFhAHlubgB2cHAAf3V1AH55 - eQB8fX0AgUpKAI1PTwCLWFcAhlhYAI9ZWQCKXFsAm1ZWAJJZWQCWWVgAmlpbAJtcWwCiXFwAl2BfAIBg - YACAZ2YAgG9vAI9oaACWZWQAmGBhAJ5kZACcaWoAmm9vAIV0dACNcHAAiXZ2AIB8fACac3IAm3V0AJ51 - dQCZfHwAnHx8AKNmZgCnZmYAqmJiAK5jYwCvb24AtWVmALBtbgC5bW0AvmxtAKx+fQCxcnIAtHBwALZz - dACydXQAtnd2ALlwcAC5dnYAt3p5ALh5eAC8fHsAun18ALx+fQDGb3AAxnBxAMdzdADAd3YAyHJzAMlz - dADJdXYAynd4AMd/fwDMe3wAzXx9AHunbwBhvHIAYsN4ANuLOwC2hn4A4Zt5APC3ZABte9sAX47+AHWM - 5QAl0foAY+P8AIeDgwCFhoYAioSEAJOIiACWi4sAmpKRAKGCgQCmhYUAqYGBAKuDhACniooApYyMAKiO - jQCyhYMAvoWEALeNjQCrj5AAr5eXALSVlAC9lJMAmbCEAK6RugDBgYAAwoSCAMWDhADChoQAxYeFAM6A - gQDFiIYAxoqIAMqIiQDMi4oAy4yKAMiPjQDPj44A0ISFANKJigDUi4wA04+NANWNjgDKkY8A0JCOANud - iQDWj5AAzJSTAM2XlgDGm5oA1pGSANOUkgDVl5EA1pOUANiVlgDYmJUA2ZeYANKenADbmpsA3pmYANuc - mgDbn5wA1aacAN6gngDqqZoA3Z+gAMyjowDCra0AxqysAMqpqQDboaAA3qKiAN6logDbp6UA3aWkANer - qgDWsbMA0rW0ANe0tADfs7IA4aSiAOGlpQDkp6UA46imAOWopgDsraIA6qimAOGoqADhrqwA6a2rAOqv - rADpsK4A7LGuAOGzswDlsbEA7bKxAO+1sgDotrYA5rm3AO+4twDot7sA6bq5AOu9uwDrv70A8bazAPG2 - tADxuLUA9Lm2APC9uwD2vboA9L+9APi+uwD4v7wA8sC+APXAvgD5wL0AkILJAKqXzACsu8cAqr/LALLV - 3QDawMIA48XFAOvDwQDswMAA7cTDAO/ExQDgxsgA8cbEAPTGxADwyskA9MvJAPLNzQD21dYA+NjZAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAMEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqHCEcBQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAayU9PSYbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdQlBSQiJpAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAM0pSUlJQPRcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnUlJSUlJGFQAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAFJSUlJSUkoQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzUlJSWVJZfxAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5XWYqKioqGDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASoqMkpqa - mqAsAAAAAAAAAAAAAAAAAABoNAAAAAAAAACMjJyuvLy2toYHAAAAAAAAAAAAABcOIDouBgAAAAAAc4yc - tsHKysPAriIKAAAAAAAAABYgRk1LTX+DEAAAAABukqXB4ejo4dHPQCIEChcXEwggTXV/k66unKMpAAAA - AG6Srsro6ero0dN/Rk1NRk2Dg4STrsbh4cHAt2sAAAAAbpKuOXPe6ajW15KGg4OGk528yuHo5eHPz882 - AAAAAAB4jCkDAxSoMabXt5yjt8ro3ePo5dbT09HTdAAAAAAAAABGcBFoGgFwdtfDwHxi2dpmZcrX09HP - z0MAAAAAAAAAAHh/qWwaOa6cz9PNZGPYsdzbzc3DwLk2AAAAAAAAAAAAAAAvhpKakoyg19HNyKS5wHtb - orZ/cwAAAAAAAAAAAAAAAAAANkaKWVm5zb1gYV6cXVxfNgAAAAAAAAAAAAAAAAAAALGvlTIuP1K5tqCR - l4xfLwAAAAAAAAAAAAAAAAAAsbPBenkAAAAAcCVYjE0scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////////////////+f///+D////A////wH - ///4B///+Af///gH///wB///8Af///AH/+fwA/8D4AH8AeAAAAHgAAAB4AAAA+AAAAfwAAAP8AAAH/wA - AD//AAD//gAD//B4D////////////////////////////ygAAAAYAAAAMAAAAAEACAAAAAAAQAIAAAAA - AAAAAAAAAAEAAAABAAAAAAAAWlJSAHBJSQB1SEgAe1dXAHdYWAB5WlkAel1dAGBiYgB1bGwAfWtrAHh2 - dgB9fn4Ag01NAIRXVwCIV1cAhV9eAItbWgCgX14ApV1dAJhgXwCNYGAAnWtqAJhtbQCCdnYAh3x8AI15 - eACeensAqGBgAKhoZwCga2oArGpqALNqagCzb28AtG1tALltbQCxb3AApnVzAKlzcwCqdHMApnp6AKd+ - fgCpensAq3x7ALZ3dgC8dHQAvH59AMZvcADGcHEAxXN0AMhycwDJdncAynh5AMx5egDNfn8Ajo1wAOek - VgDGgH8A4p53AEZ2+gB8u4AAd8PaAIuEhACOh4cAjo6OAJ+DggCejo4Ao4SEAKSIiACsi4sAqo2MAK6P - jgC+gYAAvoaGAL+KiACskJAAtJeXALWenQC5np4At6iOAKmyjgC9nroAwYSDAMaGhADOhoYAxomHAMiK - iQDJjYwA0oeIANOOjwDUjY0A2ZiPANaPkADGkZEAx5eXAMySkADGnZwA1ZOSANeTlADWl5YA2JSVANGZ - mADan50A3J6dAOCcmwDVoJ8A7K2fAMOtrQDXo6IA3aCgAN+kpADVq6oA3ay3AMu0tADPtrYA3L+/AOCi - oQDhpqUA5KelAOinpgDlq6gA46usAOOvrQDqrqwA7LGuAOayswDjtrQA5re1AOqysQDts7EA57y6AO+8 - ugDrvL0A8LOwAPC1sgDwtrQA87q3APS6twD2vboA8b69APi/vAD2wb4A+cC9AJmTzwDHqMMAu8PMAIHf - 8QDByNAA7cLCAO3FwwDvxsQA5cjIAOzOzgDwxcQA9cbEAPPP0AD10tIAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - BQMJAAAAAAAAAAAAAAAAAAAAAAAAAAAPHBMNAAAAAAAAAAAAAAAAAAAAAAAAABojLy8TAAAAAAAAAAAA - AAAAAAAAAAAAAB0wMDAiPgAAAAAAAAAAAAAAAAAAAAAAQjAwMDAtGAAAAAAAAAAAAAAAAAAAAAAAFzIy - NTU5CgAAAAAAAAAAAAAAAAAAAAAAIjZYWFxcBwAAAAAAAAAAAAAAAAAAAAAANlxtdW11JQAAAAAAAAAA - PgcRDgkAAAAAXG1/lISAZgMAAAAAABkVLC5SVhcAAABNY3WWnJuLfB8UBAcQHkhWaX91dSsAAABNY2BM - mJeCiVJSVl9laX+WloSJgEIAAAAAXAEIC0tGjnR0dJaRk5qNjIyJQwAAAAAAJkNADBtdjIaPO1GSPYuJ - hnVEAAAAAAAAAClISWRcd4xwkGp8UE90VwAAAAAAAAAAAAAAKSQ1NYZ7OjhbPDdGAAAAAAAAAAAAAHNv - YGsAKyJoXFYmRwAAAAAAAAAAAAAAcnIAAAAAAAAATgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP// - /wD///8A////APx//wD4f/8A8H//APA//wDgP/8A4D//AOA//wDgP8EA4B8BAMAAAQDAAAEA4AADAOAA - BwDwAB8A/AA/APCA/wDn9/8A////AP///wD///8AKAAAABAAAAAgAAAAAQAIAAAAAAAAAQAAAAAAAAAA - AAAAAQAAAAEAAAAAAABjZGQAdmRjAHtpaQB/eHgAgU9PAKBaWgCFbm0AlWtqAKptbgCwZ2cAsGhoAKxw - cACteHkAvnJyAMZvcADGcHEAy3l5AMx9fgCFmXQAwIB/ANeUfQDhoX8AlIqJAJWMjACYiIgAoIaGAK2K - igCxh4cAvoGAALKKigC4iYgAuJWVAL2cnACss50AuqKhAL+mpgDLgoIAxImHAMeNjADLkI8AxpWTANCS - kQDYlZUA1J6dANqZmgDdnp4A1J+oAMaiogDOr68AzLKyANi5uADhpaIA4qypAOWtqADrrqsA4bKwAOay - sgDtuLYA57++AOy4uADxtLIA8be0APa9ugDswL4A9sG+ALCcxwC5ncIA06zBALnH0QC2ytQA7sPDAPLS - 0gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAZBgUAAAAAAAAAAAAAAAAACw8KAAAAAAAAAAAAAAAAGhAQDgAAAAAAAAAAAAAAAAkRESUYAAAA - AAAAAAAAAAAlKy4uBwAAAAAAAAcDAAAAKzlHPCYCAAAYCB0oKgAAAC0wSDs0FB0nLDlAOiwAAAANAQQb - Pi9DRkVBPzUAAAAAJB4cKz5EQjMiNSkAAAAAAAAAHwwRNxYVEyQAAAAAAAAxMgAAACEgAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAP//AAD//wAA4/8AAOP/AADD/wAAwf8AAMH5 - AADAwQAAwAEAAMADAADABwAA8A8AAM5/AAD//wAA//8AACgAAAAwAAAAYAAAAAEAIAAAAAAAgCUAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAkAAAAJAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAUAAAAOAEBAVUAAABUAAAANQAAABAAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAkFBSUvGRl5TCkpwlYuLtxDJCTQFw0NmQAA - AEkAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGAwMKE8rK6V6RET2klJR/5ZS - U/+OT0//ZDc38B0QEJoAAAAyAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYDAwYVzAwoopP - T/ygXVz/oFtb/55ZWf+bWFf/k1NT/1UvL9wGAwNcAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AARNKipxhk5O+adkY/+uZWX/tWdo/7VmZ/+qYWH/nltb/3hERPcfERGCAAAAFgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAADEZGS1zQ0LXqGdm/7ptbf/Fb3D/x3Bx/8hwcf/BbW7/q2Vl/4hPT/82HR2gAAAAIAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAB1gxMYyYXl3/vXFx/8Zwcf/HcHH/x3Bx/8dwcf/HcHH/uG1t/5NY - V/9EJia2AAAAKQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPB8fNH1MS+K4cnH/x3Fy/8dwcf/HcHH/x3Bx/8dw - cf/HcHH/wHBx/51gX/9PLCzGAAAAMwAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - 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 - AAMAAAAAAAAAAAAAAAAAAAAALhAQFIZXVs/RjIz/1Y2O/9qYmP/eoaL/46qr/+aysv/ot7f/6rm5/+m4 - uf/otbX/5q+v/+uvrf/jqab/wYeF/28/P/QhEhKvAAAAXwAAACgAAAANAAAABQAAAAMAAAACAAAAAwAA - AAUAAAAKAAAAFQAAADAdDg9oSSkptHZHRu2dYmL+t3Z1/758e/+6enn/tnh3/7d5eP+8fn3/w4SD/7Z6 - ef9eODfbBgICTgAAAAgAAAAAAAAAAAAAAAAAAAAAPhwcJJVjYuPXkZH/2JOU/92fn//iqqr/57O0/+u8 - vP/uwsL/78XG/+/Exf/twMD/67i4/+60sv/wtrP/zZKQ/5taWv9xQED2MRsaxAgEBIcAAABaAAAAQQAA - ADcAAAA2AAAAOwAAAEUEAgJZHA4OfUcnJ7l5SkntqGxr/8CAfv/DgoH/vH59/7p+ff/DiIb/zZGP/9GT - kf/UlJP/1peV/9eZl/+GVlbuGQsLVwAAAAcAAAAAAAAAAAAAAAAAAAAARiIiLZ9rauvZk5P/2peY/+Ck - pP/lsLD/6ru7/+/Fxf/yzMz/9NDQ//PPz//xycr/7sDA//K5tv/1u7j/36Kg/6dmZf+mZWX/j1ZW/WM6 - OutDJSXQNBwcvDAaGrQ0HBy1PiIivUwsLMtkPDzfh1VU9a1xcP/EhIP/xIWE/7+Cgf/Ch4b/zZST/9mk - ov/grq3/4a6t/96lo//eoJ7/36Kg/+Cjof+IWVjnGwwMQwAAAAIAAAAAAAAAAAAAAAAAAAAARyQkL6Br - auzZk5P/25qb/+GnqP/ntLT/7cDA//LLy//209T/+NjY//fX1//00ND/8cbG//W9u//4vrz/46ak/7d0 - c/+vb27/s3Jy/7d2df+ucXD/pWpp/6Npaf+nbWz/sHVz/7p9fP/EhYT/yImI/8WIhv/DiIb/ypGP/9eg - n//hr63/57q5/+rCwP/rwsD/6bq4/+evrf/nq6n/6q6r/9qgnv9wRkbDBwAAHgAAAAAAAAAAAAAAAAAA - AAAAAAAASCQkLZ1nZuvYkpP/25uc/+Opqv/qtrf/7cHB//TOzv/52Nj/+tzc//na2v/xz9D/8MfH//fA - vv/6wb7/6a6r/8OBgP/DgoD/vX58/7h7ev+8fn3/woOC/8aHhv/HiYj/xoqJ/8aLif/Ijoz/zZST/9eg - nv/hrav/6Lm3/+zCwf/uyMf/78nH/+/Dwf/uvLr/7ba0/+60sf/vtLL/8ri1/7J+fflMKSltAAAABAAA - AAAAAAAAAAAAAAAAAAAAAAAAQyEhI5JcXOPWj5D/3Juc/8qVlf+BZmb/bl5e/4l4eP/AqKj/8tPT//LO - zv+5p6b/w6qq//fBv//7wr//8LWy/86Ojf/Ojoz/0ZGP/9GSkP/OkY//zpOR/9GamP/VoJ//2qel/+Gv - rf/nt7X/6727/+3Dwf/wycf/8czL//LLyf/yxsT/8cC+//G7uf/yubf/87m3//S7uP/4vrv/1J6c/3JH - RrAdCgsWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANRcXEYJNTcvPiIn/15aW/2VNTf85Ojr/Q0VF/0JF - RP9dXFz/n5GR/+S/v/+bh4f/hXp6/+25uP/7wr//9bu4/9qcmv/Zmpj/252b/96gnf/ipKH/5q+s/+u+ - vP/vycf/8srI/+3Hxv/wysj/9c7M//TNy//0ysj/9MbE//TBv//1vrz/9r26//e9u//4vrv/+L+8//vB - vv/hqqf/g1ZVzDwcHC4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW4+Ppq/env/05OT/2ZX - V/9rbm7/fX9//3l6ev99f3//cHJy/5F9ff+ff3//XFhY/9eop//8wr//+L+8/+Wppv/ipaP/5qil/96i - pP/Kmaz/1qi1//LGxP/tyMf/qb3J/23E3P9kw9//vMTN//jDwP/3wb//+MC9//i/vf/5v73/+b+8//i/ - vP/3vrv/+L68/92mo/+IWlnRRSMjOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFcv - L0mbX1/y15GS/6GAgP9XV1b/iYuL/4CBgf98fX3/cnR0/1dPT/++j4//km9w/9Sfnv/6wL3/+cC9/+6z - sP/ssK3/0Z+u/4OH1P9YffD/QGPs/7KYyv/Ct7z/Ytrz/3Ts//8s2f//cbvU//m+u//4v7z/+L67//e9 - uv/1vLn/9Lq3//O5tv/zuLX/0puZ/4RVVctGIyM4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAADIXFwdrPDySq2ts/diZmf/ApKT/sKur/4CBgP95enr/iYiI/49zdP/do6P/36Ch/96e - nv/zuLX/+sK///W7uP/1ubT/qZC//2qY+/9tnf//MGT6/56FxP/esK//nMbS/57n8/9+z+T/ybG3//a6 - t//zubb/8re0//C1s//utLH/7rKw/+qvrP++iIb9dklJtkMgISoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHIyMSazw8kZ5hYvXNjI3/2aSk/7OMjP+bd3f/sIKC/9KV - lv/cnJz/2peY/9aRkf/koqL/+sG+//nAvf/5v7z/4amw/6qZx/+aouP/qpvP/+mxtv/2urj/6rGv/+S6 - u//ptrX/466n/+Ovqf/ssK7/6q6s/+isqv/oq6n/2J2b/6JubfFoPT2NOxoaFwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOBoaCFowMFd7SEjAomZm9sWC - gv/XkZL/25SV/9iSk//Wj5D/1IyN/9KHiP/UiIj/8bOx//rCv//3vbv/9ru4//O3s//xuLX/7q6e/+ej - hf/npIn/7bCp/+Otp/+KsX3/ULdm/1WjWv+7oYz/5KWk/9uenP+4gH79glJRzVYuLlQgCAkGAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAA8HBwQVy4uS3FBQaCPV1fjsG5v/cmAgf/ShYb/0YKD/85+f//LeXr/2I2M//e8uf/1vLn/7rOx/+2y - sP/lpJX/5qFY/+6xXP/djS3/35h9/86gl/9SwW7/Nd90/0WxXP+vlH//wYSE/49cW+VlOTmBQR4eHAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGk7OhqIWFd8oG5u8J5qav+eX2D/tmts/8Z0df/KdHX/yXJz/92T - k//3vLn/7LGu/+Snpf/dm5L/4Z1q/+61dP/fmmX/15WM/9eYlv/Bm43/r6uR/6uNgP+WYWDtbkBAnUwn - JzQVAQECAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiFJSBnhC - QgpqNDQJWSUlB08dHQdfKisKfENDFJJWViinbGtRvYOCjtOcm8/pt7X157y6/7eOjfhxRUW7aTk5m4RK - StehWlr6uGdo/8Zwcf/dkpH/8bSx/+OnpP/YmZj/1ZWT/9ealP/Vl5X/0JCP/8eIhv+zdnb/lFtc6nA/ - QKRSKio/JQwNBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AADTn6AB2qioDMuUlCHBhYU8voCAWcCBgXTEhoaLzZGQqdeensngrKvn47Sz/NOop/+yiIfyi2Bgs2k+ - PlZXKysPAAAAAUYlJRxcMTFYcj4+pYpMTeWmXF3+xnl5/9+Zl//dnJr/z46M/8KCgf+vc3L/ll9e831L - S8hlOTl/TigoMy0REQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAABzQUIDnmprDriGhifHlpZMzp6eeNCgoZ7On5+2yJqaybuPj9WnfHzVj2RkunVJ - SYNbLy8/PRQUCgAAAAAAAAAAAAAAAAAAAAAAAAAAKRUVBU0pKSphNDRtd0BAsotNTd2ZW1vrkVlY4HtJ - Sb5lOTmCUysrQTsbGxEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWCwsA2Y4OA5xQkImdkhIRHhKSll0R0dibUBAWWI2 - NkNUKCgoOhISDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMhkZB0km - Jh5LJiYsRSEhITATFAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////8AAP// - /////wAA////////AAD///////8AAP///////wAA////////AAD/+H////8AAP/gH////wAA/8Af//// - AAD/gA////8AAP+AD////wAA/wAP////AAD/AA////8AAP4AB////wAA/gAH////AAD8AAf///8AAPwA - B////wAA/AAH////AAD8AAf///8AAPgAB////wAA+AAH//4HAAD4AAP/8AEAAPgAAf/AAQAA8AAA/wAA - AADwAAAAAAAAAPAAAAAAAAAA8AAAAAAAAADwAAAAAAEAAPAAAAAAAQAA8AAAAAADAADwAAAAAAcAAPAA - AAAADwAA+AAAAAAfAAD4AAAAAD8AAPwAAAAAfwAA/gAAAAD/AAD/gAAAA/8AAP/gAAAH/wAAgAAAAB// - AAAAAAAAf/8AAAAD4AP//wAAgB/8H///AAD///////8AAP///////wAA////////AAD///////8AAP// - /////wAA////////AAAoAAAAIAAAAEAAAAABACAAAAAAAIAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAYAAAAZAAAAGQAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAARCQkYOh8fb0ooKK80HByiCQUFTAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAIhERFmA2Np2ITUz3lVNT/4dLS/5IKCi9AAAALwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAANjODiBllhY+61kZP+vY2P/pV5e/3xHRvEhEhJfAAAAAgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAASSgoN41VVeS6bW3/xW9w/8dwcf+9bG3/klZW/jogIIEAAAAGAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ1RkWcs2xs/8dxcv/HcHH/x3Bx/8Zwcf+iYWH/SSkpmAAA - AAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUC0tMZtgX+fGcnP/x3Bx/8dwcf/HcHH/x3Fy/61q - av9UMTGqAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxRER1tm9v/8hxcv/HcHH/x3Bx/8dw - cf/HcnP/tnRz/185OboAAAAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAACIxXV7TEdHT/yHJz/8l1 - dv/Kd3j/ynd4/8p4eP/Bf37/bURDywAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNKysjo2Zm4Mt4 - ef/NfH3/z4GC/9GFhf/RhYb/0YWF/82Mi/9+UVHeCAICOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAJAAAACwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAGc+ - Pkm1c3P30IGC/9OJiv/XkZL/2ZaW/9mWl//YlJX/2JmY/5hnZfMeEBBrAAAABwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA0FAgItHhAQWzAbG4IqFxeHDQcHWwAAABkAAAAAAAAAAAAA - AAAAAAAAek1MdMN/f//VjI3/2piZ/9+io//hqKn/4qmp/+Clpf/jpqT/wImH/04xMLwAAAA6AAAABQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAABEbDg5GRygokW5CQs+MVlbxnGJh/JdfXvxnPz7hHA8PbgAA - AAwAAAAAAAAAAAAAAACMW1qbz4qK/9qXl//gpqb/5rKz/+q6u//rvLz/6La2/+qxr//epKL/j1lZ+DUc - HLACAQFPAAAAHQAAAA8AAAAPAAAAEwAAACIbDg5MVDExnYZUU+SpbWz+uXl4/7x+fP/AgoD/xoeF/72A - f/9fOzu1AAAAHAAAAAAAAAAAAAAABJhkZK/VkZH/3Z+g/+axsf/twMD/8svL//LNzf/vxcX/8Lq4/+6z - sf+1dHP/j1VU+144N9g7IiKqMhwclDcfH5RGKSmiYTw7v4tZWOiydXT+woOC/8aKiP/Ol5X/2aWj/9ui - of/cnpz/2pyb/35TUrgAAAAVAAAAAAAAAAAAAAAFmmVkstaTk//hpaX/7Lm6//TLy//419f/+NnZ//TP - z//1wb//9Lq3/8aGhP+1dHP/s3Rz/6xwb/+pb27+rnNy/7Z7ev/BhIL/yY2L/8+WlP/apqT/5be2/+vB - v//rvrz/6bKw/+uvrf/Um5n/bUVEgAAAAAMAAAAAAAAAAAAAAAOTXV2q1ZGR/9CYmP+dfX7/o4yM/9e8 - vP/z0tL/zLOz/+u8u//5v7z/1peV/8uLif/Ki4r/yoyL/86Ukv/TnJv/2qSi/+Gtq//nuLb/7cPB//DJ - x//xxsT/8b+9//G6t//zubf/77az/6d1dM89Hx8lAAAAAAAAAAAAAAAAAAAAAIJOTojNiIn/jGlp/01O - Tv9UVlb/dnNz/7uhof+Pfn7/xJ+e//zCv//lqKb/3J2b/+Chnv/hpaT/7Ly5/+vHxv/MxMn/0MjN//LK - yf/1x8X/9sLA//a/vP/3vrv/+L+8//S7uP+5hoXhYTo5RwAAAAAAAAAAAAAAAAAAAAAAAAAAaTs7RrVz - dPKmfn7/cXJx/4SGhv97fX3/b2Zm/516ev+7kJD/+sG+//C2s//lqqr/rpbA/3aB2/+ql83/tMHK/2jc - 9P9OzOz/2r3B//q/vP/3vrv/9ry6//a8uf/ss7D/tYGA32c+Pk0AAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAvEhIHg01Njbp9fvrCn5//nI+P/4R7ev+fgID/2Jyd/9ybnP/ytrT/+b+8/+ewtf+Mld3/ZI36/5eI - zv/Ttrn/sNLc/6/Czv/stLT/8re0/++0sf/tsq//2qCe/6Rxb8phODg+AAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAABCIB8MeUZGbqRpata8gYH8x4mJ/9eTk//YkpP/04qL/+Cbmv/5wL3/9726/+Sw - t//Zrrn/56qY/+2smf/lr6n/nLWJ/4Gtdf/Pppn/3qGf/7yEg/KJWViYTyoqIAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQh0dGXJAQGOXXl7NtnR1/8V7fP/MfH3/znt8/+il - o//0urj/7LCu/+Whg//rq13/35VX/9Kek/9yvXz/ZbNv/6iCdfqYY2O/aj4+TCUJCgcAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAACcamsBjFRVB4FERAh9PT0JjU1ND6VnZx+/hINF0JqZiNOjoty0iIf2hFBQw5lX - V8+wY2P4xXR0/+aioP/oq6j/2pqT/92fif/Vlor/yYqJ/7N8efiVZmPGdERFYkEfHxIAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAALiFhgXFkJEdx5CQSMqSknbNlZWbz5uaws2cnOXBlJPnqH18r4dc - XFFULy8OSCUlFm07O0+FSUmeoV1d3sF9fPrGhoX/snZ295xkZNiFUlKbbD4+T0UdHxIAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAc0JDA5FgYRKdbm46onR0Zp9ycnuWampzhFlZVmY6 - OikvDAwHAAAAAAAAAAAAAAAAAAAAAB0ODgRULCwhbjo7UXhERGVrPDxHTCYmGxAAAQMAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAP//////////////////////D////gf///wH///4A///+AP///AD///wA///8AP//+AD - ///gA//D4AH+AeAA+ADgAAAAwAAAAMAAAADAAAAB4AAAA+AAAAfgAAAP8AAAH/wAAD8AAAD/AAAD/wB4 - D//H////////////////////KAAAABgAAAAwAAAAAQAgAAAAAABgCQAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAABMAAAAtAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAgIO1cwMM1qOjrsHhAQmwAA - ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAATCgogfUhI6ahgYP6lXV3+f0hI9wIBAT0AAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsGBgFPLy6kuW1t/sZv - cP/Gb3D/oF9e/hMKCmgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4QECynZmX7xnBx/sdwcf/HcHH/tG1t/h8REYMAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAx - MIzFc3T+xm9w/sdwcf7HcHH+vHR0/jAcHJkAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQ4OAYVSUtfIcnP/yXZ3/st5ef/LeHn/xoB//kQq - KrEAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAJxYWGrNvb/7Nfn//0oeI/tSNjf/UjI3/1ZOS/mE+PtQAAAAXAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAIAAAARAAAALQAAADUAAAARAAAAAAAAAAAAAAAAQyYmUM6Ghv/Wj5D/3J2e/uCl - pf/fpKT/4KOi/qRycPkHBARlAAAABQAAAAAAAAAAAAAAAAAAAAAAAAADAQAAJh8REYBYNTXMhVJR8XxM - TO8gEhKeAAAAEAAAAAAAAAAAbUVEe9aPkP7doKD+5rKz/uu9vv7rvLz+6rKx/tqfnf5iNzfnCAQEcwAA - ACoAAAAbAAAAIQIBATorGBiQhFNT67Z3dv68fn3+wYSD/siKiP6aZmX2AQAAKQAAAAAAAAAAd05Ni9eT - lP/jq6z/7cLC/vXS0v/zz9D/8b69/uyxrv+samr/l15d+2tDQ+NkPz7bdkxL451nZve+gYD/yY2M/tWg - n//jtrT/46+t/uOmpP+mdHPwBQMDFAAAAAAAAAAAdkpJh9iUlf7Hl5f+tJeX/uzOzv7lyMj+57y6/vS6 - t/7HhoX+xYaE/saJh/7MkpD+0ZmY/tejov7mt7X+7cXD/vDFxP7vvLr+8Le0/u2zsf5PMzOMDQcHAQAA - AAAAAAAAYTg4X9OOj/9aUlL/YGJi/nh2dv+skJD/qo2M/vnAvf/dn53/4KKg/+Cnp/7vxsT/u8PM/sHI - 0P/1xsT/9sG+/ve+u//3vrv/87q3/ntVVLkkFhYIAAAAAAAAAAAAAAAAVC8wD6BkZOWjhIT/jo6O/n1+ - fv+eenv/xpGR/vi/vP/wtbL/mZPP/0Z2+v69nrr/gd/x/nfD2v/2vLr/9Lq3/vG2tP/lq6j/elJRrjQg - IAoAAAAAAAAAAAAAAAAAAAAAAAAAAGc7OyeOWVnGv4eH/r2Fhf7YlZb+1Y6P/uinpv74v7z+3ay3/seo - w/7srZ/+7LGv/qmyjv63qI7+5Kel/r2GhPZ1S0p1QCcmAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAd0pKOpReXtKxb3D/yXl6/sx5ev/ws7D/6q6s/+Ked/7npFb/2ZiP/ny7gP+OjW/9h1dWr2I7 - OiMAAAAAAAAAAAAAAAAAAAAAAAAAALSCggSqcXIbo2dnN61xcVS/h4eIzp2c2cKWle2OY2OGbz4+Y4xN - Tr6zaWn84Jyb/9aXlv7Ji4r/p25t9INTUqZlPDw3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJJg - YASjcnMorH9/a6h7e4yabm6Df1NTU3VKSgwAAAAAAAAAAAAAAABgNDQgcj8/bntHR4ZnPDxTVTExDQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8A////APx//wD4P/8A8D//AOA//wDgH/8A4B//AMAf - /wDAH8EAwA8AAMAAAADAAAAAwAAAAMAAAQDAAAMA4AAHAPgAHwAAAH8AAcH/AP///wD///8A////ACgA - AAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQc - HA5LKSlUNBwcSAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsO - DgV/SkqHm1hY+X5HR90tGRkuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAB4SEhCr2Zm7sZwcf+oYWL5UC8vUwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAACnl9fnMRwcf/IcXL/tmxs/mI8PGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAa0NCGbRsbdbMenv/zn5//8R9ff9ySkmCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAA - AAkAAAAAAAAAAItYWDvFfn/y2ZWW/92fn//anJv/jWFgvwAAAB0AAAAAAAAAAAAAAAIzHBwiYjs7a3pM - S6pqQkKjLBoaMwAAAACeZ2dZ05KS/em0tP/vxMT/77u6/8CHhfpmPDyvRysqYlExMV1ySEiGnWdn07qB - gPzLkI//w4iG/HJLS3YAAAAAomloXsyRkf/DoKD/48bG/+jAv//hpKL/vX17/7h/fPu/iYj7z5qZ/+Gw - rv/rvLr/77q3/9ScmuR9U1I+AAAAAJZbWz2ndnbxdG9v/4yCgv+4lJP/77Wy/86erP+6nsH/tsXR/8PH - 0P/4wsD/9b26/+Cppu2peXdiAAAAAQAAAABYKCgHn2lqe6eCguSsgoL90pKS//Cxrv/TrcP/s5y+/8i3 - s/+quab/26mh/82UktSgbm1TBAAAAwAAAACud3cEvYGBC7N6ehyyfHtyt39+3bNub9vLgYH05qak/+Kg - g//OlH39jZR04Zd0aYmDT1EiAAAAAAAAAAAAAAAAr3t7D7aCgki5h4Z8uImJgah+fUltPz8ajU1ORq1s - bI6vdHOgm2RkaYxJUiZgCygCAAAAAAAAAAAAAAAAAAAAAGo9PQF9UVEHcEdHCTodHQIAAAAAAAAAAAAA - AAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAP//AADh/wAAwf8AAMH/ - AACB/wAAgfkAAIDAAACAAAAAgAAAAIAAAACAAQAAAAcAAAAPAAAOfwAA//8AAA== - - - \ No newline at end of file diff --git a/BizHawk.Client.EmuHawk/config/PSX/PSXControllerConfigNew.Designer.cs b/BizHawk.Client.EmuHawk/config/PSX/PSXControllerConfigNew.Designer.cs index 36740d6774..2460ef350f 100644 --- a/BizHawk.Client.EmuHawk/config/PSX/PSXControllerConfigNew.Designer.cs +++ b/BizHawk.Client.EmuHawk/config/PSX/PSXControllerConfigNew.Designer.cs @@ -28,413 +28,429 @@ /// private void InitializeComponent() { - this.cbMultitap_1 = new System.Windows.Forms.CheckBox(); - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.lbl_p_1_4 = new System.Windows.Forms.Label(); - this.lbl_p_1_3 = new System.Windows.Forms.Label(); - this.lbl_p_1_2 = new System.Windows.Forms.Label(); - this.lbl_p_1_1 = new System.Windows.Forms.Label(); - this.lbl_1_4 = new System.Windows.Forms.Label(); - this.lbl_1_3 = new System.Windows.Forms.Label(); - this.lbl_1_2 = new System.Windows.Forms.Label(); - this.lbl_1_1 = new System.Windows.Forms.Label(); - this.combo_1_4 = new System.Windows.Forms.ComboBox(); - this.combo_1_3 = new System.Windows.Forms.ComboBox(); - this.combo_1_2 = new System.Windows.Forms.ComboBox(); - this.combo_1_1 = new System.Windows.Forms.ComboBox(); - this.cbMemcard_1 = new System.Windows.Forms.CheckBox(); - this.btnOK = new System.Windows.Forms.Button(); - this.btnCancel = new System.Windows.Forms.Button(); - this.groupBox2 = new System.Windows.Forms.GroupBox(); - this.lbl_p_2_4 = new System.Windows.Forms.Label(); - this.lbl_p_2_3 = new System.Windows.Forms.Label(); - this.lbl_p_2_2 = new System.Windows.Forms.Label(); - this.lbl_p_2_1 = new System.Windows.Forms.Label(); - this.lbl_2_4 = new System.Windows.Forms.Label(); - this.lbl_2_3 = new System.Windows.Forms.Label(); - this.lbl_2_2 = new System.Windows.Forms.Label(); - this.lbl_2_1 = new System.Windows.Forms.Label(); - this.combo_2_4 = new System.Windows.Forms.ComboBox(); - this.combo_2_3 = new System.Windows.Forms.ComboBox(); - this.combo_2_2 = new System.Windows.Forms.ComboBox(); - this.combo_2_1 = new System.Windows.Forms.ComboBox(); - this.cbMemcard_2 = new System.Windows.Forms.CheckBox(); - this.cbMultitap_2 = new System.Windows.Forms.CheckBox(); - this.groupBox1.SuspendLayout(); - this.groupBox2.SuspendLayout(); - this.SuspendLayout(); - // - // cbMultitap_1 - // - this.cbMultitap_1.AutoSize = true; - this.cbMultitap_1.Location = new System.Drawing.Point(18, 43); - this.cbMultitap_1.Name = "cbMultitap_1"; - this.cbMultitap_1.Size = new System.Drawing.Size(63, 17); - this.cbMultitap_1.TabIndex = 0; - this.cbMultitap_1.Text = "Multitap"; - this.cbMultitap_1.UseVisualStyleBackColor = true; - this.cbMultitap_1.CheckedChanged += new System.EventHandler(this.cb_changed); - // - // groupBox1 - // - this.groupBox1.Controls.Add(this.lbl_p_1_4); - this.groupBox1.Controls.Add(this.lbl_p_1_3); - this.groupBox1.Controls.Add(this.lbl_p_1_2); - this.groupBox1.Controls.Add(this.lbl_p_1_1); - this.groupBox1.Controls.Add(this.lbl_1_4); - this.groupBox1.Controls.Add(this.lbl_1_3); - this.groupBox1.Controls.Add(this.lbl_1_2); - this.groupBox1.Controls.Add(this.lbl_1_1); - this.groupBox1.Controls.Add(this.combo_1_4); - this.groupBox1.Controls.Add(this.combo_1_3); - this.groupBox1.Controls.Add(this.combo_1_2); - this.groupBox1.Controls.Add(this.combo_1_1); - this.groupBox1.Controls.Add(this.cbMemcard_1); - this.groupBox1.Controls.Add(this.cbMultitap_1); - this.groupBox1.Location = new System.Drawing.Point(12, 12); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.Size = new System.Drawing.Size(273, 136); - this.groupBox1.TabIndex = 1; - this.groupBox1.TabStop = false; - this.groupBox1.Text = "Port 1"; - // - // lbl_p_1_4 - // - this.lbl_p_1_4.AutoSize = true; - this.lbl_p_1_4.Location = new System.Drawing.Point(241, 105); - this.lbl_p_1_4.Name = "lbl_p_1_4"; - this.lbl_p_1_4.Size = new System.Drawing.Size(20, 13); - this.lbl_p_1_4.TabIndex = 12; - this.lbl_p_1_4.Text = "P1"; - this.lbl_p_1_4.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // lbl_p_1_3 - // - this.lbl_p_1_3.AutoSize = true; - this.lbl_p_1_3.Location = new System.Drawing.Point(241, 78); - this.lbl_p_1_3.Name = "lbl_p_1_3"; - this.lbl_p_1_3.Size = new System.Drawing.Size(20, 13); - this.lbl_p_1_3.TabIndex = 11; - this.lbl_p_1_3.Text = "P1"; - this.lbl_p_1_3.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // lbl_p_1_2 - // - this.lbl_p_1_2.AutoSize = true; - this.lbl_p_1_2.Location = new System.Drawing.Point(241, 50); - this.lbl_p_1_2.Name = "lbl_p_1_2"; - this.lbl_p_1_2.Size = new System.Drawing.Size(20, 13); - this.lbl_p_1_2.TabIndex = 10; - this.lbl_p_1_2.Text = "P1"; - this.lbl_p_1_2.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // lbl_p_1_1 - // - this.lbl_p_1_1.AutoSize = true; - this.lbl_p_1_1.Location = new System.Drawing.Point(241, 24); - this.lbl_p_1_1.Name = "lbl_p_1_1"; - this.lbl_p_1_1.Size = new System.Drawing.Size(20, 13); - this.lbl_p_1_1.TabIndex = 9; - this.lbl_p_1_1.Text = "P1"; - this.lbl_p_1_1.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // lbl_1_4 - // - this.lbl_1_4.AutoSize = true; - this.lbl_1_4.Location = new System.Drawing.Point(94, 105); - this.lbl_1_4.Name = "lbl_1_4"; - this.lbl_1_4.Size = new System.Drawing.Size(15, 13); - this.lbl_1_4.TabIndex = 8; - this.lbl_1_4.Text = "D"; - this.lbl_1_4.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // lbl_1_3 - // - this.lbl_1_3.AutoSize = true; - this.lbl_1_3.Location = new System.Drawing.Point(94, 78); - this.lbl_1_3.Name = "lbl_1_3"; - this.lbl_1_3.Size = new System.Drawing.Size(14, 13); - this.lbl_1_3.TabIndex = 7; - this.lbl_1_3.Text = "C"; - this.lbl_1_3.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // lbl_1_2 - // - this.lbl_1_2.AutoSize = true; - this.lbl_1_2.Location = new System.Drawing.Point(94, 51); - this.lbl_1_2.Name = "lbl_1_2"; - this.lbl_1_2.Size = new System.Drawing.Size(14, 13); - this.lbl_1_2.TabIndex = 6; - this.lbl_1_2.Text = "B"; - this.lbl_1_2.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // lbl_1_1 - // - this.lbl_1_1.AutoSize = true; - this.lbl_1_1.Location = new System.Drawing.Point(94, 24); - this.lbl_1_1.Name = "lbl_1_1"; - this.lbl_1_1.Size = new System.Drawing.Size(14, 13); - this.lbl_1_1.TabIndex = 2; - this.lbl_1_1.Text = "A"; - this.lbl_1_1.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // combo_1_4 - // - this.combo_1_4.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.combo_1_4.FormattingEnabled = true; - this.combo_1_4.Location = new System.Drawing.Point(114, 102); - this.combo_1_4.Name = "combo_1_4"; - this.combo_1_4.Size = new System.Drawing.Size(121, 21); - this.combo_1_4.TabIndex = 5; - this.combo_1_4.SelectedIndexChanged += new System.EventHandler(this.combo_SelectedIndexChanged); - // - // combo_1_3 - // - this.combo_1_3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.combo_1_3.FormattingEnabled = true; - this.combo_1_3.Location = new System.Drawing.Point(114, 75); - this.combo_1_3.Name = "combo_1_3"; - this.combo_1_3.Size = new System.Drawing.Size(121, 21); - this.combo_1_3.TabIndex = 4; - this.combo_1_3.SelectedIndexChanged += new System.EventHandler(this.combo_SelectedIndexChanged); - // - // combo_1_2 - // - this.combo_1_2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.combo_1_2.FormattingEnabled = true; - this.combo_1_2.Location = new System.Drawing.Point(114, 48); - this.combo_1_2.Name = "combo_1_2"; - this.combo_1_2.Size = new System.Drawing.Size(121, 21); - this.combo_1_2.TabIndex = 3; - this.combo_1_2.SelectedIndexChanged += new System.EventHandler(this.combo_SelectedIndexChanged); - // - // combo_1_1 - // - this.combo_1_1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.combo_1_1.FormattingEnabled = true; - this.combo_1_1.Location = new System.Drawing.Point(114, 21); - this.combo_1_1.Name = "combo_1_1"; - this.combo_1_1.Size = new System.Drawing.Size(121, 21); - this.combo_1_1.TabIndex = 2; - this.combo_1_1.SelectedIndexChanged += new System.EventHandler(this.combo_SelectedIndexChanged); - // - // cbMemcard_1 - // - this.cbMemcard_1.AutoSize = true; - this.cbMemcard_1.Location = new System.Drawing.Point(18, 21); - this.cbMemcard_1.Name = "cbMemcard_1"; - this.cbMemcard_1.Size = new System.Drawing.Size(70, 17); - this.cbMemcard_1.TabIndex = 1; - this.cbMemcard_1.Text = "Memcard"; - this.cbMemcard_1.UseVisualStyleBackColor = true; - this.cbMemcard_1.CheckedChanged += new System.EventHandler(this.cb_changed); - // - // btnOK - // - this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK; - this.btnOK.Location = new System.Drawing.Point(408, 163); - this.btnOK.Name = "btnOK"; - this.btnOK.Size = new System.Drawing.Size(75, 23); - this.btnOK.TabIndex = 2; - this.btnOK.Text = "OK"; - this.btnOK.UseVisualStyleBackColor = true; - // - // btnCancel - // - this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.btnCancel.Location = new System.Drawing.Point(489, 163); - this.btnCancel.Name = "btnCancel"; - this.btnCancel.Size = new System.Drawing.Size(75, 23); - this.btnCancel.TabIndex = 3; - this.btnCancel.Text = "Cancel"; - this.btnCancel.UseVisualStyleBackColor = true; - // - // groupBox2 - // - this.groupBox2.Controls.Add(this.lbl_p_2_4); - this.groupBox2.Controls.Add(this.lbl_p_2_3); - this.groupBox2.Controls.Add(this.lbl_p_2_2); - this.groupBox2.Controls.Add(this.lbl_p_2_1); - this.groupBox2.Controls.Add(this.lbl_2_4); - this.groupBox2.Controls.Add(this.lbl_2_3); - this.groupBox2.Controls.Add(this.lbl_2_2); - this.groupBox2.Controls.Add(this.lbl_2_1); - this.groupBox2.Controls.Add(this.combo_2_4); - this.groupBox2.Controls.Add(this.combo_2_3); - this.groupBox2.Controls.Add(this.combo_2_2); - this.groupBox2.Controls.Add(this.combo_2_1); - this.groupBox2.Controls.Add(this.cbMemcard_2); - this.groupBox2.Controls.Add(this.cbMultitap_2); - this.groupBox2.Location = new System.Drawing.Point(291, 12); - this.groupBox2.Name = "groupBox2"; - this.groupBox2.Size = new System.Drawing.Size(273, 136); - this.groupBox2.TabIndex = 13; - this.groupBox2.TabStop = false; - this.groupBox2.Text = "Port 2"; - // - // lbl_p_2_4 - // - this.lbl_p_2_4.AutoSize = true; - this.lbl_p_2_4.Location = new System.Drawing.Point(241, 105); - this.lbl_p_2_4.Name = "lbl_p_2_4"; - this.lbl_p_2_4.Size = new System.Drawing.Size(20, 13); - this.lbl_p_2_4.TabIndex = 12; - this.lbl_p_2_4.Text = "P1"; - this.lbl_p_2_4.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // lbl_p_2_3 - // - this.lbl_p_2_3.AutoSize = true; - this.lbl_p_2_3.Location = new System.Drawing.Point(241, 78); - this.lbl_p_2_3.Name = "lbl_p_2_3"; - this.lbl_p_2_3.Size = new System.Drawing.Size(20, 13); - this.lbl_p_2_3.TabIndex = 11; - this.lbl_p_2_3.Text = "P1"; - this.lbl_p_2_3.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // lbl_p_2_2 - // - this.lbl_p_2_2.AutoSize = true; - this.lbl_p_2_2.Location = new System.Drawing.Point(241, 50); - this.lbl_p_2_2.Name = "lbl_p_2_2"; - this.lbl_p_2_2.Size = new System.Drawing.Size(20, 13); - this.lbl_p_2_2.TabIndex = 10; - this.lbl_p_2_2.Text = "P1"; - this.lbl_p_2_2.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // lbl_p_2_1 - // - this.lbl_p_2_1.AutoSize = true; - this.lbl_p_2_1.Location = new System.Drawing.Point(241, 24); - this.lbl_p_2_1.Name = "lbl_p_2_1"; - this.lbl_p_2_1.Size = new System.Drawing.Size(20, 13); - this.lbl_p_2_1.TabIndex = 9; - this.lbl_p_2_1.Text = "P1"; - this.lbl_p_2_1.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // lbl_2_4 - // - this.lbl_2_4.AutoSize = true; - this.lbl_2_4.Location = new System.Drawing.Point(94, 105); - this.lbl_2_4.Name = "lbl_2_4"; - this.lbl_2_4.Size = new System.Drawing.Size(15, 13); - this.lbl_2_4.TabIndex = 8; - this.lbl_2_4.Text = "D"; - this.lbl_2_4.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // lbl_2_3 - // - this.lbl_2_3.AutoSize = true; - this.lbl_2_3.Location = new System.Drawing.Point(94, 78); - this.lbl_2_3.Name = "lbl_2_3"; - this.lbl_2_3.Size = new System.Drawing.Size(14, 13); - this.lbl_2_3.TabIndex = 7; - this.lbl_2_3.Text = "C"; - this.lbl_2_3.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // lbl_2_2 - // - this.lbl_2_2.AutoSize = true; - this.lbl_2_2.Location = new System.Drawing.Point(94, 51); - this.lbl_2_2.Name = "lbl_2_2"; - this.lbl_2_2.Size = new System.Drawing.Size(14, 13); - this.lbl_2_2.TabIndex = 6; - this.lbl_2_2.Text = "B"; - this.lbl_2_2.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // lbl_2_1 - // - this.lbl_2_1.AutoSize = true; - this.lbl_2_1.Location = new System.Drawing.Point(94, 24); - this.lbl_2_1.Name = "lbl_2_1"; - this.lbl_2_1.Size = new System.Drawing.Size(14, 13); - this.lbl_2_1.TabIndex = 2; - this.lbl_2_1.Text = "A"; - this.lbl_2_1.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // combo_2_4 - // - this.combo_2_4.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.combo_2_4.FormattingEnabled = true; - this.combo_2_4.Location = new System.Drawing.Point(114, 102); - this.combo_2_4.Name = "combo_2_4"; - this.combo_2_4.Size = new System.Drawing.Size(121, 21); - this.combo_2_4.TabIndex = 5; - this.combo_2_4.SelectedIndexChanged += new System.EventHandler(this.combo_SelectedIndexChanged); - // - // combo_2_3 - // - this.combo_2_3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.combo_2_3.FormattingEnabled = true; - this.combo_2_3.Location = new System.Drawing.Point(114, 75); - this.combo_2_3.Name = "combo_2_3"; - this.combo_2_3.Size = new System.Drawing.Size(121, 21); - this.combo_2_3.TabIndex = 4; - this.combo_2_3.SelectedIndexChanged += new System.EventHandler(this.combo_SelectedIndexChanged); - // - // combo_2_2 - // - this.combo_2_2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.combo_2_2.FormattingEnabled = true; - this.combo_2_2.Location = new System.Drawing.Point(114, 48); - this.combo_2_2.Name = "combo_2_2"; - this.combo_2_2.Size = new System.Drawing.Size(121, 21); - this.combo_2_2.TabIndex = 3; - this.combo_2_2.SelectedIndexChanged += new System.EventHandler(this.combo_SelectedIndexChanged); - // - // combo_2_1 - // - this.combo_2_1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.combo_2_1.FormattingEnabled = true; - this.combo_2_1.Location = new System.Drawing.Point(114, 21); - this.combo_2_1.Name = "combo_2_1"; - this.combo_2_1.Size = new System.Drawing.Size(121, 21); - this.combo_2_1.TabIndex = 2; - this.combo_2_1.SelectedIndexChanged += new System.EventHandler(this.combo_SelectedIndexChanged); - // - // cbMemcard_2 - // - this.cbMemcard_2.AutoSize = true; - this.cbMemcard_2.Location = new System.Drawing.Point(18, 21); - this.cbMemcard_2.Name = "cbMemcard_2"; - this.cbMemcard_2.Size = new System.Drawing.Size(70, 17); - this.cbMemcard_2.TabIndex = 1; - this.cbMemcard_2.Text = "Memcard"; - this.cbMemcard_2.UseVisualStyleBackColor = true; - this.cbMemcard_2.CheckedChanged += new System.EventHandler(this.cb_changed); - // - // cbMultitap_2 - // - this.cbMultitap_2.AutoSize = true; - this.cbMultitap_2.Location = new System.Drawing.Point(18, 43); - this.cbMultitap_2.Name = "cbMultitap_2"; - this.cbMultitap_2.Size = new System.Drawing.Size(63, 17); - this.cbMultitap_2.TabIndex = 0; - this.cbMultitap_2.Text = "Multitap"; - this.cbMultitap_2.UseVisualStyleBackColor = true; - this.cbMultitap_2.CheckedChanged += new System.EventHandler(this.cb_changed); - // - // PSXControllerConfigNew - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(586, 201); - this.Controls.Add(this.groupBox2); - this.Controls.Add(this.btnCancel); - this.Controls.Add(this.btnOK); - this.Controls.Add(this.groupBox1); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "PSXControllerConfigNew"; - this.Text = "PSX FrontIO Configuration"; - this.Load += new System.EventHandler(this.PSXControllerConfigNew_Load); - this.groupBox1.ResumeLayout(false); - this.groupBox1.PerformLayout(); - this.groupBox2.ResumeLayout(false); - this.groupBox2.PerformLayout(); - this.ResumeLayout(false); - + this.cbMultitap_1 = new System.Windows.Forms.CheckBox(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.lbl_p_1_4 = new System.Windows.Forms.Label(); + this.lbl_p_1_3 = new System.Windows.Forms.Label(); + this.lbl_p_1_2 = new System.Windows.Forms.Label(); + this.lbl_p_1_1 = new System.Windows.Forms.Label(); + this.lbl_1_4 = new System.Windows.Forms.Label(); + this.lbl_1_3 = new System.Windows.Forms.Label(); + this.lbl_1_2 = new System.Windows.Forms.Label(); + this.lbl_1_1 = new System.Windows.Forms.Label(); + this.combo_1_4 = new System.Windows.Forms.ComboBox(); + this.combo_1_3 = new System.Windows.Forms.ComboBox(); + this.combo_1_2 = new System.Windows.Forms.ComboBox(); + this.combo_1_1 = new System.Windows.Forms.ComboBox(); + this.cbMemcard_1 = new System.Windows.Forms.CheckBox(); + this.btnOK = new System.Windows.Forms.Button(); + this.btnCancel = new System.Windows.Forms.Button(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.lbl_p_2_4 = new System.Windows.Forms.Label(); + this.lbl_p_2_3 = new System.Windows.Forms.Label(); + this.lbl_p_2_2 = new System.Windows.Forms.Label(); + this.lbl_p_2_1 = new System.Windows.Forms.Label(); + this.lbl_2_4 = new System.Windows.Forms.Label(); + this.lbl_2_3 = new System.Windows.Forms.Label(); + this.lbl_2_2 = new System.Windows.Forms.Label(); + this.lbl_2_1 = new System.Windows.Forms.Label(); + this.combo_2_4 = new System.Windows.Forms.ComboBox(); + this.combo_2_3 = new System.Windows.Forms.ComboBox(); + this.combo_2_2 = new System.Windows.Forms.ComboBox(); + this.combo_2_1 = new System.Windows.Forms.ComboBox(); + this.cbMemcard_2 = new System.Windows.Forms.CheckBox(); + this.cbMultitap_2 = new System.Windows.Forms.CheckBox(); + this.label1 = new System.Windows.Forms.Label(); + this.groupBox1.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.SuspendLayout(); + // + // cbMultitap_1 + // + this.cbMultitap_1.AutoSize = true; + this.cbMultitap_1.Enabled = false; + this.cbMultitap_1.Location = new System.Drawing.Point(18, 43); + this.cbMultitap_1.Name = "cbMultitap_1"; + this.cbMultitap_1.Size = new System.Drawing.Size(63, 17); + this.cbMultitap_1.TabIndex = 0; + this.cbMultitap_1.Text = "Multitap"; + this.cbMultitap_1.UseVisualStyleBackColor = true; + this.cbMultitap_1.CheckedChanged += new System.EventHandler(this.cb_changed); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.lbl_p_1_4); + this.groupBox1.Controls.Add(this.lbl_p_1_3); + this.groupBox1.Controls.Add(this.lbl_p_1_2); + this.groupBox1.Controls.Add(this.lbl_p_1_1); + this.groupBox1.Controls.Add(this.lbl_1_4); + this.groupBox1.Controls.Add(this.lbl_1_3); + this.groupBox1.Controls.Add(this.lbl_1_2); + this.groupBox1.Controls.Add(this.lbl_1_1); + this.groupBox1.Controls.Add(this.combo_1_4); + this.groupBox1.Controls.Add(this.combo_1_3); + this.groupBox1.Controls.Add(this.combo_1_2); + this.groupBox1.Controls.Add(this.combo_1_1); + this.groupBox1.Controls.Add(this.cbMemcard_1); + this.groupBox1.Controls.Add(this.cbMultitap_1); + this.groupBox1.Location = new System.Drawing.Point(12, 12); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(273, 136); + this.groupBox1.TabIndex = 1; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Port 1"; + // + // lbl_p_1_4 + // + this.lbl_p_1_4.AutoSize = true; + this.lbl_p_1_4.Location = new System.Drawing.Point(241, 105); + this.lbl_p_1_4.Name = "lbl_p_1_4"; + this.lbl_p_1_4.Size = new System.Drawing.Size(20, 13); + this.lbl_p_1_4.TabIndex = 12; + this.lbl_p_1_4.Text = "P1"; + this.lbl_p_1_4.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // lbl_p_1_3 + // + this.lbl_p_1_3.AutoSize = true; + this.lbl_p_1_3.Location = new System.Drawing.Point(241, 78); + this.lbl_p_1_3.Name = "lbl_p_1_3"; + this.lbl_p_1_3.Size = new System.Drawing.Size(20, 13); + this.lbl_p_1_3.TabIndex = 11; + this.lbl_p_1_3.Text = "P1"; + this.lbl_p_1_3.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // lbl_p_1_2 + // + this.lbl_p_1_2.AutoSize = true; + this.lbl_p_1_2.Location = new System.Drawing.Point(241, 50); + this.lbl_p_1_2.Name = "lbl_p_1_2"; + this.lbl_p_1_2.Size = new System.Drawing.Size(20, 13); + this.lbl_p_1_2.TabIndex = 10; + this.lbl_p_1_2.Text = "P1"; + this.lbl_p_1_2.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // lbl_p_1_1 + // + this.lbl_p_1_1.AutoSize = true; + this.lbl_p_1_1.Location = new System.Drawing.Point(241, 24); + this.lbl_p_1_1.Name = "lbl_p_1_1"; + this.lbl_p_1_1.Size = new System.Drawing.Size(20, 13); + this.lbl_p_1_1.TabIndex = 9; + this.lbl_p_1_1.Text = "P1"; + this.lbl_p_1_1.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // lbl_1_4 + // + this.lbl_1_4.AutoSize = true; + this.lbl_1_4.Location = new System.Drawing.Point(94, 105); + this.lbl_1_4.Name = "lbl_1_4"; + this.lbl_1_4.Size = new System.Drawing.Size(15, 13); + this.lbl_1_4.TabIndex = 8; + this.lbl_1_4.Text = "D"; + this.lbl_1_4.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // lbl_1_3 + // + this.lbl_1_3.AutoSize = true; + this.lbl_1_3.Location = new System.Drawing.Point(94, 78); + this.lbl_1_3.Name = "lbl_1_3"; + this.lbl_1_3.Size = new System.Drawing.Size(14, 13); + this.lbl_1_3.TabIndex = 7; + this.lbl_1_3.Text = "C"; + this.lbl_1_3.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // lbl_1_2 + // + this.lbl_1_2.AutoSize = true; + this.lbl_1_2.Location = new System.Drawing.Point(94, 51); + this.lbl_1_2.Name = "lbl_1_2"; + this.lbl_1_2.Size = new System.Drawing.Size(14, 13); + this.lbl_1_2.TabIndex = 6; + this.lbl_1_2.Text = "B"; + this.lbl_1_2.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // lbl_1_1 + // + this.lbl_1_1.AutoSize = true; + this.lbl_1_1.Location = new System.Drawing.Point(94, 24); + this.lbl_1_1.Name = "lbl_1_1"; + this.lbl_1_1.Size = new System.Drawing.Size(14, 13); + this.lbl_1_1.TabIndex = 2; + this.lbl_1_1.Text = "A"; + this.lbl_1_1.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // combo_1_4 + // + this.combo_1_4.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.combo_1_4.FormattingEnabled = true; + this.combo_1_4.Location = new System.Drawing.Point(114, 102); + this.combo_1_4.Name = "combo_1_4"; + this.combo_1_4.Size = new System.Drawing.Size(121, 21); + this.combo_1_4.TabIndex = 5; + this.combo_1_4.SelectedIndexChanged += new System.EventHandler(this.combo_SelectedIndexChanged); + // + // combo_1_3 + // + this.combo_1_3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.combo_1_3.FormattingEnabled = true; + this.combo_1_3.Location = new System.Drawing.Point(114, 75); + this.combo_1_3.Name = "combo_1_3"; + this.combo_1_3.Size = new System.Drawing.Size(121, 21); + this.combo_1_3.TabIndex = 4; + this.combo_1_3.SelectedIndexChanged += new System.EventHandler(this.combo_SelectedIndexChanged); + // + // combo_1_2 + // + this.combo_1_2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.combo_1_2.FormattingEnabled = true; + this.combo_1_2.Location = new System.Drawing.Point(114, 48); + this.combo_1_2.Name = "combo_1_2"; + this.combo_1_2.Size = new System.Drawing.Size(121, 21); + this.combo_1_2.TabIndex = 3; + this.combo_1_2.SelectedIndexChanged += new System.EventHandler(this.combo_SelectedIndexChanged); + // + // combo_1_1 + // + this.combo_1_1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.combo_1_1.FormattingEnabled = true; + this.combo_1_1.Location = new System.Drawing.Point(114, 21); + this.combo_1_1.Name = "combo_1_1"; + this.combo_1_1.Size = new System.Drawing.Size(121, 21); + this.combo_1_1.TabIndex = 2; + this.combo_1_1.SelectedIndexChanged += new System.EventHandler(this.combo_SelectedIndexChanged); + // + // cbMemcard_1 + // + this.cbMemcard_1.AutoSize = true; + this.cbMemcard_1.Location = new System.Drawing.Point(18, 21); + this.cbMemcard_1.Name = "cbMemcard_1"; + this.cbMemcard_1.Size = new System.Drawing.Size(70, 17); + this.cbMemcard_1.TabIndex = 1; + this.cbMemcard_1.Text = "Memcard"; + this.cbMemcard_1.UseVisualStyleBackColor = true; + this.cbMemcard_1.CheckedChanged += new System.EventHandler(this.cb_changed); + // + // btnOK + // + this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK; + this.btnOK.Location = new System.Drawing.Point(408, 163); + this.btnOK.Name = "btnOK"; + this.btnOK.Size = new System.Drawing.Size(75, 23); + this.btnOK.TabIndex = 2; + this.btnOK.Text = "OK"; + this.btnOK.UseVisualStyleBackColor = true; + this.btnOK.Click += new System.EventHandler(this.btnOK_Click); + // + // btnCancel + // + this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.btnCancel.Location = new System.Drawing.Point(489, 163); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Size = new System.Drawing.Size(75, 23); + this.btnCancel.TabIndex = 3; + this.btnCancel.Text = "Cancel"; + this.btnCancel.UseVisualStyleBackColor = true; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.lbl_p_2_4); + this.groupBox2.Controls.Add(this.lbl_p_2_3); + this.groupBox2.Controls.Add(this.lbl_p_2_2); + this.groupBox2.Controls.Add(this.lbl_p_2_1); + this.groupBox2.Controls.Add(this.lbl_2_4); + this.groupBox2.Controls.Add(this.lbl_2_3); + this.groupBox2.Controls.Add(this.lbl_2_2); + this.groupBox2.Controls.Add(this.lbl_2_1); + this.groupBox2.Controls.Add(this.combo_2_4); + this.groupBox2.Controls.Add(this.combo_2_3); + this.groupBox2.Controls.Add(this.combo_2_2); + this.groupBox2.Controls.Add(this.combo_2_1); + this.groupBox2.Controls.Add(this.cbMemcard_2); + this.groupBox2.Controls.Add(this.cbMultitap_2); + this.groupBox2.Location = new System.Drawing.Point(291, 12); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(273, 136); + this.groupBox2.TabIndex = 13; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Port 2"; + // + // lbl_p_2_4 + // + this.lbl_p_2_4.AutoSize = true; + this.lbl_p_2_4.Location = new System.Drawing.Point(241, 105); + this.lbl_p_2_4.Name = "lbl_p_2_4"; + this.lbl_p_2_4.Size = new System.Drawing.Size(20, 13); + this.lbl_p_2_4.TabIndex = 12; + this.lbl_p_2_4.Text = "P1"; + this.lbl_p_2_4.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // lbl_p_2_3 + // + this.lbl_p_2_3.AutoSize = true; + this.lbl_p_2_3.Location = new System.Drawing.Point(241, 78); + this.lbl_p_2_3.Name = "lbl_p_2_3"; + this.lbl_p_2_3.Size = new System.Drawing.Size(20, 13); + this.lbl_p_2_3.TabIndex = 11; + this.lbl_p_2_3.Text = "P1"; + this.lbl_p_2_3.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // lbl_p_2_2 + // + this.lbl_p_2_2.AutoSize = true; + this.lbl_p_2_2.Location = new System.Drawing.Point(241, 50); + this.lbl_p_2_2.Name = "lbl_p_2_2"; + this.lbl_p_2_2.Size = new System.Drawing.Size(20, 13); + this.lbl_p_2_2.TabIndex = 10; + this.lbl_p_2_2.Text = "P1"; + this.lbl_p_2_2.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // lbl_p_2_1 + // + this.lbl_p_2_1.AutoSize = true; + this.lbl_p_2_1.Location = new System.Drawing.Point(241, 24); + this.lbl_p_2_1.Name = "lbl_p_2_1"; + this.lbl_p_2_1.Size = new System.Drawing.Size(20, 13); + this.lbl_p_2_1.TabIndex = 9; + this.lbl_p_2_1.Text = "P1"; + this.lbl_p_2_1.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // lbl_2_4 + // + this.lbl_2_4.AutoSize = true; + this.lbl_2_4.Location = new System.Drawing.Point(94, 105); + this.lbl_2_4.Name = "lbl_2_4"; + this.lbl_2_4.Size = new System.Drawing.Size(15, 13); + this.lbl_2_4.TabIndex = 8; + this.lbl_2_4.Text = "D"; + this.lbl_2_4.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // lbl_2_3 + // + this.lbl_2_3.AutoSize = true; + this.lbl_2_3.Location = new System.Drawing.Point(94, 78); + this.lbl_2_3.Name = "lbl_2_3"; + this.lbl_2_3.Size = new System.Drawing.Size(14, 13); + this.lbl_2_3.TabIndex = 7; + this.lbl_2_3.Text = "C"; + this.lbl_2_3.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // lbl_2_2 + // + this.lbl_2_2.AutoSize = true; + this.lbl_2_2.Location = new System.Drawing.Point(94, 51); + this.lbl_2_2.Name = "lbl_2_2"; + this.lbl_2_2.Size = new System.Drawing.Size(14, 13); + this.lbl_2_2.TabIndex = 6; + this.lbl_2_2.Text = "B"; + this.lbl_2_2.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // lbl_2_1 + // + this.lbl_2_1.AutoSize = true; + this.lbl_2_1.Location = new System.Drawing.Point(94, 24); + this.lbl_2_1.Name = "lbl_2_1"; + this.lbl_2_1.Size = new System.Drawing.Size(14, 13); + this.lbl_2_1.TabIndex = 2; + this.lbl_2_1.Text = "A"; + this.lbl_2_1.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // combo_2_4 + // + this.combo_2_4.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.combo_2_4.FormattingEnabled = true; + this.combo_2_4.Location = new System.Drawing.Point(114, 102); + this.combo_2_4.Name = "combo_2_4"; + this.combo_2_4.Size = new System.Drawing.Size(121, 21); + this.combo_2_4.TabIndex = 5; + this.combo_2_4.SelectedIndexChanged += new System.EventHandler(this.combo_SelectedIndexChanged); + // + // combo_2_3 + // + this.combo_2_3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.combo_2_3.FormattingEnabled = true; + this.combo_2_3.Location = new System.Drawing.Point(114, 75); + this.combo_2_3.Name = "combo_2_3"; + this.combo_2_3.Size = new System.Drawing.Size(121, 21); + this.combo_2_3.TabIndex = 4; + this.combo_2_3.SelectedIndexChanged += new System.EventHandler(this.combo_SelectedIndexChanged); + // + // combo_2_2 + // + this.combo_2_2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.combo_2_2.FormattingEnabled = true; + this.combo_2_2.Location = new System.Drawing.Point(114, 48); + this.combo_2_2.Name = "combo_2_2"; + this.combo_2_2.Size = new System.Drawing.Size(121, 21); + this.combo_2_2.TabIndex = 3; + this.combo_2_2.SelectedIndexChanged += new System.EventHandler(this.combo_SelectedIndexChanged); + // + // combo_2_1 + // + this.combo_2_1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.combo_2_1.FormattingEnabled = true; + this.combo_2_1.Location = new System.Drawing.Point(114, 21); + this.combo_2_1.Name = "combo_2_1"; + this.combo_2_1.Size = new System.Drawing.Size(121, 21); + this.combo_2_1.TabIndex = 2; + this.combo_2_1.SelectedIndexChanged += new System.EventHandler(this.combo_SelectedIndexChanged); + // + // cbMemcard_2 + // + this.cbMemcard_2.AutoSize = true; + this.cbMemcard_2.Location = new System.Drawing.Point(18, 21); + this.cbMemcard_2.Name = "cbMemcard_2"; + this.cbMemcard_2.Size = new System.Drawing.Size(70, 17); + this.cbMemcard_2.TabIndex = 1; + this.cbMemcard_2.Text = "Memcard"; + this.cbMemcard_2.UseVisualStyleBackColor = true; + this.cbMemcard_2.CheckedChanged += new System.EventHandler(this.cb_changed); + // + // cbMultitap_2 + // + this.cbMultitap_2.AutoSize = true; + this.cbMultitap_2.Enabled = false; + this.cbMultitap_2.Location = new System.Drawing.Point(18, 43); + this.cbMultitap_2.Name = "cbMultitap_2"; + this.cbMultitap_2.Size = new System.Drawing.Size(63, 17); + this.cbMultitap_2.TabIndex = 0; + this.cbMultitap_2.Text = "Multitap"; + this.cbMultitap_2.UseVisualStyleBackColor = true; + this.cbMultitap_2.CheckedChanged += new System.EventHandler(this.cb_changed); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(13, 172); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(177, 13); + this.label1.TabIndex = 14; + this.label1.Text = "Sorry, multitap not supported just yet"; + // + // PSXControllerConfigNew + // + 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(586, 201); + this.Controls.Add(this.label1); + this.Controls.Add(this.groupBox2); + this.Controls.Add(this.btnCancel); + this.Controls.Add(this.btnOK); + this.Controls.Add(this.groupBox1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "PSXControllerConfigNew"; + this.Text = "PSX FrontIO Configuration"; + this.Load += new System.EventHandler(this.PSXControllerConfigNew_Load); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + } #endregion @@ -470,6 +486,7 @@ private System.Windows.Forms.ComboBox combo_2_2; private System.Windows.Forms.ComboBox combo_2_1; private System.Windows.Forms.CheckBox cbMemcard_2; - private System.Windows.Forms.CheckBox cbMultitap_2; + private System.Windows.Forms.CheckBox cbMultitap_2; + private System.Windows.Forms.Label label1; } } \ No newline at end of file diff --git a/BizHawk.Client.EmuHawk/config/PSX/PSXControllerConfigNew.cs b/BizHawk.Client.EmuHawk/config/PSX/PSXControllerConfigNew.cs index 2f7758a097..0c4ab7d700 100644 --- a/BizHawk.Client.EmuHawk/config/PSX/PSXControllerConfigNew.cs +++ b/BizHawk.Client.EmuHawk/config/PSX/PSXControllerConfigNew.cs @@ -34,15 +34,56 @@ namespace BizHawk.Client.EmuHawk combo.SelectedIndex = 0; } + var psxSettings = ((Octoshock)Global.Emulator).GetSyncSettings(); + GuiFromUserConfig(psxSettings.FIOConfig); + RefreshLabels(); + } + + void GuiFromUserConfig(OctoshockFIOConfigUser user) + { + cbMemcard_1.Checked = user.Memcards[0]; + cbMemcard_2.Checked = user.Memcards[1]; + cbMultitap_1.Checked = user.Multitaps[0]; + cbMultitap_2.Checked = user.Multitaps[1]; + + var combos = new[] { combo_1_1, combo_1_2, combo_1_3, combo_1_4, combo_2_1, combo_2_2, combo_2_3, combo_2_4 }; + for (int i = 0; i < 8; i++) + { + var combo = combos[i]; + if (user.Devices8[i] == OctoshockDll.ePeripheralType.None) combo.SelectedIndex = 0; + if (user.Devices8[i] == OctoshockDll.ePeripheralType.DualAnalog) combo.SelectedIndex = 1; + if (user.Devices8[i] == OctoshockDll.ePeripheralType.DualShock) combo.SelectedIndex = 2; + } + } + + OctoshockFIOConfigUser UserConfigFromGui() + { + OctoshockFIOConfigUser uc = new OctoshockFIOConfigUser(); + + uc.Memcards[0] = cbMemcard_1.Checked; + uc.Memcards[1] = cbMemcard_2.Checked; + + uc.Multitaps[0] = cbMultitap_1.Checked; + uc.Multitaps[1] = cbMultitap_2.Checked; + + var combos = new[] { combo_1_1, combo_1_2, combo_1_3, combo_1_4, combo_2_1, combo_2_2, combo_2_3, combo_2_4 }; + for (int i = 0; i < 8; i++) + { + var combo = combos[i]; + if (combo.SelectedIndex == 0) uc.Devices8[i] = OctoshockDll.ePeripheralType.None; + if (combo.SelectedIndex == 1) uc.Devices8[i] = OctoshockDll.ePeripheralType.DualAnalog; + if (combo.SelectedIndex == 2) uc.Devices8[i] = OctoshockDll.ePeripheralType.DualShock; + } + + return uc; } void RefreshLabels() - { - bool multitap_1 = cbMultitap_1.Checked; - bool multitap_2 = cbMultitap_2.Checked; + { + var uc = UserConfigFromGui(); - bool b1 = multitap_1; + bool b1 = uc.Multitaps[0]; lbl_1_1.Visible = b1; lbl_1_2.Visible = b1; lbl_1_3.Visible = b1; @@ -52,9 +93,9 @@ namespace BizHawk.Client.EmuHawk combo_1_4.Enabled = b1; lbl_p_1_2.Visible = b1; lbl_p_1_3.Visible = b1; - lbl_p_1_4.Visible = b1; - - bool b2 = multitap_2; + lbl_p_1_4.Visible = b1; + + bool b2 = uc.Multitaps[1]; lbl_2_1.Visible = b2; lbl_2_2.Visible = b2; lbl_2_3.Visible = b2; @@ -66,21 +107,7 @@ namespace BizHawk.Client.EmuHawk lbl_p_2_3.Visible = b2; lbl_p_2_4.Visible = b2; - OctoshockControlUserConfig uc = new OctoshockControlUserConfig(); - - uc.Multitaps[0] = multitap_1; - uc.Multitaps[1] = multitap_2; - - var combos = new[] { combo_1_1, combo_1_2, combo_1_3, combo_1_4, combo_2_1, combo_2_2, combo_2_3, combo_2_4}; - for (int i = 0; i < 8; i++) - { - var combo = combos[i]; - if (combo.SelectedIndex == 0) uc.Devices8[i] = OctoshockDll.ePeripheralType.None; - if (combo.SelectedIndex == 1) uc.Devices8[i] = OctoshockDll.ePeripheralType.DualAnalog; - if (combo.SelectedIndex == 2) uc.Devices8[i] = OctoshockDll.ePeripheralType.DualShock; - } - - var LC = uc.ToLogicalConfig(); + var LC = uc.ToLogical(); var p_labels = new[] { lbl_p_1_1,lbl_p_1_2,lbl_p_1_3,lbl_p_1_4,lbl_p_2_1,lbl_p_2_2,lbl_p_2_3,lbl_p_2_4}; for (int i = 0; i < 8; i++) @@ -94,7 +121,6 @@ namespace BizHawk.Client.EmuHawk lbl.Visible = true; } } - } private void cb_changed(object sender, EventArgs e) @@ -105,6 +131,18 @@ namespace BizHawk.Client.EmuHawk private void combo_SelectedIndexChanged(object sender, EventArgs e) { RefreshLabels(); + } + + private void btnOK_Click(object sender, EventArgs e) + { + var psxSettings = ((Octoshock)Global.Emulator).GetSyncSettings(); + + psxSettings.FIOConfig = UserConfigFromGui(); + GlobalWin.MainForm.PutCoreSyncSettings(psxSettings); + + DialogResult = DialogResult.OK; + + Close(); } } } diff --git a/BizHawk.Client.EmuHawk/config/PSX/PSXControllerConfigNew.resx b/BizHawk.Client.EmuHawk/config/PSX/PSXControllerConfigNew.resx index 1af7de150c..29dcb1b3a3 100644 --- a/BizHawk.Client.EmuHawk/config/PSX/PSXControllerConfigNew.resx +++ b/BizHawk.Client.EmuHawk/config/PSX/PSXControllerConfigNew.resx @@ -1,120 +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 - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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/BizHawk.Client.EmuHawk/tools/VirtualPads/schema/PSXSchema.cs b/BizHawk.Client.EmuHawk/tools/VirtualPads/schema/PSXSchema.cs index e2fc87c47c..71082ec872 100644 --- a/BizHawk.Client.EmuHawk/tools/VirtualPads/schema/PSXSchema.cs +++ b/BizHawk.Client.EmuHawk/tools/VirtualPads/schema/PSXSchema.cs @@ -14,19 +14,14 @@ namespace BizHawk.Client.EmuHawk var psx = ((Octoshock)Global.Emulator); var settings = (Octoshock.SyncSettings)psx.GetSyncSettings(); - for (int i = 0; i < settings.Controllers.Length; i++) + var fioConfig = settings.FIOConfig.ToLogical(); + for (int i = 0; i < 2; i++) { - if (settings.Controllers[i].IsConnected) - { - if (settings.Controllers[i].Type == Octoshock.ControllerSetting.ControllerType.Gamepad) - { - yield return GamePadController(i + 1); - } - else - { - yield return DualShockController(i + 1); - } - } + int pnum = i + 1; + if (fioConfig.DevicesPlayer[i] == OctoshockDll.ePeripheralType.DualAnalog || fioConfig.DevicesPlayer[i] == OctoshockDll.ePeripheralType.DualShock) + yield return DualShockController(pnum); + if (fioConfig.DevicesPlayer[i] == OctoshockDll.ePeripheralType.Pad) + yield return GamePadController(pnum); } yield return ConsoleButtons(psx); diff --git a/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj b/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj index 0876ed3bcb..32e208be7d 100644 --- a/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj +++ b/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj @@ -797,8 +797,8 @@ Code - + diff --git a/BizHawk.Emulation.Cores/Consoles/Sony/PSX/Octoshock.cs b/BizHawk.Emulation.Cores/Consoles/Sony/PSX/Octoshock.cs index 2552eac888..ca16d2ce99 100644 --- a/BizHawk.Emulation.Cores/Consoles/Sony/PSX/Octoshock.cs +++ b/BizHawk.Emulation.Cores/Consoles/Sony/PSX/Octoshock.cs @@ -39,47 +39,49 @@ namespace BizHawk.Emulation.Cores.Sony.PSX private void SetControllerButtons() { ControllerDefinition = new ControllerDefinition(); - ControllerDefinition.Name = _SyncSettings.Controllers.All(c => c.Type == ControllerSetting.ControllerType.Gamepad) - ? "PSX Gamepad Controller" - : "PSX DualShock Controller"; // Meh, more nuanced logic doesn't really work with a simple property + ControllerDefinition.Name = "PSX DualShock Controller"; // <-- for compatibility + //ControllerDefinition.Name = "PSX FrontIO"; // TODO - later rename to this, I guess, so it's less misleading. don't want to wreck keybindings yet. ControllerDefinition.BoolButtons.Clear(); ControllerDefinition.FloatControls.Clear(); - for (int i = 0; i < _SyncSettings.Controllers.Length; i++) + var cfg = _SyncSettings.FIOConfig.ToLogical(); + + for (int i = 0; i < cfg.NumPlayers; i++) { - if (_SyncSettings.Controllers[i].IsConnected) - { + int pnum = i + 1; ControllerDefinition.BoolButtons.AddRange(new[] { - "P" + (i + 1) + " Up", - "P" + (i + 1) + " Down", - "P" + (i + 1) + " Left", - "P" + (i + 1) + " Right", - "P" + (i + 1) + " Select", - "P" + (i + 1) + " Start", - "P" + (i + 1) + " Square", - "P" + (i + 1) + " Triangle", - "P" + (i + 1) + " Circle", - "P" + (i + 1) + " Cross", - "P" + (i + 1) + " L1", - "P" + (i + 1) + " R1", - "P" + (i + 1) + " L2", - "P" + (i + 1) + " R2", + "P" + pnum + " Up", + "P" + pnum + " Down", + "P" + pnum + " Left", + "P" + pnum + " Right", + "P" + pnum + " Select", + "P" + pnum + " Start", + "P" + pnum + " Square", + "P" + pnum + " Triangle", + "P" + pnum + " Circle", + "P" + pnum + " Cross", + "P" + pnum + " L1", + "P" + pnum + " R1", + "P" + pnum + " L2", + "P" + pnum + " R2", }); - if (_SyncSettings.Controllers[i].Type != ControllerSetting.ControllerType.Gamepad) + var type = cfg.DevicesPlayer[i]; + + if (type == OctoshockDll.ePeripheralType.DualShock || type == OctoshockDll.ePeripheralType.DualAnalog) { - ControllerDefinition.BoolButtons.Add("P" + (i + 1) + " L3"); - ControllerDefinition.BoolButtons.Add("P" + (i + 1) + " R3"); - ControllerDefinition.BoolButtons.Add("P" + (i + 1) + " MODE"); + ControllerDefinition.BoolButtons.Add("P" + pnum + " L3"); + ControllerDefinition.BoolButtons.Add("P" + pnum + " R3"); + ControllerDefinition.BoolButtons.Add("P" + pnum + " MODE"); ControllerDefinition.FloatControls.AddRange(new[] { - "P" + (i + 1) + " LStick X", - "P" + (i + 1) + " LStick Y", - "P" + (i + 1) + " RStick X", - "P" + (i + 1) + " RStick Y" + "P" + pnum + " LStick X", + "P" + pnum + " LStick Y", + "P" + pnum + " RStick X", + "P" + pnum + " RStick Y" }); ControllerDefinition.FloatRanges.Add(new[] { 0.0f, 128.0f, 255.0f }); @@ -88,7 +90,6 @@ namespace BizHawk.Emulation.Cores.Sony.PSX ControllerDefinition.FloatRanges.Add(new[] { 255.0f, 128.0f, 0.0f }); } } - } ControllerDefinition.BoolButtons.AddRange(new[] { @@ -374,21 +375,18 @@ namespace BizHawk.Emulation.Cores.Sony.PSX //setup the controller based on sync settings SetControllerButtons(); - var lookup = new Dictionary { - { ControllerSetting.ControllerType.Gamepad, OctoshockDll.ePeripheralType.Pad }, - { ControllerSetting.ControllerType.DualAnalog, OctoshockDll.ePeripheralType.DualAnalog }, - { ControllerSetting.ControllerType.DualShock, OctoshockDll.ePeripheralType.DualShock }, + var fioCfg = _SyncSettings.FIOConfig; + if(fioCfg.Devices8[0] != OctoshockDll.ePeripheralType.None) + OctoshockDll.shock_Peripheral_Connect(psx, 0x01, fioCfg.Devices8[0]); + if (fioCfg.Devices8[4] != OctoshockDll.ePeripheralType.None) + OctoshockDll.shock_Peripheral_Connect(psx, 0x02, fioCfg.Devices8[4]); + + var memcardTransaction = new OctoshockDll.ShockMemcardTransaction() + { + transaction = OctoshockDll.eShockMemcardTransaction.Connect }; - - if (_SyncSettings.Controllers[0].IsConnected) - { - OctoshockDll.shock_Peripheral_Connect(psx, 0x01, lookup[_SyncSettings.Controllers[0].Type]); - } - - if (_SyncSettings.Controllers[1].IsConnected) - { - OctoshockDll.shock_Peripheral_Connect(psx, 0x02, lookup[_SyncSettings.Controllers[1].Type]); - } + if (fioCfg.Memcards[0]) OctoshockDll.shock_Peripheral_MemcardTransact(psx, 0x01, ref memcardTransaction); + if (fioCfg.Memcards[1]) OctoshockDll.shock_Peripheral_MemcardTransact(psx, 0x02, ref memcardTransaction); //do this after framebuffers and peripherals and whatever crap are setup. kind of lame, but thats how it is for now StudySaveBufferSize(); @@ -423,65 +421,48 @@ namespace BizHawk.Emulation.Cores.Sony.PSX void SetInput() { - uint buttons = 0; + var fioCfg = _SyncSettings.FIOConfig.ToLogical(); - if (_SyncSettings.Controllers[0].IsConnected) + int portNum = 0x01; + foreach (int slot in new[] { 0, 4 }) { - //dualshock style - if (Controller["P1 Select"]) buttons |= 1; - if (Controller["P1 L3"]) buttons |= 2; - if (Controller["P1 R3"]) buttons |= 4; - if (Controller["P1 Start"]) buttons |= 8; - if (Controller["P1 Up"]) buttons |= 16; - if (Controller["P1 Right"]) buttons |= 32; - if (Controller["P1 Down"]) buttons |= 64; - if (Controller["P1 Left"]) buttons |= 128; - if (Controller["P1 L2"]) buttons |= 256; - if (Controller["P1 R2"]) buttons |= 512; - if (Controller["P1 L1"]) buttons |= 1024; - if (Controller["P1 R1"]) buttons |= 2048; - if (Controller["P1 Triangle"]) buttons |= 4096; - if (Controller["P1 Circle"]) buttons |= 8192; - if (Controller["P1 Cross"]) buttons |= 16384; - if (Controller["P1 Square"]) buttons |= 32768; - if (Controller["P1 MODE"]) buttons |= 65536; + //no input to set + if (fioCfg.Devices8[slot] == OctoshockDll.ePeripheralType.None) + continue; - byte left_x = (byte)Controller.GetFloat("P1 LStick X"); - byte left_y = (byte)Controller.GetFloat("P1 LStick Y"); - byte right_x = (byte)Controller.GetFloat("P1 RStick X"); - byte right_y = (byte)Controller.GetFloat("P1 RStick Y"); + uint buttons = 0; + string pstring = "P" + fioCfg.PlayerAssignments[slot] + " "; - OctoshockDll.shock_Peripheral_SetPadInput(psx, 0x01, buttons, left_x, left_y, right_x, right_y); - } + if (Controller[pstring + "Select"]) buttons |= 1; + if (Controller[pstring + "Start"]) buttons |= 8; + if (Controller[pstring + "Up"]) buttons |= 16; + if (Controller[pstring + "Right"]) buttons |= 32; + if (Controller[pstring + "Down"]) buttons |= 64; + if (Controller[pstring + "Left"]) buttons |= 128; + if (Controller[pstring + "L2"]) buttons |= 256; + if (Controller[pstring + "R2"]) buttons |= 512; + if (Controller[pstring + "L1"]) buttons |= 1024; + if (Controller[pstring + "R1"]) buttons |= 2048; + if (Controller[pstring + "Triangle"]) buttons |= 4096; + if (Controller[pstring + "Circle"]) buttons |= 8192; + if (Controller[pstring + "Cross"]) buttons |= 16384; + if (Controller[pstring + "Square"]) buttons |= 32768; - if (_SyncSettings.Controllers[1].IsConnected) - { - //dualshock style - buttons = 0; - if (Controller["P2 Select"]) buttons |= 1; - if (Controller["P2 L3"]) buttons |= 2; - if (Controller["P2 R3"]) buttons |= 4; - if (Controller["P2 Start"]) buttons |= 8; - if (Controller["P2 Up"]) buttons |= 16; - if (Controller["P2 Right"]) buttons |= 32; - if (Controller["P2 Down"]) buttons |= 64; - if (Controller["P2 Left"]) buttons |= 128; - if (Controller["P2 L2"]) buttons |= 256; - if (Controller["P2 R2"]) buttons |= 512; - if (Controller["P2 L1"]) buttons |= 1024; - if (Controller["P2 R1"]) buttons |= 2048; - if (Controller["P2 Triangle"]) buttons |= 4096; - if (Controller["P2 Circle"]) buttons |= 8192; - if (Controller["P2 Cross"]) buttons |= 16384; - if (Controller["P2 Square"]) buttons |= 32768; - if (Controller["P2 MODE"]) buttons |= 65536; + byte left_x = 0, left_y = 0, right_x = 0, right_y = 0; + if (fioCfg.Devices8[slot] == OctoshockDll.ePeripheralType.DualShock || fioCfg.Devices8[slot] == OctoshockDll.ePeripheralType.DualAnalog) + { + if (Controller[pstring + "L3"]) buttons |= 2; + if (Controller[pstring + "R3"]) buttons |= 4; + if (Controller[pstring + "MODE"]) buttons |= 65536; - byte left_x = (byte)Controller.GetFloat("P2 LStick X"); - byte left_y = (byte)Controller.GetFloat("P2 LStick Y"); - byte right_x = (byte)Controller.GetFloat("P2 RStick X"); - byte right_y = (byte)Controller.GetFloat("P2 RStick Y"); + left_x = (byte)Controller.GetFloat(pstring + "LStick X"); + left_y = (byte)Controller.GetFloat(pstring + "LStick Y"); + right_x = (byte)Controller.GetFloat(pstring + "RStick X"); + right_y = (byte)Controller.GetFloat(pstring + "RStick Y"); + } - OctoshockDll.shock_Peripheral_SetPadInput(psx, 0x02, buttons, left_x, left_y, right_x, right_y); + OctoshockDll.shock_Peripheral_SetPadInput(psx, portNum, buttons, left_x, left_y, right_x, right_y); + portNum <<= 1; } } @@ -858,25 +839,42 @@ namespace BizHawk.Emulation.Cores.Sony.PSX public byte[] CloneSaveRam() { - var buf = new byte[128 * 1024]; - fixed (byte* pbuf = buf) + var cfg = _SyncSettings.FIOConfig.ToLogical(); + int nMemcards = cfg.NumMemcards; + var buf = new byte[128 * 1024 * nMemcards]; + for (int i = 0, idx = 0, addr=0x01; i < 2; i++, addr<<=1) { - var transaction = new OctoshockDll.ShockMemcardTransaction(); - transaction.buffer128k = pbuf; - transaction.transaction = OctoshockDll.eShockMemcardTransaction.Read; - OctoshockDll.shock_Peripheral_MemcardTransact(psx, 0x01, ref transaction); + if (cfg.Memcards[i]) + { + fixed (byte* pbuf = buf) + { + var transaction = new OctoshockDll.ShockMemcardTransaction(); + transaction.buffer128k = pbuf + idx * 128 * 1024; + transaction.transaction = OctoshockDll.eShockMemcardTransaction.Read; + OctoshockDll.shock_Peripheral_MemcardTransact(psx, addr, ref transaction); + idx++; + } + } } return buf; } public void StoreSaveRam(byte[] data) { - fixed (byte* pbuf = data) + var cfg = _SyncSettings.FIOConfig.ToLogical(); + for (int i = 0, idx = 0, addr = 0x01; i < 2; i++, addr <<= 1) { - var transaction = new OctoshockDll.ShockMemcardTransaction(); - transaction.buffer128k = pbuf; - transaction.transaction = OctoshockDll.eShockMemcardTransaction.Write; - OctoshockDll.shock_Peripheral_MemcardTransact(psx, 0x01, ref transaction); + if (cfg.Memcards[i]) + { + fixed (byte* pbuf = data) + { + var transaction = new OctoshockDll.ShockMemcardTransaction(); + transaction.buffer128k = pbuf + idx * 128 * 1024; + transaction.transaction = OctoshockDll.eShockMemcardTransaction.Write; + OctoshockDll.shock_Peripheral_MemcardTransact(psx, addr, ref transaction); + idx++; + } + } } } @@ -884,9 +882,20 @@ namespace BizHawk.Emulation.Cores.Sony.PSX { get { - var transaction = new OctoshockDll.ShockMemcardTransaction(); - transaction.transaction = OctoshockDll.eShockMemcardTransaction.CheckDirty; - return OctoshockDll.shock_Peripheral_MemcardTransact(psx, 0x01, ref transaction) == OctoshockDll.SHOCK_TRUE; + var cfg = _SyncSettings.FIOConfig.ToLogical(); + for (int i = 0, addr = 0x01; i < 2; i++, addr <<= 1) + { + if (cfg.Memcards[i]) + { + var transaction = new OctoshockDll.ShockMemcardTransaction(); + transaction.transaction = OctoshockDll.eShockMemcardTransaction.CheckDirty; + OctoshockDll.shock_Peripheral_MemcardTransact(psx, addr, ref transaction); + if (OctoshockDll.shock_Peripheral_MemcardTransact(psx, addr, ref transaction) == OctoshockDll.SHOCK_TRUE) + return true; + } + } + + return false; } } @@ -1055,49 +1064,23 @@ namespace BizHawk.Emulation.Cores.Sony.PSX { public SyncSettings Clone() { - var ret = (SyncSettings)MemberwiseClone(); - ret.Controllers = Controllers.Select(x => x.Clone()).ToArray(); - - return ret; + return JsonConvert.DeserializeObject(JsonConvert.SerializeObject(this)); } public bool EnableLEC; - public ControllerSetting[] Controllers = + public SyncSettings() { - new ControllerSetting - { - IsConnected = true, - Type = ControllerSetting.ControllerType.DualShock - }, - new ControllerSetting - { - IsConnected = false, - Type = ControllerSetting.ControllerType.DualShock - } - }; - } - - public class ControllerSetting - { - public ControllerSetting Clone() - { - return (ControllerSetting)this.MemberwiseClone(); + //initialize with historical default settings + var user = new OctoshockFIOConfigUser(); + user.Memcards[0] = user.Memcards[1] = true; + user.Multitaps[0] = user.Multitaps[0] = false; + user.Devices8[0] = OctoshockDll.ePeripheralType.DualShock; + user.Devices8[4] = OctoshockDll.ePeripheralType.DualShock; + FIOConfig = user; } - public bool IsConnected { get; set; } - public ControllerType Type { get; set; } - - public enum ControllerType - { - Gamepad, - - [Description("Dual Analog")] - DualAnalog, - - [Description("Dual Shock")] - DualShock - } + public OctoshockFIOConfigUser FIOConfig; } public enum eHorizontalClipping @@ -1200,12 +1183,15 @@ namespace BizHawk.Emulation.Cores.Sony.PSX public bool PutSyncSettings(SyncSettings o) { - //check for reboot-required options (well, none right now) - bool reboot = false; + //currently LEC and pad settings changes both require reboot + bool reboot = true; + + //we could do it this way roughly if we need to + //if(JsonConvert.SerializeObject(o.FIOConfig) != JsonConvert.SerializeObject(_SyncSettings.FIOConfig) + _SyncSettings = o; - - //TODO - store settings into core? or we can just keep doing it before frameadvance + return reboot; } diff --git a/BizHawk.Emulation.Cores/Consoles/Sony/PSX/OctoshockControlConfig.cs b/BizHawk.Emulation.Cores/Consoles/Sony/PSX/OctoshockFIOConfig.cs similarity index 54% rename from BizHawk.Emulation.Cores/Consoles/Sony/PSX/OctoshockControlConfig.cs rename to BizHawk.Emulation.Cores/Consoles/Sony/PSX/OctoshockFIOConfig.cs index 6cbf28bf3f..c4e0845434 100644 --- a/BizHawk.Emulation.Cores/Consoles/Sony/PSX/OctoshockControlConfig.cs +++ b/BizHawk.Emulation.Cores/Consoles/Sony/PSX/OctoshockFIOConfig.cs @@ -3,28 +3,57 @@ using System.Collections.Generic; namespace BizHawk.Emulation.Cores.Sony.PSX { - public class OctoshockControlUserConfig + /// + /// Represents a user's view of what equipment is plugged into the PSX FIO + /// + public class OctoshockFIOConfigUser { public bool[] Multitaps = new bool[2]; + public bool[] Memcards = new bool[2]; public OctoshockDll.ePeripheralType[] Devices8 = new OctoshockDll.ePeripheralType[8]; - public OctoshockControlLogicalConfig ToLogicalConfig() + public OctoshockFIOConfigLogical ToLogical() { - var lc = new OctoshockControlLogicalConfig(); + var lc = new OctoshockFIOConfigLogical(); lc.PopulateFrom(this); return lc; } } - public class OctoshockControlLogicalConfig + /// + /// Represents a baked-down view of what's plugged into the PSX FIO. + /// But really, users are interested in it too (its what produces the player number assignments) + /// + public class OctoshockFIOConfigLogical { - public int[] PlayerAssignments = new int[8]; public bool[] Multitaps; + public bool[] Memcards; public OctoshockDll.ePeripheralType[] Devices8; - internal void PopulateFrom(OctoshockControlUserConfig userConfig) + /// + /// Total number of players defined + /// + public int NumPlayers; + + /// + /// The player number on each of the input slots + /// + public int[] PlayerAssignments = new int[8]; + + /// + /// The device type associated with each player + /// + public OctoshockDll.ePeripheralType[] DevicesPlayer = new OctoshockDll.ePeripheralType[8]; + + /// + /// Total number of connected memcards + /// + public int NumMemcards { get { return (Memcards[0] ? 1 : 0) + (Memcards[1] ? 1 : 0); } } + + internal void PopulateFrom(OctoshockFIOConfigUser userConfig) { Multitaps = (bool[])userConfig.Multitaps.Clone(); + Memcards = (bool[])userConfig.Memcards.Clone(); Devices8 = (OctoshockDll.ePeripheralType[])userConfig.Devices8.Clone(); int id = 1; @@ -38,6 +67,18 @@ namespace BizHawk.Emulation.Cores.Sony.PSX if (userConfig.Devices8[5] == OctoshockDll.ePeripheralType.None || !userConfig.Multitaps[1]) PlayerAssignments[5] = -1; else PlayerAssignments[5] = id++; if (userConfig.Devices8[6] == OctoshockDll.ePeripheralType.None || !userConfig.Multitaps[1]) PlayerAssignments[6] = -1; else PlayerAssignments[6] = id++; if (userConfig.Devices8[7] == OctoshockDll.ePeripheralType.None || !userConfig.Multitaps[1]) PlayerAssignments[7] = -1; else PlayerAssignments[7] = id++; + + NumPlayers = id - 1; + + for (int i = 0; i < 8; i++) + { + int pnum = i+1; + for (int j = 0; j < 8; j++) + { + if(PlayerAssignments[j] == pnum) + DevicesPlayer[i] = userConfig.Devices8[j]; + } + } } } diff --git a/output/dll/octoshock.dll b/output/dll/octoshock.dll index 935bf7a9ba..1dadf2281d 100644 Binary files a/output/dll/octoshock.dll and b/output/dll/octoshock.dll differ diff --git a/psx/octoshock/bizhawk/octoshock.sln b/psx/octoshock/bizhawk/octoshock.sln index e19efdc80b..78e1a0d864 100644 --- a/psx/octoshock/bizhawk/octoshock.sln +++ b/psx/octoshock/bizhawk/octoshock.sln @@ -1,6 +1,6 @@  Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 +# Visual Studio 2015 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "octoshock", "octoshock.vcxproj", "{5F35CAFC-6208-4FBE-AD17-0E69BA3F70EC}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "miniclient", "..\test\miniclient\miniclient.vcxproj", "{5A0DAC84-1170-4B1A-B9A9-F566A1D97790}" diff --git a/psx/octoshock/psx/frontio.cpp b/psx/octoshock/psx/frontio.cpp index 7d119db4a0..458a8a0be9 100644 --- a/psx/octoshock/psx/frontio.cpp +++ b/psx/octoshock/psx/frontio.cpp @@ -136,10 +136,6 @@ FrontIO::FrontIO() PortData[i] = NULL; MCPorts[i] = new InputDevice(); } - - //always add one memory device for now - delete MCPorts[0]; - MCPorts[0] = Device_Memcard_Create(); } diff --git a/psx/octoshock/psx/frontio.h b/psx/octoshock/psx/frontio.h index 900997eb98..08770d4168 100644 --- a/psx/octoshock/psx/frontio.h +++ b/psx/octoshock/psx/frontio.h @@ -26,6 +26,8 @@ class InputDevice virtual void Update(const pscpu_timestamp_t timestamp); // Partially-implemented, don't rely on for timing any more fine-grained than a video frame for now. virtual void ResetTS(void); + virtual const char* GetName() const { return "InputDevice"; } + // // diff --git a/psx/octoshock/psx/input/memcard.cpp b/psx/octoshock/psx/input/memcard.cpp index 1e7a405512..814e68d117 100644 --- a/psx/octoshock/psx/input/memcard.cpp +++ b/psx/octoshock/psx/input/memcard.cpp @@ -40,6 +40,8 @@ class InputDevice_Memcard : public InputDevice InputDevice_Memcard(); virtual ~InputDevice_Memcard(); + virtual const char* GetName() const { return "InputDevice_Memcard"; } + virtual void Power(void); virtual void SyncState(bool isReader, EW::NewState *ns); // diff --git a/psx/octoshock/psx/psx.cpp b/psx/octoshock/psx/psx.cpp index eca13166b7..e57a3afe10 100644 --- a/psx/octoshock/psx/psx.cpp +++ b/psx/octoshock/psx/psx.cpp @@ -32,6 +32,8 @@ #include "input/dualshock.h" #include "input/dualanalog.h" #include "input/gamepad.h" +#include "input/memcard.h" + #include #include @@ -1197,8 +1199,15 @@ struct { //TODO - once we get flexible here, do some extra condition checks.. whether memcards exist, etc. much like devices. switch(transaction->transaction) { - case eShockMemcardTransaction_Connect: return SHOCK_ERROR; //not supported yet - case eShockMemcardTransaction_Disconnect: return SHOCK_ERROR; //not supported yet + case eShockMemcardTransaction_Connect: + //cant connect when a memcard is already connected + if(!strcmp(FIO->MCPorts[portnum]->GetName(),"InputDevice_Memcard")) + return SHOCK_NOCANDO; + delete FIO->MCPorts[portnum]; //delete dummy + FIO->MCPorts[portnum] = Device_Memcard_Create(); + + case eShockMemcardTransaction_Disconnect: + return SHOCK_ERROR; //not supported yet case eShockMemcardTransaction_Write: FIO->MCPorts[portnum]->WriteNV((uint8*)transaction->buffer128k,0,128*1024);