aboutsummaryrefslogtreecommitdiff
path: root/main.cpp
diff options
context:
space:
mode:
authorLudvig Strigeus2002-04-12 21:26:59 +0000
committerLudvig Strigeus2002-04-12 21:26:59 +0000
commitd2b0070c5f39661561484f8e2dfd6be271ed21cf (patch)
tree0e751495a08c9514e82879d78a977ad6f27469a7 /main.cpp
parentb195bb597c32384bf4ce6f9c22ffc281c0828ca4 (diff)
downloadscummvm-rg350-d2b0070c5f39661561484f8e2dfd6be271ed21cf.tar.gz
scummvm-rg350-d2b0070c5f39661561484f8e2dfd6be271ed21cf.tar.bz2
scummvm-rg350-d2b0070c5f39661561484f8e2dfd6be271ed21cf.zip
new video engine (expect broken non-sdl builds),
simon the sorcerer 1 & 2 support (non SCUMM games) svn-id: r3912
Diffstat (limited to 'main.cpp')
-rw-r--r--main.cpp87
1 files changed, 87 insertions, 0 deletions
diff --git a/main.cpp b/main.cpp
new file mode 100644
index 0000000000..ee20253902
--- /dev/null
+++ b/main.cpp
@@ -0,0 +1,87 @@
+#include "stdafx.h"
+#include "scumm.h"
+#include "gameDetector.h"
+#include "gui.h"
+#include "simon/simon.h"
+
+GameDetector detector;
+Gui gui;
+
+Scumm *g_scumm;
+SoundEngine sound;
+SOUND_DRIVER_TYPE snd_driv;
+
+
+#if !defined(__APPLE__)
+#undef main
+#endif
+
+int main(int argc, char *argv[])
+{
+#if defined(MACOS)
+ /* support for config file on macos */
+
+ char *argitem;
+ char *argstr;
+ FILE *argf;
+
+ if ((argf = fopen("configuration.macos", "r")) == NULL) {
+ error("Can't open configuration file.\n");
+ exit(1);
+ }
+
+ argc = 0;
+ argstr = (char *)malloc(64);
+ argstr = fgets(argstr, 64, argf);
+ if ((argitem = strchr(argstr, '\n')) != NULL)
+ *argitem = '\0';
+
+ argitem = strtok(argstr, " ");
+
+ while (argitem != NULL) {
+ argv = (char **)realloc(argv, (argc + 1) * 8);
+ argv[argc] = (char *)malloc(64);
+ strcpy(argv[argc], argitem);
+ argc++;
+
+ argitem = strtok(NULL, " ");
+ }
+
+ free(argstr);
+ fclose(argf);
+
+#endif
+
+ if (detector.detectMain(argc, argv))
+ return (-1);
+
+ OSystem *system = OSystem_SDL_create(detector._gfx_mode, false);
+
+ {
+ char *s = detector.getGameName();
+ system->set_param(OSystem::PARAM_WINDOW_CAPTION, (long)s);
+ free(s);
+ }
+
+ /* Simon the Sorcerer? */
+ if (detector._gameId >= GID_SIMON_FIRST && detector._gameId <= GID_SIMON_LAST) {
+ /* Simon the Sorcerer. Completely different initialization */
+ SimonState *simon = SimonState::create();
+ simon->_game = detector._gameId - GID_SIMON_FIRST;
+ simon->go(system);
+
+ } else {
+ Scumm *scumm = Scumm::createFromDetector(&detector, system);
+ g_scumm = scumm;
+
+ sound.initialize(scumm, &snd_driv);
+
+ /* bind to Gui */
+ scumm->_gui = &gui;
+ gui.init(scumm); /* Reinit GUI after loading a game */
+
+ scumm->go();
+ }
+
+ return 0;
+}