]> Shamusworld >> Repos - virtualjaguar/blobdiff - src/gui/app.cpp
Added switch to disable untuned tank circuit, for slower computers.
[virtualjaguar] / src / gui / app.cpp
index b313f66c6eba21bc35b76fd25b5af6151668a565..6abfe15cddce199d28d6f4f2ec2ce1000c6e849b 100644 (file)
@@ -1,10 +1,10 @@
 //
 // app.cpp - Qt-based GUI for Virtual Jaguar
 //
-// by James L. Hammons
+// by James Hammons
 // (C) 2010 Underground Software
 //
-// JLH = James L. Hammons <jlhamm@acm.org>
+// JLH = James Hammons <jlhamm@acm.org>
 //
 // Who  When        What
 // ---  ----------  -------------------------------------------------------------
@@ -19,6 +19,7 @@
 #include <QApplication>
 #include "log.h"
 #include "mainwin.h"
+#include "settings.h"
 #include "types.h"
 
 #ifdef __GCCWIN32__
 #undef main
 #endif
 
+//hm. :-/
+// This is stuff we pass into the mainWindow...
+bool noUntunedTankPlease = false;
+
 // Here's the main application loop--short and simple...
 int main(int argc, char * argv[])
 {
+       // Normally, this would be read in from the settings module... :-P
+       vjs.hardwareTypeAlpine = false;
+       // This is stuff we pass into the mainWindow...
+//     noUntunedTankPlease = false;
+
        if (argc > 1)
        {
-               if (strcmp(argv[1], "--help") == 0)
+               if ((strcmp(argv[1], "--help") == 0) || (strcmp(argv[1], "-h") == 0)
+                       || (strcmp(argv[1], "-?") == 0))
                {
                        printf("Virtual Jaguar 2.0.0 help\n");
                        printf("\n");
-                       printf("This is an experimental branch of Virtual Jaguar, how did you get it?\n");
+                       printf("Command line interface is mostly non-functional ATM, but may return if\n"
+                               "there is enough demand for it. :-)\n");
+                       return 0;
+               }
+
+               if (strcmp(argv[1], "--yarrr") == 0)
+               {
+                       printf("\n");
+                       printf("Shiver me timbers!\n");
+                       printf("\n");
                        return 0;
                }
+
+               if ((strcmp(argv[1], "--alpine") == 0) || (strcmp(argv[1], "-a") == 0))
+               {
+                       printf("Alpine Mode enabled.\n");
+                       vjs.hardwareTypeAlpine = true;
+               }
+
+               if (strcmp(argv[1], "--please-dont-kill-my-computer") == 0)
+               {
+                       noUntunedTankPlease = true;
+               }
        }
 
        Q_INIT_RESOURCE(virtualjaguar); // This must the same name as the exe filename
@@ -45,9 +76,12 @@ int main(int argc, char * argv[])
        // This is so we can pass this stuff using signal/slot mechanism...
 //ick  int id = qRegisterMetaType<uint32>();
 
-       LogInit("virtualjaguar.log");                           // Init logfile
+       bool success = (bool)LogInit("virtualjaguar.log");      // Init logfile
        int retVal = -1;                                                        // Default is failure
 
+       if (!success)
+               printf("Failed to open virtualjaguar.log for writing!\n");
+
        // Set up SDL library
        if (SDL_Init(SDL_INIT_JOYSTICK | SDL_INIT_AUDIO) < 0)
        {
@@ -58,6 +92,10 @@ int main(int argc, char * argv[])
                WriteLog("VJ: SDL (joystick, audio) successfully initialized.\n");
                App app(argc, argv);                                    // Declare an instance of the application
                retVal = app.exec();                                    // And run it!
+
+               // Free SDL components last...!
+               SDL_QuitSubSystem(SDL_INIT_JOYSTICK | SDL_INIT_AUDIO);
+               SDL_Quit();
        }
 
        LogDone();                                                                      // Close logfile
@@ -69,5 +107,6 @@ int main(int argc, char * argv[])
 App::App(int argc, char * argv[]): QApplication(argc, argv)
 {
        mainWindow = new MainWin();
+       mainWindow->plzDontKillMyComputer = noUntunedTankPlease;
        mainWindow->show();
 }