]> git.jsancho.org Git - lugaru.git/blobdiff - Source/OpenGL_Windows.cpp
merge
[lugaru.git] / Source / OpenGL_Windows.cpp
index 1ee4964f94c8182969e026bbb9548276c25ac75c..5759ddc15fa40d270e876cca271091b7f05df98f 100644 (file)
@@ -19,6 +19,7 @@ along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */
 
+
 #ifdef WIN32
 #define UINT8 WIN32API_UINT8
 #define UINT16 WIN32API_UINT16
@@ -29,34 +30,27 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #undef boolean
 #endif
 
-#define USE_DEVIL 0
 
-#ifndef USE_DEVIL
-#  ifdef WIN32
-#    define USE_DEVIL
-#  endif
-#endif
 
-#if USE_DEVIL
-    #include "IL/il.h"
-    #include "IL/ilu.h"
-    #include "IL/ilut.h"
-       #include "Game.h"
-#else
-
-       #include "Game.h"
-       extern "C" {
-               #include "zlib.h"
-               #include "png.h"
+#include "Game.h"
+extern "C" {
+       #include "zlib.h"
+       #include "png.h"
+   #ifdef WIN32
+               #define INT32 INT32_jpeg
                #include "jpeglib.h"
-       }
+               #undef INT32
+       #else
+               #include "jpeglib.h"
+       #endif
+}
+
+static bool load_image(const char * fname, TGAImageRec & tex);
+static bool load_png(const char * fname, TGAImageRec & tex);
+static bool load_jpg(const char * fname, TGAImageRec & tex);
+static bool save_image(const char * fname);
+static bool save_png(const char * fname);
 
-    static bool load_image(const char * fname, TGAImageRec & tex);
-    static bool load_png(const char * fname, TGAImageRec & tex);
-    static bool load_jpg(const char * fname, TGAImageRec & tex);
-    static bool save_image(const char * fname);
-    static bool save_png(const char * fname);
-#endif
 
 #include "openal_wrapper.h"
 
@@ -69,51 +63,28 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
 extern bool buttons[3];
 extern float multiplier;
-extern float screenwidth,screenheight;
 extern float sps;
 extern float realmultiplier;
 extern int slomo;
-extern bool ismotionblur;
-extern float usermousesensitivity;
-extern int detail;
-extern bool floatjump;
 extern bool cellophane;
 // MODIFIED GWC
 //extern int terraindetail;
 //extern int texdetail;
 extern float terraindetail;
 extern float texdetail;
-extern int bloodtoggle;
+
 extern bool osx;
-extern bool autoslomo;
-extern bool foliage;
-extern bool musictoggle;
-extern bool trilinear;
-extern float gamespeed;
-extern int difficulty;
-extern bool damageeffects;
 extern int numplayers;
-extern bool decals;
-extern bool invertmouse;
-extern bool texttoggle;
-extern bool ambientsound;
-extern bool mousejump;
 extern bool freeze;
 extern Person player[maxplayers];
-extern bool vblsync;
 extern bool stillloading;
-extern bool showpoints;
-extern bool alwaysblur;
-extern bool immediate;
-extern bool velocityblur;
-extern bool debugmode;
 extern int mainmenu;
 /*extern*/ bool gameFocused;
-extern int kBitsPerPixel;
+
 extern float slomospeed;
 extern float slomofreq;
-extern float oldgamespeed;
-extern float volume;
+
+
 
 #include <math.h>
 #include <stdio.h>
@@ -122,19 +93,17 @@ extern float volume;
 #include <iostream>
 #include "gamegl.h"
 #include "MacCompatibility.h"
+#include "Settings.h"
 
 #ifdef WIN32
 #include <shellapi.h>
+#include "win-res/resource.h"
 #endif
 
-#include "fmod.h"
-
-#include "res/resource.h"
-
 using namespace std;
 
 
-#if USE_SDL
+
 SDL_Rect **resolutions = NULL;
 static SDL_Rect rect_1024_768 = { 0, 0, 1024, 768 };
 static SDL_Rect rect_800_600  = { 0, 0, 800,  600 };
@@ -145,7 +114,7 @@ static SDL_Rect *hardcoded_resolutions[] = {
     &rect_640_480,
     NULL
 };
-#endif
+
 
 
 unsigned int resolutionDepths[8][2] = {0};
@@ -178,7 +147,7 @@ typedef struct tagPOINT {
 } POINT, *PPOINT; 
 #endif
 
