From c9838d668a8fd55eeb306f73de7f785d83ad9fa6 Mon Sep 17 00:00:00 2001 From: zeromus Date: Sat, 3 Oct 2015 17:27:52 -0500 Subject: [PATCH] psx - hook up new controller configuration, to support 0-2 pads and 0-2 memcards. Not tested very well yet. no multitap this release. --- .../BizHawk.Client.EmuHawk.csproj | 9 - BizHawk.Client.EmuHawk/MainForm.Designer.cs | 2 +- BizHawk.Client.EmuHawk/MainForm.Events.cs | 2 +- .../config/NES/NesControllerSettings.cs | 2 - .../PSX/PSXControllerConfig.Designer.cs | 96 -- .../config/PSX/PSXControllerConfig.cs | 98 --- .../config/PSX/PSXControllerConfig.resx | 624 ------------- .../PSX/PSXControllerConfigNew.Designer.cs | 833 +++++++++--------- .../config/PSX/PSXControllerConfigNew.cs | 84 +- .../config/PSX/PSXControllerConfigNew.resx | 238 ++--- .../tools/VirtualPads/schema/PSXSchema.cs | 19 +- .../BizHawk.Emulation.Cores.csproj | 2 +- .../Consoles/Sony/PSX/Octoshock.cs | 284 +++--- ...ControlConfig.cs => OctoshockFIOConfig.cs} | 53 +- output/dll/octoshock.dll | Bin 927232 -> 927232 bytes psx/octoshock/bizhawk/octoshock.sln | 2 +- psx/octoshock/psx/frontio.cpp | 4 - psx/octoshock/psx/frontio.h | 2 + psx/octoshock/psx/input/memcard.cpp | 2 + psx/octoshock/psx/psx.cpp | 13 +- 20 files changed, 813 insertions(+), 1556 deletions(-) delete mode 100644 BizHawk.Client.EmuHawk/config/PSX/PSXControllerConfig.Designer.cs delete mode 100644 BizHawk.Client.EmuHawk/config/PSX/PSXControllerConfig.cs delete mode 100644 BizHawk.Client.EmuHawk/config/PSX/PSXControllerConfig.resx rename BizHawk.Emulation.Cores/Consoles/Sony/PSX/{OctoshockControlConfig.cs => OctoshockFIOConfig.cs} (54%) 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 - 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 - - - \ 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 935bf7a9ba5149886a46604f953f3d47384760cf..1dadf2281d34d8a760d02397a315bcf1574ea4ea 100644 GIT binary patch delta 48094 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 z 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

Ll;|2 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

8YusU(EufnVy6rfPv|pbW?& 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�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 #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);