]> git.jsancho.org Git - lugaru.git/blobdiff - Source/GameInitDispose.cpp
Use const char * for string arguments to avoid deprecated conversion warnings.
[lugaru.git] / Source / GameInitDispose.cpp
index d966a35d2f80692ba73518fffb51fafee7ca97cb..037828229b98294c3d534f33d2c05bf37391441c 100644 (file)
@@ -1,4 +1,25 @@
-#include "Game.h"      
+/*
+Copyright (C) 2003, 2010 - Wolfire Games
+
+This file is part of Lugaru.
+
+Lugaru is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*/
+
+#include "Game.h"
 extern float screenwidth,screenheight;
 extern float viewdistance;
 extern XYZ viewer;
@@ -27,11 +48,6 @@ extern GLubyte bloodText[512*512*3];
 extern GLubyte wolfbloodText[512*512*3];
 extern bool ismotionblur;
 extern bool trilinear;
-#ifdef WIN32
-extern HDC hDC;
-#else
-extern AGLContext gaglContext;
-#endif
 extern bool osx;
 extern bool musictoggle;
 extern Weapons weapons;
@@ -94,11 +110,17 @@ extern float accountcampaigntime[10];
 extern int accountcampaignchoicesmade[10];
 extern int accountcampaignchoices[10][5000];
 
-extern FSOUND_STREAM * strm[10];
+extern FSOUND_STREAM * strm[20];
 
-extern "C"     void PlaySoundEx(int channel, FSOUND_SAMPLE *sptr, FSOUND_DSPUNIT *dsp, signed char startpaused);
+extern "C"     void PlaySoundEx(int channel, FSOUND_SAMPLE *sptr, FSOUND_DSPUNIT *dsp, signed char startpaused);
 extern "C" void PlayStreamEx(int chan, FSOUND_STREAM *sptr, FSOUND_DSPUNIT *dsp, signed char startpaused);
 
+void LOG(const std::string &fmt, ...)
+{
+    // !!! FIXME: write me.
+}
+
+
 Game::TextureList Game::textures;
 
 void Game::Dispose()
@@ -174,6 +196,9 @@ void Game::Dispose()
 
        FSOUND_StopSound(FSOUND_ALL);
 
+// this is causing problems on Linux, but we'll force an _exit() a little
+//  later in the shutdown process.  --ryan.
+#if !PLATFORM_LINUX
 #define streamcount 20
 #define samplecount 100
 
@@ -193,6 +218,7 @@ void Game::Dispose()
                free(texture.data);
        }
        texture.data = 0;
+#endif
 }
 
 
@@ -206,196 +232,196 @@ void Game::LoadSounds()
        FSOUND_3D_SetDopplerFactor(0);
 
        FSOUND_SetSFXMasterVolume((int)(volume*255));