-#if USE_SDL
+
 
 #ifdef _MSC_VER
 #pragma warning(push)
@@ -240,7 +209,7 @@ void sdlGetCursorPos(POINT *pt)
 #undef MessageBox
 #endif
 #define MessageBox(hwnd,text,title,flags) STUBBED("msgbox")
-#endif
+
 
 Point delta;
 
@@ -328,7 +297,12 @@ void ShutdownDSp ()
 
 void DrawGL (Game & game)
 {
-       game.DrawGLScene();
+       if ( stereomode == stereoNone ) {
+               game.DrawGLScene(stereoCenter);
+       } else {
+               game.DrawGLScene(stereoLeft);
+               game.DrawGLScene(stereoRight);
+       }
 }
 
 
@@ -354,9 +328,7 @@ Boolean Button()
     return g_button;
 }
 
-#if !USE_SDL
-static void initSDLKeyTable(void) {}
-#else
+
 #define MAX_SDLKEYS SDLK_LAST
 static unsigned short KeyTable[MAX_SDLKEYS];
 
@@ -570,7 +542,7 @@ static void sdlEventProc(const SDL_Event &e, Game &game)
             return;
     }
 }
-#endif
+
 
 // --------------------------------------------------------------------------
 
@@ -585,286 +557,22 @@ Boolean SetUp (Game & game)
        randSeed = UpTime().lo;
 
        osx = 0;
-       ifstream ipstream(ConvertFileName(":Data:config.txt"), std::ios::in /*| std::ios::nocreate*/);
-       detail=1;
-       ismotionblur=0;
-       usermousesensitivity=1;
-       kContextWidth=640;
-       kContextHeight=480;
-       kBitsPerPixel = 32;
-       floatjump=0;
        cellophane=0;
        texdetail=4;
-       autoslomo=1;
-       decals=1;
-       invertmouse=0;
-       bloodtoggle=0;
        terraindetail=2;
-       foliage=1;
-       musictoggle=1;
-       trilinear=1;
-       gamespeed=1;
-       difficulty=1;
-       damageeffects=0;
-       texttoggle=1;
-       alwaysblur=0;
-       showpoints=0;
-       immediate=0;
-       velocityblur=0;
-
        slomospeed=0.25;
        slomofreq=8012;
-
-       volume = 0.8f;
-
-       game.crouchkey=MAC_SHIFT_KEY;
-       game.jumpkey=MAC_SPACE_KEY;
-       game.leftkey=MAC_A_KEY;
-       game.forwardkey=MAC_W_KEY;
-       game.backkey=MAC_S_KEY;
-       game.rightkey=MAC_D_KEY;
-       game.drawkey=MAC_E_KEY;
-       game.throwkey=MAC_Q_KEY;
-       game.attackkey=MAC_MOUSEBUTTON1;
-       game.chatkey=MAC_T_KEY;
        numplayers=1;
-       ambientsound=1;
-       vblsync=0;
-       debugmode=0;
+       
+       DefaultSettings(game);
 
        selectDetail(kContextWidth, kContextHeight, kBitsPerPixel, detail);
 
