mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-06 19:08:15 +00:00
71eac5acd3
don't use adlib driver if sound initialization fails, simon1 savedialog works svn-id: r3955
89 lines
1.8 KiB
C++
89 lines
1.8 KiB
C++
#include "stdafx.h"
|
|
#include "scumm.h"
|
|
#include "mididrv.h"
|
|
#include "gameDetector.h"
|
|
#include "gui.h"
|
|
#include "simon/simon.h"
|
|
|
|
GameDetector detector;
|
|
Gui gui;
|
|
|
|
Scumm *g_scumm;
|
|
|
|
|
|
#if !defined(__APPLE__) && !defined(__MORPHOS__)
|
|
#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 = detector.createSystem();
|
|
|
|
{
|
|
char *s = detector.getGameName();
|
|
system->property(OSystem::PROP_SET_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 */
|
|
MidiDriver *midi = detector.createMidi();
|
|
|
|
SimonState *simon = SimonState::create(system, midi);
|
|
simon->_game = detector._gameId - GID_SIMON_FIRST;
|
|
simon->set_volume(detector._sfx_volume);
|
|
simon->_game_path = detector._gameDataPath;
|
|
simon->go();
|
|
|
|
} else {
|
|
Scumm *scumm = Scumm::createFromDetector(&detector, system);
|
|
g_scumm = scumm;
|
|
|
|
/* bind to Gui */
|
|
scumm->_gui = &gui;
|
|
gui.init(scumm); /* Reinit GUI after loading a game */
|
|
|
|
scumm->go();
|
|
}
|
|
|
|
return 0;
|
|
}
|