<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>include/ZE_ZAudioBase.h</filename>
    </added>
    <added>
      <filename>include/ZE_ZSound.h</filename>
    </added>
    <added>
      <filename>src/ZE_ZAudioBase.cpp</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -17,8 +17,12 @@
 #define ZE_SDL (2)
 #define GFX_BACKEND (ZE_OGL)
 
+#define ZE_NONE (0)
+#define ZE_MIXER (1)
+#define ZE_AUDIERE (2)
+#define SND_BACKEND (ZE_MIXER)
+
 #define USE_SDL_TTF
 #define USE_SDL_IMAGE
-#define USE_AUDIERE
 
 #endif //__ze_defines_h__</diff>
      <filename>include/ZE_Defines.h</filename>
    </modified>
    <modified>
      <diff>@@ -23,7 +23,10 @@
 #ifdef USE_SDL_TTF
 #include &quot;SDL_ttf.h&quot;
 #endif
-#ifdef USE_AUDIERE
+
+#if SND_BACKEND == ZE_MIXER
+#include &quot;SDL_mixer.h&quot;
+#elif SND_BACKEND == ZE_AUDIERE
 #include &quot;audiere.h&quot;
 #endif
 </diff>
      <filename>include/ZE_Includes.h</filename>
    </modified>
    <modified>
      <diff>@@ -11,6 +11,7 @@
 #ifndef __ze_utility_h__
 #define __ze_utility_h__
 
+#include &quot;ZE_Defines.h&quot;
 #include &quot;ZE_Includes.h&quot;
 
 namespace ZE
@@ -18,6 +19,7 @@ namespace ZE
 
 std::string FormatStr(std::string fmtStr, ...);
 
+int LoadFromZip(std::string zipname, std::string filename, void *&amp;buffer);
 SDL_RWops* RWFromZip(std::string zipname, std::string filename);
 
 #if (GFX_BACKEND == ZE_OGL)
@@ -27,6 +29,11 @@ GLuint SurfaceToTexture(SDL_Surface *surface, GLfloat *texcoord);
 
 void FreeImage(SDL_Surface *&amp;image);
 
+#if SND_BACKEND == ZE_MIXER
+void FreeSound(Mix_Chunk *&amp;chunk);
+void FreeMusic(Mix_Music *&amp;music);
+#endif
+
 #ifdef USE_SDL_TTF
 void FreeFont(TTF_Font *&amp;font);
 #endif</diff>
      <filename>include/ZE_Utility.h</filename>
    </modified>
    <modified>
      <diff>@@ -70,9 +70,14 @@ class ZEngine
         std::FILE *mErrlog;
         ZRandGen mRandGen;
         TiXmlDocument rZRF;
-#ifdef USE_AUDIERE
+#if SND_BACKEND == ZE_MIXER
+        int mMixerFrequency;
+        Uint16 mMixerFormat;
+        int mMixerChannels;
+        int mMixerChunksize;
+#elif SND_BACKEND == ZE_AUDIERE
         audiere::AudioDevicePtr mAudiereDevice;
-#endif //USE_AUDIERE
+#endif
 
         ZEngine();
 
@@ -83,7 +88,11 @@ class ZEngine
         static void ReleaseInstance();
 
         void InitErrorLog(ZErrorLogStyle logStyle=ZLOG_HTML, std::string logFile=&quot;errlog.html&quot;, ZErrorSeverity severityFilter=ZERR_VERBOSE);
-        bool InitSound();
+#if SND_BACKEND == ZE_MIXER
+        void InitAudio(int frequency=MIX_DEFAULT_FREQUENCY, bool stereo=true, Uint16 format=MIX_DEFAULT_FORMAT, int chunksize=4096);
+#elif SND_BACKEND == ZE_AUDIERE
+        bool InitAudio();
+#endif
         bool CreateDisplay(int width, int height, int bpp, bool fullscreen, std::string title=&quot;ZEngine Application&quot;, std::string icon=&quot;&quot;);
         void CloseDisplay();
         void ToggleFullscreen();
@@ -144,9 +153,9 @@ class ZEngine
         int GetIntResource(std::string type, std::string id, std::string element);       
         double GetDoubleResource(std::string type, std::string id, std::string element);
 
-#ifdef USE_AUDIERE
+#if SND_BACKEND == ZE_AUDIERE
         audiere::AudioDevicePtr GetSoundDevice();
-#endif //USE_AUDIERE
+#endif
         SDL_Surface* GetDisplayPointer();
         bool DisplayCreated();
         int DisplayWidth();</diff>
      <filename>include/ZE_ZEngine.h</filename>
    </modified>
    <modified>
      <diff>@@ -15,7 +15,7 @@
 #ifdef USE_SDL_TTF
 #include &quot;ZE_ZFont.h&quot;
 #endif
-#ifdef USE_AUDIERE
+#if SND_BACKEND != ZE_NONE
 #include &quot;ZE_ZSound.h&quot;
 #include &quot;ZE_ZMusic.h&quot;
 #endif</diff>
      <filename>include/ZEngine.h</filename>
    </modified>
    <modified>
      <diff>@@ -26,23 +26,24 @@ std::string FormatStr(std::string fmtStr, ...)
     return buf;
 }
 
-SDL_RWops* RWFromZip(std::string zipname, std::string filename)
+int LoadFromZip(std::string zipname, std::string filename, void *&amp;buffer)
 {
     unzFile zip = unzOpen(zipname.c_str());
     unz_file_info info;
-    void *buffer;
+    
+    buffer = NULL;  //start off buffer as NULL
 
     if(!zip)    //failed to open zip
     {
         ZEngine::GetInstance()-&gt;ReportError(ZERR_WARNING,&quot;Could not open zipfile %s&quot;,zipname.c_str());
-        return NULL;
+        return 0;
     }
 
     //locate the file and open it (last param means case sensitive comparison)
     unzLocateFile(zip,filename.c_str(),0);
     if(unzOpenCurrentFile(zip) != UNZ_OK)   //failed to open file within zip
     {
-        return NULL;    //error should reported in calling function
+        return 0;    //error should reported in calling function
     }
 
     //find current file info (we are looking for uncompressed file size)
@@ -55,7 +56,7 @@ SDL_RWops* RWFromZip(std::string zipname, std::string filename)
         unzCloseCurrentFile(zip);
         unzClose(zip);
         ZEngine::GetInstance()-&gt;ReportError(ZERR_ERROR,&quot;RWFromZip failed to allocate enough memory for buffer while loading %s from %s.&quot;,filename.c_str(),zipname.c_str());
-        return NULL;
+        return 0;
     }
 
     //load into memory
@@ -65,7 +66,17 @@ SDL_RWops* RWFromZip(std::string zipname, std::string filename)
     unzCloseCurrentFile(zip);
     unzClose(zip);
 
