diff --git a/src/BizHawk.Client.Common/config/Config.cs b/src/BizHawk.Client.Common/config/Config.cs index d59ce5944e..3d15486c3f 100644 --- a/src/BizHawk.Client.Common/config/Config.cs +++ b/src/BizHawk.Client.Common/config/Config.cs @@ -447,5 +447,7 @@ namespace BizHawk.Client.Common public int AVWriterResizeHeight { get; set; } = 0; public int AVWriterResizeWidth { get; set; } = 0; + + public bool GCAdapterSupportEnabled { get; set; } = false; } } diff --git a/src/BizHawk.Client.EmuHawk/MainForm.cs b/src/BizHawk.Client.EmuHawk/MainForm.cs index 00915a1c41..4e3d71c755 100644 --- a/src/BizHawk.Client.EmuHawk/MainForm.cs +++ b/src/BizHawk.Client.EmuHawk/MainForm.cs @@ -549,6 +549,12 @@ namespace BizHawk.Client.EmuHawk } }; + if (!Config.GCAdapterSupportEnabled) + { + // annoyingly this isn't an SDL hint in SDL2, only in SDL3, have to use an environment variables to signal this + Environment.SetEnvironmentVariable("SDL_HIDAPI_DISABLE_LIBUSB", "1"); + } + Input.Instance = new Input( Handle, () => Config, diff --git a/src/BizHawk.Client.EmuHawk/config/EmuHawkOptions.Designer.cs b/src/BizHawk.Client.EmuHawk/config/EmuHawkOptions.Designer.cs index 9c02b57039..9003f668b5 100755 --- a/src/BizHawk.Client.EmuHawk/config/EmuHawkOptions.Designer.cs +++ b/src/BizHawk.Client.EmuHawk/config/EmuHawkOptions.Designer.cs @@ -34,6 +34,7 @@ this.tabControl1 = new System.Windows.Forms.TabControl(); this.tabPage1 = new System.Windows.Forms.TabPage(); this.cbMergeLAndRModifierKeys = new System.Windows.Forms.CheckBox(); + this.cbEnableGCAdapterSupport = new System.Windows.Forms.CheckBox(); this.HandleAlternateKeyboardLayoutsCheckBox = new System.Windows.Forms.CheckBox(); this.NeverAskSaveCheckbox = new System.Windows.Forms.CheckBox(); this.label2 = new BizHawk.WinForms.Controls.LocLabelEx(); @@ -82,7 +83,7 @@ // 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(280, 371); + this.OkBtn.Location = new System.Drawing.Point(280, 394); this.OkBtn.Name = "OkBtn"; this.OkBtn.Size = new System.Drawing.Size(60, 23); this.OkBtn.TabIndex = 0; @@ -94,7 +95,7 @@ // 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(346, 371); + this.CancelBtn.Location = new System.Drawing.Point(346, 394); this.CancelBtn.Name = "CancelBtn"; this.CancelBtn.Size = new System.Drawing.Size(60, 23); this.CancelBtn.TabIndex = 1; @@ -112,11 +113,12 @@ this.tabControl1.Location = new System.Drawing.Point(9, 12); this.tabControl1.Name = "tabControl1"; this.tabControl1.SelectedIndex = 0; - this.tabControl1.Size = new System.Drawing.Size(400, 354); + this.tabControl1.Size = new System.Drawing.Size(400, 377); this.tabControl1.TabIndex = 2; // // tabPage1 // + this.tabPage1.Controls.Add(this.cbEnableGCAdapterSupport); this.tabPage1.Controls.Add(this.cbMergeLAndRModifierKeys); this.tabPage1.Controls.Add(this.HandleAlternateKeyboardLayoutsCheckBox); this.tabPage1.Controls.Add(this.NeverAskSaveCheckbox); @@ -136,6 +138,16 @@ this.tabPage1.Text = "General"; this.tabPage1.UseVisualStyleBackColor = true; // + // cbEnableGCAdapterSupport + // + this.cbEnableGCAdapterSupport.AutoSize = true; + this.cbEnableGCAdapterSupport.Location = new System.Drawing.Point(7, 191); + this.cbEnableGCAdapterSupport.Name = "cbEnableGCAdapterSupport"; + this.cbEnableGCAdapterSupport.Size = new System.Drawing.Size(320, 17); + this.cbEnableGCAdapterSupport.TabIndex = 29; + this.cbEnableGCAdapterSupport.Text = "Enable Wii U/Switch GameCube Adapter Support"; + this.cbEnableGCAdapterSupport.UseVisualStyleBackColor = true; + // // cbMergeLAndRModifierKeys // this.cbMergeLAndRModifierKeys.AutoSize = true; @@ -239,7 +251,7 @@ this.groupBox1.Controls.Add(this.StartFullScreenCheckbox); this.groupBox1.Controls.Add(this.label3); this.groupBox1.Controls.Add(this.SingleInstanceModeCheckbox); - this.groupBox1.Location = new System.Drawing.Point(6, 191); + this.groupBox1.Location = new System.Drawing.Point(6, 214); this.groupBox1.Name = "groupBox1"; this.groupBox1.Size = new System.Drawing.Size(369, 133); this.groupBox1.TabIndex = 15; @@ -497,7 +509,7 @@ 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(418, 401); + this.ClientSize = new System.Drawing.Size(418, 424); this.Controls.Add(this.tabControl1); this.Controls.Add(this.CancelBtn); this.Controls.Add(this.OkBtn); @@ -564,5 +576,6 @@ private System.Windows.Forms.CheckBox NoMixedKeyPriorityCheckBox; private WinForms.Controls.LocLabelEx locLabelEx1; private System.Windows.Forms.CheckBox cbMergeLAndRModifierKeys; + private System.Windows.Forms.CheckBox cbEnableGCAdapterSupport; } } diff --git a/src/BizHawk.Client.EmuHawk/config/EmuHawkOptions.cs b/src/BizHawk.Client.EmuHawk/config/EmuHawkOptions.cs index e3185f0eff..07e72e372a 100755 --- a/src/BizHawk.Client.EmuHawk/config/EmuHawkOptions.cs +++ b/src/BizHawk.Client.EmuHawk/config/EmuHawkOptions.cs @@ -15,6 +15,9 @@ namespace BizHawk.Client.EmuHawk _autoFlushSaveRamTimerBumpCallback = autoFlushSaveRamTimerBumpCallback; _config = config; InitializeComponent(); + cbEnableGCAdapterSupport.Text = OSTailoredCode.IsUnixHost + ? "Enable Wii U/Switch GameCube Adapter Support (via libusb)" + : "Enable Wii U/Switch GameCube Adapter Support (via Zadig/WinUSB)"; } public int AutosaveSaveRAMSeconds @@ -79,6 +82,7 @@ namespace BizHawk.Client.EmuHawk cbMoviesOnDisk.Checked = _config.Movies.MoviesOnDisk; cbSkipWaterboxIntegrityChecks.Checked = _config.SkipWaterboxIntegrityChecks; NoMixedKeyPriorityCheckBox.Checked = _config.NoMixedInputHokeyOverride; + cbEnableGCAdapterSupport.Checked = _config.GCAdapterSupportEnabled; } private void OkBtn_Click(object sender, EventArgs e) @@ -118,6 +122,7 @@ namespace BizHawk.Client.EmuHawk _config.Movies.MoviesOnDisk = cbMoviesOnDisk.Checked; _config.SkipWaterboxIntegrityChecks = cbSkipWaterboxIntegrityChecks.Checked; _config.NoMixedInputHokeyOverride = NoMixedKeyPriorityCheckBox.Checked; + _config.GCAdapterSupportEnabled = cbEnableGCAdapterSupport.Checked; Close(); DialogResult = DialogResult.OK;