diff --git a/BizHawk.Client.Common/BizHawk.Client.Common.csproj b/BizHawk.Client.Common/BizHawk.Client.Common.csproj index 53ed41ea9c..cb66b388fd 100644 --- a/BizHawk.Client.Common/BizHawk.Client.Common.csproj +++ b/BizHawk.Client.Common/BizHawk.Client.Common.csproj @@ -18,7 +18,7 @@ full false ..\output\dll\ - TRACE;DEBUG;DOTNET20;UNMANAGED;COMPRESS + TRACE;DEBUG;DOTNET20;UNMANAGED;COMPRESS;WINDOWS prompt 4 true @@ -28,7 +28,7 @@ pdbonly true ..\output\dll\ - TRACE;DOTNET20;UNMANAGED;COMPRESS + TRACE;DOTNET20;UNMANAGED;COMPRESS;WINDOWS prompt 4 true diff --git a/BizHawk.Client.Common/config/Config.cs b/BizHawk.Client.Common/config/Config.cs index 19657bb0b9..23c3c87f5e 100644 --- a/BizHawk.Client.Common/config/Config.cs +++ b/BizHawk.Client.Common/config/Config.cs @@ -226,7 +226,11 @@ namespace BizHawk.Client.Common public int DispCustomUserARHeight = 1; // Sound options +#if WINDOWS public ESoundOutputMethod SoundOutputMethod = ESoundOutputMethod.DirectSound; +#else + public ESoundOutputMethod SoundOutputMethod = ESoundOutputMethod.OpenAL; +#endif public bool SoundEnabled = true; public bool MuteFrameAdvance = true; public int SoundVolume = 100; // Range 0-100 diff --git a/BizHawk.Client.EmuHawk/MainForm.cs b/BizHawk.Client.EmuHawk/MainForm.cs index 8bd8254cc3..54e7cb046c 100644 --- a/BizHawk.Client.EmuHawk/MainForm.cs +++ b/BizHawk.Client.EmuHawk/MainForm.cs @@ -276,9 +276,6 @@ namespace BizHawk.Client.EmuHawk Global.ActiveController = Global.NullControls; Global.AutoFireController = Global.AutofireNullControls; Global.AutofireStickyXORAdapter.SetOnOffPatternFromConfig(); -#if !WINDOWS - Global.Config.SoundOutputMethod = Config.ESoundOutputMethod.OpenAL; -#endif try { GlobalWin.Sound = new Sound(Handle); } catch { diff --git a/BizHawk.Client.EmuHawk/Sound/Output/OpenALSoundOutput.cs b/BizHawk.Client.EmuHawk/Sound/Output/OpenALSoundOutput.cs index a9560f7de8..588c59da1d 100644 --- a/BizHawk.Client.EmuHawk/Sound/Output/OpenALSoundOutput.cs +++ b/BizHawk.Client.EmuHawk/Sound/Output/OpenALSoundOutput.cs @@ -35,11 +35,6 @@ namespace BizHawk.Client.EmuHawk _disposed = true; } - public static IEnumerable GetDeviceNames() - { - return Enumerable.Empty(); - } - private int BufferSizeSamples { get; set; } public int MaxSamplesDeficit { get; private set; } diff --git a/BizHawk.Client.EmuHawk/config/SoundConfig.Designer.cs b/BizHawk.Client.EmuHawk/config/SoundConfig.Designer.cs index b803868e51..37a8e2d1a1 100644 --- a/BizHawk.Client.EmuHawk/config/SoundConfig.Designer.cs +++ b/BizHawk.Client.EmuHawk/config/SoundConfig.Designer.cs @@ -43,6 +43,7 @@ this.grpOutputMethod = new System.Windows.Forms.GroupBox(); this.rbOutputMethodXAudio2 = new System.Windows.Forms.RadioButton(); this.rbOutputMethodDirectSound = new System.Windows.Forms.RadioButton(); + this.rbOutputMethodOpenAL = new System.Windows.Forms.RadioButton(); this.SoundVolGroup.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.SoundVolBar)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.SoundVolNumeric)).BeginInit(); @@ -190,11 +191,12 @@ // // grpOutputMethod // + this.grpOutputMethod.Controls.Add(this.rbOutputMethodOpenAL); this.grpOutputMethod.Controls.Add(this.rbOutputMethodXAudio2); this.grpOutputMethod.Controls.Add(this.rbOutputMethodDirectSound); this.grpOutputMethod.Location = new System.Drawing.Point(292, 12); this.grpOutputMethod.Name = "grpOutputMethod"; - this.grpOutputMethod.Size = new System.Drawing.Size(100, 68); + this.grpOutputMethod.Size = new System.Drawing.Size(100, 90); this.grpOutputMethod.TabIndex = 5; this.grpOutputMethod.TabStop = false; this.grpOutputMethod.Text = "Output Method"; @@ -223,6 +225,18 @@ this.rbOutputMethodDirectSound.UseVisualStyleBackColor = true; this.rbOutputMethodDirectSound.CheckedChanged += new System.EventHandler(this.OutputMethodRadioButtons_CheckedChanged); // + // rbOutputMethodOpenAL + // + this.rbOutputMethodOpenAL.AutoSize = true; + this.rbOutputMethodOpenAL.Location = new System.Drawing.Point(6, 65); + this.rbOutputMethodOpenAL.Name = "rbOutputMethodOpenAL"; + this.rbOutputMethodOpenAL.Size = new System.Drawing.Size(64, 17); + this.rbOutputMethodOpenAL.TabIndex = 2; + this.rbOutputMethodOpenAL.TabStop = true; + this.rbOutputMethodOpenAL.Text = "OpenAL"; + this.rbOutputMethodOpenAL.UseVisualStyleBackColor = true; + this.rbOutputMethodOpenAL.CheckedChanged += new System.EventHandler(this.OutputMethodRadioButtons_CheckedChanged); + // // SoundConfig // this.AcceptButton = this.OK; @@ -276,5 +290,6 @@ private System.Windows.Forms.GroupBox grpOutputMethod; private System.Windows.Forms.RadioButton rbOutputMethodXAudio2; private System.Windows.Forms.RadioButton rbOutputMethodDirectSound; + private System.Windows.Forms.RadioButton rbOutputMethodOpenAL; } } \ No newline at end of file diff --git a/BizHawk.Client.EmuHawk/config/SoundConfig.cs b/BizHawk.Client.EmuHawk/config/SoundConfig.cs index 68589a495e..803d9c5ca1 100644 --- a/BizHawk.Client.EmuHawk/config/SoundConfig.cs +++ b/BizHawk.Client.EmuHawk/config/SoundConfig.cs @@ -22,8 +22,13 @@ namespace BizHawk.Client.EmuHawk SoundOnCheckBox.Checked = Global.Config.SoundEnabled; MuteFrameAdvance.Checked = Global.Config.MuteFrameAdvance; +#if !WINDOWS + rbOutputMethodDirectSound.Enabled = false; + rbOutputMethodXAudio2.Enabled = false; +#endif rbOutputMethodDirectSound.Checked = Global.Config.SoundOutputMethod == Config.ESoundOutputMethod.DirectSound; rbOutputMethodXAudio2.Checked = Global.Config.SoundOutputMethod == Config.ESoundOutputMethod.XAudio2; + rbOutputMethodOpenAL.Checked = Global.Config.SoundOutputMethod == Config.ESoundOutputMethod.OpenAL; BufferSizeNumeric.Value = Global.Config.SoundBufferSizeMs; SoundVolBar.Value = Global.Config.SoundVolume; SoundVolNumeric.Value = Global.Config.SoundVolume; @@ -44,6 +49,7 @@ namespace BizHawk.Client.EmuHawk Global.Config.MuteFrameAdvance = MuteFrameAdvance.Checked; if (rbOutputMethodDirectSound.Checked) Global.Config.SoundOutputMethod = Config.ESoundOutputMethod.DirectSound; if (rbOutputMethodXAudio2.Checked) Global.Config.SoundOutputMethod = Config.ESoundOutputMethod.XAudio2; + if (rbOutputMethodOpenAL.Checked) Global.Config.SoundOutputMethod = Config.ESoundOutputMethod.OpenAL; Global.Config.SoundBufferSizeMs = (int)BufferSizeNumeric.Value; Global.Config.SoundVolume = SoundVolBar.Value; Global.Config.SoundDevice = (string)listBoxSoundDevices.SelectedItem ?? ""; diff --git a/output/dll/openal32.dll b/output/dll/openal32.dll new file mode 100644 index 0000000000..71ced6a21f Binary files /dev/null and b/output/dll/openal32.dll differ