-    return SDL_RWFromMem(buffer, info.uncompressed_size);   //return buffer in RW form
+    return info.uncompressed_size;  //return the buffer size
+}
+
+SDL_RWops* RWFromZip(std::string zipname, std::string filename)
+{
+    void *buffer;
+    int bufSize;
+
+    bufSize = LoadFromZip(zipname,filename,buffer);
+
+    return SDL_RWFromMem(buffer,bufSize);
 }
 
 #if (GFX_BACKEND == ZE_OGL)
@@ -157,6 +168,28 @@ void FreeImage(SDL_Surface *&amp;image)
     }
 }
 
+#if SND_BACKEND == ZE_MIXER
+
+void FreeSound(Mix_Chunk *&amp;chunk)
+{
+    if(chunk)
+    {
+        Mix_FreeChunk(chunk);
+        chunk = NULL;
+    }
+}
+
+void FreeMusic(Mix_Music *&amp;music)
+{
+    if(music)
+    {
+        Mix_FreeMusic(music);
+        music = NULL;
+    }
+}
+
+#endif //ZE_MIXER
+
 #ifdef USE_SDL_TTF
 
 void FreeFont(TTF_Font *&amp;font)</diff>
      <filename>src/ZE_Utility.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -26,6 +26,9 @@ ZEngine::ZEngine() :
     mMouseX(0), mMouseY(0), mMouseB(0),
     mEventFilter(NULL),
     mLogStyle(ZLOG_NONE), mMinSeverity(ZERR_NOTE), mErrlog(NULL)
+#if SND_BACKEND == ZE_MIXER
+    ,mMixerFrequency(0),mMixerFormat(0),mMixerChannels(0),mMixerChunksize(0)
+#endif
 {
     for(int k = 0; k &lt; SDLK_LAST; ++k)
         mKeyPress[k] = false;
@@ -49,9 +52,8 @@ TiXmlElement* ZEngine::FindElement(std::string type, std::string id)
                 elem = elem-&gt;NextSiblingElement();
         }
 
-        //if it gets here, element not found
-        ReportError(ZERR_WARNING,&quot;No '%s' resource found with id '%s'&quot;,type.c_str(),id.c_str());
-        elem = NULL;
+        if(!elem)
+            ReportError(ZERR_WARNING,&quot;No '%s' resource found with id '%s'&quot;,type.c_str(),id.c_str());
     }
     else
     {
@@ -116,7 +118,16 @@ void ZEngine::InitErrorLog(ZErrorLogStyle logStyle, std::string logFile, ZErrorS
     }
 }
 
-bool ZEngine::InitSound()
+#if SND_BACKEND == ZE_MIXER
+void ZEngine::InitAudio(int frequency, bool stereo, Uint16 format,  int chunksize)
+{
+    mMixerFrequency = frequency;
+    mMixerChannels = stereo ? 2 : 1;
+    mMixerFormat = format;
+    mMixerChunksize = chunksize;
+}
+#elif SND_BACKEND == ZE_AUDIERE
+bool ZEngine::InitAudio()
 {
     mAudiereDevice = audiere::OpenDevice();
     if(!mAudiereDevice)
@@ -125,9 +136,11 @@ bool ZEngine::InitSound()
     }
     return (mAudiereDevice != NULL);
 }
