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 935bf7a9ba..1dadf2281d 100644
Binary files a/output/dll/octoshock.dll and b/output/dll/octoshock.dll differ
diff --git a/psx/octoshock/bizhawk/octoshock.sln b/psx/octoshock/bizhawk/octoshock.sln
index e19efdc80b..78e1a0d864 100644
--- a/psx/octoshock/bizhawk/octoshock.sln
+++ b/psx/octoshock/bizhawk/octoshock.sln
@@ -1,6 +1,6 @@
Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
+# Visual Studio 2015
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "octoshock", "octoshock.vcxproj", "{5F35CAFC-6208-4FBE-AD17-0E69BA3F70EC}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "miniclient", "..\test\miniclient\miniclient.vcxproj", "{5A0DAC84-1170-4B1A-B9A9-F566A1D97790}"
diff --git a/psx/octoshock/psx/frontio.cpp b/psx/octoshock/psx/frontio.cpp
index 7d119db4a0..458a8a0be9 100644
--- a/psx/octoshock/psx/frontio.cpp
+++ b/psx/octoshock/psx/frontio.cpp
@@ -136,10 +136,6 @@ FrontIO::FrontIO()
PortData[i] = NULL;
MCPorts[i] = new InputDevice();
}
-
- //always add one memory device for now
- delete MCPorts[0];
- MCPorts[0] = Device_Memcard_Create();
}
diff --git a/psx/octoshock/psx/frontio.h b/psx/octoshock/psx/frontio.h
index 900997eb98..08770d4168 100644
--- a/psx/octoshock/psx/frontio.h
+++ b/psx/octoshock/psx/frontio.h
@@ -26,6 +26,8 @@ class InputDevice
virtual void Update(const pscpu_timestamp_t timestamp); // Partially-implemented, don't rely on for timing any more fine-grained than a video frame for now.
virtual void ResetTS(void);
+ virtual const char* GetName() const { return "InputDevice"; }
+
//
//
diff --git a/psx/octoshock/psx/input/memcard.cpp b/psx/octoshock/psx/input/memcard.cpp
index 1e7a405512..814e68d117 100644
--- a/psx/octoshock/psx/input/memcard.cpp
+++ b/psx/octoshock/psx/input/memcard.cpp
@@ -40,6 +40,8 @@ class InputDevice_Memcard : public InputDevice
InputDevice_Memcard();
virtual ~InputDevice_Memcard();
+ virtual const char* GetName() const { return "InputDevice_Memcard"; }
+
virtual void Power(void);
virtual void SyncState(bool isReader, EW::NewState *ns);
//
diff --git a/psx/octoshock/psx/psx.cpp b/psx/octoshock/psx/psx.cpp
index eca13166b7..e57a3afe10 100644
--- a/psx/octoshock/psx/psx.cpp
+++ b/psx/octoshock/psx/psx.cpp
@@ -32,6 +32,8 @@
#include "input/dualshock.h"
#include "input/dualanalog.h"
#include "input/gamepad.h"
+#include "input/memcard.h"
+
#include
#include
@@ -1197,8 +1199,15 @@ struct {
//TODO - once we get flexible here, do some extra condition checks.. whether memcards exist, etc. much like devices.
switch(transaction->transaction)
{
- case eShockMemcardTransaction_Connect: return SHOCK_ERROR; //not supported yet
- case eShockMemcardTransaction_Disconnect: return SHOCK_ERROR; //not supported yet
+ case eShockMemcardTransaction_Connect:
+ //cant connect when a memcard is already connected
+ if(!strcmp(FIO->MCPorts[portnum]->GetName(),"InputDevice_Memcard"))
+ return SHOCK_NOCANDO;
+ delete FIO->MCPorts[portnum]; //delete dummy
+ FIO->MCPorts[portnum] = Device_Memcard_Create();
+
+ case eShockMemcardTransaction_Disconnect:
+ return SHOCK_ERROR; //not supported yet
case eShockMemcardTransaction_Write:
FIO->MCPorts[portnum]->WriteNV((uint8*)transaction->buffer128k,0,128*1024);