-       if(!ipstream) {
-               ofstream opstream(ConvertFileName(":Data:config.txt", "w"));
-               opstream << "Screenwidth:\n";
-               opstream << kContextWidth;
-               opstream << "\nScreenheight:\n";
-               opstream << kContextHeight;
-               opstream << "\nMouse sensitivity:\n";
-               opstream << usermousesensitivity;
-               opstream << "\nBlur(0,1):\n";
-               opstream << ismotionblur;
-               opstream << "\nOverall Detail(0,1,2) higher=better:\n";
-               opstream << detail;
-               opstream << "\nFloating jump:\n";
-               opstream << floatjump;
-               opstream << "\nMouse jump:\n";
-               opstream << mousejump;
-               opstream << "\nAmbient sound:\n";
-               opstream << ambientsound;
-               opstream << "\nBlood (0,1,2):\n";
-               opstream << bloodtoggle;
-               opstream << "\nAuto slomo:\n";
-               opstream << autoslomo;
-               opstream << "\nFoliage:\n";
-               opstream << foliage;
-               opstream << "\nMusic:\n";
-               opstream << musictoggle;
-               opstream << "\nTrilinear:\n";
-               opstream << trilinear;
-               opstream << "\nDecals(shadows,blood puddles,etc):\n";
-               opstream << decals;
-               opstream << "\nInvert mouse:\n";
-               opstream << invertmouse;
-               opstream << "\nGamespeed:\n";
-               opstream << gamespeed;
-               opstream << "\nDifficulty(0,1,2) higher=harder:\n";
-               opstream << difficulty;
-               opstream << "\nDamage effects(blackout, doublevision):\n";
-               opstream << damageeffects;
-               opstream << "\nText:\n";
-               opstream << texttoggle;
-               opstream << "\nDebug:\n";
-               opstream << debugmode;
-               opstream << "\nVBL Sync:\n";
-               opstream << vblsync;
-               opstream << "\nShow Points:\n";
-               opstream << showpoints;
-               opstream << "\nAlways Blur:\n";
-               opstream << alwaysblur;
-               opstream << "\nImmediate mode (turn on on G5):\n";
-               opstream << immediate;
-               opstream << "\nVelocity blur:\n";
-               opstream << velocityblur;
-               opstream << "\nVolume:\n";
-               opstream << volume;
-               opstream << "\nForward key:\n";
-               opstream << KeyToChar(game.forwardkey);
-               opstream << "\nBack key:\n";
-               opstream << KeyToChar(game.backkey);
-               opstream << "\nLeft key:\n";
-               opstream << KeyToChar(game.leftkey);
-               opstream << "\nRight key:\n";
-               opstream << KeyToChar(game.rightkey);
-               opstream << "\nJump key:\n";
-               opstream << KeyToChar(game.jumpkey);
-               opstream << "\nCrouch key:\n";
-               opstream << KeyToChar(game.crouchkey);
-               opstream << "\nDraw key:\n";
-               opstream << KeyToChar(game.drawkey);
-               opstream << "\nThrow key:\n";
-               opstream << KeyToChar(game.throwkey);
-               opstream << "\nAttack key:\n";
-               opstream << KeyToChar(game.attackkey);
-               opstream << "\nChat key:\n";
-               opstream << KeyToChar(game.chatkey);
-               opstream.close();
-       }
-       if(ipstream){
-               int i;
-               ipstream.ignore(256,'\n');
-               ipstream >> kContextWidth;
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> kContextHeight;
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> usermousesensitivity;
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> i;
-               ismotionblur = (i != 0);
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> detail;
-               if(detail!=0)kBitsPerPixel=32;
-               else kBitsPerPixel=16;
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> i;
-               floatjump = (i != 0);
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> i;
-               mousejump = (i != 0);
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> i;
-               ambientsound = (i != 0);
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> bloodtoggle;
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> i;
-               autoslomo = (i != 0);
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> i;
-               foliage = (i != 0);
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> i;
-               musictoggle = (i != 0);
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> i;
-               trilinear = (i != 0);
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> i;
-               decals = (i != 0);
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> i;
-               invertmouse = (i != 0);
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> gamespeed;
-               oldgamespeed=gamespeed;
-               if(oldgamespeed==0){
-                       gamespeed=1;
-                       oldgamespeed=1;
-               }
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> difficulty;
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> i;
-               damageeffects = (i != 0);
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> i;
-               texttoggle = (i != 0);
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> i;
-               debugmode = (i != 0);
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> i;
-               vblsync = (i != 0);
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> i;
-               showpoints = (i != 0);
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> i;
-               alwaysblur = (i != 0);
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> i;
-               immediate = (i != 0);
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> i;
-               velocityblur = (i != 0);
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n'); 
-               ipstream >> volume;
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n'); 
-               ipstream >> string;
-               game.forwardkey=CharToKey(string);
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> string;
-               game.backkey=CharToKey(string);
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> string;
-               game.leftkey=CharToKey(string);
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> string;
-               game.rightkey=CharToKey(string);
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> string;
-               game.jumpkey=CharToKey(string);
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> string;
-               game.crouchkey=CharToKey(string);
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> string;
-               game.drawkey=CharToKey(string);
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> string;
-               game.throwkey=CharToKey(string);
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> string;
-               game.attackkey=CharToKey(string);
-               ipstream.ignore(256,'\n');
-               ipstream.ignore(256,'\n');
-               ipstream >> string;
-               game.chatkey=CharToKey(string);
-               ipstream.close();
-
-               if(detail>2)detail=2;
-               if(detail<0)detail=0;
-               if(screenwidth<0)screenwidth=640;
-               if(screenheight<0)screenheight=480;
-#if !USE_SDL  // we'll take anything that works.
-               if(screenwidth>3000)screenwidth=640;
-               if(screenheight>3000)screenheight=480;
-#endif
+       if(!LoadSettings(game)) {
+               fprintf(stderr, "Failed to load config, creating default\n");
+               SaveSettings(game);
        }
+       
        if(kBitsPerPixel!=32&&kBitsPerPixel!=16){
                kBitsPerPixel=16;
        }
@@ -874,7 +582,7 @@ Boolean SetUp (Game & game)
 
        SetupDSpFullScreen();
 
-#if USE_SDL
+
     if (!SDL_WasInit(SDL_INIT_VIDEO))
     {
         if (SDL_Init(SDL_INIT_VIDEO) == -1)
@@ -936,7 +644,8 @@ Boolean SetUp (Game & game)
     SDL_ShowCursor(0);
 
     SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
-
+    SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 1);
+    
     if (SDL_SetVideoMode(kContextWidth, kContextHeight, 0, sdlflags) == NULL)
     {
         fprintf(stderr, "SDL_SetVideoMode() failed: %s\n", SDL_GetError());
@@ -972,7 +681,7 @@ Boolean SetUp (Game & game)
 
     if (!cmdline("nomousegrab"))
         SDL_WM_GrabInput(SDL_GRAB_ON);
-#endif
+
 
        glClear( GL_COLOR_BUFFER_BIT );
        swap_gl_buffers();
@@ -985,7 +694,6 @@ Boolean SetUp (Game & game)
        glDisable( GL_FOG);
        glDisable( GL_LIGHTING);
        glDisable( GL_LOGIC_OP);
-       glDisable( GL_STENCIL_TEST);
        glDisable( GL_TEXTURE_1D);
        glDisable( GL_TEXTURE_2D);
        glPixelTransferi( GL_MAP_COLOR, GL_FALSE);
@@ -1016,25 +724,6 @@ Boolean SetUp (Game & game)
        glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
        glAlphaFunc( GL_GREATER, 0.5f);
 
-#if USE_DEVIL
-       if (ilGetInteger(IL_VERSION_NUM) < IL_VERSION ||
-               iluGetInteger(ILU_VERSION_NUM) < ILU_VERSION ||
-               ilutGetInteger(ILUT_VERSION_NUM) < ILUT_VERSION)
-       {
-               ReportError("DevIL version is different...exiting!\n");
-               return false;
-       }
-
-       ilInit();
-       iluInit();
-       ilutInit();
-
-       ilutRenderer(ILUT_OPENGL);
-
-       ilEnable(IL_ORIGIN_SET);
-       ilOriginFunc(IL_ORIGIN_LOWER_LEFT);
-#endif
-
        GLint width = kContextWidth;
        GLint height = kContextHeight;
        gMidPoint.h = width / 2;
@@ -1046,6 +735,13 @@ Boolean SetUp (Game & game)
        game.newscreenwidth=screenwidth;
        game.newscreenheight=screenheight;
 
+       if ( CanInitStereo(stereomode) ) {
+               InitStereo(stereomode);
+       } else {
+               fprintf(stderr, "Failed to initialize stereo, disabling.\n");
+               stereomode = stereoNone;
+       }
+
        game.InitGame();
 
        return true;
@@ -1054,7 +750,7 @@ Boolean SetUp (Game & game)
 
 static void DoMouse(Game & game)
 {
-#if USE_SDL
+
        if(mainmenu||(abs(game.deltah)<10*realmultiplier*1000&&abs(game.deltav)<10*realmultiplier*1000))
        {
                game.deltah *= usermousesensitivity;
@@ -1070,7 +766,7 @@ static void DoMouse(Game & game)
         else if (game.mousecoordv >= kContextHeight)
             game.mousecoordv = kContextHeight - 1;
        }
-#endif
+
 }
 
 
@@ -1206,11 +902,9 @@ void CleanUp (void)
 
 //     game.Dispose();
 
-#if USE_DEVIL
-       ilShutDown();
-#endif
 
-#if USE_SDL
+
+
     SDL_Quit();
     #define GL_FUNC(ret,fn,params,call,rt) p##fn = NULL;
     #include "glstubs.h"
@@ -1218,18 +912,14 @@ void CleanUp (void)
     // cheat here...static destructors are calling glDeleteTexture() after
     //  the context is destroyed and libGL unloaded by SDL_Quit().
     pglDeleteTextures = glDeleteTextures_doNothing;
-#endif
+
 }
 
 // --------------------------------------------------------------------------
 
-static bool g_focused = true;
-
-
 static bool IsFocused()
 {
-    STUBBED("write me");
-       return true;
+    return ((SDL_GetAppState() & SDL_APPINPUTFOCUS) != 0);
 }
 
 
@@ -1316,12 +1006,12 @@ char *calcBaseDir(const char *argv0)
     char *retval;
     char *envr;
 
-    char *ptr = strrchr((char *)argv0, '/');
+    const char *ptr = strrchr((char *)argv0, '/');
     if (strchr(argv0, '/'))
     {
         retval = strdup(argv0);
         if (retval)
-            *(strrchr(retval, '/')) = '\0';
+            *((char *) strrchr(retval, '/')) = '\0';
         return(retval);
     }
 
@@ -1392,14 +1082,14 @@ int main(int argc, char **argv)
                        if (!SetUp (game))
                 return 42;
 
-                       while (!gDone&&!game.quit&&(!game.tryquit||!game.registered))
+                       while (!gDone&&!game.quit&&(!game.tryquit))
                        {
                                if (IsFocused())
                                {
                                        gameFocused = true;
 
                                        // check windows messages
-                                       #if USE_SDL
+                       
                                        game.deltah = 0;
                                        game.deltav = 0;
                                        SDL_Event e;
@@ -1413,7 +1103,7 @@ int main(int argc, char **argv)
                                                }
                                                sdlEventProc(e, game);
                                        }
-                                       #endif
+                               
 
                                        // game
                                        DoUpdate(game);
@@ -1475,41 +1165,7 @@ int main(int argc, char **argv)
 
        // --------------------------------------------------------------------------
 
-#if !USE_SDL
-       int resolutionID(int width, int height)
-       {
-               int whichres;
-               whichres=-1;
-               if(width==640 && height==480)whichres=0;
-               if(width==800 && height==600)whichres=1;
-               if(width==1024 && height==768)whichres=2;
-               if(width==1280 && height==1024)whichres=3;
-               if(width==1600 && height==1200)whichres=4;
-               if(width==840 && height==524)whichres=5;
-               if(width==1024 && height==640)whichres=6;
-               if(width==1344 && height==840)whichres=7;
-               if(width==1920 && height==1200)whichres=8;
-
-               return whichres;
-       }
 
-       int closestResolution(int width, int height)
-       {
-               int whichres;
-               whichres=-1;
-               if(width>=640 && height>=480)whichres=0;
-               if(width>=800 && height>=600)whichres=1;
-               if(width>=1024 && height>=768)whichres=2;
-               if(width>=1280 && height>=1024)whichres=3;
-               if(width>=1600 && height>=1200)whichres=4;
-               if(width==840 && height==524)whichres=5;
-               if(width==1024 && height==640)whichres=6;
-               if(width==1344 && height==840)whichres=7;
-               if(width>=1920 && height>=1200)whichres=8;
-
-               return whichres;
-       }
-#endif
 
        bool selectDetail(int & width, int & height, int & bpp, int & detail)
        {
@@ -1517,75 +1173,7 @@ int main(int argc, char **argv)
 
                // currently with SDL, we just use whatever is requested
                //  and don't care.  --ryan.
-               #if !USE_SDL
-               int whichres = closestResolution(width, height);
-
-               while (true)
-               {
-                       if(whichres<=0 || whichres>8){
-                               whichres = 0;
-                               width=640;
-                               height=480;
-                       }
-                       if(whichres==1){
-                               width=800;
-                               height=600;
-                       }
-                       if(whichres==2){
-                               width=1024;
-                               height=768;
-                       }
-                       if(whichres==3){
-                               width=1280;
-                               height=1024;
-                       }
-                       if(whichres==4){
-                               width=1600;
-                               height=1200;
-                       }
-                       if(whichres==5){
-                               width=840;
-                               height=524;
-                       }
-                       if(whichres==6){
-                               width=1024;
-                               height=640;
-                       }
-                       if(whichres==7){
-                               width=1344;
-                               height=840;
-                       }
-                       if(whichres==8){
-                               width=1920;
-                               height=1200;
-                       }
-
-                       if ((detail != 0) && (resolutionDepths[whichres][1] != 0))
-                       {
-                               break;
-                       }
-                       else if ((detail == 0) && (resolutionDepths[whichres][0] != 0))
-                       {
-                               break;
-                       }
-                       else if ((detail != 0) && (resolutionDepths[whichres][0] != 0))
-                       {
-                               res = false;
-                               detail = 0;
-                               break;
-                       }
-                       else
-
-            if (0 == whichres)
-                       {
-                               break;
-                       }
-
-                       --whichres;
-               }
-
-               bpp = resolutionDepths[whichres][(detail != 0)];
-               #endif
+               
 
                return res;
        }
@@ -1646,6 +1234,7 @@ int main(int argc, char **argv)
                }
        }
 