+#endif //SND_BACKEND
 
 bool ZEngine::CreateDisplay(int width, int height, int bpp, bool fullscreen, std::string title, std::string icon)
 {
+    Uint32 sdlFlags=SDL_INIT_VIDEO|SDL_INIT_TIMER;
     Uint32 vidFlags=0;
     SDL_Surface *iconImg;
     bool status=true;   //status of setup, only true if everything went flawlessly
@@ -138,15 +151,31 @@ bool ZEngine::CreateDisplay(int width, int height, int bpp, bool fullscreen, std
 
     mFullscreen = fullscreen;
 
+#if SND_BACKEND == ZE_MIXER
+    if(mMixerFrequency &amp;&amp; mMixerFormat &amp;&amp; mMixerChannels &amp;&amp; mMixerChunksize)
+        sdlFlags |= SDL_INIT_AUDIO;
+#endif
+
     if(!mInitialized)
     {
-        if(SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER) &lt; 0)
+        if(SDL_Init(sdlFlags) &lt; 0)
         {
             ReportError(ZERR_CRITICAL,&quot;Error initializing SDL: %s&quot;,SDL_GetError());
             return false;   //return now, nothing else should be called
         }
     }
 
+#if SND_BACKEND == ZE_MIXER
+    if(!mInitialized &amp;&amp; mMixerFrequency &amp;&amp; mMixerFormat &amp;&amp; mMixerChannels &amp;&amp; mMixerChunksize)
+    {
+        if(Mix_OpenAudio(mMixerFrequency,mMixerFormat,mMixerChannels,mMixerChunksize) &lt; 0)
+        {
+            ReportError(ZERR_ERROR,&quot;Error initializing SDL_mixer: %s&quot;,SDL_GetError());
+            status = false;
+        }
+    }
+#endif //USE_SDL_MIXER
+
     //set vidFlags and bpp//
     if(mFullscreen)
         vidFlags |= SDL_FULLSCREEN;
@@ -698,10 +727,12 @@ double ZEngine::GetDoubleResource(std::string type, std::string id, std::string
     return ret;
 }
 
+#if SND_BACKEND == ZE_AUDIERE
 audiere::AudioDevicePtr ZEngine::GetSoundDevice()
 {
     return mAudiereDevice;
 }
+#endif
 
 SDL_Surface *ZEngine::GetDisplayPointer()
 {</diff>
      <filename>src/ZE_ZEngine.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -10,16 +10,182 @@
 
 #include &quot;ZE_ZMusic.h&quot;
 
-#ifdef USE_AUDIERE
-
 namespace ZE
 {
 
-ZMusic::ZMusic()
+#if SND_BACKEND == ZE_MIXER
+
+const int ZMusic::LoopInfinite = -1;    //constant for infinite, as used by SDL_Mixer
+
+ZMusic::ZMusic() : 
+    rEngine(ZEngine::GetInstance()),
+    rMusic(NULL)
+{
+}
+
+ZMusic::ZMusic(std::string filename) : 
+    rEngine(ZEngine::GetInstance()),
+    rMusic(NULL)
+{
+    Open(filename);
+}
+
+ZMusic::~ZMusic()
+{
+    Release();
+}
+
+void ZMusic::Open(std::string filename)
+{
+    Release();
+
+    rMusic = Mix_LoadMUS(filename.c_str());
+
+    if(!rMusic)
+        rEngine-&gt;ReportError(ZERR_WARNING,&quot;Could not load %s&quot;,filename.c_str());
+}
+
+void ZMusic::OpenFromZRF(std::string resourceId)
+{
+    std::string filename = rEngine-&gt;GetStringResource(&quot;music&quot;,resourceId,&quot;filename&quot;);
+    if(filename.length())
+        Open(filename);
+    else
+        rEngine-&gt;ReportError(ZERR_WARNING,&quot;Failed to load music resource '%s'&quot;,resourceId.c_str());
+}
+
+void ZMusic::Release()
+{
+    Mix_HaltMusic();
+    FreeMusic(rMusic);
+}
+
+void ZMusic::Play(int loopNum, int fadeTime) const
+{
+    if(Mix_PlayingMusic())    //stop currently playing music
+        Mix_HaltMusic();
+
+    if(rMusic)
+    {
+        if(fadeTime)
+            Mix_FadeInMusic(rMusic, loopNum, fadeTime);
+        else
+            Mix_PlayMusic(rMusic, loopNum);
+    }
+    else
+        rEngine-&gt;ReportError(ZERR_VERBOSE,&quot;Called ZMusic::Play with no music loaded.&quot;);
+}
+
+void ZMusic::Pause() const
+{
+    if(rMusic)
+        Mix_PauseMusic();
+    else
+        rEngine-&gt;ReportError(ZERR_VERBOSE,&quot;Called ZMusic::Pause with no music loaded.&quot;);
+}
+
+void ZMusic::Unpause() const
+{
+    if(rMusic)
+        Mix_ResumeMusic();
+    else
+        rEngine-&gt;ReportError(ZERR_VERBOSE,&quot;Called ZMusic::Unpause with no music loaded.&quot;);
+}
+
+void ZMusic::Rewind() const
+{
+    if(rMusic)
+        Mix_RewindMusic();
+    else
+        rEngine-&gt;ReportError(ZERR_VERBOSE,&quot;Called ZMusic::Rewind with no music loaded.&quot;);
+}
+
+void ZMusic::Stop(int fadeTime) const
+{
+    if(rMusic)
+    {
+        if(fadeTime)
+            Mix_FadeOutMusic(fadeTime);
+        else
+            Mix_HaltMusic();
+    }
+    else
+        rEngine-&gt;ReportError(ZERR_VERBOSE,&quot;Called ZMusic::Stop with no music loaded.&quot;);
+}
+
+void ZMusic::SetVolume(int volume)
+{
+    if(rMusic)
+        Mix_VolumeMusic(volume);
+    else
+        rEngine-&gt;ReportError(ZERR_VERBOSE,&quot;Called ZMusic::SetVolume with no music loaded.&quot;);
+}
+
+void ZMusic::SetPosition(int position)
+{
+    if(rMusic)
+    {
+        if(!IsSeekable() || Mix_SetMusicPosition(static_cast&lt;double&gt;(position)) == -1)
+            rEngine-&gt;ReportError(ZERR_VERBOSE,&quot;Called ZMusic::SetPosition on non-seekable file.&quot;);
+    }
+    else
+        rEngine-&gt;ReportError(ZERR_VERBOSE,&quot;Called ZMusic::SetPosition with no music loaded.&quot;);
+}
+
+bool ZMusic::IsLoaded() const
+{
+    return rMusic != NULL;
+}
+
+bool ZMusic::IsPlaying() const
+{
+    if(rMusic)
+        return Mix_PlayingMusic() &gt; 0;
+    else
+    {
+        rEngine-&gt;ReportError(ZERR_VERBOSE,&quot;Called ZMusic::IsPlaying with no music loaded.&quot;);
+        return false;
+    }
+}
+
+bool ZMusic::IsPaused() const
 {
+    if(rMusic)
+        return Mix_PausedMusic() &gt; 0;
+    else
+    {
+        rEngine-&gt;ReportError(ZERR_VERBOSE,&quot;Called ZMusic::IsPaused with no music loaded.&quot;);
+        return false;
+    }
 }
 
-ZMusic::ZMusic(std::string filename) : ZSoundBase()
+bool ZMusic::IsSeekable() const
+{
+    Mix_MusicType type = Mix_GetMusicType(rMusic);
+    if(type == MUS_MOD || type == MUS_OGG || type == MUS_MP3)
+        return true;
+    else
+        return false;
+}
+
+int ZMusic::GetVolume() const
+{
+    if(rMusic)
+        return Mix_VolumeMusic(-1);
+    else
+    {
+        rEngine-&gt;ReportError(ZERR_VERBOSE,&quot;Called ZMusic::GetVolume with no music loaded.&quot;);
+        return false;
+    }
+}
+
+#elif SND_BACKEND == ZE_AUDIERE
+
+ZMusic::ZMusic() : ZAudioBase()
+{
+}
+
+ZMusic::ZMusic(std::string filename) : ZAudioBase()
 {
     Open(filename);
 }
@@ -29,6 +195,24 @@ void ZMusic::Open(std::string filename)
     rStream = audiere::OpenSound(rDevice, filename.c_str(), true);
 }
 
+void ZMusic::OpenFromZip(std::string zipname, std::string filename)
+{
+    void *buffer;
+    int bufSize;
+
+    bufSize = LoadFromZip(zipname, filename, buffer);
+    rStream = audiere::OpenSound(rDevice, audiere::hidden::AdrCreateMemoryFile(buffer,bufSize), true);
+}
+
+void ZMusic::OpenFromZRF(std::string resourceId)
+{
+    std::string filename = rEngine-&gt;GetStringResource(&quot;music&quot;,resourceId,&quot;filename&quot;);
+    if(filename.length())
+        Open(filename);
+    else
+        rEngine-&gt;ReportError(ZERR_WARNING,&quot;Failed to load music resource '%s'&quot;,resourceId.c_str());
 }
 
-#endif
+#endif //SND_BACKEND
+
+}</diff>
      <filename>src/ZE_ZMusic.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -8,19 +8,202 @@
      and the home of this Library is http://www.zengine.sourceforge.net
 *******************************************************************************/
 
-#include &quot;ZE_ZSound.h&quot;
-#include &quot;ZE_ZSoundBase.h&quot;
+//ZSound is almost exactly like ZMusic, when making changes check if that change should
+//be applied to ZMusic as well, roughly 95% of the time it should be.
 
-#ifdef USE_AUDIERE
+#include &quot;ZE_ZSound.h&quot;
 
 namespace ZE
 {
 
-ZSound::ZSound()
+#if SND_BACKEND == ZE_MIXER
+
+const int ZSound::LoopInfinite = -1;
+
+ZSound::ZSound() :
+    rEngine(ZEngine::GetInstance()),
+    rSound(NULL),
+    rChannelID(-1)    //request channel ID
 {
 }
 
-ZSound::ZSound(std::string filename) : ZSoundBase()
+ZSound::ZSound(std::string filename) :
+    rEngine(ZEngine::GetInstance()),
+    rSound(NULL),
+    rChannelID(-1)    //request channel ID
+{
+    Open(filename);
+}
+
+ZSound::~ZSound()
+{
+    Release();
+}
+
+void ZSound::Open(std::string filename)
+{
+    Release();
+    rSound = Mix_LoadWAV(filename.c_str());
+
+    if(!rSound)
+        rEngine-&gt;ReportError(ZERR_ERROR,&quot;Could not load %s&quot;,filename.c_str());
+}
+
+void ZSound::OpenFromZip(std::string zipname, std::string filename)
+{
+    SDL_RWops *rw = RWFromZip(zipname,filename);
+    if(rw)
+    {
+        rSound = Mix_LoadWAV_RW(rw,0);
+        delete []rw-&gt;hidden.mem.base;   //must free buffer
+        SDL_FreeRW(rw);
+    }
+
+    if(!rSound)
+        rEngine-&gt;ReportError(ZERR_WARNING,&quot;Could not load %s from %s&quot;,filename.c_str(),zipname.c_str());
+}
+
+void ZSound::OpenFromZRF(std::string resourceId)
+{
+    std::string filename = rEngine-&gt;GetStringResource(&quot;sound&quot;,resourceId,&quot;filename&quot;);
+    if(filename.length())
+        Open(filename);
+    else
+        rEngine-&gt;ReportError(ZERR_WARNING,&quot;Failed to load sound resource '%s'&quot;,resourceId.c_str());
+}
+
+void ZSound::Release()
+{
+    if(rChannelID &gt;= 0)
+        Mix_HaltChannel(rChannelID);
+    FreeSound(rSound);
+}
+
+void ZSound::Play(int loopNum, int fadeTime)
+{
+    if(rChannelID &gt;= 0 &amp;&amp; Mix_Playing(rChannelID))    //stop currently playing sound
+        Mix_HaltChannel(rChannelID);
+
+    if(rSound)
+    {
+        if(fadeTime)
+            rChannelID = Mix_FadeInChannel(rChannelID, rSound, loopNum, fadeTime);
+        else
+            rChannelID = Mix_PlayChannel(rChannelID, rSound, loopNum);
+    }
+    else if(!rSound)
+        rEngine-&gt;ReportError(ZERR_VERBOSE,&quot;Called ZSound::Play with no sound effect loaded.&quot;);
+}
+
+void ZSound::Pause() const
+{
+    if(rSound &amp;&amp; rChannelID &gt;= 0)
+        Mix_Pause(rChannelID);
+    else if(!rSound)
+        rEngine-&gt;ReportError(ZERR_VERBOSE,&quot;Called ZSound::Pause with no sound effect loaded.&quot;);
+}
+
+void ZSound::Unpause() const
+{
+    if(rSound &amp;&amp; rChannelID &gt;= 0)
+        Mix_Resume(rChannelID);
+    else if(!rSound)
+        rEngine-&gt;ReportError(ZERR_VERBOSE,&quot;Called ZSound::Unpause with no sound effect loaded.&quot;);
+
+}
+
+void ZSound::Stop(int fadeTime) const
+{
+    if(rSound &amp;&amp; rChannelID &gt;= 0)
+    {
+        if(fadeTime)
+            Mix_FadeOutChannel(rChannelID,fadeTime);
+        else
+            Mix_HaltChannel(rChannelID);
+    }
+    else if(!rSound)
+        rEngine-&gt;ReportError(ZERR_VERBOSE,&quot;Called ZSound::Stop with no sound effect loaded.&quot;);
+}
+
+void ZSound::SetVolume(int volume)
+{
+    if(rSound)
+        Mix_VolumeChunk(rSound,volume);
+    else
+        rEngine-&gt;ReportError(ZERR_VERBOSE,&quot;Called ZSound::SetVolume with no sound effect loaded.&quot;);
+}
+
+void ZSound::SetPan(float pan)
+{
+    if(rSound)
+    {
+        if(pan == 0)
+            Mix_SetPanning(rChannelID,255,255);
+        else if(pan &lt; 0)
+            Mix_SetPanning(rChannelID, static_cast&lt;Uint8&gt;(128+(128*-pan)), 128);
+        else
+            Mix_SetPanning(rChannelID, 128, static_cast&lt;Uint8&gt;(128+(128*pan)));
+    }
+    else
+        rEngine-&gt;ReportError(ZERR_VERBOSE,&quot;Called ZSound::SetPan with no sound effect loaded.&quot;);
+}
+
+void ZSound::SetPosition(int position)
+{
+    //no-op, non-seekable currently
+}
+
+bool ZSound::IsLoaded() const
+{
+    return rSound != NULL;
+}
+
+bool ZSound::IsPlaying() const
+{
+    if(rSound &amp;&amp; rChannelID &gt;= 0)
+        return Mix_Playing(rChannelID) &gt; 0;
+    else
+    {
+        if(rChannelID &gt;= 0)
+            rEngine-&gt;ReportError(ZERR_VERBOSE,&quot;Called ZSound::IsPlaying with no sound effect loaded.&quot;);
+        return false;
+    }
+}
+
+bool ZSound::IsPaused() const
+{
+    if(rSound &amp;&amp; rChannelID &gt;= 0)
+        return Mix_Paused(rChannelID) &gt; 0;
+    else
+    {
+        rEngine-&gt;ReportError(ZERR_VERBOSE,&quot;Called ZSound::IsPaused with no sound effect loaded.&quot;);
+        return false;
+    }
+}
+
+bool ZSound::IsSeekable() const
+{
+    return false;   //no Mix_Chunks are seekable atm.
+}
+
+int ZSound::GetVolume() const
+{
+    if(rSound)
+        return Mix_VolumeChunk(rSound,-1);
+    else
+    {
+        rEngine-&gt;ReportError(ZERR_VERBOSE,&quot;Called ZSound::GetVolume with no sound effect loaded.&quot;);
+        return -1;
+    }
+}
+
+#elif SND_BACKEND == ZE_AUDIERE
+
+ZSound::ZSound() : ZAudioBase()
+{
+}
+
+ZSound::ZSound(std::string filename) : ZAudioBase()
 {
     Open(filename);
 }
@@ -30,6 +213,24 @@ void ZSound::Open(std::string filename)
     rStream = audiere::OpenSound(rDevice, filename.c_str(), false);
 }
 
+void ZSound::OpenFromZip(std::string zipname, std::string filename)
+{
+    void *buffer;
+    int bufSize;
+
+    bufSize = LoadFromZip(zipname, filename, buffer);
+    rStream = audiere::OpenSound(rDevice, audiere::hidden::AdrCreateMemoryFile(buffer,bufSize), false);
 }
 
-#endif
+void ZSound::OpenFromZRF(std::string resourceId)
+{
+    std::string filename = rEngine-&gt;GetStringResource(&quot;music&quot;,resourceId,&quot;filename&quot;);
+    if(filename.length())
+        Open(filename);
+    else
+        rEngine-&gt;ReportError(ZERR_WARNING,&quot;Failed to load music resource '%s'&quot;,resourceId.c_str());
+}
+
+#endif //SND_BACKEND
+
+}</diff>
      <filename>src/ZE_ZSound.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,7 @@ This example file is in the public domain, it may be used with no restrictions.
      and the home of this Library is http://www.zengine.sourceforge.net
 *******************************************************************************/
 
