#### Prerequisites ####

You will need a copy of bsnes, and you must compile with GCC.

#### Applying to bsnes ####

Copy wasapi.cpp, wasapi.hpp, and the new xaudio2.hpp into
./bsnes/ruby/audio/.

====================================
[bsnes/phoenix/windows/platform.cpp]:
====================================

---

Find:

CoInitialize(0);

Replace that with:

CoInitializeEx(NULL, COINIT_MULTITHREADED | COINIT_SPEED_OVER_MEMORY);

---

=====================
[bsnes/ruby/ruby.cpp]:
=====================

---

Find:

  #ifdef AUDIO_XAUDIO2
  else if(!strcmp(driver, "XAudio2")) p = new AudioXAudio2();
  #endif

BEFORE that (such that it's sorted alphabetically), add:

  #ifdef AUDIO_WASAPI
  else if(!strcmp(driver, "WASAPI")) p = new AudioWASAPI();
  #endif

---

Find:

  #elif defined(AUDIO_XAUDIO2)
  return "XAudio2";

BELOW that, add:

  #elif defined(AUDIO_WASAPI)
  return "WASAPI";

---

Find:

  #if defined(AUDIO_XAUDIO2)
  "XAudio2;"
  #endif

BELOW that, add:

  #if defined(AUDIO_WASAPI)
  "WASAPI;"
  #endif

---

====================
[bsnes/ruby/Makefile]:
====================

---

Find:

rubylink += $(if $(findstring audio.xaudio2,$(ruby)),-lole32)

BEFORE that, add:

rubylink += $(if $(findstring audio.wasapi,$(ruby)),-lole32)

---

==========================
[bsnes/ruby/ruby_impl.cpp]:
==========================

---

Find:

#ifdef AUDIO_XAUDIO2
  #include <ruby/audio/xaudio2.cpp>
#endif

BEFORE that, add:

#ifdef AUDIO_WASAPI
  #include <ruby/audio/wasapi.cpp>
#endif

---

===================
[bsnes/ui/Makefile]:
===================

---

Find:

  ruby += audio.directsound audio.xaudio2

Append audio.wasapi to the end.

---

Find:

link += $(if $(findstring audio.xaudio2,$(ruby)),-lole32)

BEFORE that, add:

link += $(if $(findstring audio.wasapi,$(ruby)),-lole32)

---

#### Compile ####

mingw32-make and hopefully it compiles and runs fine.