-       
-       samp[footstepsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:footstepsnow1.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
-       FSOUND_Sample_SetMinMaxDistance(samp[footstepsound], 4.0f, 1000.0f);    
 
-       samp[footstepsound2] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:footstepsnow2.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
-       FSOUND_Sample_SetMinMaxDistance(samp[footstepsound2], 4.0f, 1000.0f);   
+       samp[footstepsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:footstepsnow1.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       FSOUND_Sample_SetMinMaxDistance(samp[footstepsound], 4.0f, 1000.0f);
+
+       samp[footstepsound2] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:footstepsnow2.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       FSOUND_Sample_SetMinMaxDistance(samp[footstepsound2], 4.0f, 1000.0f);
 
-       samp[footstepsound3] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:footstepstone1.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
-       FSOUND_Sample_SetMinMaxDistance(samp[footstepsound3], 4.0f, 1000.0f);   
+       samp[footstepsound3] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:footstepstone1.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       FSOUND_Sample_SetMinMaxDistance(samp[footstepsound3], 4.0f, 1000.0f);
 
-       samp[footstepsound4] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:footstepstone2.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
-       FSOUND_Sample_SetMinMaxDistance(samp[footstepsound4], 4.0f, 1000.0f);   
+       samp[footstepsound4] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:footstepstone2.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       FSOUND_Sample_SetMinMaxDistance(samp[footstepsound4], 4.0f, 1000.0f);
 
-       samp[landsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:land.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
-       FSOUND_Sample_SetMinMaxDistance(samp[landsound], 4.0f, 1000.0f);        
+       samp[landsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:land.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       FSOUND_Sample_SetMinMaxDistance(samp[landsound], 4.0f, 1000.0f);
 
-       samp[jumpsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:jump.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
-       FSOUND_Sample_SetMinMaxDistance(samp[jumpsound], 4.0f, 1000.0f);        
+       samp[jumpsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:jump.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       FSOUND_Sample_SetMinMaxDistance(samp[jumpsound], 4.0f, 1000.0f);
 
-       samp[hawksound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:hawk.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
-       FSOUND_Sample_SetMinMaxDistance(samp[hawksound], 40.0f, 10000.0f);      
+       samp[hawksound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:hawk.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       FSOUND_Sample_SetMinMaxDistance(samp[hawksound], 40.0f, 10000.0f);
 
-       samp[whooshsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:whoosh.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
-       FSOUND_Sample_SetMinMaxDistance(samp[whooshsound], 4.0f, 1000.0f);      
+       samp[whooshsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:whoosh.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       FSOUND_Sample_SetMinMaxDistance(samp[whooshsound], 4.0f, 1000.0f);
        FSOUND_Sample_SetMode(samp[whooshsound], FSOUND_LOOP_NORMAL);
 
-       samp[landsound1] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:land1.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
-       FSOUND_Sample_SetMinMaxDistance(samp[landsound1], 4.0f, 1000.0f);       
+       samp[landsound1] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:land1.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       FSOUND_Sample_SetMinMaxDistance(samp[landsound1], 4.0f, 1000.0f);
 
 
 
-       samp[landsound2] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:land2.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
-       FSOUND_Sample_SetMinMaxDistance(samp[landsound2], 4.0f, 1000.0f);       
+       samp[landsound2] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:land2.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       FSOUND_Sample_SetMinMaxDistance(samp[landsound2], 4.0f, 1000.0f);
 
-       samp[breaksound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:broken.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
-       FSOUND_Sample_SetMinMaxDistance(samp[breaksound], 8.0f, 2000.0f);       
+       samp[breaksound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:broken.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       FSOUND_Sample_SetMinMaxDistance(samp[breaksound], 8.0f, 2000.0f);
 
-       samp[lowwhooshsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:Lowwhoosh.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
-       FSOUND_Sample_SetMinMaxDistance(samp[lowwhooshsound], 8.0f, 2000.0f);   
+       samp[lowwhooshsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:Lowwhoosh.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       FSOUND_Sample_SetMinMaxDistance(samp[lowwhooshsound], 8.0f, 2000.0f);
 
-       samp[midwhooshsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:midwhoosh.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
-       FSOUND_Sample_SetMinMaxDistance(samp[midwhooshsound], 8.0f, 2000.0f);   
+       samp[midwhooshsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:midwhoosh.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       FSOUND_Sample_SetMinMaxDistance(samp[midwhooshsound], 8.0f, 2000.0f);
 
-       samp[highwhooshsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:highwhoosh.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
-       FSOUND_Sample_SetMinMaxDistance(samp[highwhooshsound], 8.0f, 2000.0f);  
+       samp[highwhooshsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:highwhoosh.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       FSOUND_Sample_SetMinMaxDistance(samp[highwhooshsound], 8.0f, 2000.0f);
 
-       samp[movewhooshsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:movewhoosh.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
-       FSOUND_Sample_SetMinMaxDistance(samp[movewhooshsound], 8.0f, 2000.0f);  
+       samp[movewhooshsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:movewhoosh.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       FSOUND_Sample_SetMinMaxDistance(samp[movewhooshsound], 8.0f, 2000.0f);
 
-       samp[heavyimpactsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:heavyimpact.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
-       FSOUND_Sample_SetMinMaxDistance(samp[heavyimpactsound], 8.0f, 2000.0f); 
+       samp[heavyimpactsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:heavyimpact.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       FSOUND_Sample_SetMinMaxDistance(samp[heavyimpactsound], 8.0f, 2000.0f);
 
-       samp[whooshhitsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:Whooshhit.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
-       FSOUND_Sample_SetMinMaxDistance(samp[whooshhitsound], 8.0f, 2000.0f);   
+       samp[whooshhitsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:Whooshhit.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       FSOUND_Sample_SetMinMaxDistance(samp[whooshhitsound], 8.0f, 2000.0f);
 
-       samp[thudsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:thud.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
-       FSOUND_Sample_SetMinMaxDistance(samp[thudsound], 8.0f, 2000.0f);        
+       samp[thudsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:thud.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       FSOUND_Sample_SetMinMaxDistance(samp[thudsound], 8.0f, 2000.0f);
 
-       samp[alarmsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:alarm.ogg", FSOUND_2D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
-       FSOUND_Sample_SetMinMaxDistance(samp[alarmsound], 8.0f, 2000.0f);       
+       samp[alarmsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:alarm.ogg", FSOUND_2D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       FSOUND_Sample_SetMinMaxDistance(samp[alarmsound], 8.0f, 2000.0f);
 
-       samp[breaksound2] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:break.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
-       FSOUND_Sample_SetMinMaxDistance(samp[breaksound2], 8.0f, 2000.0f);      
+       samp[breaksound2] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:break.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       FSOUND_Sample_SetMinMaxDistance(samp[breaksound2], 8.0f, 2000.0f);
 
-       samp[knifedrawsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:knifedraw.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[knifedrawsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:knifedraw.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[knifedrawsound], 8.0f, 2000.0f);
 
-       samp[knifesheathesound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:knifesheathe.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[knifesheathesound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:knifesheathe.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[knifesheathesound], 8.0f, 2000.0f);
 
-       samp[fleshstabsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:Fleshstab.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[fleshstabsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:Fleshstab.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[fleshstabsound], 8.0f, 2000.0f);
 
-       samp[fleshstabremovesound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:Fleshstabremove.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[fleshstabremovesound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:Fleshstabremove.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[fleshstabremovesound], 8.0f, 2000.0f);
 
-       samp[knifeswishsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:knifeswish.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[knifeswishsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:knifeswish.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[knifeswishsound], 8.0f, 2000.0f);
 
-       samp[knifeslicesound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:knifeslice.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[knifeslicesound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:knifeslice.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[knifeslicesound], 8.0f, 2000.0f);
 
-       samp[swordslicesound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:swordslice.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[swordslicesound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:swordslice.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[swordslicesound], 8.0f, 2000.0f);
 
-       samp[skidsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:skid.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[skidsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:skid.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[skidsound], 8.0f, 2000.0f);
 
-       samp[snowskidsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:snowskid.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[snowskidsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:snowskid.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[snowskidsound], 8.0f, 2000.0f);
 
-       samp[bushrustle] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:bushrustle.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
-       FSOUND_Sample_SetMinMaxDistance(samp[bushrustle], 4.0f, 1000.0f);       
+       samp[bushrustle] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:bushrustle.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       FSOUND_Sample_SetMinMaxDistance(samp[bushrustle], 4.0f, 1000.0f);
 
-       samp[clank1sound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:clank1.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[clank1sound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:clank1.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[clank1sound], 8.0f, 2000.0f);
 
-       samp[clank2sound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:clank2.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[clank2sound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:clank2.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[clank2sound], 8.0f, 2000.0f);
 
-       samp[clank3sound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:clank3.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[clank3sound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:clank3.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[clank3sound], 8.0f, 2000.0f);
 
-       samp[clank4sound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:clank4.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[clank4sound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:clank4.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[clank4sound], 8.0f, 2000.0f);
 
-       samp[consolesuccesssound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:consolesuccess.ogg", FSOUND_2D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
-       FSOUND_Sample_SetMinMaxDistance(samp[consolesuccesssound], 4.0f, 1000.0f);      
+       samp[consolesuccesssound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:consolesuccess.ogg", FSOUND_2D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       FSOUND_Sample_SetMinMaxDistance(samp[consolesuccesssound], 4.0f, 1000.0f);
 
-       samp[consolefailsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:consolefail.ogg", FSOUND_2D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
-       FSOUND_Sample_SetMinMaxDistance(samp[consolefailsound], 4.0f, 1000.0f); 
+       samp[consolefailsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:consolefail.ogg", FSOUND_2D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       FSOUND_Sample_SetMinMaxDistance(samp[consolefailsound], 4.0f, 1000.0f);
 
-       samp[metalhitsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:MetalHit.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[metalhitsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:MetalHit.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[metalhitsound], 8.0f, 2000.0f);
 
-       samp[clawslicesound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:clawslice.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[clawslicesound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:clawslice.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[clawslicesound], 8.0f, 2000.0f);
 
-       samp[splattersound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:splatter.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[splattersound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:splatter.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[splattersound], 8.0f, 2000.0f);
 
-       samp[growlsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:Growl.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[growlsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:Growl.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[growlsound], 1000.0f, 2000.0f);
 
-       samp[growl2sound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:Growl2.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[growl2sound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:Growl2.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[growl2sound], 1000.0f, 2000.0f);
 
-       samp[barksound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:bark.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[barksound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:bark.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[barksound], 1000.0f, 2000.0f);
 
-       samp[bark2sound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:bark2.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[bark2sound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:bark2.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[bark2sound], 1000.0f, 2000.0f);
 
-       samp[bark3sound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:bark3.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[bark3sound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:bark3.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[bark3sound], 1000.0f, 2000.0f);
 
-       samp[snarlsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:snarl.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[snarlsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:snarl.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[snarlsound], 1000.0f, 2000.0f);
 
 
-       samp[snarl2sound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:snarl2.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[snarl2sound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:snarl2.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[snarl2sound], 1000.0f, 2000.0f);
 
-       samp[barkgrowlsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:barkgrowl.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[barkgrowlsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:barkgrowl.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[barkgrowlsound], 1000.0f, 2000.0f);
 
-       samp[rabbitattacksound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:rabbitattack.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[rabbitattacksound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:rabbitattack.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[rabbitattacksound], 1000.0f, 2000.0f);
 
-       samp[rabbitattack2sound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:rabbitattack2.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[rabbitattack2sound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:rabbitattack2.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[rabbitattack2sound], 1000.0f, 2000.0f);
 
-       samp[rabbitattack3sound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:rabbitattack3.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[rabbitattack3sound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:rabbitattack3.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[rabbitattack3sound], 1000.0f, 2000.0f);
 
-       samp[rabbitattack4sound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:rabbitattack4.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[rabbitattack4sound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:rabbitattack4.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[rabbitattack4sound], 1000.0f, 2000.0f);
 
-       samp[rabbitpainsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:rabbitpain.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[rabbitpainsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:rabbitpain.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[rabbitpainsound], 1000.0f, 2000.0f);
 
-       samp[rabbitpain1sound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:rabbitpain2.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[rabbitpain1sound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:rabbitpain2.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[rabbitpain1sound], 1000.0f, 2000.0f);
 
-       /*samp[rabbitpain2sound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:rabbitpain2.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       /*samp[rabbitpain2sound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:rabbitpain2.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[rabbitpain2sound], 1000.0f, 2000.0f);
        */
-       samp[rabbitchitter] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:rabbitchitter.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[rabbitchitter] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:rabbitchitter.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[rabbitchitter], 1000.0f, 2000.0f);
 
-       samp[rabbitchitter2] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:rabbitchitter2.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[rabbitchitter2] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:rabbitchitter2.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[rabbitchitter2], 1000.0f, 2000.0f);
 
-       samp[swordstaffsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:swordstaff.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[swordstaffsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:swordstaff.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[swordstaffsound], 8.0f, 2000.0f);
 
-       samp[staffbodysound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:staffbody.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[staffbodysound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:staffbody.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[staffbodysound], 8.0f, 2000.0f);
 
-       samp[staffheadsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:staffhead.ogg", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[staffheadsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:staffhead.ogg", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[staffheadsound], 8.0f, 2000.0f);
 
-       samp[staffbreaksound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:staffbreak.wav", FSOUND_HW3D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       samp[staffbreaksound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:staffbreak.wav", FSOUND_HW3D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
        FSOUND_Sample_SetMinMaxDistance(samp[staffbreaksound], 8.0f, 2000.0f);
 
 
 
 }
 
-void Game::LoadTexture(char *fileName, GLuint *textureid,int mipmap, bool hasalpha)
+void Game::LoadTexture(const char *fileName, GLuint *textureid,int mipmap, bool hasalpha)
 {
        GLuint          type;
 
@@ -406,7 +432,7 @@ void Game::LoadTexture(char *fileName, GLuint *textureid,int mipmap, bool hasalp
        unsigned char fileNamep[256];
        CopyCStringToPascal(fileName,fileNamep);
        //Load Image
-       upload_image( fileNamep ,hasalpha); 
+       upload_image( fileNamep ,hasalpha);
 
 //     std::string fname(fileName);
 //     std::transform(fname.begin(), fname.end(), tolower);
@@ -448,7 +474,7 @@ void Game::LoadTexture(char *fileName, GLuint *textureid,int mipmap, bool hasalp
 //     }
 }
 
-void Game::LoadTextureSave(char *fileName, GLuint *textureid,int mipmap,GLubyte *array, int *skinsize)
+void Game::LoadTextureSave(const char *fileName, GLuint *textureid,int mipmap,GLubyte *array, int *skinsize)
 {
        GLuint          type;
        int i;
@@ -462,8 +488,8 @@ void Game::LoadTextureSave(char *fileName, GLuint *textureid,int mipmap,GLubyte
        unsigned char fileNamep[256];
        CopyCStringToPascal(fileName,fileNamep);
        //Load Image
-       upload_image( fileNamep ,0); 
-       //LoadTGA( fileName ); 
+       upload_image( fileNamep ,0);
+       //LoadTGA( fileName );
 
 //     std::string fname(fileName);
 //     std::transform(fname.begin(), fname.end(), tolower);
@@ -512,7 +538,7 @@ void Game::LoadTextureSave(char *fileName, GLuint *textureid,int mipmap,GLubyte
 //     }
 }
 
-void Game::LoadSave(char *fileName, GLuint *textureid,bool mipmap,GLubyte *array, int *skinsize)
+void Game::LoadSave(const char *fileName, GLuint *textureid,bool mipmap,GLubyte *array, int *skinsize)
 {
        int i;
        int bytesPerPixel;
@@ -524,13 +550,13 @@ void Game::LoadSave(char *fileName, GLuint *textureid,bool mipmap,GLubyte *array
        //Load Image
        float temptexdetail=texdetail;
        texdetail=1;
-       //upload_image( fileName ); 
-       //LoadTGA( fileName ); 
+       //upload_image( fileName );
+       //LoadTGA( fileName );
        //Load Image
        unsigned char fileNamep[256];
        CopyCStringToPascal(fileName,fileNamep);
        //Load Image
-       upload_image( fileNamep ,0); 
+       upload_image( fileNamep ,0);
        texdetail=temptexdetail;
 
        //Is it valid?
@@ -547,21 +573,21 @@ void Game::LoadSave(char *fileName, GLuint *textureid,bool mipmap,GLubyte *array
        }
 }
 
-bool Game::AddClothes(char *fileName, GLuint *textureid,bool mipmap,GLubyte *array, int *skinsize)
+bool Game::AddClothes(const char *fileName, GLuint *textureid,bool mipmap,GLubyte *array, int *skinsize)
 {
        int i;
        int bytesPerPixel;
 
        LOGFUNC;
 
-       //upload_image( fileName ); 
-       //LoadTGA( fileName ); 
+       //upload_image( fileName );
+       //LoadTGA( fileName );
        //Load Image
        unsigned char fileNamep[256];
        CopyCStringToPascal(fileName,fileNamep);
        //Load Image
        bool opened;
-       opened=upload_image( fileNamep ,1); 
+       opened=upload_image( fileNamep ,1);
 
        float alphanum;
        //Is it valid?
@@ -611,11 +637,11 @@ GLvoid Game::ReSizeGLScene(float fov, float pnear)
 
        gluPerspective(fov,(GLfloat)screenwidth/(GLfloat)screenheight,pnear,viewdistance);
 
-       glMatrixMode(GL_MODELVIEW);                                                     
-       glLoadIdentity();                                                                       
+       glMatrixMode(GL_MODELVIEW);
+       glLoadIdentity();
 }
 
-void Game::LoadingScreen()                                                                             
+void Game::LoadingScreen()
 {
        static float loadprogress,minprogress,maxprogress;
        static AbsoluteTime time = {0,0};
@@ -682,13 +708,13 @@ void Game::LoadingScreen()
                //glScalef(.25,.25,.25);
                glBegin(GL_QUADS);
                glTexCoord2f(.1-loadprogress/100,0+loadprogress/100+.3);
-               glVertex3f(-1,          -1,      0.0f);
+               glVertex3f(-1,          -1,      0.0f);
                glTexCoord2f(.1-loadprogress/100,0+loadprogress/100+.3);
-               glVertex3f(1,   -1,      0.0f);
+               glVertex3f(1,   -1,      0.0f);
                glTexCoord2f(.1-loadprogress/100,1+loadprogress/100+.3);
                glVertex3f(1,   1, 0.0f);
                glTexCoord2f(.1-loadprogress/100,1+loadprogress/100+.3);
-               glVertex3f(-1,  1, 0.0f);
+               glVertex3f(-1,  1, 0.0f);
                glEnd();
                glPopMatrix();
                glEnable(GL_BLEND);
@@ -696,13 +722,13 @@ void Game::LoadingScreen()
                //glScalef(.25,.25,.25);
                glBegin(GL_QUADS);
                glTexCoord2f(.4+loadprogress/100,0+loadprogress/100);
-               glVertex3f(-1,          -1,      0.0f);
+               glVertex3f(-1,          -1,      0.0f);
                glTexCoord2f(.4+loadprogress/100,0+loadprogress/100);
-               glVertex3f(1,   -1,      0.0f);
+               glVertex3f(1,   -1,      0.0f);
                glTexCoord2f(.4+loadprogress/100,1+loadprogress/100);
                glVertex3f(1,   1, 0.0f);
                glTexCoord2f(.4+loadprogress/100,1+loadprogress/100);
-               glVertex3f(-1,  1, 0.0f);
+               glVertex3f(-1,  1, 0.0f);
                glEnd();
                glPopMatrix();
                glDisable(GL_TEXTURE_2D);
@@ -745,13 +771,13 @@ void Game::LoadingScreen()
                //glScalef(.25,.25,.25);
                glBegin(GL_QUADS);
                glTexCoord2f(0+.5,0+.5);
-               glVertex3f(-1,          -1,      0.0f);
+               glVertex3f(-1,          -1,      0.0f);
                glTexCoord2f(1+.5,0+.5);
-               glVertex3f(1,   -1,      0.0f);
+               glVertex3f(1,   -1,      0.0f);
                glTexCoord2f(1+.5,1+.5);
                glVertex3f(1,   1, 0.0f);
                glTexCoord2f(0+.5,1+.5);
-               glVertex3f(-1,  1, 0.0f);
+               glVertex3f(-1,  1, 0.0f);
                glEnd();
                glPopMatrix();
                glDisable(GL_TEXTURE_2D);
@@ -786,13 +812,13 @@ void Game::LoadingScreen()
                //glScalef(.25,.25,.25);
                glBegin(GL_QUADS);
                glTexCoord2f(0+.2,0+.8);
-               glVertex3f(-1,          -1,      0.0f);
+               glVertex3f(-1,          -1,      0.0f);
                glTexCoord2f(1+.2,0+.8);
-               glVertex3f(1,   -1,      0.0f);
+               glVertex3f(1,   -1,      0.0f);
                glTexCoord2f(1+.2,1+.8);
                glVertex3f(1,   1, 0.0f);
                glTexCoord2f(0+.2,1+.8);
-               glVertex3f(-1,  1, 0.0f);
+               glVertex3f(-1,  1, 0.0f);
                glEnd();
                glPopMatrix();
                glDisable(GL_TEXTURE_2D);
@@ -836,10 +862,10 @@ void Game::LoadingScreen()
                        glEnable(GL_BLEND);
                        glColor4f(flashr,flashg,flashb,flashamount);
                        glBegin(GL_QUADS);
-                       glVertex3f(0,           0,       0.0f);
-                       glVertex3f(256, 0,       0.0f);
+                       glVertex3f(0,           0,       0.0f);
+                       glVertex3f(256, 0,       0.0f);
                        glVertex3f(256, 256, 0.0f);
-                       glVertex3f(0,   256, 0.0f);
+                       glVertex3f(0,   256, 0.0f);
                        glEnd();
                        glMatrixMode(GL_PROJECTION);                                            // Select The Projection Matrix
                        glPopMatrix();                                                                          // Restore The Old Projection Matrix
@@ -849,19 +875,14 @@ void Game::LoadingScreen()
                        glEnable(GL_CULL_FACE);
                        glDisable(GL_BLEND);
                        glDepthMask(1);
-               }       
-
-#ifdef WIN32
-               SwapBuffers( hDC);
-#else
-               aglSwapBuffers(gaglContext);
-#endif
+               }
 
+               swap_gl_buffers();
                loadscreencolor=0;
        }
 }
 
-void Game::FadeLoadingScreen(float howmuch)                                                                            
+void Game::FadeLoadingScreen(float howmuch)
 {
        static float loadprogress,minprogress,maxprogress;
 
@@ -909,13 +930,13 @@ void Game::FadeLoadingScreen(float howmuch)
        //glScalef(.25,.25,.25);
        glBegin(GL_QUADS);
        glTexCoord2f(0,0);
-       glVertex3f(-1,          -1,      0.0f);
+       glVertex3f(-1,          -1,      0.0f);
        glTexCoord2f(1,0);
-       glVertex3f(1,   -1,      0.0f);
+       glVertex3f(1,   -1,      0.0f);
        glTexCoord2f(1,1);
        glVertex3f(1,   1, 0.0f);
        glTexCoord2f(0,1);
-       glVertex3f(-1,  1, 0.0f);
+       glVertex3f(-1,  1, 0.0f);
        glEnd();
        glPopMatrix();
        glDisable(GL_TEXTURE_2D);
@@ -935,19 +956,14 @@ void Game::FadeLoadingScreen(float howmuch)
        glColor4f(1.2-loadprogress/100,1.2-loadprogress/100,1.2-loadprogress/100,1);
        text.glPrint(280,125,string,1,1,640,480);
        */
-#ifdef WIN32
-       SwapBuffers( hDC);
-#else
-       aglSwapBuffers(gaglContext); // send swap command
-#endif
-
+       swap_gl_buffers();
        loadscreencolor=0;
 }
 
 
-void Game::InitGame()                                                                          
+void Game::InitGame()
 {
-#ifndef WIN32
+#if PLATFORM_MACOSX
        ProcessSerialNumber PSN;
        ProcessInfoRec pinfo;
        FSSpec pspec;
@@ -1019,8 +1035,14 @@ void Game::InitGame()
                                longnum=num2+num1*100000000;
 
                                char tempstring[256];
+                               #if defined(__APPLE__)
+                               sprintf (tempstring, "%s", registrationname);
+                               #elif defined(_WIN32) || defined(__linux__)
                                sprintf (tempstring, "%s-windows", registrationname);
-                               longnuma = MD5_string ( tempstring);    
+                               #else
+                               #error Please make sure you have the right registration key stuff here!
+                               #endif
+                               longnuma = MD5_string ( tempstring);
                                num1a = longnuma/100000000;
                                num2a = longnuma%100000000;
                                //if(num1a==num1&&num2a==num2)registered=1;
@@ -1206,18 +1228,51 @@ void Game::InitGame()
 
        LOG("Initializing sound system...");
 
+    int output = -1;
+
+    #if PLATFORM_LINUX
+    extern bool cmdline(const char *cmd);
+    unsigned char rc = 0;
+    output = FSOUND_OUTPUT_ALSA;  // Try alsa first...
+    if (cmdline("forceoss"))      //  ...but let user override that.
+        output = FSOUND_OUTPUT_OSS;
+    else if (cmdline("nosound"))
+        output = FSOUND_OUTPUT_NOSOUND;
+
+    FSOUND_SetOutput(output);
+       if ((rc = FSOUND_Init(44100, 32, 0)) == false)
+    {
+        // if we tried ALSA and failed, fall back to OSS.
+        if ( (output == FSOUND_OUTPUT_ALSA) && (!cmdline("forcealsa")) )
+        {
+            FSOUND_Close();
+            output = FSOUND_OUTPUT_OSS;
+            FSOUND_SetOutput(output);
+               rc = FSOUND_Init(44100, 32, 0);
+        }
+    }
+
+    if (rc == false)
+    {
+        FSOUND_Close();
+        output = FSOUND_OUTPUT_NOSOUND;  // we tried! just do silence.
+        FSOUND_SetOutput(output);
+           rc = FSOUND_Init(44100, 32, 0);
+    }
+    #else
        FSOUND_Init(44100, 32, 0);
+    #endif
 
        FSOUND_SetSFXMasterVolume((int)(volume*255));
 
        strm[stream_music3] = FSOUND_Stream_Open(ConvertFileName(":Data:Sounds:music3.mp3"), FSOUND_2D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=0;}
-//     FSOUND_Sample_SetMinMaxDistance(strm[stream_music3], 4.0f, 1000.0f);    
+//     FSOUND_Sample_SetMinMaxDistance(strm[stream_music3], 4.0f, 1000.0f);
        FSOUND_Stream_SetMode(strm[stream_music3], FSOUND_LOOP_NORMAL);
 
        if(musictoggle){
-//             PlaySoundEx( stream_music3, strm[stream_music3], NULL, TRUE);
-               PlayStreamEx(stream_music3, strm[stream_music3], 0, TRUE);
-               FSOUND_SetPaused(channels[stream_music3], FALSE);
+//             PlaySoundEx( stream_music3, strm[stream_music3], NULL, true);
+               PlayStreamEx(stream_music3, strm[stream_music3], 0, true);
+               FSOUND_SetPaused(channels[stream_music3], false);
                FSOUND_SetVolume(channels[stream_music3], 256);
        }
 
@@ -1225,48 +1280,48 @@ void Game::InitGame()
 
        if(ambientsound){
                strm[stream_wind] = FSOUND_Stream_Open(ConvertFileName(":Data:Sounds:wind.mp3"), FSOUND_2D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
-//             FSOUND_Sample_SetMinMaxDistance(strm[stream_wind], 4.0f, 1000.0f);      
+//             FSOUND_Sample_SetMinMaxDistance(strm[stream_wind], 4.0f, 1000.0f);
                FSOUND_Stream_SetMode(strm[stream_wind], FSOUND_LOOP_NORMAL);
 
                FadeLoadingScreen(30);
 
                strm[stream_desertambient] = FSOUND_Stream_Open(ConvertFileName(":Data:Sounds:desertambient.mp3"), FSOUND_2D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
-//             FSOUND_Sample_SetMinMaxDistance(strm[stream_desertambient], 4.0f, 1000.0f);     
+//             FSOUND_Sample_SetMinMaxDistance(strm[stream_desertambient], 4.0f, 1000.0f);
                FSOUND_Stream_SetMode(strm[stream_desertambient], FSOUND_LOOP_NORMAL);
        }
 
        FadeLoadingScreen(40);
 
-       samp[firestartsound] = FSOUND_Sample_Load(FSOUND_FREE, ConvertFileName(":Data:Sounds:firestart.ogg"), FSOUND_2D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
-       FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 8.0f, 2000.0f);   
+       samp[firestartsound] = FSOUND_Sample_Load(FSOUND_FREE, ConvertFileName(":Data:Sounds:firestart.ogg"), FSOUND_2D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 8.0f, 2000.0f);
 
        strm[stream_firesound] = FSOUND_Stream_Open(":Data:Sounds:fire.ogg", FSOUND_2D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
-//     FSOUND_Sample_SetMinMaxDistance(strm[stream_firesound], 8.0f, 2000.0f); 
+//     FSOUND_Sample_SetMinMaxDistance(strm[stream_firesound], 8.0f, 2000.0f);
        FSOUND_Stream_SetMode(strm[stream_firesound], FSOUND_LOOP_NORMAL);
 
        FadeLoadingScreen(50);
 
-       samp[fireendsound] = FSOUND_Sample_Load(FSOUND_FREE, ConvertFileName(":Data:Sounds:fireend.ogg"), FSOUND_2D, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
-       FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f);     
+       samp[fireendsound] = FSOUND_Sample_Load(FSOUND_FREE, ConvertFileName(":Data:Sounds:fireend.ogg"), FSOUND_2D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=5;}
+       FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f);
 
        //if(musictoggle){
        strm[stream_music1grass] = FSOUND_Stream_Open(ConvertFileName(":Data:Sounds:music1grass.mp3"), FSOUND_2D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=1;}
-//     FSOUND_Sample_SetMinMaxDistance(strm[stream_music1grass], 4.0f, 1000.0f);       
+//     FSOUND_Sample_SetMinMaxDistance(strm[stream_music1grass], 4.0f, 1000.0f);
        FSOUND_Stream_SetMode(strm[stream_music1grass], FSOUND_LOOP_NORMAL);
 
        strm[stream_music1snow] = FSOUND_Stream_Open(ConvertFileName(":Data:Sounds:music1snow.mp3"), FSOUND_2D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=2;}
-//     FSOUND_Sample_SetMinMaxDistance(strm[stream_music1snow], 4.0f, 1000.0f);        
+//     FSOUND_Sample_SetMinMaxDistance(strm[stream_music1snow], 4.0f, 1000.0f);
        FSOUND_Stream_SetMode(strm[stream_music1snow], FSOUND_LOOP_NORMAL);
 
        FadeLoadingScreen(60);
 
        strm[stream_music1desert] = FSOUND_Stream_Open(ConvertFileName(":Data:Sounds:music1desert.mp3"), FSOUND_2D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=3;}
-//     FSOUND_Sample_SetMinMaxDistance(strm[stream_music1desert], 4.0f, 1000.0f);      
+//     FSOUND_Sample_SetMinMaxDistance(strm[stream_music1desert], 4.0f, 1000.0f);
        FSOUND_Stream_SetMode(strm[stream_music1desert], FSOUND_LOOP_NORMAL);
 
        FadeLoadingScreen(80);
        strm[stream_music2] = FSOUND_Stream_Open(ConvertFileName(":Data:Sounds:music2.ogg"), FSOUND_2D, 0, 0); if(visibleloading){LoadingScreen(); loadscreencolor=4;}
-//     FSOUND_Sample_SetMinMaxDistance(strm[stream_music2], 4.0f, 1000.0f);    
+//     FSOUND_Sample_SetMinMaxDistance(strm[stream_music2], 4.0f, 1000.0f);
        FSOUND_Stream_SetMode(strm[stream_music2], FSOUND_LOOP_NORMAL);
 
        //}
@@ -1309,17 +1364,17 @@ void Game::InitGame()
        newscreenwidth=screenwidth;
        newscreenheight=screenheight;
 
-       
-       
+
+
        /*
        float gLoc[3]={0,0,0};
        float vel[3]={0,0,0};
-       FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 9999.0f, 99999.0f);       
-       PlaySoundEx( firestartsound, samp[firestartsound], NULL, TRUE);
+       FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 9999.0f, 99999.0f);
+       PlaySoundEx( firestartsound, samp[firestartsound], NULL, true);
        FSOUND_3D_SetAttributes(channels[firestartsound], gLoc, vel);
        FSOUND_SetVolume(channels[firestartsound], 256);
-       FSOUND_SetPaused(channels[firestartsound], FALSE);
-       FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 8.0f, 2000.0f);   
+       FSOUND_SetPaused(channels[firestartsound], false);
+       FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 8.0f, 2000.0f);
 
        flashr=1;
        flashg=0;
@@ -1330,11 +1385,11 @@ void Game::InitGame()
 }
 
 
-void Game::LoadStuff()                                                                         
+void Game::LoadStuff()
 {
        static float temptexdetail;
        static float viewdistdetail;
-       static int i,j,texsize; 
+       static int i,j,texsize;
        float megascale =1;
 
        LOGFUNC;
@@ -1342,8 +1397,8 @@ void Game::LoadStuff()
        visibleloading=1;
 
        /*musicvolume[3]=512;
-       PlaySoundEx( music4, samp[music4], NULL, TRUE);
-       FSOUND_SetPaused(channels[music4], FALSE);
+       PlaySoundEx( music4, samp[music4], NULL, true);
+       FSOUND_SetPaused(channels[music4], false);
        FSOUND_SetVolume(channels[music4], 512);
        */
        loadtime=0;
@@ -1375,7 +1430,7 @@ void Game::LoadStuff()
        text.BuildFont();
        texdetail=temptexdetail;
 
-       numsounds=71;           
+       numsounds=71;
 
        viewdistdetail=2;
        viewdistance=50*megascale*viewdistdetail;
@@ -1713,7 +1768,7 @@ void Game::LoadStuff()
        for(i=0;i<player[0].skeleton.num_joints;i++){
                for(j=0;j<animation[knifesneakattackanim].numframes;j++){
                        animation[knifesneakattackanim].position[i][j]+=moveamount;
-               }       
+               }
        }
 
        loadscreencolor=4;
@@ -1722,7 +1777,7 @@ void Game::LoadStuff()
        for(i=0;i<player[0].skeleton.num_joints;i++){
                for(j=0;j<animation[knifesneakattackedanim].numframes;j++){
                        animation[knifesneakattackedanim].position[i][j]+=moveamount;
-               }       
+               }
        }
 
        loadscreencolor=4;
@@ -1747,13 +1802,13 @@ void Game::LoadStuff()
        for(i=0;i<player[0].skeleton.num_joints;i++){
                for(j=0;j<animation[swordsneakattackanim].numframes;j++){
                        animation[swordsneakattackanim].position[i][j]+=moveamount;
-               }       
+               }
        }
        loadscreencolor=4;
        LoadingScreen();
        for(j=0;j<animation[swordsneakattackanim].numframes;j++){
                animation[swordsneakattackanim].weapontarget[j]+=moveamount;
-       }       
+       }
 
        loadscreencolor=4;
        LoadingScreen();
@@ -1761,13 +1816,13 @@ void Game::LoadStuff()
        for(i=0;i<player[0].skeleton.num_joints;i++){
                for(j=0;j<animation[swordsneakattackedanim].numframes;j++){
                        animation[swordsneakattackedanim].position[i][j]+=moveamount;
-               }       
+               }
        }
        /*
        for(i=0;i<player[0].skeleton.num_joints;i++){
        for(j=0;j<animation[sleepanim].numframes;j++){
        animation[sleepanim].position[i][j]=DoRotation(animation[sleepanim].position[i][j],0,180,0);
-       }       
+       }
        }
        */
        loadscreencolor=4;
@@ -1792,25 +1847,25 @@ void Game::LoadStuff()
                glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
                glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
 
-               glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, kTextureSize, kTextureSize, 0);                
+               glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, kTextureSize, kTextureSize, 0);
        }
        //}
 
        LoadSounds();
 
-       /*PlaySoundEx( consolesuccesssound, samp[consolesuccesssound], NULL, TRUE);
+       /*PlaySoundEx( consolesuccesssound, samp[consolesuccesssound], NULL, true);
        FSOUND_SetVolume(channels[consolesuccesssound], 256);
-       FSOUND_SetPaused(channels[consolesuccesssound], FALSE);
+       FSOUND_SetPaused(channels[consolesuccesssound], false);
        */
        if(targetlevel!=7){
                float gLoc[3]={0,0,0};
                float vel[3]={0,0,0};
-               FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f); 
-               PlaySoundEx( fireendsound, samp[fireendsound], NULL, TRUE);
+               FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f);
+               PlaySoundEx( fireendsound, samp[fireendsound], NULL, true);
                FSOUND_3D_SetAttributes(channels[fireendsound], gLoc, vel);
                FSOUND_SetVolume(channels[fireendsound], 256);
-               FSOUND_SetPaused(channels[fireendsound], FALSE);
-               FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f);     
+               FSOUND_SetPaused(channels[fireendsound], false);
+               FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f);
        }
 
        stillloading=0;
@@ -2017,3 +2072,4 @@ Game::Game()
        musicselected = 0;
        change = 0;
 }
+