-// $Id: ZAnimTest.cpp,v 1.2 2003/12/31 12:27:58 cozman Exp $
+// $Id: ZAnimTest.cpp,v 1.3 2004/01/13 23:56:28 cozman Exp $
 
 #include &lt;ZEngine.h&gt;
 #include &lt;string&gt; 
@@ -30,6 +30,7 @@ bool Initialize()
     fs = cfg.GetBool(&quot;ZAnimTest&quot;,&quot;fullscreen&quot;,false);
     title = cfg.GetString(&quot;ZAnimTest&quot;,&quot;title&quot;,&quot;ZAnimation Test&quot;);
 
+    engine-&gt;InitErrorLog();
     return engine-&gt;CreateDisplay(w,h,bpp,fs,title);
 }
 
@@ -72,7 +73,7 @@ void Test()
             for(i=0; i &lt; 8; ++i)
                 tank[i].Update();
             
-            engine-&gt;Clear();
+            engine-&gt;ClearDisplay();
 
             for(i=0; i &lt; 8; ++i)
                 tank[i].Draw(200*(i/2),200*(i%2));</diff>
      <filename>test/ZAnimTest.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,7 @@ This example file is in the public domain, it may be used with no restrictions.
      and the home of this Library is http://www.zengine.sourceforge.net
 *******************************************************************************/
 