+
        bool LoadImage(const char * fname, TGAImageRec & tex)
        {
                bool res = true;
@@ -1655,100 +1244,25 @@ int main(int argc, char **argv)
                        return false;
                }
 
-        #if USE_DEVIL
-               ILstring f = strdup(ConvertFileName(fname));
-               if (!f)
-               {
-                       return false;
-               }
-
-               ILuint iid=0;
-               ilGenImages(1, &iid);
-               ilBindImage(iid);
-               if (ilLoadImage(f))
-               {
-                       //iluFlipImage();
-                       tex.sizeX = ilGetInteger(IL_IMAGE_WIDTH);
-                       tex.sizeY = ilGetInteger(IL_IMAGE_HEIGHT);
-                       tex.bpp = ilGetInteger(IL_IMAGE_BITS_PER_PIXEL);
-                       ILuint Bpp = ilGetInteger(IL_IMAGE_BYTES_PER_PIXEL),
-                               imageSize = tex.sizeX * tex.sizeY * Bpp;
-                       ILubyte *Data = ilGetData();
-                       memcpy(tex.data, Data, imageSize);
-
-                       // Truvision Targa files are stored as BGR colors
-                       // We want RGB so Blue and Red bytes are switched
-                       if (IL_TGA == ilGetInteger(IL_IMAGE_FORMAT))
-                       {
-                               // Loop Through The Image Data
-                               for (GLuint i = 0; i < int(imageSize); i += Bpp)
-                               {
-                                       // Swaps The 1st And 3rd Bytes ('R'ed and 'B'lue)
-                                       GLbyte temp;                                            // Temporary Variable
-                                       temp = tex.data[i];                                     // Temporarily Store The Value At Image Data 'i'
-                                       tex.data[i] = tex.data[i + 2];          // Set The 1st Byte To The Value Of The 3rd Byte
-                                       tex.data[i + 2] = temp;                         // Set The 3rd Byte To The Value In 'temp' (1st Byte Value)
-                               }
-                       }
-               }
-               else
-               {
-                       res = false;
-               }
-               ilDeleteImages(1, &iid);
-/*
-               if (tid)
-               {
-                       GLuint texid = ilutGLLoadImage(f);
-                       *tid = texid;
-               }
-               else if (mip)
-               {
-                       ilutGLBuildMipmaps()
-               }
-               else
-               {
-                       ilutGLTexImage(0);
-               }
-*/
-               free(f);
-        #else
+       
         res = load_image(fname, tex);
