diff options
author | Andrew Kurushin | 2006-05-13 10:30:38 +0000 |
---|---|---|
committer | Andrew Kurushin | 2006-05-13 10:30:38 +0000 |
commit | 64c3407500ababf579503224439a3e0c615a8390 (patch) | |
tree | 8bc3275b1d1db13bb2fa6e6d3f1ae365322da964 /engines/saga | |
parent | 45b249ee6012772179efe556f92de74163235aea (diff) | |
download | scummvm-rg350-64c3407500ababf579503224439a3e0c615a8390.tar.gz scummvm-rg350-64c3407500ababf579503224439a3e0c615a8390.tar.bz2 scummvm-rg350-64c3407500ababf579503224439a3e0c615a8390.zip |
extract GameDescriptions to separate files (this will help compress_saga tool to detect sound resource)
svn-id: r22433
Diffstat (limited to 'engines/saga')
-rw-r--r-- | engines/saga/actor.cpp | 2 | ||||
-rw-r--r-- | engines/saga/game.cpp | 1415 | ||||
-rw-r--r-- | engines/saga/gfx.cpp | 2 | ||||
-rw-r--r-- | engines/saga/interface.cpp | 2 | ||||
-rw-r--r-- | engines/saga/isomap.cpp | 2 | ||||
-rw-r--r-- | engines/saga/ite_introproc.cpp | 2 | ||||
-rw-r--r-- | engines/saga/itedata.cpp | 2 | ||||
-rw-r--r-- | engines/saga/music.cpp | 2 | ||||
-rw-r--r-- | engines/saga/puzzle.cpp | 2 | ||||
-rw-r--r-- | engines/saga/saga.cpp | 2 | ||||
-rw-r--r-- | engines/saga/saga.h | 320 | ||||
-rw-r--r-- | engines/saga/sagagame.cpp | 1414 | ||||
-rw-r--r-- | engines/saga/sagagame.h | 357 | ||||
-rw-r--r-- | engines/saga/sagaresnames.h (renamed from engines/saga/resnames.h) | 0 | ||||
-rw-r--r-- | engines/saga/saveload.cpp | 2 | ||||
-rw-r--r-- | engines/saga/scene.cpp | 2 | ||||
-rw-r--r-- | engines/saga/script.h | 37 | ||||
-rw-r--r-- | engines/saga/sfuncs.cpp | 2 | ||||
-rw-r--r-- | engines/saga/sndres.cpp | 2 | ||||
-rw-r--r-- | engines/saga/sprite.cpp | 2 | ||||
-rw-r--r-- | engines/saga/sthread.cpp | 2 |
21 files changed, 1790 insertions, 1783 deletions
diff --git a/engines/saga/actor.cpp b/engines/saga/actor.cpp index 9b8be7c014..f87958ef53 100644 --- a/engines/saga/actor.cpp +++ b/engines/saga/actor.cpp @@ -33,7 +33,7 @@ #include "saga/isomap.h" #include "saga/itedata.h" #include "saga/objectmap.h" -#include "saga/resnames.h" +#include "saga/sagaresnames.h" #include "saga/rscfile.h" #include "saga/script.h" #include "saga/sndres.h" diff --git a/engines/saga/game.cpp b/engines/saga/game.cpp index cad25c7aff..7246be1b80 100644 --- a/engines/saga/game.cpp +++ b/engines/saga/game.cpp @@ -36,16 +36,8 @@ #include "saga/rscfile.h" #include "saga/interface.h" #include "saga/scene.h" -#include "saga/resnames.h" +#include "saga/sagaresnames.h" -#define ITE_CONVERSE_MAX_TEXT_WIDTH (256 - 60) -#define ITE_CONVERSE_TEXT_HEIGHT 10 -#define ITE_CONVERSE_TEXT_LINES 4 - -//TODO: ihnm -#define IHNM_CONVERSE_MAX_TEXT_WIDTH (256 - 60) -#define IHNM_CONVERSE_TEXT_HEIGHT 10 -#define IHNM_CONVERSE_TEXT_LINES 10 namespace Saga { static DetectedGameList GAME_detectGames(const FSList &fslist); @@ -92,1410 +84,7 @@ PluginError Engine_SAGA_create(OSystem *syst, Engine **engine) { REGISTER_PLUGIN(SAGA, "SAGA Engine"); namespace Saga { - -// ITE section -static PanelButton ITE_MainPanelButtons[] = { - {kPanelButtonVerb, 52,4, 57,10, kVerbITEWalkTo,'w',0, 0,1,0}, - {kPanelButtonVerb, 52,15, 57,10, kVerbITELookAt,'l',0, 2,3,0}, - {kPanelButtonVerb, 52,26, 57,10, kVerbITEPickUp,'p',0, 4,5,0}, - {kPanelButtonVerb, 52,37, 57,10, kVerbITETalkTo,'t',0, 0,1,0}, - {kPanelButtonVerb, 110,4, 56,10, kVerbITEOpen,'o',0, 6,7,0}, - {kPanelButtonVerb, 110,15, 56,10, kVerbITEClose,'c',0, 8,9,0}, - {kPanelButtonVerb, 110,26, 56,10, kVerbITEUse,'u',0, 10,11,0}, - {kPanelButtonVerb, 110,37, 56,10, kVerbITEGive,'g',0, 12,13,0}, - {kPanelButtonArrow, 306,6, 8,5, -1,'U',0, 0,4,2}, - {kPanelButtonArrow, 306,41, 8,5, 1,'D',0, 1,5,3}, - - {kPanelButtonInventory, 181 + 32*0,6, 27,18, 0,'-',0, 0,0,0}, - {kPanelButtonInventory, 181 + 32*1,6, 27,18, 1,'-',0, 0,0,0}, - {kPanelButtonInventory, 181 + 32*2,6, 27,18, 2,'-',0, 0,0,0}, - {kPanelButtonInventory, 181 + 32*3,6, 27,18, 3,'-',0, 0,0,0}, - - {kPanelButtonInventory, 181 + 32*0,27, 27,18, 4,'-',0, 0,0,0}, - {kPanelButtonInventory, 181 + 32*1,27, 27,18, 5,'-',0, 0,0,0}, - {kPanelButtonInventory, 181 + 32*2,27, 27,18, 6,'-',0, 0,0,0}, - {kPanelButtonInventory, 181 + 32*3,27, 27,18, 7,'-',0, 0,0,0} -}; - -static PanelButton ITE_ConversePanelButtons[] = { - {kPanelButtonConverseText, 52,6 + ITE_CONVERSE_TEXT_HEIGHT * 0, ITE_CONVERSE_MAX_TEXT_WIDTH,ITE_CONVERSE_TEXT_HEIGHT, 0,'1',0, 0,0,0}, - {kPanelButtonConverseText, 52,6 + ITE_CONVERSE_TEXT_HEIGHT * 1, ITE_CONVERSE_MAX_TEXT_WIDTH,ITE_CONVERSE_TEXT_HEIGHT, 1,'2',0, 0,0,0}, - {kPanelButtonConverseText, 52,6 + ITE_CONVERSE_TEXT_HEIGHT * 2, ITE_CONVERSE_MAX_TEXT_WIDTH,ITE_CONVERSE_TEXT_HEIGHT, 2,'3',0, 0,0,0}, - {kPanelButtonConverseText, 52,6 + ITE_CONVERSE_TEXT_HEIGHT * 3, ITE_CONVERSE_MAX_TEXT_WIDTH,ITE_CONVERSE_TEXT_HEIGHT, 3,'4',0, 0,0,0}, - {kPanelButtonArrow, 257,6, 9,6, -1,'u',0, 0,4,2}, - {kPanelButtonArrow, 257,41, 9,6, 1,'d',0, 1,5,3}, -}; - -static PanelButton ITE_OptionPanelButtons[] = { - {kPanelButtonOptionSlider, 284,19, 13,75, 0,'-',0, 0,0,0}, //slider-scroller - {kPanelButtonOption, 113,18, 45,17, kTextReadingSpeed,'r',0, 0,0,0}, //read speed - {kPanelButtonOption, 113,37, 45,17, kTextMusic,'m',0, 0,0,0}, //music - {kPanelButtonOption, 113,56, 45,17, kTextSound,'n',0, 0,0,0}, //sound-noise - {kPanelButtonOption, 13,79, 135,17, kTextQuitGame,'q',0, 0,0,0}, //quit - {kPanelButtonOption, 13,98, 135,17, kTextContinuePlaying,'c',0, 0,0,0}, //continue - {kPanelButtonOption, 164,98, 57,17, kTextLoad,'l',0, 0,0,0}, //load - {kPanelButtonOption, 241,98, 57,17, kTextSave,'s',0, 0,0,0}, //save - {kPanelButtonOptionSaveFiles, 166,20, 112,74, 0,'-',0, 0,0,0}, //savefiles - - {kPanelButtonOptionText,106,4, 0,0, kTextGameOptions,'-',0, 0,0,0}, // text: game options - {kPanelButtonOptionText,11,22, 0,0, kTextReadingSpeed,'-',0, 0,0,0}, // text: read speed - {kPanelButtonOptionText,28,22, 0,0, kTextShowDialog,'-',0, 0,0,0}, // text: read speed - {kPanelButtonOptionText,73,41, 0,0, kTextMusic,'-',0, 0,0,0}, // text: music - {kPanelButtonOptionText,69,60, 0,0, kTextSound,'-',0, 0,0,0}, // text: noise -}; - -static PanelButton ITE_QuitPanelButtons[] = { - {kPanelButtonQuit, 11,17, 60,16, kTextQuit,'q',0, 0,0,0}, - {kPanelButtonQuit, 121,17, 60,16, kTextCancel,'c',0, 0,0,0}, - {kPanelButtonQuitText, -1,5, 0,0, kTextQuitTheGameQuestion,'-',0, 0,0,0}, -}; - -static PanelButton ITE_LoadPanelButtons[] = { - {kPanelButtonLoad, 101,19, 60,16, kTextOK,'o',0, 0,0,0}, - {kPanelButtonLoadText, -1,5, 0,0, kTextLoadSuccessful,'-',0, 0,0,0}, -}; - -static PanelButton ITE_SavePanelButtons[] = { - {kPanelButtonSave, 11,37, 60,16, kTextSave,'s',0, 0,0,0}, - {kPanelButtonSave, 101,37, 60,16, kTextCancel,'c',0, 0,0,0}, - {kPanelButtonSaveEdit, 26,17, 119,17, 0,'-',0, 0,0,0}, - {kPanelButtonSaveText, -1,5, 0,0, kTextEnterSaveGameName,'-',0, 0,0,0}, -}; - -static PanelButton ITE_ProtectPanelButtons[] = { - {kPanelButtonProtectEdit, 26,17, 119,17, 0,'-',0, 0,0,0}, - {kPanelButtonProtectText, -1,5, 0,0, kTextEnterProtectAnswer,'-',0, 0,0,0}, -}; - -/* -static PanelButton ITE_ProtectionPanelButtons[] = { - {kPanelButtonArrow, 0,0, 0,0, 0,'-',0, 0,0,0}, //TODO -};*/ - -static GameDisplayInfo ITE_DisplayInfo = { - 320, 200, // logical width&height - - 35, // scene path y offset - 137, // scene height - - 0, // status x offset - 137, // status y offset - 320, // status width - 11, // status height - 2, // status text y offset - 186, // status text color - 15, // status BG color - 308,137, // save reminder pos - 12,12, // save reminder w & h - 6,7, // save reminder sprite numbers - - 5, 4, // left portrait x, y offset - 274, 4, // right portrait x, y offset - - 8, 9, // inventory Up & Down button indexies - 2, 4, // inventory rows, columns - - 0, 148, // main panel offsets - ARRAYSIZE(ITE_MainPanelButtons), - ITE_MainPanelButtons, - - ITE_CONVERSE_MAX_TEXT_WIDTH, - ITE_CONVERSE_TEXT_HEIGHT, - ITE_CONVERSE_TEXT_LINES, - 4, 5, // converse Up & Down button indexies - 0, 148, // converse panel offsets - ARRAYSIZE(ITE_ConversePanelButtons), - ITE_ConversePanelButtons, - - 8, 0, // save file index - 8, // optionSaveFileVisible - 8, 8, // option panel offsets - ARRAYSIZE(ITE_OptionPanelButtons), - ITE_OptionPanelButtons, - - 64,54, // quit panel offsets - 192,38, // quit panel width & height - ARRAYSIZE(ITE_QuitPanelButtons), - ITE_QuitPanelButtons, - - 74, 53, // load panel offsets - 172, 40, // load panel width & height - ARRAYSIZE(ITE_LoadPanelButtons), - ITE_LoadPanelButtons, - - 2, // save edit index - 74, 44, // save panel offsets - 172, 58, // save panel width & height - ARRAYSIZE(ITE_SavePanelButtons), - ITE_SavePanelButtons, - - 0, // protect edit index - 74, 44, // protect panel offsets - 172, 58, // protect panel width & height - ARRAYSIZE(ITE_ProtectPanelButtons), - ITE_ProtectPanelButtons -}; - -static GameResourceDescription ITE_Resources = { - RID_ITE_SCENE_LUT, // Scene lookup table RN - RID_ITE_SCRIPT_LUT, // Script lookup table RN - RID_ITE_MAIN_PANEL, - RID_ITE_CONVERSE_PANEL, - RID_ITE_OPTION_PANEL, - RID_ITE_MAIN_SPRITES, - RID_ITE_MAIN_PANEL_SPRITES, - RID_ITE_DEFAULT_PORTRAITS, - RID_ITE_MAIN_STRINGS, - RID_ITE_ACTOR_NAMES -}; - -static GameResourceDescription ITEDemo_Resources = { - RID_ITEDEMO_SCENE_LUT, // Scene lookup table RN - RID_ITEDEMO_SCRIPT_LUT, // Script lookup table RN - RID_ITEDEMO_MAIN_PANEL, - RID_ITEDEMO_CONVERSE_PANEL, - RID_ITEDEMO_OPTION_PANEL, - RID_ITEDEMO_MAIN_SPRITES, - RID_ITEDEMO_MAIN_PANEL_SPRITES, - RID_ITEDEMO_DEFAULT_PORTRAITS, - RID_ITEDEMO_MAIN_STRINGS, - RID_ITEDEMO_ACTOR_NAMES -}; - -// Inherit the Earth - DOS Demo version -static GameFileDescription ITE_DEMO_G_GameFiles[] = { - {"ite.rsc", GAME_RESOURCEFILE, "986c79c4d2939dbe555576529fd37932"}, - //{"ite.dmo", GAME_DEMOFILE}, "0b9a70eb4e120b6f00579b46c8cae29e" - {"scripts.rsc", GAME_SCRIPTFILE, "d5697dd3240a3ceaddaa986c47e1a2d7"}, - {"voices.rsc", GAME_SOUNDFILE | GAME_VOICEFILE, "c58e67c506af4ffa03fd0aac2079deb0"} -}; - -static GameFontDescription ITEDEMO_GameFonts[] = { - {0}, - {1} -}; - -static GameSoundInfo ITEDEMO_GameSound = { - kSoundVOC, - -1, - -1, - false, - false, - true -}; - -// Inherit the Earth - Wyrmkeep Win32 Demo version - -static GameFileDescription ITE_WINDEMO2_GameFiles[] = { - {"ited.rsc", GAME_RESOURCEFILE, "3a450852cbf3c80773984d565647e6ac"}, - {"scriptsd.rsc", GAME_SCRIPTFILE, "3f12b67fa93e56e1a6be39d2921d80bb"}, - {"soundsd.rsc", GAME_SOUNDFILE, "95a6c148e22e99a8c243f2978223583c"}, - {"voicesd.rsc", GAME_VOICEFILE, "e139d86bab2ee8ba3157337f894a92d4"} -}; - -static GameFileDescription ITE_WINDEMO1_GameFiles[] = { - {"ited.rsc", GAME_RESOURCEFILE, "3a450852cbf3c80773984d565647e6ac"}, - {"scriptsd.rsc", GAME_SCRIPTFILE, "3f12b67fa93e56e1a6be39d2921d80bb"}, - {"soundsd.rsc", GAME_SOUNDFILE, "a741139dd7365a13f463cd896ff9969a"}, - {"voicesd.rsc", GAME_VOICEFILE, "0759eaf5b64ae19fd429920a70151ad3"} -}; - -static GameFontDescription ITEWINDEMO_GameFonts[] = { - {2}, - {0} -}; - -static GameSoundInfo ITEWINDEMO1_GameSound = { - kSoundPCM, - 22050, - 8, - false, - false, - false -}; - -static GameSoundInfo ITEWINDEMO2_GameVoice = { - kSoundVOX, - 22050, - 16, - false, - false, - true -}; - -static GameSoundInfo ITEWINDEMO2_GameSound = { - kSoundPCM, - 22050, - 16, - false, - false, - true -}; - -// Inherit the Earth - Wyrmkeep Mac Demo version -static GameFileDescription ITE_MACDEMO2_GameFiles[] = { - {"ited.rsc", GAME_RESOURCEFILE, "addfc9d82bc2fa1f4cab23743c652c08"}, - {"scriptsd.rsc", GAME_SCRIPTFILE, "fded5c59b8b7c5976229f960d21e6b0b"}, - {"soundsd.rsc", GAME_SOUNDFILE, "b3a831fbed337d1f1300fee1dd474f6c"}, - {"voicesd.rsc", GAME_VOICEFILE, "e139d86bab2ee8ba3157337f894a92d4"}, - {"musicd.rsc", GAME_MUSICFILE, "495bdde51fd9f4bea2b9c911091b1ab2"} -}; - -static GameFileDescription ITE_MACDEMO1_GameFiles[] = { - {"ited.rsc", GAME_RESOURCEFILE, "addfc9d82bc2fa1f4cab23743c652c08"}, - {"scriptsd.rsc", GAME_SCRIPTFILE, "fded5c59b8b7c5976229f960d21e6b0b"}, - {"soundsd.rsc", GAME_SOUNDFILE, "b3a831fbed337d1f1300fee1dd474f6c"}, - {"voicesd.rsc", GAME_VOICEFILE, "e139d86bab2ee8ba3157337f894a92d4"}, - {"musicd.rsc", GAME_MUSICFILE, "1a91cd60169f367ecb6c6e058d899b2f"} -}; - -static GameSoundInfo ITEMACDEMO_GameVoice = { - kSoundVOX, - 22050, - 16, - false, - false, - true -}; - -static GameSoundInfo ITEMACDEMO_GameSound = { - kSoundPCM, - 22050, - 16, - false, - true, - true -}; - -static GameSoundInfo ITEMACDEMO_GameMusic = { - kSoundPCM, - 11025, - 16, - false, - false, - true -}; - -// Inherit the Earth - Wyrmkeep Linux Demo version -static GameFileDescription ITE_LINDEMO_GameFiles[] = { - {"ited.rsc", GAME_RESOURCEFILE, "3a450852cbf3c80773984d565647e6ac"}, - {"scriptsd.rsc", GAME_SCRIPTFILE, "3f12b67fa93e56e1a6be39d2921d80bb"}, - {"soundsd.rsc", GAME_SOUNDFILE, "95a6c148e22e99a8c243f2978223583c"}, - {"voicesd.rsc", GAME_VOICEFILE, "e139d86bab2ee8ba3157337f894a92d4"}, - {"musicd.rsc", GAME_MUSICFILE, "d6454756517f042f01210458abe8edd4"} -}; - -static GameSoundInfo ITELINDEMO_GameMusic = { - kSoundPCM, - 11025, - 16, - true, - false, - true -}; - -// Inherit the Earth - Wyrmkeep Linux version - -static GameFileDescription ITE_LINCD_GameFiles[] = { - {"ite.rsc", GAME_RESOURCEFILE, "8f4315a9bb10ec839253108a032c8b54"}, - {"scripts.rsc", GAME_SCRIPTFILE, "a891405405edefc69c9d6c420c868b84"}, - {"sounds.rsc", GAME_SOUNDFILE, "e2ccb61c325d6d1ead3be0e731fe29fe"}, - {"voices.rsc", GAME_VOICEFILE, "41bb6b95d792dde5196bdb78740895a6"}, - {"music.rsc", GAME_MUSICFILE, "d6454756517f042f01210458abe8edd4"} -}; - -// Inherit the Earth - Wyrmkeep combined Windows/Mac/Linux version. This -// version is different from the other Wyrmkeep re-releases in that it does -// not have any substitute files. Presumably the ite.rsc file has been -// modified to include the Wyrmkeep changes. The resource files are little- -// endian, except for the voice file which is big-endian. - -static GameFileDescription ITE_MULTICD_GameFiles[] = { - {"ite.rsc", GAME_RESOURCEFILE, "a6433e34b97b15e64fe8214651012db9"}, - {"scripts.rsc", GAME_SCRIPTFILE, "a891405405edefc69c9d6c420c868b84"}, - {"sounds.rsc", GAME_SOUNDFILE, "e2ccb61c325d6d1ead3be0e731fe29fe"}, - {"inherit the earth voices", GAME_VOICEFILE | GAME_SWAPENDIAN, "c14c4c995e7a0d3828e3812a494301b7"}, - {"music.rsc", GAME_MUSICFILE, "d6454756517f042f01210458abe8edd4"} -}; - -static GameFileDescription ITE_MACCD_G_GameFiles[] = { - {"ite resources.bin", GAME_RESOURCEFILE | GAME_MACBINARY, "0bd506aa887bfc7965f695c6bd28237d"}, - {"ite scripts.bin", GAME_SCRIPTFILE | GAME_MACBINARY, "af0d7a2588e09ad3ecbc5b474ea238bf"}, - {"ite sounds.bin", GAME_SOUNDFILE | GAME_MACBINARY, "441426c6bb2a517f65c7e49b57f7a345"}, - {"ite music.bin", GAME_MUSICFILE_GM | GAME_MACBINARY, "c1d20324b7cdf1650e67061b8a93251c"}, - {"ite voices.bin", GAME_VOICEFILE | GAME_MACBINARY, "dba92ae7d57e942250fe135609708369"} -}; - -static GameSoundInfo ITEMACCD_G_GameSound = { - kSoundMacPCM, - 22050, - 8, - false, - false, - false -}; - -// Inherit the Earth - Mac Wyrmkeep version -static GameFileDescription ITE_MACCD_GameFiles[] = { - {"ite.rsc", GAME_RESOURCEFILE, "4f7fa11c5175980ed593392838523060"}, - {"scripts.rsc", GAME_SCRIPTFILE, "adf1f46c1d0589083996a7060c798ad0"}, - {"sounds.rsc", GAME_SOUNDFILE, "95863b89a0916941f6c5e1789843ba14"}, - {"inherit the earth voices", GAME_VOICEFILE, "c14c4c995e7a0d3828e3812a494301b7"}, - {"music.rsc", GAME_MUSICFILE, "1a91cd60169f367ecb6c6e058d899b2f"} -}; - -static GameSoundInfo ITEMACCD_GameSound = { - kSoundPCM, - 22050, - 16, - false, - true, - true -}; - -static GameSoundInfo ITEMACCD_GameMusic = { - kSoundPCM, - 11025, - 16, - true, - false, - true -}; - -// Inherit the Earth - Diskette version -static GameFileDescription ITE_DISK_DE_GameFiles[] = { - {"ite.rsc", GAME_RESOURCEFILE, "869fc23c8f38f575979ec67152914fee"}, - {"scripts.rsc", GAME_SCRIPTFILE, "516f7330f8410057b834424ea719d1ef"}, - {"voices.rsc", GAME_SOUNDFILE | GAME_VOICEFILE, "0c9113e630f97ef0996b8c3114badb08"} -}; - -static GameFileDescription ITE_DISK_G_GameFiles[] = { - {"ite.rsc", GAME_RESOURCEFILE, "8f4315a9bb10ec839253108a032c8b54"}, - {"scripts.rsc", GAME_SCRIPTFILE, "516f7330f8410057b834424ea719d1ef"}, - {"voices.rsc", GAME_SOUNDFILE | GAME_VOICEFILE, "c46e4392fcd2e89bc91e5567db33b62d"} -}; - -static GameFileDescription ITE_DISK_DE2_GameFiles[] = { - {"ite.rsc", GAME_RESOURCEFILE, "869fc23c8f38f575979ec67152914fee"}, - {"scripts.rsc", GAME_SCRIPTFILE, "516f7330f8410057b834424ea719d1ef"}, - {"voices.rsc", GAME_SOUNDFILE | GAME_VOICEFILE, "0c9113e630f97ef0996b8c3114badb08"}, - {"music.rsc", GAME_MUSICFILE, "d6454756517f042f01210458abe8edd4"} -}; - -static GameFileDescription ITE_DISK_G2_GameFiles[] = { - {"ite.rsc", GAME_RESOURCEFILE, "8f4315a9bb10ec839253108a032c8b54"}, - {"scripts.rsc", GAME_SCRIPTFILE, "516f7330f8410057b834424ea719d1ef"}, - {"voices.rsc", GAME_SOUNDFILE | GAME_VOICEFILE, "c46e4392fcd2e89bc91e5567db33b62d"}, - {"music.rsc", GAME_MUSICFILE, "d6454756517f042f01210458abe8edd4"} -}; - -static GameFontDescription ITEDISK_GameFonts[] = { - {2}, - {0}, - {1} -}; - -static GameSoundInfo ITEDISK_GameSound = { - kSoundVOC, - -1, - -1, - false, - false, - true -}; - -// Inherit the Earth - CD Enhanced version -static GameFileDescription ITE_WINCD_GameFiles[] = { - {"ite.rsc", GAME_RESOURCEFILE, "8f4315a9bb10ec839253108a032c8b54"}, - {"scripts.rsc", GAME_SCRIPTFILE, "a891405405edefc69c9d6c420c868b84"}, - {"sounds.rsc", GAME_SOUNDFILE, "e2ccb61c325d6d1ead3be0e731fe29fe"}, - {"voices.rsc", GAME_VOICEFILE, "41bb6b95d792dde5196bdb78740895a6"} -}; - -static GameFileDescription ITE_CD_G_GameFiles[] = { - {"ite.rsc", GAME_RESOURCEFILE, "8f4315a9bb10ec839253108a032c8b54"}, - {"scripts.rsc", GAME_SCRIPTFILE, "50a0d2d7003c926a3832d503c8534e90"}, - {"sounds.rsc", GAME_SOUNDFILE, "e2ccb61c325d6d1ead3be0e731fe29fe"}, - {"voices.rsc", GAME_VOICEFILE, "41bb6b95d792dde5196bdb78740895a6"} -}; - -// reported by mld. Bestsellergamers cover disk -static GameFileDescription ITE_CD_DE_GameFiles[] = { - {"ite.rsc", GAME_RESOURCEFILE, "869fc23c8f38f575979ec67152914fee"}, - {"scripts.rsc", GAME_SCRIPTFILE, "a891405405edefc69c9d6c420c868b84"}, - {"sounds.rsc", GAME_SOUNDFILE, "e2ccb61c325d6d1ead3be0e731fe29fe"}, - {"voices.rsc", GAME_VOICEFILE, "2fbad5d10b9b60a3415dc4aebbb11718"} -}; - -static GameFileDescription ITE_CD_GameFiles[] = { - {"ite.rsc", GAME_RESOURCEFILE, "8f4315a9bb10ec839253108a032c8b54"}, - {"scripts.rsc", GAME_SCRIPTFILE, "a891405405edefc69c9d6c420c868b84"}, - {"sounds.rsc", GAME_SOUNDFILE, "e2ccb61c325d6d1ead3be0e731fe29fe"}, - {"voices.rsc", GAME_VOICEFILE, "41bb6b95d792dde5196bdb78740895a6"} -}; - - -static GameFileDescription ITE_CD_G2_GameFiles[] = { - {"ite.rsc", GAME_RESOURCEFILE, "8f4315a9bb10ec839253108a032c8b54"}, - {"scripts.rsc", GAME_SCRIPTFILE, "50a0d2d7003c926a3832d503c8534e90"}, - {"sounds.rsc", GAME_SOUNDFILE, "e2ccb61c325d6d1ead3be0e731fe29fe"}, - {"voices.rsc", GAME_VOICEFILE, "41bb6b95d792dde5196bdb78740895a6"}, - {"music.rsc", GAME_MUSICFILE, "d6454756517f042f01210458abe8edd4"} -}; - -static GameFileDescription ITE_CD_DE2_GameFiles[] = { - {"ite.rsc", GAME_RESOURCEFILE, "869fc23c8f38f575979ec67152914fee"}, - {"scripts.rsc", GAME_SCRIPTFILE, "a891405405edefc69c9d6c420c868b84"}, - {"sounds.rsc", GAME_SOUNDFILE, "e2ccb61c325d6d1ead3be0e731fe29fe"}, - {"voices.rsc", GAME_VOICEFILE, "2fbad5d10b9b60a3415dc4aebbb11718"}, - {"music.rsc", GAME_MUSICFILE, "d6454756517f042f01210458abe8edd4"} -}; - - -static GameFontDescription ITECD_GameFonts[] = { - {2}, - {0}, - {1} -}; - -static GameSoundInfo ITECD_GameSound = { - kSoundPCM, - 22050, - 16, - false, - false, - true -}; - -static GamePatchDescription ITEWinPatch1_Files[] = { - { "cave.mid", GAME_RESOURCEFILE, 9, NULL}, - { "intro.mid", GAME_RESOURCEFILE, 10, NULL}, - { "fvillage.mid", GAME_RESOURCEFILE, 11, NULL}, - { "elkhall.mid", GAME_RESOURCEFILE, 12, NULL}, - { "mouse.mid", GAME_RESOURCEFILE, 13, NULL}, - { "darkclaw.mid", GAME_RESOURCEFILE, 14, NULL}, - { "birdchrp.mid", GAME_RESOURCEFILE, 15, NULL}, - { "orbtempl.mid", GAME_RESOURCEFILE, 16, NULL}, - { "spooky.mid", GAME_RESOURCEFILE, 17, NULL}, - { "catfest.mid", GAME_RESOURCEFILE, 18, NULL}, - { "elkfanfare.mid", GAME_RESOURCEFILE, 19, NULL}, - { "bcexpl.mid", GAME_RESOURCEFILE, 20, NULL}, - { "boargtnt.mid", GAME_RESOURCEFILE, 21, NULL}, - { "boarking.mid", GAME_RESOURCEFILE, 22, NULL}, - { "explorea.mid", GAME_RESOURCEFILE, 23, NULL}, - { "exploreb.mid", GAME_RESOURCEFILE, 24, NULL}, - { "explorec.mid", GAME_RESOURCEFILE, 25, NULL}, - { "sunstatm.mid", GAME_RESOURCEFILE, 26, NULL}, - { "nitstrlm.mid", GAME_RESOURCEFILE, 27, NULL}, - { "humruinm.mid", GAME_RESOURCEFILE, 28, NULL}, - { "damexplm.mid", GAME_RESOURCEFILE, 29, NULL}, - { "tychom.mid", GAME_RESOURCEFILE, 30, NULL}, - { "kitten.mid", GAME_RESOURCEFILE, 31, NULL}, - { "sweet.mid", GAME_RESOURCEFILE, 32, NULL}, - { "brutalmt.mid", GAME_RESOURCEFILE, 33, NULL}, - { "shiala.mid", GAME_RESOURCEFILE, 34, NULL}, - - { "wyrm.pak", GAME_RESOURCEFILE, 1529, NULL}, - { "wyrm1.dlt", GAME_RESOURCEFILE, 1530, NULL}, - { "wyrm2.dlt", GAME_RESOURCEFILE, 1531, NULL}, - { "wyrm3.dlt", GAME_RESOURCEFILE, 1532, NULL}, - { "wyrm4.dlt", GAME_RESOURCEFILE, 1533, NULL}, - { "credit3n.dlt", GAME_RESOURCEFILE, 1796, NULL}, - { "credit4n.dlt", GAME_RESOURCEFILE, 1797, NULL}, - { "p2_a.voc", GAME_VOICEFILE, 4, NULL} -}; - -static GamePatchDescription ITEWinPatch2_Files[] = { - { "cave.mid", GAME_RESOURCEFILE, 9, NULL}, - { "intro.mid", GAME_RESOURCEFILE, 10, NULL}, - { "fvillage.mid", GAME_RESOURCEFILE, 11, NULL}, - { "elkfanfare.mid", GAME_RESOURCEFILE, 19, NULL}, - { "bcexpl.mid", GAME_RESOURCEFILE, 20, NULL}, - { "boargtnt.mid", GAME_RESOURCEFILE, 21, NULL}, - { "explorea.mid", GAME_RESOURCEFILE, 23, NULL}, - { "sweet.mid", GAME_RESOURCEFILE, 32, NULL}, - - { "wyrm.pak", GAME_RESOURCEFILE, 1529, NULL}, - { "wyrm1.dlt", GAME_RESOURCEFILE, 1530, NULL}, - { "wyrm2.dlt", GAME_RESOURCEFILE, 1531, NULL}, - { "wyrm3.dlt", GAME_RESOURCEFILE, 1532, NULL}, - { "p2_a.iaf", GAME_VOICEFILE, 4, &ITECD_GameSound} -/* boarhall.bbm - elkenter.bbm - ferrets.bbm - ratdoor.bbm - sanctuar.bbm - tycho.bbm*/ -}; - -static GamePatchDescription ITEMacPatch_Files[] = { - { "wyrm.pak", GAME_RESOURCEFILE, 1529, NULL}, - { "wyrm1.dlt", GAME_RESOURCEFILE, 1530, NULL}, - { "wyrm2.dlt", GAME_RESOURCEFILE, 1531, NULL}, - { "wyrm3.dlt", GAME_RESOURCEFILE, 1532, NULL}, - { "wyrm4.dlt", GAME_RESOURCEFILE, 1533, NULL}, - { "credit3m.dlt", GAME_RESOURCEFILE, 1796, NULL}, - { "credit4m.dlt", GAME_RESOURCEFILE, 1797, NULL}, - { "p2_a.iaf", GAME_VOICEFILE, 4, &ITEMACCD_GameSound} -}; - -static GamePatchDescription ITELinPatch_Files[] = { - { "wyrm.pak", GAME_RESOURCEFILE, 1529, NULL}, - { "wyrm1.dlt", GAME_RESOURCEFILE, 1530, NULL}, - { "wyrm2.dlt", GAME_RESOURCEFILE, 1531, NULL}, - { "wyrm3.dlt", GAME_RESOURCEFILE, 1532, NULL}, - { "credit3n.dlt", GAME_RESOURCEFILE, 1796, NULL}, - { "credit4n.dlt", GAME_RESOURCEFILE, 1797, NULL}, - { "P2_A.iaf", GAME_VOICEFILE, 4, &ITECD_GameSound} -}; - -// IHNM section - -static PanelButton IHNM_MainPanelButtons[] = { - {kPanelButtonVerb, 106,12, 114,30, kVerbIHNMWalk,'w',0, 0,1,0}, - {kPanelButtonVerb, 106,44, 114,30, kVerbIHNMLookAt,'l',0, 2,3,0}, - {kPanelButtonVerb, 106,76, 114,30, kVerbIHNMTake,'k',0, 4,5,0}, - {kPanelButtonVerb, 106,108, 114,30, kVerbIHNMUse,'u',0, 6,7,0}, - {kPanelButtonVerb, 223,12, 114,30, kVerbIHNMTalkTo,'t',0, 8,9,0}, - {kPanelButtonVerb, 223,44, 114,30, kVerbIHNMSwallow,'s',0, 10,11,0}, - {kPanelButtonVerb, 223,76, 114,30, kVerbIHNMGive,'g',0, 12,13,0}, - {kPanelButtonVerb, 223,108, 114,30, kVerbIHNMPush,'p',0, 14,15,0}, - {kPanelButtonArrow, 606,22, 20,25, -1,'[',0, 0,0,0}, //TODO: arrow Sprite Numbers - {kPanelButtonArrow, 606,108, 20,25, 1,']',0, 0,0,0}, - - {kPanelButtonInventory, 357 + 64*0,18, 54,54, 0,'-',0, 0,0,0}, - {kPanelButtonInventory, 357 + 64*1,18, 54,54, 1,'-',0, 0,0,0}, - {kPanelButtonInventory, 357 + 64*2,18, 54,54, 2,'-',0, 0,0,0}, - {kPanelButtonInventory, 357 + 64*3,18, 54,54, 3,'-',0, 0,0,0}, - - {kPanelButtonInventory, 357 + 64*0,80, 54,54, 4,'-',0, 0,0,0}, - {kPanelButtonInventory, 357 + 64*1,80, 54,54, 5,'-',0, 0,0,0}, - {kPanelButtonInventory, 357 + 64*2,80, 54,54, 6,'-',0, 0,0,0}, - {kPanelButtonInventory, 357 + 64*3,80, 54,54, 7,'-',0, 0,0,0} -}; - -static PanelButton IHNM_ConversePanelButtons[] = { - {kPanelButtonConverseText, 117,18 + IHNM_CONVERSE_TEXT_HEIGHT * 0, IHNM_CONVERSE_MAX_TEXT_WIDTH,IHNM_CONVERSE_TEXT_HEIGHT, 0,'1',0, 0,0,0}, - {kPanelButtonConverseText, 52,18 + IHNM_CONVERSE_TEXT_HEIGHT * 1, IHNM_CONVERSE_MAX_TEXT_WIDTH,IHNM_CONVERSE_TEXT_HEIGHT, 1,'2',0, 0,0,0}, - {kPanelButtonConverseText, 52,18 + IHNM_CONVERSE_TEXT_HEIGHT * 2, IHNM_CONVERSE_MAX_TEXT_WIDTH,IHNM_CONVERSE_TEXT_HEIGHT, 2,'3',0, 0,0,0}, - {kPanelButtonConverseText, 52,18 + IHNM_CONVERSE_TEXT_HEIGHT * 3, IHNM_CONVERSE_MAX_TEXT_WIDTH,IHNM_CONVERSE_TEXT_HEIGHT, 3,'4',0, 0,0,0}, - //..... - {kPanelButtonArrow, 606,22, 20,25, -1,'[',0, 0,0,0}, //TODO: arrow Sprite Numbers - {kPanelButtonArrow, 606,108, 20,25, 1,']',0, 0,0,0} -}; - -static PanelButton IHNM_OptionPanelButtons[] = { - {kPanelButtonArrow, 0,0, 0,0, 0,'-',0, 0,0,0}, //TODO -}; - -static PanelButton IHNM_QuitPanelButtons[] = { - {kPanelButtonArrow, 0,0, 0,0, 0,'-',0, 0,0,0}, //TODO -}; - -static PanelButton IHNM_LoadPanelButtons[] = { - {kPanelButtonArrow, 0,0, 0,0, 0,'-',0, 0,0,0}, //TODO -}; - -static PanelButton IHNM_SavePanelButtons[] = { - {kPanelButtonArrow, 0,0, 0,0, 0,'-',0, 0,0,0}, //TODO -}; - - -static GameDisplayInfo IHNM_DisplayInfo = { //TODO: fill it all - 640, 480, // logical width&height - - 0, // scene path y offset - 304, // scene height - - 0, // status x offset - 304, // status y offset - 616, // status width - 24, // status height - 8, // status text y offset - 253, // status text color - 250, // status BG color - 616, 303, // save reminder pos - 24, 24, // save reminder w&h - 0,1, // save reminder sprite numbers - - 11, 12, // left portrait x, y offset - -1, -1, // right portrait x, y offset - - -1, -1, // inventory Up & Down button indexies - 2, 4, // inventory rows, columns - - 0, 328, // main panel offsets - ARRAYSIZE(IHNM_MainPanelButtons), - IHNM_MainPanelButtons, - - -1, -1, // converse Up & Down button indexies - - IHNM_CONVERSE_MAX_TEXT_WIDTH, - IHNM_CONVERSE_TEXT_HEIGHT, - IHNM_CONVERSE_TEXT_LINES, - 0, 328, // converse panel offsets - ARRAYSIZE(IHNM_ConversePanelButtons), - IHNM_ConversePanelButtons, - - -1, -1, // save file index - 0, // optionSaveFileVisible - 0, 0, // option panel offsets - ARRAYSIZE(IHNM_OptionPanelButtons), - IHNM_OptionPanelButtons, - - 0,0, // quit panel offsets - 0,0, // quit panel width & height - ARRAYSIZE(IHNM_QuitPanelButtons), - IHNM_QuitPanelButtons, - - 0, 0, // load panel offsets - 0, 0, // load panel width & height - ARRAYSIZE(IHNM_LoadPanelButtons), - IHNM_LoadPanelButtons, - - -1, // save edit index - 0, 0, // save panel offsets - 0, 0, // save panel width & height - ARRAYSIZE(IHNM_SavePanelButtons), - IHNM_SavePanelButtons, - - // No protection panel in IHNM - -1, // protect edit index - 0, 0, // protect panel offsets - 0, 0, // protect panel width & height - ARRAYSIZE(IHNM_SavePanelButtons), - IHNM_SavePanelButtons -}; - -static GameResourceDescription IHNM_Resources = { - RID_IHNM_SCENE_LUT, // Scene lookup table RN - RID_IHNM_SCRIPT_LUT, // Script lookup table RN - RID_IHNM_MAIN_PANEL, - RID_IHNM_CONVERSE_PANEL, - RID_IHNM_OPTION_PANEL, - RID_IHNM_MAIN_SPRITES, - RID_IHNM_MAIN_PANEL_SPRITES, - 0, - RID_IHNM_MAIN_STRINGS, - 0 -}; - -// I Have No Mouth and I Must Scream - Demo version -static GameFileDescription IHNM_DEMO_GameFiles[] = { - {"scream.res", GAME_RESOURCEFILE, "46bbdc65d164ba7e89836a0935eec8e6"}, - {"scripts.res", GAME_SCRIPTFILE, "9626bda8978094ff9b29198bc1ed5f9a"}, - {"sfx.res", GAME_SOUNDFILE, "1c610d543f32ec8b525e3f652536f269"}, - {"voicesd.res", GAME_VOICEFILE, "3bbc16a8f741dbb511da506c660a0b54"} -}; - -// I Have No Mouth and I Must Scream - Retail CD version - -static GameFileDescription IHNM_CD_GameFiles[] = { - {"musicfm.res", GAME_MUSICFILE_FM, "0439083e3dfdc51b486071d45872ae52"}, - {"musicgm.res", GAME_MUSICFILE_GM, "80f875a1fb384160d1f4b27166eef583"}, - {"scream.res", GAME_RESOURCEFILE, "46bbdc65d164ba7e89836a0935eec8e6"}, - {"patch.re_", GAME_PATCHFILE | GAME_RESOURCEFILE, "58b79e61594779513c7f2d35509fa89e"}, - {"scripts.res", GAME_SCRIPTFILE, "be38bbc5a26be809dbf39f13befebd01"}, - {"sfx.res", GAME_SOUNDFILE, "1c610d543f32ec8b525e3f652536f269"}, - {"voicess.res", GAME_VOICEFILE, "54b1f2013a075338ceb0e258d97808bd"}, //order of voice bank file is important - {"voices1.res", GAME_VOICEFILE, "fc6440b38025f4b2cc3ff55c3da5c3eb"}, - {"voices2.res", GAME_VOICEFILE, "b37f10fd1696ade7d58704ccaaebceeb"}, - {"voices3.res", GAME_VOICEFILE, "3bbc16a8f741dbb511da506c660a0b54"}, - {"voices4.res", GAME_VOICEFILE, "ebfa160122d2247a676ca39920e5d481"}, - {"voices5.res", GAME_VOICEFILE, "1f501ce4b72392bdd1d9ec38f6eec6da"}, - {"voices6.res", GAME_VOICEFILE, "f580ed7568c7d6ef34e934ba20adf834"} -}; - -static GameFileDescription IHNM_CD_ES_GameFiles[] = { - {"musicfm.res", GAME_MUSICFILE_FM, "0439083e3dfdc51b486071d45872ae52"}, - {"musicgm.res", GAME_MUSICFILE_GM, "80f875a1fb384160d1f4b27166eef583"}, - {"scream.res", GAME_RESOURCEFILE, "c92370d400e6f2a3fc411c3729d09224"}, - {"patch.re_", GAME_PATCHFILE | GAME_RESOURCEFILE, "58b79e61594779513c7f2d35509fa89e"}, - {"scripts.res", GAME_SCRIPTFILE, "be38bbc5a26be809dbf39f13befebd01"}, - {"sfx.res", GAME_SOUNDFILE, "1c610d543f32ec8b525e3f652536f269"}, - {"voicess.res", GAME_VOICEFILE, "d869de9883c8faea7f687217a9ec7057"}, //order of voice bank file is important - {"voices1.res", GAME_VOICEFILE, "dc6a34e3d1668730ea46815a92c7847f"}, - {"voices2.res", GAME_VOICEFILE, "dc6a5fa7a4cdc2ca5a6fd924e969986c"}, - {"voices3.res", GAME_VOICEFILE, "dc6a5fa7a4cdc2ca5a6fd924e969986c"}, - {"voices4.res", GAME_VOICEFILE, "0f87400b804232a58dd22e404420cc45"}, - {"voices5.res", GAME_VOICEFILE, "172668cfc5d8c305cb5b1a9b4d995fc0"}, - {"voices6.res", GAME_VOICEFILE, "96c9bda9a5f41d6bc232ed7bf6d371d9"} -}; - -static GameFileDescription IHNM_CD_RU_GameFiles[] = { - {"musicfm.res", GAME_MUSICFILE_FM, "0439083e3dfdc51b486071d45872ae52"}, - {"musicgm.res", GAME_MUSICFILE_GM, "80f875a1fb384160d1f4b27166eef583"}, - {"scream.res", GAME_RESOURCEFILE, "46bbdc65d164ba7e89836a0935eec8e6"}, - {"patch.re_", GAME_PATCHFILE | GAME_RESOURCEFILE, "58b79e61594779513c7f2d35509fa89e"}, - {"scripts.res", GAME_SCRIPTFILE, "be38bbc5a26be809dbf39f13befebd01"}, - {"sfx.res", GAME_SOUNDFILE, "1c610d543f32ec8b525e3f652536f269"}, - {"voicess.res", GAME_VOICEFILE, "9df7cd3b18ddaa16b5291b3432567036"}, //order of voice bank file is important - {"voices1.res", GAME_VOICEFILE, "d6100d2dc3b2b9f2e1ad247f613dce9b"}, - {"voices2.res", GAME_VOICEFILE, "84f6f48ecc2832841ea6417a9a379430"}, - {"voices3.res", GAME_VOICEFILE, "ebb9501283047f27a0f54e27b3c8ba1e"}, - {"voices4.res", GAME_VOICEFILE, "4c145da5fa6d1306162a7ca8ce5a4f2e"}, - {"voices5.res", GAME_VOICEFILE, "871a559644281917677eca4af1b05620"}, - {"voices6.res", GAME_VOICEFILE, "211be5c24f066d69a2f6cfa953acfba6"} -}; - -// I Have No Mouth and I Must Scream - Censored CD version (without Nimdok) - -// Reported by mld. German Retail -static GameFileDescription IHNM_CD_DE_GameFiles[] = { - {"musicfm.res", GAME_MUSICFILE_FM, "0439083e3dfdc51b486071d45872ae52"}, - {"musicgm.res", GAME_MUSICFILE_GM, "80f875a1fb384160d1f4b27166eef583"}, - {"scream.res", GAME_RESOURCEFILE, "c92370d400e6f2a3fc411c3729d09224"}, - {"scripts.res", GAME_SCRIPTFILE, "32aa01a89937520fe0ea513950117292"}, - {"patch.re_", GAME_PATCHFILE | GAME_RESOURCEFILE, "58b79e61594779513c7f2d35509fa89e"}, - {"sfx.res", GAME_SOUNDFILE, "1c610d543f32ec8b525e3f652536f269"}, - {"voicess.res", GAME_VOICEFILE, "8b09a196a52627cacb4eab13bfe0b2c3"}, //order of voice bank file is important - {"voices1.res", GAME_VOICEFILE, "424971e1e2373187c3f5734fe36071a2"}, - {"voices2.res", GAME_VOICEFILE, "c270e0980782af43641a86e4a14e2a32"}, - {"voices3.res", GAME_VOICEFILE, "49e42befea883fd101ec3d0f5d0647b9"}, - {"voices5.res", GAME_VOICEFILE, "c477443c52a0aa56e686ebd8d051e4ab"}, - {"voices6.res", GAME_VOICEFILE, "2b9aea838f74b4eecfb29a8f205a2bd4"} -}; - -static GameFileDescription IHNM_CD_FR_GameFiles[] = { - {"musicfm.res", GAME_MUSICFILE_FM, "0439083e3dfdc51b486071d45872ae52"}, - {"musicgm.res", GAME_MUSICFILE_GM, "80f875a1fb384160d1f4b27166eef583"}, - {"scream.res", GAME_RESOURCEFILE, "c92370d400e6f2a3fc411c3729d09224"}, - {"scripts.res", GAME_SCRIPTFILE, "32aa01a89937520fe0ea513950117292"}, - {"patch.re_", GAME_PATCHFILE | GAME_RESOURCEFILE, "58b79e61594779513c7f2d35509fa89e"}, - {"sfx.res", GAME_SOUNDFILE, "1c610d543f32ec8b525e3f652536f269"}, - {"voicess.res", GAME_VOICEFILE, "b8642e943bbebf89cef2f48b31cb4305"}, //order of voice bank file is important - {"voices1.res", GAME_VOICEFILE, "424971e1e2373187c3f5734fe36071a2"}, - {"voices2.res", GAME_VOICEFILE, "c2d93a35d2c2def9c3d6d242576c794b"}, - {"voices3.res", GAME_VOICEFILE, "49e42befea883fd101ec3d0f5d0647b9"}, - {"voices5.res", GAME_VOICEFILE, "f4c415de7c03de86b73f9a12b8bd632f"}, - {"voices6.res", GAME_VOICEFILE, "3fc5358a5d8eee43bdfab2740276572e"} -}; - -static GameFontDescription IHNMDEMO_GameFonts[] = { - {2}, - {3}, - {4} -}; - -static GameFontDescription IHNMCD_GameFonts[] = { - {2}, - {3}, - {4}, - {5}, - {6}, // kIHNMFont8 - {7}, - {8} // kIHNMMainFont -}; - -static GameSoundInfo IHNM_GameSound = { - kSoundWAV, - -1, - -1, - false, - false, - true -}; - -#define FILE_MD5_BYTES 5000 - -static GameDescription gameDescriptions[] = { - // Inherit the earth - DOS Demo version - // sound unchecked - { - "ite", - GType_ITE, - GID_ITE_DEMO_G, // Game id - "Demo", // Game title - &ITE_DisplayInfo, - ITE_DEFAULT_SCENE, // Starting scene number - &ITEDemo_Resources, - ARRAYSIZE(ITE_DEMO_G_GameFiles), // Game datafiles - ITE_DEMO_G_GameFiles, - ARRAYSIZE(ITEDEMO_GameFonts), - ITEDEMO_GameFonts, - &ITEDEMO_GameSound, - &ITEDEMO_GameSound, - NULL, - 0, - NULL, - 0, // features - Common::EN_ANY, - Common::kPlatformPC, - }, - - // Inherit the earth - MAC Demo version - { - "ite", - GType_ITE, - GID_ITE_MACDEMO2, - "Demo", - &ITE_DisplayInfo, - ITE_DEFAULT_SCENE, - &ITE_Resources, - ARRAYSIZE(ITE_MACDEMO2_GameFiles), - ITE_MACDEMO2_GameFiles, - ARRAYSIZE(ITEWINDEMO_GameFonts), - ITEWINDEMO_GameFonts, - &ITEMACDEMO_GameVoice, - &ITEMACDEMO_GameSound, - &ITEMACDEMO_GameMusic, - ARRAYSIZE(ITEMacPatch_Files), - ITEMacPatch_Files, - GF_BIG_ENDIAN_DATA | GF_WYRMKEEP | GF_CD_FX | GF_SCENE_SUBSTITUTES, - Common::EN_ANY, - Common::kPlatformMacintosh, - }, - - // Inherit the earth - early MAC Demo version - { - "ite", - GType_ITE, - GID_ITE_MACDEMO1, - "early Demo", - &ITE_DisplayInfo, - ITE_DEFAULT_SCENE, - &ITE_Resources, - ARRAYSIZE(ITE_MACDEMO1_GameFiles), - ITE_MACDEMO1_GameFiles, - ARRAYSIZE(ITEWINDEMO_GameFonts), - ITEWINDEMO_GameFonts, - &ITEMACDEMO_GameVoice, - &ITEMACDEMO_GameSound, - &ITEMACCD_GameMusic, - ARRAYSIZE(ITEMacPatch_Files), - ITEMacPatch_Files, - GF_BIG_ENDIAN_DATA | GF_WYRMKEEP | GF_CD_FX, - Common::EN_ANY, - Common::kPlatformMacintosh, - }, - - // Inherit the earth - MAC CD Guild version - { - "ite", - GType_ITE, - GID_ITE_MACCD_G, - "CD", - &ITE_DisplayInfo, - ITE_DEFAULT_SCENE, - &ITE_Resources, - ARRAYSIZE(ITE_MACCD_G_GameFiles), - ITE_MACCD_G_GameFiles, - ARRAYSIZE(ITEWINDEMO_GameFonts), - ITEWINDEMO_GameFonts, - &ITEMACCD_G_GameSound, - &ITEMACCD_G_GameSound, - NULL, - 0, - NULL, - GF_BIG_ENDIAN_DATA | GF_CD_FX, - Common::EN_ANY, - Common::kPlatformMacintosh, - }, - - // Inherit the earth - MAC CD Wyrmkeep version - { - "ite", - GType_ITE, - GID_ITE_MACCD, - "Wyrmkeep CD", - &ITE_DisplayInfo, - ITE_DEFAULT_SCENE, - &ITE_Resources, - ARRAYSIZE(ITE_MACCD_GameFiles), - ITE_MACCD_GameFiles, - ARRAYSIZE(ITEWINDEMO_GameFonts), - ITEWINDEMO_GameFonts, - &ITEMACCD_GameSound, - &ITEMACCD_GameSound, - &ITEMACCD_GameMusic, - ARRAYSIZE(ITEMacPatch_Files), - ITEMacPatch_Files, - GF_BIG_ENDIAN_DATA | GF_WYRMKEEP | GF_CD_FX, - Common::EN_ANY, - Common::kPlatformMacintosh, - }, - - // Inherit the earth - Linux Demo version - // Note: it should be before GID_ITE_WINDEMO2 version - { - "ite", - GType_ITE, - GID_ITE_LINDEMO, - "Demo", - &ITE_DisplayInfo, - ITE_DEFAULT_SCENE, - &ITE_Resources, - ARRAYSIZE(ITE_LINDEMO_GameFiles), - ITE_LINDEMO_GameFiles, - ARRAYSIZE(ITEWINDEMO_GameFonts), - ITEWINDEMO_GameFonts, - &ITEWINDEMO2_GameVoice, - &ITEWINDEMO2_GameSound, - &ITELINDEMO_GameMusic, - ARRAYSIZE(ITELinPatch_Files), - ITELinPatch_Files, - GF_WYRMKEEP | GF_CD_FX | GF_SCENE_SUBSTITUTES, - Common::EN_ANY, - Common::kPlatformLinux, - }, - - // Inherit the earth - Win32 Demo version - { - "ite", - GType_ITE, - GID_ITE_WINDEMO2, - "Demo", - &ITE_DisplayInfo, - ITE_DEFAULT_SCENE, - &ITE_Resources, - ARRAYSIZE(ITE_WINDEMO2_GameFiles), - ITE_WINDEMO2_GameFiles, - ARRAYSIZE(ITEWINDEMO_GameFonts), - ITEWINDEMO_GameFonts, - &ITEWINDEMO2_GameVoice, - &ITEWINDEMO2_GameSound, - NULL, - ARRAYSIZE(ITEWinPatch2_Files), - ITEWinPatch2_Files, - GF_WYRMKEEP | GF_CD_FX | GF_SCENE_SUBSTITUTES, - Common::EN_ANY, - Common::kPlatformWindows, - }, - - // Inherit the earth - early Win32 Demo version - { - "ite", - GType_ITE, - GID_ITE_WINDEMO1, - "early Demo", - &ITE_DisplayInfo, - ITE_DEFAULT_SCENE, - &ITE_Resources, - ARRAYSIZE(ITE_WINDEMO1_GameFiles), - ITE_WINDEMO1_GameFiles, - ARRAYSIZE(ITEWINDEMO_GameFonts), - ITEWINDEMO_GameFonts, - &ITEWINDEMO1_GameSound, - &ITEWINDEMO1_GameSound, - NULL, - ARRAYSIZE(ITEWinPatch1_Files), - ITEWinPatch1_Files, - GF_WYRMKEEP | GF_CD_FX, - Common::EN_ANY, - Common::kPlatformWindows, - }, - - // Inherit the earth - Wyrmkeep combined Windows/Mac/Linux CD - { - "ite", - GType_ITE, - GID_ITE_MULTICD, - "Multi-OS CD Version", - &ITE_DisplayInfo, - ITE_DEFAULT_SCENE, - &ITE_Resources, - ARRAYSIZE(ITE_MULTICD_GameFiles), - ITE_MULTICD_GameFiles, - ARRAYSIZE(ITECD_GameFonts), - ITECD_GameFonts, - &ITEMACCD_GameSound, - &ITECD_GameSound, - &ITEMACCD_GameMusic, - 0, - NULL, - GF_WYRMKEEP | GF_CD_FX, - Common::EN_ANY, - Common::kPlatformUnknown, - }, - - // Inherit the earth - Wyrmkeep Linux CD version - { - "ite", - GType_ITE, - GID_ITE_LINCD, - "CD Version", - &ITE_DisplayInfo, - ITE_DEFAULT_SCENE, - &ITE_Resources, - ARRAYSIZE(ITE_LINCD_GameFiles), - ITE_LINCD_GameFiles, - ARRAYSIZE(ITECD_GameFonts), - ITECD_GameFonts, - &ITECD_GameSound, - &ITECD_GameSound, - &ITEMACCD_GameMusic, - ARRAYSIZE(ITELinPatch_Files), - ITELinPatch_Files, - GF_WYRMKEEP | GF_CD_FX, - Common::EN_ANY, - Common::kPlatformLinux, - }, - - // Inherit the earth - Wyrmkeep Windows CD version - { - "ite", - GType_ITE, - GID_ITE_WINCD, - "CD Version", - &ITE_DisplayInfo, - ITE_DEFAULT_SCENE, - &ITE_Resources, - ARRAYSIZE(ITE_WINCD_GameFiles), - ITE_WINCD_GameFiles, - ARRAYSIZE(ITECD_GameFonts), - ITECD_GameFonts, - &ITECD_GameSound, - &ITECD_GameSound, - NULL, - ARRAYSIZE(ITEWinPatch1_Files), - ITEWinPatch1_Files, - GF_WYRMKEEP | GF_CD_FX, - Common::EN_ANY, - Common::kPlatformWindows, - }, - - // Inherit the earth - DOS CD version - { - "ite", - GType_ITE, - GID_ITE_CD_G, - "CD Version", - &ITE_DisplayInfo, - ITE_DEFAULT_SCENE, - &ITE_Resources, - ARRAYSIZE(ITE_CD_G_GameFiles), - ITE_CD_G_GameFiles, - ARRAYSIZE(ITECD_GameFonts), - ITECD_GameFonts, - &ITECD_GameSound, - &ITECD_GameSound, - NULL, - 0, - NULL, - GF_CD_FX, - Common::EN_ANY, - Common::kPlatformPC, - }, - - // Inherit the earth - DOS CD version with digital music - { - "ite", - GType_ITE, - GID_ITE_CD_G2, - "CD Version", - &ITE_DisplayInfo, - ITE_DEFAULT_SCENE, - &ITE_Resources, - ARRAYSIZE(ITE_CD_G2_GameFiles), - ITE_CD_G2_GameFiles, - ARRAYSIZE(ITECD_GameFonts), - ITECD_GameFonts, - &ITECD_GameSound, - &ITECD_GameSound, - &ITEMACCD_GameMusic, - 0, - NULL, - GF_CD_FX, - Common::EN_ANY, - Common::kPlatformPC, - }, - - // Inherit the earth - DOS CD German version - { - "ite", - GType_ITE, - GID_ITE_CD_DE, - "CD Version", - &ITE_DisplayInfo, - ITE_DEFAULT_SCENE, - &ITE_Resources, - ARRAYSIZE(ITE_CD_DE_GameFiles), - ITE_CD_DE_GameFiles, - ARRAYSIZE(ITECD_GameFonts), - ITECD_GameFonts, - &ITECD_GameSound, - &ITECD_GameSound, - NULL, - 0, - NULL, - GF_CD_FX, - Common::DE_DEU, - Common::kPlatformPC, - }, - - // Inherit the earth - DOS CD German version with digital music - { - "ite", - GType_ITE, - GID_ITE_CD_DE2, - "CD Version", - &ITE_DisplayInfo, - ITE_DEFAULT_SCENE, - &ITE_Resources, - ARRAYSIZE(ITE_CD_DE2_GameFiles), - ITE_CD_DE2_GameFiles, - ARRAYSIZE(ITECD_GameFonts), - ITECD_GameFonts, - &ITECD_GameSound, - &ITECD_GameSound, - &ITEMACCD_GameMusic, - 0, - NULL, - GF_CD_FX, - Common::DE_DEU, - Common::kPlatformPC, - }, - - // Inherit the earth - CD version - { - "ite", - GType_ITE, - GID_ITE_CD, - "CD Version", - &ITE_DisplayInfo, - ITE_DEFAULT_SCENE, - &ITE_Resources, - ARRAYSIZE(ITE_CD_GameFiles), - ITE_CD_GameFiles, - ARRAYSIZE(ITECD_GameFonts), - ITECD_GameFonts, - &ITECD_GameSound, - &ITECD_GameSound, - NULL, - 0, - NULL, - GF_CD_FX, - Common::EN_ANY, - Common::kPlatformPC, - }, - - // Inherit the earth - German Floppy version - { - "ite", - GType_ITE, - GID_ITE_DISK_DE, - "Floppy", - &ITE_DisplayInfo, - ITE_DEFAULT_SCENE, - &ITE_Resources, - ARRAYSIZE(ITE_DISK_DE_GameFiles), - ITE_DISK_DE_GameFiles, - ARRAYSIZE(ITEDISK_GameFonts), - ITEDISK_GameFonts, - &ITEDISK_GameSound, - &ITEDISK_GameSound, - NULL, - 0, - NULL, - 0, - Common::DE_DEU, - Common::kPlatformPC, - }, - - // Inherit the earth - German Floppy version with digital music - { - "ite", - GType_ITE, - GID_ITE_DISK_DE2, - "Floppy", - &ITE_DisplayInfo, - ITE_DEFAULT_SCENE, - &ITE_Resources, - ARRAYSIZE(ITE_DISK_DE2_GameFiles), - ITE_DISK_DE2_GameFiles, - ARRAYSIZE(ITEDISK_GameFonts), - ITEDISK_GameFonts, - &ITEDISK_GameSound, - &ITEDISK_GameSound, - &ITEMACCD_GameMusic, - 0, - NULL, - 0, - Common::DE_DEU, - Common::kPlatformPC, - }, - - // Inherit the earth - Disk version - { - "ite", - GType_ITE, - GID_ITE_DISK_G, - "Floppy", - &ITE_DisplayInfo, - ITE_DEFAULT_SCENE, - &ITE_Resources, - ARRAYSIZE(ITE_DISK_G_GameFiles), - ITE_DISK_G_GameFiles, - ARRAYSIZE(ITEDISK_GameFonts), - ITEDISK_GameFonts, - &ITEDISK_GameSound, - &ITEDISK_GameSound, - NULL, - 0, - NULL, - 0, - Common::EN_ANY, - Common::kPlatformPC, - }, - - // Inherit the earth - Disk version with digital music - { - "ite", - GType_ITE, - GID_ITE_DISK_G2, - "Floppy", - &ITE_DisplayInfo, - ITE_DEFAULT_SCENE, - &ITE_Resources, - ARRAYSIZE(ITE_DISK_G2_GameFiles), - ITE_DISK_G2_GameFiles, - ARRAYSIZE(ITEDISK_GameFonts), - ITEDISK_GameFonts, - &ITEDISK_GameSound, - &ITEDISK_GameSound, - &ITEMACCD_GameMusic, - 0, - NULL, - 0, - Common::EN_ANY, - Common::kPlatformPC, - }, - - // I Have No Mouth And I Must Scream - Demo version - { - "ihnm", - GType_IHNM, - GID_IHNM_DEMO, - "Demo", - &IHNM_DisplayInfo, - 0, - &IHNM_Resources, - ARRAYSIZE(IHNM_DEMO_GameFiles), - IHNM_DEMO_GameFiles, - ARRAYSIZE(IHNMDEMO_GameFonts), - IHNMDEMO_GameFonts, - &IHNM_GameSound, - &IHNM_GameSound, - NULL, - 0, - NULL, - 0, - Common::EN_ANY, - Common::kPlatformPC, - }, - - // I Have No Mouth And I Must Scream - CD version - { - "ihnm", - GType_IHNM, - GID_IHNM_CD, - "", - &IHNM_DisplayInfo, - IHNM_DEFAULT_SCENE, - &IHNM_Resources, - ARRAYSIZE(IHNM_CD_GameFiles), - IHNM_CD_GameFiles, - ARRAYSIZE(IHNMCD_GameFonts), - IHNMCD_GameFonts, - &IHNM_GameSound, - &IHNM_GameSound, - NULL, - 0, - NULL, - 0, - Common::EN_ANY, - Common::kPlatformPC, - }, - - // I Have No Mouth And I Must Scream - De CD version - { - "ihnm", - GType_IHNM, - GID_IHNM_CD_DE, - "", - &IHNM_DisplayInfo, - IHNM_DEFAULT_SCENE, - &IHNM_Resources, - ARRAYSIZE(IHNM_CD_DE_GameFiles), - IHNM_CD_DE_GameFiles, - ARRAYSIZE(IHNMCD_GameFonts), - IHNMCD_GameFonts, - &IHNM_GameSound, - &IHNM_GameSound, - NULL, - 0, - NULL, - 0, - Common::DE_DEU, - Common::kPlatformPC, - }, - // I Have No Mouth And I Must Scream - Sp CD version - { - "ihnm", - GType_IHNM, - GID_IHNM_CD_ES, - "", - &IHNM_DisplayInfo, - IHNM_DEFAULT_SCENE, - &IHNM_Resources, - ARRAYSIZE(IHNM_CD_ES_GameFiles), - IHNM_CD_ES_GameFiles, - ARRAYSIZE(IHNMCD_GameFonts), - IHNMCD_GameFonts, - &IHNM_GameSound, - &IHNM_GameSound, - NULL, - 0, - NULL, - 0, - Common::ES_ESP, - Common::kPlatformPC, - }, - // I Have No Mouth And I Must Scream - Ru CD version - { - "ihnm", - GType_IHNM, - GID_IHNM_CD_RU, - "", - &IHNM_DisplayInfo, - IHNM_DEFAULT_SCENE, - &IHNM_Resources, - ARRAYSIZE(IHNM_CD_RU_GameFiles), - IHNM_CD_RU_GameFiles, - ARRAYSIZE(IHNMCD_GameFonts), - IHNMCD_GameFonts, - &IHNM_GameSound, - &IHNM_GameSound, - NULL, - 0, - NULL, - 0, - Common::RU_RUS, - Common::kPlatformPC, - }, - // I Have No Mouth And I Must Scream - Fr CD version - { - "ihnm", - GType_IHNM, - GID_IHNM_CD_FR, - "", - &IHNM_DisplayInfo, - IHNM_DEFAULT_SCENE, - &IHNM_Resources, - ARRAYSIZE(IHNM_CD_FR_GameFiles), - IHNM_CD_FR_GameFiles, - ARRAYSIZE(IHNMCD_GameFonts), - IHNMCD_GameFonts, - &IHNM_GameSound, - &IHNM_GameSound, - NULL, - 0, - NULL, - 0, - Common::FR_FRA, - Common::kPlatformPC, - }, -}; +#include "sagagame.cpp" DetectedGame toDetectedGame(const GameDescription &g) { const char *title; diff --git a/engines/saga/gfx.cpp b/engines/saga/gfx.cpp index 940eb01927..b70b8c95f0 100644 --- a/engines/saga/gfx.cpp +++ b/engines/saga/gfx.cpp @@ -27,7 +27,7 @@ #include "saga/saga.h" #include "saga/gfx.h" #include "saga/interface.h" -#include "saga/resnames.h" +#include "saga/sagaresnames.h" #include "saga/rscfile.h" #include "saga/scene.h" #include "saga/stream.h" diff --git a/engines/saga/interface.cpp b/engines/saga/interface.cpp index e1d01507e0..3fa81514d4 100644 --- a/engines/saga/interface.cpp +++ b/engines/saga/interface.cpp @@ -41,7 +41,7 @@ #include "saga/sound.h" #include "saga/sprite.h" #include "saga/rscfile.h" -#include "saga/resnames.h" +#include "saga/sagaresnames.h" #include "saga/interface.h" diff --git a/engines/saga/isomap.cpp b/engines/saga/isomap.cpp index 6acbf8ba70..0f728c4ee7 100644 --- a/engines/saga/isomap.cpp +++ b/engines/saga/isomap.cpp @@ -27,7 +27,7 @@ #include "saga/gfx.h" -#include "saga/resnames.h" +#include "saga/sagaresnames.h" #include "saga/scene.h" #include "saga/isomap.h" #include "saga/stream.h" diff --git a/engines/saga/ite_introproc.cpp b/engines/saga/ite_introproc.cpp index 759fe7326e..d32aa359de 100644 --- a/engines/saga/ite_introproc.cpp +++ b/engines/saga/ite_introproc.cpp @@ -36,7 +36,7 @@ #include "saga/music.h" #include "saga/scene.h" -#include "saga/resnames.h" +#include "saga/sagaresnames.h" #include "saga/rscfile.h" namespace Saga { diff --git a/engines/saga/itedata.cpp b/engines/saga/itedata.cpp index 3329ab1bbd..603efac46f 100644 --- a/engines/saga/itedata.cpp +++ b/engines/saga/itedata.cpp @@ -25,7 +25,7 @@ // Actor and Object data tables #include "saga/saga.h" #include "saga/itedata.h" -#include "saga/resnames.h" +#include "saga/sagaresnames.h" #include "saga/sndres.h" namespace Saga { diff --git a/engines/saga/music.cpp b/engines/saga/music.cpp index 453ef05d4c..bacf726626 100644 --- a/engines/saga/music.cpp +++ b/engines/saga/music.cpp @@ -24,7 +24,7 @@ #include "saga/saga.h" #include "saga/rscfile.h" -#include "saga/resnames.h" +#include "saga/sagaresnames.h" #include "saga/music.h" #include "saga/stream.h" #include "sound/audiostream.h" diff --git a/engines/saga/puzzle.cpp b/engines/saga/puzzle.cpp index c09a9c0462..f2d923bead 100644 --- a/engines/saga/puzzle.cpp +++ b/engines/saga/puzzle.cpp @@ -28,7 +28,7 @@ #include "saga/sprite.h" #include "saga/puzzle.h" #include "saga/render.h" -#include "saga/resnames.h" +#include "saga/sagaresnames.h" #include "common/system.h" #include "common/timer.h" diff --git a/engines/saga/saga.cpp b/engines/saga/saga.cpp index 322b013a68..2bb81e3841 100644 --- a/engines/saga/saga.cpp +++ b/engines/saga/saga.cpp @@ -51,7 +51,7 @@ #include "saga/music.h" #include "saga/palanim.h" #include "saga/objectmap.h" -#include "saga/resnames.h" +#include "saga/sagaresnames.h" namespace Saga { diff --git a/engines/saga/saga.h b/engines/saga/saga.h index f4d542ce0f..3c91f0d88d 100644 --- a/engines/saga/saga.h +++ b/engines/saga/saga.h @@ -83,10 +83,8 @@ enum ERRORCODE { SUCCESS = 0 }; -enum SAGAGameType { - GType_ITE = 0, - GType_IHNM = 1 -}; +#include "sagagame.h" + enum GameObjectTypes { kGameObjectNone = 0, @@ -138,89 +136,6 @@ enum HitZoneFlags { kHitZoneProject = (1 << 3) }; - -enum PanelButtonType { - kPanelButtonVerb = 1 << 0, - kPanelButtonArrow = 1 << 1, - kPanelButtonConverseText = 1 << 2, - kPanelButtonInventory = 1 << 3, - - kPanelButtonOption = 1 << 4, - kPanelButtonOptionSlider = 1 << 5, - kPanelButtonOptionSaveFiles = 1 << 6, - kPanelButtonOptionText = 1 << 7, - - kPanelButtonQuit = 1 << 8, - kPanelButtonQuitText = 1 << 9, - - kPanelButtonLoad = 1 << 10, - kPanelButtonLoadText = 1 << 11, - - kPanelButtonSave = 1 << 12, - kPanelButtonSaveText = 1 << 13, - kPanelButtonSaveEdit = 1 << 14, - - kPanelButtonProtectText = 1 << 15, - kPanelButtonProtectEdit = 1 << 16, - - kPanelAllButtons = 0xFFFFF -}; - -enum TextStringIds { - kTextWalkTo, - kTextLookAt, - kTextPickUp, - kTextTalkTo, - kTextOpen, - kTextClose, - kTextUse, - kTextGive, - kTextOptions, - kTextTest, - kTextDemo, - kTextHelp, - kTextQuitGame, - kTextFast, - kTextSlow, - kTextOn, - kTextOff, - kTextContinuePlaying, - kTextLoad, - kTextSave, - kTextGameOptions, - kTextReadingSpeed, - kTextMusic, - kTextSound, - kTextCancel, - kTextQuit, - kTextOK, - kTextMid, - kTextClick, - kText10Percent, - kText20Percent, - kText30Percent, - kText40Percent, - kText50Percent, - kText60Percent, - kText70Percent, - kText80Percent, - kText90Percent, - kTextMax, - kTextQuitTheGameQuestion, - kTextLoadSuccessful, - kTextEnterSaveGameName, - kTextGiveTo, - kTextUseWidth, - kTextNewSave, - kTextICantPickup, - kTextNothingSpecial, - kTextNoPlaceToOpen, - kTextNoOpening, - kTextDontKnow, - kTextShowDialog, - kTextEnterProtectAnswer -}; - struct ImageHeader { int width; int height; @@ -252,74 +167,7 @@ struct StringsTable { } }; -enum GameIds { - // Dreamers Guild - GID_ITE_DEMO_G = 0, - GID_ITE_DISK_G, - GID_ITE_DISK_G2, - GID_ITE_CD_G, - GID_ITE_CD_G2, - GID_ITE_MACCD_G, - - // Wyrmkeep - GID_ITE_CD, // data for Win rerelease is same as in old DOS - GID_ITE_WINCD, // but it has a bunch of patch files - GID_ITE_MACCD, - GID_ITE_LINCD, - GID_ITE_MULTICD, // Wyrmkeep combined Windows/Mac/Linux version - GID_ITE_WINDEMO1, // older Wyrmkeep windows demo - GID_ITE_MACDEMO1, // older Wyrmkeep mac demo - GID_ITE_LINDEMO, - GID_ITE_WINDEMO2, - GID_ITE_MACDEMO2, - - // German - GID_ITE_DISK_DE, - GID_ITE_DISK_DE2, - GID_ITE_AMIGACD_DE, // TODO - GID_ITE_OLDMAC_DE, // TODO - GID_ITE_AMIGA_FL_DE,// TODO - GID_ITE_CD_DE, // reported by mld. Bestsellergamers cover disk - GID_ITE_CD_DE2, - GID_ITE_AMIGA_AGA_DEMO, // TODO - GID_ITE_AMIGA_ECS_DEMO, // TODO - - GID_IHNM_DEMO, - GID_IHNM_CD, - GID_IHNM_CD_DE, // reported by mld. German retail - GID_IHNM_CD_ES, - GID_IHNM_CD_RU, - GID_IHNM_CD_FR -}; -enum GameFileTypes { - GAME_RESOURCEFILE = 1 << 0, - GAME_SCRIPTFILE = 1 << 1, - GAME_SOUNDFILE = 1 << 2, - GAME_VOICEFILE = 1 << 3, - GAME_DEMOFILE = 1 << 4, - GAME_MUSICFILE = 1 << 5, - GAME_MUSICFILE_GM = 1 << 6, - GAME_MUSICFILE_FM = 1 << 7, - GAME_PATCHFILE = 1 << 8, - GAME_MACBINARY = 1 << 9, - GAME_SWAPENDIAN = 1 << 10 -}; - -enum GameSoundTypes { - kSoundPCM = 0, - kSoundVOX = 1, - kSoundVOC = 2, - kSoundWAV = 3, - kSoundMacPCM = 4 -}; - -enum GameFeatures { - GF_BIG_ENDIAN_DATA = 1 << 0, - GF_WYRMKEEP = 1 << 1, - GF_CD_FX = 1 << 2, - GF_SCENE_SUBSTITUTES = 1 << 3 -}; enum ColorId { kITEColorTransBlack = 0x00, @@ -354,170 +202,6 @@ enum KnownColor { kKnownColorVerbTextActive }; -struct GameSoundInfo { - GameSoundTypes resourceType; - long frequency; - int sampleBits; - bool stereo; - bool isBigEndian; - bool isSigned; -}; - -struct GameFontDescription { - uint32 fontResourceId; -}; - -struct GameResourceDescription { - uint32 sceneLUTResourceId; - uint32 moduleLUTResourceId; - uint32 mainPanelResourceId; - uint32 conversePanelResourceId; - uint32 optionPanelResourceId; - uint32 mainSpritesResourceId; - uint32 mainPanelSpritesResourceId; - uint32 defaultPortraitsResourceId; - uint32 mainStringsResourceId; - uint32 actorsStringsResourceId; -}; - -struct GameFileDescription { - const char *fileName; - uint16 fileType; - const char *md5; -}; - -struct GamePatchDescription { - const char *fileName; - uint16 fileType; - uint32 resourceId; - GameSoundInfo *soundInfo; -}; - -struct PanelButton { - PanelButtonType type; - int xOffset; - int yOffset; - int width; - int height; - int id; - uint16 ascii; - int state; - int upSpriteNumber; - int downSpriteNumber; - int overSpriteNumber; -}; - -struct GameDisplayInfo { - int logicalWidth; - int logicalHeight; - - int pathStartY; - int sceneHeight; - - int statusXOffset; - int statusYOffset; - int statusWidth; - int statusHeight; - int statusTextY; - int statusTextColor; - int statusBGColor; - - int saveReminderXOffset; - int saveReminderYOffset; - int saveReminderWidth; - int saveReminderHeight; - int saveReminderFirstSpriteNumber; - int saveReminderSecondSpriteNumber; - - int leftPortraitXOffset; - int leftPortraitYOffset; - int rightPortraitXOffset; - int rightPortraitYOffset; - - int inventoryUpButtonIndex; - int inventoryDownButtonIndex; - int inventoryRows; - int inventoryColumns; - - int mainPanelXOffset; - int mainPanelYOffset; - int mainPanelButtonsCount; - PanelButton *mainPanelButtons; - - int converseMaxTextWidth; - int converseTextHeight; - int converseTextLines; - int converseUpButtonIndex; - int converseDownButtonIndex; - - int conversePanelXOffset; - int conversePanelYOffset; - int conversePanelButtonsCount; - PanelButton *conversePanelButtons; - - int optionSaveFilePanelIndex; - int optionSaveFileSliderIndex; - uint optionSaveFileVisible; - - int optionPanelXOffset; - int optionPanelYOffset; - int optionPanelButtonsCount; - PanelButton *optionPanelButtons; - - int quitPanelXOffset; - int quitPanelYOffset; - int quitPanelWidth; - int quitPanelHeight; - int quitPanelButtonsCount; - PanelButton *quitPanelButtons; - - int loadPanelXOffset; - int loadPanelYOffset; - int loadPanelWidth; - int loadPanelHeight; - int loadPanelButtonsCount; - PanelButton *loadPanelButtons; - - int saveEditIndex; - int savePanelXOffset; - int savePanelYOffset; - int savePanelWidth; - int savePanelHeight; - int savePanelButtonsCount; - PanelButton *savePanelButtons; - - int protectEditIndex; - int protectPanelXOffset; - int protectPanelYOffset; - int protectPanelWidth; - int protectPanelHeight; - int protectPanelButtonsCount; - PanelButton *protectPanelButtons; -}; - - -struct GameDescription { - const char *name; - SAGAGameType gameType; - GameIds gameId; - const char *extra; - GameDisplayInfo *gameDisplayInfo; - int startSceneNumber; - GameResourceDescription *resourceDescription; - int filesCount; - GameFileDescription *filesDescriptions; - int fontsCount; - GameFontDescription *fontDescriptions; - GameSoundInfo *voiceInfo; - GameSoundInfo *sfxInfo; - GameSoundInfo *musicInfo; - int patchesCount; - GamePatchDescription *patchDescriptions; - uint32 features; - Common::Language language; - Common::Platform platform; -}; - struct SaveFileData { char name[SAVE_TITLE_SIZE]; uint slotNumber; diff --git a/engines/saga/sagagame.cpp b/engines/saga/sagagame.cpp new file mode 100644 index 0000000000..9ec55ed09a --- /dev/null +++ b/engines/saga/sagagame.cpp @@ -0,0 +1,1414 @@ +#define ITE_CONVERSE_MAX_TEXT_WIDTH (256 - 60) +#define ITE_CONVERSE_TEXT_HEIGHT 10 +#define ITE_CONVERSE_TEXT_LINES 4 + +//TODO: ihnm +#define IHNM_CONVERSE_MAX_TEXT_WIDTH (256 - 60) +#define IHNM_CONVERSE_TEXT_HEIGHT 10 +#define IHNM_CONVERSE_TEXT_LINES 10 + +// ITE section +static PanelButton ITE_MainPanelButtons[] = { + {kPanelButtonVerb, 52,4, 57,10, kVerbITEWalkTo,'w',0, 0,1,0}, + {kPanelButtonVerb, 52,15, 57,10, kVerbITELookAt,'l',0, 2,3,0}, + {kPanelButtonVerb, 52,26, 57,10, kVerbITEPickUp,'p',0, 4,5,0}, + {kPanelButtonVerb, 52,37, 57,10, kVerbITETalkTo,'t',0, 0,1,0}, + {kPanelButtonVerb, 110,4, 56,10, kVerbITEOpen,'o',0, 6,7,0}, + {kPanelButtonVerb, 110,15, 56,10, kVerbITEClose,'c',0, 8,9,0}, + {kPanelButtonVerb, 110,26, 56,10, kVerbITEUse,'u',0, 10,11,0}, + {kPanelButtonVerb, 110,37, 56,10, kVerbITEGive,'g',0, 12,13,0}, + {kPanelButtonArrow, 306,6, 8,5, -1,'U',0, 0,4,2}, + {kPanelButtonArrow, 306,41, 8,5, 1,'D',0, 1,5,3}, + + {kPanelButtonInventory, 181 + 32*0,6, 27,18, 0,'-',0, 0,0,0}, + {kPanelButtonInventory, 181 + 32*1,6, 27,18, 1,'-',0, 0,0,0}, + {kPanelButtonInventory, 181 + 32*2,6, 27,18, 2,'-',0, 0,0,0}, + {kPanelButtonInventory, 181 + 32*3,6, 27,18, 3,'-',0, 0,0,0}, + + {kPanelButtonInventory, 181 + 32*0,27, 27,18, 4,'-',0, 0,0,0}, + {kPanelButtonInventory, 181 + 32*1,27, 27,18, 5,'-',0, 0,0,0}, + {kPanelButtonInventory, 181 + 32*2,27, 27,18, 6,'-',0, 0,0,0}, + {kPanelButtonInventory, 181 + 32*3,27, 27,18, 7,'-',0, 0,0,0} +}; + +static PanelButton ITE_ConversePanelButtons[] = { + {kPanelButtonConverseText, 52,6 + ITE_CONVERSE_TEXT_HEIGHT * 0, ITE_CONVERSE_MAX_TEXT_WIDTH,ITE_CONVERSE_TEXT_HEIGHT, 0,'1',0, 0,0,0}, + {kPanelButtonConverseText, 52,6 + ITE_CONVERSE_TEXT_HEIGHT * 1, ITE_CONVERSE_MAX_TEXT_WIDTH,ITE_CONVERSE_TEXT_HEIGHT, 1,'2',0, 0,0,0}, + {kPanelButtonConverseText, 52,6 + ITE_CONVERSE_TEXT_HEIGHT * 2, ITE_CONVERSE_MAX_TEXT_WIDTH,ITE_CONVERSE_TEXT_HEIGHT, 2,'3',0, 0,0,0}, + {kPanelButtonConverseText, 52,6 + ITE_CONVERSE_TEXT_HEIGHT * 3, ITE_CONVERSE_MAX_TEXT_WIDTH,ITE_CONVERSE_TEXT_HEIGHT, 3,'4',0, 0,0,0}, + {kPanelButtonArrow, 257,6, 9,6, -1,'u',0, 0,4,2}, + {kPanelButtonArrow, 257,41, 9,6, 1,'d',0, 1,5,3}, +}; + +static PanelButton ITE_OptionPanelButtons[] = { + {kPanelButtonOptionSlider, 284,19, 13,75, 0,'-',0, 0,0,0}, //slider-scroller + {kPanelButtonOption, 113,18, 45,17, kTextReadingSpeed,'r',0, 0,0,0}, //read speed + {kPanelButtonOption, 113,37, 45,17, kTextMusic,'m',0, 0,0,0}, //music + {kPanelButtonOption, 113,56, 45,17, kTextSound,'n',0, 0,0,0}, //sound-noise + {kPanelButtonOption, 13,79, 135,17, kTextQuitGame,'q',0, 0,0,0}, //quit + {kPanelButtonOption, 13,98, 135,17, kTextContinuePlaying,'c',0, 0,0,0}, //continue + {kPanelButtonOption, 164,98, 57,17, kTextLoad,'l',0, 0,0,0}, //load + {kPanelButtonOption, 241,98, 57,17, kTextSave,'s',0, 0,0,0}, //save + {kPanelButtonOptionSaveFiles, 166,20, 112,74, 0,'-',0, 0,0,0}, //savefiles + + {kPanelButtonOptionText,106,4, 0,0, kTextGameOptions,'-',0, 0,0,0}, // text: game options + {kPanelButtonOptionText,11,22, 0,0, kTextReadingSpeed,'-',0, 0,0,0}, // text: read speed + {kPanelButtonOptionText,28,22, 0,0, kTextShowDialog,'-',0, 0,0,0}, // text: read speed + {kPanelButtonOptionText,73,41, 0,0, kTextMusic,'-',0, 0,0,0}, // text: music + {kPanelButtonOptionText,69,60, 0,0, kTextSound,'-',0, 0,0,0}, // text: noise +}; + +static PanelButton ITE_QuitPanelButtons[] = { + {kPanelButtonQuit, 11,17, 60,16, kTextQuit,'q',0, 0,0,0}, + {kPanelButtonQuit, 121,17, 60,16, kTextCancel,'c',0, 0,0,0}, + {kPanelButtonQuitText, -1,5, 0,0, kTextQuitTheGameQuestion,'-',0, 0,0,0}, +}; + +static PanelButton ITE_LoadPanelButtons[] = { + {kPanelButtonLoad, 101,19, 60,16, kTextOK,'o',0, 0,0,0}, + {kPanelButtonLoadText, -1,5, 0,0, kTextLoadSuccessful,'-',0, 0,0,0}, +}; + +static PanelButton ITE_SavePanelButtons[] = { + {kPanelButtonSave, 11,37, 60,16, kTextSave,'s',0, 0,0,0}, + {kPanelButtonSave, 101,37, 60,16, kTextCancel,'c',0, 0,0,0}, + {kPanelButtonSaveEdit, 26,17, 119,17, 0,'-',0, 0,0,0}, + {kPanelButtonSaveText, -1,5, 0,0, kTextEnterSaveGameName,'-',0, 0,0,0}, +}; + +static PanelButton ITE_ProtectPanelButtons[] = { + {kPanelButtonProtectEdit, 26,17, 119,17, 0,'-',0, 0,0,0}, + {kPanelButtonProtectText, -1,5, 0,0, kTextEnterProtectAnswer,'-',0, 0,0,0}, +}; + +/* +static PanelButton ITE_ProtectionPanelButtons[] = { + {kPanelButtonArrow, 0,0, 0,0, 0,'-',0, 0,0,0}, //TODO +};*/ + +static GameDisplayInfo ITE_DisplayInfo = { + 320, 200, // logical width&height + + 35, // scene path y offset + 137, // scene height + + 0, // status x offset + 137, // status y offset + 320, // status width + 11, // status height + 2, // status text y offset + 186, // status text color + 15, // status BG color + 308,137, // save reminder pos + 12,12, // save reminder w & h + 6,7, // save reminder sprite numbers + + 5, 4, // left portrait x, y offset + 274, 4, // right portrait x, y offset + + 8, 9, // inventory Up & Down button indexies + 2, 4, // inventory rows, columns + + 0, 148, // main panel offsets + ARRAYSIZE(ITE_MainPanelButtons), + ITE_MainPanelButtons, + + ITE_CONVERSE_MAX_TEXT_WIDTH, + ITE_CONVERSE_TEXT_HEIGHT, + ITE_CONVERSE_TEXT_LINES, + 4, 5, // converse Up & Down button indexies + 0, 148, // converse panel offsets + ARRAYSIZE(ITE_ConversePanelButtons), + ITE_ConversePanelButtons, + + 8, 0, // save file index + 8, // optionSaveFileVisible + 8, 8, // option panel offsets + ARRAYSIZE(ITE_OptionPanelButtons), + ITE_OptionPanelButtons, + + 64,54, // quit panel offsets + 192,38, // quit panel width & height + ARRAYSIZE(ITE_QuitPanelButtons), + ITE_QuitPanelButtons, + + 74, 53, // load panel offsets + 172, 40, // load panel width & height + ARRAYSIZE(ITE_LoadPanelButtons), + ITE_LoadPanelButtons, + + 2, // save edit index + 74, 44, // save panel offsets + 172, 58, // save panel width & height + ARRAYSIZE(ITE_SavePanelButtons), + ITE_SavePanelButtons, + + 0, // protect edit index + 74, 44, // protect panel offsets + 172, 58, // protect panel width & height + ARRAYSIZE(ITE_ProtectPanelButtons), + ITE_ProtectPanelButtons +}; + +static GameResourceDescription ITE_Resources = { + RID_ITE_SCENE_LUT, // Scene lookup table RN + RID_ITE_SCRIPT_LUT, // Script lookup table RN + RID_ITE_MAIN_PANEL, + RID_ITE_CONVERSE_PANEL, + RID_ITE_OPTION_PANEL, + RID_ITE_MAIN_SPRITES, + RID_ITE_MAIN_PANEL_SPRITES, + RID_ITE_DEFAULT_PORTRAITS, + RID_ITE_MAIN_STRINGS, + RID_ITE_ACTOR_NAMES +}; + +static GameResourceDescription ITEDemo_Resources = { + RID_ITEDEMO_SCENE_LUT, // Scene lookup table RN + RID_ITEDEMO_SCRIPT_LUT, // Script lookup table RN + RID_ITEDEMO_MAIN_PANEL, + RID_ITEDEMO_CONVERSE_PANEL, + RID_ITEDEMO_OPTION_PANEL, + RID_ITEDEMO_MAIN_SPRITES, + RID_ITEDEMO_MAIN_PANEL_SPRITES, + RID_ITEDEMO_DEFAULT_PORTRAITS, + RID_ITEDEMO_MAIN_STRINGS, + RID_ITEDEMO_ACTOR_NAMES +}; + +// Inherit the Earth - DOS Demo version +static GameFileDescription ITE_DEMO_G_GameFiles[] = { + {"ite.rsc", GAME_RESOURCEFILE, "986c79c4d2939dbe555576529fd37932"}, + //{"ite.dmo", GAME_DEMOFILE}, "0b9a70eb4e120b6f00579b46c8cae29e" + {"scripts.rsc", GAME_SCRIPTFILE, "d5697dd3240a3ceaddaa986c47e1a2d7"}, + {"voices.rsc", GAME_SOUNDFILE | GAME_VOICEFILE, "c58e67c506af4ffa03fd0aac2079deb0"} +}; + +static GameFontDescription ITEDEMO_GameFonts[] = { + {0}, + {1} +}; + +static GameSoundInfo ITEDEMO_GameSound = { + kSoundVOC, + -1, + -1, + false, + false, + true +}; + +// Inherit the Earth - Wyrmkeep Win32 Demo version + +static GameFileDescription ITE_WINDEMO2_GameFiles[] = { + {"ited.rsc", GAME_RESOURCEFILE, "3a450852cbf3c80773984d565647e6ac"}, + {"scriptsd.rsc", GAME_SCRIPTFILE, "3f12b67fa93e56e1a6be39d2921d80bb"}, + {"soundsd.rsc", GAME_SOUNDFILE, "95a6c148e22e99a8c243f2978223583c"}, + {"voicesd.rsc", GAME_VOICEFILE, "e139d86bab2ee8ba3157337f894a92d4"} +}; + +static GameFileDescription ITE_WINDEMO1_GameFiles[] = { + {"ited.rsc", GAME_RESOURCEFILE, "3a450852cbf3c80773984d565647e6ac"}, + {"scriptsd.rsc", GAME_SCRIPTFILE, "3f12b67fa93e56e1a6be39d2921d80bb"}, + {"soundsd.rsc", GAME_SOUNDFILE, "a741139dd7365a13f463cd896ff9969a"}, + {"voicesd.rsc", GAME_VOICEFILE, "0759eaf5b64ae19fd429920a70151ad3"} +}; + +static GameFontDescription ITEWINDEMO_GameFonts[] = { + {2}, + {0} +}; + +static GameSoundInfo ITEWINDEMO1_GameSound = { + kSoundPCM, + 22050, + 8, + false, + false, + false +}; + +static GameSoundInfo ITEWINDEMO2_GameVoice = { + kSoundVOX, + 22050, + 16, + false, + false, + true +}; + +static GameSoundInfo ITEWINDEMO2_GameSound = { + kSoundPCM, + 22050, + 16, + false, + false, + true +}; + +// Inherit the Earth - Wyrmkeep Mac Demo version +static GameFileDescription ITE_MACDEMO2_GameFiles[] = { + {"ited.rsc", GAME_RESOURCEFILE, "addfc9d82bc2fa1f4cab23743c652c08"}, + {"scriptsd.rsc", GAME_SCRIPTFILE, "fded5c59b8b7c5976229f960d21e6b0b"}, + {"soundsd.rsc", GAME_SOUNDFILE, "b3a831fbed337d1f1300fee1dd474f6c"}, + {"voicesd.rsc", GAME_VOICEFILE, "e139d86bab2ee8ba3157337f894a92d4"}, + {"musicd.rsc", GAME_MUSICFILE, "495bdde51fd9f4bea2b9c911091b1ab2"} +}; + +static GameFileDescription ITE_MACDEMO1_GameFiles[] = { + {"ited.rsc", GAME_RESOURCEFILE, "addfc9d82bc2fa1f4cab23743c652c08"}, + {"scriptsd.rsc", GAME_SCRIPTFILE, "fded5c59b8b7c5976229f960d21e6b0b"}, + {"soundsd.rsc", GAME_SOUNDFILE, "b3a831fbed337d1f1300fee1dd474f6c"}, + {"voicesd.rsc", GAME_VOICEFILE, "e139d86bab2ee8ba3157337f894a92d4"}, + {"musicd.rsc", GAME_MUSICFILE, "1a91cd60169f367ecb6c6e058d899b2f"} +}; + +static GameSoundInfo ITEMACDEMO_GameVoice = { + kSoundVOX, + 22050, + 16, + false, + false, + true +}; + +static GameSoundInfo ITEMACDEMO_GameSound = { + kSoundPCM, + 22050, + 16, + false, + true, + true +}; + +static GameSoundInfo ITEMACDEMO_GameMusic = { + kSoundPCM, + 11025, + 16, + false, + false, + true +}; + +// Inherit the Earth - Wyrmkeep Linux Demo version +static GameFileDescription ITE_LINDEMO_GameFiles[] = { + {"ited.rsc", GAME_RESOURCEFILE, "3a450852cbf3c80773984d565647e6ac"}, + {"scriptsd.rsc", GAME_SCRIPTFILE, "3f12b67fa93e56e1a6be39d2921d80bb"}, + {"soundsd.rsc", GAME_SOUNDFILE, "95a6c148e22e99a8c243f2978223583c"}, + {"voicesd.rsc", GAME_VOICEFILE, "e139d86bab2ee8ba3157337f894a92d4"}, + {"musicd.rsc", GAME_MUSICFILE, "d6454756517f042f01210458abe8edd4"} +}; + +static GameSoundInfo ITELINDEMO_GameMusic = { + kSoundPCM, + 11025, + 16, + true, + false, + true +}; + +// Inherit the Earth - Wyrmkeep Linux version + +static GameFileDescription ITE_LINCD_GameFiles[] = { + {"ite.rsc", GAME_RESOURCEFILE, "8f4315a9bb10ec839253108a032c8b54"}, + {"scripts.rsc", GAME_SCRIPTFILE, "a891405405edefc69c9d6c420c868b84"}, + {"sounds.rsc", GAME_SOUNDFILE, "e2ccb61c325d6d1ead3be0e731fe29fe"}, + {"voices.rsc", GAME_VOICEFILE, "41bb6b95d792dde5196bdb78740895a6"}, + {"music.rsc", GAME_MUSICFILE, "d6454756517f042f01210458abe8edd4"} +}; + +// Inherit the Earth - Wyrmkeep combined Windows/Mac/Linux version. This +// version is different from the other Wyrmkeep re-releases in that it does +// not have any substitute files. Presumably the ite.rsc file has been +// modified to include the Wyrmkeep changes. The resource files are little- +// endian, except for the voice file which is big-endian. + +static GameFileDescription ITE_MULTICD_GameFiles[] = { + {"ite.rsc", GAME_RESOURCEFILE, "a6433e34b97b15e64fe8214651012db9"}, + {"scripts.rsc", GAME_SCRIPTFILE, "a891405405edefc69c9d6c420c868b84"}, + {"sounds.rsc", GAME_SOUNDFILE, "e2ccb61c325d6d1ead3be0e731fe29fe"}, + {"inherit the earth voices", GAME_VOICEFILE | GAME_SWAPENDIAN, "c14c4c995e7a0d3828e3812a494301b7"}, + {"music.rsc", GAME_MUSICFILE, "d6454756517f042f01210458abe8edd4"} +}; + +static GameFileDescription ITE_MACCD_G_GameFiles[] = { + {"ite resources.bin", GAME_RESOURCEFILE | GAME_MACBINARY, "0bd506aa887bfc7965f695c6bd28237d"}, + {"ite scripts.bin", GAME_SCRIPTFILE | GAME_MACBINARY, "af0d7a2588e09ad3ecbc5b474ea238bf"}, + {"ite sounds.bin", GAME_SOUNDFILE | GAME_MACBINARY, "441426c6bb2a517f65c7e49b57f7a345"}, + {"ite music.bin", GAME_MUSICFILE_GM | GAME_MACBINARY, "c1d20324b7cdf1650e67061b8a93251c"}, + {"ite voices.bin", GAME_VOICEFILE | GAME_MACBINARY, "dba92ae7d57e942250fe135609708369"} +}; + +static GameSoundInfo ITEMACCD_G_GameSound = { + kSoundMacPCM, + 22050, + 8, + false, + false, + false +}; + +// Inherit the Earth - Mac Wyrmkeep version +static GameFileDescription ITE_MACCD_GameFiles[] = { + {"ite.rsc", GAME_RESOURCEFILE, "4f7fa11c5175980ed593392838523060"}, + {"scripts.rsc", GAME_SCRIPTFILE, "adf1f46c1d0589083996a7060c798ad0"}, + {"sounds.rsc", GAME_SOUNDFILE, "95863b89a0916941f6c5e1789843ba14"}, + {"inherit the earth voices", GAME_VOICEFILE, "c14c4c995e7a0d3828e3812a494301b7"}, + {"music.rsc", GAME_MUSICFILE, "1a91cd60169f367ecb6c6e058d899b2f"} +}; + +static GameSoundInfo ITEMACCD_GameSound = { + kSoundPCM, + 22050, + 16, + false, + true, + true +}; + +static GameSoundInfo ITEMACCD_GameMusic = { + kSoundPCM, + 11025, + 16, + true, + false, + true +}; + +// Inherit the Earth - Diskette version +static GameFileDescription ITE_DISK_DE_GameFiles[] = { + {"ite.rsc", GAME_RESOURCEFILE, "869fc23c8f38f575979ec67152914fee"}, + {"scripts.rsc", GAME_SCRIPTFILE, "516f7330f8410057b834424ea719d1ef"}, + {"voices.rsc", GAME_SOUNDFILE | GAME_VOICEFILE, "0c9113e630f97ef0996b8c3114badb08"} +}; + +static GameFileDescription ITE_DISK_G_GameFiles[] = { + {"ite.rsc", GAME_RESOURCEFILE, "8f4315a9bb10ec839253108a032c8b54"}, + {"scripts.rsc", GAME_SCRIPTFILE, "516f7330f8410057b834424ea719d1ef"}, + {"voices.rsc", GAME_SOUNDFILE | GAME_VOICEFILE, "c46e4392fcd2e89bc91e5567db33b62d"} +}; + +static GameFileDescription ITE_DISK_DE2_GameFiles[] = { + {"ite.rsc", GAME_RESOURCEFILE, "869fc23c8f38f575979ec67152914fee"}, + {"scripts.rsc", GAME_SCRIPTFILE, "516f7330f8410057b834424ea719d1ef"}, + {"voices.rsc", GAME_SOUNDFILE | GAME_VOICEFILE, "0c9113e630f97ef0996b8c3114badb08"}, + {"music.rsc", GAME_MUSICFILE, "d6454756517f042f01210458abe8edd4"} +}; + +static GameFileDescription ITE_DISK_G2_GameFiles[] = { + {"ite.rsc", GAME_RESOURCEFILE, "8f4315a9bb10ec839253108a032c8b54"}, + {"scripts.rsc", GAME_SCRIPTFILE, "516f7330f8410057b834424ea719d1ef"}, + {"voices.rsc", GAME_SOUNDFILE | GAME_VOICEFILE, "c46e4392fcd2e89bc91e5567db33b62d"}, + {"music.rsc", GAME_MUSICFILE, "d6454756517f042f01210458abe8edd4"} +}; + +static GameFontDescription ITEDISK_GameFonts[] = { + {2}, + {0}, + {1} +}; + +static GameSoundInfo ITEDISK_GameSound = { + kSoundVOC, + -1, + -1, + false, + false, + true +}; + +// Inherit the Earth - CD Enhanced version +static GameFileDescription ITE_WINCD_GameFiles[] = { + {"ite.rsc", GAME_RESOURCEFILE, "8f4315a9bb10ec839253108a032c8b54"}, + {"scripts.rsc", GAME_SCRIPTFILE, "a891405405edefc69c9d6c420c868b84"}, + {"sounds.rsc", GAME_SOUNDFILE, "e2ccb61c325d6d1ead3be0e731fe29fe"}, + {"voices.rsc", GAME_VOICEFILE, "41bb6b95d792dde5196bdb78740895a6"} +}; + +static GameFileDescription ITE_CD_G_GameFiles[] = { + {"ite.rsc", GAME_RESOURCEFILE, "8f4315a9bb10ec839253108a032c8b54"}, + {"scripts.rsc", GAME_SCRIPTFILE, "50a0d2d7003c926a3832d503c8534e90"}, + {"sounds.rsc", GAME_SOUNDFILE, "e2ccb61c325d6d1ead3be0e731fe29fe"}, + {"voices.rsc", GAME_VOICEFILE, "41bb6b95d792dde5196bdb78740895a6"} +}; + +// reported by mld. Bestsellergamers cover disk +static GameFileDescription ITE_CD_DE_GameFiles[] = { + {"ite.rsc", GAME_RESOURCEFILE, "869fc23c8f38f575979ec67152914fee"}, + {"scripts.rsc", GAME_SCRIPTFILE, "a891405405edefc69c9d6c420c868b84"}, + {"sounds.rsc", GAME_SOUNDFILE, "e2ccb61c325d6d1ead3be0e731fe29fe"}, + {"voices.rsc", GAME_VOICEFILE, "2fbad5d10b9b60a3415dc4aebbb11718"} +}; + +static GameFileDescription ITE_CD_GameFiles[] = { + {"ite.rsc", GAME_RESOURCEFILE, "8f4315a9bb10ec839253108a032c8b54"}, + {"scripts.rsc", GAME_SCRIPTFILE, "a891405405edefc69c9d6c420c868b84"}, + {"sounds.rsc", GAME_SOUNDFILE, "e2ccb61c325d6d1ead3be0e731fe29fe"}, + {"voices.rsc", GAME_VOICEFILE, "41bb6b95d792dde5196bdb78740895a6"} +}; + + +static GameFileDescription ITE_CD_G2_GameFiles[] = { + {"ite.rsc", GAME_RESOURCEFILE, "8f4315a9bb10ec839253108a032c8b54"}, + {"scripts.rsc", GAME_SCRIPTFILE, "50a0d2d7003c926a3832d503c8534e90"}, + {"sounds.rsc", GAME_SOUNDFILE, "e2ccb61c325d6d1ead3be0e731fe29fe"}, + {"voices.rsc", GAME_VOICEFILE, "41bb6b95d792dde5196bdb78740895a6"}, + {"music.rsc", GAME_MUSICFILE, "d6454756517f042f01210458abe8edd4"} +}; + +static GameFileDescription ITE_CD_DE2_GameFiles[] = { + {"ite.rsc", GAME_RESOURCEFILE, "869fc23c8f38f575979ec67152914fee"}, + {"scripts.rsc", GAME_SCRIPTFILE, "a891405405edefc69c9d6c420c868b84"}, + {"sounds.rsc", GAME_SOUNDFILE, "e2ccb61c325d6d1ead3be0e731fe29fe"}, + {"voices.rsc", GAME_VOICEFILE, "2fbad5d10b9b60a3415dc4aebbb11718"}, + {"music.rsc", GAME_MUSICFILE, "d6454756517f042f01210458abe8edd4"} +}; + + +static GameFontDescription ITECD_GameFonts[] = { + {2}, + {0}, + {1} +}; + +static GameSoundInfo ITECD_GameSound = { + kSoundPCM, + 22050, + 16, + false, + false, + true +}; + +static GamePatchDescription ITEWinPatch1_Files[] = { + { "cave.mid", GAME_RESOURCEFILE, 9, NULL}, + { "intro.mid", GAME_RESOURCEFILE, 10, NULL}, + { "fvillage.mid", GAME_RESOURCEFILE, 11, NULL}, + { "elkhall.mid", GAME_RESOURCEFILE, 12, NULL}, + { "mouse.mid", GAME_RESOURCEFILE, 13, NULL}, + { "darkclaw.mid", GAME_RESOURCEFILE, 14, NULL}, + { "birdchrp.mid", GAME_RESOURCEFILE, 15, NULL}, + { "orbtempl.mid", GAME_RESOURCEFILE, 16, NULL}, + { "spooky.mid", GAME_RESOURCEFILE, 17, NULL}, + { "catfest.mid", GAME_RESOURCEFILE, 18, NULL}, + { "elkfanfare.mid", GAME_RESOURCEFILE, 19, NULL}, + { "bcexpl.mid", GAME_RESOURCEFILE, 20, NULL}, + { "boargtnt.mid", GAME_RESOURCEFILE, 21, NULL}, + { "boarking.mid", GAME_RESOURCEFILE, 22, NULL}, + { "explorea.mid", GAME_RESOURCEFILE, 23, NULL}, + { "exploreb.mid", GAME_RESOURCEFILE, 24, NULL}, + { "explorec.mid", GAME_RESOURCEFILE, 25, NULL}, + { "sunstatm.mid", GAME_RESOURCEFILE, 26, NULL}, + { "nitstrlm.mid", GAME_RESOURCEFILE, 27, NULL}, + { "humruinm.mid", GAME_RESOURCEFILE, 28, NULL}, + { "damexplm.mid", GAME_RESOURCEFILE, 29, NULL}, + { "tychom.mid", GAME_RESOURCEFILE, 30, NULL}, + { "kitten.mid", GAME_RESOURCEFILE, 31, NULL}, + { "sweet.mid", GAME_RESOURCEFILE, 32, NULL}, + { "brutalmt.mid", GAME_RESOURCEFILE, 33, NULL}, + { "shiala.mid", GAME_RESOURCEFILE, 34, NULL}, + + { "wyrm.pak", GAME_RESOURCEFILE, 1529, NULL}, + { "wyrm1.dlt", GAME_RESOURCEFILE, 1530, NULL}, + { "wyrm2.dlt", GAME_RESOURCEFILE, 1531, NULL}, + { "wyrm3.dlt", GAME_RESOURCEFILE, 1532, NULL}, + { "wyrm4.dlt", GAME_RESOURCEFILE, 1533, NULL}, + { "credit3n.dlt", GAME_RESOURCEFILE, 1796, NULL}, + { "credit4n.dlt", GAME_RESOURCEFILE, 1797, NULL}, + { "p2_a.voc", GAME_VOICEFILE, 4, NULL} +}; + +static GamePatchDescription ITEWinPatch2_Files[] = { + { "cave.mid", GAME_RESOURCEFILE, 9, NULL}, + { "intro.mid", GAME_RESOURCEFILE, 10, NULL}, + { "fvillage.mid", GAME_RESOURCEFILE, 11, NULL}, + { "elkfanfare.mid", GAME_RESOURCEFILE, 19, NULL}, + { "bcexpl.mid", GAME_RESOURCEFILE, 20, NULL}, + { "boargtnt.mid", GAME_RESOURCEFILE, 21, NULL}, + { "explorea.mid", GAME_RESOURCEFILE, 23, NULL}, + { "sweet.mid", GAME_RESOURCEFILE, 32, NULL}, + + { "wyrm.pak", GAME_RESOURCEFILE, 1529, NULL}, + { "wyrm1.dlt", GAME_RESOURCEFILE, 1530, NULL}, + { "wyrm2.dlt", GAME_RESOURCEFILE, 1531, NULL}, + { "wyrm3.dlt", GAME_RESOURCEFILE, 1532, NULL}, + { "p2_a.iaf", GAME_VOICEFILE, 4, &ITECD_GameSound} +/* boarhall.bbm + elkenter.bbm + ferrets.bbm + ratdoor.bbm + sanctuar.bbm + tycho.bbm*/ +}; + +static GamePatchDescription ITEMacPatch_Files[] = { + { "wyrm.pak", GAME_RESOURCEFILE, 1529, NULL}, + { "wyrm1.dlt", GAME_RESOURCEFILE, 1530, NULL}, + { "wyrm2.dlt", GAME_RESOURCEFILE, 1531, NULL}, + { "wyrm3.dlt", GAME_RESOURCEFILE, 1532, NULL}, + { "wyrm4.dlt", GAME_RESOURCEFILE, 1533, NULL}, + { "credit3m.dlt", GAME_RESOURCEFILE, 1796, NULL}, + { "credit4m.dlt", GAME_RESOURCEFILE, 1797, NULL}, + { "p2_a.iaf", GAME_VOICEFILE, 4, &ITEMACCD_GameSound} +}; + +static GamePatchDescription ITELinPatch_Files[] = { + { "wyrm.pak", GAME_RESOURCEFILE, 1529, NULL}, + { "wyrm1.dlt", GAME_RESOURCEFILE, 1530, NULL}, + { "wyrm2.dlt", GAME_RESOURCEFILE, 1531, NULL}, + { "wyrm3.dlt", GAME_RESOURCEFILE, 1532, NULL}, + { "credit3n.dlt", GAME_RESOURCEFILE, 1796, NULL}, + { "credit4n.dlt", GAME_RESOURCEFILE, 1797, NULL}, + { "P2_A.iaf", GAME_VOICEFILE, 4, &ITECD_GameSound} +}; + +// IHNM section + +static PanelButton IHNM_MainPanelButtons[] = { + {kPanelButtonVerb, 106,12, 114,30, kVerbIHNMWalk,'w',0, 0,1,0}, + {kPanelButtonVerb, 106,44, 114,30, kVerbIHNMLookAt,'l',0, 2,3,0}, + {kPanelButtonVerb, 106,76, 114,30, kVerbIHNMTake,'k',0, 4,5,0}, + {kPanelButtonVerb, 106,108, 114,30, kVerbIHNMUse,'u',0, 6,7,0}, + {kPanelButtonVerb, 223,12, 114,30, kVerbIHNMTalkTo,'t',0, 8,9,0}, + {kPanelButtonVerb, 223,44, 114,30, kVerbIHNMSwallow,'s',0, 10,11,0}, + {kPanelButtonVerb, 223,76, 114,30, kVerbIHNMGive,'g',0, 12,13,0}, + {kPanelButtonVerb, 223,108, 114,30, kVerbIHNMPush,'p',0, 14,15,0}, + {kPanelButtonArrow, 606,22, 20,25, -1,'[',0, 0,0,0}, //TODO: arrow Sprite Numbers + {kPanelButtonArrow, 606,108, 20,25, 1,']',0, 0,0,0}, + + {kPanelButtonInventory, 357 + 64*0,18, 54,54, 0,'-',0, 0,0,0}, + {kPanelButtonInventory, 357 + 64*1,18, 54,54, 1,'-',0, 0,0,0}, + {kPanelButtonInventory, 357 + 64*2,18, 54,54, 2,'-',0, 0,0,0}, + {kPanelButtonInventory, 357 + 64*3,18, 54,54, 3,'-',0, 0,0,0}, + + {kPanelButtonInventory, 357 + 64*0,80, 54,54, 4,'-',0, 0,0,0}, + {kPanelButtonInventory, 357 + 64*1,80, 54,54, 5,'-',0, 0,0,0}, + {kPanelButtonInventory, 357 + 64*2,80, 54,54, 6,'-',0, 0,0,0}, + {kPanelButtonInventory, 357 + 64*3,80, 54,54, 7,'-',0, 0,0,0} +}; + +static PanelButton IHNM_ConversePanelButtons[] = { + {kPanelButtonConverseText, 117,18 + IHNM_CONVERSE_TEXT_HEIGHT * 0, IHNM_CONVERSE_MAX_TEXT_WIDTH,IHNM_CONVERSE_TEXT_HEIGHT, 0,'1',0, 0,0,0}, + {kPanelButtonConverseText, 52,18 + IHNM_CONVERSE_TEXT_HEIGHT * 1, IHNM_CONVERSE_MAX_TEXT_WIDTH,IHNM_CONVERSE_TEXT_HEIGHT, 1,'2',0, 0,0,0}, + {kPanelButtonConverseText, 52,18 + IHNM_CONVERSE_TEXT_HEIGHT * 2, IHNM_CONVERSE_MAX_TEXT_WIDTH,IHNM_CONVERSE_TEXT_HEIGHT, 2,'3',0, 0,0,0}, + {kPanelButtonConverseText, 52,18 + IHNM_CONVERSE_TEXT_HEIGHT * 3, IHNM_CONVERSE_MAX_TEXT_WIDTH,IHNM_CONVERSE_TEXT_HEIGHT, 3,'4',0, 0,0,0}, + //..... + {kPanelButtonArrow, 606,22, 20,25, -1,'[',0, 0,0,0}, //TODO: arrow Sprite Numbers + {kPanelButtonArrow, 606,108, 20,25, 1,']',0, 0,0,0} +}; + +static PanelButton IHNM_OptionPanelButtons[] = { + {kPanelButtonArrow, 0,0, 0,0, 0,'-',0, 0,0,0}, //TODO +}; + +static PanelButton IHNM_QuitPanelButtons[] = { + {kPanelButtonArrow, 0,0, 0,0, 0,'-',0, 0,0,0}, //TODO +}; + +static PanelButton IHNM_LoadPanelButtons[] = { + {kPanelButtonArrow, 0,0, 0,0, 0,'-',0, 0,0,0}, //TODO +}; + +static PanelButton IHNM_SavePanelButtons[] = { + {kPanelButtonArrow, 0,0, 0,0, 0,'-',0, 0,0,0}, //TODO +}; + + +static GameDisplayInfo IHNM_DisplayInfo = { //TODO: fill it all + 640, 480, // logical width&height + + 0, // scene path y offset + 304, // scene height + + 0, // status x offset + 304, // status y offset + 616, // status width + 24, // status height + 8, // status text y offset + 253, // status text color + 250, // status BG color + 616, 303, // save reminder pos + 24, 24, // save reminder w&h + 0,1, // save reminder sprite numbers + + 11, 12, // left portrait x, y offset + -1, -1, // right portrait x, y offset + + -1, -1, // inventory Up & Down button indexies + 2, 4, // inventory rows, columns + + 0, 328, // main panel offsets + ARRAYSIZE(IHNM_MainPanelButtons), + IHNM_MainPanelButtons, + + -1, -1, // converse Up & Down button indexies + + IHNM_CONVERSE_MAX_TEXT_WIDTH, + IHNM_CONVERSE_TEXT_HEIGHT, + IHNM_CONVERSE_TEXT_LINES, + 0, 328, // converse panel offsets + ARRAYSIZE(IHNM_ConversePanelButtons), + IHNM_ConversePanelButtons, + + -1, -1, // save file index + 0, // optionSaveFileVisible + 0, 0, // option panel offsets + ARRAYSIZE(IHNM_OptionPanelButtons), + IHNM_OptionPanelButtons, + + 0,0, // quit panel offsets + 0,0, // quit panel width & height + ARRAYSIZE(IHNM_QuitPanelButtons), + IHNM_QuitPanelButtons, + + 0, 0, // load panel offsets + 0, 0, // load panel width & height + ARRAYSIZE(IHNM_LoadPanelButtons), + IHNM_LoadPanelButtons, + + -1, // save edit index + 0, 0, // save panel offsets + 0, 0, // save panel width & height + ARRAYSIZE(IHNM_SavePanelButtons), + IHNM_SavePanelButtons, + + // No protection panel in IHNM + -1, // protect edit index + 0, 0, // protect panel offsets + 0, 0, // protect panel width & height + ARRAYSIZE(IHNM_SavePanelButtons), + IHNM_SavePanelButtons +}; + +static GameResourceDescription IHNM_Resources = { + RID_IHNM_SCENE_LUT, // Scene lookup table RN + RID_IHNM_SCRIPT_LUT, // Script lookup table RN + RID_IHNM_MAIN_PANEL, + RID_IHNM_CONVERSE_PANEL, + RID_IHNM_OPTION_PANEL, + RID_IHNM_MAIN_SPRITES, + RID_IHNM_MAIN_PANEL_SPRITES, + 0, + RID_IHNM_MAIN_STRINGS, + 0 +}; + +// I Have No Mouth and I Must Scream - Demo version +static GameFileDescription IHNM_DEMO_GameFiles[] = { + {"scream.res", GAME_RESOURCEFILE, "46bbdc65d164ba7e89836a0935eec8e6"}, + {"scripts.res", GAME_SCRIPTFILE, "9626bda8978094ff9b29198bc1ed5f9a"}, + {"sfx.res", GAME_SOUNDFILE, "1c610d543f32ec8b525e3f652536f269"}, + {"voicesd.res", GAME_VOICEFILE, "3bbc16a8f741dbb511da506c660a0b54"} +}; + +// I Have No Mouth and I Must Scream - Retail CD version + +static GameFileDescription IHNM_CD_GameFiles[] = { + {"musicfm.res", GAME_MUSICFILE_FM, "0439083e3dfdc51b486071d45872ae52"}, + {"musicgm.res", GAME_MUSICFILE_GM, "80f875a1fb384160d1f4b27166eef583"}, + {"scream.res", GAME_RESOURCEFILE, "46bbdc65d164ba7e89836a0935eec8e6"}, + {"patch.re_", GAME_PATCHFILE | GAME_RESOURCEFILE, "58b79e61594779513c7f2d35509fa89e"}, + {"scripts.res", GAME_SCRIPTFILE, "be38bbc5a26be809dbf39f13befebd01"}, + {"sfx.res", GAME_SOUNDFILE, "1c610d543f32ec8b525e3f652536f269"}, + {"voicess.res", GAME_VOICEFILE, "54b1f2013a075338ceb0e258d97808bd"}, //order of voice bank file is important + {"voices1.res", GAME_VOICEFILE, "fc6440b38025f4b2cc3ff55c3da5c3eb"}, + {"voices2.res", GAME_VOICEFILE, "b37f10fd1696ade7d58704ccaaebceeb"}, + {"voices3.res", GAME_VOICEFILE, "3bbc16a8f741dbb511da506c660a0b54"}, + {"voices4.res", GAME_VOICEFILE, "ebfa160122d2247a676ca39920e5d481"}, + {"voices5.res", GAME_VOICEFILE, "1f501ce4b72392bdd1d9ec38f6eec6da"}, + {"voices6.res", GAME_VOICEFILE, "f580ed7568c7d6ef34e934ba20adf834"} +}; + +static GameFileDescription IHNM_CD_ES_GameFiles[] = { + {"musicfm.res", GAME_MUSICFILE_FM, "0439083e3dfdc51b486071d45872ae52"}, + {"musicgm.res", GAME_MUSICFILE_GM, "80f875a1fb384160d1f4b27166eef583"}, + {"scream.res", GAME_RESOURCEFILE, "c92370d400e6f2a3fc411c3729d09224"}, + {"patch.re_", GAME_PATCHFILE | GAME_RESOURCEFILE, "58b79e61594779513c7f2d35509fa89e"}, + {"scripts.res", GAME_SCRIPTFILE, "be38bbc5a26be809dbf39f13befebd01"}, + {"sfx.res", GAME_SOUNDFILE, "1c610d543f32ec8b525e3f652536f269"}, + {"voicess.res", GAME_VOICEFILE, "d869de9883c8faea7f687217a9ec7057"}, //order of voice bank file is important + {"voices1.res", GAME_VOICEFILE, "dc6a34e3d1668730ea46815a92c7847f"}, + {"voices2.res", GAME_VOICEFILE, "dc6a5fa7a4cdc2ca5a6fd924e969986c"}, + {"voices3.res", GAME_VOICEFILE, "dc6a5fa7a4cdc2ca5a6fd924e969986c"}, + {"voices4.res", GAME_VOICEFILE, "0f87400b804232a58dd22e404420cc45"}, + {"voices5.res", GAME_VOICEFILE, "172668cfc5d8c305cb5b1a9b4d995fc0"}, + {"voices6.res", GAME_VOICEFILE, "96c9bda9a5f41d6bc232ed7bf6d371d9"} +}; + +static GameFileDescription IHNM_CD_RU_GameFiles[] = { + {"musicfm.res", GAME_MUSICFILE_FM, "0439083e3dfdc51b486071d45872ae52"}, + {"musicgm.res", GAME_MUSICFILE_GM, "80f875a1fb384160d1f4b27166eef583"}, + {"scream.res", GAME_RESOURCEFILE, "46bbdc65d164ba7e89836a0935eec8e6"}, + {"patch.re_", GAME_PATCHFILE | GAME_RESOURCEFILE, "58b79e61594779513c7f2d35509fa89e"}, + {"scripts.res", GAME_SCRIPTFILE, "be38bbc5a26be809dbf39f13befebd01"}, + {"sfx.res", GAME_SOUNDFILE, "1c610d543f32ec8b525e3f652536f269"}, + {"voicess.res", GAME_VOICEFILE, "9df7cd3b18ddaa16b5291b3432567036"}, //order of voice bank file is important + {"voices1.res", GAME_VOICEFILE, "d6100d2dc3b2b9f2e1ad247f613dce9b"}, + {"voices2.res", GAME_VOICEFILE, "84f6f48ecc2832841ea6417a9a379430"}, + {"voices3.res", GAME_VOICEFILE, "ebb9501283047f27a0f54e27b3c8ba1e"}, + {"voices4.res", GAME_VOICEFILE, "4c145da5fa6d1306162a7ca8ce5a4f2e"}, + {"voices5.res", GAME_VOICEFILE, "871a559644281917677eca4af1b05620"}, + {"voices6.res", GAME_VOICEFILE, "211be5c24f066d69a2f6cfa953acfba6"} +}; + +// I Have No Mouth and I Must Scream - Censored CD version (without Nimdok) + +// Reported by mld. German Retail +static GameFileDescription IHNM_CD_DE_GameFiles[] = { + {"musicfm.res", GAME_MUSICFILE_FM, "0439083e3dfdc51b486071d45872ae52"}, + {"musicgm.res", GAME_MUSICFILE_GM, "80f875a1fb384160d1f4b27166eef583"}, + {"scream.res", GAME_RESOURCEFILE, "c92370d400e6f2a3fc411c3729d09224"}, + {"scripts.res", GAME_SCRIPTFILE, "32aa01a89937520fe0ea513950117292"}, + {"patch.re_", GAME_PATCHFILE | GAME_RESOURCEFILE, "58b79e61594779513c7f2d35509fa89e"}, + {"sfx.res", GAME_SOUNDFILE, "1c610d543f32ec8b525e3f652536f269"}, + {"voicess.res", GAME_VOICEFILE, "8b09a196a52627cacb4eab13bfe0b2c3"}, //order of voice bank file is important + {"voices1.res", GAME_VOICEFILE, "424971e1e2373187c3f5734fe36071a2"}, + {"voices2.res", GAME_VOICEFILE, "c270e0980782af43641a86e4a14e2a32"}, + {"voices3.res", GAME_VOICEFILE, "49e42befea883fd101ec3d0f5d0647b9"}, + {"voices5.res", GAME_VOICEFILE, "c477443c52a0aa56e686ebd8d051e4ab"}, + {"voices6.res", GAME_VOICEFILE, "2b9aea838f74b4eecfb29a8f205a2bd4"} +}; + +static GameFileDescription IHNM_CD_FR_GameFiles[] = { + {"musicfm.res", GAME_MUSICFILE_FM, "0439083e3dfdc51b486071d45872ae52"}, + {"musicgm.res", GAME_MUSICFILE_GM, "80f875a1fb384160d1f4b27166eef583"}, + {"scream.res", GAME_RESOURCEFILE, "c92370d400e6f2a3fc411c3729d09224"}, + {"scripts.res", GAME_SCRIPTFILE, "32aa01a89937520fe0ea513950117292"}, + {"patch.re_", GAME_PATCHFILE | GAME_RESOURCEFILE, "58b79e61594779513c7f2d35509fa89e"}, + {"sfx.res", GAME_SOUNDFILE, "1c610d543f32ec8b525e3f652536f269"}, + {"voicess.res", GAME_VOICEFILE, "b8642e943bbebf89cef2f48b31cb4305"}, //order of voice bank file is important + {"voices1.res", GAME_VOICEFILE, "424971e1e2373187c3f5734fe36071a2"}, + {"voices2.res", GAME_VOICEFILE, "c2d93a35d2c2def9c3d6d242576c794b"}, + {"voices3.res", GAME_VOICEFILE, "49e42befea883fd101ec3d0f5d0647b9"}, + {"voices5.res", GAME_VOICEFILE, "f4c415de7c03de86b73f9a12b8bd632f"}, + {"voices6.res", GAME_VOICEFILE, "3fc5358a5d8eee43bdfab2740276572e"} +}; + +static GameFontDescription IHNMDEMO_GameFonts[] = { + {2}, + {3}, + {4} +}; + +static GameFontDescription IHNMCD_GameFonts[] = { + {2}, + {3}, + {4}, + {5}, + {6}, // kIHNMFont8 + {7}, + {8} // kIHNMMainFont +}; + +static GameSoundInfo IHNM_GameSound = { + kSoundWAV, + -1, + -1, + false, + false, + true +}; + +#define FILE_MD5_BYTES 5000 + +static GameDescription gameDescriptions[] = { + // Inherit the earth - DOS Demo version + // sound unchecked + { + "ite", + GType_ITE, + GID_ITE_DEMO_G, // Game id + "Demo", // Game title + &ITE_DisplayInfo, + ITE_DEFAULT_SCENE, // Starting scene number + &ITEDemo_Resources, + ARRAYSIZE(ITE_DEMO_G_GameFiles), // Game datafiles + ITE_DEMO_G_GameFiles, + ARRAYSIZE(ITEDEMO_GameFonts), + ITEDEMO_GameFonts, + &ITEDEMO_GameSound, + &ITEDEMO_GameSound, + NULL, + 0, + NULL, + 0, // features + Common::EN_ANY, + Common::kPlatformPC, + }, + + // Inherit the earth - MAC Demo version + { + "ite", + GType_ITE, + GID_ITE_MACDEMO2, + "Demo", + &ITE_DisplayInfo, + ITE_DEFAULT_SCENE, + &ITE_Resources, + ARRAYSIZE(ITE_MACDEMO2_GameFiles), + ITE_MACDEMO2_GameFiles, + ARRAYSIZE(ITEWINDEMO_GameFonts), + ITEWINDEMO_GameFonts, + &ITEMACDEMO_GameVoice, + &ITEMACDEMO_GameSound, + &ITEMACDEMO_GameMusic, + ARRAYSIZE(ITEMacPatch_Files), + ITEMacPatch_Files, + GF_BIG_ENDIAN_DATA | GF_WYRMKEEP | GF_CD_FX | GF_SCENE_SUBSTITUTES, + Common::EN_ANY, + Common::kPlatformMacintosh, + }, + + // Inherit the earth - early MAC Demo version + { + "ite", + GType_ITE, + GID_ITE_MACDEMO1, + "early Demo", + &ITE_DisplayInfo, + ITE_DEFAULT_SCENE, + &ITE_Resources, + ARRAYSIZE(ITE_MACDEMO1_GameFiles), + ITE_MACDEMO1_GameFiles, + ARRAYSIZE(ITEWINDEMO_GameFonts), + ITEWINDEMO_GameFonts, + &ITEMACDEMO_GameVoice, + &ITEMACDEMO_GameSound, + &ITEMACCD_GameMusic, + ARRAYSIZE(ITEMacPatch_Files), + ITEMacPatch_Files, + GF_BIG_ENDIAN_DATA | GF_WYRMKEEP | GF_CD_FX, + Common::EN_ANY, + Common::kPlatformMacintosh, + }, + + // Inherit the earth - MAC CD Guild version + { + "ite", + GType_ITE, + GID_ITE_MACCD_G, + "CD", + &ITE_DisplayInfo, + ITE_DEFAULT_SCENE, + &ITE_Resources, + ARRAYSIZE(ITE_MACCD_G_GameFiles), + ITE_MACCD_G_GameFiles, + ARRAYSIZE(ITEWINDEMO_GameFonts), + ITEWINDEMO_GameFonts, + &ITEMACCD_G_GameSound, + &ITEMACCD_G_GameSound, + NULL, + 0, + NULL, + GF_BIG_ENDIAN_DATA | GF_CD_FX, + Common::EN_ANY, + Common::kPlatformMacintosh, + }, + + // Inherit the earth - MAC CD Wyrmkeep version + { + "ite", + GType_ITE, + GID_ITE_MACCD, + "Wyrmkeep CD", + &ITE_DisplayInfo, + ITE_DEFAULT_SCENE, + &ITE_Resources, + ARRAYSIZE(ITE_MACCD_GameFiles), + ITE_MACCD_GameFiles, + ARRAYSIZE(ITEWINDEMO_GameFonts), + ITEWINDEMO_GameFonts, + &ITEMACCD_GameSound, + &ITEMACCD_GameSound, + &ITEMACCD_GameMusic, + ARRAYSIZE(ITEMacPatch_Files), + ITEMacPatch_Files, + GF_BIG_ENDIAN_DATA | GF_WYRMKEEP | GF_CD_FX, + Common::EN_ANY, + Common::kPlatformMacintosh, + }, + + // Inherit the earth - Linux Demo version + // Note: it should be before GID_ITE_WINDEMO2 version + { + "ite", + GType_ITE, + GID_ITE_LINDEMO, + "Demo", + &ITE_DisplayInfo, + ITE_DEFAULT_SCENE, + &ITE_Resources, + ARRAYSIZE(ITE_LINDEMO_GameFiles), + ITE_LINDEMO_GameFiles, + ARRAYSIZE(ITEWINDEMO_GameFonts), + ITEWINDEMO_GameFonts, + &ITEWINDEMO2_GameVoice, + &ITEWINDEMO2_GameSound, + &ITELINDEMO_GameMusic, + ARRAYSIZE(ITELinPatch_Files), + ITELinPatch_Files, + GF_WYRMKEEP | GF_CD_FX | GF_SCENE_SUBSTITUTES, + Common::EN_ANY, + Common::kPlatformLinux, + }, + + // Inherit the earth - Win32 Demo version + { + "ite", + GType_ITE, + GID_ITE_WINDEMO2, + "Demo", + &ITE_DisplayInfo, + ITE_DEFAULT_SCENE, + &ITE_Resources, + ARRAYSIZE(ITE_WINDEMO2_GameFiles), + ITE_WINDEMO2_GameFiles, + ARRAYSIZE(ITEWINDEMO_GameFonts), + ITEWINDEMO_GameFonts, + &ITEWINDEMO2_GameVoice, + &ITEWINDEMO2_GameSound, + NULL, + ARRAYSIZE(ITEWinPatch2_Files), + ITEWinPatch2_Files, + GF_WYRMKEEP | GF_CD_FX | GF_SCENE_SUBSTITUTES, + Common::EN_ANY, + Common::kPlatformWindows, + }, + + // Inherit the earth - early Win32 Demo version + { + "ite", + GType_ITE, + GID_ITE_WINDEMO1, + "early Demo", + &ITE_DisplayInfo, + ITE_DEFAULT_SCENE, + &ITE_Resources, + ARRAYSIZE(ITE_WINDEMO1_GameFiles), + ITE_WINDEMO1_GameFiles, + ARRAYSIZE(ITEWINDEMO_GameFonts), + ITEWINDEMO_GameFonts, + &ITEWINDEMO1_GameSound, + &ITEWINDEMO1_GameSound, + NULL, + ARRAYSIZE(ITEWinPatch1_Files), + ITEWinPatch1_Files, + GF_WYRMKEEP | GF_CD_FX, + Common::EN_ANY, + Common::kPlatformWindows, + }, + + // Inherit the earth - Wyrmkeep combined Windows/Mac/Linux CD + { + "ite", + GType_ITE, + GID_ITE_MULTICD, + "Multi-OS CD Version", + &ITE_DisplayInfo, + ITE_DEFAULT_SCENE, + &ITE_Resources, + ARRAYSIZE(ITE_MULTICD_GameFiles), + ITE_MULTICD_GameFiles, + ARRAYSIZE(ITECD_GameFonts), + ITECD_GameFonts, + &ITEMACCD_GameSound, + &ITECD_GameSound, + &ITEMACCD_GameMusic, + 0, + NULL, + GF_WYRMKEEP | GF_CD_FX, + Common::EN_ANY, + Common::kPlatformUnknown, + }, + + // Inherit the earth - Wyrmkeep Linux CD version + { + "ite", + GType_ITE, + GID_ITE_LINCD, + "CD Version", + &ITE_DisplayInfo, + ITE_DEFAULT_SCENE, + &ITE_Resources, + ARRAYSIZE(ITE_LINCD_GameFiles), + ITE_LINCD_GameFiles, + ARRAYSIZE(ITECD_GameFonts), + ITECD_GameFonts, + &ITECD_GameSound, + &ITECD_GameSound, + &ITEMACCD_GameMusic, + ARRAYSIZE(ITELinPatch_Files), + ITELinPatch_Files, + GF_WYRMKEEP | GF_CD_FX, + Common::EN_ANY, + Common::kPlatformLinux, + }, + + // Inherit the earth - Wyrmkeep Windows CD version + { + "ite", + GType_ITE, + GID_ITE_WINCD, + "CD Version", + &ITE_DisplayInfo, + ITE_DEFAULT_SCENE, + &ITE_Resources, + ARRAYSIZE(ITE_WINCD_GameFiles), + ITE_WINCD_GameFiles, + ARRAYSIZE(ITECD_GameFonts), + ITECD_GameFonts, + &ITECD_GameSound, + &ITECD_GameSound, + NULL, + ARRAYSIZE(ITEWinPatch1_Files), + ITEWinPatch1_Files, + GF_WYRMKEEP | GF_CD_FX, + Common::EN_ANY, + Common::kPlatformWindows, + }, + + // Inherit the earth - DOS CD version + { + "ite", + GType_ITE, + GID_ITE_CD_G, + "CD Version", + &ITE_DisplayInfo, + ITE_DEFAULT_SCENE, + &ITE_Resources, + ARRAYSIZE(ITE_CD_G_GameFiles), + ITE_CD_G_GameFiles, + ARRAYSIZE(ITECD_GameFonts), + ITECD_GameFonts, + &ITECD_GameSound, + &ITECD_GameSound, + NULL, + 0, + NULL, + GF_CD_FX, + Common::EN_ANY, + Common::kPlatformPC, + }, + + // Inherit the earth - DOS CD version with digital music + { + "ite", + GType_ITE, + GID_ITE_CD_G2, + "CD Version", + &ITE_DisplayInfo, + ITE_DEFAULT_SCENE, + &ITE_Resources, + ARRAYSIZE(ITE_CD_G2_GameFiles), + ITE_CD_G2_GameFiles, + ARRAYSIZE(ITECD_GameFonts), + ITECD_GameFonts, + &ITECD_GameSound, + &ITECD_GameSound, + &ITEMACCD_GameMusic, + 0, + NULL, + GF_CD_FX, + Common::EN_ANY, + Common::kPlatformPC, + }, + + // Inherit the earth - DOS CD German version + { + "ite", + GType_ITE, + GID_ITE_CD_DE, + "CD Version", + &ITE_DisplayInfo, + ITE_DEFAULT_SCENE, + &ITE_Resources, + ARRAYSIZE(ITE_CD_DE_GameFiles), + ITE_CD_DE_GameFiles, + ARRAYSIZE(ITECD_GameFonts), + ITECD_GameFonts, + &ITECD_GameSound, + &ITECD_GameSound, + NULL, + 0, + NULL, + GF_CD_FX, + Common::DE_DEU, + Common::kPlatformPC, + }, + + // Inherit the earth - DOS CD German version with digital music + { + "ite", + GType_ITE, + GID_ITE_CD_DE2, + "CD Version", + &ITE_DisplayInfo, + ITE_DEFAULT_SCENE, + &ITE_Resources, + ARRAYSIZE(ITE_CD_DE2_GameFiles), + ITE_CD_DE2_GameFiles, + ARRAYSIZE(ITECD_GameFonts), + ITECD_GameFonts, + &ITECD_GameSound, + &ITECD_GameSound, + &ITEMACCD_GameMusic, + 0, + NULL, + GF_CD_FX, + Common::DE_DEU, + Common::kPlatformPC, + }, + + // Inherit the earth - CD version + { + "ite", + GType_ITE, + GID_ITE_CD, + "CD Version", + &ITE_DisplayInfo, + ITE_DEFAULT_SCENE, + &ITE_Resources, + ARRAYSIZE(ITE_CD_GameFiles), + ITE_CD_GameFiles, + ARRAYSIZE(ITECD_GameFonts), + ITECD_GameFonts, + &ITECD_GameSound, + &ITECD_GameSound, + NULL, + 0, + NULL, + GF_CD_FX, + Common::EN_ANY, + Common::kPlatformPC, + }, + + // Inherit the earth - German Floppy version + { + "ite", + GType_ITE, + GID_ITE_DISK_DE, + "Floppy", + &ITE_DisplayInfo, + ITE_DEFAULT_SCENE, + &ITE_Resources, + ARRAYSIZE(ITE_DISK_DE_GameFiles), + ITE_DISK_DE_GameFiles, + ARRAYSIZE(ITEDISK_GameFonts), + ITEDISK_GameFonts, + &ITEDISK_GameSound, + &ITEDISK_GameSound, + NULL, + 0, + NULL, + 0, + Common::DE_DEU, + Common::kPlatformPC, + }, + + // Inherit the earth - German Floppy version with digital music + { + "ite", + GType_ITE, + GID_ITE_DISK_DE2, + "Floppy", + &ITE_DisplayInfo, + ITE_DEFAULT_SCENE, + &ITE_Resources, + ARRAYSIZE(ITE_DISK_DE2_GameFiles), + ITE_DISK_DE2_GameFiles, + ARRAYSIZE(ITEDISK_GameFonts), + ITEDISK_GameFonts, + &ITEDISK_GameSound, + &ITEDISK_GameSound, + &ITEMACCD_GameMusic, + 0, + NULL, + 0, + Common::DE_DEU, + Common::kPlatformPC, + }, + + // Inherit the earth - Disk version + { + "ite", + GType_ITE, + GID_ITE_DISK_G, + "Floppy", + &ITE_DisplayInfo, + ITE_DEFAULT_SCENE, + &ITE_Resources, + ARRAYSIZE(ITE_DISK_G_GameFiles), + ITE_DISK_G_GameFiles, + ARRAYSIZE(ITEDISK_GameFonts), + ITEDISK_GameFonts, + &ITEDISK_GameSound, + &ITEDISK_GameSound, + NULL, + 0, + NULL, + 0, + Common::EN_ANY, + Common::kPlatformPC, + }, + + // Inherit the earth - Disk version with digital music + { + "ite", + GType_ITE, + GID_ITE_DISK_G2, + "Floppy", + &ITE_DisplayInfo, + ITE_DEFAULT_SCENE, + &ITE_Resources, + ARRAYSIZE(ITE_DISK_G2_GameFiles), + ITE_DISK_G2_GameFiles, + ARRAYSIZE(ITEDISK_GameFonts), + ITEDISK_GameFonts, + &ITEDISK_GameSound, + &ITEDISK_GameSound, + &ITEMACCD_GameMusic, + 0, + NULL, + 0, + Common::EN_ANY, + Common::kPlatformPC, + }, + + // I Have No Mouth And I Must Scream - Demo version + { + "ihnm", + GType_IHNM, + GID_IHNM_DEMO, + "Demo", + &IHNM_DisplayInfo, + 0, + &IHNM_Resources, + ARRAYSIZE(IHNM_DEMO_GameFiles), + IHNM_DEMO_GameFiles, + ARRAYSIZE(IHNMDEMO_GameFonts), + IHNMDEMO_GameFonts, + &IHNM_GameSound, + &IHNM_GameSound, + NULL, + 0, + NULL, + 0, + Common::EN_ANY, + Common::kPlatformPC, + }, + + // I Have No Mouth And I Must Scream - CD version + { + "ihnm", + GType_IHNM, + GID_IHNM_CD, + "", + &IHNM_DisplayInfo, + IHNM_DEFAULT_SCENE, + &IHNM_Resources, + ARRAYSIZE(IHNM_CD_GameFiles), + IHNM_CD_GameFiles, + ARRAYSIZE(IHNMCD_GameFonts), + IHNMCD_GameFonts, + &IHNM_GameSound, + &IHNM_GameSound, + NULL, + 0, + NULL, + 0, + Common::EN_ANY, + Common::kPlatformPC, + }, + + // I Have No Mouth And I Must Scream - De CD version + { + "ihnm", + GType_IHNM, + GID_IHNM_CD_DE, + "", + &IHNM_DisplayInfo, + IHNM_DEFAULT_SCENE, + &IHNM_Resources, + ARRAYSIZE(IHNM_CD_DE_GameFiles), + IHNM_CD_DE_GameFiles, + ARRAYSIZE(IHNMCD_GameFonts), + IHNMCD_GameFonts, + &IHNM_GameSound, + &IHNM_GameSound, + NULL, + 0, + NULL, + 0, + Common::DE_DEU, + Common::kPlatformPC, + }, + // I Have No Mouth And I Must Scream - Sp CD version + { + "ihnm", + GType_IHNM, + GID_IHNM_CD_ES, + "", + &IHNM_DisplayInfo, + IHNM_DEFAULT_SCENE, + &IHNM_Resources, + ARRAYSIZE(IHNM_CD_ES_GameFiles), + IHNM_CD_ES_GameFiles, + ARRAYSIZE(IHNMCD_GameFonts), + IHNMCD_GameFonts, + &IHNM_GameSound, + &IHNM_GameSound, + NULL, + 0, + NULL, + 0, + Common::ES_ESP, + Common::kPlatformPC, + }, + // I Have No Mouth And I Must Scream - Ru CD version + { + "ihnm", + GType_IHNM, + GID_IHNM_CD_RU, + "", + &IHNM_DisplayInfo, + IHNM_DEFAULT_SCENE, + &IHNM_Resources, + ARRAYSIZE(IHNM_CD_RU_GameFiles), + IHNM_CD_RU_GameFiles, + ARRAYSIZE(IHNMCD_GameFonts), + IHNMCD_GameFonts, + &IHNM_GameSound, + &IHNM_GameSound, + NULL, + 0, + NULL, + 0, + Common::RU_RUS, + Common::kPlatformPC, + }, + // I Have No Mouth And I Must Scream - Fr CD version + { + "ihnm", + GType_IHNM, + GID_IHNM_CD_FR, + "", + &IHNM_DisplayInfo, + IHNM_DEFAULT_SCENE, + &IHNM_Resources, + ARRAYSIZE(IHNM_CD_FR_GameFiles), + IHNM_CD_FR_GameFiles, + ARRAYSIZE(IHNMCD_GameFonts), + IHNMCD_GameFonts, + &IHNM_GameSound, + &IHNM_GameSound, + NULL, + 0, + NULL, + 0, + Common::FR_FRA, + Common::kPlatformPC, + }, +}; + + diff --git a/engines/saga/sagagame.h b/engines/saga/sagagame.h new file mode 100644 index 0000000000..dd4a756c2a --- /dev/null +++ b/engines/saga/sagagame.h @@ -0,0 +1,357 @@ +enum SAGAGameType { + GType_ITE = 0, + GType_IHNM = 1 +}; + +enum GameIds { + // Dreamers Guild + GID_ITE_DEMO_G = 0, + GID_ITE_DISK_G, + GID_ITE_DISK_G2, + GID_ITE_CD_G, + GID_ITE_CD_G2, + GID_ITE_MACCD_G, + + // Wyrmkeep + GID_ITE_CD, // data for Win rerelease is same as in old DOS + GID_ITE_WINCD, // but it has a bunch of patch files + GID_ITE_MACCD, + GID_ITE_LINCD, + GID_ITE_MULTICD, // Wyrmkeep combined Windows/Mac/Linux version + GID_ITE_WINDEMO1, // older Wyrmkeep windows demo + GID_ITE_MACDEMO1, // older Wyrmkeep mac demo + GID_ITE_LINDEMO, + GID_ITE_WINDEMO2, + GID_ITE_MACDEMO2, + + // German + GID_ITE_DISK_DE, + GID_ITE_DISK_DE2, + GID_ITE_AMIGACD_DE, // TODO + GID_ITE_OLDMAC_DE, // TODO + GID_ITE_AMIGA_FL_DE,// TODO + GID_ITE_CD_DE, // reported by mld. Bestsellergamers cover disk + GID_ITE_CD_DE2, + GID_ITE_AMIGA_AGA_DEMO, // TODO + GID_ITE_AMIGA_ECS_DEMO, // TODO + + GID_IHNM_DEMO, + GID_IHNM_CD, + GID_IHNM_CD_DE, // reported by mld. German retail + GID_IHNM_CD_ES, + GID_IHNM_CD_RU, + GID_IHNM_CD_FR +}; + +enum GameFileTypes { + GAME_RESOURCEFILE = 1 << 0, + GAME_SCRIPTFILE = 1 << 1, + GAME_SOUNDFILE = 1 << 2, + GAME_VOICEFILE = 1 << 3, + GAME_DEMOFILE = 1 << 4, + GAME_MUSICFILE = 1 << 5, + GAME_MUSICFILE_GM = 1 << 6, + GAME_MUSICFILE_FM = 1 << 7, + GAME_PATCHFILE = 1 << 8, + GAME_MACBINARY = 1 << 9, + GAME_SWAPENDIAN = 1 << 10 +}; + +enum GameFeatures { + GF_BIG_ENDIAN_DATA = 1 << 0, + GF_WYRMKEEP = 1 << 1, + GF_CD_FX = 1 << 2, + GF_SCENE_SUBSTITUTES = 1 << 3 +}; + +enum VerbTypeIds { + kVerbITENone = 0, + kVerbITEPickUp = 1, + kVerbITELookAt = 2, + kVerbITEWalkTo = 3, + kVerbITETalkTo = 4, + kVerbITEOpen = 5, + kVerbITEClose = 6, + kVerbITEGive = 7, + kVerbITEUse = 8, + kVerbITEOptions = 9, + kVerbITEEnter = 10, + kVerbITELeave = 11, + kVerbITEBegin = 12, + kVerbITEWalkOnly = 13, + kVerbITELookOnly = 14, + + + kVerbIHNMNone = 0, + kVerbIHNMWalk = 1, + kVerbIHNMLookAt = 2, + kVerbIHNMTake = 3, + kVerbIHNMUse = 4, + kVerbIHNMTalkTo = 5, + kVerbIHNMSwallow = 6, + kVerbIHNMGive = 7, + kVerbIHNMPush = 8, + kVerbIHNMOptions = 9, + kVerbIHNMEnter = 10, + kVerbIHNMLeave = 11, + kVerbIHNMBegin = 12, + kVerbIHNMWalkOnly = 13, + kVerbIHNMLookOnly = 14, + + kVerbTypeIdsMax = kVerbITELookOnly + 1 +}; +enum PanelButtonType { + kPanelButtonVerb = 1 << 0, + kPanelButtonArrow = 1 << 1, + kPanelButtonConverseText = 1 << 2, + kPanelButtonInventory = 1 << 3, + + kPanelButtonOption = 1 << 4, + kPanelButtonOptionSlider = 1 << 5, + kPanelButtonOptionSaveFiles = 1 << 6, + kPanelButtonOptionText = 1 << 7, + + kPanelButtonQuit = 1 << 8, + kPanelButtonQuitText = 1 << 9, + + kPanelButtonLoad = 1 << 10, + kPanelButtonLoadText = 1 << 11, + + kPanelButtonSave = 1 << 12, + kPanelButtonSaveText = 1 << 13, + kPanelButtonSaveEdit = 1 << 14, + + kPanelButtonProtectText = 1 << 15, + kPanelButtonProtectEdit = 1 << 16, + + kPanelAllButtons = 0xFFFFF +}; + +enum GameSoundTypes { + kSoundPCM = 0, + kSoundVOX = 1, + kSoundVOC = 2, + kSoundWAV = 3, + kSoundMacPCM = 4 +}; + +enum TextStringIds { + kTextWalkTo, + kTextLookAt, + kTextPickUp, + kTextTalkTo, + kTextOpen, + kTextClose, + kTextUse, + kTextGive, + kTextOptions, + kTextTest, + kTextDemo, + kTextHelp, + kTextQuitGame, + kTextFast, + kTextSlow, + kTextOn, + kTextOff, + kTextContinuePlaying, + kTextLoad, + kTextSave, + kTextGameOptions, + kTextReadingSpeed, + kTextMusic, + kTextSound, + kTextCancel, + kTextQuit, + kTextOK, + kTextMid, + kTextClick, + kText10Percent, + kText20Percent, + kText30Percent, + kText40Percent, + kText50Percent, + kText60Percent, + kText70Percent, + kText80Percent, + kText90Percent, + kTextMax, + kTextQuitTheGameQuestion, + kTextLoadSuccessful, + kTextEnterSaveGameName, + kTextGiveTo, + kTextUseWidth, + kTextNewSave, + kTextICantPickup, + kTextNothingSpecial, + kTextNoPlaceToOpen, + kTextNoOpening, + kTextDontKnow, + kTextShowDialog, + kTextEnterProtectAnswer +}; + + +struct GameFileDescription { + const char *fileName; + uint16 fileType; + const char *md5; +}; + +struct GameResourceDescription { + uint32 sceneLUTResourceId; + uint32 moduleLUTResourceId; + uint32 mainPanelResourceId; + uint32 conversePanelResourceId; + uint32 optionPanelResourceId; + uint32 mainSpritesResourceId; + uint32 mainPanelSpritesResourceId; + uint32 defaultPortraitsResourceId; + uint32 mainStringsResourceId; + uint32 actorsStringsResourceId; +}; + +struct GameFontDescription { + uint32 fontResourceId; +}; + +struct PanelButton { + PanelButtonType type; + int xOffset; + int yOffset; + int width; + int height; + int id; + uint16 ascii; + int state; + int upSpriteNumber; + int downSpriteNumber; + int overSpriteNumber; +}; + +struct GameDisplayInfo { + int logicalWidth; + int logicalHeight; + + int pathStartY; + int sceneHeight; + + int statusXOffset; + int statusYOffset; + int statusWidth; + int statusHeight; + int statusTextY; + int statusTextColor; + int statusBGColor; + + int saveReminderXOffset; + int saveReminderYOffset; + int saveReminderWidth; + int saveReminderHeight; + int saveReminderFirstSpriteNumber; + int saveReminderSecondSpriteNumber; + + int leftPortraitXOffset; + int leftPortraitYOffset; + int rightPortraitXOffset; + int rightPortraitYOffset; + + int inventoryUpButtonIndex; + int inventoryDownButtonIndex; + int inventoryRows; + int inventoryColumns; + + int mainPanelXOffset; + int mainPanelYOffset; + int mainPanelButtonsCount; + PanelButton *mainPanelButtons; + + int converseMaxTextWidth; + int converseTextHeight; + int converseTextLines; + int converseUpButtonIndex; + int converseDownButtonIndex; + + int conversePanelXOffset; + int conversePanelYOffset; + int conversePanelButtonsCount; + PanelButton *conversePanelButtons; + + int optionSaveFilePanelIndex; + int optionSaveFileSliderIndex; + uint32 optionSaveFileVisible; + + int optionPanelXOffset; + int optionPanelYOffset; + int optionPanelButtonsCount; + PanelButton *optionPanelButtons; + + int quitPanelXOffset; + int quitPanelYOffset; + int quitPanelWidth; + int quitPanelHeight; + int quitPanelButtonsCount; + PanelButton *quitPanelButtons; + + int loadPanelXOffset; + int loadPanelYOffset; + int loadPanelWidth; + int loadPanelHeight; + int loadPanelButtonsCount; + PanelButton *loadPanelButtons; + + int saveEditIndex; + int savePanelXOffset; + int savePanelYOffset; + int savePanelWidth; + int savePanelHeight; + int savePanelButtonsCount; + PanelButton *savePanelButtons; + + int protectEditIndex; + int protectPanelXOffset; + int protectPanelYOffset; + int protectPanelWidth; + int protectPanelHeight; + int protectPanelButtonsCount; + PanelButton *protectPanelButtons; +}; + +struct GameSoundInfo { + GameSoundTypes resourceType; + long frequency; + int sampleBits; + bool stereo; + bool isBigEndian; + bool isSigned; +}; + +struct GamePatchDescription { + const char *fileName; + uint16 fileType; + uint32 resourceId; + GameSoundInfo *soundInfo; +}; + +struct GameDescription { + const char *name; + SAGAGameType gameType; + GameIds gameId; + const char *extra; + GameDisplayInfo *gameDisplayInfo; + int startSceneNumber; + GameResourceDescription *resourceDescription; + int filesCount; + GameFileDescription *filesDescriptions; + int fontsCount; + GameFontDescription *fontDescriptions; + GameSoundInfo *voiceInfo; + GameSoundInfo *sfxInfo; + GameSoundInfo *musicInfo; + int patchesCount; + GamePatchDescription *patchDescriptions; + uint32 features; + Common::Language language; + Common::Platform platform; +}; + +#define FILE_MD5_BYTES 5000
\ No newline at end of file diff --git a/engines/saga/resnames.h b/engines/saga/sagaresnames.h index 21c332e066..21c332e066 100644 --- a/engines/saga/resnames.h +++ b/engines/saga/sagaresnames.h diff --git a/engines/saga/saveload.cpp b/engines/saga/saveload.cpp index 5f37b090e2..22c983beb1 100644 --- a/engines/saga/saveload.cpp +++ b/engines/saga/saveload.cpp @@ -36,7 +36,7 @@ #include "saga/isomap.h" #include "saga/music.h" #include "saga/render.h" -#include "saga/resnames.h" +#include "saga/sagaresnames.h" #include "saga/scene.h" #include "saga/script.h" diff --git a/engines/saga/scene.cpp b/engines/saga/scene.cpp index f98c1f2661..8311308018 100644 --- a/engines/saga/scene.cpp +++ b/engines/saga/scene.cpp @@ -43,7 +43,7 @@ #include "saga/stream.h" #include "saga/actor.h" #include "saga/rscfile.h" -#include "saga/resnames.h" +#include "saga/sagaresnames.h" #include "graphics/ilbm.h" #include "common/util.h" diff --git a/engines/saga/script.h b/engines/saga/script.h index 218d92c4c3..1d922013ec 100644 --- a/engines/saga/script.h +++ b/engines/saga/script.h @@ -58,43 +58,6 @@ enum AddressTypes { kAddressIndex = 7 // index from id*/ }; -enum VerbTypeIds { - kVerbITENone = 0, - kVerbITEPickUp = 1, - kVerbITELookAt = 2, - kVerbITEWalkTo = 3, - kVerbITETalkTo = 4, - kVerbITEOpen = 5, - kVerbITEClose = 6, - kVerbITEGive = 7, - kVerbITEUse = 8, - kVerbITEOptions = 9, - kVerbITEEnter = 10, - kVerbITELeave = 11, - kVerbITEBegin = 12, - kVerbITEWalkOnly = 13, - kVerbITELookOnly = 14, - - - kVerbIHNMNone = 0, - kVerbIHNMWalk = 1, - kVerbIHNMLookAt = 2, - kVerbIHNMTake = 3, - kVerbIHNMUse = 4, - kVerbIHNMTalkTo = 5, - kVerbIHNMSwallow = 6, - kVerbIHNMGive = 7, - kVerbIHNMPush = 8, - kVerbIHNMOptions = 9, - kVerbIHNMEnter = 10, - kVerbIHNMLeave = 11, - kVerbIHNMBegin = 12, - kVerbIHNMWalkOnly = 13, - kVerbIHNMLookOnly = 14, - - kVerbTypeIdsMax = kVerbITELookOnly + 1 -}; - enum VerbTypes { kVerbNone, kVerbWalkTo, diff --git a/engines/saga/sfuncs.cpp b/engines/saga/sfuncs.cpp index 9caa15150b..5ae7bba621 100644 --- a/engines/saga/sfuncs.cpp +++ b/engines/saga/sfuncs.cpp @@ -45,7 +45,7 @@ #include "saga/scene.h" #include "saga/isomap.h" -#include "saga/resnames.h" +#include "saga/sagaresnames.h" #include "common/config-manager.h" diff --git a/engines/saga/sndres.cpp b/engines/saga/sndres.cpp index 7849ddecd0..3901999eab 100644 --- a/engines/saga/sndres.cpp +++ b/engines/saga/sndres.cpp @@ -27,7 +27,7 @@ #include "saga/saga.h" #include "saga/itedata.h" -#include "saga/resnames.h" +#include "saga/sagaresnames.h" #include "saga/rscfile.h" #include "saga/sndres.h" #include "saga/sound.h" diff --git a/engines/saga/sprite.cpp b/engines/saga/sprite.cpp index 5309b1f109..89baf3c0de 100644 --- a/engines/saga/sprite.cpp +++ b/engines/saga/sprite.cpp @@ -27,7 +27,7 @@ #include "saga/gfx.h" #include "saga/scene.h" -#include "saga/resnames.h" +#include "saga/sagaresnames.h" #include "saga/rscfile.h" #include "saga/font.h" diff --git a/engines/saga/sthread.cpp b/engines/saga/sthread.cpp index a186a61a8b..74310e2a09 100644 --- a/engines/saga/sthread.cpp +++ b/engines/saga/sthread.cpp @@ -34,7 +34,7 @@ #include "saga/stream.h" #include "saga/scene.h" -#include "saga/resnames.h" +#include "saga/sagaresnames.h" namespace Saga { |