-// $Id: ZFontTest.cpp,v 1.20 2003/12/31 12:27:58 cozman Exp $
+// $Id: ZFontTest.cpp,v 1.21 2004/01/13 23:56:28 cozman Exp $
 
 #include &lt;ZEngine.h&gt;
 #include &lt;string&gt; 
@@ -31,7 +31,7 @@ bool Initialize()
     title = cfg.GetString(&quot;ZFontTest&quot;,&quot;title&quot;,&quot;ZFont Test&quot;);
 
     engine-&gt;SetResourceFile(&quot;resources.zrf&quot;);
-
+    engine-&gt;InitErrorLog();
     return engine-&gt;CreateDisplay(w,h,bpp,fs,title);
 }
 
@@ -69,7 +69,7 @@ void Test()
                 engine-&gt;RequestQuit();
             betsy.DrawText(FormatStr(&quot;FPS: %.2f&quot;,engine-&gt;GetFramerate()),text[5]);
 
-            engine-&gt;Clear();    //clear screen
+            engine-&gt;ClearDisplay();    //clear screen
             //draw the images//
             for(int i=0; i &lt;= 5; i++)
                 text[i].Draw(10*i,50*i);</diff>
      <filename>test/ZFontTest.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,7 @@ This example file is in the public domain, it may be used with no restrictions.
      and the home of this Library is http://www.zengine.sourceforge.net
 *******************************************************************************/
 
-// $Id: ZImageTest.cpp,v 1.30 2003/12/31 12:27:58 cozman Exp $
+// $Id: ZImageTest.cpp,v 1.31 2004/01/13 23:56:28 cozman Exp $
 
 #include &lt;ZEngine.h&gt;
 #include &lt;string&gt; 
@@ -31,7 +31,7 @@ bool Initialize()
     title = cfg.GetString(&quot;ZImageTest&quot;,&quot;title&quot;,&quot;ZImage Test&quot;);
 
     engine-&gt;SetResourceFile(&quot;resources.zrf&quot;);
-
+    engine-&gt;InitErrorLog();
     return engine-&gt;CreateDisplay(w,h,bpp,fs,title);
 }
 
@@ -49,7 +49,7 @@ void Test()
     font.SetColor(0,255,0);
     font.SetBGColor(0,0,255);
 
-    engine-&gt;SetErrorLog(ZLOG_HTML,&quot;err.html&quot;);
+    engine-&gt;InitErrorLog();
     engine-&gt;ReportError(ZERR_CRITICAL,&quot;This is a critical test error!!! Something has gone seriously wrong!&quot;);
     engine-&gt;ReportError(ZERR_DEPRECIATED,&quot;This is a test of a depreciated feature.&quot;);
     engine-&gt;ReportError(ZERR_ERROR,&quot;This is a normal error, but only a test.&quot;);
@@ -88,7 +88,7 @@ void Test()
             }
 
             //movement//
-            movDelta = static_cast&lt;float&gt;(engine-&gt;GetFrameTime()*30);
+            movDelta = static_cast&lt;float&gt;(engine-&gt;GetFrameSpeed()*30);
             if(engine-&gt;KeyIsPressed(SDLK_LEFT))
                 clipRect.MoveRel(-movDelta,0);
             if(engine-&gt;KeyIsPressed(SDLK_RIGHT))
@@ -113,9 +113,9 @@ void Test()
             if(engine-&gt;KeyIsPressed(SDLK_ESCAPE))
                 engine-&gt;RequestQuit();
 
-            engine-&gt;Clear();    //clear screen
+            engine-&gt;ClearDisplay();    //clear screen
             //draw the images//
-            alpha += static_cast&lt;float&gt;(alphaDelta*engine-&gt;GetFrameTime());
+            alpha += static_cast&lt;float&gt;(alphaDelta*engine-&gt;GetFrameSpeed());
             if(alpha &gt;= 255 || alpha &lt;= 0)
                 alphaDelta *= -1.0f;
             image1.SetAlpha(static_cast&lt;Uint8&gt;(alpha));
@@ -123,7 +123,7 @@ void Test()
 
 #if (GFX_BACKEND == ZE_OGL)
             image2.DrawRotated(100,0,angle);
-            angle += static_cast&lt;float&gt;(150*engine-&gt;GetFrameTime());
+            angle += static_cast&lt;float&gt;(150*engine-&gt;GetFrameSpeed());
             if(angle &gt; 360)
                 angle = 0.0f;
 #elif (GFX_BACKEND == ZE_SDL)</diff>
      <filename>test/ZImageTest.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,7 @@ This example file is in the public domain, it may be used with no restrictions.
      and the home of this Library is http://www.zengine.sourceforge.net
 *******************************************************************************/
 
-// $Id: ZMouseTest.cpp,v 1.22 2003/12/31 12:27:58 cozman Exp $
+// $Id: ZMouseTest.cpp,v 1.23 2004/01/13 23:56:28 cozman Exp $
 
 #include &lt;ZEngine.h&gt;
 #include &lt;string&gt; 
@@ -31,7 +31,7 @@ bool Initialize()
     title = cfg.GetString(&quot;ZMouseTest&quot;,&quot;title&quot;,&quot;ZMouse Test&quot;);
 
     engine-&gt;SetResourceFile(&quot;resources.zrf&quot;);
