From 956e5e2b3dfe7658732ee036862e347e4c8c13aa Mon Sep 17 00:00:00 2001 From: Max Horn Date: Sat, 1 Mar 2003 21:26:45 +0000 Subject: don't hardcode the Simon GameID values, rather use the #defines from simon/intern.h. Proper solution pending svn-id: r6651 --- common/gameDetector.cpp | 30 ++++++++------- common/gameDetector.h | 98 ++++++++++++++++++++++++++----------------------- simon/intern.h | 13 ++++--- 3 files changed, 76 insertions(+), 65 deletions(-) diff --git a/common/gameDetector.cpp b/common/gameDetector.cpp index 257dd6b7e5..07f3afd745 100644 --- a/common/gameDetector.cpp +++ b/common/gameDetector.cpp @@ -23,11 +23,13 @@ #include "stdafx.h" #include "sound/mididrv.h" -#include "scumm/imuse.h" #include "common/engine.h" #include "common/gameDetector.h" #include "common/config-file.h" +#include "simon/intern.h" // FIXME - remove this, only used for the GAME_* constants in it! + + #define CHECK_OPTION() if ((current_option != NULL) || (*s != '\0')) goto ShowHelpAndExit #define HANDLE_OPTION() if ((*s == '\0') && (current_option == NULL)) goto ShowHelpAndExit; \ if ((*s != '\0') && (current_option != NULL)) goto ShowHelpAndExit; \ @@ -168,19 +170,19 @@ const VersionSettings version_settings[] = { /* Simon the Sorcerer 1 & 2 (not SCUMM games) */ {"simon1dos", "Simon the Sorcerer 1 for DOS", GID_SIMON_FIRST+0, 99, 99, 99, 0, "GAMEPC"}, - {"simon1amiga", "Simon the Sorcerer 1 for Amiga", GID_SIMON_FIRST+32, 99, 99, 99, 0, "gameamiga"}, - {"simon2dos", "Simon the Sorcerer 2 for DOS", GID_SIMON_FIRST+1, 99, 99, 99, 0, "GAME32"}, - {"simon1talkie", "Simon the Sorcerer 1 Talkie for DOS", GID_SIMON_FIRST+4, 99, 99, 99, 0, "SIMON.GME"}, - {"simon2talkie", "Simon the Sorcerer 2 Talkie for DOS", GID_SIMON_FIRST+5, 99, 99, 99, 0, "GSPTR30"}, - {"simon2talkie", "Simon the Sorcerer 2 Talkie for DOS", GID_SIMON_FIRST+5, 99, 99, 99, 0, "GSPTR30."}, - {"simon1win", "Simon the Sorcerer 1 Talkie for Windows", GID_SIMON_FIRST+6, 99, 99, 99, 0, "SIMON.GME"}, - {"simon1cd32", "Simon the Sorcerer 1 Talkie for Amiga CD32", GID_SIMON_FIRST+36, 99, 99, 99, 0, "gameamiga"}, - {"simon2win", "Simon the Sorcerer 2 Talkie for Windows", GID_SIMON_FIRST+7, 99, 99, 99, 0, "GSPTR30"}, - {"simon2win", "Simon the Sorcerer 2 Talkie for Windows", GID_SIMON_FIRST+7, 99, 99, 99, 0, "GSPTR30."}, - {"simon2amiga", "Simon the Sorcerer 2 Talkie for Amiga", GID_SIMON_FIRST+23, 99, 99, 99, 0, "GSPTR30"}, - {"simon2mac", "Simon the Sorcerer 2 Talkie for Mac", GID_SIMON_FIRST+23, 99, 99, 99, 0, "GSPTR30"}, - {"simon1demo", "Simon the Sorcerer 1 for DOS (Demo)", GID_SIMON_FIRST+8, 99, 99, 99, 0, "GDEMO"}, - {"simon2demo", "Simon the Sorcerer 2 Talkie for DOS (Demo)", GID_SIMON_FIRST+5, 99, 99, 99, 0, "GSPTR30"}, + {"simon1amiga", "Simon the Sorcerer 1 for Amiga", GID_SIMON_FIRST+GAME_SIMON1AMIGA, 99, 99, 99, 0, "gameamiga"}, + {"simon2dos", "Simon the Sorcerer 2 for DOS", GID_SIMON_FIRST+GAME_SIMON2DOS, 99, 99, 99, 0, "GAME32"}, + {"simon1talkie", "Simon the Sorcerer 1 Talkie for DOS", GID_SIMON_FIRST+GAME_SIMON1TALKIE, 99, 99, 99, 0, "SIMON.GME"}, + {"simon2talkie", "Simon the Sorcerer 2 Talkie for DOS", GID_SIMON_FIRST+GAME_SIMON2TALKIE, 99, 99, 99, 0, "GSPTR30"}, + {"simon2talkie", "Simon the Sorcerer 2 Talkie for DOS", GID_SIMON_FIRST+GAME_SIMON2TALKIE, 99, 99, 99, 0, "GSPTR30."}, + {"simon1win", "Simon the Sorcerer 1 Talkie for Windows", GID_SIMON_FIRST+GAME_SIMON1WIN, 99, 99, 99, 0, "SIMON.GME"}, + {"simon1cd32", "Simon the Sorcerer 1 Talkie for Amiga CD32", GID_SIMON_FIRST+GAME_SIMON1CD32, 99, 99, 99, 0, "gameamiga"}, + {"simon2win", "Simon the Sorcerer 2 Talkie for Windows", GID_SIMON_FIRST+GAME_SIMON2WIN, 99, 99, 99, 0, "GSPTR30"}, + {"simon2win", "Simon the Sorcerer 2 Talkie for Windows", GID_SIMON_FIRST+GAME_SIMON2WIN, 99, 99, 99, 0, "GSPTR30."}, + {"simon2amiga", "Simon the Sorcerer 2 Talkie for Amiga", GID_SIMON_FIRST+GAME_SIMON2MAC, 99, 99, 99, 0, "GSPTR30"}, + {"simon2mac", "Simon the Sorcerer 2 Talkie for Mac", GID_SIMON_FIRST+GAME_SIMON2MAC, 99, 99, 99, 0, "GSPTR30"}, + {"simon1demo", "Simon the Sorcerer 1 for DOS (Demo)", GID_SIMON_FIRST+GAME_SIMON1DEMO, 99, 99, 99, 0, "GDEMO"}, + {"simon2demo", "Simon the Sorcerer 2 Talkie for DOS (Demo)", GID_SIMON_FIRST+GAME_SIMON2TALKIE, 99, 99, 99, 0, "GSPTR30"}, {NULL, NULL, 0, 0, 0, 0, 0, NULL} }; diff --git a/common/gameDetector.h b/common/gameDetector.h index 6c0166ee52..1849e3de8c 100644 --- a/common/gameDetector.h +++ b/common/gameDetector.h @@ -36,54 +36,62 @@ enum { enum GameId { GID_TENTACLE = 1, - GID_MONKEY2 = 2, - GID_INDY4 = 3, - GID_MONKEY = 4, - GID_SAMNMAX = 5, - GID_MONKEY_EGA = 6, - GID_LOOM256 = 7, - GID_ZAK256 = 8, - GID_INDY3_256 = 9, - GID_LOOM = 10, - GID_FT = 11, - GID_DIG = 12, - GID_MONKEY_VGA = 13, - GID_CMI = 14, - GID_MANIAC = 15, - GID_ZAK = 16, - //GID_MANIAC64 = 17, - //GID_ZAK64 = 18, - GID_PUTTDEMO = 19, - - /* Simon the Sorcerer */ - GID_SIMON_FIRST = 20, - GID_SIMON_LAST = GID_SIMON_FIRST + 36 + GID_MONKEY2, + GID_INDY4, + GID_MONKEY, + GID_SAMNMAX, + GID_MONKEY_EGA, + GID_LOOM256, + GID_ZAK256, + GID_INDY3_256, + GID_LOOM, + GID_FT, + GID_DIG, + GID_MONKEY_VGA, + GID_CMI, + GID_MANIAC, + GID_ZAK, + //GID_MANIAC64, + //GID_ZAK64, + GID_PUTTDEMO, + + // Simon the Sorcerer + GID_SIMON_FIRST = 100, + GID_SIMON_LAST = GID_SIMON_FIRST + 36, + + // BASS + GID_BASS + }; enum GameFeatures { - GF_NEW_OPCODES = 1, - GF_AFTER_V6 = 2, - GF_AFTER_V7 = 4, - GF_HAS_ROOMTABLE = GF_AFTER_V7, - GF_USE_KEY = 8, - GF_USE_ANGLES = GF_AFTER_V7, - GF_DRAWOBJ_OTHER_ORDER = 16, - - GF_DEFAULT = GF_USE_KEY, - - GF_SMALL_HEADER = 32, - GF_EXTERNAL_CHARSET = GF_SMALL_HEADER, - GF_SMALL_NAMES = 64, - GF_OLD_BUNDLE = 128, - GF_16COLOR = 256, - GF_OLD256 = 512, - GF_AUDIOTRACKS = 1024, - GF_NO_SCALLING = 2048, - GF_ADLIB_DEFAULT = 4096, - GF_AMIGA = 8192, - GF_HUMONGOUS = 16384, - GF_AFTER_V8 = 32768, - GF_NEW_COSTUMES = 65536 + // SCUMM features + GF_NEW_OPCODES = 1 << 0, + GF_AFTER_V6 = 1 << 1, + GF_AFTER_V7 = 1 << 2, + GF_AFTER_V8 = 1 << 3, + GF_USE_KEY = 1 << 4, + GF_DRAWOBJ_OTHER_ORDER = 1 << 5, + GF_SMALL_HEADER = 1 << 6, + GF_SMALL_NAMES = 1 << 7, + GF_OLD_BUNDLE = 1 << 8, + GF_16COLOR = 1 << 9, + GF_OLD256 = 1 << 10, + GF_AUDIOTRACKS = 1 << 11, + GF_NO_SCALLING = 1 << 12, + GF_ADLIB_DEFAULT = 1 << 13, + GF_AMIGA = 1 << 14, + GF_HUMONGOUS = 1 << 15, + GF_NEW_COSTUMES = 1 << 16, + + GF_HAS_ROOMTABLE = GF_AFTER_V7, + GF_USE_ANGLES = GF_AFTER_V7, + GF_DEFAULT = GF_USE_KEY, + GF_EXTERNAL_CHARSET = GF_SMALL_HEADER + + // Simon features (TODO) + + // BASS features (TODO) }; struct VersionSettings { diff --git a/simon/intern.h b/simon/intern.h index 210f96c688..9128f024a2 100644 --- a/simon/intern.h +++ b/simon/intern.h @@ -132,13 +132,14 @@ struct GameSpecificSettings { const char *gamepc_filename; }; +// TODO: the following really should be turned into GameFeatures... enum { - GAME_SIMON2 = 1, - GAME_WIN = 2, - GAME_TALKIE = 4, - GAME_DEMO = 8, - GAME_MAC = 16, - GAME_AMIGA = 32, + GAME_SIMON2 = 1 << 0, + GAME_WIN = 1 << 1, + GAME_TALKIE = 1 << 2, + GAME_DEMO = 1 << 3, + GAME_MAC = 1 << 4, + GAME_AMIGA = 1 << 5, GAME_SIMON1DOS = 0, GAME_SIMON2DOS = GAME_SIMON2, -- cgit v1.2.3