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