-
+    engine-&gt;InitErrorLog();
     return engine-&gt;CreateDisplay(w,h,bpp,fs,title);
 }
 
@@ -78,7 +78,7 @@ void Test()
                 font.DrawText(FormatStr(&quot;Mouse at %d,%d&quot;,engine-&gt;MouseX(),engine-&gt;MouseY()),text[2]);
                 
 
-            engine-&gt;Clear();    //clear screen
+            engine-&gt;ClearDisplay();    //clear screen
             //draw the images//
             text[engine-&gt;MouseInRect(textRect)].Draw(100,100);
             text[2].Draw(0,0);</diff>
      <filename>test/ZMouseTest.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,7 @@ This example file is in the public domain, it may be used with no restrictions.
      and the home of this Library is http://www.zengine.sourceforge.net
 *******************************************************************************/
 
-// $Id: ZMusicTest.cpp,v 1.22 2003/12/31 12:27:58 cozman Exp $
+// $Id: ZMusicTest.cpp,v 1.23 2004/01/13 23:56:28 cozman Exp $
 
 #include &lt;ZEngine.h&gt;
 #include &lt;string&gt; 
@@ -30,6 +30,7 @@ bool Initialize()
     fs = cfg.GetBool(&quot;ZMusicTest&quot;,&quot;fullscreen&quot;,false);
     title = cfg.GetString(&quot;ZMusicTest&quot;,&quot;title&quot;,&quot;ZMusic Test&quot;);
 
+    engine-&gt;InitAudio();
     return engine-&gt;CreateDisplay(w,h,bpp,fs,title);
 }
 
@@ -37,15 +38,15 @@ void Test()
 {
     ZEngine *engine = ZEngine::GetInstance();
 
-    ZMusic song(&quot;data/music.ogg&quot;);
+    ZMusic song(&quot;data/sample.ogg&quot;);
     ZFont font(&quot;data/almontew.ttf&quot;,48);
     ZImage text[4];
 
     if(!song.IsLoaded())    //this executes if there is no music.ogg file
     {
         engine-&gt;CreateDisplay(800,70,32,false,&quot;ZMusic Test&quot;);
-        engine-&gt;Clear();
-        font.DrawText(&quot;Music.ogg does not exist, please read music.txt.&quot;,text[0]);
+        engine-&gt;ClearDisplay();
+        font.DrawText(&quot;sample.ogg does not exist, please read music.txt.&quot;,text[0]);
         text[0].Draw(0,0);
         engine-&gt;Update();
         do
@@ -76,21 +77,24 @@ void Test()
                     song.Pause();
                 if(engine-&gt;KeyIsPressed(SDLK_u))
                     song.Unpause();
+#if SND_BACKEND == ZE_MIXER
                 if(engine-&gt;KeyIsPressed(SDLK_f))
-                    song.Stop(5000);
+                    song.Stop(200);
+#endif
                 if(engine-&gt;KeyIsPressed(SDLK_h))
                     song.Stop();
                 if(engine-&gt;KeyIsPressed(SDLK_SPACE))
                     song.Play();
                 if(engine-&gt;KeyIsPressed(SDLK_UP))
                     song.SetVolume(song.GetVolume()+1);
-                if(engine-&gt;KeyIsPressed(SDLK_DOWN))
+                if(engine-&gt;KeyIsPressed(SDLK_DOWN) &amp;&amp; song.GetVolume() &gt; 0)
                     song.SetVolume(song.GetVolume()-1);
+                if(engine-&gt;KeyIsPressed(SDLK_v))
+                    song.SetVolume(100);
+                
+                font.DrawText(FormatStr(&quot;Volume: %d%%&quot;,song.GetVolume()),text[3]);
 
-
-                font.DrawText(FormatStr(&quot;Volume: %d&quot;,song.GetVolume()),text[3]);
-
-                engine-&gt;Clear();    //clear screen
+                engine-&gt;ClearDisplay();    //clear screen
                 for(int i=0; i &lt; 4; i++)
                     text[i].Draw(0,i*50);
                 engine-&gt;Update();    //update the screen</diff>
      <filename>test/ZMusicTest.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,7 @@ This example file is in the public domain, it may be used with no restrictions.
      and the home of this Library is http://www.zengine.sourceforge.net
 *******************************************************************************/
 
-// $Id: ZParticleTest.cpp,v 1.10 2003/12/31 12:27:58 cozman Exp $
+// $Id: ZParticleTest.cpp,v 1.11 2004/01/13 23:56:28 cozman Exp $
 
 #include &lt;ZEngine.h&gt;
 #include &lt;string&gt; 
@@ -31,7 +31,7 @@ bool Initialize()
     title = cfg.GetString(&quot;ZParticleTest&quot;,&quot;title&quot;,&quot;ZParticle Test&quot;);
 
     engine-&gt;SetResourceFile(&quot;resources.zrf&quot;);
-
+    engine-&gt;InitErrorLog();
     return engine-&gt;CreateDisplay(w,h,bpp,fs,title);
 }
 
@@ -127,9 +127,9 @@ void Test()
                 engine-&gt;RequestQuit();
 
             for(i=0; i &lt; 3; ++i)
-                    effect[i].Update();
+                effect[i].Update();
 
-            engine-&gt;Clear();
+            engine-&gt;ClearDisplay();
             bg.Draw(0,0);
 
             for(i=0; i &lt; 3; ++i)</diff>
      <filename>test/ZParticleTest.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,7 @@ This example file is in the public domain, it may be used with no restrictions.
      and the home of this Library is http://www.zengine.sourceforge.net
 *******************************************************************************/
 
-// $Id: ZRectTest.cpp,v 1.23 2003/12/31 12:27:58 cozman Exp $
+// $Id: ZRectTest.cpp,v 1.24 2004/01/13 23:56:28 cozman Exp $
 
 #include &lt;ZEngine.h&gt;
 #include &lt;string&gt; 
@@ -29,7 +29,7 @@ bool Initialize()
     bpp = cfg.GetInt(&quot;ZRectTest&quot;,&quot;bpp&quot;,32);
     fs = cfg.GetBool(&quot;ZRectTest&quot;,&quot;fullscreen&quot;,false);
     title = cfg.GetString(&quot;ZRectTest&quot;,&quot;title&quot;,&quot;ZRect Test&quot;);
-
+    engine-&gt;InitErrorLog();
     return engine-&gt;CreateDisplay(w,h,bpp,fs,title);
 }
 
@@ -49,7 +49,7 @@ void Test()
             if(engine-&gt;KeyIsPressed(SDLK_ESCAPE))
                 engine-&gt;RequestQuit();
             //movement//