-        //if (!res) printf("failed to load %s\n", fname);
-        #endif
+    
 
                return res;
        }
 
        void ScreenShot(const char * fname)
        {
-        #if USE_DEVIL
-               ILstring f = strdup(fname);
-               if (!f)
-               {
-                       return;
-               }
-
-               ILuint iid;
-               ilGenImages(1, &iid);
-               ilBindImage(iid);
-               if (ilutGLScreen())
-               {
-                       ilSaveImage(f);
-               }
-               ilDeleteImages(1, &iid);
-
-               free(f);
-        #else
+  
         save_image(fname);
-        #endif
+  
        }
 
 
-#if !USE_DEVIL
+
 static bool load_image(const char *file_name, TGAImageRec &tex)
 {
-    char *ptr = strrchr((char *)file_name, '.');
+    const char *ptr = strrchr((char *)file_name, '.');
     if (ptr)
     {
         if (strcasecmp(ptr+1, "png") == 0)
@@ -1912,7 +1426,7 @@ png_done:
 
 static bool save_image(const char *file_name)
 {
-    char *ptr = strrchr((char *)file_name, '.');
+    const char *ptr = strrchr((char *)file_name, '.');
     if (ptr)
     {
         if (strcasecmp(ptr+1, "png") == 0)
@@ -1993,5 +1507,5 @@ save_png_done:
     return retval;
 }
 
-#endif
+