-            movDelta = static_cast&lt;float&gt;(engine-&gt;GetFrameTime()*30);
+            movDelta = static_cast&lt;float&gt;(engine-&gt;GetFrameSpeed()*30);
             if(engine-&gt;KeyIsPressed(SDLK_LEFT))
                 moveRect.MoveRel(-movDelta,0);
             if(engine-&gt;KeyIsPressed(SDLK_RIGHT))
@@ -69,7 +69,7 @@ void Test()
                 moveRect.ResizeRel(-2,-2);
             }
 
-            engine-&gt;Clear();
+            engine-&gt;ClearDisplay();
             moveRect.Draw(255,0,0,128);
             stillRect.Draw(0,0,255,128);
             moveRect.Intersection(stillRect).Draw(0,255,0);</diff>
      <filename>test/ZRectTest.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,7 @@ This example file is in the public domain, it may be used with no restrictions.
      and the home of this Library is http://www.zengine.sourceforge.net
 *******************************************************************************/
 
-// $Id: ZSoundTest.cpp,v 1.22 2003/12/31 12:27:58 cozman Exp $
+// $Id: ZSoundTest.cpp,v 1.23 2004/01/13 23:56:28 cozman Exp $
 
 #include &lt;ZEngine.h&gt;
 #include &lt;string&gt; 
@@ -31,7 +31,8 @@ bool Initialize()
     title = cfg.GetString(&quot;ZSoundTest&quot;,&quot;title&quot;,&quot;ZSound Test&quot;);
 
     engine-&gt;SetResourceFile(&quot;resources.zrf&quot;);
-
+    engine-&gt;InitErrorLog();
+    engine-&gt;InitAudio();
     return engine-&gt;CreateDisplay(w,h,bpp,fs,title);
 }
 
@@ -49,7 +50,6 @@ void Test()
         sample[i].OpenFromZip(&quot;data/data.zip&quot;,FormatStr(&quot;%s.wav&quot;,name[i].c_str()));
     sample[4].OpenFromZRF(&quot;whip&quot;);
 
-
     font.DrawText(&quot;(P)ause\t(U)npause&quot;,text[0]);
     font.DrawText(&quot;(F)ade Out\t(H)alt\t&quot;,text[1]);
     font.DrawText(&quot;Space - Play\t Up/Down - Control Volume&quot;,text[2]);
@@ -77,21 +77,23 @@ void Test()
                 sample[sampleNum].Pause();
             if(engine-&gt;KeyIsPressed(SDLK_u))
                 sample[sampleNum].Unpause();
+#if SND_BACKEND == ZE_MIXER
             if(engine-&gt;KeyIsPressed(SDLK_f))
-                sample[sampleNum].Stop(5000);
+                sample[sampleNum].Stop(200);
+#endif
             if(engine-&gt;KeyIsPressed(SDLK_h))
                 sample[sampleNum].Stop();
             if(engine-&gt;KeyIsPressed(SDLK_SPACE))
                 sample[sampleNum].Play();
-            if(engine-&gt;KeyIsPressed(SDLK_UP))
+            if(engine-&gt;KeyIsPressed(SDLK_UP) &amp;&amp; sample[sampleNum].GetVolume() &lt; 100)
                 sample[sampleNum].SetVolume(sample[sampleNum].GetVolume()+1);
-            if(engine-&gt;KeyIsPressed(SDLK_DOWN))
+            if(engine-&gt;KeyIsPressed(SDLK_DOWN) &amp;&amp; sample[sampleNum].GetVolume() &gt; 0)
                 sample[sampleNum].SetVolume(sample[sampleNum].GetVolume()-1);
 
-            font.DrawText(FormatStr(&quot;Volume: %d&quot;,sample[sampleNum].GetVolume()),text[4]);
+            font.DrawText(FormatStr(&quot;Volume: %d%%&quot;,sample[sampleNum].GetVolume()),text[4]);
             font.DrawText(FormatStr(&quot;Sample: %s&quot;,name[sampleNum].c_str()),text[5]);
 
-            engine-&gt;Clear();    //clear screen
+            engine-&gt;ClearDisplay();    //clear screen
             for(int i=0; i &lt; 6; i++)
                 text[i].Draw(0,i*50);
             engine-&gt;Update();    //update the screen</diff>
      <filename>test/ZSoundTest.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,7 @@ This example file is in the public domain, it may be used with no restrictions.
      and the home of this Library is http://www.zengine.sourceforge.net
 *******************************************************************************/
 
-// $Id: ZTimerTest.cpp,v 1.21 2003/12/31 12:27:58 cozman Exp $
+// $Id: ZTimerTest.cpp,v 1.22 2004/01/13 23:56:28 cozman Exp $
 
 #include &lt;ZEngine.h&gt;
 #include &lt;string&gt; 
@@ -31,7 +31,7 @@ bool Initialize()
     title = cfg.GetString(&quot;ZTimerTest&quot;,&quot;title&quot;,&quot;ZTimer Test&quot;);
 
     engine-&gt;SetResourceFile(&quot;resources.zrf&quot;);
-
+    engine-&gt;InitErrorLog();
     return engine-&gt;CreateDisplay(w,h,bpp,fs,title);
 }
 
@@ -105,7 +105,7 @@ void Test()
             font.DrawText(FormatStr(&quot;%s Time: %d&quot;,TimerName[1].c_str(),TimerOne.GetTime()),text[2]);
             font.DrawText(FormatStr(&quot;%s Time: %d&quot;,TimerName[2].c_str(),TimerTwo.GetTime()),text[3]);
 
-            engine-&gt;Clear();    //clear screen
+            engine-&gt;ClearDisplay();    //clear screen
 
             for(int i=0; i &lt;= 4; i++)
                 text[i].Draw(0,i*30);</diff>
      <filename>test/ZTimerTest.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -38,9 +38,10 @@
 sdlmain.lib
 opengl32.lib
 sdl_ttf.lib
-sdl_mixer.lib
 sdl_image.lib
-ZEngineS.lib&quot;
+ZEngineS.lib
+SDL_mixer.lib
+audiere.lib&quot;
 				OutputFile=&quot;../test/bin/ZAnimTest.exe&quot;
 				LinkIncremental=&quot;1&quot;
 				AdditionalLibraryDirectories=&quot;../lib&quot;</diff>
      <filename>vc7/ZAnimTest.vcproj</filename>
    </modified>
    <modified>
      <diff>@@ -65,6 +65,9 @@
 				RelativePath=&quot;..\src\ZE_ZAnimation.cpp&quot;&gt;
 			&lt;/File&gt;
 			&lt;File
+				RelativePath=&quot;..\src\ZE_ZAudioBase.cpp&quot;&gt;
+			&lt;/File&gt;
+			&lt;File
 				RelativePath=&quot;..\src\ZE_ZConfigFile.cpp&quot;&gt;
 			&lt;/File&gt;
 			&lt;File
@@ -111,6 +114,9 @@
 				RelativePath=&quot;..\include\ZE_ZAnimation.h&quot;&gt;
 			&lt;/File&gt;
 			&lt;File
+				RelativePath=&quot;..\include\ZE_ZAudioBase.h&quot;&gt;
+			&lt;/File&gt;
+			&lt;File
 				RelativePath=&quot;..\include\ZE_ZBaseParticleSystem.h&quot;&gt;
 			&lt;/File&gt;
 			&lt;File
@@ -146,6 +152,9 @@
 			&lt;File
 				RelativePath=&quot;..\include\ZEngine.h&quot;&gt;
 			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\ZE-deps\include\audiere.h&quot;&gt;
+			&lt;/File&gt;
 		&lt;/Filter&gt;
 		&lt;Filter
 			Name=&quot;Zlib&quot;&gt;</diff>
      <filename>vc7/ZEngine.vcproj</filename>
    </modified>
    <modified>
      <diff>@@ -38,9 +38,10 @@
 sdlmain.lib
 opengl32.lib
 sdl_ttf.lib
-sdl_mixer.lib
 sdl_image.lib
-ZEngineS.lib&quot;
+ZEngineS.lib
+SDL_mixer.lib
+audiere.lib&quot;
 				OutputFile=&quot;../test/bin/ZFontTest.exe&quot;
 				LinkIncremental=&quot;1&quot;
 				AdditionalLibraryDirectories=&quot;../lib&quot;</diff>
      <filename>vc7/ZFontTest.vcproj</filename>
    </modified>
    <modified>
      <diff>@@ -38,9 +38,10 @@
 sdlmain.lib
 opengl32.lib
 sdl_ttf.lib
-sdl_mixer.lib
 sdl_image.lib
-ZEngineS.lib&quot;
+ZEngineS.lib
+SDL_mixer.lib
+audiere.lib&quot;
 				OutputFile=&quot;../test/bin/ZImageTest.exe&quot;
 				LinkIncremental=&quot;1&quot;
 				AdditionalLibraryDirectories=&quot;../lib&quot;</diff>
      <filename>vc7/ZImageTest.vcproj</filename>
    </modified>
    <modified>
      <diff>@@ -38,9 +38,10 @@
 sdlmain.lib
 opengl32.lib
 sdl_ttf.lib
-sdl_mixer.lib
 sdl_image.lib
-ZEngineS.lib&quot;
+ZEngineS.lib
+SDL_mixer.lib
+audiere.lib&quot;
 				OutputFile=&quot;../test/bin/ZMouseTest.exe&quot;
 				LinkIncremental=&quot;1&quot;
 				AdditionalLibraryDirectories=&quot;../lib&quot;</diff>
      <filename>vc7/ZMouseTest.vcproj</filename>
    </modified>
    <modified>
      <diff>@@ -38,9 +38,10 @@
 sdlmain.lib
 opengl32.lib
 sdl_ttf.lib
-sdl_mixer.lib
 sdl_image.lib
-ZEngineS.lib&quot;
+ZEngineS.lib
+SDL_mixer.lib
+audiere.lib&quot;
 				OutputFile=&quot;../test/bin/ZMusicTest.exe&quot;
 				LinkIncremental=&quot;1&quot;
 				AdditionalLibraryDirectories=&quot;../lib&quot;</diff>
      <filename>vc7/ZMusicTest.vcproj</filename>
    </modified>
    <modified>
      <diff>@@ -38,9 +38,10 @@
 sdlmain.lib
 opengl32.lib
 sdl_ttf.lib
-sdl_mixer.lib
 sdl_image.lib
-ZEngineS.lib&quot;
+ZEngineS.lib
+SDL_mixer.lib
+audiere.lib&quot;
 				OutputFile=&quot;../test/bin/ZParticleTest.exe&quot;
 				LinkIncremental=&quot;1&quot;
 				AdditionalLibraryDirectories=&quot;../lib&quot;</diff>
      <filename>vc7/ZParticleTest.vcproj</filename>
    </modified>
    <modified>
      <diff>@@ -38,9 +38,10 @@
 sdlmain.lib
 opengl32.lib
 sdl_ttf.lib
-sdl_mixer.lib
 sdl_image.lib
-ZEngineS.lib&quot;
+ZEngineS.lib
+SDL_mixer.lib
+audiere.lib&quot;
 				OutputFile=&quot;../test/bin/ZRectTest.exe&quot;
 				LinkIncremental=&quot;1&quot;
 				AdditionalLibraryDirectories=&quot;../lib&quot;</diff>
      <filename>vc7/ZRectTest.vcproj</filename>
    </modified>
    <modified>
      <diff>@@ -38,9 +38,10 @@
 sdlmain.lib
 opengl32.lib
 sdl_ttf.lib
-sdl_mixer.lib
 sdl_image.lib
-ZEngineS.lib&quot;
+ZEngineS.lib
+SDL_mixer.lib
+audiere.lib&quot;
 				OutputFile=&quot;../test/bin/ZSoundTest.exe&quot;
 				LinkIncremental=&quot;1&quot;
 				AdditionalLibraryDirectories=&quot;../lib&quot;</diff>
      <filename>vc7/ZSoundTest.vcproj</filename>
    </modified>
    <modified>
      <diff>@@ -38,9 +38,10 @@
 sdlmain.lib
 opengl32.lib
 sdl_ttf.lib
-sdl_mixer.lib
 sdl_image.lib
-ZEngineS.lib&quot;
+ZEngineS.lib
+SDL_mixer.lib
+audiere.lib&quot;
 				OutputFile=&quot;../test/bin/ZTimerTest.exe&quot;
 				LinkIncremental=&quot;1&quot;
 				AdditionalLibraryDirectories=&quot;../lib&quot;</diff>
      <filename>vc7/ZTimerTest.vcproj</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>include/ZE_ZSoundBase.h</filename>
    </removed>
    <removed>
      <filename>src/ZE_ZSoundBase.cpp</filename>
    </removed>
    <removed>
      <filename>vc6/readme-vc6.txt</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>bdb2afe2454c1c829802516733d2570df6198451</id>
    </parent>
  </parents>
  <author>
    <name>James Turk</name>
    <email>james.p.turk@gmail.com</email>
  </author>
  <url>http://github.com/jamesturk/zengine/commit/dcd715832d7250b70ce9021857885250bb3b6699</url>
  <id>dcd715832d7250b70ce9021857885250bb3b6699</id>
  <committed-date>2004-01-13T15:52:01-08:00</committed-date>
  <authored-date>2004-01-13T15:52:01-08:00</authored-date>
  <message>planning split</message>
  <tree>29a14e4f59b6be3d1880f476ab655b0c26333e15</tree>
  <committer>
    <name>James Turk</name>
    <email>james.p.turk@gmail.com</email>
  </committer>
</commit>
