diff options
Diffstat (limited to 'engines')
393 files changed, 3936 insertions, 2452 deletions
diff --git a/engines/advancedDetector.cpp b/engines/advancedDetector.cpp index 9beba6ce4a..b1d1008b60 100644 --- a/engines/advancedDetector.cpp +++ b/engines/advancedDetector.cpp @@ -78,7 +78,7 @@ static Common::String generatePreferredTarget(const Common::String &id, const AD res = res + "-cd"; } - if (desc->platform != Common::kPlatformPC && desc->platform != Common::kPlatformUnknown) { + if (desc->platform != Common::kPlatformDOS && desc->platform != Common::kPlatformUnknown) { res = res + "-" + getPlatformAbbrev(desc->platform); } diff --git a/engines/agi/agi.cpp b/engines/agi/agi.cpp index 98ffca22ed..1c342183cd 100644 --- a/engines/agi/agi.cpp +++ b/engines/agi/agi.cpp @@ -513,10 +513,7 @@ AgiBase::AgiBase(OSystem *syst, const AGIGameDescription *gameDesc) : Engine(sys AgiBase::~AgiBase() { delete _rnd; - if (_sound) { - _sound->deinitSound(); - delete _sound; - } + delete _sound; } void AgiBase::initRenderMode() { @@ -588,6 +585,21 @@ AgiEngine::AgiEngine(OSystem *syst, const AGIGameDescription *gameDesc) : AgiBas setupOpcodes(); _game._curLogic = NULL; _timerHack = 0; + + _lastSaveTime = 0; + _lastTick = 0; + + memset(_keyQueue, 0, sizeof(_keyQueue)); + memset(_predictiveResult, 0, sizeof(_predictiveResult)); + + _sprites = NULL; + _picture = NULL; + _loader = NULL; + _console = NULL; + + _egoHoldKey = false; + + } void AgiEngine::initialize() { @@ -650,7 +662,6 @@ void AgiEngine::initialize() { _game.sbuf = _game.sbuf16c; // Make sbuf point to the 16 color (+control line & priority info) AGI screen by default _gfx->initVideo(); - _sound->initSound(); _lastSaveTime = 0; diff --git a/engines/agi/agi.h b/engines/agi/agi.h index 520b0aae59..93a456b9a6 100644 --- a/engines/agi/agi.h +++ b/engines/agi/agi.h @@ -942,7 +942,7 @@ public: void setvar(int, int); void decrypt(uint8 *mem, int len); void releaseSprites(); - int mainCycle(); + int mainCycle(bool onlyCheckForEvents = false); int viewPictures(); int runGame(); void inventory(); diff --git a/engines/agi/cycle.cpp b/engines/agi/cycle.cpp index 5daadbd1df..702ca907d7 100644 --- a/engines/agi/cycle.cpp +++ b/engines/agi/cycle.cpp @@ -187,12 +187,14 @@ void AgiEngine::oldInputMode() { } // If main_cycle returns false, don't process more events! -int AgiEngine::mainCycle() { +int AgiEngine::mainCycle(bool onlyCheckForEvents) { unsigned int key, kascii; VtEntry *v = &_game.viewTable[0]; - pollTimer(); - updateTimer(); + if (!onlyCheckForEvents) { + pollTimer(); + updateTimer(); + } key = doPollKeyboard(); @@ -205,7 +207,13 @@ int AgiEngine::mainCycle() { _game.vars[29] = _mouse.y; //} - if (key == KEY_PRIORITY) { + if (key == KEY_STATUSLN) { // F11 + _debug.statusline = !_debug.statusline; + writeStatus(); + key = 0; + } + + if (key == KEY_PRIORITY) { // F12 _sprites->eraseBoth(); _debug.priority = !_debug.priority; _picture->showPic(); @@ -214,14 +222,8 @@ int AgiEngine::mainCycle() { key = 0; } - if (key == KEY_STATUSLN) { - _debug.statusline = !_debug.statusline; - writeStatus(); - key = 0; - } - // Click-to-walk mouse interface - if (_game.playerControl && v->flags & fAdjEgoXY) { + if (_game.playerControl && (v->flags & fAdjEgoXY)) { int toX = v->parm1; int toY = v->parm2; @@ -289,10 +291,13 @@ int AgiEngine::mainCycle() { break; } } while (restartProcessKey); - _gfx->doUpdate(); - if (_game.msgBoxTicks > 0) - _game.msgBoxTicks--; + if (!onlyCheckForEvents) { + _gfx->doUpdate(); + + if (_game.msgBoxTicks > 0) + _game.msgBoxTicks--; + } return true; } @@ -412,7 +417,7 @@ int AgiEngine::runGame() { else setvar(vSoundgen, kAgiSoundTandy); break; - case Common::kPlatformPC: + case Common::kPlatformDOS: default: setvar(vComputer, kAgiComputerPC); setvar(vSoundgen, kAgiSoundPC); diff --git a/engines/agi/detection.cpp b/engines/agi/detection.cpp index 5f7780bfe3..3f55117868 100644 --- a/engines/agi/detection.cpp +++ b/engines/agi/detection.cpp @@ -318,8 +318,6 @@ SaveStateDescriptor AgiMetaEngine::querySaveMetaInfos(const char *target, int sl int minutes = saveTime & 0xFF; desc.setSaveTime(hour, minutes); - - // TODO: played time } @@ -350,7 +348,7 @@ const ADGameDescription *AgiMetaEngine::fallbackDetect(const FileMap &allFilesXX // Set the default values for the fallback descriptor's ADGameDescription part. g_fallbackDesc.desc.language = Common::UNK_LANG; - g_fallbackDesc.desc.platform = Common::kPlatformPC; + g_fallbackDesc.desc.platform = Common::kPlatformDOS; g_fallbackDesc.desc.flags = ADGF_NO_FLAGS; // Set default values for the fallback descriptor's AGIGameDescription part. diff --git a/engines/agi/detection_tables.h b/engines/agi/detection_tables.h index 9d67b15adb..0c2c3ed3be 100644 --- a/engines/agi/detection_tables.h +++ b/engines/agi/detection_tables.h @@ -54,14 +54,14 @@ namespace Agi { ver \ } -#define BOOTER2(id,extra,fname,md5,size,ver,gid) GAME_LVFPN(id,extra,fname,md5,size,Common::EN_ANY,ver,0,gid,Common::kPlatformPC,GType_V2) -#define GAME(id,extra,md5,ver,gid) GAME_LVFPN(id,extra,"logdir",md5,-1,Common::EN_ANY,ver,0,gid,Common::kPlatformPC,GType_V2) -#define GAME3(id,extra,fname,md5,ver,gid) GAME_LVFPN(id,extra,fname,md5,-1,Common::EN_ANY,ver,0,gid,Common::kPlatformPC,GType_V3) +#define BOOTER2(id,extra,fname,md5,size,ver,gid) GAME_LVFPN(id,extra,fname,md5,size,Common::EN_ANY,ver,0,gid,Common::kPlatformDOS,GType_V2) +#define GAME(id,extra,md5,ver,gid) GAME_LVFPN(id,extra,"logdir",md5,-1,Common::EN_ANY,ver,0,gid,Common::kPlatformDOS,GType_V2) +#define GAME3(id,extra,fname,md5,ver,gid) GAME_LVFPN(id,extra,fname,md5,-1,Common::EN_ANY,ver,0,gid,Common::kPlatformDOS,GType_V3) #define GAME_P(id,extra,md5,ver,gid,platform) GAME_LVFPN(id,extra,"logdir",md5,-1,Common::EN_ANY,ver,0,gid,platform,GType_V2) #define GAME_FP(id,extra,md5,ver,flags,gid,platform) GAME_LVFPN(id,extra,"logdir",md5,-1,Common::EN_ANY,ver,flags,gid,platform,GType_V2) -#define GAME_F(id,extra,md5,ver,flags,gid) GAME_FP(id,extra,md5,ver,flags,gid,Common::kPlatformPC) +#define GAME_F(id,extra,md5,ver,flags,gid) GAME_FP(id,extra,md5,ver,flags,gid,Common::kPlatformDOS) #define GAME_PS(id,extra,md5,size,ver,gid,platform) GAME_LVFPN(id,extra,"logdir",md5,size,Common::EN_ANY,ver,0,gid,platform,GType_V2) @@ -77,7 +77,7 @@ namespace Agi { #define GAME3_PS(id,extra,fname,md5,size,ver,flags,gid,platform) GAME_LVFPN(id,extra,fname,md5,size,Common::EN_ANY,ver,flags,gid,platform,GType_V3) -#define FANMADE_ILVF(id,name,md5,lang,ver,features) GAME_LVFPNF(id,name,"logdir",md5,-1,lang,ver,(GF_FANMADE|features),GID_FANMADE,Common::kPlatformPC,GType_V2) +#define FANMADE_ILVF(id,name,md5,lang,ver,features) GAME_LVFPNF(id,name,"logdir",md5,-1,lang,ver,(GF_FANMADE|features),GID_FANMADE,Common::kPlatformDOS,GType_V2) #define FANMADE_ISVP(id,name,md5,size,ver,platform) GAME_LVFPNF(id,name,"logdir",md5,size,Common::EN_ANY,ver,GF_FANMADE,GID_FANMADE,platform,GType_V2) #define FANMADE_SVP(name,md5,size,ver,platform) FANMADE_ISVP("agi-fanmade",name,md5,size,ver,platform) @@ -128,7 +128,7 @@ static const AGIGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -149,7 +149,7 @@ static const AGIGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -170,7 +170,7 @@ static const AGIGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -191,7 +191,7 @@ static const AGIGameDescription gameDescriptions[] = { GAME("bc", "2.00 1987-06-14", "7f598d4712319b09d7bd5b3be10a2e4a", 0x2440, GID_BC), // Black Cauldron (Russian) - GAME_LPS("bc", "", "b7de782dfdf8ea7dde8064f09804bcf5", 357, Common::RU_RUS, 0x2440, GID_BC, Common::kPlatformPC), + GAME_LPS("bc", "", "b7de782dfdf8ea7dde8064f09804bcf5", 357, Common::RU_RUS, 0x2440, GID_BC, Common::kPlatformDOS), // Black Cauldron (PC 5.25") 2.10 11/10/88 [AGI 3.002.098] GAME3("bc", "2.10 1988-11-10 5.25\"", "bcdir", "0c5a9acbcc7e51127c34818e75806df6", 0x3149, GID_BC), @@ -218,7 +218,7 @@ static const AGIGameDescription gameDescriptions[] = { // reported by Filippos (thebluegr) in bugreport #1654500 // Menus not tested - GAME_PS("ddp", "1.0C 1986-06-09", "550971d196f65190a5c760d2479406ef", 132, 0x2272, GID_DDP, Common::kPlatformPC), + GAME_PS("ddp", "1.0C 1986-06-09", "550971d196f65190a5c760d2479406ef", 132, 0x2272, GID_DDP, Common::kPlatformDOS), // Gold Rush! (Amiga) 1.01 1/13/89 aka 2.05 3/9/89 # 2.316 GAME3_PS("goldrush", "1.01 1989-01-13 aka 2.05 1989-03-09", "dirs", "a1d4de3e75c2688c1e2ca2634ffc3bd8", 2399, 0x3149, 0, GID_GOLDRUSH, Common::kPlatformAmiga), @@ -311,7 +311,7 @@ static const AGIGameDescription gameDescriptions[] = { GAME("kq2", "2.2 1987-05-07 5.25\"/3.5\"", "b944c4ff18fb8867362dc21cc688a283", 0x2917, GID_KQ2), // King's Quest 2 (Russian) - GAME_LPS("kq2", "", "35211c574ececebdc723b23e35f99275", 543, Common::RU_RUS, 0x2917, GID_KQ2, Common::kPlatformPC), + GAME_LPS("kq2", "", "35211c574ececebdc723b23e35f99275", 543, Common::RU_RUS, 0x2917, GID_KQ2, Common::kPlatformDOS), // King's Quest 2 (CoCo3 360k) [AGI 2.023] GAME_PS("kq2", "", "b944c4ff18fb8867362dc21cc688a283", 543, 0x2440, GID_KQ2, Common::kPlatformCoCo3), @@ -344,10 +344,10 @@ static const AGIGameDescription gameDescriptions[] = { // King's Quest 3 (PC) 1.01 11/08/86 [AGI 2.272] // Does not have menus, crashes if menus are enforced. Therefore, ESC pauses the game - GAME_FP("kq3", "1.01 1986-11-08", "9c2b34e7ffaa89c8e2ecfeb3695d444b", 0x2272, GF_ESCPAUSE, GID_KQ3, Common::kPlatformPC), + GAME_FP("kq3", "1.01 1986-11-08", "9c2b34e7ffaa89c8e2ecfeb3695d444b", 0x2272, GF_ESCPAUSE, GID_KQ3, Common::kPlatformDOS), // King's Quest 3 (Russian) - GAME_LFPS("kq3", "", "5856dec6ccb9c4b70aee21044a19270a", 390, Common::RU_RUS, 0x2272, GF_ESCPAUSE, GID_KQ3, Common::kPlatformPC), + GAME_LFPS("kq3", "", "5856dec6ccb9c4b70aee21044a19270a", 390, Common::RU_RUS, 0x2272, GF_ESCPAUSE, GID_KQ3, Common::kPlatformDOS), // King's Quest 3 (PC 5.25") 2.00 5/25/87 [AGI 2.435] GAME("kq3", "2.00 1987-05-25 5.25\"", "18aad8f7acaaff760720c5c6885b6bab", 0x2440, GID_KQ3), @@ -396,10 +396,10 @@ static const AGIGameDescription gameDescriptions[] = { GAME("lsl1", "1.00 1987-06-01 5.25\"/3.5\"", "1fe764e66857e7f305a5f03ca3f4971d", 0x2440, GID_LSL1), // Leisure Suit Larry 1 Polish - GAME_LPS("lsl1", "2.00 2001-12-11", "7ba1fccc46d27c141e704706c1d0a85f", 303, Common::PL_POL, 0x2440, GID_LSL1, Common::kPlatformPC), + GAME_LPS("lsl1", "2.00 2001-12-11", "7ba1fccc46d27c141e704706c1d0a85f", 303, Common::PL_POL, 0x2440, GID_LSL1, Common::kPlatformDOS), // Leisure Suit Larry 1 Polish - Demo - GAME_LPS("lsl1", "Demo", "3b2f564306c401dff6334441df967ddd", 666, Common::PL_POL, 0x2917, GID_LSL1, Common::kPlatformPC), + GAME_LPS("lsl1", "Demo", "3b2f564306c401dff6334441df967ddd", 666, Common::PL_POL, 0x2917, GID_LSL1, Common::kPlatformDOS), // Leisure Suit Larry 1 (ST) 1.04 6/18/87 GAME_P("lsl1", "1.04 1987-06-18", "8b579f8673fe9448c2538f5ed9887cf0", 0x2440, GID_LSL1, Common::kPlatformAtariST), @@ -427,10 +427,10 @@ static const AGIGameDescription gameDescriptions[] = { // reported by Filippos (thebluegr) in bugreport #1654500 // Manhunter NY (PC 5.25") 1.22 8/31/88 [AGI 3.002.107] - GAME3_PS("mh1", "1.22 1988-08-31", "mhdir", "0c7b86f05fe02c2e26cff1b07450b82a", 2123, 0x3149, 0, GID_MH1, Common::kPlatformPC), + GAME3_PS("mh1", "1.22 1988-08-31", "mhdir", "0c7b86f05fe02c2e26cff1b07450b82a", 2123, 0x3149, 0, GID_MH1, Common::kPlatformDOS), // Manhunter NY (PC 3.5") 1.22 8/31/88 [AGI 3.002.102] - GAME3_PS("mh1", "1.22 1988-08-31", "mhdir", "5b625329021ad49fd0c1d6f2d6f54bba", 2141, 0x3149, 0, GID_MH1, Common::kPlatformPC), + GAME3_PS("mh1", "1.22 1988-08-31", "mhdir", "5b625329021ad49fd0c1d6f2d6f54bba", 2141, 0x3149, 0, GID_MH1, Common::kPlatformDOS), // Manhunter NY (CoCo3 720k) [AGI 2.023] GAME_PS("mh1", "", "b968285caf2f591c78dd9c9e26ab8974", 495, 0x2440, GID_MH1, Common::kPlatformCoCo3), @@ -458,7 +458,7 @@ static const AGIGameDescription gameDescriptions[] = { // Mickey's Space Adventure // Preagi game - GAMEpre_P("mickey", "", "1.pic", "b6ec04c91a05df374792872c4d4ce66d", 0x0000, GID_MICKEY, Common::kPlatformPC), + GAMEpre_P("mickey", "", "1.pic", "b6ec04c91a05df374792872c4d4ce66d", 0x0000, GID_MICKEY, Common::kPlatformDOS), #if 0 // Mixed-Up Mother Goose (Amiga) 1.1 @@ -495,7 +495,7 @@ static const AGIGameDescription gameDescriptions[] = { GAME("pq1", "2.0A 1987-10-23", "b9dbb305092851da5e34d6a9f00240b1", 0x2917, GID_PQ1), // Police Quest 1 (Russian) - GAME_LPS("pq1", "", "604cc8041d24c4c7e5fa8baf386ef76e", 360, Common::RU_RUS, 0x2917, GID_PQ1, Common::kPlatformPC), + GAME_LPS("pq1", "", "604cc8041d24c4c7e5fa8baf386ef76e", 360, Common::RU_RUS, 0x2917, GID_PQ1, Common::kPlatformDOS), // Police Quest 1 2.0G 12/3/87 GAME("pq1", "2.0G 1987-12-03 5.25\"/ST", "231f3e28170d6e982fc0ced4c98c5c1c", 0x2440, GID_PQ1), @@ -516,11 +516,11 @@ static const AGIGameDescription gameDescriptions[] = { // Space Quest 1 (PC 360k) 1.1A [AGI 2.272] // The original game did not have menus, they are enabled under ScummVM - GAME_FP("sq1", "1.1A 1986-11-13", "8d8c20ab9f4b6e4817698637174a1cb6", 0x2272, GF_MENUS, GID_SQ1, Common::kPlatformPC), + GAME_FP("sq1", "1.1A 1986-11-13", "8d8c20ab9f4b6e4817698637174a1cb6", 0x2272, GF_MENUS, GID_SQ1, Common::kPlatformDOS), // Space Quest 1 (PC 720k) 1.1A [AGI 2.272] // The original game did not have menus, they are enabled under ScummVM - GAME_FP("sq1", "1.1A 720kb", "0a92b1be7daf3bb98caad3f849868aeb", 0x2272, GF_MENUS, GID_SQ1, Common::kPlatformPC), + GAME_FP("sq1", "1.1A 720kb", "0a92b1be7daf3bb98caad3f849868aeb", 0x2272, GF_MENUS, GID_SQ1, Common::kPlatformDOS), // Space Quest 1 (Amiga) 1.2 # 2.082 // The original game did not have menus, they are enabled under ScummVM @@ -534,10 +534,10 @@ static const AGIGameDescription gameDescriptions[] = { // Space Quest 1 (PC) 1.0X [AGI 2.089] // Does not have menus, crashes if menus are enforced. Therefore, ESC pauses the game - GAME_FP("sq1", "1.0X 1986-09-24", "af93941b6c51460790a9efa0e8cb7122", 0x2089, GF_ESCPAUSE, GID_SQ1, Common::kPlatformPC), + GAME_FP("sq1", "1.0X 1986-09-24", "af93941b6c51460790a9efa0e8cb7122", 0x2089, GF_ESCPAUSE, GID_SQ1, Common::kPlatformDOS), // Space Quest 1 (Russian) - GAME_LFPS("sq1", "", "a279eb8ddbdefdb1ea6adc827a1d632a", 372, Common::RU_RUS, 0x2089, GF_ESCPAUSE, GID_SQ1, Common::kPlatformPC), + GAME_LFPS("sq1", "", "a279eb8ddbdefdb1ea6adc827a1d632a", 372, Common::RU_RUS, 0x2089, GF_ESCPAUSE, GID_SQ1, Common::kPlatformDOS), // Space Quest 1 (PC 5.25"/3.5") 2.2 [AGI 2.426/2.917] GAME("sq1", "2.2 1987-05-07 5.25\"/3.5\"", "5d67630aba008ec5f7f9a6d0a00582f4", 0x2440, GID_SQ1), @@ -584,17 +584,17 @@ static const AGIGameDescription gameDescriptions[] = { // reported by Filippos (thebluegr) in bugreport #1654500 // Space Quest 2 (PC 5.25") 2.0A [AGI 2.912] - GAME_PS("sq2", "2.0A 1987-11-06 5.25\"", "ad7ce8f800581ecc536f3e8021d7a74d", 423, 0x2917, GID_SQ2, Common::kPlatformPC), + GAME_PS("sq2", "2.0A 1987-11-06 5.25\"", "ad7ce8f800581ecc536f3e8021d7a74d", 423, 0x2917, GID_SQ2, Common::kPlatformDOS), // reported by RadG (radg123) in bug report #3260349 // Space Quest 2 (Spanish) - GAME_LPS("sq2", "", "1ae7640dd4d253c3ac2d708d61a35379", 426, Common::ES_ESP, 0x2917, GID_SQ2, Common::kPlatformPC), + GAME_LPS("sq2", "", "1ae7640dd4d253c3ac2d708d61a35379", 426, Common::ES_ESP, 0x2917, GID_SQ2, Common::kPlatformDOS), // Space Quest 2 (Russian) - GAME_LPS("sq2", "", "ba21c8934caf28e3ba45ce7d1cd6b041", 423, Common::RU_RUS, 0x2917, GID_SQ2, Common::kPlatformPC), + GAME_LPS("sq2", "", "ba21c8934caf28e3ba45ce7d1cd6b041", 423, Common::RU_RUS, 0x2917, GID_SQ2, Common::kPlatformDOS), // Space Quest 2 (PC 3.5") 2.0A [AGI 2.912] - GAME_PS("sq2", "2.0A 1987-11-06 3.5\"", "6c25e33d23b8bed42a5c7fa63d588e5c", 423, 0x2917, GID_SQ2, Common::kPlatformPC), + GAME_PS("sq2", "2.0A 1987-11-06 3.5\"", "6c25e33d23b8bed42a5c7fa63d588e5c", 423, 0x2917, GID_SQ2, Common::kPlatformDOS), // Space Quest 2 (PC 5.25"/ST) 2.0C/A [AGI 2.915] // Menus not tested @@ -610,10 +610,10 @@ static const AGIGameDescription gameDescriptions[] = { GAME_PS("sq2", "updated", "d24f19b047e65e1763eff4b46f3d50df", 768, 0x2440, GID_SQ2, Common::kPlatformCoCo3), // Troll's Tale - GAMEpre_PS("troll", "", "troll.img", "62903f264b3d849be4214b3a5c42a2fa", 184320, 0x0000, GID_TROLL, Common::kPlatformPC), + GAMEpre_PS("troll", "", "troll.img", "62903f264b3d849be4214b3a5c42a2fa", 184320, 0x0000, GID_TROLL, Common::kPlatformDOS), // Winnie the Pooh in the Hundred Acre Wood - GAMEpre_P("winnie", "", "title.pic", "2e7900c1ccaa7671d65405f6d1efed30", 0x0000, GID_WINNIE, Common::kPlatformPC), + GAMEpre_P("winnie", "", "title.pic", "2e7900c1ccaa7671d65405f6d1efed30", 0x0000, GID_WINNIE, Common::kPlatformDOS), // Winnie the Pooh in the Hundred Acre Wood (Amiga) GAMEpre_P("winnie", "", "title", "2e7900c1ccaa7671d65405f6d1efed30", 0x0000, GID_WINNIE, Common::kPlatformAmiga), @@ -707,10 +707,10 @@ static const AGIGameDescription gameDescriptions[] = { FANMADE("Good Man (demo v3.41)", "3facd8a8f856b7b6e0f6c3200274d88c"), GAME_LVFPNF("agi-fanmade", "Groza (russian) [AGDS sample]", "logdir", "421da3a18004122a966d64ab6bd86d2e", -1, - Common::RU_RUS, 0x2440, GF_AGDS, GID_FANMADE, Common::kPlatformPC,GType_V2), + Common::RU_RUS, 0x2440, GF_AGDS, GID_FANMADE, Common::kPlatformDOS,GType_V2), GAME_LVFPNF("agi-fanmade", "Get Outta Space Quest", "logdir", "aaea5b4a348acb669d13b0e6f22d4dc9", -1, - Common::EN_ANY, 0x2440, GF_FANMADE, GID_GETOUTTASQ, Common::kPlatformPC,GType_V2), + Common::EN_ANY, 0x2440, GF_FANMADE, GID_GETOUTTASQ, Common::kPlatformDOS,GType_V2), FANMADE_F("Half-Death - Terror At White-Mesa", "b62c05d0ace878261392073f57ae788c", GF_AGIMOUSE), FANMADE("Hank's Quest (v1.0 English) - Victim of Society", "64c15b3d0483d17888129100dc5af213"), @@ -857,7 +857,7 @@ static const AGIGameDescription gameDescriptions[] = { "V - The Graphical Adventure (Demo 2)", AD_ENTRY1s("vdir", "c71f5c1e008d352ae9040b77fcf79327", 3080), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_USEEXTRAASTITLE, GUIO0() }, @@ -885,7 +885,7 @@ static AGIGameDescription g_fallbackDesc = { "", AD_ENTRY1(0, 0), // This should always be AD_ENTRY1(0, 0) in the fallback descriptor Common::UNK_LANG, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, diff --git a/engines/agi/loader_v1.cpp b/engines/agi/loader_v1.cpp index 189c98ee98..33e956af41 100644 --- a/engines/agi/loader_v1.cpp +++ b/engines/agi/loader_v1.cpp @@ -254,7 +254,7 @@ int AgiLoader_v1::loadResource(int t, int n) { if (data != NULL) { // Freeing of the raw resource from memory is delegated to the createFromRawResource-function - _vm->_game.sounds[n] = AgiSound::createFromRawResource(data, _vm->_game.dirSound[n].len, n, *_vm->_sound, _vm->_soundemu); + _vm->_game.sounds[n] = AgiSound::createFromRawResource(data, _vm->_game.dirSound[n].len, n, _vm->_soundemu); _vm->_game.dirSound[n].flags |= RES_LOADED; } else { ec = errBadResource; diff --git a/engines/agi/loader_v2.cpp b/engines/agi/loader_v2.cpp index a2ac6f0111..ee69bb5b27 100644 --- a/engines/agi/loader_v2.cpp +++ b/engines/agi/loader_v2.cpp @@ -230,7 +230,7 @@ int AgiLoader_v2::loadResource(int t, int n) { if (data != NULL) { // Freeing of the raw resource from memory is delegated to the createFromRawResource-function - _vm->_game.sounds[n] = AgiSound::createFromRawResource(data, _vm->_game.dirSound[n].len, n, *_vm->_sound, _vm->_soundemu); + _vm->_game.sounds[n] = AgiSound::createFromRawResource(data, _vm->_game.dirSound[n].len, n, _vm->_soundemu); _vm->_game.dirSound[n].flags |= RES_LOADED; } else { ec = errBadResource; diff --git a/engines/agi/loader_v3.cpp b/engines/agi/loader_v3.cpp index 29635f935b..250d8e7615 100644 --- a/engines/agi/loader_v3.cpp +++ b/engines/agi/loader_v3.cpp @@ -314,7 +314,7 @@ int AgiLoader_v3::loadResource(int t, int n) { data = loadVolRes(&_vm->_game.dirSound[n]); if (data != NULL) { // Freeing of the raw resource from memory is delegated to the createFromRawResource-function - _vm->_game.sounds[n] = AgiSound::createFromRawResource(data, _vm->_game.dirSound[n].len, n, *_vm->_sound, _vm->_soundemu); + _vm->_game.sounds[n] = AgiSound::createFromRawResource(data, _vm->_game.dirSound[n].len, n, _vm->_soundemu); _vm->_game.dirSound[n].flags |= RES_LOADED; } else { ec = errBadResource; diff --git a/engines/agi/op_cmd.cpp b/engines/agi/op_cmd.cpp index 9d899b1855..2366d97a82 100644 --- a/engines/agi/op_cmd.cpp +++ b/engines/agi/op_cmd.cpp @@ -1219,7 +1219,7 @@ void cmdWander(AgiGame *state, uint8 *p) { void cmdSetGameID(AgiGame *state, uint8 *p) { if (state->_curLogic->texts && (p0 - 1) <= state->_curLogic->numTexts) - strncpy(state->id, state->_curLogic->texts[p0 - 1], 8); + Common::strlcpy(state->id, state->_curLogic->texts[p0 - 1], 8); else state->id[0] = 0; @@ -1705,7 +1705,9 @@ void cmdCallV1(AgiGame *state, uint8 *p) { // FIXME: The following instruction looks incomplete. // Maybe something is meant to be assigned to, or read from, // the logic_list entry? - state->logic_list[++state->max_logics]; +// state->logic_list[++state->max_logics]; + // For now, just do the increment, to silence a clang warning + ++state->max_logics; _v[13] = 1; } diff --git a/engines/agi/op_test.cpp b/engines/agi/op_test.cpp index 124a1cfcb7..18861a2190 100644 --- a/engines/agi/op_test.cpp +++ b/engines/agi/op_test.cpp @@ -259,7 +259,12 @@ uint8 AgiEngine::testKeypressed() { InputMode mode = _game.inputMode; _game.inputMode = INPUT_NONE; - mainCycle(); + // Only check for events here, without updating the game cycle, + // otherwise the animations in some games are drawn too quickly + // like, for example, Manannan's lightnings in the intro of KQ3 + // and the bullets opened in the logo of PQ1, during its intro. + // Fixes bug #3600733 + mainCycle(true); _game.inputMode = mode; } diff --git a/engines/agi/preagi_winnie.cpp b/engines/agi/preagi_winnie.cpp index 53863a8c7e..bbe9ddd0c6 100644 --- a/engines/agi/preagi_winnie.cpp +++ b/engines/agi/preagi_winnie.cpp @@ -90,7 +90,7 @@ void WinnieEngine::parseObjHeader(WTP_OBJ_HDR *objHdr, byte *buffer, int len) { uint32 WinnieEngine::readRoom(int iRoom, uint8 *buffer, WTP_ROOM_HDR &roomHdr) { Common::String fileName; - if (getPlatform() == Common::kPlatformPC) + if (getPlatform() == Common::kPlatformDOS) fileName = Common::String::format(IDS_WTP_ROOM_DOS, iRoom); else if (getPlatform() == Common::kPlatformAmiga) fileName = Common::String::format(IDS_WTP_ROOM_AMIGA, iRoom); @@ -123,7 +123,7 @@ uint32 WinnieEngine::readRoom(int iRoom, uint8 *buffer, WTP_ROOM_HDR &roomHdr) { uint32 WinnieEngine::readObj(int iObj, uint8 *buffer) { Common::String fileName; - if (getPlatform() == Common::kPlatformPC) + if (getPlatform() == Common::kPlatformDOS) fileName = Common::String::format(IDS_WTP_OBJ_DOS, iObj); else if (getPlatform() == Common::kPlatformAmiga) fileName = Common::String::format(IDS_WTP_OBJ_AMIGA, iObj); @@ -1118,7 +1118,7 @@ void WinnieEngine::drawRoomPic() { bool WinnieEngine::playSound(ENUM_WTP_SOUND iSound) { // TODO: Only DOS sound is supported, currently - if (getPlatform() != Common::kPlatformPC) { + if (getPlatform() != Common::kPlatformDOS) { warning("STUB: playSound(%d)", iSound); return false; } @@ -1134,7 +1134,7 @@ bool WinnieEngine::playSound(ENUM_WTP_SOUND iSound) { file.read(data, size); file.close(); - _game.sounds[0] = AgiSound::createFromRawResource(data, size, 0, *_sound, _soundemu); + _game.sounds[0] = AgiSound::createFromRawResource(data, size, 0, _soundemu); _sound->startSound(0, 0); bool cursorShowing = CursorMan.showMouse(false); @@ -1334,7 +1334,6 @@ void WinnieEngine::init() { } _sound = new SoundMgr(this, _mixer); - _sound->initSound(); setflag(fSoundOn, true); // enable sound memset(&_gameStateWinnie, 0, sizeof(_gameStateWinnie)); diff --git a/engines/agi/saveload.cpp b/engines/agi/saveload.cpp index d451a799a0..c449f076e7 100644 --- a/engines/agi/saveload.cpp +++ b/engines/agi/saveload.cpp @@ -316,7 +316,7 @@ int AgiEngine::loadGame(const Common::String &fileName, bool checkId) { return errBadFileOpen; } - strncpy(_game.id, loadId, 8); + Common::strlcpy(_game.id, loadId, 8); if (saveVersion >= 5) { char md5[32 + 1]; @@ -678,7 +678,7 @@ int AgiEngine::selectSlot() { switch (key) { case KEY_ENTER: rc = active; - strncpy(_game.strings[MAX_STRINGS], desc[i], MAX_STRINGLEN); + Common::strlcpy(_game.strings[MAX_STRINGS], desc[i], MAX_STRINGLEN); debugC(8, kDebugLevelMain | kDebugLevelInput, "Button pressed: %d", rc); exitSelectSlot = true; break; diff --git a/engines/agi/sound.cpp b/engines/agi/sound.cpp index ca3d799ecc..56c7ebcb0b 100644 --- a/engines/agi/sound.cpp +++ b/engines/agi/sound.cpp @@ -36,25 +36,25 @@ namespace Agi { // TODO: add support for variable sampling rate in the output device // -AgiSound *AgiSound::createFromRawResource(uint8 *data, uint32 len, int resnum, SoundMgr &manager, int soundemu) { +AgiSound *AgiSound::createFromRawResource(uint8 *data, uint32 len, int resnum, int soundemu) { if (data == NULL || len < 2) // Check for too small resource or no resource at all return NULL; uint16 type = READ_LE_UINT16(data); // For V1 sound resources if (type != AGI_SOUND_SAMPLE && (type & 0xFF) == 0x01) - return new PCjrSound(data, len, resnum, manager); + return new PCjrSound(data, len, resnum); switch (type) { // Create a sound object based on the type case AGI_SOUND_SAMPLE: - return new IIgsSample(data, len, resnum, manager); + return new IIgsSample(data, len, resnum); case AGI_SOUND_MIDI: - return new IIgsMidi(data, len, resnum, manager); + return new IIgsMidi(data, len, resnum); case AGI_SOUND_4CHN: if (soundemu == SOUND_EMU_MIDI) { - return new MIDISound(data, len, resnum, manager); + return new MIDISound(data, len, resnum); } else { - return new PCjrSound(data, len, resnum, manager); + return new PCjrSound(data, len, resnum); } } @@ -62,7 +62,7 @@ AgiSound *AgiSound::createFromRawResource(uint8 *data, uint32 len, int resnum, S return NULL; } -PCjrSound::PCjrSound(uint8 *data, uint32 len, int resnum, SoundMgr &manager) : AgiSound(manager) { +PCjrSound::PCjrSound(uint8 *data, uint32 len, int resnum) : AgiSound() { _data = data; // Save the resource pointer _len = len; // Save the resource's length _type = READ_LE_UINT16(data); // Read sound resource's type @@ -167,16 +167,6 @@ void SoundMgr::stopSound() { _endflag = -1; } -int SoundMgr::initSound() { - return -1; -} - -void SoundMgr::deinitSound() { - stopSound(); - - delete _soundGen; -} - void SoundMgr::soundIsFinished() { if (_endflag != -1) _vm->setflag(_endflag, true); @@ -219,6 +209,9 @@ void SoundMgr::setVolume(uint8 volume) { } SoundMgr::~SoundMgr() { + stopSound(); + + delete _soundGen; } } // End of namespace Agi diff --git a/engines/agi/sound.h b/engines/agi/sound.h index 6fd8dd516e..f300af83a3 100644 --- a/engines/agi/sound.h +++ b/engines/agi/sound.h @@ -93,7 +93,7 @@ public: */ class AgiSound { public: - AgiSound(SoundMgr &manager) : _manager(manager), _isPlaying(false), _isValid(false) {} + AgiSound() : _isPlaying(false), _isValid(false) {} virtual ~AgiSound() {} virtual void play() { _isPlaying = true; } virtual void stop() { _isPlaying = false; } @@ -108,17 +108,16 @@ public: * from memory using free() or delegate the responsibility onwards to some other * function! */ - static AgiSound *createFromRawResource(uint8 *data, uint32 len, int resnum, SoundMgr &manager, int soundemu); + static AgiSound *createFromRawResource(uint8 *data, uint32 len, int resnum, int soundemu); protected: - SoundMgr &_manager; ///< AGI sound manager object bool _isPlaying; ///< Is the sound playing? bool _isValid; ///< Is this a valid sound object? }; class PCjrSound : public AgiSound { public: - PCjrSound(uint8 *data, uint32 len, int resnum, SoundMgr &manager); + PCjrSound(uint8 *data, uint32 len, int resnum); ~PCjrSound() { free(_data); } virtual uint16 type() { return _type; } const uint8 *getVoicePointer(uint voiceNum); @@ -140,8 +139,6 @@ public: void unloadSound(int); void playSound(); - int initSound(); - void deinitSound(); void startSound(int, int); void stopSound(); diff --git a/engines/agi/sound_2gs.cpp b/engines/agi/sound_2gs.cpp index bfc8d4d8f3..f088ad3a01 100644 --- a/engines/agi/sound_2gs.cpp +++ b/engines/agi/sound_2gs.cpp @@ -447,7 +447,7 @@ void SoundGen2GS::setProgramChangeMapping(const IIgsMidiProgramMapping *mapping) _progToInst = mapping; } -IIgsMidi::IIgsMidi(uint8 *data, uint32 len, int resnum, SoundMgr &manager) : AgiSound(manager) { +IIgsMidi::IIgsMidi(uint8 *data, uint32 len, int resnum) : AgiSound() { _data = data; // Save the resource pointer _ptr = _data + 2; // Set current position to just after the header _len = len; // Save the resource's length @@ -472,7 +472,7 @@ static bool convertWave(Common::SeekableReadStream &source, int8 *dest, uint len return !(source.eos() || source.err()); } -IIgsSample::IIgsSample(uint8 *data, uint32 len, int resnum, SoundMgr &manager) : AgiSound(manager) { +IIgsSample::IIgsSample(uint8 *data, uint32 len, int resnum) : AgiSound() { Common::MemoryReadStream stream(data, len, DisposeAfterUse::YES); // Check that the header was read ok and that it's of the correct type diff --git a/engines/agi/sound_2gs.h b/engines/agi/sound_2gs.h index 404f4a47a1..12e7b7b951 100644 --- a/engines/agi/sound_2gs.h +++ b/engines/agi/sound_2gs.h @@ -144,7 +144,7 @@ public: class IIgsMidi : public AgiSound { public: - IIgsMidi(uint8 *data, uint32 len, int resnum, SoundMgr &manager); + IIgsMidi(uint8 *data, uint32 len, int resnum); ~IIgsMidi() { if (_data != NULL) free(_data); } virtual uint16 type() { return _type; } virtual const uint8 *getPtr() { return _ptr; } @@ -161,7 +161,7 @@ public: class IIgsSample : public AgiSound { public: - IIgsSample(uint8 *data, uint32 len, int resnum, SoundMgr &manager); + IIgsSample(uint8 *data, uint32 len, int resnum); ~IIgsSample() { delete[] _sample; } virtual uint16 type() { return _header.type; } const IIgsSampleHeader &getHeader() const { return _header; } diff --git a/engines/agi/sound_midi.cpp b/engines/agi/sound_midi.cpp index 47d354093b..24e3ca8fb7 100644 --- a/engines/agi/sound_midi.cpp +++ b/engines/agi/sound_midi.cpp @@ -59,7 +59,7 @@ namespace Agi { static uint32 convertSND2MIDI(byte *snddata, byte **data); -MIDISound::MIDISound(uint8 *data, uint32 len, int resnum, SoundMgr &manager) : AgiSound(manager) { +MIDISound::MIDISound(uint8 *data, uint32 len, int resnum) : AgiSound() { _data = data; // Save the resource pointer _len = len; // Save the resource's length _type = READ_LE_UINT16(data); // Read sound resource's type diff --git a/engines/agi/sound_midi.h b/engines/agi/sound_midi.h index 36bd66ee76..ac1b100b12 100644 --- a/engines/agi/sound_midi.h +++ b/engines/agi/sound_midi.h @@ -33,7 +33,7 @@ namespace Agi { class MIDISound : public AgiSound { public: - MIDISound(uint8 *data, uint32 len, int resnum, SoundMgr &manager); + MIDISound(uint8 *data, uint32 len, int resnum); ~MIDISound() { free(_data); } virtual uint16 type() { return _type; } uint8 *_data; ///< Raw sound resource data @@ -61,8 +61,6 @@ public: private: bool _isGM; - - SoundMgr *_manager; }; } // End of namespace Agi diff --git a/engines/agi/wagparser.cpp b/engines/agi/wagparser.cpp index 61feac5d17..8dee6545c0 100644 --- a/engines/agi/wagparser.cpp +++ b/engines/agi/wagparser.cpp @@ -98,7 +98,7 @@ void WagProperty::setDefaults() { } void WagProperty::deleteData() { - delete _propData; + delete[] _propData; _propData = NULL; } diff --git a/engines/agos/agos.cpp b/engines/agos/agos.cpp index 73a37e42ef..359a6f7289 100644 --- a/engines/agos/agos.cpp +++ b/engines/agos/agos.cpp @@ -580,7 +580,7 @@ Common::Error AGOSEngine::init() { if ((getGameType() == GType_SIMON2 && getPlatform() == Common::kPlatformWindows) || (getGameType() == GType_SIMON1 && getPlatform() == Common::kPlatformWindows) || ((getFeatures() & GF_TALKIE) && getPlatform() == Common::kPlatformAcorn) || - (getPlatform() == Common::kPlatformPC)) { + (getPlatform() == Common::kPlatformDOS)) { int ret = _midi->open(getGameType()); if (ret) diff --git a/engines/agos/detection.cpp b/engines/agos/detection.cpp index 13559c2f4f..a5a42a86ad 100644 --- a/engines/agos/detection.cpp +++ b/engines/agos/detection.cpp @@ -53,12 +53,12 @@ static const Engines::ObsoleteGameID obsoleteGameIDsTable[] = { {"simon1acorn", "simon1", Common::kPlatformAcorn}, {"simon1amiga", "simon1", Common::kPlatformAmiga}, {"simon1cd32", "simon1", Common::kPlatformAmiga}, - {"simon1demo", "simon1", Common::kPlatformPC}, - {"simon1dos", "simon1", Common::kPlatformPC}, - {"simon1talkie", "simon1", Common::kPlatformPC}, + {"simon1demo", "simon1", Common::kPlatformDOS}, + {"simon1dos", "simon1", Common::kPlatformDOS}, + {"simon1talkie", "simon1", Common::kPlatformDOS}, {"simon1win", "simon1", Common::kPlatformWindows}, - {"simon2dos", "simon2", Common::kPlatformPC}, - {"simon2talkie", "simon2", Common::kPlatformPC}, + {"simon2dos", "simon2", Common::kPlatformDOS}, + {"simon2talkie", "simon2", Common::kPlatformDOS}, {"simon2mac", "simon2", Common::kPlatformMacintosh}, {"simon2win", "simon2", Common::kPlatformWindows}, {0, 0, Common::kPlatformUnknown} diff --git a/engines/agos/detection_tables.h b/engines/agos/detection_tables.h index 7fe6df5f17..70757865f5 100644 --- a/engines/agos/detection_tables.h +++ b/engines/agos/detection_tables.h @@ -105,7 +105,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -283,7 +283,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DEMO, GUIO1(GUIO_NOSPEECH) }, @@ -306,7 +306,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -329,7 +329,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::ES_ESP, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -352,7 +352,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -375,7 +375,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -584,7 +584,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -610,7 +610,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -636,7 +636,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -662,7 +662,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -688,7 +688,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -714,7 +714,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::IT_ITA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -740,7 +740,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::ES_ESP, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -766,7 +766,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::ES_ESP, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -843,7 +843,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DEMO, GUIO1(GUIO_NOSPEECH) }, @@ -872,7 +872,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -901,7 +901,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -930,7 +930,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -959,7 +959,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::ES_ESP, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -1249,7 +1249,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DEMO, GUIO1(GUIO_NOSPEECH) }, @@ -1273,7 +1273,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -1297,7 +1297,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::CZ_CZE, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -1321,7 +1321,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::RU_RUS, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -1345,7 +1345,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -1369,7 +1369,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::CZ_CZE, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -1393,7 +1393,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::RU_RUS, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -1417,7 +1417,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -1441,7 +1441,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -1465,7 +1465,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::IT_ITA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -1489,7 +1489,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::ES_ESP, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -1514,7 +1514,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DEMO, GUIO1(GUIO_NOSUBTITLES) }, @@ -1539,7 +1539,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO1(GUIO_NOSUBTITLES) }, @@ -1564,7 +1564,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO1(GUIO_NOSUBTITLES) }, @@ -1589,7 +1589,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::RU_RUS, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -1614,7 +1614,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -1639,7 +1639,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSUBTITLES) }, @@ -1664,7 +1664,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::HE_ISR, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -1689,7 +1689,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::IT_ITA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -1740,7 +1740,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::ES_ESP, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -1815,7 +1815,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -1840,7 +1840,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::RU_RUS, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -1865,7 +1865,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -1890,7 +1890,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -1915,7 +1915,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::IT_ITA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -1940,7 +1940,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DEMO, GUIO0() }, @@ -1965,7 +1965,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DEMO, GUIO0() }, @@ -1990,7 +1990,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DEMO, GUIO0() }, @@ -2015,7 +2015,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -2040,7 +2040,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -2065,7 +2065,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -2090,7 +2090,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -2115,7 +2115,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -2140,7 +2140,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::HE_ISR, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -2191,7 +2191,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::ES_ESP, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -2338,7 +2338,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DEMO, GUIO3(GUIO_NOSUBTITLES, GUIO_NOMUSIC, GUIO_NOASPECT) }, @@ -2359,7 +2359,7 @@ static const AGOSGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DEMO, GUIO3(GUIO_NOSUBTITLES, GUIO_NOMUSIC, GUIO_NOASPECT) }, diff --git a/engines/agos/feeble.cpp b/engines/agos/feeble.cpp index 4608969667..a96caa9f8b 100644 --- a/engines/agos/feeble.cpp +++ b/engines/agos/feeble.cpp @@ -38,6 +38,7 @@ AGOSEngine_Feeble::AGOSEngine_Feeble(OSystem *system, const AGOSGameDescription _interactiveVideo = 0; _moviePlayer = 0; _vgaCurSpritePriority = 0; + _mouseToggle = false; } AGOSEngine_Feeble::~AGOSEngine_Feeble() { diff --git a/engines/agos/gfx.cpp b/engines/agos/gfx.cpp index fbf7f416ed..db0817250b 100644 --- a/engines/agos/gfx.cpp +++ b/engines/agos/gfx.cpp @@ -1450,7 +1450,7 @@ void AGOSEngine::setWindowImage(uint16 mode, uint16 vgaSpriteId, bool specialCas } if (getGameType() == GType_PN && !_wiped && !specialCase) { - uint8 color = (getPlatform() == Common::kPlatformPC) ? 7 : 15; + uint8 color = (getPlatform() == Common::kPlatformDOS) ? 7 : 15; dst = (byte *)screen->pixels + 48; memset(dst, color, 224); @@ -1475,7 +1475,7 @@ void AGOSEngine::setWindowImage(uint16 mode, uint16 vgaSpriteId, bool specialCas // Personal Nightmare specific void AGOSEngine::drawEdging() { byte *dst; - uint8 color = (getPlatform() == Common::kPlatformPC) ? 7 : 15; + uint8 color = (getPlatform() == Common::kPlatformDOS) ? 7 : 15; Graphics::Surface *screen = _system->lockScreen(); diff --git a/engines/agos/icons.cpp b/engines/agos/icons.cpp index 7db2d85f21..0ee1d62fde 100644 --- a/engines/agos/icons.cpp +++ b/engines/agos/icons.cpp @@ -1044,7 +1044,7 @@ void AGOSEngine_PN::drawIconHitBar() { Graphics::Surface *screen = _system->lockScreen(); byte *dst = (byte *)screen->pixels + 3 * screen->pitch + 6 * 8; const byte *src = hitBarData; - uint8 color = (getPlatform() == Common::kPlatformPC) ? 7 : 15; + uint8 color = (getPlatform() == Common::kPlatformDOS) ? 7 : 15; for (int h = 0; h < 7; h++) { for (int w = 0; w < 12; w++) { diff --git a/engines/agos/res.cpp b/engines/agos/res.cpp index 2e44a6575c..cf1d062d96 100644 --- a/engines/agos/res.cpp +++ b/engines/agos/res.cpp @@ -932,7 +932,7 @@ void AGOSEngine::loadVGAVideoFile(uint16 id, uint8 type, bool useError) { } dstSize = srcSize = in->size(); - if (getGameType() == GType_PN && getPlatform() == Common::kPlatformPC && id == 17 && type == 2) { + if (getGameType() == GType_PN && getPlatform() == Common::kPlatformDOS && id == 17 && type == 2) { // The A2.out file isn't compressed in PC version of Personal Nightmare dst = allocBlock(dstSize + extraBuffer); if (in->read(dst, dstSize) != dstSize) diff --git a/engines/agos/saveload.cpp b/engines/agos/saveload.cpp index e13fa214d1..48671390f0 100644 --- a/engines/agos/saveload.cpp +++ b/engines/agos/saveload.cpp @@ -105,7 +105,7 @@ char *AGOSEngine_Simon1::genSaveName(int slot) { char *AGOSEngine_Waxworks::genSaveName(int slot) { static char buf[20]; - if (getPlatform() == Common::kPlatformPC) + if (getPlatform() == Common::kPlatformDOS) sprintf(buf, "waxworks-pc.%.3d", slot); else sprintf(buf, "waxworks.%.3d", slot); @@ -116,7 +116,7 @@ char *AGOSEngine_Waxworks::genSaveName(int slot) { char *AGOSEngine_Elvira2::genSaveName(int slot) { static char buf[20]; - if (getPlatform() == Common::kPlatformPC) + if (getPlatform() == Common::kPlatformDOS) sprintf(buf, "elvira2-pc.%.3d", slot); else sprintf(buf, "elvira2.%.3d", slot); @@ -1264,7 +1264,7 @@ bool AGOSEngine_Elvira2::loadGame(const char *filename, bool restartMode) { addTimeEvent(timeout, subroutine_id); } - if (getGameType() == GType_WW && getPlatform() == Common::kPlatformPC) { + if (getGameType() == GType_WW && getPlatform() == Common::kPlatformDOS) { for (uint s = 0; s < _numRoomStates; s++) { _roomStates[s].state = f->readUint16BE(); _roomStates[s].classFlags = f->readUint16BE(); @@ -1385,7 +1385,7 @@ bool AGOSEngine_Elvira2::loadGame(const char *filename, bool restartMode) { if (getGameType() == GType_WW && getPlatform() == Common::kPlatformAmiga) { _itemStore[i] = derefItem(f->readUint16BE() / 16); } else if (getGameType() == GType_ELVIRA2) { - if (getPlatform() == Common::kPlatformPC) { + if (getPlatform() == Common::kPlatformDOS) { _itemStore[i] = derefItem(readItemID(f)); } else { _itemStore[i] = derefItem(f->readUint16BE() / 18); @@ -1475,7 +1475,7 @@ bool AGOSEngine_Elvira2::saveGame(uint slot, const char *caption) { f->writeUint16BE(te->subroutine_id); } - if (getGameType() == GType_WW && getPlatform() == Common::kPlatformPC) { + if (getGameType() == GType_WW && getPlatform() == Common::kPlatformDOS) { if (_roomsListPtr) { byte *p = _roomsListPtr; for (;;) { @@ -1564,7 +1564,7 @@ bool AGOSEngine_Elvira2::saveGame(uint slot, const char *caption) { if (getGameType() == GType_WW && getPlatform() == Common::kPlatformAmiga) { f->writeUint16BE(itemPtrToID(_itemStore[i]) * 16); } else if (getGameType() == GType_ELVIRA2) { - if (getPlatform() == Common::kPlatformPC) { + if (getPlatform() == Common::kPlatformDOS) { writeItemID(f, itemPtrToID(_itemStore[i])); } else { f->writeUint16BE(itemPtrToID(_itemStore[i]) * 18); diff --git a/engines/agos/sound.cpp b/engines/agos/sound.cpp index bec41bbbd3..a6a731ab24 100644 --- a/engines/agos/sound.cpp +++ b/engines/agos/sound.cpp @@ -674,7 +674,7 @@ void Sound::playRawData(byte *soundData, uint sound, uint size, uint freq) { memcpy(buffer, soundData, size); byte flags = 0; - if (_vm->getPlatform() == Common::kPlatformPC) + if (_vm->getPlatform() == Common::kPlatformDOS) flags = Audio::FLAG_UNSIGNED; Audio::AudioStream *stream = Audio::makeRawStream(buffer, size, freq, flags); diff --git a/engines/agos/verb.cpp b/engines/agos/verb.cpp index dec05f6703..93077ed83e 100644 --- a/engines/agos/verb.cpp +++ b/engines/agos/verb.cpp @@ -1004,7 +1004,7 @@ void AGOSEngine::invertBox(HitArea *ha, byte a, byte b, byte c, byte d) { src[i] = color; } } else if (getGameType() == GType_PN) { - if (getPlatform() == Common::kPlatformPC) { + if (getPlatform() == Common::kPlatformDOS) { if (color != 15) { color ^= 7; src[i] = color; diff --git a/engines/agos/vga_pn.cpp b/engines/agos/vga_pn.cpp index 3bd5400504..1e7b2ba060 100644 --- a/engines/agos/vga_pn.cpp +++ b/engines/agos/vga_pn.cpp @@ -152,7 +152,7 @@ void AGOSEngine::vc48_specialEffect() { uint16 num = vcReadNextWord(); vcReadNextWord(); - if (getPlatform() == Common::kPlatformPC) { + if (getPlatform() == Common::kPlatformDOS) { if (num == 1) { Graphics::Surface *screen = _system->lockScreen(); byte *dst = (byte *)screen->pixels; diff --git a/engines/cge/detection.cpp b/engines/cge/detection.cpp index 3d6c24d68b..9e40c7b925 100644 --- a/engines/cge/detection.cpp +++ b/engines/cge/detection.cpp @@ -44,7 +44,7 @@ static const ADGameDescription gameDescriptions[] = { {"vol.dat", 0, "f9ae2e7f8f7cac91378cdafca43faf1e", 8437572}, AD_LISTEND }, - Common::PL_POL, Common::kPlatformPC, ADGF_NO_FLAGS, GUIO0() + Common::PL_POL, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, { "soltys", "Soltys Freeware", @@ -53,7 +53,7 @@ static const ADGameDescription gameDescriptions[] = { {"vol.dat", 0, "f9ae2e7f8f7cac91378cdafca43faf1e", 8437676}, AD_LISTEND }, - Common::PL_POL, Common::kPlatformPC, ADGF_NO_FLAGS, GUIO0() + Common::PL_POL, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, { "soltys", "Soltys Demo (not supported)", @@ -62,7 +62,7 @@ static const ADGameDescription gameDescriptions[] = { {"vol.dat", 0, "75d385a6074c58b69f7730481f256051", 1796710}, AD_LISTEND }, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO , GUIO0() + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO , GUIO0() }, { "soltys", "Soltys Demo (not supported)", @@ -71,7 +71,7 @@ static const ADGameDescription gameDescriptions[] = { {"vol.dat", 0, "c5d9b15863cab61dc125551576dece04", 1075272}, AD_LISTEND }, - Common::PL_POL, Common::kPlatformPC, ADGF_DEMO , GUIO0() + Common::PL_POL, Common::kPlatformDOS, ADGF_DEMO , GUIO0() }, { "soltys", "Soltys Freeware v1.0", @@ -80,7 +80,7 @@ static const ADGameDescription gameDescriptions[] = { {"vol.dat", 0, "4ffeff4abc99ac5999b55ccfc56ab1df", 8430868}, AD_LISTEND }, - Common::EN_ANY, Common::kPlatformPC, ADGF_NO_FLAGS , GUIO0() + Common::EN_ANY, Common::kPlatformDOS, ADGF_NO_FLAGS , GUIO0() }, { "soltys", "Soltys Freeware v1.0", @@ -89,7 +89,7 @@ static const ADGameDescription gameDescriptions[] = { {"vol.dat", 0, "0e43331c846094d77f5dd201827e0a3b", 8439339}, AD_LISTEND }, - Common::PL_POL, Common::kPlatformPC, ADGF_NO_FLAGS, GUIO0() + Common::PL_POL, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, AD_TABLE_END_MARKER }; diff --git a/engines/cge/snail.cpp b/engines/cge/snail.cpp index 4cd95a888e..edb8972040 100644 --- a/engines/cge/snail.cpp +++ b/engines/cge/snail.cpp @@ -1199,6 +1199,8 @@ void CGEEngine::snFlash(bool on) { } _vga->setColors(pal, 64); } + + free(pal); } else _vga->setColors(_vga->_sysPal, 64); _dark = false; diff --git a/engines/cine/cine.cpp b/engines/cine/cine.cpp index aa7221f733..63092a8ffd 100644 --- a/engines/cine/cine.cpp +++ b/engines/cine/cine.cpp @@ -84,7 +84,7 @@ Common::Error CineEngine::run() { // Initialize backend initGraphics(320, 200, false); - if (getPlatform() == Common::kPlatformPC) { + if (getPlatform() == Common::kPlatformDOS) { g_sound = new PCSound(_mixer, this); } else { // Paula chipset for Amiga and Atari versions diff --git a/engines/cine/console.cpp b/engines/cine/console.cpp index 4af28592e7..46f0ea61d3 100644 --- a/engines/cine/console.cpp +++ b/engines/cine/console.cpp @@ -28,6 +28,7 @@ namespace Cine { bool labyrinthCheat; CineConsole::CineConsole(CineEngine *vm) : GUI::Debugger(), _vm(vm) { + assert(_vm); DCmd_Register("labyrinthCheat", WRAP_METHOD(CineConsole, Cmd_LabyrinthCheat)); labyrinthCheat = false; diff --git a/engines/cine/detection.cpp b/engines/cine/detection.cpp index 823b8e38b5..a3d36cfd97 100644 --- a/engines/cine/detection.cpp +++ b/engines/cine/detection.cpp @@ -184,7 +184,7 @@ void CineMetaEngine::removeSaveState(const char *target, int slot) const { // Set description for selected slot char slotName[20]; slotName[0] = 0; - strncpy(saveNames[slot], slotName, 20); + Common::strlcpy(saveNames[slot], slotName, 20); // Update savegame descriptions Common::String indexFile = Common::String::format("%s.dir", target); diff --git a/engines/cine/detection_tables.h b/engines/cine/detection_tables.h index bf02f0519c..224ebe5de2 100644 --- a/engines/cine/detection_tables.h +++ b/engines/cine/detection_tables.h @@ -29,7 +29,7 @@ static const CINEGameDescription gameDescriptions[] = { "", AD_ENTRY1("part01", "61d003202d301c29dd399acfb1354310"), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -49,7 +49,7 @@ static const CINEGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::EN_USA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -64,7 +64,7 @@ static const CINEGameDescription gameDescriptions[] = { "", AD_ENTRY1("part01", "91d7271155520eae6915a9dd2dac120c"), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -78,7 +78,7 @@ static const CINEGameDescription gameDescriptions[] = { "", AD_ENTRY1("part01", "f5e98fcca3fb5e7afa284c81c39d8b14"), Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -92,7 +92,7 @@ static const CINEGameDescription gameDescriptions[] = { "", AD_ENTRY1("part01", "570109f965c7f53984b98c83d86eb206"), Common::ES_ESP, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -106,7 +106,7 @@ static const CINEGameDescription gameDescriptions[] = { "", AD_ENTRY1("part01", "5d1acb97abe9591f9008e00d07add95a"), Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -250,7 +250,7 @@ static const CINEGameDescription gameDescriptions[] = { "256 colors", AD_ENTRY1("procs00", "d6752e7d25924cb866b61eb7cb0c8b56"), Common::EN_GRB, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_UNSTABLE, GUIO0() }, @@ -266,7 +266,7 @@ static const CINEGameDescription gameDescriptions[] = { "", AD_ENTRY1("procs1", "9629129b86979fa592c1787385bf3695"), Common::EN_GRB, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_UNSTABLE, GUIO0() }, @@ -280,7 +280,7 @@ static const CINEGameDescription gameDescriptions[] = { "", AD_ENTRY1("procs1", "d8c3a9d05a63e4cfa801826a7063a126"), Common::EN_USA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_UNSTABLE, GUIO0() }, @@ -294,7 +294,7 @@ static const CINEGameDescription gameDescriptions[] = { "256 colors", AD_ENTRY1("procs00", "862a75d76fb7fffec30e52be9ad1c474"), Common::EN_USA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_UNSTABLE, GUIO0() }, @@ -308,7 +308,7 @@ static const CINEGameDescription gameDescriptions[] = { "", AD_ENTRY1("procs1", "39b91ae35d1297ce0a76a1a803ca1593"), Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_UNSTABLE, GUIO0() }, @@ -322,7 +322,7 @@ static const CINEGameDescription gameDescriptions[] = { "", AD_ENTRY1("procs1", "74c2dabd9d212525fca8875a5f6d8994"), Common::ES_ESP, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_UNSTABLE, GUIO0() }, @@ -340,7 +340,7 @@ static const CINEGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::ES_ESP, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_UNSTABLE, GUIO0() }, @@ -354,7 +354,7 @@ static const CINEGameDescription gameDescriptions[] = { "256 colors", AD_ENTRY1("procs00", "f143567f08cfd1a9b1c9a41c89eadfef"), Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_UNSTABLE, GUIO0() }, @@ -368,7 +368,7 @@ static const CINEGameDescription gameDescriptions[] = { "", AD_ENTRY1("procs1", "da066e6b8dd93f2502c2a3755f08dc12"), Common::IT_ITA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_UNSTABLE, GUIO0() }, diff --git a/engines/cine/part.cpp b/engines/cine/part.cpp index 813cbe50af..7c0ba3af0a 100644 --- a/engines/cine/part.cpp +++ b/engines/cine/part.cpp @@ -57,7 +57,7 @@ void loadPart(const char *partName) { g_cine->_partFileHandle.readUint32BE(); // unused } - if (g_cine->getGameType() == Cine::GType_FW && g_cine->getPlatform() == Common::kPlatformPC && strcmp(partName, "BASESON.SND") != 0) + if (g_cine->getGameType() == Cine::GType_FW && g_cine->getPlatform() == Common::kPlatformDOS && strcmp(partName, "BASESON.SND") != 0) loadPal(partName); } diff --git a/engines/cine/script_fw.cpp b/engines/cine/script_fw.cpp index b4fe68c343..176380c14f 100644 --- a/engines/cine/script_fw.cpp +++ b/engines/cine/script_fw.cpp @@ -1727,7 +1727,7 @@ int FWScript::o1_loadMusic() { debugC(5, kCineDebugScript, "Line: %d: loadMusic(%s)", _line, param); g_sound->loadMusic(param); - strncpy(currentDatName, param, 30); + Common::strlcpy(currentDatName, param, 30); musicIsPlaying = 0; return 0; @@ -1868,7 +1868,7 @@ int FWScript::o1_playSampleSwapped() { // since the only stereo output it supports should be the Roland MT-32. // So it probably does the same as o1_playSample here. Checking this will // be a good idea never the less. - if (g_cine->getPlatform() == Common::kPlatformPC) { + if (g_cine->getPlatform() == Common::kPlatformDOS) { return o1_playSample(); } diff --git a/engines/cine/script_os.cpp b/engines/cine/script_os.cpp index b452d9a8ee..84bb484369 100644 --- a/engines/cine/script_os.cpp +++ b/engines/cine/script_os.cpp @@ -421,7 +421,7 @@ int FWScript::o2_playSampleAlt() { size = g_cine->_animDataTable[num]._width * g_cine->_animDataTable[num]._height; } if (g_cine->_animDataTable[num].data()) { - if (g_cine->getPlatform() == Common::kPlatformPC) { + if (g_cine->getPlatform() == Common::kPlatformDOS) { // if speaker output is available, play sound on it // if it's another device, don't play anything // TODO: implement this, it's used in the introduction for example diff --git a/engines/cine/various.cpp b/engines/cine/various.cpp index 23f439a7a7..99d93cfc09 100644 --- a/engines/cine/various.cpp +++ b/engines/cine/various.cpp @@ -427,7 +427,7 @@ void CineEngine::makeSystemMenu() { if (!makeTextEntryMenu(otherMessages[6], saveName, 20, 120)) break; - strncpy(currentSaveName[selectedSave], saveName, 20); + Common::strlcpy(currentSaveName[selectedSave], saveName, 20); sprintf(saveFileName, "%s.%1d", _targetName.c_str(), selectedSave); diff --git a/engines/configure.engines b/engines/configure.engines index cdacb608f0..15aa11d0ef 100644 --- a/engines/configure.engines +++ b/engines/configure.engines @@ -16,7 +16,7 @@ add_engine dreamweb "Dreamweb" yes add_engine gob "Gobli*ns" yes add_engine groovie "Groovie" yes "groovie2" "7th Guest" add_engine groovie2 "Groovie 2 games" no -add_engine hopkins "Hopkins FBI" no "" "" "16bit" +add_engine hopkins "Hopkins FBI" yes "" "" "16bit" add_engine hugo "Hugo Trilogy" yes add_engine kyra "Kyra" yes "lol eob" "Legend of Kyrandia 1-3" add_engine lol "Lands of Lore" yes diff --git a/engines/cruise/dataLoader.cpp b/engines/cruise/dataLoader.cpp index 94d075ecc3..b2a319bb85 100644 --- a/engines/cruise/dataLoader.cpp +++ b/engines/cruise/dataLoader.cpp @@ -265,6 +265,8 @@ int loadFile(const char* name, int idx, int destIdx) { error("Unknown fileType in loadFile"); } + MemFree(ptr); + return -1; } @@ -283,6 +285,7 @@ int loadFileRange(const char *name, int startIdx, int currentEntryIdx, int numId for (i = 0; i < numIdx; i++) { if ((startIdx + i) > numMaxEntriesInSet) { + MemFree(ptr); return 0; // exit if limit is reached } loadSetEntry(name, ptr, startIdx + i, currentEntryIdx + i); diff --git a/engines/cruise/detection.cpp b/engines/cruise/detection.cpp index ba79df4822..b632e4ea7a 100644 --- a/engines/cruise/detection.cpp +++ b/engines/cruise/detection.cpp @@ -73,7 +73,7 @@ static const CRUISEGameDescription gameDescriptions[] = { "16 colors", AD_ENTRY1("D1", "cd29a4cd9162076e9a18495fe56a48f3"), Common::EN_GRB, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -86,7 +86,7 @@ static const CRUISEGameDescription gameDescriptions[] = { "16 colors", AD_ENTRY1("D1", "41a7a4d426dbd048eb369cfee4bb2717"), Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -99,7 +99,7 @@ static const CRUISEGameDescription gameDescriptions[] = { "256 colors", AD_ENTRY1("D1", "a90d2b9ead6b4d812cd14268672cf178"), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -112,7 +112,7 @@ static const CRUISEGameDescription gameDescriptions[] = { "256 colors", AD_ENTRY1("D1", "e258865807ea31b2d523340e6f0a606b"), Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -125,7 +125,7 @@ static const CRUISEGameDescription gameDescriptions[] = { "16 colors", AD_ENTRY1("D1", "287d2ec1799e2f881dee23c70be96e81"), Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -138,7 +138,7 @@ static const CRUISEGameDescription gameDescriptions[] = { "256 colors", AD_ENTRY1("D1", "f2a26522d49983c4ae32bcccbb801b02"), Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -203,7 +203,7 @@ static const CRUISEGameDescription gameDescriptions[] = { "256 colors", AD_ENTRY1("D1", "e19a4ab2e24a69087e4ea994a5506231"), Common::IT_ITA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -216,7 +216,7 @@ static const CRUISEGameDescription gameDescriptions[] = { "256 colors", AD_ENTRY1("D1", "9a302ada55600d96061fda1d63a6ccda"), Common::ES_ESP, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, diff --git a/engines/draci/console.cpp b/engines/draci/console.cpp index a0013c59fe..07f0ff5542 100644 --- a/engines/draci/console.cpp +++ b/engines/draci/console.cpp @@ -26,6 +26,7 @@ namespace Draci { DraciConsole::DraciConsole(DraciEngine *vm) : GUI::Debugger(), _vm(vm) { + assert(_vm); } DraciConsole::~DraciConsole() { diff --git a/engines/draci/detection.cpp b/engines/draci/detection.cpp index 2d78d05933..98a74824c8 100644 --- a/engines/draci/detection.cpp +++ b/engines/draci/detection.cpp @@ -41,7 +41,7 @@ const ADGameDescription gameDescriptions[] = { 0, AD_ENTRY1s("INIT.DFW", "b890a5aeebaf16af39219cba2416b0a3", 906), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -51,7 +51,7 @@ const ADGameDescription gameDescriptions[] = { 0, AD_ENTRY1s("INIT.DFW", "9921c8f0045679a8f37eca8d41c5ec02", 906), Common::CZ_CZE, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -61,7 +61,7 @@ const ADGameDescription gameDescriptions[] = { 0, AD_ENTRY1s("INIT.DFW", "76b9b78a8a8809a240acc395df4d0715", 906), Common::PL_POL, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -71,7 +71,7 @@ const ADGameDescription gameDescriptions[] = { 0, AD_ENTRY1s("INIT.DFW", "9a7115b91cdea361bcaff3e046ac7ded", 906), Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, diff --git a/engines/drascula/detection.cpp b/engines/drascula/detection.cpp index e1f69e2158..8764b82a04 100644 --- a/engines/drascula/detection.cpp +++ b/engines/drascula/detection.cpp @@ -75,7 +75,7 @@ static const DrasculaGameDescription gameDescriptions[] = { 0, AD_ENTRY1s("14.ald", "09b2735953edcd43af115c65ae00b10e", 1595), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -95,7 +95,7 @@ static const DrasculaGameDescription gameDescriptions[] = { {NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, GF_PACKED, GUIO0() }, @@ -112,7 +112,7 @@ static const DrasculaGameDescription gameDescriptions[] = { {NULL, 0, NULL, 0} }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, GF_PACKED, GUIO0() }, @@ -129,7 +129,7 @@ static const DrasculaGameDescription gameDescriptions[] = { {NULL, 0, NULL, 0} }, Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, GF_PACKED, GUIO0() }, @@ -142,7 +142,7 @@ static const DrasculaGameDescription gameDescriptions[] = { 0, AD_ENTRY1s("packet.001", "3c971aba65a037d29d0b479cad6f5943", 31702652), Common::ES_ESP, - Common::kPlatformPC, + Common::kPlatformDOS, GF_PACKED, GUIO0() }, @@ -155,7 +155,7 @@ static const DrasculaGameDescription gameDescriptions[] = { 0, AD_ENTRY1s("14.ald", "0746ed1a5cc8d9728f790c29813f4b43", 23059), Common::ES_ESP, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -168,7 +168,7 @@ static const DrasculaGameDescription gameDescriptions[] = { 0, AD_ENTRY1s("14.ald", "72e46089033d56bad1c179ac36e2a9d2", 610), Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -181,7 +181,7 @@ static const DrasculaGameDescription gameDescriptions[] = { 0, AD_ENTRY1s("14.ald", "eeeee96b82169003630e08992248296c", 608), Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -194,7 +194,7 @@ static const DrasculaGameDescription gameDescriptions[] = { 0, AD_ENTRY1s("packet.001", "0253e924af223f5fe52537023385159b", 32564209), Common::IT_ITA, - Common::kPlatformPC, + Common::kPlatformDOS, GF_PACKED, GUIO0() }, @@ -206,7 +206,7 @@ static const DrasculaGameDescription gameDescriptions[] = { 0, AD_ENTRY1s("14.ald", "02b49a18328d0bf2efe6ba658c9c7a1d", 2098), Common::IT_ITA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -223,7 +223,7 @@ static const DrasculaGameDescription gameDescriptions[] = { {NULL, 0, NULL, 0} }, Common::ES_ESP, - Common::kPlatformPC, + Common::kPlatformDOS, GF_PACKED, GUIO0() }, @@ -240,7 +240,7 @@ static const DrasculaGameDescription gameDescriptions[] = { {NULL, 0, NULL, 0} }, Common::IT_ITA, - Common::kPlatformPC, + Common::kPlatformDOS, GF_PACKED, GUIO0() }, @@ -257,7 +257,7 @@ static const DrasculaGameDescription gameDescriptions[] = { {NULL, 0, NULL, 0} }, Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, GF_PACKED, GUIO0() }, diff --git a/engines/drascula/interface.cpp b/engines/drascula/interface.cpp index 70212db9e8..fca8040f59 100644 --- a/engines/drascula/interface.cpp +++ b/engines/drascula/interface.cpp @@ -121,10 +121,8 @@ bool DrasculaEngine::confirmExit() { void DrasculaEngine::showMenu() { int h, n, x; - char textIcon[13]; byte *srcSurface = (currentChapter == 6) ? tableSurface : frontSurface; x = whichObject(); - strcpy(textIcon, iconName[x]); for (n = 1; n < ARRAYSIZE(inventoryObjects); n++) { h = inventoryObjects[n]; @@ -138,7 +136,7 @@ void DrasculaEngine::showMenu() { } if (x < 7) - print_abc(textIcon, _itemLocations[x].x - 2, _itemLocations[x].y - 7); + print_abc(iconName[x], _itemLocations[x].x - 2, _itemLocations[x].y - 7); } void DrasculaEngine::clearMenu() { diff --git a/engines/drascula/saveload.cpp b/engines/drascula/saveload.cpp index ba4148fb76..996c9d3f03 100644 --- a/engines/drascula/saveload.cpp +++ b/engines/drascula/saveload.cpp @@ -40,10 +40,8 @@ void DrasculaEngine::checkForOldSaveGames() { Common::InSaveFile *indexFile = _saveFileMan->openForLoading(indexFileName); // Check for the existence of an old index file - if (!indexFile) { - delete indexFile; + if (!indexFile) return; - } GUI::MessageDialog dialog0( _("ScummVM found that you have old savefiles for Drascula that should be converted.\n" diff --git a/engines/dreamweb/console.cpp b/engines/dreamweb/console.cpp index d415089a48..532bf815ef 100644 --- a/engines/dreamweb/console.cpp +++ b/engines/dreamweb/console.cpp @@ -25,6 +25,7 @@ namespace DreamWeb { DreamWebConsole::DreamWebConsole(DreamWebEngine *vm) : GUI::Debugger(), _vm(vm) { + assert(_vm); } DreamWebConsole::~DreamWebConsole() { diff --git a/engines/dreamweb/detection_tables.h b/engines/dreamweb/detection_tables.h index 8a2f94f99b..ec54484d28 100644 --- a/engines/dreamweb/detection_tables.h +++ b/engines/dreamweb/detection_tables.h @@ -45,7 +45,7 @@ static const DreamWebGameDescription gameDescriptions[] = { AD_LISTEND }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, 0, GUIO2(GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_BRIGHTPALETTE) }, @@ -62,7 +62,7 @@ static const DreamWebGameDescription gameDescriptions[] = { AD_LISTEND }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO2(GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_BRIGHTPALETTE) }, @@ -83,7 +83,7 @@ static const DreamWebGameDescription gameDescriptions[] = { AD_LISTEND }, Common::EN_GRB, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO2(GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_BRIGHTPALETTE) }, @@ -100,7 +100,7 @@ static const DreamWebGameDescription gameDescriptions[] = { AD_LISTEND }, Common::EN_USA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO2(GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_BRIGHTPALETTE) }, @@ -117,7 +117,7 @@ static const DreamWebGameDescription gameDescriptions[] = { AD_LISTEND }, Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO2(GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_BRIGHTPALETTE) }, @@ -135,7 +135,7 @@ static const DreamWebGameDescription gameDescriptions[] = { AD_LISTEND }, Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO2(GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_BRIGHTPALETTE) }, @@ -152,7 +152,7 @@ static const DreamWebGameDescription gameDescriptions[] = { AD_LISTEND }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, 0, GUIO2(GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_BRIGHTPALETTE) }, @@ -169,7 +169,7 @@ static const DreamWebGameDescription gameDescriptions[] = { AD_LISTEND }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO2(GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_BRIGHTPALETTE) }, @@ -186,7 +186,7 @@ static const DreamWebGameDescription gameDescriptions[] = { AD_LISTEND }, Common::ES_ESP, - Common::kPlatformPC, + Common::kPlatformDOS, 0, GUIO2(GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_BRIGHTPALETTE) }, @@ -203,7 +203,7 @@ static const DreamWebGameDescription gameDescriptions[] = { AD_LISTEND }, Common::ES_ESP, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO2(GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_BRIGHTPALETTE) }, @@ -221,7 +221,7 @@ static const DreamWebGameDescription gameDescriptions[] = { AD_LISTEND }, Common::ES_ESP, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO2(GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_BRIGHTPALETTE) }, @@ -238,7 +238,7 @@ static const DreamWebGameDescription gameDescriptions[] = { AD_LISTEND }, Common::IT_ITA, - Common::kPlatformPC, + Common::kPlatformDOS, 0, GUIO2(GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_BRIGHTPALETTE) }, diff --git a/engines/dreamweb/monitor.cpp b/engines/dreamweb/monitor.cpp index b07fbf54fc..1f9fa8d24f 100644 --- a/engines/dreamweb/monitor.cpp +++ b/engines/dreamweb/monitor.cpp @@ -148,7 +148,7 @@ bool DreamWebEngine::execCommand() { static const char *const comlistDE[] = { "ENDE", - "HILFE", + "HILF", "LISTE", "LIES", "ZUGRIFF", @@ -161,10 +161,20 @@ bool DreamWebEngine::execCommand() { "AIUTO", "ELENCA", "LEGGI", - "REGISTRA", + "ACCEDI", "CHIAVI", NULL }; + + static const char *const comlistES[] = { + "SALIR", + "AYUDA", + "LISTA", + "LEER", + "ACCESO", + "CLAVES", + NULL + }; if (_inputLine[0] == 0) { // No input @@ -186,6 +196,8 @@ bool DreamWebEngine::execCommand() { cmd = findCommand(comlistIT); break; case Common::ES_ESP: + cmd = findCommand(comlistES); + break; default: break; } @@ -210,7 +222,7 @@ bool DreamWebEngine::execCommand() { monPrint("G\232LTIGE BEFEHLE SIND ENDE, HILFE, LISTE, LIES, ZUGRIFF, DATEN"); break; case Common::IT_ITA: - monPrint("I COMANDI VALIDI SONO ESCI, AIUTO, ELENCA, LEGGI, REGISTRA, CHIAVI"); + monPrint("I COMANDI VALIDI SONO ESCI, AIUTO, ELENCA, LEGGI, ACCEDI, CHIAVI"); break; case Common::ES_ESP: default: diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp index d93c2a951c..057a0c847a 100644 --- a/engines/dreamweb/stubs.cpp +++ b/engines/dreamweb/stubs.cpp @@ -1259,6 +1259,10 @@ void DreamWebEngine::commandWithOb(uint8 command, uint8 type, uint8 index) { uint8 textLen = _textLen; const uint8 *string = (const uint8 *)_commandText.getString(command); + // Fix spelling in command 3 FR: "Aller ver" => "Aller vers" + const char *command3Fr = "Aller vers"; + if (command == 3 && getLanguage() == Common::FR_FRA) + string = (const uint8 *)command3Fr; printDirect(string, _textAddressX, _textAddressY, textLen, (bool)(textLen & 1)); copyName(type, index, commandLine); diff --git a/engines/gob/detection/tables_adi2.h b/engines/gob/detection/tables_adi2.h index da05a31f40..e59552a554 100644 --- a/engines/gob/detection/tables_adi2.h +++ b/engines/gob/detection/tables_adi2.h @@ -33,7 +33,7 @@ "Adi 2.0 for Teachers", AD_ENTRY1s("adi2.stk", "da6f1fb68bff32260c5eecdf9286a2f5", 1533168), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -47,7 +47,7 @@ "Adi 2", AD_ENTRY1s("adi2.stk", "23f279615c736dc38320f1348e70c36e", 10817668), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOASPECT) }, @@ -61,7 +61,7 @@ "Adi 2", AD_ENTRY1s("adi2.stk", "d4162c4298f9423ecc1fb04965557e90", 11531214), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOASPECT) }, @@ -75,7 +75,7 @@ "Adi 2.5", AD_ENTRY1s("adi2.stk", "fcac60e6627f37aee219575b60859de9", 16944268), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOASPECT) }, @@ -89,7 +89,7 @@ "Adi 2.5", AD_ENTRY1s("adi2.stk", "072d5e2d7826a7c055865568ebf918bb", 16934596), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOASPECT) }, @@ -103,7 +103,7 @@ "Adi 2.6", AD_ENTRY1s("adi2.stk", "2fb940eb8105b12871f6b88c8c4d1615", 16780058), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOASPECT) }, @@ -120,7 +120,7 @@ "Adi 2.6", AD_ENTRY1s("adi2.stk", "fde7d98a67dbf859423b6473796e932a", 18044780), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOASPECT) }, @@ -134,7 +134,7 @@ "Adi 2.7.1", AD_ENTRY1s("adi2.stk", "6fa5dffebf5c7243c6af6b8c188ee00a", 19278008), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOASPECT) }, @@ -151,7 +151,7 @@ "Adi 2", AD_ENTRY1s("adi2.stk", "2a40bb48ccbd4e6fb3f7f0fc2f069d80", 17720132), ES_ESP, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOASPECT) }, @@ -191,7 +191,7 @@ {0, 0, 0, 0} }, EN_ANY, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, diff --git a/engines/gob/detection/tables_adi4.h b/engines/gob/detection/tables_adi4.h index 4b967d76d3..7147a84d7a 100644 --- a/engines/gob/detection/tables_adi4.h +++ b/engines/gob/detection/tables_adi4.h @@ -33,7 +33,7 @@ "Adi 4.0", AD_ENTRY1s("intro.stk", "a3c35d19b2d28ea261d96321d208cb5a", 6021466), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOASPECT) }, @@ -47,7 +47,7 @@ "Adi 4.0", AD_ENTRY1s("intro.stk", "44491d85648810bc6fcf84f9b3aa47d5", 5834944), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOASPECT) }, @@ -61,7 +61,7 @@ "Adi 4.0", AD_ENTRY1s("intro.stk", "29374c0e3c10b17dd8463b06a55ad093", 6012072), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOASPECT) }, @@ -75,7 +75,7 @@ "Adi 4.0 Limited Edition", AD_ENTRY1s("intro.stk", "ebbbc5e28a4adb695535ed989c1b8d66", 5929644), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOASPECT) }, @@ -89,7 +89,7 @@ "ADI 4.10", AD_ENTRY1s("intro.stk", "6afc2590856433b9f5295b032f2b205d", 5923112), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOASPECT) }, @@ -103,7 +103,7 @@ "ADI 4.11", AD_ENTRY1s("intro.stk", "6296e4be4e0c270c24d1330881900c7f", 5921234), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOASPECT) }, @@ -117,7 +117,7 @@ "ADI 4.21", AD_ENTRY1s("intro.stk", "c5b9f6222c0b463f51dab47317c5b687", 5950490), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOASPECT) }, @@ -134,7 +134,7 @@ "Addy 4 Grundschule Basis CD", AD_ENTRY1s("intro.stk", "d2f0fb8909e396328dc85c0e29131ba8", 5847588), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOASPECT) }, @@ -148,7 +148,7 @@ "Addy 4 Sekundarstufe Basis CD", AD_ENTRY1s("intro.stk", "367340e59c461b4fa36651cd74e32c4e", 5847378), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOASPECT) }, @@ -162,7 +162,7 @@ "Addy 4.21", AD_ENTRY1s("intro.stk", "534f0b674cd4830df94a9c32c4ea7225", 6878034), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOASPECT) }, @@ -179,7 +179,7 @@ "ADI 4.10", AD_ENTRY1s("intro.stk", "3e3fa9656e37d802027635ace88c4cc5", 5359144), EN_GRB, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOASPECT) }, @@ -196,7 +196,7 @@ "Adi 4.0 Interactive Demo", AD_ENTRY1s("intro.stk", "89ace204dbaac001425c73f394334f6f", 2413102), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOASPECT) }, @@ -210,7 +210,7 @@ "Adi 4.0 / Adibou 2 Demo", AD_ENTRY1s("intro.stk", "d41d8cd98f00b204e9800998ecf8427e", 0), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_DEMO, GUIO1(GUIO_NOASPECT) }, diff --git a/engines/gob/detection/tables_adibou.h b/engines/gob/detection/tables_adibou.h index 0e652839bb..e257ffdf8f 100644 --- a/engines/gob/detection/tables_adibou.h +++ b/engines/gob/detection/tables_adibou.h @@ -33,7 +33,7 @@ "ADIBOU 1 Environnement 4-7 ans", AD_ENTRY1s("intro.stk", "6db110188fcb7c5208d9721b5282682a", 4805104), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -47,7 +47,7 @@ "ADIBOU 2", AD_ENTRY1s("intro.stk", "94ae7004348dc8bf99c23a9a6ef81827", 956162), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -61,7 +61,7 @@ "Le Jardin Magique d'Adibou", AD_ENTRY1s("intro.stk", "a8ff86f3cc40dfe5898e0a741217ef27", 956328), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -75,7 +75,7 @@ "ADIBOU Version Decouverte", AD_ENTRY1s("intro.stk", "558c14327b79ed39214b49d567a75e33", 8737856), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -89,7 +89,7 @@ "ADIBOU 2.10 Environnement", AD_ENTRY1s("intro.stk", "f2b797819aeedee557e904b0b5ccd82e", 8736454), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -103,7 +103,7 @@ "ADIBOU 2.11 Environnement", AD_ENTRY1s("intro.stk", "7b1f1f6f6477f54401e95d913f75e333", 8736904), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -117,7 +117,7 @@ "ADIBOU 2.12 Environnement", AD_ENTRY1s("intro.stk", "1e49c39a4a3ce6032a84b712539c2d63", 8738134), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -131,7 +131,7 @@ "ADIBOU 2.13s Environnement", AD_ENTRY1s("intro.stk", "092707829555f27706920e4cacf1fada", 8737958), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -145,7 +145,7 @@ "ADIBOO 2.14 Environnement", AD_ENTRY1s("intro.stk", "ff63637e3cb7f0a457edf79457b1c6b3", 9333874), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -162,7 +162,7 @@ "ADIBOU 2", AD_ENTRY1s("intro.stk", "092707829555f27706920e4cacf1fada", 8737958), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -178,7 +178,7 @@ "ADIB\xD9 2", AD_ENTRY1s("intro.stk", "092707829555f27706920e4cacf1fada", 8737958), IT_ITA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -199,7 +199,7 @@ {0, 0, 0, 0} }, EN_GRB, - kPlatformPC, + kPlatformDOS, ADGF_DEMO, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -217,7 +217,7 @@ {0, 0, 0, 0} }, DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_DEMO, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -235,7 +235,7 @@ {0, 0, 0, 0} }, FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_DEMO, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, diff --git a/engines/gob/detection/tables_ajworld.h b/engines/gob/detection/tables_ajworld.h index d86bdb16be..99d61c882e 100644 --- a/engines/gob/detection/tables_ajworld.h +++ b/engines/gob/detection/tables_ajworld.h @@ -33,7 +33,7 @@ "", AD_ENTRY1s("intro.stk", "e453bea7b28a67c930764d945f64d898", 3913628), EN_ANY, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, diff --git a/engines/gob/detection/tables_bargon.h b/engines/gob/detection/tables_bargon.h index ac90355476..5f7fa2ab6f 100644 --- a/engines/gob/detection/tables_bargon.h +++ b/engines/gob/detection/tables_bargon.h @@ -33,7 +33,7 @@ "", AD_ENTRY1("intro.stk", "da3c54be18ab73fbdb32db24624a9c23"), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -47,7 +47,7 @@ "", AD_ENTRY1s("intro.stk", "11103b304286c23945560b391fd37e7d", 3181890), ES_ESP, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -61,7 +61,7 @@ "", AD_ENTRY1s("intro.stk", "da3c54be18ab73fbdb32db24624a9c23", 3181825), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -75,7 +75,7 @@ "", AD_ENTRY1s("intro.stk", "00f6b4e2ee26e5c40b488e2df5adcf03", 3975580), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -89,7 +89,7 @@ "Fanmade", AD_ENTRY1s("intro.stk", "da3c54be18ab73fbdb32db24624a9c23", 3181825), IT_ITA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, diff --git a/engines/gob/detection/tables_dynasty.h b/engines/gob/detection/tables_dynasty.h index 147bf32075..21e4ecc89f 100644 --- a/engines/gob/detection/tables_dynasty.h +++ b/engines/gob/detection/tables_dynasty.h @@ -33,7 +33,7 @@ "", AD_ENTRY1s("intro.stk", "6190e32404b672f4bbbc39cf76f41fda", 2511470), EN_USA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -47,7 +47,7 @@ "", AD_ENTRY1s("intro.stk", "61e4069c16e27775a6cc6d20f529fb36", 2511300), EN_USA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -61,7 +61,7 @@ "", AD_ENTRY1s("intro.stk", "61e4069c16e27775a6cc6d20f529fb36", 2511300), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -75,7 +75,7 @@ "", AD_ENTRY1s("intro.stk", "b3f8472484b7a1df94557b51e7b6fca0", 2322644), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -89,7 +89,7 @@ "", AD_ENTRY1s("intro.stk", "bdbdac8919200a5e71ffb9fb0709f704", 2446652), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -106,7 +106,7 @@ "Demo", AD_ENTRY1s("intro.stk", "464538a17ed39755d7f1ba9c751af1bd", 1847864), EN_USA, - kPlatformPC, + kPlatformDOS, ADGF_DEMO, GUIO1(GUIO_NOASPECT) }, diff --git a/engines/gob/detection/tables_fallback.h b/engines/gob/detection/tables_fallback.h index 05f579c08c..69a9e4fd6b 100644 --- a/engines/gob/detection/tables_fallback.h +++ b/engines/gob/detection/tables_fallback.h @@ -32,7 +32,7 @@ static const GOBGameDescription fallbackDescs[] = { "unknown", AD_ENTRY1(0, 0), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -46,7 +46,7 @@ static const GOBGameDescription fallbackDescs[] = { "unknown", AD_ENTRY1(0, 0), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -60,7 +60,7 @@ static const GOBGameDescription fallbackDescs[] = { "unknown", AD_ENTRY1(0, 0), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -88,7 +88,7 @@ static const GOBGameDescription fallbackDescs[] = { "unknown", AD_ENTRY1(0, 0), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -102,7 +102,7 @@ static const GOBGameDescription fallbackDescs[] = { "", AD_ENTRY1(0, 0), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -116,7 +116,7 @@ static const GOBGameDescription fallbackDescs[] = { "unknown", AD_ENTRY1(0, 0), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -130,7 +130,7 @@ static const GOBGameDescription fallbackDescs[] = { "unknown", AD_ENTRY1(0, 0), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -144,7 +144,7 @@ static const GOBGameDescription fallbackDescs[] = { "unknown", AD_ENTRY1(0, 0), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -158,7 +158,7 @@ static const GOBGameDescription fallbackDescs[] = { "unknown", AD_ENTRY1(0, 0), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -186,7 +186,7 @@ static const GOBGameDescription fallbackDescs[] = { "unknown", AD_ENTRY1(0, 0), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -200,7 +200,7 @@ static const GOBGameDescription fallbackDescs[] = { "unknown", AD_ENTRY1(0, 0), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -214,7 +214,7 @@ static const GOBGameDescription fallbackDescs[] = { "unknown", AD_ENTRY1(0, 0), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -228,7 +228,7 @@ static const GOBGameDescription fallbackDescs[] = { "unknown", AD_ENTRY1(0, 0), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -242,7 +242,7 @@ static const GOBGameDescription fallbackDescs[] = { "unknown", AD_ENTRY1(0, 0), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -256,7 +256,7 @@ static const GOBGameDescription fallbackDescs[] = { "unknown", AD_ENTRY1(0, 0), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -270,7 +270,7 @@ static const GOBGameDescription fallbackDescs[] = { "unknown", AD_ENTRY1(0, 0), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -284,7 +284,7 @@ static const GOBGameDescription fallbackDescs[] = { "unknown", AD_ENTRY1(0, 0), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -298,7 +298,7 @@ static const GOBGameDescription fallbackDescs[] = { "unknown", AD_ENTRY1(0, 0), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -312,7 +312,7 @@ static const GOBGameDescription fallbackDescs[] = { "unknown", AD_ENTRY1(0, 0), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -326,7 +326,7 @@ static const GOBGameDescription fallbackDescs[] = { "unknown", AD_ENTRY1(0, 0), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -340,7 +340,7 @@ static const GOBGameDescription fallbackDescs[] = { "unknown", AD_ENTRY1(0, 0), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -382,7 +382,7 @@ static const GOBGameDescription fallbackDescs[] = { "", AD_ENTRY1(0, 0), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -396,7 +396,7 @@ static const GOBGameDescription fallbackDescs[] = { "", AD_ENTRY1(0, 0), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -410,7 +410,7 @@ static const GOBGameDescription fallbackDescs[] = { "unknown", AD_ENTRY1(0, 0), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOASPECT) }, @@ -478,7 +478,7 @@ static const GOBGameDescription fallbackOnceUpon[kOnceUponATimeMAX][kOnceUponATi "", AD_ENTRY1(0, 0), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -522,7 +522,7 @@ static const GOBGameDescription fallbackOnceUpon[kOnceUponATimeMAX][kOnceUponATi "", AD_ENTRY1(0, 0), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, diff --git a/engines/gob/detection/tables_fascin.h b/engines/gob/detection/tables_fascin.h index 1c9cced303..b74a057db9 100644 --- a/engines/gob/detection/tables_fascin.h +++ b/engines/gob/detection/tables_fascin.h @@ -33,7 +33,7 @@ "VGA", AD_ENTRY1s("disk0.stk", "c14330d052fe4da5a441ac9d81bc5891", 1061955), EN_ANY, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -47,7 +47,7 @@ "VGA", AD_ENTRY1s("disk0.stk", "e8ab4f200a2304849f462dc901705599", 183337), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -64,7 +64,7 @@ "VGA 3 disks edition", AD_ENTRY1s("disk0.stk", "ab3dfdce43917bc806812959d692fc8f", 1061929), IT_ITA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -78,7 +78,7 @@ "VGA 3 disks edition", AD_ENTRY1s("disk0.stk", "a50a8495e1b2d67699fb562cb98fc3e2", 1064387), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -92,7 +92,7 @@ "Hebrew edition (censored)", AD_ENTRY1s("intro.stk", "d6e45ce548598727e2b5587a99718eba", 1055909), HE_ISR, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -106,7 +106,7 @@ "VGA 3 disks edition", AD_ENTRY1s("disk0.stk", "3a24e60a035250189643c86a9ceafb97", 1062480), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -123,7 +123,7 @@ "CD Version (Censored)", AD_ENTRY1s("intro.stk", "9c61e9c22077f72921f07153e37ccf01", 545953), EN_ANY, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSUBTITLES) }, @@ -137,7 +137,7 @@ "CD Version (Censored)", AD_ENTRY1s("intro.stk", "9c61e9c22077f72921f07153e37ccf01", 545953), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSUBTITLES) }, @@ -151,7 +151,7 @@ "CD Version (Censored)", AD_ENTRY1s("intro.stk", "9c61e9c22077f72921f07153e37ccf01", 545953), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSUBTITLES) }, @@ -165,7 +165,7 @@ "CD Version (Censored)", AD_ENTRY1s("intro.stk", "9c61e9c22077f72921f07153e37ccf01", 545953), IT_ITA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSUBTITLES) }, @@ -179,7 +179,7 @@ "CD Version (Censored)", AD_ENTRY1s("intro.stk", "9c61e9c22077f72921f07153e37ccf01", 545953), ES_ESP, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSUBTITLES) }, diff --git a/engines/gob/detection/tables_geisha.h b/engines/gob/detection/tables_geisha.h index 2c9a8842d0..e9a5cfb77f 100644 --- a/engines/gob/detection/tables_geisha.h +++ b/engines/gob/detection/tables_geisha.h @@ -33,7 +33,7 @@ "", AD_ENTRY1s("disk1.stk", "6eebbb98ad90cd3c44549fc2ab30f632", 212153), EN_ANY, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -47,7 +47,7 @@ "", AD_ENTRY1s("disk1.stk", "6eebbb98ad90cd3c44549fc2ab30f632", 212153), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -61,7 +61,7 @@ "", AD_ENTRY1s("disk1.stk", "0c4c16090921664f50baefdfd24d7f5d", 211889), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -75,7 +75,7 @@ "", AD_ENTRY1s("disk1.stk", "49107ac897e7c00af6c4ecd78a74a710", 212169), ES_ESP, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -89,7 +89,7 @@ "", AD_ENTRY1s("disk1.stk", "49107ac897e7c00af6c4ecd78a74a710", 212169), IT_ITA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -103,7 +103,7 @@ "", AD_ENTRY1s("disk1.stk", "49107ac897e7c00af6c4ecd78a74a710", 212164), ES_ESP, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -117,7 +117,7 @@ "", AD_ENTRY1s("disk1.stk", "f4d4d9d20f7ad1f879fc417d47faba89", 336732), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, diff --git a/engines/gob/detection/tables_gob1.h b/engines/gob/detection/tables_gob1.h index e6086e990a..8ae72abf33 100644 --- a/engines/gob/detection/tables_gob1.h +++ b/engines/gob/detection/tables_gob1.h @@ -33,7 +33,7 @@ "EGA", AD_ENTRY1("intro.stk", "c65e9cc8ba23a38456242e1f2b1caad4"), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -47,7 +47,7 @@ "EGA", AD_ENTRY1("intro.stk", "f9233283a0be2464248d83e14b95f09c"), RU_RUS, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -64,7 +64,7 @@ "VGA", AD_ENTRY1("intro.stk", "26a9118c0770fa5ac93a9626761600b2"), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -78,7 +78,7 @@ "VGA", AD_ENTRY1s("intro.stk", "e157cb59c6d330ca70d12ab0ef1dd12b", 288972), EN_GRB, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -95,7 +95,7 @@ "Polish", AD_ENTRY1s("intro.stk", "97d2443948b2e367cf567fe7e101f5f2", 4049267), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -109,7 +109,7 @@ "v1.000", AD_ENTRY1("intro.stk", "2fbf4b5b82bbaee87eb45d4404c28998"), EN_USA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -123,7 +123,7 @@ "v1.000", AD_ENTRY1("intro.stk", "2fbf4b5b82bbaee87eb45d4404c28998"), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -137,7 +137,7 @@ "v1.000", AD_ENTRY1("intro.stk", "2fbf4b5b82bbaee87eb45d4404c28998"), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -151,7 +151,7 @@ "v1.000", AD_ENTRY1("intro.stk", "2fbf4b5b82bbaee87eb45d4404c28998"), IT_ITA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -165,7 +165,7 @@ "v1.000", AD_ENTRY1("intro.stk", "2fbf4b5b82bbaee87eb45d4404c28998"), ES_ESP, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -179,7 +179,7 @@ "v1.02", AD_ENTRY1("intro.stk", "8bd873137b6831c896ee8ad217a6a398"), EN_USA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -193,7 +193,7 @@ "v1.02", AD_ENTRY1("intro.stk", "8bd873137b6831c896ee8ad217a6a398"), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -207,7 +207,7 @@ "v1.02", AD_ENTRY1("intro.stk", "8bd873137b6831c896ee8ad217a6a398"), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -221,7 +221,7 @@ "v1.02", AD_ENTRY1("intro.stk", "8bd873137b6831c896ee8ad217a6a398"), IT_ITA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -235,7 +235,7 @@ "v1.02", AD_ENTRY1("intro.stk", "8bd873137b6831c896ee8ad217a6a398"), ES_ESP, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -249,7 +249,7 @@ "v1.02", AD_ENTRY1s("intro.stk", "40d4a53818f4fce3f5997d02c3fafe73", 4049248), HU_HUN, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -263,7 +263,7 @@ "v1.02", AD_ENTRY1s("intro.stk", "40d4a53818f4fce3f5997d02c3fafe73", 4049248), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -277,7 +277,7 @@ "v1.02", AD_ENTRY1s("intro.stk", "40d4a53818f4fce3f5997d02c3fafe73", 4049248), ES_ESP, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -291,7 +291,7 @@ "v1.02", AD_ENTRY1s("intro.stk", "40d4a53818f4fce3f5997d02c3fafe73", 4049248), IT_ITA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -662,7 +662,7 @@ "Interactive Demo", AD_ENTRY1("intro.stk", "e72bd1e3828c7dec4c8a3e58c48bdfdb"), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_DEMO, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -676,7 +676,7 @@ "Interactive Demo", AD_ENTRY1s("intro.stk", "a796096280d5efd48cf8e7dfbe426eb5", 193595), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_DEMO, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -690,7 +690,7 @@ "Interactive Demo", AD_ENTRY1s("intro.stk", "35a098571af9a03c04e2303aec7c9249", 116582), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_DEMO, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, diff --git a/engines/gob/detection/tables_gob2.h b/engines/gob/detection/tables_gob2.h index 659e6df063..f2449d086d 100644 --- a/engines/gob/detection/tables_gob2.h +++ b/engines/gob/detection/tables_gob2.h @@ -33,7 +33,7 @@ "", AD_ENTRY1("intro.stk", "b45b984ee8017efd6ea965b9becd4d66"), EN_GRB, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -47,7 +47,7 @@ "", AD_ENTRY1("intro.stk", "dedb5d31d8c8050a8cf77abedcc53dae"), EN_USA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -61,7 +61,7 @@ "", AD_ENTRY1s("intro.stk", "25a99827cd59751a80bed9620fb677a0", 893302), EN_USA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -75,7 +75,7 @@ "", AD_ENTRY1s("intro.stk", "a13ecb4f6d8fd881ebbcc02e45cb5475", 837275), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -89,7 +89,7 @@ "", AD_ENTRY1("intro.stk", "3e4e7db0d201587dd2df4003b2993ef6"), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -103,7 +103,7 @@ "", AD_ENTRY1("intro.stk", "a13892cdf4badda85a6f6fb47603a128"), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -117,7 +117,7 @@ "", AD_ENTRY1("intro.stk", "c47faf1d406504e6ffe63243610bb1f4"), IT_ITA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -131,7 +131,7 @@ "", AD_ENTRY1("intro.stk", "cd3e1df8b273636ee32e34b7064f50e8"), RU_RUS, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -145,7 +145,7 @@ "", AD_ENTRY1s("intro.stk", "5f53c56e3aa2f1e76c2e4f0caa15887f", 829232), ES_ESP, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -162,7 +162,7 @@ "v1.000", AD_ENTRY1("intro.stk", "9de5fbb41cf97182109e5fecc9d90347"), EN_USA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -176,7 +176,7 @@ "v2.01 Polish", AD_ENTRY1s("intro.stk", "3025f05482b646c18c2c79c615a3a1df", 5011726), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -190,7 +190,7 @@ "v2.01", AD_ENTRY1("intro.stk", "24a6b32757752ccb1917ce92fd7c2a04"), EN_ANY, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -204,7 +204,7 @@ "v2.01", AD_ENTRY1("intro.stk", "24a6b32757752ccb1917ce92fd7c2a04"), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -218,7 +218,7 @@ "v2.01", AD_ENTRY1("intro.stk", "24a6b32757752ccb1917ce92fd7c2a04"), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -232,7 +232,7 @@ "v2.01", AD_ENTRY1("intro.stk", "24a6b32757752ccb1917ce92fd7c2a04"), IT_ITA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -246,7 +246,7 @@ "v2.01", AD_ENTRY1("intro.stk", "24a6b32757752ccb1917ce92fd7c2a04"), ES_ESP, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -260,7 +260,7 @@ "v1.02", AD_ENTRY1s("intro.stk", "5ba85a4769a1ab03a283dd694588d526", 5006236), HU_HUN, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -274,7 +274,7 @@ "v1.02", AD_ENTRY1s("intro.stk", "5ba85a4769a1ab03a283dd694588d526", 5006236), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -288,7 +288,7 @@ "v1.02", AD_ENTRY1s("intro.stk", "5ba85a4769a1ab03a283dd694588d526", 5006236), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -302,7 +302,7 @@ "v1.02", AD_ENTRY1s("intro.stk", "5ba85a4769a1ab03a283dd694588d526", 5006236), ES_ESP, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -316,7 +316,7 @@ "v1.02", AD_ENTRY1s("intro.stk", "5ba85a4769a1ab03a283dd694588d526", 5006236), IT_ITA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -587,7 +587,7 @@ "Non-Interactive Demo", AD_ENTRY1("intro.stk", "8b1c98ff2ab2e14f47a1b891e9b92217"), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_DEMO, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -601,7 +601,7 @@ "Interactive Demo", AD_ENTRY1("intro.stk", "cf1c95b2939bd8ff58a25c756cb6125e"), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_DEMO, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, diff --git a/engines/gob/detection/tables_gob3.h b/engines/gob/detection/tables_gob3.h index 22ec69054b..29a76d2491 100644 --- a/engines/gob/detection/tables_gob3.h +++ b/engines/gob/detection/tables_gob3.h @@ -33,7 +33,7 @@ "", AD_ENTRY1s("intro.stk", "32b0f57f5ae79a9ae97e8011df38af42", 157084), EN_GRB, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -47,7 +47,7 @@ "", AD_ENTRY1s("intro.stk", "904fc32032295baa3efb3a41f17db611", 178582), HE_ISR, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -61,7 +61,7 @@ "", AD_ENTRY1s("intro.stk", "16b014bf32dbd6ab4c5163c44f56fed1", 445104), EN_GRB, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -75,7 +75,7 @@ "", AD_ENTRY1("intro.stk", "1e2f64ec8dfa89f42ee49936a27e66e7"), EN_USA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -89,7 +89,7 @@ "", AD_ENTRY1("intro.stk", "f6d225b25a180606fa5dbe6405c97380"), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -103,7 +103,7 @@ "", AD_ENTRY1("intro.stk", "e42a4f2337d6549487a80864d7826972"), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -117,7 +117,7 @@ "", AD_ENTRY1s("intro.stk", "fe8144daece35538085adb59c2d29613", 159402), IT_ITA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -131,7 +131,7 @@ "", AD_ENTRY1("intro.stk", "4e3af248a48a2321364736afab868527"), RU_RUS, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -145,7 +145,7 @@ "", AD_ENTRY1("intro.stk", "8d28ce1591b0e9cc79bf41cad0fc4c9c"), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -159,7 +159,7 @@ "", AD_ENTRY1s("intro.stk", "d3b72938fbbc8159198088811f9e6d19", 160382), ES_ESP, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -353,7 +353,7 @@ "v1.000", AD_ENTRY1("intro.stk", "6f2c226c62dd7ab0ab6f850e89d3fc47"), EN_USA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -367,7 +367,7 @@ "v1.02 Polish", AD_ENTRY1s("intro.stk", "978afddcac81bb95a04757b61f78471c", 619825), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -381,7 +381,7 @@ "v1.02", AD_ENTRY1("intro.stk", "c3e9132ea9dc0fb866b6d60dcda10261"), EN_ANY, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -395,7 +395,7 @@ "v1.02", AD_ENTRY1("intro.stk", "c3e9132ea9dc0fb866b6d60dcda10261"), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -409,7 +409,7 @@ "v1.02", AD_ENTRY1("intro.stk", "c3e9132ea9dc0fb866b6d60dcda10261"), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -423,7 +423,7 @@ "v1.02", AD_ENTRY1("intro.stk", "c3e9132ea9dc0fb866b6d60dcda10261"), IT_ITA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -437,7 +437,7 @@ "v1.02", AD_ENTRY1("intro.stk", "c3e9132ea9dc0fb866b6d60dcda10261"), ES_ESP, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -451,7 +451,7 @@ "v1.02", AD_ENTRY1s("intro.stk", "bfd7d4c6fedeb2cfcc8baa4d5ddb1f74", 616220), HU_HUN, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -465,7 +465,7 @@ "v1.02", AD_ENTRY1s("intro.stk", "bfd7d4c6fedeb2cfcc8baa4d5ddb1f74", 616220), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -479,7 +479,7 @@ "v1.02", AD_ENTRY1s("intro.stk", "bfd7d4c6fedeb2cfcc8baa4d5ddb1f74", 616220), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -493,7 +493,7 @@ "v1.02", AD_ENTRY1s("intro.stk", "bfd7d4c6fedeb2cfcc8baa4d5ddb1f74", 616220), ES_ESP, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -510,7 +510,7 @@ "Non-interactive Demo", AD_ENTRY1("intro.stk", "b9b898fccebe02b69c086052d5024a55"), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_DEMO, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -524,7 +524,7 @@ "Interactive Demo", AD_ENTRY1("intro.stk", "7aebd94e49c2c5c518c9e7b74f25de9d"), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_DEMO, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -538,7 +538,7 @@ "Interactive Demo 2", AD_ENTRY1("intro.stk", "e5dcbc9f6658ebb1e8fe26bc4da0806d"), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_DEMO, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -552,7 +552,7 @@ "Interactive Demo 3", AD_ENTRY1s("intro.stk", "9e20ad7b471b01f84db526da34eaf0a2", 395561), EN_ANY, - kPlatformPC, + kPlatformDOS, ADGF_DEMO, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, diff --git a/engines/gob/detection/tables_inca2.h b/engines/gob/detection/tables_inca2.h index 26989f7d1a..8ca9463277 100644 --- a/engines/gob/detection/tables_inca2.h +++ b/engines/gob/detection/tables_inca2.h @@ -33,7 +33,7 @@ "", AD_ENTRY1s("intro.stk", "1fa92b00fe80a20f34ec34a8e2fa869e", 923072), EN_USA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -47,7 +47,7 @@ "", AD_ENTRY1s("intro.stk", "1fa92b00fe80a20f34ec34a8e2fa869e", 923072), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -61,7 +61,7 @@ "", AD_ENTRY1s("intro.stk", "1fa92b00fe80a20f34ec34a8e2fa869e", 923072), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -78,7 +78,7 @@ "", AD_ENTRY1s("intro.stk", "47c3b452767c4f49ea7b109143e77c30", 916828), EN_USA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -92,7 +92,7 @@ "", AD_ENTRY1s("intro.stk", "47c3b452767c4f49ea7b109143e77c30", 916828), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -106,7 +106,7 @@ "", AD_ENTRY1s("intro.stk", "47c3b452767c4f49ea7b109143e77c30", 916828), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -120,7 +120,7 @@ "", AD_ENTRY1s("intro.stk", "47c3b452767c4f49ea7b109143e77c30", 916828), IT_ITA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -134,7 +134,7 @@ "", AD_ENTRY1s("intro.stk", "47c3b452767c4f49ea7b109143e77c30", 916828), ES_ESP, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -237,7 +237,7 @@ {0, 0, 0, 0} }, EN_ANY, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, diff --git a/engines/gob/detection/tables_lit.h b/engines/gob/detection/tables_lit.h index 019d001f97..c4453312ec 100644 --- a/engines/gob/detection/tables_lit.h +++ b/engines/gob/detection/tables_lit.h @@ -33,7 +33,7 @@ "", AD_ENTRY1s("intro.stk", "7b7f48490dedc8a7cb999388e2fadbe3", 3930674), EN_USA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -47,7 +47,7 @@ "", AD_ENTRY1s("intro.stk", "e0767783ff662ed93665446665693aef", 4371238), HE_ISR, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -61,7 +61,7 @@ "", AD_ENTRY1s("intro.stk", "f1f78b663893b58887add182a77df151", 3944090), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -75,7 +75,7 @@ "", AD_ENTRY1s("intro.stk", "cd322cb3c64ef2ba2f2134aa2122cfe9", 3936700), ES_ESP, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -89,7 +89,7 @@ "", AD_ENTRY1s("intro.stk", "6263d09e996c1b4e84ef2d650b820e57", 4831170), EN_USA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -103,7 +103,7 @@ "", AD_ENTRY1s("intro.stk", "6263d09e996c1b4e84ef2d650b820e57", 4831170), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -117,7 +117,7 @@ "", AD_ENTRY1s("intro.stk", "6263d09e996c1b4e84ef2d650b820e57", 4831170), IT_ITA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -131,7 +131,7 @@ "", AD_ENTRY1s("intro.stk", "6263d09e996c1b4e84ef2d650b820e57", 4831170), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -145,7 +145,7 @@ "", AD_ENTRY1s("intro.stk", "6263d09e996c1b4e84ef2d650b820e57", 4831170), ES_ESP, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -159,7 +159,7 @@ "", AD_ENTRY1s("intro.stk", "6263d09e996c1b4e84ef2d650b820e57", 4831170), EN_GRB, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -173,7 +173,7 @@ "", AD_ENTRY1s("intro.stk", "795be7011ec31bf5bb8ce4efdb9ee5d3", 4838904), EN_USA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -187,7 +187,7 @@ "", AD_ENTRY1s("intro.stk", "795be7011ec31bf5bb8ce4efdb9ee5d3", 4838904), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -201,7 +201,7 @@ "", AD_ENTRY1s("intro.stk", "795be7011ec31bf5bb8ce4efdb9ee5d3", 4838904), IT_ITA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -215,7 +215,7 @@ "", AD_ENTRY1s("intro.stk", "795be7011ec31bf5bb8ce4efdb9ee5d3", 4838904), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -229,7 +229,7 @@ "", AD_ENTRY1s("intro.stk", "795be7011ec31bf5bb8ce4efdb9ee5d3", 4838904), ES_ESP, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -243,7 +243,7 @@ "", AD_ENTRY1s("intro.stk", "795be7011ec31bf5bb8ce4efdb9ee5d3", 4838904), EN_GRB, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -441,7 +441,7 @@ "Demo", AD_ENTRY1("demo.stk", "c06f8cc20eb239d4c71f225ce3093edf"), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_DEMO, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -455,7 +455,7 @@ "Non-interactive Demo", AD_ENTRY1("demo.stk", "2eba8abd9e3878c57307576012dd2fec"), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_DEMO, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -472,7 +472,7 @@ "", AD_ENTRY1s("intro.stk", "3712e7527ba8ce5637d2aadf62783005", 72318), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_PIRATED, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, diff --git a/engines/gob/detection/tables_littlered.h b/engines/gob/detection/tables_littlered.h index 2b41b65a71..55279f72b6 100644 --- a/engines/gob/detection/tables_littlered.h +++ b/engines/gob/detection/tables_littlered.h @@ -33,7 +33,7 @@ "", AD_ENTRY1s("intro.stk", "0b72992f5d8b5e6e0330572a5753ea25", 256490), EN_GRB, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -47,7 +47,7 @@ "", AD_ENTRY1s("intro.stk", "0b72992f5d8b5e6e0330572a5753ea25", 256490), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -61,7 +61,7 @@ "", AD_ENTRY1s("intro.stk", "0b72992f5d8b5e6e0330572a5753ea25", 256490), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -75,7 +75,7 @@ "", AD_ENTRY1s("intro.stk", "0b72992f5d8b5e6e0330572a5753ea25", 256490), ES_ESP, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -89,7 +89,7 @@ "", AD_ENTRY1s("intro.stk", "0b72992f5d8b5e6e0330572a5753ea25", 256490), IT_ITA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, diff --git a/engines/gob/detection/tables_onceupon.h b/engines/gob/detection/tables_onceupon.h index 366024d43c..c516719c55 100644 --- a/engines/gob/detection/tables_onceupon.h +++ b/engines/gob/detection/tables_onceupon.h @@ -234,7 +234,7 @@ {0, 0, 0, 0} }, FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -253,7 +253,7 @@ {0, 0, 0, 0} }, DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -272,7 +272,7 @@ {0, 0, 0, 0} }, EN_ANY, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -291,7 +291,7 @@ {0, 0, 0, 0} }, IT_ITA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -310,7 +310,7 @@ {0, 0, 0, 0} }, ES_ESP, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, diff --git a/engines/gob/detection/tables_playtoons.h b/engines/gob/detection/tables_playtoons.h index 4eb5945b04..5bdc337eba 100644 --- a/engines/gob/detection/tables_playtoons.h +++ b/engines/gob/detection/tables_playtoons.h @@ -37,7 +37,7 @@ {0, 0, 0, 0} }, FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -55,7 +55,7 @@ {0, 0, 0, 0} }, FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -73,7 +73,7 @@ {0, 0, 0, 0} }, DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -91,7 +91,7 @@ {0, 0, 0, 0} }, EN_ANY, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -114,7 +114,7 @@ {0, 0, 0, 0} }, EN_ANY, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -132,7 +132,7 @@ {0, 0, 0, 0} }, EN_ANY, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -154,7 +154,7 @@ {0, 0, 0, 0} }, IT_ITA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -175,7 +175,7 @@ {0, 0, 0, 0} }, ES_ESP, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -196,7 +196,7 @@ {0, 0, 0, 0} }, EN_ANY, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -214,7 +214,7 @@ {0, 0, 0, 0} }, FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -232,7 +232,7 @@ {0, 0, 0, 0} }, DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -250,7 +250,7 @@ {0, 0, 0, 0} }, IT_ITA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -268,7 +268,7 @@ {0, 0, 0, 0} }, EN_ANY, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -289,7 +289,7 @@ {0, 0, 0, 0} }, FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -307,7 +307,7 @@ {0, 0, 0, 0} }, EN_ANY, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -325,7 +325,7 @@ {0, 0, 0, 0} }, FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -343,7 +343,7 @@ {0, 0, 0, 0} }, DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -361,7 +361,7 @@ {0, 0, 0, 0} }, EN_ANY, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -382,7 +382,7 @@ {0, 0, 0, 0} }, FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -400,7 +400,7 @@ {0, 0, 0, 0} }, EN_ANY, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -421,7 +421,7 @@ {0, 0, 0, 0} }, FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -442,7 +442,7 @@ {0, 0, 0, 0} }, FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -463,7 +463,7 @@ {0, 0, 0, 0} }, FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -484,7 +484,7 @@ {0, 0, 0, 0} }, FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -505,7 +505,7 @@ {0, 0, 0, 0} }, FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, diff --git a/engines/gob/detection/tables_urban.h b/engines/gob/detection/tables_urban.h index d24f6a5011..71c34c9d89 100644 --- a/engines/gob/detection/tables_urban.h +++ b/engines/gob/detection/tables_urban.h @@ -33,7 +33,7 @@ "", AD_ENTRY1s("intro.stk", "3ab2c542bd9216ae5d02cc6f45701ae1", 1252436), EN_USA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -47,7 +47,7 @@ "", AD_ENTRY1s("intro.stk", "6ce3d878178932053267237ec4843ce1", 1252518), EN_USA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -61,7 +61,7 @@ "", AD_ENTRY1s("intro.stk", "b991ed1d31c793e560edefdb349882ef", 1276408), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -75,7 +75,7 @@ "", AD_ENTRY1s("intro.stk", "4ec3c0864e2b54c5b4ccf9f6ad96528d", 1253328), ES_ESP, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -89,7 +89,7 @@ "", AD_ENTRY1s("intro.stk", "9ea647085a16dd0fb9ecd84cd8778ec9", 1253436), IT_ITA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -103,7 +103,7 @@ "", AD_ENTRY1s("intro.stk", "4e4a3c017fe5475353bf94c455fe3efd", 1253448), IT_ITA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -117,7 +117,7 @@ "", AD_ENTRY1s("intro.stk", "4bd31979ea3d77a58a358c09000a85ed", 1253018), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -139,7 +139,7 @@ {0, 0, 0, 0} }, EN_ANY, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOASPECT) }, diff --git a/engines/gob/detection/tables_ween.h b/engines/gob/detection/tables_ween.h index a02b931b85..89da5ba794 100644 --- a/engines/gob/detection/tables_ween.h +++ b/engines/gob/detection/tables_ween.h @@ -33,7 +33,7 @@ "", AD_ENTRY1("intro.stk", "2bb8878a8042244dd2b96ff682381baa"), EN_GRB, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -47,7 +47,7 @@ "", AD_ENTRY1s("intro.stk", "de92e5c6a8c163007ffceebef6e67f7d", 7117568), EN_USA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -61,7 +61,7 @@ "", AD_ENTRY1s("intro.stk", "6d60f9205ecfbd8735da2ee7823a70dc", 7014426), ES_ESP, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -75,7 +75,7 @@ "", AD_ENTRY1("intro.stk", "4b10525a3782aa7ecd9d833b5c1d308b"), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -89,7 +89,7 @@ "", AD_ENTRY1("intro.stk", "63170e71f04faba88673b3f510f9c4c8"), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -103,7 +103,7 @@ "", AD_ENTRY1s("intro.stk", "8b57cd510da8a3bbd99e3a0297a8ebd1", 7018771), IT_ITA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -236,7 +236,7 @@ "", AD_ENTRY1("intro.stk", "2bb8878a8042244dd2b96ff682381baa"), EN_GRB, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -250,7 +250,7 @@ "", AD_ENTRY1s("intro.stk", "de92e5c6a8c163007ffceebef6e67f7d", 7117568), EN_USA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -264,7 +264,7 @@ "", AD_ENTRY1s("intro.stk", "6d60f9205ecfbd8735da2ee7823a70dc", 7014426), ES_ESP, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -278,7 +278,7 @@ "", AD_ENTRY1("intro.stk", "4b10525a3782aa7ecd9d833b5c1d308b"), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -292,7 +292,7 @@ "", AD_ENTRY1("intro.stk", "63170e71f04faba88673b3f510f9c4c8"), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -306,7 +306,7 @@ "", AD_ENTRY1s("intro.stk", "8b57cd510da8a3bbd99e3a0297a8ebd1", 7018771), IT_ITA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -323,7 +323,7 @@ "Demo", AD_ENTRY1("intro.stk", "2e9c2898f6bf206ede801e3b2e7ee428"), UNK_LANG, - kPlatformPC, + kPlatformDOS, ADGF_DEMO, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, @@ -337,7 +337,7 @@ "Demo", AD_ENTRY1("intro.stk", "15fb91a1b9b09684b28ac75edf66e504"), EN_USA, - kPlatformPC, + kPlatformDOS, ADGF_DEMO, GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) }, diff --git a/engines/gob/detection/tables_woodruff.h b/engines/gob/detection/tables_woodruff.h index e369539984..f6675a0981 100644 --- a/engines/gob/detection/tables_woodruff.h +++ b/engines/gob/detection/tables_woodruff.h @@ -33,7 +33,7 @@ "", AD_ENTRY1s("intro.stk", "dccf9d31cb720b34d75487408821b77e", 20296390), EN_GRB, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -47,7 +47,7 @@ "", AD_ENTRY1s("intro.stk", "dccf9d31cb720b34d75487408821b77e", 20296390), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -61,7 +61,7 @@ "", AD_ENTRY1s("intro.stk", "dccf9d31cb720b34d75487408821b77e", 20296390), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -75,7 +75,7 @@ "", AD_ENTRY1s("intro.stk", "dccf9d31cb720b34d75487408821b77e", 20296390), IT_ITA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -89,7 +89,7 @@ "", AD_ENTRY1s("intro.stk", "dccf9d31cb720b34d75487408821b77e", 20296390), ES_ESP, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -103,7 +103,7 @@ "", AD_ENTRY1s("intro.stk", "b50fee012a5abcd0ac2963e1b4b56bec", 20298108), EN_GRB, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -117,7 +117,7 @@ "", AD_ENTRY1s("intro.stk", "b50fee012a5abcd0ac2963e1b4b56bec", 20298108), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -131,7 +131,7 @@ "", AD_ENTRY1s("intro.stk", "b50fee012a5abcd0ac2963e1b4b56bec", 20298108), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -145,7 +145,7 @@ "", AD_ENTRY1s("intro.stk", "b50fee012a5abcd0ac2963e1b4b56bec", 20298108), IT_ITA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -159,7 +159,7 @@ "", AD_ENTRY1s("intro.stk", "b50fee012a5abcd0ac2963e1b4b56bec", 20298108), ES_ESP, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -173,7 +173,7 @@ "", AD_ENTRY1s("intro.stk", "5f5f4e0a72c33391e67a47674b120cc6", 20296422), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -187,7 +187,7 @@ "", AD_ENTRY1s("intro.stk", "270529d9b8cce770b1575908a3800b52", 20296452), ES_ESP, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -201,7 +201,7 @@ "", AD_ENTRY1s("intro.stk", "270529d9b8cce770b1575908a3800b52", 20296452), EN_GRB, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -215,7 +215,7 @@ "", AD_ENTRY1s("intro.stk", "270529d9b8cce770b1575908a3800b52", 20296452), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -229,7 +229,7 @@ "", AD_ENTRY1s("intro.stk", "270529d9b8cce770b1575908a3800b52", 20296452), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -243,7 +243,7 @@ "", AD_ENTRY1s("intro.stk", "270529d9b8cce770b1575908a3800b52", 20296452), IT_ITA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -257,7 +257,7 @@ "", AD_ENTRY1s("intro.stk", "f4c344023b073782d2fddd9d8b515318", 7069736), IT_ITA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -271,7 +271,7 @@ "", AD_ENTRY1s("intro.stk", "f4c344023b073782d2fddd9d8b515318", 7069736), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -285,7 +285,7 @@ "", AD_ENTRY1s("intro.stk", "f4c344023b073782d2fddd9d8b515318", 7069736), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -299,7 +299,7 @@ "", AD_ENTRY1s("intro.stk", "60348a87651f92e8492ee070556a96d8", 7069736), EN_GRB, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -313,7 +313,7 @@ "", AD_ENTRY1s("intro.stk", "60348a87651f92e8492ee070556a96d8", 7069736), DE_DEU, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -327,7 +327,7 @@ "", AD_ENTRY1s("intro.stk", "60348a87651f92e8492ee070556a96d8", 7069736), FR_FRA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -341,7 +341,7 @@ "", AD_ENTRY1s("intro.stk", "60348a87651f92e8492ee070556a96d8", 7069736), IT_ITA, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -355,7 +355,7 @@ "", AD_ENTRY1s("intro.stk", "60348a87651f92e8492ee070556a96d8", 7069736), ES_ESP, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -369,7 +369,7 @@ "", AD_ENTRY1s("intro.stk", "08a96bf061af1fa4f75c6a7cc56b60a4", 20734979), PL_POL, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSPEECH, GUIO_NOASPECT) }, @@ -390,7 +390,7 @@ {0, 0, 0, 0} }, EN_ANY, - kPlatformPC, + kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GUIO_NOASPECT) }, diff --git a/engines/gob/hotspots.cpp b/engines/gob/hotspots.cpp index 11b6150626..cd00cd13d7 100644 --- a/engines/gob/hotspots.cpp +++ b/engines/gob/hotspots.cpp @@ -1995,6 +1995,7 @@ bool Hotspots::leaveNthPlain(uint16 n, uint16 startIndex, int16 timeVal, const u // Call the leave and time it startTime = _vm->_util->getTimeKey(); call(spot.funcLeave); + _vm->_inter->animPalette(); callTime = _vm->_util->getTimeKey() - startTime; // Remove the time it took from the time we have available diff --git a/engines/gob/init_v2.cpp b/engines/gob/init_v2.cpp index c204b04a40..1540ff6601 100644 --- a/engines/gob/init_v2.cpp +++ b/engines/gob/init_v2.cpp @@ -47,7 +47,7 @@ void Init_v2::initVideo() { _vm->_global->_colorCount = 16; if (!_vm->isEGA() && - ((_vm->getPlatform() == Common::kPlatformPC) || + ((_vm->getPlatform() == Common::kPlatformDOS) || (_vm->getPlatform() == Common::kPlatformMacintosh) || (_vm->getPlatform() == Common::kPlatformWindows)) && ((_vm->_global->_videoMode == 0x13) || diff --git a/engines/gob/inter_fascin.cpp b/engines/gob/inter_fascin.cpp index 001ec06635..c3b5d98a58 100644 --- a/engines/gob/inter_fascin.cpp +++ b/engines/gob/inter_fascin.cpp @@ -132,7 +132,7 @@ void Inter_Fascination::oFascin_repeatUntil(OpFuncParams ¶ms) { // WORKAROUND: The script of the PC version of Fascination, when the protection check // fails, writes on purpose everywhere in the memory in order to hang the computer. // This results in a crash in Scummvm. This workaround avoids that crash. - if (_vm->getPlatform() == Common::kPlatformPC) { + if (_vm->getPlatform() == Common::kPlatformDOS) { if (((blockPos == 3533) && _vm->isCurrentTot("INTRO1.TOT")) || ((blockPos == 3519) && _vm->isCurrentTot("INTRO2.TOT")) || ((blockPos == 3265) && _vm->isCurrentTot("INTRO2.TOT"))) //PC Hebrew diff --git a/engines/gob/inter_playtoons.cpp b/engines/gob/inter_playtoons.cpp index f76ba8e97b..b0bdde07ac 100644 --- a/engines/gob/inter_playtoons.cpp +++ b/engines/gob/inter_playtoons.cpp @@ -301,7 +301,7 @@ void Inter_Playtoons::oPlaytoons_readData(OpFuncParams ¶ms) { WRITE_VAR(59, stream->readUint32LE()); // The scripts in some versions divide through 256^3 then, // effectively doing a LE->BE conversion - if ((_vm->getPlatform() != Common::kPlatformPC) && (VAR(59) < 256)) + if ((_vm->getPlatform() != Common::kPlatformDOS) && (VAR(59) < 256)) WRITE_VAR(59, SWAP_BYTES_32(VAR(59))); } else retSize = stream->read(buf, size); diff --git a/engines/gob/inter_v2.cpp b/engines/gob/inter_v2.cpp index cb58fe86f7..6b7a4f03bd 100644 --- a/engines/gob/inter_v2.cpp +++ b/engines/gob/inter_v2.cpp @@ -1326,7 +1326,7 @@ void Inter_v2::o2_readData(OpFuncParams ¶ms) { WRITE_VAR(59, stream->readUint32LE()); // The scripts in some versions divide through 256^3 then, // effectively doing a LE->BE conversion - if ((_vm->getPlatform() != Common::kPlatformPC) && (VAR(59) < 256)) + if ((_vm->getPlatform() != Common::kPlatformDOS) && (VAR(59) < 256)) WRITE_VAR(59, SWAP_BYTES_32(VAR(59))); } else retSize = stream->read(buf, size); diff --git a/engines/gob/pregob/onceupon/stork.h b/engines/gob/pregob/onceupon/stork.h index 756f5258c7..ae57983000 100644 --- a/engines/gob/pregob/onceupon/stork.h +++ b/engines/gob/pregob/onceupon/stork.h @@ -79,8 +79,6 @@ private: }; - GobEngine *_vm; - Surface *_frame; ANIObject *_bundle; diff --git a/engines/gob/pregob/onceupon/title.cpp b/engines/gob/pregob/onceupon/title.cpp index 5163ff6822..a3905541a0 100644 --- a/engines/gob/pregob/onceupon/title.cpp +++ b/engines/gob/pregob/onceupon/title.cpp @@ -62,7 +62,7 @@ void Title::handleFrameEvent() { void Title::playMusic() { // Look at what platform this is and play the appropriate music type - if (_vm->getPlatform() == Common::kPlatformPC) + if (_vm->getPlatform() == Common::kPlatformDOS) playMusicDOS(); else if (_vm->getPlatform() == Common::kPlatformAmiga) playMusicAmiga(); diff --git a/engines/groovie/cursor.cpp b/engines/groovie/cursor.cpp index 6422570220..cac78a95a3 100644 --- a/engines/groovie/cursor.cpp +++ b/engines/groovie/cursor.cpp @@ -378,8 +378,7 @@ void Cursor_v2::decodeFrame(byte *pal, byte *data, byte *dest) { } } - - + delete[] tmp; } void Cursor_v2::enable() { diff --git a/engines/groovie/detection.cpp b/engines/groovie/detection.cpp index 65452f5cf3..7c89114e83 100644 --- a/engines/groovie/detection.cpp +++ b/engines/groovie/detection.cpp @@ -54,7 +54,7 @@ static const GroovieGameDescription gameDescriptions[] = { { "t7g", "", AD_ENTRY1s("script.grv", "d1b8033b40aa67c076039881eccce90d", 16659), - Common::EN_ANY, Common::kPlatformPC, ADGF_NO_FLAGS, + Common::EN_ANY, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO5(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_NOASPECT, GAMEOPTION_T7G_FAST_MOVIE_SPEED) }, kGroovieT7G, 0 @@ -108,7 +108,7 @@ static const GroovieGameDescription gameDescriptions[] = { { "intro.gjd", 0, NULL, 31711554}, { NULL, 0, NULL, 0} }, - Common::RU_RUS, Common::kPlatformPC, ADGF_NO_FLAGS, + Common::RU_RUS, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO5(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_NOASPECT, GAMEOPTION_T7G_FAST_MOVIE_SPEED) }, kGroovieT7G, 0 @@ -134,7 +134,7 @@ static const GroovieGameDescription gameDescriptions[] = { { "11h", "", AD_ENTRY1s("disk.1", "5c0428cd3659fc7bbcd0aa16485ed5da", 227), - Common::EN_ANY, Common::kPlatformPC, ADGF_UNSTABLE, + Common::EN_ANY, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO4(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_NOASPECT) }, kGroovieV2, 1 @@ -175,7 +175,7 @@ static const GroovieGameDescription gameDescriptions[] = { { "11h", "Demo", AD_ENTRY1s("disk.1", "aacb32ce07e0df2894bd83a3dee40c12", 70), - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO | ADGF_UNSTABLE, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO | ADGF_UNSTABLE, GUIO5(GUIO_NOLAUNCHLOAD, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_NOASPECT) }, kGroovieV2, 1 @@ -186,7 +186,7 @@ static const GroovieGameDescription gameDescriptions[] = { { "11h", "Making Of", AD_ENTRY1s("disk.1", "5c0428cd3659fc7bbcd0aa16485ed5da", 227), - Common::EN_ANY, Common::kPlatformPC, ADGF_UNSTABLE, + Common::EN_ANY, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO3(GUIO_NOMIDI, GUIO_NOLAUNCHLOAD, GUIO_NOASPECT) }, kGroovieV2, 2 @@ -227,7 +227,7 @@ static const GroovieGameDescription gameDescriptions[] = { { "clandestiny", "Trailer", AD_ENTRY1s("disk.1", "5c0428cd3659fc7bbcd0aa16485ed5da", 227), - Common::EN_ANY, Common::kPlatformPC, ADGF_UNSTABLE, + Common::EN_ANY, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO3(GUIO_NOMIDI, GUIO_NOLAUNCHLOAD, GUIO_NOASPECT) }, kGroovieV2, 3 @@ -268,7 +268,7 @@ static const GroovieGameDescription gameDescriptions[] = { { "clandestiny", "", AD_ENTRY1s("disk.1", "f79fc1515174540fef6a34132efc4c53", 76), - Common::EN_ANY, Common::kPlatformPC, ADGF_UNSTABLE, + Common::EN_ANY, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO2(GUIO_NOMIDI, GUIO_NOASPECT) }, kGroovieV2, 1 @@ -279,7 +279,7 @@ static const GroovieGameDescription gameDescriptions[] = { { "unclehenry", "", AD_ENTRY1s("disk.1", "0e1b1d3cecc4fc7efa62a968844d1f7a", 72), - Common::EN_ANY, Common::kPlatformPC, ADGF_UNSTABLE, + Common::EN_ANY, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO2(GUIO_NOMIDI, GUIO_NOASPECT) }, kGroovieV2, 1 @@ -290,7 +290,7 @@ static const GroovieGameDescription gameDescriptions[] = { { "tlc", "", AD_ENTRY1s("disk.1", "32a1afa68478f1f9d2b25eeea427f2e3", 84), - Common::EN_ANY, Common::kPlatformPC, ADGF_UNSTABLE, + Common::EN_ANY, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO2(GUIO_NOMIDI, GUIO_NOASPECT) }, kGroovieV2, 1 diff --git a/engines/groovie/vdx.h b/engines/groovie/vdx.h index ebe58cb119..a9bfaa1eb4 100644 --- a/engines/groovie/vdx.h +++ b/engines/groovie/vdx.h @@ -62,11 +62,11 @@ private: bool _flagEight; bool _flagNine; - bool _flagSkipStill; + //bool _flagSkipStill; bool _flagSkipPalette; bool _flagFirstFrame; - bool _flagTransparent; - bool _flagUpdateStill; + //bool _flagTransparent; + //bool _flagUpdateStill; void getStill(Common::ReadStream *in); void getDelta(Common::ReadStream *in); diff --git a/engines/hopkins/anim.cpp b/engines/hopkins/anim.cpp index 007197090f..2ec9cec009 100644 --- a/engines/hopkins/anim.cpp +++ b/engines/hopkins/anim.cpp @@ -55,7 +55,7 @@ void AnimationManager::clearAll() { * @param rate2 Delay amount between animation frames * @param rate3 Delay amount after animation finishes */ -void AnimationManager::playAnim(const Common::String &filename, uint32 rate1, uint32 rate2, uint32 rate3, bool skipSeqFl) { +void AnimationManager::playAnim(const Common::String &hiresName, const Common::String &lowresName, uint32 rate1, uint32 rate2, uint32 rate3, bool skipSeqFl) { Common::File f; if (_vm->shouldQuit()) @@ -65,16 +65,10 @@ void AnimationManager::playAnim(const Common::String &filename, uint32 rate1, ui byte *screenP = _vm->_graphicsMan->_backBuffer; - Common::String tmpStr; - // The Windows 95 demo only contains the interlaced version of the BOMBE1 and BOMBE2 videos - if (_vm->getPlatform() == Common::kPlatformWindows && _vm->getIsDemo() && filename == "BOMBE1A.ANM") - tmpStr = "BOMBE1.ANM"; - else if (_vm->getPlatform() == Common::kPlatformWindows && _vm->getIsDemo() && filename == "BOMBE2A.ANM") - tmpStr = "BOMBE2.ANM"; - else - tmpStr = filename; - if (!f.open(tmpStr)) - error("File not found - %s", tmpStr.c_str()); + if (!f.open(hiresName)) { + if (!f.open(lowresName)) + error("Files not found: %s - %s", hiresName.c_str(), lowresName.c_str()); + } f.skip(6); f.read(_vm->_graphicsMan->_palette, 800); @@ -202,7 +196,7 @@ void AnimationManager::playAnim(const Common::String &filename, uint32 rate1, ui /** * Play Animation, type 2 */ -void AnimationManager::playAnim2(const Common::String &filename, uint32 rate1, uint32 rate2, uint32 rate3) { +void AnimationManager::playAnim2(const Common::String &hiresName, const Common::String &lowresName, uint32 rate1, uint32 rate2, uint32 rate3) { int oldScrollPosX = 0; byte *screenP = NULL; Common::File f; @@ -221,8 +215,10 @@ void AnimationManager::playAnim2(const Common::String &filename, uint32 rate1, u _vm->_graphicsMan->_scrollOffset = 0; screenP = _vm->_graphicsMan->_backBuffer; - if (!f.open(filename)) - error("Error opening file - %s", filename.c_str()); + if (!f.open(hiresName)) { + if (!f.open(lowresName)) + error("Error opening files: %s - %s", hiresName.c_str(), lowresName.c_str()); + } f.skip(6); f.read(_vm->_graphicsMan->_palette, 800); @@ -675,42 +671,39 @@ void AnimationManager::playSequence2(const Common::String &file, uint32 rate1, u int frameNumber; Common::File f; - for (;;) { - if (_vm->shouldQuit()) - return; + if (_vm->shouldQuit()) + return; - _vm->_events->_mouseFl = false; - screenP = _vm->_graphicsMan->_backBuffer; + _vm->_events->_mouseFl = false; + screenP = _vm->_graphicsMan->_backBuffer; - if (!f.open(file)) - error("File not found - %s", file.c_str()); + if (!f.open(file)) + error("File not found - %s", file.c_str()); - f.skip(6); - f.read(_vm->_graphicsMan->_palette, 800); - f.skip(4); - size_t nbytes = f.readUint32LE(); - f.skip(14); - f.read(screenP, nbytes); + f.skip(6); + f.read(_vm->_graphicsMan->_palette, 800); + f.skip(4); + size_t nbytes = f.readUint32LE(); + f.skip(14); + f.read(screenP, nbytes); - if (skipSeqFl) { - _vm->_graphicsMan->setPaletteVGA256(_vm->_graphicsMan->_palette); - } else { - _vm->_graphicsMan->setPaletteVGA256(_vm->_graphicsMan->_palette); - _vm->_graphicsMan->display8BitRect(screenP, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0); + if (skipSeqFl) { + _vm->_graphicsMan->setPaletteVGA256(_vm->_graphicsMan->_palette); + } else { + _vm->_graphicsMan->setPaletteVGA256(_vm->_graphicsMan->_palette); + _vm->_graphicsMan->display8BitRect(screenP, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0); - _vm->_graphicsMan->addRefreshRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); - _vm->_graphicsMan->updateScreen(); - } - _vm->_events->_rateCounter = 0; - _vm->_events->_escKeyFl = false; - _vm->_soundMan->loadAnimSound(); - if (_vm->_globals->_eventMode == EVENTMODE_IGNORE) { - do { - _vm->_events->refreshEvents(); - _vm->_soundMan->checkSoundEnd(); - } while (!_vm->shouldQuit() && !_vm->_events->_escKeyFl && _vm->_events->_rateCounter < rate1); - } - break; + _vm->_graphicsMan->addRefreshRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); + _vm->_graphicsMan->updateScreen(); + } + _vm->_events->_rateCounter = 0; + _vm->_events->_escKeyFl = false; + _vm->_soundMan->loadAnimSound(); + if (_vm->_globals->_eventMode == EVENTMODE_IGNORE) { + do { + _vm->_events->refreshEvents(); + _vm->_soundMan->checkSoundEnd(); + } while (!_vm->shouldQuit() && !_vm->_events->_escKeyFl && _vm->_events->_rateCounter < rate1); } if (!_vm->_events->_escKeyFl) { @@ -760,7 +753,7 @@ void AnimationManager::playSequence2(const Common::String &file, uint32 rate1, u f.seek(6); f.read(_vm->_graphicsMan->_palette, 800); f.skip(4); - size_t nbytes = f.readUint32LE(); + nbytes = f.readUint32LE(); f.skip(14); f.read(screenP, nbytes); diff --git a/engines/hopkins/anim.h b/engines/hopkins/anim.h index 22f725681a..bf9b55aaae 100644 --- a/engines/hopkins/anim.h +++ b/engines/hopkins/anim.h @@ -64,8 +64,8 @@ public: void loadAnim(const Common::String &animName); void clearAnim(); - void playAnim(const Common::String &filename, uint32 rate1, uint32 rate2, uint32 rate3, bool skipSeqFl = false); - void playAnim2(const Common::String &filename, uint32 rate1, uint32 rate2, uint32 rate3); + void playAnim(const Common::String &hiresName, const Common::String &lowresName, uint32 rate1, uint32 rate2, uint32 rate3, bool skipSeqFl = false); + void playAnim2(const Common::String &hiresName, const Common::String &lowresName, uint32 rate1, uint32 rate2, uint32 rate3); void playSequence(const Common::String &file, uint32 rate1, uint32 rate2, uint32 rate3, bool skipEscFl, bool skipSeqFl, bool noColFl = false); void playSequence2(const Common::String &file, uint32 rate1, uint32 rate2, uint32 rate3, bool skipSeqFl = false); diff --git a/engines/hopkins/computer.cpp b/engines/hopkins/computer.cpp index 467153e4dd..f7b923badf 100644 --- a/engines/hopkins/computer.cpp +++ b/engines/hopkins/computer.cpp @@ -326,13 +326,13 @@ static const char _spanishText[] = "% **** ORDENADOR DEL FBI NUMERO 4985 **** ORDENADOR J.HOPKINS *****\n" "% **** ORDENADOR DEL FBI NUMERO 4998 **** ORDENADOR S.COLLINS *****\n" "% *** ORDENADOR DEL FBI NUMERO 4997 *** ORDENADOR DE ACCESO LIBRE ***\n" -"% LA CONTRASE¥A ES: ALLFREE\n" -"% ESCRIBE CONTRASE¥A ACTUAL\n" +"% LA CONTRASE\0245A ES: ALLFREE\n" +"% ESCRIBE CONTRASE\0245A ACTUAL\n" "% **** ACCESO DENEGADO ****\n" "% 1) *** JUEGO ***\n" "% 0) SALIR DEL ORDENADOR\n" -"% 2) CADAVER EXTRA¥O\n" -"% 3) CADAVER EXTRA¥O\n" +"% 2) CADAVER EXTRA\0245O\n" +"% 3) CADAVER EXTRA\0245O\n" "% 4) SENADOR FERGUSSON\n" "% 5) MATAPERROS\n" "% 2) CIENTIFICO SECUESTRADO.\n" @@ -697,6 +697,10 @@ void ComputerManager::displayBricks() { } displayScore(); + + // Refresh the entire screen + _vm->_graphicsMan->addRefreshRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); + _vm->_graphicsMan->updateScreen(); } /** diff --git a/engines/hopkins/debugger.cpp b/engines/hopkins/debugger.cpp index 246270c1c2..f111eb50d3 100644 --- a/engines/hopkins/debugger.cpp +++ b/engines/hopkins/debugger.cpp @@ -34,6 +34,8 @@ Debugger::Debugger(HopkinsEngine *vm) : GUI::Debugger() { DCmd_Register("rects", WRAP_METHOD(Debugger, cmd_DirtyRects)); DCmd_Register("teleport", WRAP_METHOD(Debugger, cmd_Teleport)); DCmd_Register("show_room", WRAP_METHOD(Debugger, cmd_ShowCurrentRoom)); + DCmd_Register("zones", WRAP_METHOD(Debugger, cmd_Zones)); + DCmd_Register("lines", WRAP_METHOD(Debugger, cmd_Lines)); } // Turns dirty rects on or off @@ -64,4 +66,25 @@ bool Debugger::cmd_ShowCurrentRoom(int argc, const char **argv) { return true; } +bool Debugger::cmd_Zones(int argc, const char **argv) { +if (argc != 2) { + DebugPrintf("%s: [on | off]\n", argv[0]); + return true; + } else { + _vm->_graphicsMan->_showZones = !strcmp(argv[1], "on"); + return false; + } +} + +bool Debugger::cmd_Lines(int argc, const char **argv) { + if (argc != 2) { + DebugPrintf("%s: [on | off]\n", argv[0]); + return true; + } else { + _vm->_graphicsMan->_showLines = !strcmp(argv[1], "on"); + return false; + } +} + + } // End of namespace Hopkins diff --git a/engines/hopkins/debugger.h b/engines/hopkins/debugger.h index 7f7bffd755..746c54a675 100644 --- a/engines/hopkins/debugger.h +++ b/engines/hopkins/debugger.h @@ -41,6 +41,8 @@ public: bool cmd_DirtyRects(int argc, const char **argv); bool cmd_Teleport(int argc, const char **argv); bool cmd_ShowCurrentRoom(int argc, const char **argv); + bool cmd_Zones(int argc, const char **argv); + bool cmd_Lines(int argc, const char **argv); }; } // End of namespace Hopkins diff --git a/engines/hopkins/detection_tables.h b/engines/hopkins/detection_tables.h index e1937372d2..3e04375fe9 100644 --- a/engines/hopkins/detection_tables.h +++ b/engines/hopkins/detection_tables.h @@ -155,6 +155,38 @@ static const HopkinsGameDescription gameDescriptions[] = { }, }, { + // Hopkins FBI Win95 EN, provided by greencis in bug #3612406 + { + "hopkins", + 0, + { + {"hopkins.exe", 0, "020690049fa1dfcd63a18fdafb139a0e", 421386}, + {"RES_VAN.RES", 0, "f1693ac0b0859c8ecd8cb30ff43cf55f", 38296346}, + AD_LISTEND + }, + Common::EN_ANY, + Common::kPlatformWindows, + ADGF_NO_FLAGS, + GUIO1(GUIO_NONE) + }, + }, + { + // Hopkins FBI Win95 RU, provided by greencis in bug #3613068 + { + "hopkins", + 0, + { + {"hopkins.exe", 0, "3043fef0bd3bfeba8252647cd090ce09", 419281}, + {"res_van.res", 0, "bf17c710e184a25a6c8e9d1d9503c38e", 32197685}, + AD_LISTEND + }, + Common::RU_RUS, + Common::kPlatformWindows, + ADGF_NO_FLAGS, + GUIO1(GUIO_NONE) + }, + }, + { // Hopkins FBI Linux, provided by Strangerke { "hopkins", diff --git a/engines/hopkins/dialogs.cpp b/engines/hopkins/dialogs.cpp index 5b9fb8afc2..6cdfbf47d1 100644 --- a/engines/hopkins/dialogs.cpp +++ b/engines/hopkins/dialogs.cpp @@ -422,6 +422,7 @@ void DialogsManager::showInventory() { if (cursorId != 1 && cursorId != 2 && cursorId != 3 && cursorId != 16) { if (mouseButton == 2) { _vm->_objectsMan->nextObjectIcon(newInventoryItem); + cursorId = _vm->_events->_mouseCursorId; if (cursorId != 23) _vm->_events->changeMouseCursor(cursorId); } @@ -639,6 +640,7 @@ void DialogsManager::showSaveGame() { // Since the original GUI doesn't support save names, use a default name Common::String saveName = Common::String::format("Save #%d", slotNumber); + _vm->_events->refreshScreenAndEvents(); // Save the game _vm->_saveLoad->saveGame(slotNumber, saveName); } diff --git a/engines/hopkins/events.cpp b/engines/hopkins/events.cpp index 58389ef2e9..51c66c4f92 100644 --- a/engines/hopkins/events.cpp +++ b/engines/hopkins/events.cpp @@ -237,7 +237,7 @@ void EventsManager::checkForNextFrameCounter() { void EventsManager::delay(int totalMilli) { uint32 delayEnd = g_system->getMillis() + totalMilli; - while (!g_system->getEventManager()->shouldQuit() && g_system->getMillis() < delayEnd) { + while (!_vm->shouldQuit() && g_system->getMillis() < delayEnd) { g_system->delayMillis(10); } } diff --git a/engines/hopkins/font.cpp b/engines/hopkins/font.cpp index 611327e9a8..ac0eee2866 100644 --- a/engines/hopkins/font.cpp +++ b/engines/hopkins/font.cpp @@ -433,6 +433,7 @@ void FontManager::displayText(int xp, int yp, const Common::String &message, int if (currentChar > 31) { int characterIndex = currentChar - 32; _vm->_graphicsMan->displayFont(_vm->_graphicsMan->_frontBuffer, _font, xp, yp, characterIndex, col); + _vm->_graphicsMan->addDirtyRect(xp, yp, xp + _vm->_objectsMan->getWidth(_font, characterIndex) + 1, yp + _vm->_objectsMan->getHeight(_font, characterIndex) + 1); xp += _vm->_objectsMan->getWidth(_font, characterIndex); } } diff --git a/engines/hopkins/globals.cpp b/engines/hopkins/globals.cpp index 2e7a2195d1..28f22ed99e 100644 --- a/engines/hopkins/globals.cpp +++ b/engines/hopkins/globals.cpp @@ -89,7 +89,7 @@ Globals::Globals(HopkinsEngine *vm) { _menuTextOff = 0; _menuDisplayType = 0; _checkDistanceFl = false; - _characterType = 0; + _characterType = CHARACTER_HOPKINS; _actionMoveTo = false; _actionDirection = DIR_NONE; @@ -134,9 +134,11 @@ Globals::~Globals() { void Globals::setConfig() { // CHECKME: Should be in Globals() but it doesn't work // The Polish version is a translation of the English version. The filenames are the same. + // The Russian version looks like a translation of the English version, based on the filenames. switch (_vm->getLanguage()) { case Common::EN_ANY: case Common::PL_POL: + case Common::RU_RUS: _language = LANG_EN; break; case Common::FR_FRA: @@ -185,8 +187,6 @@ void Globals::clearAll() { } void Globals::loadCharacterData() { - assert(_characterType >= 0 && _characterType <= 2); - const int *srcList[] = { HOPKINS_PERSO_0, HOPKINS_PERSO_1, HOPKINS_PERSO_2 }; const int *srcP = srcList[_characterType]; diff --git a/engines/hopkins/globals.h b/engines/hopkins/globals.h index f86a810c28..94512c3d26 100644 --- a/engines/hopkins/globals.h +++ b/engines/hopkins/globals.h @@ -172,7 +172,7 @@ public: int _characterMaxPosY; int _baseMapColor; int _spriteSize[500]; - int _characterType; + PlayerCharacter _characterType; uint _speed; byte *_answerBuffer; Savegame *_saveData; diff --git a/engines/hopkins/graphics.cpp b/engines/hopkins/graphics.cpp index f978a5803f..ebc5cfa8da 100644 --- a/engines/hopkins/graphics.cpp +++ b/engines/hopkins/graphics.cpp @@ -73,6 +73,8 @@ GraphicsManager::GraphicsManager(HopkinsEngine *vm) { _zoomOutFactor = 0; _width = 0; _specialWidth = 0; + _showZones = false; + _showLines = false; Common::fill(&_paletteBuffer[0], &_paletteBuffer[PALETTE_SIZE * 2], 0); Common::fill(&_colorTable[0], &_colorTable[PALETTE_EXT_BLOCK_SIZE], 0); @@ -663,11 +665,17 @@ uint16 GraphicsManager::mapRGB(byte r, byte g, byte b) { } void GraphicsManager::updateScreen() { - // TODO: Is this okay here? // Display any aras of the screen that need refreshing displayDirtyRects(); displayRefreshRects(); + // Extra checks for debug information + if (_showZones) + displayZones(); + + if (_showLines) + displayLines(); + // Update the screen g_system->updateScreen(); } @@ -1012,7 +1020,7 @@ void GraphicsManager::endDisplayBob() { _vm->_objectsMan->resetBob(idx); } - for (int idx = 1; idx <= 29; ++idx) { + for (int idx = 1; idx < 36; ++idx) { _vm->_objectsMan->_lockedAnims[idx]._enableFl = false; } @@ -1140,6 +1148,7 @@ void GraphicsManager::displayRefreshRects() { screenSurface = g_system->lockScreen(); g_system->copyRectToScreen(_screenBuffer, _screenLineSize, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); } + // Loop through copying over any specified rects to the screen for (uint idx = 0; idx < _refreshRects.size(); ++idx) { const Common::Rect &r = _refreshRects[idx]; @@ -1157,6 +1166,75 @@ void GraphicsManager::displayRefreshRects() { resetRefreshRects(); } +/** + * Display any zones for the current room + */ +void GraphicsManager::displayZones() { + Graphics::Surface *screenSurface = g_system->lockScreen(); + + for (int bobZoneId = 0; bobZoneId <= 48; bobZoneId++) { + int bobId = _vm->_linesMan->_bobZone[bobZoneId]; + if (bobId) { + // Get the rectangle for the zone + Common::Rect r(_vm->_objectsMan->_bob[bobId]._oldX, _vm->_objectsMan->_bob[bobId]._oldY, + _vm->_objectsMan->_bob[bobId]._oldX + _vm->_objectsMan->_bob[bobId]._oldWidth, + _vm->_objectsMan->_bob[bobId]._oldY + _vm->_objectsMan->_bob[bobId]._oldHeight); + + displayDebugRect(screenSurface, r, 0xff0000); + } + } + + for (int squareZoneId = 0; squareZoneId <= 99; squareZoneId++) { + if (_vm->_linesMan->_zone[squareZoneId]._enabledFl && _vm->_linesMan->_squareZone[squareZoneId]._enabledFl) { + Common::Rect r(_vm->_linesMan->_squareZone[squareZoneId]._left, _vm->_linesMan->_squareZone[squareZoneId]._top, + _vm->_linesMan->_squareZone[squareZoneId]._right, _vm->_linesMan->_squareZone[squareZoneId]._bottom); + + displayDebugRect(screenSurface, r, 0x00ff00); + } + } + + g_system->unlockScreen(); +} + +/** + * Display any zones for the current room + */ +void GraphicsManager::displayLines() { + Graphics::Surface *screenSurface = g_system->lockScreen(); + + uint16* pixels = (uint16*)screenSurface->pixels; + + for (int lineIndex = 0; lineIndex < _vm->_linesMan->_linesNumb; lineIndex++) { + int i = 0; + do { + int x = _vm->_linesMan->_lineItem[lineIndex]._lineData[i] - _scrollPosX; + int y = _vm->_linesMan->_lineItem[lineIndex]._lineData[i+1]; + if (x >= 0 && x < SCREEN_WIDTH && y >= 0 && y < SCREEN_HEIGHT) { + pixels[ y * screenSurface->w + x ] = 0xffff; + } + i += 2; + } + while(_vm->_linesMan->_lineItem[lineIndex]._lineData[i] != -1); + } + + g_system->unlockScreen(); +} + + +void GraphicsManager::displayDebugRect(Graphics::Surface *surface, const Common::Rect &srcRect, uint32 color) { + Common::Rect r = srcRect; + + // Move for scrolling offset and adjust to crop on-screen + r.translate(-_scrollPosX, 0); + r.left = MAX(r.left, (int16)0); + r.top = MAX(r.top, (int16)0); + r.right = MIN(r.right, (int16)SCREEN_WIDTH); + r.bottom = MIN(r.bottom, (int16)SCREEN_HEIGHT); + + // If there's an on-screen portion, display it + if (r.isValidRect()) + surface->frameRect(r, color); +} /** * Fast Display of either a compressed or vesa sprite diff --git a/engines/hopkins/graphics.h b/engines/hopkins/graphics.h index b7d7eaa86f..268db7fc2b 100644 --- a/engines/hopkins/graphics.h +++ b/engines/hopkins/graphics.h @@ -118,12 +118,14 @@ public: Common::Array<Common::Rect> _dirtyRects; Common::Array<Common::Rect> _refreshRects; bool _showDirtyRects; + bool _showZones; + bool _showLines; byte *_palettePixels; public: GraphicsManager(HopkinsEngine *vm); ~GraphicsManager(); - + void clearPalette(); void clearScreen(); void clearVesaScreen(); @@ -135,6 +137,9 @@ public: void addRectToArray(Common::Array<Common::Rect> &rects, const Common::Rect &newRect); void displayDirtyRects(); void displayRefreshRects(); + void displayZones(); + void displayLines(); + void displayDebugRect(Graphics::Surface *surface, const Common::Rect &srcRect, uint32 color = 0xffffff); void copySurface(const byte *surface, int x1, int y1, int width, int height, byte *destSurface, int destX, int destY); void loadImage(const Common::String &file); void loadVgaImage(const Common::String &file); diff --git a/engines/hopkins/hopkins.cpp b/engines/hopkins/hopkins.cpp index bf9509c0d4..0d40f69e8f 100644 --- a/engines/hopkins/hopkins.cpp +++ b/engines/hopkins/hopkins.cpp @@ -39,6 +39,7 @@ HopkinsEngine *g_vm; HopkinsEngine::HopkinsEngine(OSystem *syst, const HopkinsGameDescription *gameDesc) : Engine(syst), _gameDescription(gameDesc), _randomSource("Hopkins") { + DebugMan.addDebugChannel(kDebugPath, "Path", "Pathfinding debug level"); g_vm = this; _animMan = new AnimationManager(this); _computer = new ComputerManager(this); @@ -172,7 +173,7 @@ bool HopkinsEngine::runWin95Demo() { _globals->_characterSpriteBuf = _fileIO->loadFile("PERSO.SPR"); } - _globals->_characterType = 0; + _globals->_characterType = CHARACTER_HOPKINS; _objectsMan->_mapCarPosX = _objectsMan->_mapCarPosY = 0; memset(_globals->_saveData, 0, 2000); _globals->_exitId = 0; @@ -230,9 +231,9 @@ bool HopkinsEngine::runWin95Demo() { _graphicsMan->clearScreen(); _graphicsMan->clearPalette(); if (!_globals->_censorshipFl) - _animMan->playAnim("BANQUE.ANM", 200, 28, 200); + _animMan->playAnim("BANQUE.ANM", "BANKUK.ANM", 200, 28, 200); else - _animMan->playAnim("BANKUK.ANM", 200, 28, 200); + _animMan->playAnim("BANQUE.ANM", "BANKUK.ANM", 200, 28, 200); _soundMan->_specialSoundNum = 0; _soundMan->removeSample(1); _soundMan->removeSample(2); @@ -394,7 +395,7 @@ bool HopkinsEngine::runWin95Demo() { _globals->_eventMode = EVENTMODE_ALT; // CHECKME! _graphicsMan->clearScreen(); _graphicsMan->clearPalette(); - _animMan->playAnim("JOUR1A.anm", 12, 12, 2000); + _animMan->playAnim("JOUR1A.ANM", "JOUR1A.ANM", 12, 12, 2000); _globals->_eventMode = EVENTMODE_DEFAULT; _globals->_exitId = 300; break; @@ -417,7 +418,7 @@ bool HopkinsEngine::runWin95Demo() { _globals->_eventMode = EVENTMODE_ALT; // CHECKME! _graphicsMan->clearScreen(); _graphicsMan->clearPalette(); - _animMan->playAnim("JOUR4A.anm", 12, 12, 2000); + _animMan->playAnim("JOUR4A.ANM", "JOUR4A.ANM", 12, 12, 2000); _globals->_eventMode = EVENTMODE_DEFAULT; _globals->_exitId = 300; break; @@ -453,7 +454,7 @@ bool HopkinsEngine::runLinuxDemo() { _globals->_eventMode = EVENTMODE_DEFAULT; _globals->_characterSpriteBuf = _fileIO->loadFile("PERSO.SPR"); - _globals->_characterType = 0; + _globals->_characterType = CHARACTER_HOPKINS; _objectsMan->_mapCarPosX = _objectsMan->_mapCarPosY = 0; memset(_globals->_saveData, 0, 2000); _globals->_exitId = 0; @@ -529,9 +530,9 @@ bool HopkinsEngine::runLinuxDemo() { _graphicsMan->_fadingFl = true; if (!_globals->_censorshipFl) - _animMan->playAnim("BANQUE.ANM", 200, 28, 200); + _animMan->playAnim("BANQUE.ANM", "BANKUK.ANM", 200, 28, 200); else - _animMan->playAnim("BANKUK.ANM", 200, 28, 200); + _animMan->playAnim("BANKUK.ANM", "BANQUE.ANM", 200, 28, 200); _soundMan->_specialSoundNum = 0; _soundMan->removeSample(1); _soundMan->removeSample(2); @@ -705,7 +706,7 @@ bool HopkinsEngine::runLinuxDemo() { _graphicsMan->clearScreen(); _graphicsMan->clearPalette(); _graphicsMan->_fadingFl = true; - _animMan->playAnim("JOUR1A.anm", 12, 12, 2000); + _animMan->playAnim("JOUR1A.ANM", "JOUR1A.ANM", 12, 12, 2000); _globals->_eventMode = EVENTMODE_DEFAULT; _globals->_exitId = 300; break; @@ -717,7 +718,7 @@ bool HopkinsEngine::runLinuxDemo() { _graphicsMan->clearScreen(); _graphicsMan->clearPalette(); _graphicsMan->_fadingFl = true; - _animMan->playAnim("JOUR3A.anm", 12, 12, 2000); + _animMan->playAnim("JOUR3A.ANM", "JOUR3A.ANM", 12, 12, 2000); _globals->_eventMode = EVENTMODE_DEFAULT; _globals->_exitId = 300; break; @@ -729,7 +730,7 @@ bool HopkinsEngine::runLinuxDemo() { _graphicsMan->clearScreen(); _graphicsMan->clearPalette(); _graphicsMan->_fadingFl = true; - _animMan->playAnim("JOUR4A.anm", 12, 12, 2000); + _animMan->playAnim("JOUR4A.ANM", "JOUR4A.ANM", 12, 12, 2000); _globals->_eventMode = EVENTMODE_DEFAULT; _globals->_exitId = 300; break; @@ -790,18 +791,21 @@ bool HopkinsEngine::runFull() { _globals->_speed = 2; _globals->_eventMode = EVENTMODE_IGNORE; _graphicsMan->_fadingFl = true; - _animMan->playAnim("MP.ANM", 10, 16, 200); + _animMan->playAnim("MP.ANM", "MP.ANM", 10, 16, 200); } else { - _animMan->playAnim("MP.ANM", 10, 16, 200); + _animMan->playAnim("MP.ANM", "MP.ANM", 10, 16, 200); _graphicsMan->fadeOutLong(); } } + _events->mouseOff(); + if (!_events->_escKeyFl && _startGameSlot == -1) { playIntro(); if (shouldQuit()) return false; } + if (getPlatform() != Common::kPlatformLinux && _startGameSlot == -1) { _graphicsMan->fadeOutShort(); _graphicsMan->loadImage("H2"); @@ -811,14 +815,17 @@ bool HopkinsEngine::runFull() { } _globals->_eventMode = EVENTMODE_DEFAULT; _globals->_characterSpriteBuf = _fileIO->loadFile("PERSO.SPR"); - _globals->_characterType = 0; + _globals->_characterType = CHARACTER_HOPKINS; _objectsMan->_mapCarPosX = _objectsMan->_mapCarPosY = 0; memset(_globals->_saveData, 0, 2000); _globals->_exitId = 0; - if (_startGameSlot != -1) + + if (_startGameSlot != -1) { + _soundMan->playSound(28); _saveLoad->loadGame(_startGameSlot); + } for (;;) { if (_globals->_exitId == 300) @@ -870,11 +877,11 @@ bool HopkinsEngine::runFull() { _graphicsMan->_fadingFl = true; if (!_globals->_censorshipFl) - _animMan->playAnim("BANQUE.ANM", 200, 28, 200); + _animMan->playAnim("BANQUE.ANM", "BANKUK.ANM", 200, 28, 200); else - _animMan->playAnim("BANKUK.ANM", 200, 28, 200); + _animMan->playAnim("BANKUK.ANM", "BANQUE.ANM", 200, 28, 200); } else { - _animMan->playAnim("BANQUE.ANM", 200, 28, 200); + _animMan->playAnim("BANQUE.ANM", "BANKUK.ANM", 200, 28, 200); } _soundMan->_specialSoundNum = 0; @@ -1002,14 +1009,14 @@ bool HopkinsEngine::runFull() { if (getPlatform() == Common::kPlatformLinux) { _soundMan->playSound(29); _graphicsMan->_fadingFl = true; - _animMan->playAnim("PURG1A.ANM", 12, 18, 50); + _animMan->playAnim("PURG1A.ANM", "PURG1.ANM", 12, 18, 50); } else if (getPlatform() == Common::kPlatformWindows) { _soundMan->playSound(29); - _animMan->playAnim("PURG1A.ANM", 12, 18, 50); + _animMan->playAnim("PURG1A.ANM", "PURG1.ANM", 12, 18, 50); _graphicsMan->fadeOutShort(); } else { _soundMan->playSound(6); - _animMan->playAnim("PURG1A.ANM", 12, 18, 50); + _animMan->playAnim("PURG1A.ANM", "PURG1.ANM", 12, 18, 50); _graphicsMan->fadeOutShort(); } _globals->_eventMode = EVENTMODE_DEFAULT; @@ -1046,7 +1053,7 @@ bool HopkinsEngine::runFull() { _soundMan->playSound(6); if (getPlatform() == Common::kPlatformLinux) _graphicsMan->_fadingFl = true; - _animMan->playAnim("PURG2A.ANM", 12, 18, 50); + _animMan->playAnim("PURG2A.ANM", "PURG2.ANM", 12, 18, 50); if (getPlatform() != Common::kPlatformLinux) _graphicsMan->fadeOutShort(); _globals->_eventMode = EVENTMODE_DEFAULT; @@ -1408,7 +1415,7 @@ bool HopkinsEngine::runFull() { _graphicsMan->clearScreen(); _graphicsMan->clearPalette(); _soundMan->playSound(6); - _animMan->playAnim("PURG1A.ANM", 12, 18, 50); + _animMan->playAnim("PURG1A.ANM", "PURG1.ANM", 12, 18, 50); _graphicsMan->fadeOutShort(); _globals->_eventMode = EVENTMODE_DEFAULT; } @@ -1480,7 +1487,7 @@ bool HopkinsEngine::runFull() { _graphicsMan->clearPalette(); if (getPlatform() == Common::kPlatformLinux) _graphicsMan->_fadingFl = true; - _animMan->playAnim("JOUR1A.ANM", 12, 12, 2000); + _animMan->playAnim("JOUR1A.ANM", "JOUR1A.ANM", 12, 12, 2000); _globals->_eventMode = EVENTMODE_DEFAULT; _globals->_exitId = 300; break; @@ -1492,7 +1499,7 @@ bool HopkinsEngine::runFull() { _graphicsMan->clearPalette(); if (getPlatform() == Common::kPlatformLinux) _graphicsMan->_fadingFl = true; - _animMan->playAnim("JOUR3A.ANM", 12, 12, 2000); + _animMan->playAnim("JOUR3A.ANM", "JOUR3A.ANM", 12, 12, 2000); _globals->_eventMode = EVENTMODE_DEFAULT; _globals->_exitId = 300; break; @@ -1504,7 +1511,7 @@ bool HopkinsEngine::runFull() { _graphicsMan->clearPalette(); if (getPlatform() == Common::kPlatformLinux) _graphicsMan->_fadingFl = true; - _animMan->playAnim("JOUR4A.ANM", 12, 12, 2000); + _animMan->playAnim("JOUR4A.ANM", "JOUR4A.ANM", 12, 12, 2000); _globals->_eventMode = EVENTMODE_DEFAULT; _globals->_exitId = 300; break; @@ -1523,7 +1530,7 @@ bool HopkinsEngine::runFull() { //_globals->_exitId = WBASE(); // Handles the 3D Doom level (Windows) _soundMan->stopSound(); _globals->_characterSpriteBuf = _fileIO->loadFile("PERSO.SPR"); - _globals->_characterType = 0; + _globals->_characterType = CHARACTER_HOPKINS; _globals->_eventMode = EVENTMODE_DEFAULT; _graphicsMan->_lineNbr = SCREEN_WIDTH; break; @@ -1534,10 +1541,6 @@ bool HopkinsEngine::runFull() { return true; } -bool HopkinsEngine::shouldQuit() const { - return g_system->getEventManager()->shouldQuit(); -} - int HopkinsEngine::getRandomNumber(int maxNumber) { return _randomSource.getRandomNumber(maxNumber); } @@ -1599,22 +1602,25 @@ void HopkinsEngine::playIntro() { _events->refreshScreenAndEvents(); _soundMan->playSound(16); _animMan->setClearAnimFlag(); - _animMan->playAnim("J1.anm", 12, 12, 50); + + _animMan->playAnim("J1.ANM", "J1.ANM", 12, 12, 50); if (shouldQuit() || _events->_escKeyFl) return; - + _events->mouseOff(); _soundMan->mixVoice(1, 3); - _animMan->playAnim("J2.anm", 12, 12, 50); + _animMan->playAnim("J2.ANM", "J2.ANM", 12, 12, 50); if (shouldQuit() || _events->_escKeyFl) return; + _events->mouseOff(); _soundMan->mixVoice(2, 3); - _animMan->playAnim("J3.anm", 12, 12, 50); + _animMan->playAnim("J3.ANM", "J3.ANM", 12, 12, 50); if (shouldQuit() || _events->_escKeyFl) return; + _events->mouseOff(); _soundMan->mixVoice(3, 3); _graphicsMan->clearScreen(); _graphicsMan->clearPalette(); @@ -1694,7 +1700,7 @@ void HopkinsEngine::playIntro() { _soundMan->_specialSoundNum = 5; _graphicsMan->_fadingFl = true; - _animMan->playAnim("ELEC.ANM", 10, 26, 200); + _animMan->playAnim("ELEC.ANM", "ELEC.ANM", 10, 26, 200); _soundMan->_specialSoundNum = 0; if (shouldQuit() || _events->_escKeyFl) @@ -1781,22 +1787,22 @@ void HopkinsEngine::playIntro() { _soundMan->playSound(3); _soundMan->_specialSoundNum = 1; _animMan->setClearAnimFlag(); - _animMan->playAnim("INTRO1.anm", 10, 24, 18); + _animMan->playAnim("INTRO1.ANM", "INTRO1.ANM", 10, 24, 18); _soundMan->_specialSoundNum = 0; if (shouldQuit() || _events->_escKeyFl) return; - _animMan->playAnim("INTRO2.anm", 10, 24, 18); + _animMan->playAnim("INTRO2.ANM", "INTRO2.ANM", 10, 24, 18); if (shouldQuit() || _events->_escKeyFl) return; - _animMan->playAnim("INTRO3.anm", 10, 24, 200); + _animMan->playAnim("INTRO3.ANM", "INTRO3.ANM", 10, 24, 200); if (shouldQuit() || _events->_escKeyFl) return; _graphicsMan->_fadingFl = true; _animMan->unsetClearAnimFlag(); - _animMan->playAnim("J4.anm", 12, 12, 1000); + _animMan->playAnim("J4.ANM", "J4.ANM", 12, 12, 1000); break; } } @@ -1855,7 +1861,7 @@ void HopkinsEngine::bombExplosion() { _globals->_eventMode = EVENTMODE_IGNORE; _soundMan->_specialSoundNum = 199; _graphicsMan->_fadingFl = true; - _animMan->playAnim("BOMBE2A.ANM", 50, 14, 500); + _animMan->playAnim("BOMBE2A.ANM", "BOMBE2.ANM", 50, 14, 500); _soundMan->_specialSoundNum = 0; _graphicsMan->loadImage("IM15"); _animMan->loadAnim("ANIM15"); @@ -1889,7 +1895,10 @@ void HopkinsEngine::bombExplosion() { } void HopkinsEngine::restoreSystem() { - quitGame(); + // If the game isn't alerady trying to quit, flag that quitting is needed + if (!shouldQuit()) + quitGame(); + _events->refreshEvents(); } @@ -1962,31 +1971,31 @@ void HopkinsEngine::playSubmarineCutscene() { _graphicsMan->clearPalette(); _soundMan->playSound(25); _animMan->setClearAnimFlag(); - _animMan->playAnim("base00a.anm", 10, 18, 18); + _animMan->playAnim("BASE00A.ANM", "BASE00.ANM", 10, 18, 18); if (!_events->_escKeyFl) - _animMan->playAnim("base05a.anm", 10, 18, 18); + _animMan->playAnim("BASE05A.ANM", "BASE05.ANM", 10, 18, 18); if (!_events->_escKeyFl) - _animMan->playAnim("base10a.anm", 10, 18, 18); + _animMan->playAnim("BASE10A.ANM", "BASE10.ANM", 10, 18, 18); if (!_events->_escKeyFl) - _animMan->playAnim("base20a.anm", 10, 18, 18); + _animMan->playAnim("BASE20A.ANM", "BASE20.ANM", 10, 18, 18); // CHECKME: The original code was doing the opposite test, which was a bug. if (!_events->_escKeyFl) - _animMan->playAnim("base30a.anm", 10, 18, 18); + _animMan->playAnim("BASE30A.ANM", "BASE30.ANM", 10, 18, 18); if (!_events->_escKeyFl) - _animMan->playAnim("base40a.anm", 10, 18, 18); + _animMan->playAnim("BASE40A.ANM", "BASE40.ANM", 10, 18, 18); if (!_events->_escKeyFl) - _animMan->playAnim("base50a.anm", 10, 18, 18); + _animMan->playAnim("BASE50A.ANM", "BASE50.ANM", 10, 18, 18); if (!_events->_escKeyFl) - _animMan->playAnim("OC00a.anm", 10, 18, 18); + _animMan->playAnim("OC00A.ANM", "OC00.ANM", 10, 18, 18); if (!_events->_escKeyFl) - _animMan->playAnim("OC05a.anm", 10, 18, 18); + _animMan->playAnim("OC05A.ANM", "OC05.ANM", 10, 18, 18); if (!_events->_escKeyFl) - _animMan->playAnim("OC10a.anm", 10, 18, 18); + _animMan->playAnim("OC10A.ANM", "OC10.ANM", 10, 18, 18); if (!_events->_escKeyFl) - _animMan->playAnim("OC20a.anm", 10, 18, 18); + _animMan->playAnim("OC20A.ANM", "OC20.ANM", 10, 18, 18); if (!_events->_escKeyFl) { _graphicsMan->_fadingFl = true; - _animMan->playAnim("OC30a.anm", 10, 18, 18); + _animMan->playAnim("OC30A.ANM", "OC30.ANM", 10, 18, 18); } _events->_escKeyFl = false; @@ -2108,7 +2117,7 @@ void HopkinsEngine::playEnding() { _soundMan->_specialSoundNum = 200; _soundMan->_skipRefreshFl = true; _graphicsMan->_fadingFl = true; - _animMan->playAnim("BERM.ANM", 100, 24, 300); + _animMan->playAnim("BERM.ANM", "BERM.ANM", 100, 24, 300); _graphicsMan->endDisplayBob(); _soundMan->removeSample(1); _graphicsMan->loadImage("PLAN3"); @@ -2125,15 +2134,16 @@ void HopkinsEngine::playEnding() { _globals->_eventMode = EVENTMODE_IGNORE; _soundMan->_specialSoundNum = 0; _graphicsMan->_fadingFl = true; - _animMan->playAnim("JOUR2A.anm", 12, 12, 1000); + _animMan->playAnim("JOUR2A.anm", "JOUR2A.anm", 12, 12, 1000); _soundMan->playSound(11); _graphicsMan->clearScreen(); _graphicsMan->clearPalette(); - _animMan->playAnim("FF1a.anm", 18, 18, 9); - _animMan->playAnim("FF1a.anm", 9, 18, 9); - _animMan->playAnim("FF1a.anm", 9, 18, 18); - _animMan->playAnim("FF1a.anm", 9, 18, 9); - _animMan->playAnim("FF2a.anm", 24, 24, 100); + _animMan->playAnim("FF1a.anm", "FF1.anm", 18, 18, 9); + _animMan->playAnim("FF1a.anm", "FF1.anm", 9, 18, 9); + _animMan->playAnim("FF1a.anm", "FF1.anm", 9, 18, 18); + _animMan->playAnim("FF1a.anm", "FF1.anm", 9, 18, 9); + _animMan->playAnim("FF2a.anm", "FF2.anm", 24, 24, 100); + _events->mouseOff(); displayCredits(); _globals->_eventMode = EVENTMODE_DEFAULT; _globals->_exitId = 300; @@ -2142,7 +2152,7 @@ void HopkinsEngine::playEnding() { } else { _soundMan->_specialSoundNum = 200; _soundMan->_skipRefreshFl = true; - _animMan->playAnim2("BERM.ANM", 100, 24, 300); + _animMan->playAnim2("BERM.ANM", "BERM.ANM", 100, 24, 300); _objectsMan->stopBobAnimation(7); _objectsMan->setBobAnimation(8); _globals->_introSpeechOffFl = true; @@ -2167,12 +2177,12 @@ void HopkinsEngine::playEnding() { _soundMan->_specialSoundNum = 0; _dialog->enableInvent(); _globals->_disableInventFl = false; - _animMan->playAnim("JOUR4A.anm", 12, 12, 1000); + _animMan->playAnim("JOUR4A.ANM", "JOUR4A.ANM", 12, 12, 1000); _globals->_eventMode = EVENTMODE_DEFAULT; _globals->_exitId = 300; } _globals->_characterSpriteBuf = _fileIO->loadFile("PERSO.SPR"); - _globals->_characterType = 0; + _globals->_characterType = CHARACTER_HOPKINS; _globals->_eventMode = EVENTMODE_DEFAULT; } @@ -2183,36 +2193,36 @@ void HopkinsEngine::playPlaneCutscene() { _graphicsMan->clearPalette(); _animMan->unsetClearAnimFlag(); - _animMan->playAnim("aerop00a.anm", 10, 18, 18); + _animMan->playAnim("AEROP00A.ANM", "AEROP00.ANM", 10, 18, 18); if (!_events->_escKeyFl) - _animMan->playAnim("serop10a.anm", 10, 18, 18); + _animMan->playAnim("SEROP10A.ANM", "SEROP10A.ANM", 10, 18, 18); if (!_events->_escKeyFl) - _animMan->playAnim("aerop20a.anm", 10, 18, 18); + _animMan->playAnim("AEROP20A.ANM", "AEROP20.ANM", 10, 18, 18); if (!_events->_escKeyFl) - _animMan->playAnim("aerop30a.anm", 10, 18, 18); + _animMan->playAnim("AEROP30A.ANM", "AEROP30.ANM", 10, 18, 18); if (!_events->_escKeyFl) - _animMan->playAnim("aerop40a.anm", 10, 18, 18); + _animMan->playAnim("AEROP40A.ANM", "AEROP40.ANM", 10, 18, 18); if (!_events->_escKeyFl) - _animMan->playAnim("aerop50a.anm", 10, 18, 18); + _animMan->playAnim("AEROP50A.ANM", "AEROP50.ANM", 10, 18, 18); if (!_events->_escKeyFl) - _animMan->playAnim("aerop60a.anm", 10, 18, 18); + _animMan->playAnim("AEROP60A.ANM", "AEROP60.ANM", 10, 18, 18); if (!_events->_escKeyFl) - _animMan->playAnim("aerop70a.anm", 10, 18, 18); + _animMan->playAnim("AEROP70A.ANM", "AEROP70.ANM", 10, 18, 18); if (!_events->_escKeyFl) - _animMan->playAnim("trans00a.anm", 10, 18, 18); + _animMan->playAnim("TRANS00A.ANM", "TRANS00.ANM", 10, 18, 18); if (!_events->_escKeyFl) - _animMan->playAnim("trans10a.anm", 10, 18, 18); + _animMan->playAnim("TRANS10A.ANM", "TRANS10.ANM", 10, 18, 18); if (!_events->_escKeyFl) - _animMan->playAnim("trans15a.anm", 10, 18, 18); + _animMan->playAnim("TRANS15A.ANM", "TRANS15.ANM", 10, 18, 18); if (!_events->_escKeyFl) - _animMan->playAnim("trans20a.anm", 10, 18, 18); + _animMan->playAnim("TRANS20A.ANM", "TRANS20.ANM", 10, 18, 18); if (!_events->_escKeyFl) - _animMan->playAnim("trans30a.anm", 10, 18, 18); + _animMan->playAnim("TRANS30A.ANM", "TRANS30.ANM", 10, 18, 18); if (!_events->_escKeyFl) - _animMan->playAnim("trans40a.anm", 10, 18, 18); + _animMan->playAnim("TRANS40A.ANM", "TRANS40.ANM", 10, 18, 18); if (!_events->_escKeyFl) { _graphicsMan->_fadingFl = true; - _animMan->playAnim("PARA00a.anm", 9, 9, 9); + _animMan->playAnim("PARA00A.ANM", "PARA00.ANM", 9, 9, 9); } _events->_escKeyFl = false; @@ -2353,21 +2363,34 @@ void HopkinsEngine::loadCredits() { _globals->_creditsPosY = 440; _globals->_creditsStep = 45; byte *bufPtr; + Common::String filename; switch (_globals->_language) { case LANG_EN: - bufPtr = _fileIO->loadFile("CREAN.TXT"); + filename = "CREAN.TXT"; break; case LANG_FR: - bufPtr = _fileIO->loadFile("CREFR.TXT"); + filename = "CREFR.TXT"; break; case LANG_SP: - bufPtr = _fileIO->loadFile("CREES.TXT"); + filename = "CREES.TXT"; break; default: error("Unhandled language"); break; } + if (!_fileIO->fileExists(filename)) { + _globals->_creditsLineNumb = 1; + _globals->_creditsItem[0]._color = '1'; + _globals->_creditsItem[0]._actvFl = true; + _globals->_creditsItem[0]._linePosY = _globals->_creditsPosY; + strcpy((char *)_globals->_creditsItem[0]._line, "The End"); + _globals->_creditsItem[0]._lineSize = 7; + return; + } + + bufPtr = _fileIO->loadFile(filename); + byte *curPtr = bufPtr; int idxLines = 0; bool loopCond = false; @@ -2441,13 +2464,14 @@ void HopkinsEngine::displayCredits() { _globals->_eventMode = EVENTMODE_CREDITS; _globals->_creditsStartX = _globals->_creditsEndX = _globals->_creditsStartY = _globals->_creditsEndY = -1; int soundId = 28; + do { for (int i = 0; i < _globals->_creditsLineNumb; ++i) { if (_globals->_creditsItem[i]._actvFl) { int nextY = _globals->_creditsPosY + i * _globals->_creditsStep; _globals->_creditsItem[i]._linePosY = nextY; - if ((nextY - 21 >= 0) && (nextY - 21 <= 418)) { + if ((nextY >= 51) && (nextY <= 460)) { int col = 0; switch (_globals->_creditsItem[i]._color) { case '1': @@ -2472,7 +2496,7 @@ void HopkinsEngine::displayCredits() { --_globals->_creditsPosY; if (_globals->_creditsStartX != -1 || _globals->_creditsEndX != -1 || _globals->_creditsStartY != -1 || _globals->_creditsEndY != -1) { _events->refreshScreenAndEvents(); - _graphicsMan->copySurface(_graphicsMan->_backBuffer, 60, 50, 520, 380, _graphicsMan->_frontBuffer, 60, 50); + _graphicsMan->copySurface(_graphicsMan->_backBuffer, 60, 50, 520, 430, _graphicsMan->_frontBuffer, 60, 50); } else { _events->refreshScreenAndEvents(); } @@ -2800,7 +2824,7 @@ void HopkinsEngine::handleOceanMaze(int16 curExitId, Common::String backgroundFi _objectsMan->removeSprite(0); _objectsMan->clearScreen(); _globals->_characterSpriteBuf = _fileIO->loadFile("PERSO.SPR"); - _globals->_characterType = 0; + _globals->_characterType = CHARACTER_HOPKINS; } void HopkinsEngine::syncSoundSettings() { diff --git a/engines/hopkins/hopkins.h b/engines/hopkins/hopkins.h index 499f0c466d..86f15cc7cb 100644 --- a/engines/hopkins/hopkins.h +++ b/engines/hopkins/hopkins.h @@ -59,14 +59,6 @@ */ namespace Hopkins { -enum { - kHopkinsDebugAnimations = 1 << 0, - kHopkinsDebugActions = 1 << 1, - kHopkinsDebugSound = 1 << 2, - kHopkinsDebugMusic = 1 << 3, - kHopkinsDebugScripts = 1 << 4 -}; - #define DEBUG_BASIC 1 #define DEBUG_INTERMEDIATE 2 #define DEBUG_DETAILED 3 @@ -74,7 +66,9 @@ enum { #define SCREEN_WIDTH 640 #define SCREEN_HEIGHT 480 -#define MAX_LINES 400 +enum HopkinsDebugChannels { + kDebugPath = 1 << 0 +}; /** * A wrapper macro used around three character constants, like 'END', to @@ -169,7 +163,6 @@ public: Common::Platform getPlatform() const; uint16 getVersion() const; bool getIsDemo() const; - bool shouldQuit() const; int getRandomNumber(int maxNumber); Common::String generateSaveName(int slotNumber); diff --git a/engines/hopkins/lines.cpp b/engines/hopkins/lines.cpp index 6603708449..e6d5e5ca7f 100644 --- a/engines/hopkins/lines.cpp +++ b/engines/hopkins/lines.cpp @@ -33,10 +33,11 @@ namespace Hopkins { LinesManager::LinesManager(HopkinsEngine *vm) { _vm = vm; - for (int i = 0; i < MAX_LINES; ++i) { + for (int i = 0; i < MAX_LINES + 1; ++i) Common::fill((byte *)&_zoneLine[i], (byte *)&_zoneLine[i] + sizeof(LigneZoneItem), 0); + + for (int i = 0; i < MAX_LINES; ++i) Common::fill((byte *)&_lineItem[i], (byte *)&_lineItem[i] + sizeof(LigneItem), 0); - } for (int i = 0; i < 4000; ++i) Common::fill((byte *)&_smoothRoute[i], (byte *)&_smoothRoute[i] + sizeof(SmoothItem), 0); @@ -98,6 +99,7 @@ LinesManager::~LinesManager() { } int LigneItem::appendToRouteInc(int from, int to, RouteItem *route, int index) { + debugC(5, kDebugPath, "appendToRouteInc(%d, %d, route, %d)", from, to, index); if (to == -1) to = _lineDataEndIdx; @@ -105,7 +107,9 @@ int LigneItem::appendToRouteInc(int from, int to, RouteItem *route, int index) { route[index++].set(_lineData[2*i], _lineData[2*i+1], _directionRouteInc); return index; } + int LigneItem::appendToRouteDec(int from, int to, RouteItem *route, int index) { + debugC(5, kDebugPath, "appendToRouteDecc(%d, %d, route, %d)", from, to, index); if (from == -1) from = _lineDataEndIdx - 1; @@ -118,6 +122,7 @@ int LigneItem::appendToRouteDec(int from, int to, RouteItem *route, int index) { * Load lines */ void LinesManager::loadLines(const Common::String &file) { + debugC(5, kDebugPath, "loadLines(%s)", file.c_str()); resetLines(); _linesNumb = 0; _lastLine = 0; @@ -139,6 +144,7 @@ void LinesManager::loadLines(const Common::String &file) { * Returns the ID of the hotspot under mouse */ int LinesManager::checkInventoryHotspots(int posX, int posY) { + debugC(5, kDebugPath, "checkInventoryHotspots(%d, %d)", posX, posY); int hotspotId = 0; if (posY >= 120 && posY <= 153) hotspotId = checkInventoryHotspotsRow(posX, 1, false); @@ -165,6 +171,7 @@ int LinesManager::checkInventoryHotspots(int posX, int posY) { * Returns the hotspot Id under the mouse, if any. */ int LinesManager::checkInventoryHotspotsRow(int posX, int minZoneNum, bool lastRow) { + debugC(5, kDebugPath, "checkInventoryHotspotsRow(%d, %d, %d)", posX, minZoneNum, lastRow ? 1 : 0); int result = minZoneNum; if (posX >= _vm->_graphicsMan->_scrollOffset + 158 && posX < _vm->_graphicsMan->_scrollOffset + 208) @@ -202,13 +209,14 @@ int LinesManager::checkInventoryHotspotsRow(int posX, int minZoneNum, bool lastR * Add Zone Line */ void LinesManager::addZoneLine(int idx, int fromX, int fromY, int destX, int destY, int bobZoneIdx) { + debugC(5, kDebugPath, "addZoneLine(%d, %d, %d, %d, %d, %d)", idx, fromX, fromY, destX, destY, bobZoneIdx); int16 *zoneData; if (fromX == fromY && fromY == destX && fromY == destY) { _bobZoneFl[bobZoneIdx] = true; _bobZone[bobZoneIdx] = fromY; } else { - assert (idx <= MAX_LINES); + assert(idx < MAX_LINES + 1); _zoneLine[idx]._zoneData = (int16 *)_vm->_globals->freeMemory((byte *)_zoneLine[idx]._zoneData); int distX = abs(fromX - destX); @@ -252,7 +260,8 @@ void LinesManager::addZoneLine(int idx, int fromX, int fromY, int destX, int des * Add Line */ void LinesManager::addLine(int lineIdx, Directions direction, int fromX, int fromY, int destX, int destY) { - assert (lineIdx <= MAX_LINES); + debugC(5, kDebugPath, "addLine(%d, %d, %d, %d, %d, %d)", lineIdx, direction, fromX, fromY, destX, destY); + assert(lineIdx < MAX_LINES); if (_linesNumb < lineIdx) _linesNumb = lineIdx; @@ -265,7 +274,7 @@ void LinesManager::addLine(int lineIdx, Directions direction, int fromX, int fro maxDist = distX; byte *zoneData = _vm->_globals->allocMemory(4 * maxDist + 8); - assert (zoneData); + assert(zoneData); Common::fill(zoneData, zoneData + 4 * maxDist + 8, 0); _lineItem[lineIdx]._lineData = (int16 *)zoneData; @@ -366,6 +375,7 @@ void LinesManager::addLine(int lineIdx, Directions direction, int fromX, int fro * Check collision line */ bool LinesManager::checkCollisionLine(int xp, int yp, int *foundDataIdx, int *foundLineIdx, int startLineIdx, int endLineIdx) { + debugC(5, kDebugPath, "checkCollisionLine(%d, %d, foundDataIdx, foundLineIdx, %d, %d)", xp, yp, startLineIdx ,endLineIdx); int16 *lineData; int left = xp + 4; @@ -425,6 +435,7 @@ bool LinesManager::checkCollisionLine(int xp, int yp, int *foundDataIdx, int *fo * Init route */ void LinesManager::initRoute() { + debugC(5, kDebugPath, "initRoute()"); int lineX = _lineItem[0]._lineData[0]; int lineY = _lineItem[0]._lineData[1]; @@ -461,6 +472,7 @@ void LinesManager::initRoute() { // Avoid obstacle int LinesManager::avoidObstacle(int lineIdx, int lineDataIdx, int routeIdx, int destLineIdx, int destLineDataIdx, RouteItem *route) { + debugC(5, kDebugPath, "avoidObstacle(%d, %d, %d, %d, %d, route)", lineIdx, lineDataIdx, routeIdx, destLineIdx, destLineDataIdx); int curLineIdx = lineIdx; int curLineDataIdx = lineDataIdx; int curRouteIdx = routeIdx; @@ -492,6 +504,7 @@ int LinesManager::avoidObstacle(int lineIdx, int lineDataIdx, int routeIdx, int // Avoid Obstacle, taking into account start/End lind Idx int LinesManager::avoidObstacleOnSegment(int lineIdx, int lineDataIdx, int routeIdx, int destLineIdx, int destLineDataIdx, RouteItem *route, int startLineIdx, int endLineIdx) { + debugC(5, kDebugPath, "avoidObstacleOnSegment(%d, %d, %d, %d, %d, route, %d, %d)", lineIdx, lineDataIdx, routeIdx, destLineIdx, destLineDataIdx, startLineIdx, endLineIdx); int curLineIdx = lineIdx; int curLineDataIdx = lineDataIdx; int curRouteIdx = routeIdx; @@ -534,6 +547,7 @@ int LinesManager::avoidObstacleOnSegment(int lineIdx, int lineDataIdx, int route } bool LinesManager::MIRACLE(int fromX, int fromY, int lineIdx, int destLineIdx, int routeIdx) { + debugC(5, kDebugPath, "MIRACLE(%d, %d, %d, %d, %d)", fromX, fromY, lineIdx, destLineIdx, routeIdx); int newLinesDataIdx = 0; int newLinesIdx = 0; int lineIdxLeft = 0; @@ -775,6 +789,7 @@ bool LinesManager::MIRACLE(int fromX, int fromY, int lineIdx, int destLineIdx, i } int LinesManager::computeRouteIdx(int lineIdx, int dataIdx, int fromX, int fromY, int destX, int destY, int routerIdx, RouteItem *route) { + debugC(5, kDebugPath, "computeRouteIdx(%d, %d, %d, %d, %d, %d, %d)", lineIdx, dataIdx, fromX, fromY, destX, destY, routerIdx); int result = routerIdx; ++_pathFindingMaxDepth; if (_pathFindingMaxDepth > 10) { @@ -1075,6 +1090,7 @@ int LinesManager::computeRouteIdx(int lineIdx, int dataIdx, int fromX, int fromY // Find Route from a point to the other RouteItem *LinesManager::findRoute(int fromX, int fromY, int destX, int destY) { + debugC(5, kDebugPath, "findRoute(%d, %d, %d, %d)", fromX, fromY, destX, destY); int foundLineIdx; int foundDataIdx; int curLineY = 0; @@ -1502,6 +1518,7 @@ RouteItem *LinesManager::findRoute(int fromX, int fromY, int destX, int destY) { } void LinesManager::useRoute0(int idx, int curRouteIdx) { + debugC(5, kDebugPath, "useRoute0(%d, %d)", idx, curRouteIdx); if (idx) { int i = 0; do { @@ -1513,6 +1530,7 @@ void LinesManager::useRoute0(int idx, int curRouteIdx) { } void LinesManager::useRoute1(int idx, int curRouteIdx) { + debugC(5, kDebugPath, "useRoute1(%d, %d)", idx, curRouteIdx); if (idx) { int i = 0; do { @@ -1524,6 +1542,7 @@ void LinesManager::useRoute1(int idx, int curRouteIdx) { } void LinesManager::useRoute2(int idx, int curRouteIdx) { + debugC(5, kDebugPath, "useRoute2(%d, %d)", idx, curRouteIdx); if (idx) { int i = 0; do { @@ -1535,6 +1554,7 @@ void LinesManager::useRoute2(int idx, int curRouteIdx) { } int LinesManager::characterRoute(int fromX, int fromY, int destX, int destY, int startLineIdx, int endLineIdx, int routeIdx) { + debugC(5, kDebugPath, "characterRoute(%d, %d, %d, %d, %d, %d, %d)", fromX, fromY, destX, destY, startLineIdx, endLineIdx, routeIdx); int collDataIdxRoute2 = 0; bool colResult = false; @@ -1561,6 +1581,7 @@ int LinesManager::characterRoute(int fromX, int fromY, int destX, int destY, int case DIR_DOWN_RIGHT: curY += 2; curX += 2; + break; case DIR_DOWN: curY += 2; break; @@ -1967,8 +1988,8 @@ int LinesManager::characterRoute(int fromX, int fromY, int destX, int destY, int _newRouteIdx = curRouteIdx; return 2; } - // CHECKME: Checking essai0[0]._x might make more sense here? - if (_testRoute1[0]._x != -1 && foundLineIdx > collLineIdxRoute0 && collLineIdxRoute1 >= collLineIdxRoute0 && collLineIdxRoute2 >= collLineIdxRoute0 && endLineIdx <= collLineIdxRoute0) { + + if (_testRoute0[0]._x != -1 && foundLineIdx > collLineIdxRoute0 && collLineIdxRoute1 >= collLineIdxRoute0 && collLineIdxRoute2 >= collLineIdxRoute0 && endLineIdx <= collLineIdxRoute0) { _newLineIdx = collLineIdxRoute0; _newLineDataIdx = collDataIdxRoute0; int i = 0; @@ -1985,6 +2006,7 @@ int LinesManager::characterRoute(int fromX, int fromY, int destX, int destY, int } RouteItem *LinesManager::cityMapCarRoute(int x1, int y1, int x2, int y2) { + debugC(5, kDebugPath, "cityMapCarRoute(%d, %d, %d, %d)", x1, y1, x2, y2); RouteItem *result; int arrDelta[10]; int arrDataIdx[10]; @@ -2163,6 +2185,7 @@ RouteItem *LinesManager::cityMapCarRoute(int x1, int y1, int x2, int y2) { } bool LinesManager::checkSmoothMove(int fromX, int fromY, int destX, int destY) { + debugC(5, kDebugPath, "checkSmoothMove(%d, %d, %d, %d)", fromX, fromY, destX, destY); int distX = abs(fromX - destX) + 1; int distY = abs(fromY - destY) + 1; if (distX > distY) @@ -2201,6 +2224,7 @@ bool LinesManager::checkSmoothMove(int fromX, int fromY, int destX, int destY) { } bool LinesManager::makeSmoothMove(int fromX, int fromY, int destX, int destY) { + debugC(5, kDebugPath, "makeSmoothMove(%d, %d, %d, %d)", fromX, fromY, destX, destY); int curX = fromX; int curY = fromY; if (fromX > destX && destY > fromY) { @@ -2218,10 +2242,11 @@ bool LinesManager::makeSmoothMove(int fromX, int fromY, int destX, int destY) { realSpeedX = _vm->_graphicsMan->zoomIn(realSpeedX, spriteSize); realSpeedY = _vm->_graphicsMan->zoomIn(realSpeedY, spriteSize); } + int oldY = curY; for (int i = 0; i < realSpeedX; i++) { --curX; _smoothRoute[smoothIdx]._posX = curX; - if (curY != curY + realSpeedY) + if (curY != oldY + realSpeedY) curY++; _smoothRoute[smoothIdx]._posY = curY; smoothIdx++; @@ -2252,10 +2277,11 @@ bool LinesManager::makeSmoothMove(int fromX, int fromY, int destX, int destY) { realSpeedX = _vm->_graphicsMan->zoomIn(realSpeedX, spriteSize); realSpeedY = _vm->_graphicsMan->zoomIn(realSpeedY, spriteSize); } + int oldY = curY; for (int i = 0; i < realSpeedX; i++) { ++curX; _smoothRoute[smoothIdx]._posX = curX; - if (curY != curY + realSpeedY) + if (curY != oldY + realSpeedY) curY++; _smoothRoute[smoothIdx]._posY = curY; smoothIdx++; @@ -2331,6 +2357,7 @@ bool LinesManager::makeSmoothMove(int fromX, int fromY, int destX, int destY) { } bool LinesManager::PLAN_TEST(int paramX, int paramY, int superRouteIdx, int paramStartLineIdx, int paramEndLineIdx) { + debugC(5, kDebugPath, "PLAN_TEST(%d, %d, %d, %d, %d)", paramX, paramY, superRouteIdx, paramStartLineIdx, paramEndLineIdx); int sideTestUp; int sideTestDown; int sideTestLeft; @@ -2431,6 +2458,7 @@ bool LinesManager::PLAN_TEST(int paramX, int paramY, int superRouteIdx, int para // Test line int LinesManager::testLine(int paramX, int paramY, int *testValue, int *foundLineIdx, int *foundDataIdx) { + debugC(5, kDebugPath, "testLine(%d, %d, testValue, foundLineIdx, foundDataIdx)", paramX, paramY); int16 *lineData; int lineDataEndIdx; int collLineIdx; @@ -2439,21 +2467,22 @@ int LinesManager::testLine(int paramX, int paramY, int *testValue, int *foundLin for (int idx = _lastLine + 1; idx < _linesNumb + 1; idx++) { lineData = _lineItem[idx]._lineData; lineDataEndIdx = _lineItem[idx]._lineDataEndIdx; - if (lineData) { - if (lineData[0] == paramX && lineData[1] == paramY) { - *testValue = 1; - int posX = lineData[2 * (lineDataEndIdx - 1)]; - int posY = lineData[2 * (lineDataEndIdx - 1) + 1]; - if (_lineItem[idx]._directionRouteInc == DIR_DOWN || _lineItem[idx]._directionRouteInc == DIR_UP) - posY += 2; - if (_lineItem[idx]._directionRouteInc == DIR_RIGHT || _lineItem[idx]._directionRouteDec == DIR_LEFT) - posX += 2; - if (!checkCollisionLine(posX, posY, &collDataIdx, &collLineIdx, 0, _lastLine)) - error("Error in test line"); - *foundLineIdx = collLineIdx; - *foundDataIdx = collDataIdx; - return idx; - } + if (!lineData) + continue; + + if (lineData[0] == paramX && lineData[1] == paramY) { + *testValue = 1; + int posX = lineData[2 * (lineDataEndIdx - 1)]; + int posY = lineData[2 * (lineDataEndIdx - 1) + 1]; + if (_lineItem[idx]._directionRouteInc == DIR_DOWN || _lineItem[idx]._directionRouteInc == DIR_UP) + posY += 2; + if (_lineItem[idx]._directionRouteInc == DIR_RIGHT || _lineItem[idx]._directionRouteDec == DIR_LEFT) + posX += 2; + if (!checkCollisionLine(posX, posY, &collDataIdx, &collLineIdx, 0, _lastLine)) + error("Error in test line"); + *foundLineIdx = collLineIdx; + *foundDataIdx = collDataIdx; + return idx; } if (lineDataEndIdx > 0) { @@ -2477,12 +2506,13 @@ int LinesManager::testLine(int paramX, int paramY, int *testValue, int *foundLin } int LinesManager::computeYSteps(int idx) { + debugC(5, kDebugPath, "computeYSteps(%d)", idx); int zoomPct = _vm->_globals->_spriteSize[idx]; - if (_vm->_globals->_characterType == 1) { + if (_vm->_globals->_characterType == CHARACTER_HOPKINS_CLONE) { if (zoomPct < 0) zoomPct = -zoomPct; zoomPct = 20 * (5 * zoomPct - 100) / -80; - } else if (_vm->_globals->_characterType == 2) { + } else if (_vm->_globals->_characterType == CHARACTER_SAMANTHA) { if (zoomPct < 0) zoomPct = -zoomPct; zoomPct = 20 * (5 * zoomPct - 165) / -67; @@ -2498,6 +2528,7 @@ int LinesManager::computeYSteps(int idx) { } void LinesManager::optimizeRoute(RouteItem *route) { + debugC(5, kDebugPath, "optimizeRoute(route)"); if (route[0]._x == -1 && route[0]._y == -1) return; @@ -2544,6 +2575,7 @@ void LinesManager::optimizeRoute(RouteItem *route) { } int LinesManager::getMouseZone() { + debugC(9, kDebugPath, "getMouseZone()"); int result; int xp = _vm->_events->_mousePos.x + _vm->_events->_mouseOffset.x; @@ -2564,6 +2596,11 @@ int LinesManager::getMouseZone() { _zone[bobZoneId]._destY = _vm->_objectsMan->_bob[bobId]._oldHeight + _vm->_objectsMan->_bob[bobId]._oldY + 6; _zone[bobZoneId]._spriteIndex = -1; } + + // WORKAROUND: Avoid allowing hotspots that should remain non-interactive + if (bobZoneId == 24 && _vm->_globals->_curRoomNum == 14) + continue; + return bobZoneId; } } @@ -2632,6 +2669,7 @@ int LinesManager::getMouseZone() { } int LinesManager::checkCollision(int xp, int yp) { + debugC(7, kDebugPath, "checkCollision(%d, %d)", xp, yp); if (_currentSegmentId <= 0) return -1; @@ -2681,6 +2719,7 @@ int LinesManager::checkCollision(int xp, int yp) { // Square Zone void LinesManager::initSquareZones() { + debugC(5, kDebugPath, "initSquareZones()"); for (int idx = 0; idx < 100; ++idx) { SquareZoneItem *curZone = &_squareZone[idx]; curZone->_enabledFl = false; @@ -2693,7 +2732,7 @@ void LinesManager::initSquareZones() { curZone->_maxZoneLineIdx = 0; } - for (int idx = 0; idx < MAX_LINES; ++idx) { + for (int idx = 0; idx < MAX_LINES + 1; ++idx) { int16 *dataP = _zoneLine[idx]._zoneData; if (dataP == NULL) continue; @@ -2723,6 +2762,7 @@ void LinesManager::initSquareZones() { } void LinesManager::clearAll() { + debugC(5, kDebugPath, "clearAll()"); for (int idx = 0; idx < 105; ++idx) { _zone[idx]._destX = 0; _zone[idx]._destY = 0; @@ -2768,6 +2808,7 @@ void LinesManager::clearAll() { * Clear all zones and reset nextLine */ void LinesManager::clearAllZones() { + debugC(5, kDebugPath, "clearAllZones()"); for (int idx = 0; idx < MAX_LINES; ++idx) removeZoneLine(idx); } @@ -2776,38 +2817,37 @@ void LinesManager::clearAllZones() { * Remove Zone Line */ void LinesManager::removeZoneLine(int idx) { - assert (idx <= MAX_LINES); + debugC(5, kDebugPath, "removeZoneLine(%d)", idx); + assert(idx < MAX_LINES + 1); _zoneLine[idx]._zoneData = (int16 *)_vm->_globals->freeMemory((byte *)_zoneLine[idx]._zoneData); } void LinesManager::resetLines() { + debugC(5, kDebugPath, "resetLines()"); for (int idx = 0; idx < MAX_LINES; ++idx) { - removeLine(idx); + _lineItem[idx]._lineData = (int16 *)_vm->_globals->freeMemory((byte *)_lineItem[idx]._lineData); _lineItem[idx]._lineDataEndIdx = 0; _lineItem[idx]._lineData = NULL; } } -// Remove Line -void LinesManager::removeLine(int idx) { - if (idx > MAX_LINES) - error("Attempting to add a line obstacle > MAX_LIGNE."); - _lineItem[idx]._lineData = (int16 *)_vm->_globals->freeMemory((byte *)_lineItem[idx]._lineData); -} - void LinesManager::setMaxLineIdx(int idx) { + debugC(5, kDebugPath, "setMaxLineIdx(%d)", idx); _maxLineIdx = idx; } void LinesManager::resetLastLine() { + debugC(5, kDebugPath, "resetLastLine()"); _lastLine = 0; } void LinesManager::resetLinesNumb() { + debugC(5, kDebugPath, "resetLinesNumb()"); _linesNumb = 0; } void LinesManager::enableZone(int idx) { + debugC(5, kDebugPath, "enableZone(%d)", idx); if (_bobZone[idx]) { _bobZoneFl[idx] = true; } else { @@ -2816,6 +2856,7 @@ void LinesManager::enableZone(int idx) { } void LinesManager::disableZone(int idx) { + debugC(5, kDebugPath, "disableZone(%d)", idx); if (_bobZone[idx]) { _bobZoneFl[idx] = false; } else { @@ -2824,6 +2865,7 @@ void LinesManager::disableZone(int idx) { } void LinesManager::checkZone() { + debugC(9, kDebugPath, "checkZone()"); int mouseX = _vm->_events->getMouseX(); int mouseY = _vm->_events->getMouseY(); int oldMouseY = mouseY; @@ -2854,6 +2896,10 @@ void LinesManager::checkZone() { int zoneId; if (_oldMouseX != mouseX || _oldMouseY != oldMouseY) { zoneId = getMouseZone(); + + // WORKAROUND: Incorrect hotspot zones in the guard's control room + if (_vm->_globals->_curRoomNum == 71 && (zoneId == 14 || zoneId == 12 || zoneId == 17)) + zoneId = _oldMouseZoneId; } else { zoneId = _oldMouseZoneId; } diff --git a/engines/hopkins/lines.h b/engines/hopkins/lines.h index 9e397cca3d..b32dc6e2a5 100644 --- a/engines/hopkins/lines.h +++ b/engines/hopkins/lines.h @@ -40,6 +40,8 @@ struct LigneZoneItem { #define INVALID_LINE_VALUE 1300 +#define MAX_LINES 400 + struct RouteItem; struct LigneItem { @@ -111,13 +113,11 @@ private: int _pathFindingMaxDepth; SmoothItem _smoothRoute[4000]; Directions _smoothMoveDirection; - LigneZoneItem _zoneLine[401]; + LigneZoneItem _zoneLine[MAX_LINES+1]; SegmentItem _segment[101]; - SquareZoneItem _squareZone[101]; int _currentSegmentId; int _maxLineIdx; int _lastLine; - int _linesNumb; int _newLineIdx; int _newLineDataIdx; int _newRouteIdx; @@ -134,7 +134,6 @@ private: RouteItem *_testRoute0; RouteItem *_testRoute1; int16 *_lineBuf; - LigneItem _lineItem[400]; RouteItem _bestRoute[8001]; int _zoneSkipCount; int _oldMouseZoneId; @@ -166,6 +165,9 @@ public: int _bobZone[105]; bool _bobZoneFl[105]; ZoneItem _zone[106]; + SquareZoneItem _squareZone[101]; + LigneItem _lineItem[MAX_LINES]; + int _linesNumb; LinesManager(HopkinsEngine *vm); ~LinesManager(); diff --git a/engines/hopkins/menu.cpp b/engines/hopkins/menu.cpp index 01aa84e4ed..455f4ad8d4 100644 --- a/engines/hopkins/menu.cpp +++ b/engines/hopkins/menu.cpp @@ -50,11 +50,11 @@ int MenuManager::menu() { signed int result; int frameIndex[] = { 0, 0, 0, 0, 0 }; - if (g_system->getEventManager()->shouldQuit()) + if (_vm->shouldQuit()) return -1; result = 0; - while (!g_system->getEventManager()->shouldQuit()) { + while (!_vm->shouldQuit()) { _vm->_objectsMan->_forestFl = false; _vm->_events->_breakoutFl = false; _vm->_globals->_disableInventFl = true; @@ -97,7 +97,7 @@ int MenuManager::menu() { // Loop to make menu selection bool selectionMade = false; do { - if (g_system->getEventManager()->shouldQuit()) + if (_vm->shouldQuit()) return -1; menuIndex = MENU_NONE; diff --git a/engines/hopkins/objects.cpp b/engines/hopkins/objects.cpp index f139ee55ab..f2f547557f 100644 --- a/engines/hopkins/objects.cpp +++ b/engines/hopkins/objects.cpp @@ -41,12 +41,13 @@ ObjectsManager::ObjectsManager(HopkinsEngine *vm) { for (int i = 0; i < 6; ++i) Common::fill((byte *)&_sprite[i], (byte *)&_sprite[i] + sizeof(SpriteItem), 0); - for (int i = 0; i < 36; ++i) + for (int i = 0; i < 36; ++i) { Common::fill((byte *)&_bob[i], (byte *)&_bob[i] + sizeof(BobItem), 0); + Common::fill((byte *)&_lockedAnims[i], (byte *)&_lockedAnims[i] + sizeof(LockAnimItem), 0); + } for (int i = 0; i < 30; ++i) { Common::fill((byte *)&_vBob[i], (byte *)&_vBob[i] + sizeof(VBobItem), 0); - Common::fill((byte *)&_lockedAnims[i], (byte *)&_lockedAnims[i] + sizeof(LockAnimItem), 0); } for (int i = 0; i < 300; ++i) @@ -987,7 +988,7 @@ void ObjectsManager::computeSprite(int idx) { // Before Sort void ObjectsManager::beforeSort(SortMode sortMode, int index, int priority) { ++_sortedDisplayCount; - assert (_sortedDisplayCount <= 48); + assert(_sortedDisplayCount <= 48); _sortedDisplay[_sortedDisplayCount]._sortMode = sortMode; _sortedDisplay[_sortedDisplayCount]._index = index; @@ -1228,7 +1229,7 @@ void ObjectsManager::displayVBob() { * Get Sprite X coordinate */ int ObjectsManager::getSpriteX(int idx) { - assert (idx <= MAX_SPRITE); + assert(idx <= MAX_SPRITE); return _sprite[idx]._spritePos.x; } @@ -1236,7 +1237,7 @@ int ObjectsManager::getSpriteX(int idx) { * Get Sprite Y coordinate */ int ObjectsManager::getSpriteY(int idx) { - assert (idx <= MAX_SPRITE); + assert(idx <= MAX_SPRITE); return _sprite[idx]._spritePos.y; } @@ -1260,12 +1261,12 @@ void ObjectsManager::clearSprite() { } void ObjectsManager::animateSprite(int idx) { - assert (idx <= MAX_SPRITE); + assert(idx <= MAX_SPRITE); _sprite[idx]._animationType = 1; } void ObjectsManager::addStaticSprite(const byte *spriteData, Common::Point pos, int idx, int spriteIndex, int zoomFactor, bool flipFl, int deltaX, int deltaY) { - assert (idx <= MAX_SPRITE); + assert(idx <= MAX_SPRITE); SpriteItem *spr = &_sprite[idx]; spr->_spriteData = spriteData; @@ -1298,7 +1299,7 @@ void ObjectsManager::removeSprite(int idx) { * Set Sprite X coordinate */ void ObjectsManager::setSpriteX(int idx, int xp) { - assert (idx <= MAX_SPRITE); + assert(idx <= MAX_SPRITE); _sprite[idx]._spritePos.x = xp; } @@ -1306,7 +1307,7 @@ void ObjectsManager::setSpriteX(int idx, int xp) { * Set Sprite Y coordinate */ void ObjectsManager::setSpriteY(int idx, int yp) { - assert (idx <= MAX_SPRITE); + assert(idx <= MAX_SPRITE); _sprite[idx]._spritePos.y = yp; } @@ -1314,19 +1315,19 @@ void ObjectsManager::setSpriteY(int idx, int yp) { * Set Sprite Index */ void ObjectsManager::setSpriteIndex(int idx, int spriteIndex) { - assert (idx <= MAX_SPRITE); + assert(idx <= MAX_SPRITE); _sprite[idx]._spriteIndex = spriteIndex; } // Set Sprite Size void ObjectsManager::setSpriteZoom(int idx, int zoomFactor) { - assert (idx <= MAX_SPRITE); + assert(idx <= MAX_SPRITE); if (!_sprite[idx]._rleFl) _sprite[idx]._zoomFactor = zoomFactor; } void ObjectsManager::setFlipSprite(int idx, bool flipFl) { - assert (idx <= MAX_SPRITE); + assert(idx <= MAX_SPRITE); if (!_sprite[idx]._rleFl) _sprite[idx]._flipFl = flipFl; } @@ -2185,7 +2186,7 @@ void ObjectsManager::changeCharacterHead(PlayerCharacter oldCharacter, PlayerCha loc->_pos.y = getSpriteY(0); loc->_startSpriteIndex = 64; loc->_location = _vm->_globals->_screenId; - loc->_zoomFactor = _sprite[0]._animationType; + loc->_zoomFactor = _sprite[0]._zoomFactor; removeSprite(1); addStaticSprite(_headSprites, loc->_pos, 1, 3, loc->_zoomFactor, false, 20, 127); @@ -2198,7 +2199,7 @@ void ObjectsManager::changeCharacterHead(PlayerCharacter oldCharacter, PlayerCha loc = &_vm->_globals->_saveData->_realHopkins; _vm->_globals->_characterSpriteBuf = _vm->_fileIO->loadFile("PERSO.SPR"); - _vm->_globals->_characterType = 0; + _vm->_globals->_characterType = CHARACTER_HOPKINS; addStaticSprite(_vm->_globals->_characterSpriteBuf, loc->_pos, 0, 64, loc->_zoomFactor, false, 34, 190); animateSprite(0); _vm->_globals->loadCharacterData(); @@ -2223,7 +2224,7 @@ void ObjectsManager::changeCharacterHead(PlayerCharacter oldCharacter, PlayerCha loc = &_vm->_globals->_saveData->_samantha; _vm->_globals->_characterSpriteBuf = _vm->_fileIO->loadFile("PSAMAN.SPR"); - _vm->_globals->_characterType = 2; + _vm->_globals->_characterType = CHARACTER_SAMANTHA; addStaticSprite(_vm->_globals->_characterSpriteBuf, loc->_pos, 0, 64, loc->_zoomFactor, false, 20, 127); animateSprite(0); _vm->_globals->loadCharacterData(); @@ -2286,9 +2287,9 @@ void ObjectsManager::changeCharacterHead(PlayerCharacter oldCharacter, PlayerCha // Check Size void ObjectsManager::computeAndSetSpriteSize() { int size = _vm->_globals->_spriteSize[getSpriteY(0)]; - if (_vm->_globals->_characterType == 1) { + if (_vm->_globals->_characterType == CHARACTER_HOPKINS_CLONE) { size = 20 * (5 * abs(size) - 100) / -80; - } else if (_vm->_globals->_characterType == 2) { + } else if (_vm->_globals->_characterType == CHARACTER_SAMANTHA) { size = 20 * (5 * abs(size) - 165) / -67; } setSpriteZoom(0, size); @@ -2675,7 +2676,7 @@ void ObjectsManager::handleSpecialGames() { _vm->_soundMan->_specialSoundNum = 198; _charactersEnabledFl = true; _vm->_animMan->unsetClearAnimFlag(); - _vm->_animMan->playAnim("otage.ANM", 1, 24, 500, true); + _vm->_animMan->playAnim("OTAGE.ANM", "OTAGE.ANM", 1, 24, 500, true); _vm->_soundMan->_specialSoundNum = 0; _vm->_graphicsMan->displayScreen(false); @@ -2889,7 +2890,7 @@ void ObjectsManager::doActionRight(int idx) { showSpecialActionAnimationWithFlip(_gestureBuf, "23,24,25,-1,", 8, false); break; case 6: - showSpecialActionAnimation(_gestureBuf, "24,,23,-1,", 8); + showSpecialActionAnimation(_gestureBuf, "24,23,-1,", 8); break; case 7: showSpecialActionAnimationWithFlip(_gestureBuf, "23,24,25,26,27,-1,", 8, false); @@ -2933,7 +2934,7 @@ void ObjectsManager::doActionDiagRight(int idx) { showSpecialActionAnimation(_gestureBuf, "17,16,15,-1,", 8); break; case 7: - showSpecialActionAnimationWithFlip(_gestureBuf, "15,16,17,18,19,20-1,", 8, false); + showSpecialActionAnimationWithFlip(_gestureBuf, "15,16,17,18,19,20,-1,", 8, false); break; case 8: showSpecialActionAnimation(_gestureBuf, "19,18,17,16,15,-1,", 8); @@ -3035,7 +3036,7 @@ void ObjectsManager::doActionLeft(int idx) { showSpecialActionAnimationWithFlip(_gestureBuf, "23,24,25,-1,", 8, true); break; case 6: - showSpecialActionAnimation(_gestureBuf, "24,,23,-1,", 8); + showSpecialActionAnimation(_gestureBuf, "24,23,-1,", 8); break; case 7: showSpecialActionAnimationWithFlip(_gestureBuf, "23,24,25,26,27,-1,", 8, true); @@ -3087,6 +3088,7 @@ void ObjectsManager::setBobAnimDataIdx(int idx, int animIdx) { * Set Hopkins animation */ void ObjectsManager::setBobAnimation(int idx) { + assert(idx < 36); BobItem *bob = &_bob[idx]; if (!bob->_disabledAnimationFl) return; @@ -3102,6 +3104,7 @@ void ObjectsManager::setBobAnimation(int idx) { * Stop Hopkins animation */ void ObjectsManager::stopBobAnimation(int idx) { + assert(idx < 36); _bob[idx]._disabledAnimationFl = true; } @@ -3438,6 +3441,7 @@ void ObjectsManager::disableVerb(int idx, int a2) { case 13: case 22: curZone->_verbFl8 = 0; + break; case 14: case 21: case 25: @@ -3709,7 +3713,7 @@ void ObjectsManager::handleForest(int screenId, int minX, int maxX, int minY, in } if (_vm->_globals->_saveData->_data[savegameIdx] == 3) { _vm->_graphicsMan->_fadingFl = true; - _vm->_animMan->playAnim("CREVE2.ANM", 100, 24, 500); + _vm->_animMan->playAnim("CREVE2.ANM", "CREVE2.ANM", 100, 24, 500); _vm->_globals->_exitId = 150; _vm->_graphicsMan->_noFadingFl = true; hideBob(1); @@ -3857,30 +3861,29 @@ void ObjectsManager::sceneControl2(const Common::String &backgroundFile, const C _vm->_graphicsMan->setColorPercentage(253, 100, 100, 100); _vm->_graphicsMan->setColorPercentage(251, 100, 100, 100); _vm->_graphicsMan->setColorPercentage(254, 0, 0, 0); - if (_vm->_globals->_characterType) { - if (!_vm->_globals->_saveData->_data[svAlternateSpriteFl] && !_vm->_globals->_saveData->_data[svField356]) { - _vm->_globals->_characterSpriteBuf = _vm->_fileIO->loadFile("PERSO.SPR"); - _vm->_globals->_characterType = 0; - } + if (_vm->_globals->_characterType != CHARACTER_HOPKINS && !_vm->_globals->_saveData->_data[svAlternateSpriteFl] && !_vm->_globals->_saveData->_data[svField356]) { + _vm->_globals->_characterSpriteBuf = _vm->_fileIO->loadFile("PERSO.SPR"); + _vm->_globals->_characterType = CHARACTER_HOPKINS; } - if (!_vm->_globals->_characterType && _vm->_globals->_saveData->_data[svAlternateSpriteFl] == 1) { + + if (_vm->_globals->_characterType == CHARACTER_HOPKINS && _vm->_globals->_saveData->_data[svAlternateSpriteFl] == 1) { _vm->_globals->_characterSpriteBuf = _vm->_fileIO->loadFile("HOPFEM.SPR"); - _vm->_globals->_characterType = 1; + _vm->_globals->_characterType = CHARACTER_HOPKINS_CLONE; } - if (_vm->_globals->_characterType != 2 && _vm->_globals->_saveData->_data[svField356] == 1) { + if (_vm->_globals->_characterType != CHARACTER_SAMANTHA && _vm->_globals->_saveData->_data[svField356] == 1) { _vm->_globals->_characterSpriteBuf = _vm->_fileIO->loadFile("PSAMAN.SPR"); - _vm->_globals->_characterType = 2; + _vm->_globals->_characterType = CHARACTER_SAMANTHA; } _vm->_globals->loadCharacterData(); switch (_vm->_globals->_characterType) { - case 0: + case CHARACTER_HOPKINS: addStaticSprite(_vm->_globals->_characterSpriteBuf, _characterPos, 0, _startSpriteIndex, 0, false, 34, 190); break; - case 1: + case CHARACTER_HOPKINS_CLONE: addStaticSprite(_vm->_globals->_characterSpriteBuf, _characterPos, 0, _startSpriteIndex, 0, false, 28, 155); break; - case 2: + case CHARACTER_SAMANTHA: addStaticSprite(_vm->_globals->_characterSpriteBuf, _characterPos, 0, _startSpriteIndex, 0, false, 20, 127); break; } diff --git a/engines/hopkins/objects.h b/engines/hopkins/objects.h index a5e309344b..5f1f5b1f59 100644 --- a/engines/hopkins/objects.h +++ b/engines/hopkins/objects.h @@ -239,7 +239,7 @@ public: byte *_headSprites; SpriteItem _sprite[6]; BobItem _bob[36]; - LockAnimItem _lockedAnims[30]; + LockAnimItem _lockedAnims[36]; bool _charactersEnabledFl; bool _refreshBobMode10Fl; diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp index af0b043641..45b4885c90 100644 --- a/engines/hopkins/saveload.cpp +++ b/engines/hopkins/saveload.cpp @@ -307,6 +307,10 @@ void SaveLoadManager::convertThumb16To8(Graphics::Surface *thumb16, Graphics::Su byte r, g, b; pixelFormat16.colorToRGB(*lineSrcP++, r, g, b); + // Do like in the original and show thumbnail as a grayscale picture + int lum = (r * 21 + g * 72 + b * 7) / 100; + r = g = b = lum; + // Scan the palette for the closest match int difference = 99999, foundIndex = 0; for (int palIndex = 0; palIndex < PALETTE_SIZE; ++palIndex) { diff --git a/engines/hopkins/script.cpp b/engines/hopkins/script.cpp index 6167ac4c23..c39273203d 100644 --- a/engines/hopkins/script.cpp +++ b/engines/hopkins/script.cpp @@ -65,8 +65,6 @@ int ScriptManager::handleOpcode(const byte *dataP) { mesgId = 639; if (mesgId == 8) mesgId = 637; - if (mesgId == 53) - mesgId = 644; if (mesgId == 557) mesgId = 636; if (mesgId == 51) @@ -99,8 +97,6 @@ int ScriptManager::handleOpcode(const byte *dataP) { mesgId = 646; if (mesgId == 604) mesgId = 647; - if (mesgId == 51) - mesgId = 644; if (mesgId == 607) mesgId = 650; if (mesgId == 605) @@ -201,64 +197,70 @@ int ScriptManager::handleOpcode(const byte *dataP) { opcodeType = 1; break; case MKTAG24('S', 'T', 'P'): - if (!_vm->_objectsMan->_disableFl) { - _vm->_objectsMan->_twoCharactersFl = false; - _vm->_objectsMan->_characterPos.x = READ_LE_INT16(dataP + 6); - _vm->_objectsMan->_characterPos.y = READ_LE_INT16(dataP + 8); - _vm->_objectsMan->_startSpriteIndex = dataP[5]; - if (_vm->_objectsMan->_changeHeadFl) { - if (_vm->_globals->_saveData->_data[svField354] == 1 - && _vm->_globals->_saveData->_cloneHopkins._pos.x && _vm->_globals->_saveData->_cloneHopkins._pos.y - && _vm->_globals->_saveData->_cloneHopkins._startSpriteIndex && _vm->_globals->_saveData->_cloneHopkins._location) { - - _vm->_objectsMan->_characterPos = _vm->_globals->_saveData->_cloneHopkins._pos; - _vm->_objectsMan->_startSpriteIndex = _vm->_globals->_saveData->_cloneHopkins._startSpriteIndex; - } - if (_vm->_globals->_saveData->_data[svField356] == 1 - && _vm->_globals->_saveData->_samantha._pos.x && _vm->_globals->_saveData->_samantha._pos.y - && _vm->_globals->_saveData->_samantha._startSpriteIndex && _vm->_globals->_saveData->_samantha._location) { - _vm->_objectsMan->_characterPos = _vm->_globals->_saveData->_samantha._pos; - _vm->_objectsMan->_startSpriteIndex = _vm->_globals->_saveData->_samantha._startSpriteIndex; - } - if (_vm->_globals->_saveData->_data[svField357] == 1 - && _vm->_globals->_saveData->_realHopkins._pos.x && _vm->_globals->_saveData->_realHopkins._pos.y - && _vm->_globals->_saveData->_realHopkins._startSpriteIndex && _vm->_globals->_saveData->_realHopkins._location) { - _vm->_objectsMan->_characterPos = _vm->_globals->_saveData->_realHopkins._pos; - _vm->_objectsMan->_startSpriteIndex = _vm->_globals->_saveData->_realHopkins._startSpriteIndex; - } + if (!_vm->_objectsMan->_disableFl) { + // HACK: This piece of code is a replacement to the missing STE opcode when entering the FBI lab. + if (_vm->_globals->_curRoomNum == 10) { + _vm->_globals->_prevScreenId = _vm->_globals->_screenId; + _vm->_globals->_saveData->_data[svLastPrevScreenId] = _vm->_globals->_screenId; + _vm->_globals->_screenId = _vm->_globals->_saveData->_data[svLastScreenId] = 10; + } + _vm->_objectsMan->_twoCharactersFl = false; + _vm->_objectsMan->_characterPos.x = READ_LE_INT16(dataP + 6); + _vm->_objectsMan->_characterPos.y = READ_LE_INT16(dataP + 8); + _vm->_objectsMan->_startSpriteIndex = dataP[5]; + if (_vm->_objectsMan->_changeHeadFl) { + if (_vm->_globals->_saveData->_data[svField354] == 1 + && _vm->_globals->_saveData->_cloneHopkins._pos.x && _vm->_globals->_saveData->_cloneHopkins._pos.y + && _vm->_globals->_saveData->_cloneHopkins._startSpriteIndex && _vm->_globals->_saveData->_cloneHopkins._location) { + + _vm->_objectsMan->_characterPos = _vm->_globals->_saveData->_cloneHopkins._pos; + _vm->_objectsMan->_startSpriteIndex = _vm->_globals->_saveData->_cloneHopkins._startSpriteIndex; } if (_vm->_globals->_saveData->_data[svField356] == 1 - && _vm->_globals->_saveData->_realHopkins._location == _vm->_globals->_screenId) { - _vm->_objectsMan->addStaticSprite( - _vm->_objectsMan->_headSprites, - _vm->_globals->_saveData->_realHopkins._pos, - 1, - 2, - _vm->_globals->_saveData->_realHopkins._zoomFactor, - false, - 34, - 190); - _vm->_objectsMan->animateSprite(1); - _vm->_objectsMan->_twoCharactersFl = true; + && _vm->_globals->_saveData->_samantha._pos.x && _vm->_globals->_saveData->_samantha._pos.y + && _vm->_globals->_saveData->_samantha._startSpriteIndex && _vm->_globals->_saveData->_samantha._location) { + _vm->_objectsMan->_characterPos = _vm->_globals->_saveData->_samantha._pos; + _vm->_objectsMan->_startSpriteIndex = _vm->_globals->_saveData->_samantha._startSpriteIndex; } if (_vm->_globals->_saveData->_data[svField357] == 1 - && _vm->_globals->_saveData->_data[svField355] == 1 - && _vm->_globals->_saveData->_samantha._location == _vm->_globals->_screenId) { - _vm->_objectsMan->addStaticSprite( - _vm->_objectsMan->_headSprites, - _vm->_globals->_saveData->_samantha._pos, - 1, - 3, - _vm->_globals->_saveData->_samantha._zoomFactor, - false, - 20, - 127); - _vm->_objectsMan->animateSprite(1); - _vm->_objectsMan->_twoCharactersFl = true; + && _vm->_globals->_saveData->_realHopkins._pos.x && _vm->_globals->_saveData->_realHopkins._pos.y + && _vm->_globals->_saveData->_realHopkins._startSpriteIndex && _vm->_globals->_saveData->_realHopkins._location) { + _vm->_objectsMan->_characterPos = _vm->_globals->_saveData->_realHopkins._pos; + _vm->_objectsMan->_startSpriteIndex = _vm->_globals->_saveData->_realHopkins._startSpriteIndex; } } - opcodeType = 1; - _vm->_objectsMan->_changeHeadFl = false; + if (_vm->_globals->_saveData->_data[svField356] == 1 + && _vm->_globals->_saveData->_realHopkins._location == _vm->_globals->_screenId) { + _vm->_objectsMan->addStaticSprite( + _vm->_objectsMan->_headSprites, + _vm->_globals->_saveData->_realHopkins._pos, + 1, + 2, + _vm->_globals->_saveData->_realHopkins._zoomFactor, + false, + 34, + 190); + _vm->_objectsMan->animateSprite(1); + _vm->_objectsMan->_twoCharactersFl = true; + } + if (_vm->_globals->_saveData->_data[svField357] == 1 + && _vm->_globals->_saveData->_data[svField355] == 1 + && _vm->_globals->_saveData->_samantha._location == _vm->_globals->_screenId) { + _vm->_objectsMan->addStaticSprite( + _vm->_objectsMan->_headSprites, + _vm->_globals->_saveData->_samantha._pos, + 1, + 3, + _vm->_globals->_saveData->_samantha._zoomFactor, + false, + 20, + 127); + _vm->_objectsMan->animateSprite(1); + _vm->_objectsMan->_twoCharactersFl = true; + } + } + opcodeType = 1; + _vm->_objectsMan->_changeHeadFl = false; break; case MKTAG24('S', 'T', 'E'): if (!_vm->_objectsMan->_disableFl) { @@ -585,7 +587,7 @@ int ScriptManager::handleOpcode(const byte *dataP) { if (!_vm->_globals->_censorshipFl) { _vm->_soundMan->_specialSoundNum = 16; _vm->_graphicsMan->_fadingFl = true; - _vm->_animMan->playAnim("EGORGE.ANM", 50, 28, 500); + _vm->_animMan->playAnim("EGORGE.ANM", "EGORGE.ANM", 50, 28, 500); _vm->_soundMan->_specialSoundNum = 0; } _vm->_animMan->loadAnim("ASCEN"); @@ -726,7 +728,7 @@ int ScriptManager::handleOpcode(const byte *dataP) { _vm->_animMan->playSequence("grenade.SEQ", 1, 32, 100, false, false); _vm->_soundMan->_specialSoundNum = 0; _vm->_graphicsMan->_fadingFl = true; - _vm->_animMan->playAnim("CREVE17.ANM", 24, 24, 200); + _vm->_animMan->playAnim("CREVE17.ANM", "CREVE17.ANM", 24, 24, 200); _vm->_soundMan->removeSample(1); _vm->_soundMan->removeSample(2); _vm->_soundMan->removeSample(3); @@ -953,21 +955,23 @@ int ScriptManager::handleOpcode(const byte *dataP) { case 56: _vm->_globals->_characterSpriteBuf = _vm->_fileIO->loadFile("HOPFEM.SPR"); - _vm->_globals->_characterType = 1; + _vm->_globals->_characterType = CHARACTER_HOPKINS_CLONE; _vm->_globals->_saveData->_data[svAlternateSpriteFl] = 1; _vm->_globals->loadCharacterData(); _vm->_objectsMan->_sprite[0]._deltaX = 28; _vm->_objectsMan->_sprite[0]._deltaY = 155; + _vm->_objectsMan->_sprite[0]._spriteData = _vm->_globals->_characterSpriteBuf; _vm->_objectsMan->computeAndSetSpriteSize(); break; case 57: _vm->_globals->_characterSpriteBuf = _vm->_fileIO->loadFile("PERSO.SPR"); - _vm->_globals->_characterType = 0; + _vm->_globals->_characterType = CHARACTER_HOPKINS; _vm->_globals->_saveData->_data[svAlternateSpriteFl] = 0; _vm->_globals->loadCharacterData(); _vm->_objectsMan->_sprite[0]._deltaX = 34; _vm->_objectsMan->_sprite[0]._deltaY = 190; + _vm->_objectsMan->_sprite[0]._spriteData = _vm->_globals->_characterSpriteBuf; _vm->_objectsMan->computeAndSetSpriteSize(); break; @@ -1071,6 +1075,7 @@ int ScriptManager::handleOpcode(const byte *dataP) { _vm->_soundMan->playWav(2); playFl = true; } + break; case 6: playFl = false; break; @@ -1395,7 +1400,7 @@ int ScriptManager::handleOpcode(const byte *dataP) { _vm->_globals->_introSpeechOffFl = true; _vm->_talkMan->startAnimatedCharacterDialogue("tourist1.pe2"); _vm->_globals->_introSpeechOffFl = false; - _vm->_animMan->playAnim2("T421.ANM", 100, 14, 500); + _vm->_animMan->playAnim2("T421A.ANM", "T421.ANM", 100, 14, 500); _vm->_events->refreshScreenAndEvents(); _vm->_events->refreshScreenAndEvents(); _vm->_events->refreshScreenAndEvents(); @@ -1957,7 +1962,7 @@ int ScriptManager::handleOpcode(const byte *dataP) { _vm->_animMan->playSequence("SECRET2.SEQ", 1, 12, 100, false, true); _vm->_soundMan->_specialSoundNum = 0; _vm->_graphicsMan->_noFadingFl = true; - _vm->_graphicsMan->fadeOutLong(); + _vm->_graphicsMan->fadeOutShort(); for (int i = 1; i <= 39; i++) { if (_vm->shouldQuit()) @@ -2326,7 +2331,7 @@ int ScriptManager::handleOpcode(const byte *dataP) { if (!_vm->getIsDemo()) { _vm->_graphicsMan->_fadingFl = true; _vm->_graphicsMan->_fadeDefaultSpeed = 1; - _vm->_animMan->playAnim("BOMBE1A.ANM", 100, 18, 100); + _vm->_animMan->playAnim("BOMBE1A.ANM", "BOMBE1.ANM", 100, 18, 100); } _vm->_graphicsMan->loadImage("BOMBEB"); _vm->_graphicsMan->setColorPercentage(252, 100, 100, 100); @@ -2352,7 +2357,7 @@ int ScriptManager::handleOpcode(const byte *dataP) { _vm->_objectsMan->setAndPlayAnim(3, 0, 16, true); _vm->_soundMan->_specialSoundNum = 199; _vm->_graphicsMan->_fadingFl = true; - _vm->_animMan->playAnim("BOMBE2A.ANM", 50, 14, 500); + _vm->_animMan->playAnim("BOMBE2A.ANM", "BOMBE2.ANM", 50, 14, 500); _vm->_soundMan->_specialSoundNum = 0; memset(_vm->_graphicsMan->_frontBuffer, 0, 614400); _vm->_graphicsMan->_noFadingFl = true; @@ -2363,7 +2368,7 @@ int ScriptManager::handleOpcode(const byte *dataP) { _vm->_graphicsMan->fastDisplay(_vm->_globals->_levelSpriteBuf, 513, 163, 7, false); _vm->_objectsMan->setAndPlayAnim(1, 0, 16, true); _vm->_soundMan->_specialSoundNum = 199; - _vm->_animMan->playAnim("BOMBE2A.ANM", 50, 14, 500); + _vm->_animMan->playAnim("BOMBE2A.ANM", "BOMBE2.ANM", 50, 14, 500); _vm->_soundMan->_specialSoundNum = 0; _vm->_graphicsMan->_noFadingFl = true; memset(_vm->_graphicsMan->_frontBuffer, 0, 614400); @@ -2376,7 +2381,7 @@ int ScriptManager::handleOpcode(const byte *dataP) { _vm->_graphicsMan->fadeOutShort(); _vm->_soundMan->_specialSoundNum = 199; _vm->_graphicsMan->_fadingFl = true; - _vm->_animMan->playAnim("BOMBE2A.ANM", 50, 14, 500); + _vm->_animMan->playAnim("BOMBE2A.ANM", "BOMBE2.ANM", 50, 14, 500); _vm->_soundMan->_specialSoundNum = 0; _vm->_graphicsMan->_noFadingFl = true; memset(_vm->_graphicsMan->_frontBuffer, 0, 614400); @@ -2387,7 +2392,7 @@ int ScriptManager::handleOpcode(const byte *dataP) { _vm->_graphicsMan->fastDisplay(_vm->_globals->_levelSpriteBuf, 513, 163, 7, false); _vm->_objectsMan->setAndPlayAnim(6, 0, 16, true); if ((_vm->getPlatform() != Common::kPlatformWindows) || !_vm->getIsDemo()) { - _vm->_animMan->playAnim("BOMBE3A.ANM", 50, 14, 500); + _vm->_animMan->playAnim("BOMBE3A.ANM", "BOMBE3.ANM", 50, 14, 500); memset(_vm->_graphicsMan->_frontBuffer, 0, 614400); } _vm->_globals->_exitId = 6; @@ -2397,7 +2402,7 @@ int ScriptManager::handleOpcode(const byte *dataP) { // Display bomb plan if (!_vm->getIsDemo()) { memcpy(_vm->_graphicsMan->_oldPalette, _vm->_graphicsMan->_palette, 769); - _vm->_animMan->playAnim2("PLAN.ANM", 50, 10, 800); + _vm->_animMan->playAnim2("PLAN.ANM", "PLAN.ANM", 50, 10, 800); } _vm->_graphicsMan->resetDirtyRects(); break; diff --git a/engines/hopkins/sound.cpp b/engines/hopkins/sound.cpp index d8dfba5246..bf816c08a4 100644 --- a/engines/hopkins/sound.cpp +++ b/engines/hopkins/sound.cpp @@ -456,10 +456,8 @@ void SoundManager::checkSounds() { void SoundManager::checkVoiceActivity() { // Check the status of each voice. bool hasActiveVoice = false; - for (int i = 0; i < VOICE_COUNT; ++i) { - checkVoiceStatus(i); - hasActiveVoice |= _voice[i]._status; - } + for (int i = 0; i < VOICE_COUNT; ++i) + hasActiveVoice |= checkVoiceStatus(i); if (!hasActiveVoice && _soundFl) { _soundFl = false; @@ -469,7 +467,6 @@ void SoundManager::checkVoiceActivity() { bool SoundManager::mixVoice(int voiceId, int voiceMode, bool dispTxtFl) { int fileNumber; - int oldMusicVol; bool breakFlag; Common::String prefix; Common::String filename; @@ -575,7 +572,7 @@ bool SoundManager::mixVoice(int voiceId, int voiceMode, bool dispTxtFl) { } } } - oldMusicVol = _musicVolume; + int oldMusicVol = _musicVolume; if (!loadVoice(filename, catPos, catLen, _sWav[20])) { // This case only concerns the English Win95 demo // If it's not possible to load the voice, we force the active flag @@ -634,8 +631,6 @@ void SoundManager::removeSample(int soundIndex) { stopVoice(1); if (checkVoiceStatus(2)) stopVoice(2); - if (checkVoiceStatus(3)) - stopVoice(3); removeWavSample(soundIndex); _sound[soundIndex]._active = false; } @@ -703,7 +698,6 @@ void SoundManager::playSample(int wavIndex, int voiceMode) { switch (voiceMode) { case 5: - case 8: // Case added to identify the former PLAY_SAMPLE2 calls case 9: if (checkVoiceStatus(1)) @@ -715,11 +709,6 @@ void SoundManager::playSample(int wavIndex, int voiceMode) { stopVoice(1); playWavSample(2, wavIndex); break; - case 7: - if (checkVoiceStatus(3)) - stopVoice(1); - playWavSample(3, wavIndex); - break; default: break; } diff --git a/engines/hugo/detection.cpp b/engines/hugo/detection.cpp index bb5944acc8..ede4ab2279 100644 --- a/engines/hugo/detection.cpp +++ b/engines/hugo/detection.cpp @@ -61,7 +61,7 @@ static const HugoGameDescription gameDescriptions[] = { "hugo1", 0, AD_ENTRY1s("house.art", "c9403b2fe539185c9fd569b6cc4ff5ca", 14811), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -85,7 +85,7 @@ static const HugoGameDescription gameDescriptions[] = { "hugo2", 0, AD_ENTRY1s("objects.dat", "88a718cc0ff2b3b25d49aaaa69d6d52c", 155240), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, GF_PACKED, GUIO0() }, @@ -109,7 +109,7 @@ static const HugoGameDescription gameDescriptions[] = { "hugo3", 0, AD_ENTRY1s("objects.dat", "bb1b061538a445f2eb99b682c0f506cc", 136419), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, GF_PACKED, GUIO0() }, diff --git a/engines/hugo/file.cpp b/engines/hugo/file.cpp index 1758f3f6a5..e58c2e57d6 100644 --- a/engines/hugo/file.cpp +++ b/engines/hugo/file.cpp @@ -59,6 +59,11 @@ static const int s_bootCypherLen = sizeof(s_bootCypher) - 1; FileManager::FileManager(HugoEngine *vm) : _vm(vm) { _hasReadHeader = false; _firstUIFFl = true; + + _UIFHeader->_size = 0; + _UIFHeader->_offset = 0; + _soundHdr->_size = 0; + _soundHdr->_offset = 0; } FileManager::~FileManager() { @@ -491,7 +496,7 @@ void FileManager::readBootFile() { memset(_vm->_boot._distrib, '\0', sizeof(_vm->_boot._distrib)); _vm->_boot._registered = kRegFreeware; return; - } else if (_vm->getPlatform() == Common::kPlatformPC) { + } else if (_vm->getPlatform() == Common::kPlatformDOS) { warning("readBootFile - Skipping as H2 and H3 Dos may be shareware"); memset(_vm->_boot._distrib, '\0', sizeof(_vm->_boot._distrib)); _vm->_boot._registered = kRegShareware; diff --git a/engines/hugo/hugo.cpp b/engines/hugo/hugo.cpp index 9d28e0ac69..bcf06055f8 100644 --- a/engines/hugo/hugo.cpp +++ b/engines/hugo/hugo.cpp @@ -66,6 +66,33 @@ HugoEngine::HugoEngine(OSystem *syst, const HugoGameDescription *gd) : Engine(sy _console = new HugoConsole(this); _rnd = 0; + + _screen = NULL; + _mouse = NULL; + _inventory = NULL; + _parser = NULL; + _route = NULL; + _sound = NULL; + _intro = NULL; + _object = NULL; + _text = NULL; + _topMenu = NULL; + _status._storyModeFl = false; + _status._gameOverFl = false; + _status._lookFl = false; + _status._recallFl = false; + _status._newScreenFl = false; + _status._godModeFl = false; + _status._showBoundariesFl = false; + _status._doQuitFl = false; + _status._skipIntroFl = false; + _status._helpFl = false; + _status._tick = 0; + _status._viewState = kViewIntroInit; + _status._song = 0; + _gameType = kGameTypeNone; + _platform = Common::kPlatformUnknown; + _packedFl = false; } HugoEngine::~HugoEngine() { diff --git a/engines/hugo/intro.cpp b/engines/hugo/intro.cpp index f2ae06eb39..505e356049 100644 --- a/engines/hugo/intro.cpp +++ b/engines/hugo/intro.cpp @@ -41,6 +41,7 @@ namespace Hugo { IntroHandler::IntroHandler(HugoEngine *vm) : _vm(vm), _introX(0), _introY(0) { _introXSize = 0; + _introTicks = 0; } IntroHandler::~IntroHandler() { @@ -76,6 +77,7 @@ void IntroHandler::freeIntroData() { } intro_v1d::intro_v1d(HugoEngine *vm) : IntroHandler(vm) { + _introState = 0; } intro_v1d::~intro_v1d() { diff --git a/engines/kyra/darkmoon.cpp b/engines/kyra/darkmoon.cpp index 130fb10df3..a694a4aba5 100644 --- a/engines/kyra/darkmoon.cpp +++ b/engines/kyra/darkmoon.cpp @@ -243,6 +243,17 @@ void DarkMoonEngine::replaceMonster(int unit, uint16 block, int pos, int dir, in if (_monsters[i].flags & 0x40) continue; + // WORKAROUND for bug #3611077 (Dran's dragon transformation sequence triggered prematurely): + // The boss level and the mindflayer level share the same monster data. If you hang around + // long enough in the mindflayer level all 30 monster slots will be used up. When this + // happens it will trigger the dragon transformation sequence when Dran is moved around by script. + // We avoid removing Dran here by prefering monster slots occupied by monsters from another + // sub level. + if (_monsters[i].sub != _currentSub) { + index = i; + break; + } + int dist = getBlockDistance(_monsters[i].block, _currentBlock); if (dist > maxDist) { @@ -261,7 +272,10 @@ void DarkMoonEngine::replaceMonster(int unit, uint16 block, int pos, int dir, in } bool DarkMoonEngine::killMonsterExtra(EoBMonsterInPlay *m) { - if (_currentLevel == 16 && _currentSub == 1 && (_monsterProps[m->type].capsFlags & 4)) { + // WORKAROUND for bug #3611077 (see DarkMoonEngine::replaceMonster()) + // The mindflayers have monster type 0, just like Dran. Using a monster slot occupied by a mindflayer would trigger the dragon transformation + // sequence when all 30 monster slots are used up. We avoid this by checking for m->sub == 1. + if (_currentLevel == 16 && _currentSub == 1 && m->sub == 1 && (_monsterProps[m->type].capsFlags & 4)) { if (m->type) { _playFinale = true; _runFlag = false; diff --git a/engines/kyra/debugger.cpp b/engines/kyra/debugger.cpp index 75981958d6..99d73d19c7 100644 --- a/engines/kyra/debugger.cpp +++ b/engines/kyra/debugger.cpp @@ -482,8 +482,16 @@ Debugger_EoB::Debugger_EoB(EoBCoreEngine *vm) : Debugger(vm), _vm(vm) { } void Debugger_EoB::initialize() { - DCmd_Register("import_savefile", WRAP_METHOD(Debugger_EoB, cmd_importSaveFile)); - DCmd_Register("save_original", WRAP_METHOD(Debugger_EoB, cmd_saveOriginal)); + DCmd_Register("import_savefile", WRAP_METHOD(Debugger_EoB, cmd_importSaveFile)); + DCmd_Register("save_original", WRAP_METHOD(Debugger_EoB, cmd_saveOriginal)); + DCmd_Register("list_monsters", WRAP_METHOD(Debugger_EoB, cmd_listMonsters)); + DCmd_Register("show_position", WRAP_METHOD(Debugger_EoB, cmd_showPosition)); + DCmd_Register("set_position", WRAP_METHOD(Debugger_EoB, cmd_setPosition)); + DCmd_Register("open_door", WRAP_METHOD(Debugger_EoB, cmd_openDoor)); + DCmd_Register("close_door", WRAP_METHOD(Debugger_EoB, cmd_closeDoor)); + DCmd_Register("list_flags", WRAP_METHOD(Debugger_EoB, cmd_listFlags)); + DCmd_Register("set_flag", WRAP_METHOD(Debugger_EoB, cmd_setFlag)); + DCmd_Register("clear_flag", WRAP_METHOD(Debugger_EoB, cmd_clearFlag)); } bool Debugger_EoB::cmd_importSaveFile(int argc, const char **argv) { @@ -558,6 +566,135 @@ bool Debugger_EoB::cmd_saveOriginal(int argc, const char **argv) { return true; } +bool Debugger_EoB::cmd_listMonsters(int, const char **) { + DebugPrintf("\nCurrent level: %d\n----------------------\n\n", _vm->_currentLevel); + DebugPrintf("Id Type Unit Block Position Direction Sub Level Mode Dst.block HP Flags\n--------------------------------------------------------------------------------------------------------------\n"); + + for (int i = 0; i < 30; i++) { + EoBMonsterInPlay *m = &_vm->_monsters[i]; + DebugPrintf("%.02d %.02d %.02d 0x%.04x %d %d %d %.02d 0x%.04x %.03d/%.03d 0x%.02x\n", i, m->type, m->unit, m->block, m->pos, m->dir, m->sub, m->mode, m->dest, m->hitPointsCur, m->hitPointsMax, m->flags); + } + + DebugPrintf("\n"); + + return true; +} + +bool Debugger_EoB::cmd_showPosition(int, const char **) { + DebugPrintf("\nCurrent level: %d\nCurrent Sub Level: %d\nCurrent block: %d (0x%.04x)\nNext block: %d (0x%.04x)\nCurrent direction: %d\n\n", _vm->_currentLevel, _vm->_currentSub, _vm->_currentBlock, _vm->_currentBlock, _vm->calcNewBlockPosition(_vm->_currentBlock, _vm->_currentDirection), _vm->calcNewBlockPosition(_vm->_currentBlock, _vm->_currentDirection), _vm->_currentDirection); + return true; +} + +bool Debugger_EoB::cmd_setPosition(int argc, const char **argv) { + if (argc == 4) { + _vm->_currentBlock = atoi(argv[3]); + int sub = atoi(argv[2]); + int level = atoi(argv[1]); + + int maxLevel = (_vm->game() == GI_EOB1) ? 12 : 16; + if (level < 1 || level > maxLevel) { + DebugPrintf("<level> must be a value from 1 to %d.\n\n", maxLevel); + return true; + } + + if (level != _vm->_currentLevel || sub != _vm->_currentSub) { + _vm->completeDoorOperations(); + _vm->generateTempData(); + _vm->txt()->removePageBreakFlag(); + _vm->screen()->setScreenDim(7); + + _vm->loadLevel(level, sub); + + if (_vm->_dialogueField) + _vm->restoreAfterDialogueSequence(); + } + + _vm->moveParty(_vm->_currentBlock); + + _vm->_sceneUpdateRequired = true; + _vm->gui_drawAllCharPortraitsWithStats(); + DebugPrintf("Success.\n\n"); + + } else { + DebugPrintf("Syntax: set_position <level>, <sub level>, <block>\n"); + DebugPrintf(" (Warning: The sub level and block position parameters will not be checked. Invalid parameters may cause problems.)\n\n"); + } + return true; +} + +bool Debugger_EoB::cmd_openDoor(int, const char **) { + DebugPrintf("Warning: Using this command may cause glitches.\n"); + uint16 block = _vm->calcNewBlockPosition(_vm->_currentBlock, _vm->_currentDirection); + int c = (_vm->_wllWallFlags[_vm->_levelBlockProperties[block].walls[0]] & 8) ? 0 : 1; + int v = _vm->_levelBlockProperties[block].walls[c]; + int flg = (_vm->_flags.gameID == GI_EOB1) ? 1 : 0x10; + if (_vm->_wllWallFlags[v] & flg) { + DebugPrintf("Couldn't open any door. Make sure you're facing the door you wish to open and standing right in front of it.\n\n"); + } else { + _vm->openDoor(block); + DebugPrintf("Trying to open door at block %d.\n\n", block); + } + return true; +} + +bool Debugger_EoB::cmd_closeDoor(int, const char **) { + DebugPrintf("Warning: Using this command may cause glitches.\n"); + uint16 block = _vm->calcNewBlockPosition(_vm->_currentBlock, _vm->_currentDirection); + int c = (_vm->_wllWallFlags[_vm->_levelBlockProperties[block].walls[0]] & 8) ? 0 : 1; + int v = _vm->_levelBlockProperties[block].walls[c]; + if ((_vm->_flags.gameID == GI_EOB1 && !(_vm->_wllWallFlags[v] & 1)) || (_vm->_flags.gameID == GI_EOB2 && (_vm->_wllWallFlags[v] & 0x20))) { + DebugPrintf("Couldn't close any door. Make sure you're facing the door you wish to close and standing right in front of it.\n\n"); + } else { + _vm->closeDoor(block); + DebugPrintf("Trying to close door at block %d.\n\n", block); + } + return true; +} + +bool Debugger_EoB::cmd_listFlags(int, const char **) { + DebugPrintf("Flag Status\n----------------------\n\n"); + for (int i = 0; i < 32; i++) { + uint32 flag = 1 << i; + DebugPrintf("%.2d %s\n", i, _vm->checkScriptFlags(flag) ? "TRUE" : "FALSE"); + } + DebugPrintf("\n"); + return true; +} + +bool Debugger_EoB::cmd_setFlag(int argc, const char **argv) { + if (argc != 2) { + DebugPrintf("Syntax: set_flag <flag>\n\n"); + return true; + } + + int flag = atoi(argv[1]); + if (flag < 0 || flag > 31) { + DebugPrintf("<flag> must be a value from 0 to 31.\n\n"); + } else { + _vm->setScriptFlags(1 << flag); + DebugPrintf("Flag '%.2d' has been set.\n\n", flag); + } + + return true; +} + +bool Debugger_EoB::cmd_clearFlag(int argc, const char **argv) { + if (argc != 2) { + DebugPrintf("Syntax: clear_flag <flag>\n\n"); + return true; + } + + int flag = atoi(argv[1]); + if (flag < 0 || flag > 31) { + DebugPrintf("<flag> must be a value from 0 to 31.\n\n"); + } else { + _vm->clearScriptFlags(1 << flag); + DebugPrintf("Flag '%.2d' has been cleared.\n\n", flag); + } + + return true; +} + #endif // ENABLE_EOB } // End of namespace Kyra diff --git a/engines/kyra/debugger.h b/engines/kyra/debugger.h index e4ab39102a..c1056a6cf3 100644 --- a/engines/kyra/debugger.h +++ b/engines/kyra/debugger.h @@ -121,6 +121,14 @@ protected: bool cmd_importSaveFile(int argc, const char **argv); bool cmd_saveOriginal(int argc, const char **argv); + bool cmd_listMonsters(int argc, const char **argv); + bool cmd_showPosition(int argc, const char **argv); + bool cmd_setPosition(int argc, const char **argv); + bool cmd_openDoor(int argc, const char **argv); + bool cmd_closeDoor(int argc, const char **argv); + bool cmd_listFlags(int argc, const char **argv); + bool cmd_setFlag(int argc, const char **argv); + bool cmd_clearFlag(int argc, const char **argv); }; #endif // ENABLE_EOB diff --git a/engines/kyra/detection_tables.h b/engines/kyra/detection_tables.h index 5c2b8fe1e8..f59d173fe6 100644 --- a/engines/kyra/detection_tables.h +++ b/engines/kyra/detection_tables.h @@ -78,7 +78,7 @@ const KYRAGameDescription adGameDescs[] = { 0, AD_ENTRY1("DISK1.EXE", "c8641d0414d6c966d0a3dad79db07bf4"), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO4(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIPCSPK) }, @@ -91,7 +91,7 @@ const KYRAGameDescription adGameDescs[] = { 0, AD_ENTRY1("DISK1.EXE", "5d5cee4c3d0b68d586788b74243d254a"), Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO4(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIPCSPK) }, @@ -105,7 +105,7 @@ const KYRAGameDescription adGameDescs[] = { "Extracted", AD_ENTRY1("GEMCUT.EMC", "3c244298395520bb62b5edfe41688879"), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO5(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -118,7 +118,7 @@ const KYRAGameDescription adGameDescs[] = { "Extracted", AD_ENTRY1("GEMCUT.EMC", "796e44863dd22fa635b042df1bf16673"), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO5(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -130,7 +130,7 @@ const KYRAGameDescription adGameDescs[] = { "Extracted", AD_ENTRY1("GEMCUT.EMC", "abf8eb360e79a6c2a837751fbd4d3d24"), Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO5(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -142,7 +142,7 @@ const KYRAGameDescription adGameDescs[] = { "Extracted", AD_ENTRY1("GEMCUT.EMC", "6018e1dfeaca7fe83f8d0b00eb0dd049"), Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO5(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -154,7 +154,7 @@ const KYRAGameDescription adGameDescs[] = { "Extracted", AD_ENTRY1("GEMCUT.EMC", "f0b276781f47c130f423ec9679fe9ed9"), Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO5(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -166,7 +166,7 @@ const KYRAGameDescription adGameDescs[] = { "Extracted", AD_ENTRY1("GEMCUT.EMC", "689b62b7519215c1b2571d466c95624c"), Common::RU_RUS, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO5(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -178,7 +178,7 @@ const KYRAGameDescription adGameDescs[] = { "Extracted", AD_ENTRY1("GEMCUT.EMC", "8909b41596913b3f5deaf3c9f1017b01"), Common::ES_ESP, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO5(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -190,7 +190,7 @@ const KYRAGameDescription adGameDescs[] = { "Extracted", AD_ENTRY1("GEMCUT.EMC", "747861d2a9c643c59fdab570df5b9093"), Common::ES_ESP, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO5(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -202,7 +202,7 @@ const KYRAGameDescription adGameDescs[] = { "Extracted", AD_ENTRY1("GEMCUT.EMC", "ef08c8c237ee1473fd52578303fc36df"), Common::IT_ITA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO5(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -318,7 +318,7 @@ const KYRAGameDescription adGameDescs[] = { "CD", AD_ENTRY1("GEMCUT.PAK", "fac399fe62f98671e56a005c5e94e39f"), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO4(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -330,7 +330,7 @@ const KYRAGameDescription adGameDescs[] = { "CD", AD_ENTRY1("GEMCUT.PAK", "230f54e6afc007ab4117159181a1c722"), Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO4(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -342,7 +342,7 @@ const KYRAGameDescription adGameDescs[] = { "CD", AD_ENTRY1("GEMCUT.PAK", "b037c41768b652a040360ffa3556fd2a"), Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO4(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -355,7 +355,7 @@ const KYRAGameDescription adGameDescs[] = { "CD", AD_ENTRY1("GEMCUT.PAK", "d8327fc4b7a72b23c900fa13aef4093a"), Common::IT_ITA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO4(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -417,7 +417,7 @@ const KYRAGameDescription adGameDescs[] = { "Demo", AD_ENTRY1("DEMO1.WSA", "fb722947d94897512b13b50cc84fd648"), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DEMO, GUIO5(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -430,7 +430,7 @@ const KYRAGameDescription adGameDescs[] = { "Demo/CD", AD_ENTRY1("INTRO.VRM", "e3045fb69b8c29db84b8fda3ccbdac54"), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DEMO | ADGF_CD, GUIO4(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -443,7 +443,7 @@ const KYRAGameDescription adGameDescs[] = { 0, AD_ENTRY1("WESTWOOD.001", "3f52dda68c4f7696c8309038be9f4151"), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO6(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -456,7 +456,7 @@ const KYRAGameDescription adGameDescs[] = { 0, AD_ENTRY1("WESTWOOD.001", "d787b9559afddfe058b84c0b3a787224"), Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO6(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -469,7 +469,7 @@ const KYRAGameDescription adGameDescs[] = { "Extracted", AD_ENTRY1("FATE.PAK", "1ba18be685ad8e5a0ab5d46a0ce4d345"), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO6(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -482,7 +482,7 @@ const KYRAGameDescription adGameDescs[] = { "Extracted", AD_ENTRY1("FATE.PAK", "262fb69dd8e52e596c7aefc6456f7c1b"), Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO6(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -495,7 +495,7 @@ const KYRAGameDescription adGameDescs[] = { "Extracted", AD_ENTRY1("FATE.PAK", "f7de11506b4c8fdf64bc763206c3e4e7"), Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO6(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -508,7 +508,7 @@ const KYRAGameDescription adGameDescs[] = { "Extracted", AD_ENTRY1("FATE.PAK", "e0a70c31b022cb4bb3061890020fc27c"), Common::IT_ITA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO6(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -521,7 +521,7 @@ const KYRAGameDescription adGameDescs[] = { "Extracted", AD_ENTRY1("CH01-S00.DLG", "54b7a5a94f6e1ec91f0fb1311eec09ab"), Common::RU_RUS, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO6(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -534,7 +534,7 @@ const KYRAGameDescription adGameDescs[] = { "Extracted", AD_ENTRY1("CH01-S00.DLG", "7c36c0e63ab8c81cbb3ea58681331366"), Common::RU_RUS, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO6(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -547,7 +547,7 @@ const KYRAGameDescription adGameDescs[] = { "CD", AD_ENTRY1("FATE.PAK", "28cbad1c5bf06b2d3825ae57d760d032"), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE | ADGF_CD, GUIO5(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -559,7 +559,7 @@ const KYRAGameDescription adGameDescs[] = { "CD", AD_ENTRY1("FATE.PAK", "28cbad1c5bf06b2d3825ae57d760d032"), Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE | ADGF_CD, GUIO5(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -571,7 +571,7 @@ const KYRAGameDescription adGameDescs[] = { "CD", AD_ENTRY1("FATE.PAK", "28cbad1c5bf06b2d3825ae57d760d032"), Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE | ADGF_CD, GUIO5(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -585,7 +585,7 @@ const KYRAGameDescription adGameDescs[] = { "CD", AD_ENTRY1("FATE.PAK", "30487f3b8d7790c7857f4769ff2dd125"), Common::IT_ITA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE | ADGF_CD, GUIO5(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -597,7 +597,7 @@ const KYRAGameDescription adGameDescs[] = { "CD", AD_ENTRY1("FATE.PAK", "30487f3b8d7790c7857f4769ff2dd125"), Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE | ADGF_CD, GUIO5(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -609,7 +609,7 @@ const KYRAGameDescription adGameDescs[] = { "CD", AD_ENTRY1("FATE.PAK", "30487f3b8d7790c7857f4769ff2dd125"), Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE | ADGF_CD, GUIO5(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -622,7 +622,7 @@ const KYRAGameDescription adGameDescs[] = { "CD", AD_ENTRY1("FATE.PAK", "39772ff82e42c4c520050518deb82e64"), Common::IT_ITA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE | ADGF_CD, GUIO5(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -635,7 +635,7 @@ const KYRAGameDescription adGameDescs[] = { "CD", AD_ENTRY1("FATE.PAK", "39772ff82e42c4c520050518deb82e64"), Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE | ADGF_CD, GUIO5(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -648,7 +648,7 @@ const KYRAGameDescription adGameDescs[] = { "CD", AD_ENTRY1("FATE.PAK", "39772ff82e42c4c520050518deb82e64"), Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE | ADGF_CD, GUIO5(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -662,7 +662,7 @@ const KYRAGameDescription adGameDescs[] = { "CD", AD_ENTRY1("FERRY.CPS", "763e2103858347d4ffffc329910d323f"), Common::RU_RUS, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE | ADGF_CD, GUIO5(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -675,7 +675,7 @@ const KYRAGameDescription adGameDescs[] = { "CD/Demo", AD_ENTRY1("THANKS.CPS", "b1a78d990b120bb2234b7094f74e30a5"), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE | ADGF_CD | ADGF_DEMO, GUIO5(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -688,7 +688,7 @@ const KYRAGameDescription adGameDescs[] = { "CD/Demo", AD_ENTRY1("THANKS.CPS", "b1a78d990b120bb2234b7094f74e30a5"), Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE | ADGF_CD | ADGF_DEMO, GUIO5(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -701,7 +701,7 @@ const KYRAGameDescription adGameDescs[] = { "CD/Demo", AD_ENTRY1("THANKS.CPS", "b1a78d990b120bb2234b7094f74e30a5"), Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE | ADGF_CD | ADGF_DEMO, GUIO5(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -714,7 +714,7 @@ const KYRAGameDescription adGameDescs[] = { "Demo", AD_ENTRY1("VOC.PAK", "ecb3561b63749158172bf21528cf5f45"), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DEMO, GUIO5(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -783,7 +783,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE, GUIO5(GUIO_NOMIDI, GUIO_RENDERVGA, GAMEOPTION_KYRA3_AUDIENCE, GAMEOPTION_KYRA3_SKIP, GAMEOPTION_KYRA3_HELIUM) }, @@ -799,7 +799,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE, GUIO5(GUIO_NOMIDI, GUIO_RENDERVGA, GAMEOPTION_KYRA3_AUDIENCE, GAMEOPTION_KYRA3_SKIP, GAMEOPTION_KYRA3_HELIUM) }, @@ -815,7 +815,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE, GUIO5(GUIO_NOMIDI, GUIO_RENDERVGA, GAMEOPTION_KYRA3_AUDIENCE, GAMEOPTION_KYRA3_SKIP, GAMEOPTION_KYRA3_HELIUM) }, @@ -833,7 +833,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE, GUIO5(GUIO_NOMIDI, GUIO_RENDERVGA, GAMEOPTION_KYRA3_AUDIENCE, GAMEOPTION_KYRA3_SKIP, GAMEOPTION_KYRA3_HELIUM) }, @@ -849,7 +849,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE, GUIO5(GUIO_NOMIDI, GUIO_RENDERVGA, GAMEOPTION_KYRA3_AUDIENCE, GAMEOPTION_KYRA3_SKIP, GAMEOPTION_KYRA3_HELIUM) }, @@ -865,7 +865,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE, GUIO5(GUIO_NOMIDI, GUIO_RENDERVGA, GAMEOPTION_KYRA3_AUDIENCE, GAMEOPTION_KYRA3_SKIP, GAMEOPTION_KYRA3_HELIUM) }, @@ -933,7 +933,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::ES_ESP, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE, GUIO5(GUIO_NOMIDI, GUIO_RENDERVGA, GAMEOPTION_KYRA3_AUDIENCE, GAMEOPTION_KYRA3_SKIP, GAMEOPTION_KYRA3_HELIUM) }, @@ -949,7 +949,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE, GUIO5(GUIO_NOMIDI, GUIO_RENDERVGA, GAMEOPTION_KYRA3_AUDIENCE, GAMEOPTION_KYRA3_SKIP, GAMEOPTION_KYRA3_HELIUM) }, @@ -965,7 +965,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE, GUIO5(GUIO_NOMIDI, GUIO_RENDERVGA, GAMEOPTION_KYRA3_AUDIENCE, GAMEOPTION_KYRA3_SKIP, GAMEOPTION_KYRA3_HELIUM) }, @@ -983,7 +983,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE, GUIO5(GUIO_NOMIDI, GUIO_RENDERVGA, GAMEOPTION_KYRA3_AUDIENCE, GAMEOPTION_KYRA3_SKIP, GAMEOPTION_KYRA3_HELIUM) }, @@ -999,7 +999,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE, GUIO5(GUIO_NOMIDI, GUIO_RENDERVGA, GAMEOPTION_KYRA3_AUDIENCE, GAMEOPTION_KYRA3_SKIP, GAMEOPTION_KYRA3_HELIUM) }, @@ -1015,7 +1015,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::IT_ITA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE, GUIO5(GUIO_NOMIDI, GUIO_RENDERVGA, GAMEOPTION_KYRA3_AUDIENCE, GAMEOPTION_KYRA3_SKIP, GAMEOPTION_KYRA3_HELIUM) }, @@ -1034,7 +1034,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE | ADGF_CD, GUIO7(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GAMEOPTION_LOL_SCROLLING, GAMEOPTION_LOL_CURSORS) }, @@ -1051,7 +1051,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE | ADGF_CD, GUIO7(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GAMEOPTION_LOL_SCROLLING, GAMEOPTION_LOL_CURSORS) }, @@ -1068,7 +1068,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE | ADGF_CD, GUIO7(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GAMEOPTION_LOL_SCROLLING, GAMEOPTION_LOL_CURSORS) }, @@ -1085,7 +1085,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE | ADGF_CD, GUIO7(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GAMEOPTION_LOL_SCROLLING, GAMEOPTION_LOL_CURSORS) }, @@ -1102,7 +1102,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE | ADGF_CD, GUIO7(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GAMEOPTION_LOL_SCROLLING, GAMEOPTION_LOL_CURSORS) }, @@ -1119,7 +1119,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE | ADGF_CD, GUIO7(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GAMEOPTION_LOL_SCROLLING, GAMEOPTION_LOL_CURSORS) }, @@ -1137,7 +1137,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE | ADGF_CD, GUIO7(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GAMEOPTION_LOL_SCROLLING, GAMEOPTION_LOL_CURSORS) }, @@ -1155,7 +1155,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE | ADGF_CD, GUIO7(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GAMEOPTION_LOL_SCROLLING, GAMEOPTION_LOL_CURSORS) }, @@ -1172,7 +1172,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::RU_RUS, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE | ADGF_CD, GUIO7(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GAMEOPTION_LOL_SCROLLING, GAMEOPTION_LOL_CURSORS) }, @@ -1190,7 +1190,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::IT_ITA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE | ADGF_CD, GUIO7(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GAMEOPTION_LOL_SCROLLING, GAMEOPTION_LOL_CURSORS) }, @@ -1207,7 +1207,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE | ADGF_CD, GUIO7(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GAMEOPTION_LOL_SCROLLING, GAMEOPTION_LOL_CURSORS) }, @@ -1224,7 +1224,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE | ADGF_CD, GUIO7(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GAMEOPTION_LOL_SCROLLING, GAMEOPTION_LOL_CURSORS) }, @@ -1241,7 +1241,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::IT_ITA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE | ADGF_CD, GUIO7(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GAMEOPTION_LOL_SCROLLING, GAMEOPTION_LOL_CURSORS) }, @@ -1258,7 +1258,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE | ADGF_CD, GUIO7(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GAMEOPTION_LOL_SCROLLING, GAMEOPTION_LOL_CURSORS) }, @@ -1275,7 +1275,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE | ADGF_CD, GUIO7(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GAMEOPTION_LOL_SCROLLING, GAMEOPTION_LOL_CURSORS) }, @@ -1291,7 +1291,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO8(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GAMEOPTION_LOL_SCROLLING, GAMEOPTION_LOL_CURSORS) }, @@ -1307,7 +1307,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO8(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GAMEOPTION_LOL_SCROLLING, GAMEOPTION_LOL_CURSORS) }, @@ -1323,7 +1323,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO8(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GAMEOPTION_LOL_SCROLLING, GAMEOPTION_LOL_CURSORS) }, @@ -1339,7 +1339,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO8(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GAMEOPTION_LOL_SCROLLING, GAMEOPTION_LOL_CURSORS) }, @@ -1356,7 +1356,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO8(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GAMEOPTION_LOL_SCROLLING, GAMEOPTION_LOL_CURSORS) }, @@ -1373,7 +1373,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO8(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GAMEOPTION_LOL_SCROLLING, GAMEOPTION_LOL_CURSORS) }, @@ -1390,7 +1390,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO8(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GAMEOPTION_LOL_SCROLLING, GAMEOPTION_LOL_CURSORS) }, @@ -1407,7 +1407,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO8(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GAMEOPTION_LOL_SCROLLING, GAMEOPTION_LOL_CURSORS) }, @@ -1424,7 +1424,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO8(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GAMEOPTION_LOL_SCROLLING, GAMEOPTION_LOL_CURSORS) }, @@ -1441,7 +1441,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO8(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GAMEOPTION_LOL_SCROLLING, GAMEOPTION_LOL_CURSORS) }, @@ -1459,7 +1459,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::RU_RUS, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO8(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GAMEOPTION_LOL_SCROLLING, GAMEOPTION_LOL_CURSORS) }, @@ -1510,7 +1510,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DEMO, GUIO5(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -1526,7 +1526,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DEMO, GUIO5(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_MIDIPCSPK, GUIO_RENDERVGA) }, @@ -1544,7 +1544,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_TESTING, GUIO7(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GUIO_RENDEREGA, GUIO_RENDERCGA, GAMEOPTION_EOB_HPGRAPHS) }, @@ -1560,7 +1560,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_TESTING, GUIO7(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GUIO_RENDEREGA, GUIO_RENDERCGA, GAMEOPTION_EOB_HPGRAPHS) }, @@ -1576,7 +1576,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_TESTING, GUIO6(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GUIO_RENDEREGA, GAMEOPTION_EOB_HPGRAPHS) }, @@ -1592,7 +1592,7 @@ const KYRAGameDescription adGameDescs[] = { { 0, 0, 0, 0 } }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_TESTING, GUIO6(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GUIO_RENDEREGA, GAMEOPTION_EOB_HPGRAPHS) }, diff --git a/engines/kyra/eob.cpp b/engines/kyra/eob.cpp index 1fb4d0a790..405ea2129a 100644 --- a/engines/kyra/eob.cpp +++ b/engines/kyra/eob.cpp @@ -178,13 +178,14 @@ void EoBEngine::runNpcDialogue(int npcIndex) { case 1: if (!checkScriptFlags(0x10000)) { if (checkScriptFlags(0x8000)) { - a = 1; + a = 13; } else { setScriptFlags(0x8000); r = DLG2(3, 3); + a = 4; } if (!r) - r = DLG2(a ? 13 : 4, 4); + r = DLG2(a, 4); if (!r) { for (a = 0; a < 6; a++) @@ -214,8 +215,8 @@ void EoBEngine::runNpcDialogue(int npcIndex) { if (!checkScriptFlags(0x100000)) { if (deletePartyItems(6, -1)) { - //_npcSequenceSub = 0; - //drawNpcScene(npcIndex); + _npcSequenceSub = 0; + drawNpcScene(npcIndex); TXT(28); createItemOnCurrentBlock(32); setScriptFlags(0x100000); @@ -338,6 +339,14 @@ void EoBEngine::replaceMonster(int unit, uint16 block, int pos, int dir, int typ } } +bool EoBEngine::killMonsterExtra(EoBMonsterInPlay *m) { + if (m->type == 21) { + _playFinale = true; + _runFlag = false; + } + return true; +} + void EoBEngine::updateScriptTimersExtra() { int cnt = 0; for (int i = 1; i < 30; i++) { diff --git a/engines/kyra/eob.h b/engines/kyra/eob.h index bf5440b942..b423b0da9d 100644 --- a/engines/kyra/eob.h +++ b/engines/kyra/eob.h @@ -74,6 +74,7 @@ private: // Monsters void replaceMonster(int unit, uint16 block, int d, int dir, int type, int shpIndex, int mode, int h2, int randItem, int fixedItem); + bool killMonsterExtra(EoBMonsterInPlay *m); void updateScriptTimersExtra(); // Level diff --git a/engines/kyra/eobcommon.h b/engines/kyra/eobcommon.h index 1a74321364..6421159dbe 100644 --- a/engines/kyra/eobcommon.h +++ b/engines/kyra/eobcommon.h @@ -487,7 +487,7 @@ protected: void placeMonster(EoBMonsterInPlay *m, uint16 block, int dir); virtual void replaceMonster(int b, uint16 block, int pos, int dir, int type, int shpIndex, int mode, int h2, int randItem, int fixedItem) = 0; void killMonster(EoBMonsterInPlay *m, bool giveExperience); - virtual bool killMonsterExtra(EoBMonsterInPlay *m); + virtual bool killMonsterExtra(EoBMonsterInPlay *m) = 0; int countSpecificMonsters(int type); void updateAttackingMonsterFlags(); diff --git a/engines/kyra/gui_lol.cpp b/engines/kyra/gui_lol.cpp index b73eddbaf3..8808c313fc 100644 --- a/engines/kyra/gui_lol.cpp +++ b/engines/kyra/gui_lol.cpp @@ -373,8 +373,8 @@ void LoLEngine::gui_drawCharPortraitWithStats(int charNum) { } else { gui_drawLiveMagicBar(33, 32, _characters[charNum].magicPointsCur, 0, _characters[charNum].magicPointsMax, 5, 32, 162, 1, 0); gui_drawLiveMagicBar(39, 32, _characters[charNum].hitPointsCur, 0, _characters[charNum].hitPointsMax, 5, 32, 154, 1, 1); - _screen->printText((_flags.platform == Common::kPlatformPC && !_flags.isTalkie) ? "M" : getLangString(0x4253), 33, 1, 160, 0); - _screen->printText((_flags.platform == Common::kPlatformPC && !_flags.isTalkie) ? "H" : getLangString(0x4254), 39, 1, 152, 0); + _screen->printText((_flags.platform == Common::kPlatformDOS && !_flags.isTalkie) ? "M" : getLangString(0x4253), 33, 1, 160, 0); + _screen->printText((_flags.platform == Common::kPlatformDOS && !_flags.isTalkie) ? "H" : getLangString(0x4254), 39, 1, 152, 0); } int spellLevels = 0; diff --git a/engines/kyra/kyra_hof.cpp b/engines/kyra/kyra_hof.cpp index b180285ffc..ce9b530dbe 100644 --- a/engines/kyra/kyra_hof.cpp +++ b/engines/kyra/kyra_hof.cpp @@ -244,7 +244,7 @@ Common::Error KyraEngine_HoF::go() { // load just the pak files needed for ingame _staticres->loadStaticResourceFile(); - if (_flags.platform == Common::kPlatformPC && _flags.isTalkie) { + if (_flags.platform == Common::kPlatformDOS && _flags.isTalkie) { if (!_res->loadFileList("FILEDATA.FDT")) error("couldn't load 'FILEDATA.FDT'"); } else { @@ -990,7 +990,7 @@ void KyraEngine_HoF::loadNPCScript() { char filename[] = "_NPC.EMC"; - if (_flags.platform != Common::kPlatformPC || _flags.isTalkie) { + if (_flags.platform != Common::kPlatformDOS || _flags.isTalkie) { switch (_lang) { case 0: filename[5] = 'E'; @@ -1449,7 +1449,7 @@ void KyraEngine_HoF::snd_playSoundEffect(int track, int volume) { int16 vocIndex = (int16)READ_LE_UINT16(&_ingameSoundIndex[track * 2]); if (vocIndex != -1) { _sound->voicePlay(_ingameSoundList[vocIndex], 0, 255, 255, true); - } else if (_flags.platform == Common::kPlatformPC) { + } else if (_flags.platform == Common::kPlatformDOS) { if (_sound->getSfxType() == Sound::kMidiMT32) track = track < _mt32SfxMapSize ? _mt32SfxMap[track] - 1 : -1; else if (_sound->getSfxType() == Sound::kMidiGM) diff --git a/engines/kyra/lol.cpp b/engines/kyra/lol.cpp index 3af65d9b7a..3695041b83 100644 --- a/engines/kyra/lol.cpp +++ b/engines/kyra/lol.cpp @@ -535,7 +535,7 @@ Common::Error LoLEngine::go() { _sound->loadSoundFile("sound.dat"); _sound->selectAudioResourceSet(kMusicIngame); - if (_flags.platform != Common::kPlatformPC) + if (_flags.platform != Common::kPlatformDOS) _sound->loadSoundFile(0); _tim = new TIMInterpreter_LoL(this, _screen, _system); diff --git a/engines/kyra/saveload_eob.cpp b/engines/kyra/saveload_eob.cpp index 1e5b40af83..aa223414bc 100644 --- a/engines/kyra/saveload_eob.cpp +++ b/engines/kyra/saveload_eob.cpp @@ -768,6 +768,7 @@ Common::String EoBCoreEngine::readOriginalSaveFile(Common::String &file) { l->flags = new uint16[1024]; memset(l->flags, 0, 1024 * sizeof(uint16)); EoBMonsterInPlay *lm = new EoBMonsterInPlay[30]; + memset(lm, 0, 30 * sizeof(EoBMonsterInPlay)); l->monsters = lm; EoBFlyingObject *lf = new EoBFlyingObject[_numFlyingObjects]; memset(lf, 0, _numFlyingObjects * sizeof(EoBFlyingObject)); @@ -826,7 +827,7 @@ Common::String EoBCoreEngine::readOriginalSaveFile(Common::String &file) { m->sub = in.readByte(); } - _levelBlockProperties[m->block].flags++; + l->flags[m->block]++; } if (_flags.gameID == GI_EOB1) diff --git a/engines/kyra/scene_eob.cpp b/engines/kyra/scene_eob.cpp index 45de232cb6..cfac5db8b3 100644 --- a/engines/kyra/scene_eob.cpp +++ b/engines/kyra/scene_eob.cpp @@ -86,6 +86,10 @@ void EoBCoreEngine::loadLevel(int level, int sub) { pos += 2; } + // WORKAROUND for bug #3596547 (EOB1: Door Buttons Don't Work) + if (_flags.gameID == GI_EOB1 && level == 7 && _levelBlockProperties[0x035C].assignedObjects == 0x0E89) + _levelBlockProperties[0x035C].assignedObjects = 0x0E8D; + loadVcnData(gfxFile.c_str(), (_flags.gameID == GI_EOB1) ? _cgaMappingLevel[_cgaLevelMappingIndex[level - 1]] : 0); _screen->loadEoBBitmap("INVENT", _cgaMappingInv, 5, 3, 2); delayUntil(end); diff --git a/engines/kyra/scene_hof.cpp b/engines/kyra/scene_hof.cpp index f6cd77ca89..62690c4766 100644 --- a/engines/kyra/scene_hof.cpp +++ b/engines/kyra/scene_hof.cpp @@ -437,7 +437,7 @@ void KyraEngine_HoF::startSceneScript(int unk1) { strcpy(filename, _sceneList[sceneId].filename1); strcat(filename, "."); - strcat(filename, _scriptLangExt[(_flags.platform == Common::kPlatformPC && !_flags.isTalkie) ? 0 : _lang]); + strcat(filename, _scriptLangExt[(_flags.platform == Common::kPlatformDOS && !_flags.isTalkie) ? 0 : _lang]); _res->exists(filename, true); _emc->load(filename, &_sceneScriptData, &_opcodes); diff --git a/engines/kyra/scene_rpg.cpp b/engines/kyra/scene_rpg.cpp index 6d724efed0..927d891a5f 100644 --- a/engines/kyra/scene_rpg.cpp +++ b/engines/kyra/scene_rpg.cpp @@ -563,9 +563,9 @@ void KyraRpgEngine::openCloseDoor(int block, int openClose) { int c = (_wllWallFlags[_levelBlockProperties[block].walls[0]] & 8) ? 0 : 1; int v = _levelBlockProperties[block].walls[c]; - int flg = (openClose == 1) ? 0x10 : (openClose == -1 ? 0x20 : 0); + int flg = (_flags.gameID == GI_EOB1) ? 1 : ((openClose == 1) ? 0x10 : (openClose == -1 ? 0x20 : 0)); - if (_wllWallFlags[v] & flg) + if ((_flags.gameID == GI_EOB1 && openClose == -1 && !(_wllWallFlags[v] & flg)) || (!(_flags.gameID == GI_EOB1 && openClose == -1) && (_wllWallFlags[v] & flg))) return; for (int i = 0; i < 3; i++) { diff --git a/engines/kyra/script_eob.cpp b/engines/kyra/script_eob.cpp index de4d01b254..4a6a498173 100644 --- a/engines/kyra/script_eob.cpp +++ b/engines/kyra/script_eob.cpp @@ -216,21 +216,25 @@ bool EoBInfProcessor::preventRest() const { void EoBInfProcessor::loadState(Common::SeekableSubReadStreamEndian &in, bool origFile) { _preventRest = (_vm->game() == GI_EOB1 && origFile) ? 0 : in.readByte(); - int numFlags = (_vm->game() == GI_EOB1 && origFile) ? 13 : 18; + int numFlags = (_vm->game() == GI_EOB1 && origFile) ? 12 : 18; for (int i = 0; i < numFlags; i++) _flagTable[i] = in.readUint32(); + if (_vm->game() == GI_EOB1 && origFile) + setFlags(in.readUint32()); } void EoBInfProcessor::saveState(Common::OutSaveFile *out, bool origFile) { if (_vm->game() == GI_EOB2 || !origFile) out->writeByte(_preventRest); - int numFlags = (_vm->game() == GI_EOB1 && origFile) ? 13 : 18; + int numFlags = (_vm->game() == GI_EOB1 && origFile) ? 12 : 18; for (int i = 0; i < numFlags; i++) { if (origFile) out->writeUint32LE(_flagTable[i]); else out->writeUint32BE(_flagTable[i]); } + if (_vm->game() == GI_EOB1 && origFile) + out->writeUint32LE(_flagTable[17]); } void EoBInfProcessor::reset() { diff --git a/engines/kyra/script_hof.cpp b/engines/kyra/script_hof.cpp index 5bf8f6e78d..f6fde65109 100644 --- a/engines/kyra/script_hof.cpp +++ b/engines/kyra/script_hof.cpp @@ -362,7 +362,7 @@ int KyraEngine_HoF::o2_addItemToCurScene(EMCState *script) { int KyraEngine_HoF::o2_loadSoundFile(EMCState *script) { debugC(3, kDebugLevelScriptFuncs, "KyraEngine_HoF::o2_loadSoundFile(%p) (%d)", (const void *)script, stackPos(0)); - if (_flags.platform == Common::kPlatformPC) + if (_flags.platform == Common::kPlatformDOS) snd_loadSoundFile(stackPos(0)); return 0; } diff --git a/engines/kyra/sequences_hof.cpp b/engines/kyra/sequences_hof.cpp index 306f504b9e..9fcce4eb55 100644 --- a/engines/kyra/sequences_hof.cpp +++ b/engines/kyra/sequences_hof.cpp @@ -1750,7 +1750,7 @@ bool SeqPlayer_HOF::countDownRunning() { #define CASE_ALT(dosCase, towns98Case)\ case dosCase:\ case towns98Case:\ - if (!((_callbackCurrentFrame == towns98Case && (_vm->gameFlags().platform == Common::kPlatformFMTowns || _vm->gameFlags().platform == Common::kPlatformPC98)) || (_callbackCurrentFrame == dosCase && _vm->gameFlags().platform == Common::kPlatformPC)))\ + if (!((_callbackCurrentFrame == towns98Case && (_vm->gameFlags().platform == Common::kPlatformFMTowns || _vm->gameFlags().platform == Common::kPlatformPC98)) || (_callbackCurrentFrame == dosCase && _vm->gameFlags().platform == Common::kPlatformDOS)))\ break; int SeqPlayer_HOF::cbHOF_westwood(WSAMovie_v2 *wsaObj, int x, int y, int frm) { @@ -1774,7 +1774,7 @@ int SeqPlayer_HOF::cbHOF_title(WSAMovie_v2 *wsaObj, int x, int y, int frm) { _result = _menu->handle(11) + 1; _updateAnimations = false; - if (_result == 1) { + if (_result == 1 || _result == 3) { _curScene = _lastScene; _preventLooping = true; } diff --git a/engines/kyra/sequences_lok.cpp b/engines/kyra/sequences_lok.cpp index 994bd2ba9b..2a2f9a5493 100644 --- a/engines/kyra/sequences_lok.cpp +++ b/engines/kyra/sequences_lok.cpp @@ -250,7 +250,7 @@ bool KyraEngine_LoK::seq_introStory() { if (!textEnabled() && speechEnabled() && _flags.lang != Common::IT_ITA) return false; - if (((_flags.lang == Common::EN_ANY || _flags.lang == Common::RU_RUS) && !_flags.isTalkie && _flags.platform == Common::kPlatformPC) || _flags.platform == Common::kPlatformAmiga) + if (((_flags.lang == Common::EN_ANY || _flags.lang == Common::RU_RUS) && !_flags.isTalkie && _flags.platform == Common::kPlatformDOS) || _flags.platform == Common::kPlatformAmiga) _screen->loadBitmap("TEXT.CPS", 3, 3, &_screen->getPalette(0)); else if (_flags.lang == Common::EN_ANY || _flags.lang == Common::JA_JPN) _screen->loadBitmap("TEXT_ENG.CPS", 3, 3, &_screen->getPalette(0)); diff --git a/engines/kyra/sound.cpp b/engines/kyra/sound.cpp index 32d175bdb0..cb6faf2580 100644 --- a/engines/kyra/sound.cpp +++ b/engines/kyra/sound.cpp @@ -288,7 +288,7 @@ void KyraEngine_v1::snd_playWanderScoreViaMap(int command, int restart) { // XXX //} - if (_flags.platform == Common::kPlatformPC || _flags.platform == Common::kPlatformMacintosh) { + if (_flags.platform == Common::kPlatformDOS || _flags.platform == Common::kPlatformMacintosh) { assert(command*2+1 < _trackMapSize); if (_curMusicTheme != _trackMap[command*2]) { if (_trackMap[command*2] != -1 && _trackMap[command*2] != -2) diff --git a/engines/kyra/sound_lol.cpp b/engines/kyra/sound_lol.cpp index 48230d025c..7ac33967dd 100644 --- a/engines/kyra/sound_lol.cpp +++ b/engines/kyra/sound_lol.cpp @@ -189,7 +189,7 @@ void LoLEngine::snd_playSoundEffect(int track, int volume) { if (hasVocFile) { if (_sound->isVoicePresent(_ingameSoundList[vocIndex])) _sound->voicePlay(_ingameSoundList[vocIndex], 0, volume, priority, true); - } else if (_flags.platform == Common::kPlatformPC) { + } else if (_flags.platform == Common::kPlatformDOS) { if (_sound->getSfxType() == Sound::kMidiMT32) track = (track < _ingameMT32SoundIndexSize) ? (_ingameMT32SoundIndex[track] - 1) : -1; else if (_sound->getSfxType() == Sound::kMidiGM) @@ -247,7 +247,7 @@ void LoLEngine::snd_playQueuedEffects() { void LoLEngine::snd_loadSoundFile(int track) { if (_sound->musicEnabled()) { - if (_flags.platform == Common::kPlatformPC) { + if (_flags.platform == Common::kPlatformDOS) { int t = (track - 250) * 3; if (_curMusicFileIndex != _musicTrackMap[t] || _curMusicFileExt != (char)_musicTrackMap[t + 1]) { snd_stopMusic(); @@ -269,7 +269,7 @@ int LoLEngine::snd_playTrack(int track) { _lastMusicTrack = track; if (_sound->musicEnabled()) { - if (_flags.platform == Common::kPlatformPC) { + if (_flags.platform == Common::kPlatformDOS) { snd_loadSoundFile(track); int t = (track - 250) * 3; _sound->playTrack(_musicTrackMap[t + 2]); diff --git a/engines/kyra/sound_midi.cpp b/engines/kyra/sound_midi.cpp index b93b42fa9c..fc6e92abd9 100644 --- a/engines/kyra/sound_midi.cpp +++ b/engines/kyra/sound_midi.cpp @@ -323,7 +323,7 @@ void MidiOutput::setSourceVolume(int source, int volume, bool apply) { for (int i = 0; i < 16; ++i) { // Controller 0 in the state table should always be '7' aka // volume control - byte realVol = (_channels[i].controllers[0].value * volume) >> 8; + byte realVol = (_sources[source].controllers[i][0].value * volume) >> 8; sendIntern(0xB0, i, 0x07, realVol); } } diff --git a/engines/kyra/sprites_eob.cpp b/engines/kyra/sprites_eob.cpp index 1d4c143185..b96f2eca08 100644 --- a/engines/kyra/sprites_eob.cpp +++ b/engines/kyra/sprites_eob.cpp @@ -213,20 +213,11 @@ void EoBCoreEngine::killMonster(EoBMonsterInPlay *m, bool giveExperience) { if (killMonsterExtra(m)) { placeMonster(m, 0, -1); - if ((_flags.gameID == GI_EOB1) && (m->type == 21)) { - _playFinale = true; - _runFlag = false; - } - if (m->mode == 8) updateAttackingMonsterFlags(); } } -bool EoBCoreEngine::killMonsterExtra(EoBMonsterInPlay *) { - return true; -} - int EoBCoreEngine::countSpecificMonsters(int type) { int res = 0; for (int i = 0; i < 30; i++) { diff --git a/engines/kyra/staticres.cpp b/engines/kyra/staticres.cpp index bac31f0a3e..c52b0a04ad 100644 --- a/engines/kyra/staticres.cpp +++ b/engines/kyra/staticres.cpp @@ -102,7 +102,7 @@ byte getLanguageID(const GameFlags &flags) { } const IndexTable iPlatformTable[] = { - { Common::kPlatformPC, 0 }, + { Common::kPlatformDOS, 0 }, { Common::kPlatformAmiga, 1 }, { Common::kPlatformFMTowns, 2 }, { Common::kPlatformPC98, 3 }, @@ -818,12 +818,12 @@ void KyraEngine_LoK::initStaticResource() { for (int i = 0; i < soundFilesSize; i++) soundFiles[i] = (i < size1) ? soundfiles1[i] : soundfiles2[i - size1]; } - const char *const *soundFilesIntro = _staticres->loadStrings(k1AudioTracksIntro, temp); + const char *const *soundFilesIntro = _staticres->loadStrings(k1AudioTracksIntro, soundFilesIntroSize); const int32 *cdaTable = (const int32 *)_staticres->loadRawData(k1TownsCDATable, cdaTableSize); // FIXME: It seems Kyra1 MAC CD includes AdLib and MIDI music and sfx, thus we enable // support for those for now. (Based on patch #2767489 "Support for Mac Kyrandia 1 CD" by satz). - if (_flags.platform == Common::kPlatformPC || _flags.platform == Common::kPlatformMacintosh) { + if (_flags.platform == Common::kPlatformDOS || _flags.platform == Common::kPlatformMacintosh) { SoundResourceInfo_PC resInfoIntro(soundFilesIntro, soundFilesIntroSize); SoundResourceInfo_PC resInfoIngame(soundFiles, soundFilesSize); _sound->initAudioResourceInfo(kMusicIntro, &resInfoIntro); @@ -956,7 +956,7 @@ void KyraEngine_LoK::loadButtonShapes() { void KyraEngine_LoK::loadMainScreen(int page) { _screen->clearPage(page); - if (((_flags.lang == Common::EN_ANY || _flags.lang == Common::RU_RUS) && !_flags.isTalkie && _flags.platform == Common::kPlatformPC) || _flags.platform == Common::kPlatformAmiga) + if (((_flags.lang == Common::EN_ANY || _flags.lang == Common::RU_RUS) && !_flags.isTalkie && _flags.platform == Common::kPlatformDOS) || _flags.platform == Common::kPlatformAmiga) _screen->loadBitmap("MAIN15.CPS", page, page, &_screen->getPalette(0)); else if (_flags.lang == Common::EN_ANY || _flags.lang == Common::JA_JPN || (_flags.isTalkie && _flags.lang == Common::IT_ITA)) _screen->loadBitmap("MAIN_ENG.CPS", page, page, 0); @@ -997,7 +997,7 @@ void KyraEngine_HoF::initStaticResource() { _itemAnimDefinition = _staticres->loadItemAnimDefinition(k2IngameShapeAnimData, _itemAnimDefinitionSize); // assign music data - if (_flags.platform == Common::kPlatformPC) { + if (_flags.platform == Common::kPlatformDOS) { SoundResourceInfo_PC resInfoIntro(_musicFileListIntro, _musicFileListIntroSize); SoundResourceInfo_PC resInfoIngame(_musicFileListIngame, _musicFileListIngameSize); SoundResourceInfo_PC resInfoFinale(_musicFileListFinale, _musicFileListFinaleSize); diff --git a/engines/kyra/staticres_lol.cpp b/engines/kyra/staticres_lol.cpp index a1c5ff340c..c2cdcf9f51 100644 --- a/engines/kyra/staticres_lol.cpp +++ b/engines/kyra/staticres_lol.cpp @@ -215,7 +215,7 @@ void StaticResource::freeButtonDefs(void *&ptr, int &size) { void LoLEngine::initStaticResource() { // assign music resource data. - if (_flags.platform == Common::kPlatformPC) { + if (_flags.platform == Common::kPlatformDOS) { if (_flags.isDemo) { static const char *const file[] = { "LOREDEMO" }; SoundResourceInfo_PC resInfoDemo(file, ARRAYSIZE(file)); diff --git a/engines/kyra/text_hof.cpp b/engines/kyra/text_hof.cpp index 7fa823da0f..f1933e9623 100644 --- a/engines/kyra/text_hof.cpp +++ b/engines/kyra/text_hof.cpp @@ -430,7 +430,7 @@ void KyraEngine_HoF::updateDlgBuffer() { Common::String filename = Common::String::format("CH%.02d-S%.02d.DL", _currentChapter, _npcTalkDlgIndex); const char *suffix = _flags.isTalkie ? suffixTalkie : suffixTowns; - if (_flags.platform != Common::kPlatformPC || _flags.isTalkie) + if (_flags.platform != Common::kPlatformDOS || _flags.isTalkie) filename += suffix[_lang]; else filename += 'G'; diff --git a/engines/lastexpress/entities/august.cpp b/engines/lastexpress/entities/august.cpp index dbae7bad20..b0bc0732d4 100644 --- a/engines/lastexpress/entities/august.cpp +++ b/engines/lastexpress/entities/august.cpp @@ -3248,8 +3248,9 @@ IMPLEMENT_FUNCTION(63, August, function63) break; case kAction1: - if (getEntities()->isInSalon(kEntityAlexei)) + if (getEntities()->isInSalon(kEntityAlexei)) { RESET_ENTITY_STATE(kEntityAlexei, Alexei, setup_function44); + } getData()->inventoryItem = kItemNone; diff --git a/engines/lastexpress/entities/kahina.cpp b/engines/lastexpress/entities/kahina.cpp index 7860836a26..467c8d8b3c 100644 --- a/engines/lastexpress/entities/kahina.cpp +++ b/engines/lastexpress/entities/kahina.cpp @@ -723,8 +723,9 @@ IMPLEMENT_FUNCTION_II(19, Kahina, function19, CarIndex, EntityPosition) break; case kActionNone: - if (getEvent(kEventAnnaBaggageArgument)) + if (getEvent(kEventAnnaBaggageArgument)) { RESET_ENTITY_STATE(kEntityKahina, Kahina, setup_function22); + } if (getEntities()->updateEntity(kEntityKahina, (CarIndex)params->param1, (EntityPosition)params->param2)) callbackAction(); diff --git a/engines/lure/detection.cpp b/engines/lure/detection.cpp index ab7615c265..64d26c4c04 100644 --- a/engines/lure/detection.cpp +++ b/engines/lure/detection.cpp @@ -70,7 +70,7 @@ static const LureGameDescription gameDescriptions[] = { "VGA", AD_ENTRY1("disk1.vga", "b2a8aa6d7865813a17a3c636e063572e"), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -83,7 +83,7 @@ static const LureGameDescription gameDescriptions[] = { "EGA", AD_ENTRY1("disk1.ega", "e9c9fdd8a19f7910d68e53cb84651273"), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -96,7 +96,7 @@ static const LureGameDescription gameDescriptions[] = { "VGA", AD_ENTRY1("disk1.vga", "cf69d5ada228dd74f89046691c16aafb"), Common::IT_ITA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -109,7 +109,7 @@ static const LureGameDescription gameDescriptions[] = { "EGA", AD_ENTRY1("disk1.ega", "b80aced0321f64c58df2c7d3d74dfe79"), Common::IT_ITA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -122,7 +122,7 @@ static const LureGameDescription gameDescriptions[] = { "", AD_ENTRY1("disk1.vga", "7aa19e444dab1ac7194d9f7a40ffe54a"), Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -135,7 +135,7 @@ static const LureGameDescription gameDescriptions[] = { "", AD_ENTRY1("disk1.vga", "894a2c2caeccbad2fc2f4a79a8ee47b0"), Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -148,7 +148,7 @@ static const LureGameDescription gameDescriptions[] = { "", AD_ENTRY1("disk1.vga", "1c94475c1bb7e0e88c1757d3b5377e94"), Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -161,7 +161,7 @@ static const LureGameDescription gameDescriptions[] = { "", AD_ENTRY1("disk1.vga", "1751145b653959f7a64fe1618d6b97ac"), Common::ES_ESP, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, diff --git a/engines/lure/res_struct.cpp b/engines/lure/res_struct.cpp index aee4f11215..15e7c1302d 100644 --- a/engines/lure/res_struct.cpp +++ b/engines/lure/res_struct.cpp @@ -1262,7 +1262,7 @@ bool ValueTableData::isKnownField(uint16 fieldIndex) { } uint16 ValueTableData::getField(uint16 fieldIndex) { - if (fieldIndex > NUM_VALUE_FIELDS) + if (fieldIndex >= NUM_VALUE_FIELDS) error("Invalid field index specified %d", fieldIndex); // if (!isKnownField(fieldIndex)) // warning("Unknown field index %d in GET_FIELD opcode", fieldIndex); @@ -1274,7 +1274,7 @@ uint16 ValueTableData::getField(FieldName fieldName) { } void ValueTableData::setField(uint16 fieldIndex, uint16 value) { - if (fieldIndex > NUM_VALUE_FIELDS) + if (fieldIndex >= NUM_VALUE_FIELDS) error("Invalid field index specified %d", fieldIndex); _fieldList[fieldIndex] = value; // if (!isKnownField(fieldIndex)) diff --git a/engines/lure/scripts.cpp b/engines/lure/scripts.cpp index df2f06df96..8afdaa5ad1 100644 --- a/engines/lure/scripts.cpp +++ b/engines/lure/scripts.cpp @@ -673,7 +673,7 @@ void Script::barmanServe(uint16 v1, uint16 v2, uint16 v3) { // Stores the current number of groats in the general field void Script::getNumGroats(uint16 v1, uint16 v2, uint16 v3) { - ValueTableData fields = Resources::getReference().fieldList(); + ValueTableData &fields = Resources::getReference().fieldList(); fields.setField(GENERAL, fields.numGroats()); } diff --git a/engines/made/console.cpp b/engines/made/console.cpp index c835988788..0076b6a4f9 100644 --- a/engines/made/console.cpp +++ b/engines/made/console.cpp @@ -26,6 +26,7 @@ namespace Made { MadeConsole::MadeConsole(MadeEngine *vm) : GUI::Debugger(), _vm(vm) { + assert(_vm); } MadeConsole::~MadeConsole() { diff --git a/engines/made/database.cpp b/engines/made/database.cpp index 2b87f97392..bf47164e8f 100644 --- a/engines/made/database.cpp +++ b/engines/made/database.cpp @@ -694,7 +694,7 @@ int16 GameDatabaseV3::savegame(const char *filename, const char *description, in warning("Can't create file '%s', game not saved", filename); return 6; } - strncpy(desc, description, 64); + Common::strlcpy(desc, description, 64); out->writeUint32BE(MKTAG('S','G','A','M')); out->writeUint32LE(size); out->writeUint16LE(version); diff --git a/engines/made/detection.cpp b/engines/made/detection.cpp index 2591e92af3..e8b755cb40 100644 --- a/engines/made/detection.cpp +++ b/engines/made/detection.cpp @@ -78,7 +78,7 @@ static const MadeGameDescription gameDescriptions[] = { "V1.0, 9/15/93, installed, CD", AD_ENTRY1("rtzcd.dat", "e95c38ded389e39cfbf87a8cb250b12e"), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -96,7 +96,7 @@ static const MadeGameDescription gameDescriptions[] = { "V1.0, 9/15/93, CD", AD_ENTRY1("rtzcd.red", "cd8b62ece4677c438688c1de3f5379b9"), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -113,7 +113,7 @@ static const MadeGameDescription gameDescriptions[] = { "V1.1, 12/7/93, installed, CD", AD_ENTRY1s("rtzcd.dat", "a1db8c97a78dae10f91d356f16ad07b8", 536064), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -130,7 +130,7 @@ static const MadeGameDescription gameDescriptions[] = { "V1.1, 12/7/93, CD", AD_ENTRY1s("rtzcd.red", "c4e2430e6b6c6ff1562a80fb4a9df24c", 276177), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -148,7 +148,7 @@ static const MadeGameDescription gameDescriptions[] = { "V1.2, 9/29/94, installed, CD", AD_ENTRY1("rtzcd.dat", "9d740378da2d16e83d0d0efff01bf83a"), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -165,7 +165,7 @@ static const MadeGameDescription gameDescriptions[] = { "V1.2, 9/29/94, CD", AD_ENTRY1s("rtzcd.red", "946997d8b0aa6cb4e848bad02a1fc3d2", 276584), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -183,7 +183,7 @@ static const MadeGameDescription gameDescriptions[] = { "V1.2, 9/29/94, installed, CD", AD_ENTRY1s("rtzcd.dat", "9d740378da2d16e83d0d0efff01bf83a", 525824), Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -201,7 +201,7 @@ static const MadeGameDescription gameDescriptions[] = { "V1.2, 4/18/95, CD", AD_ENTRY1s("rtzcd.red", "946997d8b0aa6cb4e848bad02a1fc3d2", 355442), Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -219,7 +219,7 @@ static const MadeGameDescription gameDescriptions[] = { "V1.2, 3/31/95, installed, CD", AD_ENTRY1s("rtzcd.dat", "5b86035aed0277f96e3d173542b5364a", 523776), Common::IT_ITA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -237,7 +237,7 @@ static const MadeGameDescription gameDescriptions[] = { "V1.2, 3/31/95, CD", AD_ENTRY1s("rtzcd.red", "946997d8b0aa6cb4e848bad02a1fc3d2", 354971), Common::IT_ITA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -255,7 +255,7 @@ static const MadeGameDescription gameDescriptions[] = { "V1.2, 5/13/95, installed, CD", AD_ENTRY1s("rtzcd.dat", "bde8251a8e34e87c54e3f93147d56c9e", 523776), Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -273,7 +273,7 @@ static const MadeGameDescription gameDescriptions[] = { "V1.2, 3/31/95, CD", AD_ENTRY1s("rtzcd.red", "946997d8b0aa6cb4e848bad02a1fc3d2", 354614), Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -290,7 +290,7 @@ static const MadeGameDescription gameDescriptions[] = { "Floppy", AD_ENTRY1("rtz.prj", "764d02f52ce1c219f2c0066677fba4ce"), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -307,7 +307,7 @@ static const MadeGameDescription gameDescriptions[] = { "Demo", AD_ENTRY1("demo.dat", "2a6a1354bd5346fad4aee08e5b56caaa"), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DEMO, GUIO0() }, @@ -325,7 +325,7 @@ static const MadeGameDescription gameDescriptions[] = { "", AD_ENTRY1("rtzcd.dat", "c4fccf67ad247f09b94c3c808b138576"), Common::JA_JPN, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -378,7 +378,7 @@ static const MadeGameDescription gameDescriptions[] = { "", AD_ENTRY1("manhole.dat", "cb21e31ed35c963208343bc995225b73"), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO1(GUIO_NOSPEECH) }, @@ -395,7 +395,7 @@ static const MadeGameDescription gameDescriptions[] = { "EGA", AD_ENTRY1("manhole.dat", "2b1658292599a861c4cd3cf6cdb3c581"), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -412,7 +412,7 @@ static const MadeGameDescription gameDescriptions[] = { "", AD_ENTRY1("lgop2.dat", "8137996db200ff67e8f172ff106f2e48"), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -430,7 +430,7 @@ static const MadeGameDescription gameDescriptions[] = { "", AD_ENTRY1s("lgop2.dat", "a0ffea6a3b7e39bd861edd00c397641c", 299466), Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -448,7 +448,7 @@ static const MadeGameDescription gameDescriptions[] = { "", AD_ENTRY1s("lgop2.dat", "f9e974087af7cf4b7ec2d8dc45d01e0c", 295366), Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -466,7 +466,7 @@ static const MadeGameDescription gameDescriptions[] = { "", AD_ENTRY1s("lgop2.dat", "96eb95b4d75b9a3da0b0d67e3b4a787d", 288984), Common::ES_ESP, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -483,7 +483,7 @@ static const MadeGameDescription gameDescriptions[] = { "", AD_ENTRY1("rodneys.dat", "a79887dbaa47689facd7c6f09258ba5a"), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -506,7 +506,7 @@ static MadeGameDescription g_fallbackDesc = { "", AD_ENTRY1(0, 0), // This should always be AD_ENTRY1(0, 0) in the fallback descriptor Common::UNK_LANG, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -560,7 +560,7 @@ bool MadeMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGame const ADGameDescription *MadeMetaEngine::fallbackDetect(const FileMap &allFiles, const Common::FSList &fslist) const { // Set the default values for the fallback descriptor's ADGameDescription part. Made::g_fallbackDesc.desc.language = Common::UNK_LANG; - Made::g_fallbackDesc.desc.platform = Common::kPlatformPC; + Made::g_fallbackDesc.desc.platform = Common::kPlatformDOS; Made::g_fallbackDesc.desc.flags = ADGF_NO_FLAGS; // Set default values for the fallback descriptor's MadeGameDescription part. diff --git a/engines/mohawk/detection_tables.h b/engines/mohawk/detection_tables.h index 87635bfc6a..0d5dc1a405 100644 --- a/engines/mohawk/detection_tables.h +++ b/engines/mohawk/detection_tables.h @@ -1361,6 +1361,23 @@ static const MohawkGameDescription gameDescriptions[] = { "GRANDMA.EXE" }, + // Just Grandma and Me 1.1 Mac + // From eisnerguy1 in bug#3610725 + { + { + "grandma", + "v1.1", + AD_ENTRY1("BookOutline", "76eb265ec5fe42bc5b07f2bb418bd871"), + Common::EN_ANY, + Common::kPlatformMacintosh, + ADGF_NO_FLAGS, + GUIO1(GUIO_NOASPECT) + }, + GType_LIVINGBOOKSV1, + 0, + 0 + }, + // from jjnryan in bug #3389857 { { diff --git a/engines/mohawk/livingbooks.cpp b/engines/mohawk/livingbooks.cpp index 2b0a45d4e6..f80dbfacbd 100644 --- a/engines/mohawk/livingbooks.cpp +++ b/engines/mohawk/livingbooks.cpp @@ -245,6 +245,8 @@ Common::Error MohawkEngine_LivingBooks::run() { case Common::KEYCODE_ESCAPE: if (_curMode == kLBIntroMode) tryLoadPageStart(kLBControlMode, 1); + else + _video->stopVideos(); break; case Common::KEYCODE_LEFT: @@ -587,8 +589,8 @@ void MohawkEngine_LivingBooks::updatePage() { _items.remove_at(i); i--; _orderedItems.remove(delayedEvent.item); - delete delayedEvent.item; _page->itemDestroyed(delayedEvent.item); + delete delayedEvent.item; if (_focus == delayedEvent.item) _focus = NULL; break; @@ -1356,8 +1358,9 @@ void MohawkEngine_LivingBooks::handleNotify(NotifyEvent &event) { if (!loadPage((LBMode)event.newMode, event.newPage, event.newSubpage)) { if (event.newPage != 0 || !loadPage((LBMode)event.newMode, _curPage, event.newSubpage)) if (event.newSubpage != 0 || !loadPage((LBMode)event.newMode, event.newPage, 1)) - error("kLBNotifyChangeMode failed to move to mode %d, page %d.%d", - event.newMode, event.newPage, event.newSubpage); + if (event.newSubpage != 1 || !loadPage((LBMode)event.newMode, event.newPage, 0)) + error("kLBNotifyChangeMode failed to move to mode %d, page %d.%d", + event.newMode, event.newPage, event.newSubpage); } break; case 3: @@ -3775,7 +3778,7 @@ LBMovieItem::~LBMovieItem() { void LBMovieItem::update() { if (_playing) { VideoHandle videoHandle = _vm->_video->findVideoHandle(_resourceId); - if (_vm->_video->endOfVideo(videoHandle)) + if (videoHandle == NULL_VID_HANDLE || _vm->_video->endOfVideo(videoHandle)) done(true); } @@ -3785,6 +3788,7 @@ void LBMovieItem::update() { bool LBMovieItem::togglePlaying(bool playing, bool restart) { if (playing) { if ((_loaded && _enabled && _globalEnabled) || _phase == kLBPhaseNone) { + debug("toggled video for phase %d", _phase); _vm->_video->playMovie(_resourceId, _rect.left, _rect.top); return true; diff --git a/engines/mohawk/livingbooks_code.cpp b/engines/mohawk/livingbooks_code.cpp index bb8f7a0d05..c45efb2c39 100644 --- a/engines/mohawk/livingbooks_code.cpp +++ b/engines/mohawk/livingbooks_code.cpp @@ -519,9 +519,17 @@ void LBCode::parseMain() { *val = _stack.pop(); _stack.push(*val); } else - _stack.push(LBValue()); - } else if (_currToken == kTokenAndEquals) { - debugN(" &= "); + error("assignment failed, no dest"); +// _stack.push(LBValue()); + } else if (_currToken == kTokenPlusEquals || _currToken == kTokenMinusEquals || _currToken == kTokenAndEquals) { + // FIXME: do +=/-= belong here? + byte token = _currToken; + if (_currToken == kTokenPlusEquals) + debugN(" += "); + else if (_currToken == kTokenMinusEquals) + debugN(" -= "); + else if (_currToken == kTokenAndEquals) + debugN(" &= "); nextToken(); parseStatement(); if (!_stack.size()) @@ -532,9 +540,19 @@ void LBCode::parseMain() { else val = &_vm->_variables[varname]; if (val) { - if (val->type != kLBValueString) - error("operator &= used on non-string"); - val->string = val->string + _stack.pop().toString(); + if (token == kTokenAndEquals) { + if (val->type != kLBValueString) + error("operator &= used on non-string"); + val->string = val->string + _stack.pop().toString(); + } else { + // FIXME: non-integers + if (val->type != kLBValueInteger) + error("operator used on non-integer"); + if (token == kTokenPlusEquals) + val->integer = val->integer + _stack.pop().toInt(); + else + val->integer = val->integer - _stack.pop().toInt(); + } _stack.push(*val); } else _stack.push(LBValue()); @@ -581,6 +599,7 @@ void LBCode::parseMain() { debugN("--"); nextToken(); + // FIXME: do we need to handle indexing? if (_currToken != kTokenIdentifier) error("expected identifier"); assert(_currValue.type == kLBValueString); @@ -669,6 +688,24 @@ void LBCode::parseMain() { _stack.push(_stack.pop().isZero() ? 1 : 0); break; + case kTokenEval: + // FIXME: original token? + debugN(".."); + nextToken(); + parseStatement(); + if (!_stack.size()) + error("eval op failed"); + { + // FIXME: XXX + LBValue in = _stack.pop(); + if (in.type != kLBValueString) + error("eval op on non-string"); + Common::String varname = in.string; + LBValue &val = _vm->_variables[varname]; + _stack.push(val); + } + break; + case kTokenGeneralCommand: runGeneralCommand(); break; @@ -692,9 +729,7 @@ void LBCode::parseMain() { assert(val.isNumeric()); // FIXME if (prefix == kTokenMinus) - val.integer--; - else - val.integer++; + val.integer = -val.integer; _stack.push(val); } } @@ -1554,12 +1589,32 @@ uint LBCode::nextFreeString() { error("nextFreeString couldn't find a space"); } +static const char *const functionNameAliases[][2] = { + { "makerect", "getRect" }, + { "makepair", "makePt" }, + { "getframerect", "getFrameBounds" }, + { "dragbegin", "dragBeginFrom" }, + { "x", "xpos" }, + { "y", "ypos" } +}; + /* * Helper function for parseCode: * Given a name, appends the appropriate data to the provided code array and * returns true if it's a function, or false otherwise. */ -bool LBCode::parseCodeSymbol(const Common::String &name, uint &pos, Common::Array<byte> &code) { +bool LBCode::parseCodeSymbol(Common::String name, uint &pos, Common::Array<byte> &code, bool useAllAliases) { + // Check to see if we have one of the older function names + // and remap it to the newer function names + for (uint i = 0; i < ARRAYSIZE(functionNameAliases); i++) { + if (name.equalsIgnoreCase(functionNameAliases[i][0])) { + if (name.size() == 1 && !useAllAliases) + continue; + name = functionNameAliases[i][1]; + break; + } + } + // first, check whether the name matches a known function for (uint i = 0; i < 2; i++) { byte cmdToken; @@ -1770,7 +1825,7 @@ uint LBCode::parseCode(const Common::String &source) { break; tempString += source[pos++]; } - wasFunction = parseCodeSymbol(tempString, pos, code); + wasFunction = parseCodeSymbol(tempString, pos, code, true); if (!wasFunction) error("while parsing script '%s', encountered explicit function call to unknown function '%s'", source.c_str(), tempString.c_str()); @@ -1805,7 +1860,7 @@ uint LBCode::parseCode(const Common::String &source) { } else if (tempString.equalsIgnoreCase("false")) { code.push_back(kTokenFalse); } else { - wasFunction = parseCodeSymbol(tempString, pos, code); + wasFunction = parseCodeSymbol(tempString, pos, code, false); } } else { error("while parsing script '%s', couldn't parse '%c'", source.c_str(), token); diff --git a/engines/mohawk/livingbooks_code.h b/engines/mohawk/livingbooks_code.h index 47dd90f814..c9d9ae06e6 100644 --- a/engines/mohawk/livingbooks_code.h +++ b/engines/mohawk/livingbooks_code.h @@ -188,6 +188,7 @@ enum { kTokenConstEventId = 0x42, kTokenConstScriptOpcode = 0x43, // ?? kTokenConstScriptParam = 0x44, // ?? + kTokenEval = 0x4b, kTokenGeneralCommand = 0x4d, kTokenItemCommand = 0x4e, kTokenNotifyCommand = 0x4f, @@ -242,7 +243,7 @@ protected: void runNotifyCommand(); uint nextFreeString(); - bool parseCodeSymbol(const Common::String &name, uint &pos, Common::Array<byte> &code); + bool parseCodeSymbol(Common::String name, uint &pos, Common::Array<byte> &code, bool useAllAliases); public: void cmdUnimplemented(const Common::Array<LBValue> ¶ms); diff --git a/engines/mohawk/livingbooks_lbx.cpp b/engines/mohawk/livingbooks_lbx.cpp index 9628e06294..2b8b22ec81 100644 --- a/engines/mohawk/livingbooks_lbx.cpp +++ b/engines/mohawk/livingbooks_lbx.cpp @@ -48,8 +48,10 @@ LBXDataFile::~LBXDataFile() { enum { kLBXDataFileOpen = 1, + kLBXDataFileAddSection = 3, kLBXDataFileGetSectionList = 4, kLBXDataFileSetCurSection = 5, + kLBXDataFileSetKey = 7, kLBXDataFileLoadCurSectionVars = 8, kLBXDataFileDeleteCurSection = 10, kLBXDataFileSectionExists = 14 @@ -64,6 +66,14 @@ bool LBXDataFile::call(uint callId, const Common::Array<LBValue> ¶ms, LBValu open(params[0].toString()); return false; + case kLBXDataFileAddSection: + if (params.size() != 1) + error("incorrect number of parameters (%d) to LBXDataFile::addSection", params.size()); + + _dataFile.addSection(params[0].toString()); + _curSection = params[0].toString(); + return false; + case kLBXDataFileGetSectionList: { Common::SharedPtr<LBList> list = Common::SharedPtr<LBList>(new LBList); @@ -81,6 +91,13 @@ bool LBXDataFile::call(uint callId, const Common::Array<LBValue> ¶ms, LBValu _curSection = params[0].toString(); return false; + case kLBXDataFileSetKey: + if (params.size() != 2) + error("incorrect number of parameters (%d) to LBXDataFile::setKey", params.size()); + + _dataFile.setKey(params[0].toString(), _curSection, params[1].toString()); + return false; + case kLBXDataFileLoadCurSectionVars: if (params.size() != 0) error("incorrect number of parameters (%d) to LBXDataFile::loadCurSectionVars", params.size()); diff --git a/engines/mohawk/view.cpp b/engines/mohawk/view.cpp index 36e8f8466e..719c288af5 100644 --- a/engines/mohawk/view.cpp +++ b/engines/mohawk/view.cpp @@ -361,8 +361,8 @@ void View::idleView() { void View::setModule(Module *module) { if (_currentModule) { - module->shutdown(); - delete module; + _currentModule->shutdown(); + delete _currentModule; } _currentModule = NULL; diff --git a/engines/parallaction/balloons.cpp b/engines/parallaction/balloons.cpp index 1ddd401b20..2a7e0ce375 100644 --- a/engines/parallaction/balloons.cpp +++ b/engines/parallaction/balloons.cpp @@ -727,7 +727,7 @@ void BalloonManager_br::cacheAnims() { BalloonManager_br::BalloonManager_br(Parallaction_br *vm, Font *font) : _vm(vm), _numBalloons(0), _leftBalloon(0), _rightBalloon(0), _sw(font), _se(font) { - if (_vm->getPlatform() == Common::kPlatformPC) { + if (_vm->getPlatform() == Common::kPlatformDOS) { _textColors[kSelectedColor] = 12; _textColors[kUnselectedColor] = 0; _textColors[kNormalColor] = 0; diff --git a/engines/parallaction/callables_ns.cpp b/engines/parallaction/callables_ns.cpp index c1720a1a8e..04642aa632 100644 --- a/engines/parallaction/callables_ns.cpp +++ b/engines/parallaction/callables_ns.cpp @@ -439,7 +439,7 @@ void Parallaction_ns::_c_closeMusic(void *) { void Parallaction_ns::_c_startIntro(void *parm) { _rightHandAnim = _location.findAnimation("righthand"); - if (getPlatform() == Common::kPlatformPC) { + if (getPlatform() == Common::kPlatformDOS) { _soundManI->setMusicFile("intro"); _soundManI->playMusic(); } diff --git a/engines/parallaction/detection.cpp b/engines/parallaction/detection.cpp index 43176a0759..fb892c44b2 100644 --- a/engines/parallaction/detection.cpp +++ b/engines/parallaction/detection.cpp @@ -70,7 +70,7 @@ static const PARALLACTIONGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::UNK_LANG, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -153,7 +153,7 @@ static const PARALLACTIONGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::UNK_LANG, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -170,7 +170,7 @@ static const PARALLACTIONGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::UNK_LANG, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DEMO, GUIO1(GUIO_NOSPEECH) }, diff --git a/engines/parallaction/font.cpp b/engines/parallaction/font.cpp index 3b40960381..03b1ced8e1 100644 --- a/engines/parallaction/font.cpp +++ b/engines/parallaction/font.cpp @@ -668,7 +668,7 @@ GfxObj* DosDisk_br::createInventoryObjects(Common::SeekableReadStream &stream) { void Parallaction_ns::initFonts() { - if (getPlatform() == Common::kPlatformPC) { + if (getPlatform() == Common::kPlatformDOS) { _dialogueFont = _disk->loadFont("comic"); _labelFont = _disk->loadFont("topaz"); _menuFont = _disk->loadFont("slide"); @@ -683,7 +683,7 @@ void Parallaction_ns::initFonts() { } void Parallaction_br::initFonts() { - if (getPlatform() == Common::kPlatformPC) { + if (getPlatform() == Common::kPlatformDOS) { _menuFont = _disk->loadFont("russia"); _dialogueFont = _disk->loadFont("comic"); _labelFont = _menuFont; diff --git a/engines/parallaction/gfxbase.cpp b/engines/parallaction/gfxbase.cpp index a9889cc7af..e2d9532c8a 100644 --- a/engines/parallaction/gfxbase.cpp +++ b/engines/parallaction/gfxbase.cpp @@ -31,7 +31,7 @@ namespace Parallaction { GfxObj::GfxObj(uint objType, Frames *frames, const char* name) : - _frames(frames), _keep(true), x(0), y(0), z(0), _prog(0), _flags(0), + _frames(frames), x(0), y(0), z(0), _prog(0), _flags(0), type(objType), frame(0), layer(3), scale(100), _hasMask(false), _hasPath(false) { if (name) { diff --git a/engines/parallaction/graphics.cpp b/engines/parallaction/graphics.cpp index 59cd02e6ef..b8a8ceb61f 100644 --- a/engines/parallaction/graphics.cpp +++ b/engines/parallaction/graphics.cpp @@ -746,7 +746,7 @@ Gfx::Gfx(Parallaction* vm) : _unpackedBitmap = new byte[MAXIMUM_UNPACKED_BITMAP_SIZE]; assert(_unpackedBitmap); - if ((_gameType == GType_BRA) && (_vm->getPlatform() == Common::kPlatformPC)) { + if ((_gameType == GType_BRA) && (_vm->getPlatform() == Common::kPlatformDOS)) { // this loads the backup palette needed by the PC version of BRA (see setBackground()). BackgroundInfo paletteInfo; _disk->loadSlide(paletteInfo, "pointer"); @@ -834,7 +834,7 @@ void Gfx::setBackground(uint type, BackgroundInfo *info) { // The PC version of BRA needs the entries 20-31 of the palette to be constant, but // the background resource files are screwed up. The right colors come from an unused // bitmap (pointer.bmp). Nothing is known about the Amiga version so far. - if ((_gameType == GType_BRA) && (_vm->getPlatform() == Common::kPlatformPC)) { + if ((_gameType == GType_BRA) && (_vm->getPlatform() == Common::kPlatformDOS)) { int r, g, b; for (uint i = 16; i < 32; i++) { _backupPal.getEntry(i, r, g, b); diff --git a/engines/parallaction/graphics.h b/engines/parallaction/graphics.h index e9daabb194..55c1c0c04e 100644 --- a/engines/parallaction/graphics.h +++ b/engines/parallaction/graphics.h @@ -289,8 +289,6 @@ class GfxObj { char *_name; Frames *_frames; - bool _keep; - public: int16 x, y; diff --git a/engines/parallaction/gui_br.cpp b/engines/parallaction/gui_br.cpp index 5bc5acf630..ddbc31d730 100644 --- a/engines/parallaction/gui_br.cpp +++ b/engines/parallaction/gui_br.cpp @@ -120,7 +120,7 @@ class MainMenuInputState_BR : public MenuInputState { memset(data, 0, MENUITEM_WIDTH * MENUITEM_HEIGHT * 2); // build first frame to be displayed when item is not selected - if (_vm->getPlatform() == Common::kPlatformPC) { + if (_vm->getPlatform() == Common::kPlatformDOS) { _vm->_menuFont->setColor(0); } else { _vm->_menuFont->setColor(23); @@ -238,7 +238,7 @@ public: virtual void enter() { _vm->_gfx->clearScreen(); int x = 0, y = 0, i = 0; - if (_vm->getPlatform() == Common::kPlatformPC) { + if (_vm->getPlatform() == Common::kPlatformDOS) { x = 20; y = 50; } diff --git a/engines/parallaction/input.cpp b/engines/parallaction/input.cpp index 484e210893..bf7cdc439d 100644 --- a/engines/parallaction/input.cpp +++ b/engines/parallaction/input.cpp @@ -478,7 +478,7 @@ void Input::initCursors() { break; case GType_BRA: - if (_vm->getPlatform() == Common::kPlatformPC) { + if (_vm->getPlatform() == Common::kPlatformDOS) { _dinoCursor = _vm->_disk->loadPointer("pointer1"); _dougCursor = _vm->_disk->loadPointer("pointer2"); _donnaCursor = _vm->_disk->loadPointer("pointer3"); diff --git a/engines/parallaction/parallaction_br.cpp b/engines/parallaction/parallaction_br.cpp index 07755fac5f..f9df9d85db 100644 --- a/engines/parallaction/parallaction_br.cpp +++ b/engines/parallaction/parallaction_br.cpp @@ -52,7 +52,7 @@ Common::Error Parallaction_br::init() { _screenWidth = 640; _screenHeight = 400; - if (getPlatform() == Common::kPlatformPC) { + if (getPlatform() == Common::kPlatformDOS) { if (getFeatures() & GF_DEMO) { _disk = new DosDemoDisk_br(this); } else { @@ -297,7 +297,7 @@ void Parallaction_br::changeLocation() { // TODO: maybe handle this into Disk delete _objects; - if (getPlatform() == Common::kPlatformPC) { + if (getPlatform() == Common::kPlatformDOS) { _objects = _disk->loadObjects("icone.ico"); } else { _objects = _disk->loadObjects("icons.ico", _part); diff --git a/engines/parallaction/parallaction_ns.cpp b/engines/parallaction/parallaction_ns.cpp index d33be0aa47..49b63dcac3 100644 --- a/engines/parallaction/parallaction_ns.cpp +++ b/engines/parallaction/parallaction_ns.cpp @@ -152,7 +152,7 @@ Common::Error Parallaction_ns::init() { _screenWidth = 320; _screenHeight = 200; - if (getPlatform() == Common::kPlatformPC) { + if (getPlatform() == Common::kPlatformDOS) { _disk = new DosDisk_ns(this); } else { if (getFeatures() & GF_DEMO) { @@ -163,7 +163,7 @@ Common::Error Parallaction_ns::init() { _disk->init(); - if (getPlatform() == Common::kPlatformPC) { + if (getPlatform() == Common::kPlatformDOS) { _soundManI = new DosSoundMan_ns(this); _soundManI->setMusicVolume(ConfMan.getInt("music_volume")); } else { diff --git a/engines/parallaction/staticres.cpp b/engines/parallaction/staticres.cpp index f09b1241bc..32404037f0 100644 --- a/engines/parallaction/staticres.cpp +++ b/engines/parallaction/staticres.cpp @@ -396,7 +396,7 @@ void Parallaction_ns::initResources() { _localFlagNames = new FixedTable(NUM_LOCATIONS, 1); _localFlagNames->addData("visited"); - if (getPlatform() == Common::kPlatformPC) { + if (getPlatform() == Common::kPlatformDOS) { _callables = _dosCallables; } else { _callables = _amigaCallables; @@ -412,7 +412,7 @@ void Parallaction_br::initResources() { _localFlagNames->addData("visited"); _localFlagNames->addData("testtrue"); - if (getPlatform() == Common::kPlatformPC) { + if (getPlatform() == Common::kPlatformDOS) { _callables = _dosCallables; } else { _callables = _amigaCallables; diff --git a/engines/pegasus/neighborhood/caldoria/caldoria.cpp b/engines/pegasus/neighborhood/caldoria/caldoria.cpp index 3d81a813db..9a378a6728 100644 --- a/engines/pegasus/neighborhood/caldoria/caldoria.cpp +++ b/engines/pegasus/neighborhood/caldoria/caldoria.cpp @@ -1641,10 +1641,12 @@ void Caldoria::takeElevator(uint startFloor, uint endFloor) { break; case 2: _croppedMovie.setTime(k1To2Time); + _croppedMovie.redrawMovieWorld(); requestSpotSound(kCaldoriaNoOtherDestinationIn, kCaldoriaNoOtherDestinationOut, kFilterNoInput, kSpotSoundCompletedFlag); break; case 3: _croppedMovie.setTime(k1To3Time); + _croppedMovie.redrawMovieWorld(); requestSpotSound(kCaldoriaNoOtherDestinationIn, kCaldoriaNoOtherDestinationOut, kFilterNoInput, kSpotSoundCompletedFlag); break; case 4: @@ -1671,10 +1673,12 @@ void Caldoria::takeElevator(uint startFloor, uint endFloor) { break; case 2: _croppedMovie.setTime(k4To2Time); + _croppedMovie.redrawMovieWorld(); requestSpotSound(kCaldoriaNoOtherDestinationIn, kCaldoriaNoOtherDestinationOut, kFilterNoInput, kSpotSoundCompletedFlag); break; case 3: _croppedMovie.setTime(k4To3Time); + _croppedMovie.redrawMovieWorld(); requestSpotSound(kCaldoriaNoOtherDestinationIn, kCaldoriaNoOtherDestinationOut, kFilterNoInput, kSpotSoundCompletedFlag); break; case 4: @@ -1698,10 +1702,12 @@ void Caldoria::takeElevator(uint startFloor, uint endFloor) { break; case 2: _croppedMovie.setTime(k5To2Time); + _croppedMovie.redrawMovieWorld(); requestSpotSound(kCaldoriaNoOtherDestinationIn, kCaldoriaNoOtherDestinationOut, kFilterNoInput, kSpotSoundCompletedFlag); break; case 3: _croppedMovie.setTime(k5To3Time); + _croppedMovie.redrawMovieWorld(); requestSpotSound(kCaldoriaNoOtherDestinationIn, kCaldoriaNoOtherDestinationOut, kFilterNoInput, kSpotSoundCompletedFlag); break; case 4: diff --git a/engines/pegasus/neighborhood/mars/mars.cpp b/engines/pegasus/neighborhood/mars/mars.cpp index aa7ccd596c..775221589a 100644 --- a/engines/pegasus/neighborhood/mars/mars.cpp +++ b/engines/pegasus/neighborhood/mars/mars.cpp @@ -2470,6 +2470,7 @@ void Mars::doCanyonChase() { playSpotSoundSync(kShuttleCockpitIn, kShuttleCockpitOut); _centerShuttleMovie.setTime(kShuttleCenterCheckTime); + _centerShuttleMovie.redrawMovieWorld(); playSpotSoundSync(kShuttleOnboardIn, kShuttleOnboardOut); _shuttleEnergyMeter.initShuttleEnergyMeter(); diff --git a/engines/pegasus/neighborhood/norad/delta/globegame.cpp b/engines/pegasus/neighborhood/norad/delta/globegame.cpp index 06e40c2b3a..1416c51c8d 100644 --- a/engines/pegasus/neighborhood/norad/delta/globegame.cpp +++ b/engines/pegasus/neighborhood/norad/delta/globegame.cpp @@ -64,6 +64,10 @@ void GlobeTracker::setTrackParameters(const Hotspot *trackSpot, GlobeTrackDirect _globeMovie->setSegment(start, start + kDurationPerRow); + // Clip new time so we don't go past the end of the segment + if (newTime >= start + kDurationPerRow) + newTime = start + kDurationPerRow - 1; + if (newTime != time) { _globeMovie->setTime(newTime); _globeMovie->redrawMovieWorld(); @@ -84,6 +88,10 @@ void GlobeTracker::setTrackParameters(const Hotspot *trackSpot, GlobeTrackDirect _globeMovie->setSegment(start, start + kDurationPerRow); + // Clip new time so we don't go past the end of the segment + if (newTime >= start + kDurationPerRow) + newTime = start + kDurationPerRow - 1; + if (newTime != time) { _globeMovie->setTime(newTime); _globeMovie->redrawMovieWorld(); @@ -621,6 +629,7 @@ void GlobeGame::receiveNotification(Notification *notification, const Notificati _monitorMovie.stop(); _monitorMovie.setSegment(0, _monitorMovie.getDuration()); _monitorMovie.setTime(kSplash2End * scale - 1); + _monitorMovie.redrawMovieWorld(); _monitorMovie.setFlags(0); _owner->requestDelay(1, 2, kFilterNoInput, 0); @@ -643,6 +652,7 @@ void GlobeGame::receiveNotification(Notification *notification, const Notificati _monitorMovie.stop(); _monitorMovie.setSegment(0, _monitorMovie.getDuration()); _monitorMovie.setTime(kNewLaunchSiloTime * scale); + _monitorMovie.redrawMovieWorld(); _owner->requestSpotSound(kNewLaunchSiloIn, kNewLaunchSiloOut, kFilterNoInput, kSpotSoundCompletedFlag); _gameState = kPlayingNewSilo1; diff --git a/engines/queen/cutaway.cpp b/engines/queen/cutaway.cpp index de54b7e33c..1e53c00564 100644 --- a/engines/queen/cutaway.cpp +++ b/engines/queen/cutaway.cpp @@ -515,7 +515,7 @@ const byte *Cutaway::getCutawayAnim(const byte *ptr, int header, CutawayAnim &an anim.scale = (int16)READ_BE_INT16(ptr); ptr += 2; - if ((_vm->resource()->isDemo() && _vm->resource()->getPlatform() == Common::kPlatformPC) || + if ((_vm->resource()->isDemo() && _vm->resource()->getPlatform() == Common::kPlatformDOS) || (_vm->resource()->isInterview() && _vm->resource()->getPlatform() == Common::kPlatformAmiga)) { anim.song = 0; } else { diff --git a/engines/queen/display.cpp b/engines/queen/display.cpp index d7b20c203e..7437bab974 100644 --- a/engines/queen/display.cpp +++ b/engines/queen/display.cpp @@ -167,7 +167,7 @@ void Display::palSet(const uint8 *pal, int start, int end, bool updateScreen) { } void Display::palSetJoeDress() { - if (_vm->resource()->getPlatform() == Common::kPlatformPC) { + if (_vm->resource()->getPlatform() == Common::kPlatformDOS) { memcpy(_pal.room + 144 * 3, _palJoeDress, 16 * 3); memcpy(_pal.screen + 144 * 3, _palJoeDress, 16 * 3); palSet(_pal.screen, 144, 159, true); @@ -175,7 +175,7 @@ void Display::palSetJoeDress() { } void Display::palSetJoeNormal() { - if (_vm->resource()->getPlatform() == Common::kPlatformPC) { + if (_vm->resource()->getPlatform() == Common::kPlatformDOS) { memcpy(_pal.room + 144 * 3, _palJoeClothes, 16 * 3); memcpy(_pal.screen + 144 * 3, _palJoeClothes, 16 * 3); palSet(_pal.screen, 144, 159, true); diff --git a/engines/queen/graphics.cpp b/engines/queen/graphics.cpp index fbb72fde44..70f7d7c94b 100644 --- a/engines/queen/graphics.cpp +++ b/engines/queen/graphics.cpp @@ -214,7 +214,7 @@ Graphics::~Graphics() { } void Graphics::unpackControlBank() { - if (_vm->resource()->getPlatform() == Common::kPlatformPC) { + if (_vm->resource()->getPlatform() == Common::kPlatformDOS) { _vm->bankMan()->load("CONTROL.BBK",17); // unpack mouse pointer frame @@ -231,7 +231,7 @@ void Graphics::unpackControlBank() { } void Graphics::setupArrows() { - if (_vm->resource()->getPlatform() == Common::kPlatformPC) { + if (_vm->resource()->getPlatform() == Common::kPlatformDOS) { int scrollX = _vm->display()->horizontalScroll(); BobSlot *arrow; arrow = bob(ARROW_BOB_UP); @@ -1250,7 +1250,7 @@ void BamScene::updateFightAnimation() { break; case 99: // end of BAM data _lastSoundIndex = _index = 0; - if (_vm->resource()->getPlatform() == Common::kPlatformPC) { + if (_vm->resource()->getPlatform() == Common::kPlatformDOS) { _fightData = fightDataBlocks[_vm->randomizer.getRandomNumber(2)]; } if (_flag == F_REQ_STOP) { diff --git a/engines/queen/input.cpp b/engines/queen/input.cpp index 30bf681e63..dd10e7ad46 100644 --- a/engines/queen/input.cpp +++ b/engines/queen/input.cpp @@ -50,12 +50,12 @@ const Verb Input::_verbKeys[] = { VERB_USE }; -Input::Input(Common::Language language, OSystem *system, QueenEngine *vm) : +Input::Input(Common::Language language, OSystem *system) : _system(system), _eventMan(system->getEventManager()), _fastMode(false), _keyVerb(VERB_NONE), _cutawayRunning(false), _canQuit(false), _cutawayQuit(false), _dialogueRunning(false), _talkQuit(false), _quickSave(false), _quickLoad(false), _debugger(false), _inKey(Common::KEYCODE_INVALID), - _mouseButton(0), _idleTime(0) , _vm(vm) { + _mouseButton(0), _idleTime(0) { switch (language) { case Common::EN_ANY: diff --git a/engines/queen/input.h b/engines/queen/input.h index b3bf811cd1..f04ecb24f7 100644 --- a/engines/queen/input.h +++ b/engines/queen/input.h @@ -46,7 +46,7 @@ public: MOUSE_RBUTTON = 2 }; - Input(Common::Language language, OSystem *system, QueenEngine *vm); + Input(Common::Language language, OSystem *system); void delay(uint amount); @@ -96,8 +96,6 @@ private: Common::EventManager *_eventMan; - QueenEngine *_vm; - //! some cutaways require update() run faster bool _fastMode; diff --git a/engines/queen/logic.cpp b/engines/queen/logic.cpp index 6d90254608..ea13e5973e 100644 --- a/engines/queen/logic.cpp +++ b/engines/queen/logic.cpp @@ -101,7 +101,7 @@ void Logic::readQueenJas() { } _roomData[_numRooms + 1] = _numObjects; - if ((_vm->resource()->isDemo() && _vm->resource()->getPlatform() == Common::kPlatformPC) || + if ((_vm->resource()->isDemo() && _vm->resource()->getPlatform() == Common::kPlatformDOS) || (_vm->resource()->isInterview() && _vm->resource()->getPlatform() == Common::kPlatformAmiga)) { _sfxName = NULL; } else { @@ -1798,7 +1798,7 @@ void Logic::asmScaleBlimp() { int16 x = bob->x; int16 y = bob->y; bob->scale = 100; - while (bob->x > 150) { + while (bob->x > 150 && !_vm->shouldQuit()) { bob->x = x * 256 / z + 150; bob->y = y * 256 / z + 112; if (_vm->resource()->getPlatform() != Common::kPlatformAmiga) { @@ -2088,7 +2088,7 @@ bool LogicDemo::changeToSpecialRoom() { void LogicDemo::setupSpecialMoveTable() { _specialMoves[4] = &LogicDemo::asmMakeJoeUseUnderwear; _specialMoves[14] = &LogicDemo::asmEndDemo; - if (_vm->resource()->getPlatform() == Common::kPlatformPC) { + if (_vm->resource()->getPlatform() == Common::kPlatformDOS) { _specialMoves[5] = &LogicDemo::asmSwitchToDressPalette; } } @@ -2185,7 +2185,7 @@ void LogicGame::setupSpecialMoveTable() { _specialMoves[31] = &LogicGame::asmWaitForCarPosition; _specialMoves[33] = &LogicGame::asmAttemptPuzzle; _specialMoves[34] = &LogicGame::asmScrollTitle; - if (_vm->resource()->getPlatform() == Common::kPlatformPC) { + if (_vm->resource()->getPlatform() == Common::kPlatformDOS) { _specialMoves[5] = &LogicGame::asmSwitchToDressPalette; _specialMoves[6] = &LogicGame::asmSwitchToNormalPalette; _specialMoves[13] = &LogicGame::asmShrinkRobot; diff --git a/engines/queen/queen.cpp b/engines/queen/queen.cpp index c403536e22..08fc594560 100644 --- a/engines/queen/queen.cpp +++ b/engines/queen/queen.cpp @@ -500,7 +500,7 @@ Common::Error QueenEngine::run() { _display = new Display(this, _system); _graphics = new Graphics(this); _grid = new Grid(this); - _input = new Input(_resource->getLanguage(), _system, this); + _input = new Input(_resource->getLanguage(), _system); if (_resource->isDemo()) { _logic = new LogicDemo(this); diff --git a/engines/queen/resource.cpp b/engines/queen/resource.cpp index 84043fa3af..6a55929d65 100644 --- a/engines/queen/resource.cpp +++ b/engines/queen/resource.cpp @@ -204,11 +204,11 @@ bool Resource::detectVersion(DetectedGameVersion *ver, Common::File *f) { switch (ver->str[0]) { case 'P': ver->features |= GF_FLOPPY; - ver->platform = Common::kPlatformPC; + ver->platform = Common::kPlatformDOS; break; case 'C': ver->features |= GF_TALKIE; - ver->platform = Common::kPlatformPC; + ver->platform = Common::kPlatformDOS; break; case 'a': ver->features |= GF_FLOPPY; diff --git a/engines/queen/talk.h b/engines/queen/talk.h index 68196784b1..cba77cc255 100644 --- a/engines/queen/talk.h +++ b/engines/queen/talk.h @@ -88,8 +88,6 @@ private: QueenEngine *_vm; - bool _wasFullscren; - //! Raw .dog file data (without 20 byte header) byte *_fileData; diff --git a/engines/saga/actor.cpp b/engines/saga/actor.cpp index 06ce335518..0548da9ee5 100644 --- a/engines/saga/actor.cpp +++ b/engines/saga/actor.cpp @@ -1030,6 +1030,8 @@ bool Actor::getSpriteParams(CommonObjectData *commonObjectData, int &frameNumber } else if (validObjId(commonObjectData->_id)) { spriteList = &_vm->_sprite->_mainSprites; frameNumber = commonObjectData->_spriteListResourceId; + } else { + return false; } if (spriteList->empty()) { diff --git a/engines/saga/detection_tables.h b/engines/saga/detection_tables.h index 234a10acfe..30cb13a031 100644 --- a/engines/saga/detection_tables.h +++ b/engines/saga/detection_tables.h @@ -188,7 +188,7 @@ static const SAGAGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DEMO, GUIO1(GUIO_NOSPEECH) }, @@ -434,7 +434,7 @@ static const SAGAGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -458,7 +458,7 @@ static const SAGAGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::IT_ITA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -482,7 +482,7 @@ static const SAGAGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -507,7 +507,7 @@ static const SAGAGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -534,7 +534,7 @@ static const SAGAGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -558,7 +558,7 @@ static const SAGAGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -582,7 +582,7 @@ static const SAGAGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::IT_ITA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -615,7 +615,7 @@ static const SAGAGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DEMO, GUIO1(GUIO_NOASPECT) }, @@ -647,7 +647,7 @@ static const SAGAGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOASPECT) }, @@ -677,7 +677,7 @@ static const SAGAGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOASPECT) }, @@ -705,7 +705,7 @@ static const SAGAGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::ES_ESP, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOASPECT) }, @@ -734,7 +734,7 @@ static const SAGAGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOASPECT) }, @@ -762,7 +762,7 @@ static const SAGAGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::IT_ITA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOASPECT) }, @@ -817,7 +817,7 @@ static const SAGAGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_UNSTABLE, GUIO1(GUIO_NOASPECT) }, @@ -847,7 +847,7 @@ static const SAGAGameDescription gameDescriptions[] = { { NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_UNSTABLE, GUIO1(GUIO_NOASPECT) }, diff --git a/engines/saga/interface.cpp b/engines/saga/interface.cpp index a7bd7edbe5..b105e34487 100644 --- a/engines/saga/interface.cpp +++ b/engines/saga/interface.cpp @@ -723,7 +723,7 @@ void Interface::setStatusText(const char *text, int statusColor) { if (_vm->_render->getFlags() & RF_MAP || _vm->_interface->getMode() == kPanelPlacard) return; - strncpy(_statusText, text, STATUS_TEXT_LEN); + Common::strlcpy(_statusText, text, STATUS_TEXT_LEN); _statusOnceColor = statusColor; drawStatusBar(); } @@ -2420,7 +2420,7 @@ bool Interface::converseAddText(const char *text, int strId, int replyId, byte r assert(strlen(text) < CONVERSE_MAX_WORK_STRING); - strncpy(_converseWorkString, text, CONVERSE_MAX_WORK_STRING); + Common::strlcpy(_converseWorkString, text, CONVERSE_MAX_WORK_STRING); while (1) { len = strlen(_converseWorkString); diff --git a/engines/saga/music.cpp b/engines/saga/music.cpp index 0eebf3f175..812d967b9f 100644 --- a/engines/saga/music.cpp +++ b/engines/saga/music.cpp @@ -176,6 +176,10 @@ Music::Music(SagaEngine *vm, Audio::Mixer *mixer) : _vm(vm), _mixer(mixer) { } } + _trackNumber = 0; + _targetVolume = 0; + _currentVolumePercent = 0; + _digitalMusic = false; } diff --git a/engines/saga/saveload.cpp b/engines/saga/saveload.cpp index 3cd44eba40..9784cf4e33 100644 --- a/engines/saga/saveload.cpp +++ b/engines/saga/saveload.cpp @@ -176,7 +176,7 @@ void SagaEngine::save(const char *fileName, const char *saveName) { // Note that IHNM has a smaller save title size than ITE // We allocate the ITE save title size here, to preserve // savegame backwards compatibility - strncpy(_saveHeader.name, saveName, SAVE_TITLE_SIZE); + Common::strlcpy(_saveHeader.name, saveName, SAVE_TITLE_SIZE); out->writeUint32BE(_saveHeader.type); out->writeUint32LE(_saveHeader.size); diff --git a/engines/saga/sndres.cpp b/engines/saga/sndres.cpp index 71044034d7..49d24753a1 100644 --- a/engines/saga/sndres.cpp +++ b/engines/saga/sndres.cpp @@ -104,6 +104,15 @@ SndRes::SndRes(SagaEngine *vm) : _vm(vm), _sfxContext(NULL), _voiceContext(NULL) } } +SndRes::~SndRes() { +#ifdef ENABLE_IHNM + if (_vm->getGameId() == GID_IHNM && _vm->isMacResources()) { + // Delete the dummy voice context. See setVoiceBank() + delete _voiceContext; + } +#endif +} + void SndRes::setVoiceBank(int serial) { Common::File *file; if (_voiceSerial == serial) diff --git a/engines/saga/sndres.h b/engines/saga/sndres.h index bc38bed431..979c0288f6 100644 --- a/engines/saga/sndres.h +++ b/engines/saga/sndres.h @@ -39,6 +39,7 @@ class SndRes { public: SndRes(SagaEngine *vm); + ~SndRes(); void playSound(uint32 resourceId, int volume, bool loop); void playVoice(uint32 resourceId); diff --git a/engines/sci/detection.cpp b/engines/sci/detection.cpp index ebad3d039a..09c348f273 100644 --- a/engines/sci/detection.cpp +++ b/engines/sci/detection.cpp @@ -452,7 +452,7 @@ static ADGameDescription s_fallbackDesc = { "", AD_ENTRY1(0, 0), // This should always be AD_ENTRY1(0, 0) in the fallback descriptor Common::UNK_LANG, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }; @@ -514,7 +514,7 @@ const ADGameDescription *SciMetaEngine::fallbackDetect(const FileMap &allFiles, s_fallbackDesc.extra = ""; s_fallbackDesc.language = Common::EN_ANY; s_fallbackDesc.flags = ADGF_NO_FLAGS; - s_fallbackDesc.platform = Common::kPlatformPC; // default to PC platform + s_fallbackDesc.platform = Common::kPlatformDOS; // default to PC platform s_fallbackDesc.gameid = "sci"; s_fallbackDesc.guioptions = GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI); diff --git a/engines/sci/detection_tables.h b/engines/sci/detection_tables.h index c8137c8fb4..fa7acaf4b8 100644 --- a/engines/sci/detection_tables.h +++ b/engines/sci/detection_tables.h @@ -37,7 +37,7 @@ namespace Sci { {"sci-fanmade", name, { \ {"resource.map", 0, resMapMd5, resMapSize}, \ {"resource.001", 0, resMd5, resSize}, \ - AD_LISTEND}, lang, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) \ + AD_LISTEND}, lang, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) \ } #define FANMADE(name, resMapMd5, resMapSize, resMd5, resSize) FANMADE_L(name, resMapMd5, resMapSize, resMd5, resSize, Common::EN_ANY) @@ -50,7 +50,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "f3d1be7752d30ba60614533d531e2e98", 474}, {"resource.001", 0, "6fd05926c2199af0af6f72f90d0d7260", 126895}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Castle of Dr. Brain - English Amiga (from www.back2roots.org) // Executable scanning reports "1.005.000" @@ -93,7 +93,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.000", 0, "9780f040d58182994e22d2e34fab85b0", 67367}, {"resource.001", 0, "2af49dbd8f2e1db4ab09f9310dc91259", 570553}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Castle of Dr. Brain - English DOS 5.25" Floppy EGA (from omer_mor, bug report #3035349) {"castlebrain", "EGA", { @@ -106,7 +106,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.005", 0, "8a5ed3ba96e2eaf18e36fedfaab89419", 297838}, {"resource.006", 0, "dceed92e709cad1bd9582809a235b0a0", 266682}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Castle of Dr. Brain - English DOS 3.5" Floppy EGA (from nozomi77, bug report #3405307) {"castlebrain", "EGA", { @@ -116,7 +116,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.002", 0, "de2f182529efaad2c4b510b452ab77ac", 633662}, {"resource.003", 0, "38b4b37febc6b4f5061c461a283df148", 430388}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Castle of Dr. Brain - English DOS Floppy (from jvprat) // Executable scanning reports "1.000.044", Floppy label reports "1.0, 10.30.91", VERSION file reports "1.000" @@ -127,7 +127,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.001", 0, "d2f5a1be74ed963fa849a76892be5290", 794832}, {"resource.002", 0, "c0c29c51af66d65cb53f49e785a2d978", 1280907}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Castle of Dr. Brain - English DOS 5.25" Floppy VGA 1.1 (from rnjacobs, bug report #3578286) {"castlebrain", "", { @@ -137,7 +137,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.002", 0, "583d348c908f89f94f8551d7fe0a2eca", 991752}, {"resource.003", 0, "6c3d1bb26ad532c94046bc9ac49b5ff4", 728315}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Castle of Dr. Brain - English DOS Floppy 1.1 {"castlebrain", "", { @@ -146,7 +146,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.001", 0, "13e81e1839cd7b216d2bb5615c1ca160", 796776}, {"resource.002", 0, "930e416bec196b9703a331d81b3d66f2", 1283812}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Castle of Dr. Brain - English DOS Floppy 1.000 // Reported by graxer in bug report #3037942 @@ -161,7 +161,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "1d778a0c65cac9ddbab65495e50a94ee", 335281}, {"resource.007", 0, "063bb8ce4157c778cf30d1c912c006f1", 335631}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Castle of Dr. Brain - Spanish DOS (also includes english language) // SCI interpreter version 1.000.510 @@ -170,7 +170,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.000", 0, "27ec5fa09cd12a7fd16e86d96a2ed245", 1197694}, {"resource.001", 0, "735be4e58957180cfc807d5e18fdffcd", 1433302}, AD_LISTEND}, - Common::ES_ESP, Common::kPlatformPC, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::ES_ESP, Common::kPlatformDOS, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, #ifdef ENABLE_SCI32 // Inside the Chest / Behind the Developer's Shield @@ -179,7 +179,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "9dd015e79cac4f91e7de805448f39775", 1912}, {"resource.000", 0, "e4efcd042f86679dd4e1834bb3a38edb", 3770943}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_UNSTABLE, GUIO3(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO3(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_FB01_MIDI) }, #endif // Christmas Card 1988 - English DOS @@ -188,7 +188,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "39485580d34a72997f3d5b3aba4d24f1", 426}, {"resource.001", 0, "11391434f41c834090d7a1e9488ce936", 129739}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Christmas Card 1990: The Seasoned Professional - English DOS (16 Colors) // SCI interpreter version 1.000.172 @@ -196,7 +196,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "8f656714a05b94423ac6eb10ee8797d0", 600}, {"resource.001", 0, "acde93e58fca4f7a2a5a220558a94aa8", 272629}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Christmas Card 1990: The Seasoned Professional - English DOS (256 Colors) // SCI interpreter version 1.000.174 @@ -204,7 +204,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "44b8f45b841b9b5e17e939a35e443988", 600}, {"resource.001", 0, "acde93e58fca4f7a2a5a220558a94aa8", 335362}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Christmas Card 1992 - English DOS // SCI interpreter version 1.001.055 @@ -212,7 +212,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "f1f8c8a8443f523422af70b4ec85b71c", 318}, {"resource.000", 0, "62fb9256f8e7e6e65a6875efdb7939ac", 203396}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Codename: Iceman - English Amiga (from www.back2roots.org) // Executable scanning reports "1.002.031" @@ -234,7 +234,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "782974f29d8a824782d2d4aea39964e3", 1056}, {"resource.001", 0, "d4b75e280d1c3a97cfef1b0bebff387c", 573647}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Codename: Iceman - English DOS (from jvprat) // Executable scanning reports "0.000.685", Floppy label reports "1.033, 6.8.90", VERSION file reports "1.033" @@ -247,7 +247,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.003", 0, "d97a96f1ab91b41cf46a02cc89b0a04e", 624303}, {"resource.004", 0, "8613c45fc771d658e5a505b9a4a54f31", 670883}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Codename: Iceman - English DOS (from FRG) // SCI interpreter version 0.000.668 @@ -259,7 +259,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.003", 0, "dc7c5280e7acfaffe6ef2a6c963c5f94", 622118}, {"resource.004", 0, "64f342463f6f35ba71b3509ef696ae3f", 669188}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Codename: Iceman - English DOS (supplied by ssburnout in bug report #3049193) // 1.022 9x5.25" (label: Int#0.000.668) @@ -274,7 +274,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "08050329aa113a9f14ed99cbfe3536ec", 232942}, {"resource.007", 0, "64f342463f6f35ba71b3509ef696ae3f", 267811}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Codename: Iceman - English DOS 1.023 (from abevi, bug report #2612718) {"iceman", "", { @@ -288,7 +288,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "08050329aa113a9f14ed99cbfe3536ec", 232942}, {"resource.007", 0, "64f342463f6f35ba71b3509ef696ae3f", 267702}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Conquests of Camelot - English Amiga (from www.back2roots.org) // Executable scanning reports "1.002.030" @@ -311,7 +311,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "f4cd75c15be75e04cdca3acda2c0b0ea", 468}, {"resource.001", 0, "4930708722f34bfbaa4945fb08f55f61", 232523}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Conquests of Camelot - English DOS (from jvprat) // Executable scanning reports "0.000.685", Floppy label reports "1.001, 0.000.685", VERSION file reports "1.001.000" @@ -323,7 +323,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.003", 0, "8e1a3a8c588007404b532b8dfacc1460", 723712}, {"resource.004", 0, "8e1a3a8c588007404b532b8dfacc1460", 729143}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Conquests of Camelot - English DOS // SCI interpreter version 0.000.685 @@ -337,7 +337,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "8e1a3a8c588007404b532b8dfacc1460", 332446}, {"resource.007", 0, "8e1a3a8c588007404b532b8dfacc1460", 358182}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Conquests of the Longbow - English Amiga (from www.back2roots.org) // Executable scanning reports "1.005.001" @@ -366,7 +366,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.005", 0, "d036df0872f2db19bca34601276be2d7", 1154950}, {"resource.006", 0, "b367a6a59f29ee30dde1d88a5a41152d", 1042966}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Conquests of the Longbow - English DOS Floppy (from jvprat) // Executable scanning reports "1.000.168", Floppy label reports "1.1, 1.13.92", VERSION file reports "1.1" @@ -380,7 +380,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.004", 0, "9cfce07e204a329e94fda8b5657621da", 1261462}, {"resource.005", 0, "21ebe6b39b57a73fc449f67f013765aa", 1284720}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Conquests of the Longbow - English DOS // SCI interpreter version 1.000.510 @@ -393,7 +393,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.004", 0, "9cfce07e204a329e94fda8b5657621da", 1260237}, {"resource.005", 0, "21ebe6b39b57a73fc449f67f013765aa", 1284609}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Conquests of the Longbow EGA - English DOS // SCI interpreter version 1.000.510 @@ -406,7 +406,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.004", 0, "b7bb35c027bb424ecefcd122768e5e60", 705631}, {"resource.005", 0, "58942b1aa6d6ffeb66e9f8897fd4435f", 469243}, {"resource.006", 0, "8c767b3939add63d11274065e46aad04", 713158}, - AD_LISTEND}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + AD_LISTEND}, Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Conquests of the Longbow DOS 1.0 EGA (4 x 5.25" disks) // Provided by ssburnout in bug report #3046802 @@ -416,7 +416,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.001", 0, "76c729e563809170e6cc8b2f3f6cf0a4", 1196133}, {"resource.002", 0, "8c767b3939add63d11274065e46aad04", 1152478}, {"resource.003", 0, "7025b87e735b1df3f0e9488a621f4333", 1171439}, - AD_LISTEND}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + AD_LISTEND}, Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Conquests of the Longbow - English DOS Non-Interactive Demo // SCI interpreter version 1.000.510 @@ -424,7 +424,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "cbc5cb73341de1bff1b1e20a640af220", 588}, {"resource.001", 0, "f05a20cc07eee85da8e999d0ac0f596b", 869916}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Conquests of the Longbow - German DOS (suplied by markcoolio in bug report #2727681, also includes english language) // SCI interpreter version 1.000.510 @@ -438,7 +438,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.005", 0, "d036df0872f2db19bca34601276be2d7", 1176914}, {"resource.006", 0, "b367a6a59f29ee30dde1d88a5a41152d", 1123585}, AD_LISTEND}, - Common::DE_DEU, Common::kPlatformPC, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::DE_DEU, Common::kPlatformDOS, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Eco Quest - English DOS Non-Interactive Demo (from FRG) // Executable scanning reports "x.yyy.zzz" @@ -447,7 +447,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "c819e171359b7c95f4c13b846d5c034e", 873}, {"resource.001", 0, "baf9393a9bfa73098adb501e5bc5487b", 657518}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Eco Quest - English DOS CD 1.1 // SCI interpreter version 1.001.064 @@ -455,7 +455,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "a4b73d5d2b55bdb6e44345e99c8fbdd0", 4804}, {"resource.000", 0, "d908dbef56816ac6c60dd145fdeafb2b", 3536046}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_CD, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_CD, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Eco Quest - English DOS CD 1.1 // SCI interpreter version 1.001.064 @@ -476,7 +476,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.002", 0, "28fe9b4f0567e71feb198bc9f3a2c605", 1241816}, {"resource.003", 0, "f3146df0ad4297f5ce35aa8c4753bf6c", 586832}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Eco Quest - English DOS Floppy // SCI interpreter version 1.000.510 @@ -487,7 +487,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.002", 0, "323b3b12f43d53f27d259beb225f0aa7", 1129316}, {"resource.003", 0, "83ac03e4bddb2c1ac2d36d2a587d0536", 1145616}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Eco Quest - German DOS Floppy (supplied by markcoolio in bug report #2723744, also includes english language) // SCI interpreter version 1.000.510 @@ -498,7 +498,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.002", 0, "02d7d0411f7903aacb3bc8b0f8ca8a9a", 1202581}, {"resource.003", 0, "84dd11b6825255671c703aee5ceff620", 1175835}, AD_LISTEND}, - Common::DE_DEU, Common::kPlatformPC, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::DE_DEU, Common::kPlatformDOS, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Eco Quest - Spanish DOS Floppy (from jvprat, also includes english language) // Executable scanning reports "1.ECO.013", VERSION file reports "1.000, 11.12.92" @@ -510,7 +510,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.002", 0, "2d21a1d2dcbffa551552e3e0725d2284", 1186033}, {"resource.003", 0, "84dd11b6825255671c703aee5ceff620", 1174993}, AD_LISTEND}, - Common::ES_ESP, Common::kPlatformPC, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::ES_ESP, Common::kPlatformDOS, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Eco Quest - French DOS Floppy (from Strangerke, also includes english language) // SCI interpreter version 1.ECO.013 @@ -521,7 +521,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.002", 0, "b836c6ee9de67d814ac5d1b05f5b9858", 1173872}, {"resource.003", 0, "f8f767f9d6351432621c6e54c1b2ba8c", 1141520}, AD_LISTEND}, - Common::FR_FRA, Common::kPlatformPC, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::FR_FRA, Common::kPlatformDOS, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Eco Quest 2 - English DOS Non-Interactive Demo // SCI interpreter version 1.001.055 @@ -529,7 +529,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "607cfa0d8a03b7d348c06ee727e3d939", 1321}, {"resource.000", 0, "dd6f614c43c029f063e93cd243af90a4", 525992}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Eco Quest 2 - English DOS Floppy (supplied by markcoolio in bug report #2723761) // SCI interpreter version 1.001.065 @@ -537,7 +537,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "28fb7b6abb9fc1cb8882d7c2e701b63f", 5658}, {"resource.000", 0, "cc1d17e5637528dbe4a812699e1cbfc6", 4208192}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Eco Quest 2 - French DOS Floppy (from Strangerke) // SCI interpreter version 1.001.081 @@ -545,7 +545,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "c22ab8b33c339c138b6b1697b77b9e79", 5588}, {"resource.000", 0, "1c4093f7248240329121fdf8c0d59152", 4231946}, AD_LISTEND}, - Common::FR_FRA, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::FR_FRA, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Eco Quest 2 - Spanish DOS Floppy (supplied by umbrio in bug report #3313962) {"ecoquest2", "Floppy", { @@ -553,7 +553,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.000", 0, "1c4093f7248240329121fdf8c0d59152", 4209150}, {"resource.msg", 0, "eff8be1925d42288de55e405983e9314", 117810}, AD_LISTEND}, - Common::ES_ESP, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::ES_ESP, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Freddy Pharkas - English DOS demo (from FRG) // SCI interpreter version 1.001.069 @@ -561,7 +561,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "97aa9fcfe84c9993a64debd28c32393a", 1909}, {"resource.000", 0, "5ea8e7a3ea10cce6efd5c106dc62fd8c", 867724}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Freddy Pharkas - English CD DOS (from FRG) // SCI interpreter version 1.001.132 @@ -569,7 +569,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "d46b282f228a67ba13bd4b4009e95f8f", 6058}, {"resource.000", 0, "ee3c64ffff0ba9fb08bea2624631c598", 5490246}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_CD, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_CD, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Freddy Pharkas - English DOS Floppy (updated information from markcoolio in bug reports #2723773 and #2724720) // Executable scanning reports "1.cfs.081" @@ -579,7 +579,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.000", 0, "96b07e9b914dba1c8dc6c78a176326df", 5233230}, {"resource.msg", 0, "554f65315d851184f6e38211489fdd8f", -1}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Freddy Pharkas - French DOS Floppy (supplied by misterhands in bug report #3589449) // Executable scanning reports "1.cfs.081" @@ -588,7 +588,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.000", 0, "fed4808fdb72486908ac7ad0044b14d8", 5233230}, {"resource.msg", 0, "4dc478f5c73b57e5d690bdfffdcf1c44", 816518}, AD_LISTEND}, - Common::FR_FRA, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::FR_FRA, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Freddy Pharkas - Windows (supplied by abevi in bug report #2612718) // Executable scanning reports "1.cfs.081" @@ -607,7 +607,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.000", 0, "96b07e9b914dba1c8dc6c78a176326df", 5233230}, {"resource.msg", 0, "304b5a5781800affd2235152a5794fa8", -1}, AD_LISTEND}, - Common::DE_DEU, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::DE_DEU, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Freddy Pharkas - Spanish DOS (from jvprat) // Executable scanning reports "1.cfs.081", VERSION file reports "1.000, March 30, 1995" @@ -620,7 +620,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.003", 0, "05acdc256c742e79c50b9fe7ec2cc898", 863310}, {"resource.msg", 0, "45b5bf74933ac3727e4cc844446dc052", 796156}, AD_LISTEND}, - Common::ES_ESP, Common::kPlatformPC, ADGF_CD, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::ES_ESP, Common::kPlatformDOS, ADGF_CD, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Freddy Pharkas - Spanish DOS (from jvprat) // Executable scanning reports "1.cfs.081", VERSION file reports "1.000, March 30, 1995" @@ -630,7 +630,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.000", 0, "96b07e9b914dba1c8dc6c78a176326df", 5233230}, {"resource.msg", 0, "45b5bf74933ac3727e4cc844446dc052", 796156}, AD_LISTEND}, - Common::ES_ESP, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::ES_ESP, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Freddy Pharkas - English DOS CD Demo // SCI interpreter version 1.001.095 @@ -638,7 +638,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "a62a7eae85dd1e6b07f39662b278437e", 1918}, {"resource.000", 0, "4962a3c4dd44e36e78ea4a7a374c2220", 957382}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Freddy Pharkas - English Macintosh {"freddypharkas", "", { @@ -653,7 +653,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "7ee6859ef74314f6d91938c3595348a9", 282}, {"resource.001", 0, "f1e680095424e31f7fae1255d36bacba", 40692}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Gabriel Knight - English DOS CD Demo // SCI interpreter version 1.001.092 @@ -661,7 +661,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "39645952ae0ed8072c7e838f31b75464", 2490}, {"resource.000", 0, "eb3ed7477ca4110813fe1fcf35928561", 1718450}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, #ifdef ENABLE_SCI32 // Gabriel Knight - English DOS Floppy @@ -670,7 +670,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "372d059f75856afa6d73dd84cbb8913d", 10783}, {"resource.000", 0, "69b7516962510f780d38519cc15fcc7c", 13022630}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_UNSTABLE, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Gabriel Knight - English DOS Floppy (supplied my markcoolio in bug report #2723777) // SCI interpreter version 2.000.000 @@ -678,7 +678,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "65e8c14092e4c9b3b3538b7602c8c5ec", 10783}, {"resource.000", 0, "69b7516962510f780d38519cc15fcc7c", 13022630}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_UNSTABLE, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Gabriel Knight - English DOS Floppy // SCI interpreter version 2.000.000, VERSION file reports "1.0\nGabriel Knight\n11/22/10:33 pm\n\x1A" @@ -686,7 +686,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "ef41df08cf2c1f680216cdbeed0f8311", 10783}, {"resource.000", 0, "69b7516962510f780d38519cc15fcc7c", 13022630}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_UNSTABLE, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Gabriel Knight - German DOS Floppy (supplied my markcoolio in bug report #2723775) // SCI interpreter version 2.000.000 @@ -694,7 +694,15 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "ad6508b0296b25c07b1f58828dc33696", 10789}, {"resource.000", 0, "091cf08910780feabc56f8551b09cb36", 13077029}, AD_LISTEND}, - Common::DE_DEU, Common::kPlatformPC, ADGF_UNSTABLE, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::DE_DEU, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + + // Gabriel Knight - French DOS Floppy (supplied my kervala in bug report #3611487) + // SCI interpreter version 2.000.000 + {"gk1", "", { + {"resource.map", 0, "236e36cc847cdeafdd5e5fa8cba916ed", 10801}, + {"resource.000", 0, "091cf08910780feabc56f8551b09cb36", 13033072}, + AD_LISTEND}, + Common::FR_FRA, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Gabriel Knight - English DOS CD (from jvprat) // Executable scanning reports "2.000.000", VERSION file reports "01.100.000" @@ -702,7 +710,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "372d059f75856afa6d73dd84cbb8913d", 10996}, {"resource.000", 0, "69b7516962510f780d38519cc15fcc7c", 12581736}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_CD | ADGF_UNSTABLE, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_CD | ADGF_UNSTABLE, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Gabriel Knight - English Windows CD (from jvprat) // Executable scanning reports "2.000.000", VERSION file reports "01.100.000" @@ -718,7 +726,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "a7d3e55114c65647310373cb390815ba", 11392}, {"resource.000", 0, "091cf08910780feabc56f8551b09cb36", 13400497}, AD_LISTEND}, - Common::DE_DEU, Common::kPlatformPC, ADGF_CD | ADGF_UNSTABLE, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::DE_DEU, Common::kPlatformDOS, ADGF_CD | ADGF_UNSTABLE, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Gabriel Knight - Spanish DOS CD (from jvprat) // Executable scanning reports "2.000.000", VERSION file reports "1.000.000, April 13, 1995" @@ -726,7 +734,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "7cb6e9bba15b544ec7a635c45bde9953", 11404}, {"resource.000", 0, "091cf08910780feabc56f8551b09cb36", 13381599}, AD_LISTEND}, - Common::ES_ESP, Common::kPlatformPC, ADGF_CD | ADGF_UNSTABLE, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::ES_ESP, Common::kPlatformDOS, ADGF_CD | ADGF_UNSTABLE, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Gabriel Knight - French DOS CD (from Hkz) // VERSION file reports "1.000.000, May 3, 1994" @@ -734,7 +742,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "55f909ba93a2515042a08d8a2da8414e", 11392}, {"resource.000", 0, "091cf08910780feabc56f8551b09cb36", 13325145}, AD_LISTEND}, - Common::FR_FRA, Common::kPlatformPC, ADGF_CD | ADGF_UNSTABLE, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::FR_FRA, Common::kPlatformDOS, ADGF_CD | ADGF_UNSTABLE, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Gabriel Knight - German Windows CD (from Tobis87) // SCI interpreter version 2.000.000 @@ -775,7 +783,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resmap.000", 0, "b996fa1e57389a1e179a00a0049de1f4", 8110}, {"ressci.000", 0, "a19fc3604c6e5407abcf03d59ee87217", 168522221}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Gabriel Knight 2 - English DOS (from jvprat) // Executable scanning reports "2.100.002", VERSION file reports "1.1" @@ -793,7 +801,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resmap.006", 0, "ce9359037277b7d7976da185c2fa0aad", 2977}, {"ressci.006", 0, "8e44e03890205a7be12f45aaba9644b4", 60659424}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Gabriel Knight 2 - French DOS (6-CDs Sierra Originals reedition) // Executable scanning reports "2.100.002", VERSION file reports "1.0" @@ -811,7 +819,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resmap.006", 0, "11b2e722170b8c93fdaa5428e2c7676f", 3001}, {"ressci.006", 0, "4037d941aec39d2e654e20960429aefc", 60568486}, AD_LISTEND}, - Common::FR_FRA, Common::kPlatformPC, ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::FR_FRA, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Gabriel Knight 2 - English Macintosh // NOTE: This only contains disc 1 files (as well as the persistent file: @@ -835,7 +843,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.002", 0, "e0dd44069a62a463fd124974b915f10d", 342149}, {"resource.003", 0, "e0dd44069a62a463fd124974b915f10d", 328925}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Hoyle 1 - English DOS (supplied by wibble92 in bug report #2644547) // SCI interpreter version 0.000.530 @@ -845,7 +853,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.002", 0, "e0dd44069a62a463fd124974b915f10d", 342309}, {"resource.003", 0, "e0dd44069a62a463fd124974b915f10d", 328912}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Hoyle 1 - English DOS (supplied by merkur in bug report #2719227) // SCI interpreter version 0.000.530 @@ -853,14 +861,14 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "1034a218943d12f1f36e753fa10c95b8", 4386}, {"resource.001", 0, "e0dd44069a62a463fd124974b915f10d", 518308}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Hoyle 1 3.5' - English DOS (supplied by eddydrama in bug report #3052366 and dinnerx in bug report #3090841) {"hoyle1", "", { {"resource.map", 0, "0af9a3dcd72a091960de070432e1f524", 4386}, {"resource.001", 0, "e0dd44069a62a463fd124974b915f10d", 518127}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, #if 0 // TODO: unknown if these files are corrupt // Hoyle 1 - English Amiga (from www.back2roots.org) @@ -880,7 +888,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.001", 0, "8f2dd70abe01112eca464cda818b5eb6", 98138}, {"resource.002", 0, "8f2dd70abe01112eca464cda818b5eb6", 196631}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Hoyle 2 - English DOS (supplied by ssburnout in bug report #3049193) // 1.000.011 1x3.5" (label:Int#6.21.90) @@ -888,7 +896,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "db0ba08b953e9904a4960ad99cd29c20", 1356}, {"resource.001", 0, "8f2dd70abe01112eca464cda818b5eb6", 216315}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Hoyle 2 - English Amiga (from www.back2roots.org) // Executable scanning reports "1.002.032" @@ -926,7 +934,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "0d06cacc87dc21a08cd017e73036f905", 735}, {"resource.001", 0, "24db2bccda0a3c43ac4a7b5edb116c7e", 797678}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Hoyle 3 - English DOS Floppy (from jvprat) // Executable scanning reports "x.yyy.zzz", Floppy label reports "1.0, 11.2.91", VERSION file reports "1.000" @@ -936,7 +944,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.000", 0, "6ef28cac094dcd97fdb461662ead6f92", 541845}, {"resource.001", 0, "0a98a268ee99b92c233a0d7187c1f0fa", 845795}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Hoyle 3 - English DOS Floppy (supplied by eddydrama in bug report #3038837) {"hoyle3", "", { @@ -947,7 +955,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.003", 0, "97cfd72633f8f9b2a0b1d4116cf3ee81", 346116}, {"resource.004", 0, "2884fb91b225fabd9ca87ea231293b48", 351218}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Hoyle 3 EGA - English DOS Floppy 1.0 (supplied by abevi in bug report #2612718) {"hoyle3", "EGA", { @@ -955,14 +963,14 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.000", 0, "6ef28cac094dcd97fdb461662ead6f92", 319905}, {"resource.001", 0, "0a98a268ee99b92c233a0d7187c1f0fa", 526438}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Hoyle 4 (Hoyle Classic Card Games) - English DOS Demo {"hoyle4", "Demo", { {"resource.map", 0, "60f764020a6b788bbbe415dbc2ccb9f3", 931}, {"resource.000", 0, "5fe3670e3ddcd4f85c10013b5453141a", 615522}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Hoyle 4 (Hoyle Classic Card Games) - English DOS Demo // SCI interpreter version 1.001.200 (just a guess) @@ -971,7 +979,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "662087cb383e52e3cc4ae7ecb10e20aa", 938}, {"resource.000", 0, "24c10844792c54d476d272213cbac300", 675252}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Hoyle 4 (Hoyle Classic Card Games) - English DOS/Win // Supplied by abevi in bug report #3039291 @@ -979,7 +987,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "2b577c975cc8d8d43f61b6a756129fe3", 4352}, {"resource.000", 0, "43e2c15ce436aab611a462ad0603e12d", 2000132}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Hoyle 4 (Hoyle Classic Card Games) - English Macintosh Floppy // VERSION file reports "2.0" @@ -996,14 +1004,14 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.001", 0, "bac3ec6cb3e3920984ab0f32becf5163", 202105}, {"resource.002", 0, "b86daa3ba2784d1502da881eedb80d9b", 341771}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Jones in the Fast Lane EGA - English DOS (supplied by EddyDrama in bug report #3038761) {"jones", "EGA", { {"resource.map", 0, "8e92cf319180cc8b5b87b2ce93a4fe22", 1602}, {"resource.001", 0, "bac3ec6cb3e3920984ab0f32becf5163", 511528}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Jones in the Fast Lane VGA - English DOS // SCI interpreter version 1.000.172 @@ -1012,7 +1020,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.001", 0, "bac3ec6cb3e3920984ab0f32becf5163", 313476}, {"resource.002", 0, "b86daa3ba2784d1502da881eedb80d9b", 719747}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Jones in the Fast Lane VGA - English DOS (supplied by omer_mor in bug report #3037054) // VERSION file reports "1.000.060" @@ -1020,14 +1028,14 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "db175ab494ab0666f19ab8f2597a8e49", 1602}, {"resource.001", 0, "bac3ec6cb3e3920984ab0f32becf5163", 994487}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Jones in the Fast Lane - English DOS CD {"jones", "CD", { {"resource.map", 0, "459f5b04467bc2107aec02f5c4b71b37", 4878}, {"resource.001", 0, "3876da2ce16fb7dea2f5d943d946fa84", 1652150}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_CD, GUIO1(GAMEOPTION_JONES_CDAUDIO) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_CD, GUIO1(GAMEOPTION_JONES_CDAUDIO) }, // Jones in the Fast Lane - English DOS CD // Same entry as the DOS version above. This one is used for the alternate @@ -1056,7 +1064,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "59b13619078bd47011421468959ee5d4", 954}, {"resource.001", 0, "4cfb9040db152868f7cb6a1e8151c910", 296555}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // King's Quest 1 SCI Remake - English DOS (from the King's Quest Collection) // Executable scanning reports "S.old.010", VERSION file reports "1.000.051" @@ -1067,7 +1075,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.002", 0, "fed9e0072ffd511d248674e60dee2099", 714062}, {"resource.003", 0, "fed9e0072ffd511d248674e60dee2099", 717478}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // King's Quest 1 SCI Remake - English DOS (supplied by ssburnout in bug report #3049193) // 1.000.051 9x5.25" (label: INT#9.19.90) @@ -1081,7 +1089,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "fed9e0072ffd511d248674e60dee2099", 351062}, {"resource.007", 0, "fed9e0072ffd511d248674e60dee2099", 330472}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // King's Quest 4 - English Amiga (from www.back2roots.org) // Executable scanning reports "1.002.032" @@ -1102,7 +1110,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "992ac7cc31d3717fe53818a9bb6d1dae", 594}, {"resource.001", 0, "143e1c14f15ad0fbfc714f648a65f661", 205330}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // King's Quest 4 - English DOS (original boxed release, 3 1/2" disks) // SCI interpreter version 0.000.247 @@ -1113,7 +1121,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.003", 0, "851a62d00972dc4002f472cc0d84e71d", 683145}, {"resource.004", 0, "851a62d00972dc4002f472cc0d84e71d", 649441}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // King's Quest 4 - English DOS (from the King's Quest Collection) // Executable scanning reports "0.000.502" @@ -1125,7 +1133,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.003", 0, "77615c595388acf3d1df8e107bfb6b52", 707591}, {"resource.004", 0, "77615c595388acf3d1df8e107bfb6b52", 479562}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // King's Quest 4 - English DOS (supplied by ssburnout in bug report #3049193) // 1.006.003 8x5.25" (label: Int.#0.000.502) @@ -1139,7 +1147,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "6db7de6f93c6ea62dca78abee677f8c0", 324789}, {"resource.007", 0, "6db7de6f93c6ea62dca78abee677f8c0", 334441}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // King's Quest 4 - English DOS // SCI interpreter version 0.000.274 @@ -1153,7 +1161,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "851a62d00972dc4002f472cc0d84e71d", 333777}, {"resource.007", 0, "851a62d00972dc4002f472cc0d84e71d", 341038}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // King's Quest 4 - English DOS // SCI interpreter version 0.000.253 @@ -1167,7 +1175,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "0c8566848a76eea19a6d6220914030a7", 337288}, {"resource.007", 0, "0c8566848a76eea19a6d6220914030a7", 343882}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // King's Quest 4 - English Atari ST (double-sided diskettes) // Game version 1.003.006 (January 12, 1989) @@ -1238,7 +1246,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.000", 0, "449471bfd77be52f18a3773c7f7d843d", 571368}, {"resource.001", 0, "b45a581ff8751e052c7e364f58d3617f", 16800210}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_CD, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_CD, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // King's Quest 5 - English DOS CD (from the King's Quest Collection) // Executable scanning reports "x.yyy.zzz", VERSION file reports "1.000.052" @@ -1265,7 +1273,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "672ede1136e9e401658538e51bd5dc22", 1172619}, {"resource.007", 0, "2f48faf27666b58c276dda20f91f4a93", 1240456}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // King's Quest 5 - English DOS Floppy // VERSION file reports "0.000.051" @@ -1283,7 +1291,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "da82e4beb744731d0a151f1d4922fafa", 1170456}, {"resource.007", 0, "431def14ca29cdb5e6a5e84d3f38f679", 1240176}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // King's Quest 5 - English DOS Floppy (supplied by omer_mor in bug report #3036996) // VERSION file reports "0.000.051" @@ -1298,7 +1306,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "06cb3f689836086ebe08b1efc0126592", 921113}, {"resource.007", 0, "252249753c6e850eacceb8af634986d3", 1133608}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // King's Quest 5 EGA (supplied by markcoolio in bug report #2829470) // SCI interpreter version 1.000.060 @@ -1314,7 +1322,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "698c698570cde9015e4d51eb8d2e9db1", 666527}, {"resource.007", 0, "703d8df30e89541af337d7706540d5c4", 541743}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // King's Quest 5 EGA 1.2M disk version (from LordHoto) // VERSION file reports "0.000.055" @@ -1326,7 +1334,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "53206afb4fd73871a484e83acab80f31", 7608}, {"resource.004", 0, "83568edf7fde18b3eed988bc5d22ceb1", 1188053}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // King's Quest 5 EGA (supplied by omer_mor in bug report #3035421) // VERSION file reports "0.000.062" @@ -1341,7 +1349,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "698c698570cde9015e4d51eb8d2e9db1", 666541}, {"resource.007", 0, "703d8df30e89541af337d7706540d5c4", 541762}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // King's Quest V DOS 0.000.062 EGA (5 x 5.25" disks) // Supplied by ssburnout in bug report #3046780 @@ -1353,7 +1361,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.003", 0, "3cca5b2dae8afe94532edfdc98d7edbe", 1092325}, {"resource.004", 0, "8e5c1bc4d738cf7316ff506f59d265e2", 1187803}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // King's Quest 5 DOS Spanish Floppy 0.000.062 VGA (5 x 3.5" disks) // Supplied by dianiu in bug report #3555646 @@ -1368,7 +1376,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "65b520e60c4217e6a6572d9edf77193b", 1141985}, {"resource.007", 0, "f42b0100f0a1c30806814f8648b6bc28", 1145583}, AD_LISTEND}, - Common::ES_ESP, Common::kPlatformPC, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::ES_ESP, Common::kPlatformDOS, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // King's Quest 5 - German DOS Floppy (supplied by markcoolio in bug report #2727101, also includes english language) // SCI interpreter version 1.000.060 @@ -1383,7 +1391,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "d1a75fdc01840664d00366cff6919366", 1208972}, {"resource.007", 0, "c07494f0cce7c05210893938786a955b", 1337361}, AD_LISTEND}, - Common::DE_DEU, Common::kPlatformPC, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::DE_DEU, Common::kPlatformDOS, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // King's Quest 5 - French DOS Floppy (from the King's Quest Collector's Edition 1994, also includes english language) // Supplied by aroenai in bug report #2812611 @@ -1399,7 +1407,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "f7dc85307632ef657ceb1651204f6f51", 1210081}, {"resource.007", 0, "7db4d0a1d8d547c0019cb7d2a6acbdd4", 1338473}, AD_LISTEND}, - Common::FR_FRA, Common::kPlatformPC, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::FR_FRA, Common::kPlatformDOS, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // King's Quest 5 - Italian DOS Floppy (from glorifindel, includes english language) // SCI interpreter version 1.000.060 @@ -1414,7 +1422,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "8eeabd92af71e766e323db2100879102", 1209325}, {"resource.007", 0, "dc10c107e0923b902326a040b9c166b9", 1337859}, AD_LISTEND}, - Common::IT_ITA, Common::kPlatformPC, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::IT_ITA, Common::kPlatformDOS, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // King's Quest 5 - Polish DOS Floppy (supplied by jacek909 in bug report #2725722) // SCI interpreter version 1.000.060 @@ -1432,7 +1440,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.007", 0, "431def14ca29cdb5e6a5e84d3f38f679", 1240176}, {"text.000", 0, "601aa35a3ddeb558e1280e0963e955a2", 1517}, AD_LISTEND}, - Common::PL_POL, Common::kPlatformPC, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::PL_POL, Common::kPlatformDOS, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // King's Quest 5 - English Macintosh // VERSION file reports "1.000.055" @@ -1483,7 +1491,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.000", 0, "535b1b920441ec73f42eaa4ccfd47b89", 264116}, {"resource.msg", 0, "54d1fdc936f98c81f9e4c19e04fb1510", 8260}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // King's Quest 6 - English DOS Floppy // SCI interpreter version 1.001.054 @@ -1492,7 +1500,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.000", 0, "f2b7f753992c56a0c7a08d6a5077c895", 7863324}, {"resource.msg", 0, "3cf5de44de36191f109d425b8450efc8", 258590}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // King's Quest 6 - French DOS Floppy (supplied by misterhands in bug #3503425) // SCI interpreter version ??? @@ -1501,7 +1509,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.000", 0, "f2b7f753992c56a0c7a08d6a5077c895", 7863324}, {"resource.msg", 0, "adc2aa8adbdcc97507d44a6f492fbd77", 265194}, AD_LISTEND}, - Common::FR_FRA, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::FR_FRA, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // King's Quest 6 - German DOS Floppy (supplied by markcoolio in bug report #2727156) // SCI interpreter version 1.001.054 @@ -1510,7 +1518,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.000", 0, "f2b7f753992c56a0c7a08d6a5077c895", 7863324}, {"resource.msg", 0, "756297b2155db9e43f621c6f6fb763c3", 282822}, AD_LISTEND}, - Common::DE_DEU, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::DE_DEU, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // King's Quest 6 - Spanish DOS Floppy (from jvprat) // Executable scanning reports "1.cfs.158", VERSION file reports "1.000.000, July 5, 1994" @@ -1520,7 +1528,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.000", 0, "4da3ad5868a775549a7cc4f72770a58e", 8537260}, {"resource.msg", 0, "41eed2d3893e1ca6c3695deba4e9d2e8", 267102}, AD_LISTEND}, - Common::ES_ESP, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::ES_ESP, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // King's Quest 6 - Italian DOS Floppy (supplied by guybrush79 in bug report #3606719) {"kq6", "", { @@ -1528,7 +1536,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.000", 0, "d3358ba7306378aed83d02b5c3f11311", 8531908}, {"resource.msg", 0, "b7e8220be596fd6a9287eae5a8fd354a", 279886}, AD_LISTEND}, - Common::IT_ITA, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::IT_ITA, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // King's Quest 6 - English DOS CD (from the King's Quest Collection) // Executable scanning reports "1.cfs.158", VERSION file reports "1.034 9/11/94 - KQ6 version 1.000.00G" @@ -1537,7 +1545,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "7a550ebfeae2575ca00d47703a6a774c", 9215}, {"resource.000", 0, "233394a5f33b475ae5975e7e9a420865", 8376352}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_CD, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_CD, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // King's Quest 6 - English Windows CD (from the King's Quest Collection) // Executable scanning reports "1.cfs.158", VERSION file reports "1.034 9/11/94 - KQ6 version 1.000.00G" @@ -1581,7 +1589,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "8676b0fbbd7362989a029fe72fea14c6", 18709}, {"resource.000", 0, "51c1ead1163e19a2de8f121c39df7a76", 200764100}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // King's Quest 7 - English Windows (from FRG) // SCI interpreter version 2.100.002, VERSION file reports "2.00b" @@ -1597,7 +1605,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "838b9ff132bd6962026fee832e8a7ddb", 18697}, {"resource.000", 0, "eb63ea3a2c2469dc2d777d351c626404", 206626576}, AD_LISTEND}, - Common::DE_DEU, Common::kPlatformPC, ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::DE_DEU, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // King's Quest 7 - Spanish DOS (from jvprat) // Executable scanning reports "2.100.002", VERSION file reports "2.00" @@ -1605,7 +1613,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "0b62693cbe87e3aaca3e8655a437f27f", 18709}, {"resource.000", 0, "51c1ead1163e19a2de8f121c39df7a76", 200764100}, AD_LISTEND}, - Common::ES_ESP, Common::kPlatformPC, ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::ES_ESP, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // King's Quest 7 - English DOS Non-Interactive Demo // SCI interpreter version 2.100.002 @@ -1613,7 +1621,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "b44f774108d63faa1d021101221c5a54", 1690}, {"resource.000", 0, "d9659d2cf0c269c6a9dc776707f5bea0", 2433827}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO | ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO | ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, #endif // ENABLE_SCI32 @@ -1649,7 +1657,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "e625726268ff4e123ada11f31f0249f3", 768}, {"resource.001", 0, "0c8912290af0890f8d95faeb4ddb2d68", 333031}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Laura Bow - English DOS 3.5" Floppy (from "The Roberta Williams Anthology"/1996) // SCI interpreter version 0.000.631 @@ -1660,7 +1668,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.003", 0, "e45c888d9c7c04aec0a20e9f820b79ff", 667468}, {"resource.004", 0, "e45c888d9c7c04aec0a20e9f820b79ff", 683807}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Laura Bow - English DOS (from FRG) // SCI interpreter version 0.000.631 @@ -1674,7 +1682,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "e45c888d9c7c04aec0a20e9f820b79ff", 328390}, {"resource.007", 0, "e45c888d9c7c04aec0a20e9f820b79ff", 317687}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Laura Bow 2 - English DOS Non-Interactive Demo (from FRG) // Executable scanning reports "x.yyy.zzz" @@ -1683,7 +1691,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "24dffc5db1d88c7999f13e8767ed7346", 855}, {"resource.000", 0, "2b2b1b4f7584f9b38fd13f6ab95634d1", 781912}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Laura Bow 2 - English DOS Floppy // Executable scanning reports "2.000.274" @@ -1692,7 +1700,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "610bfd9a852004222f0faaf5fc9e630a", 6489}, {"resource.000", 0, "57084910bc923bff5d6d9bc1b56e9604", 5035964}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Laura Bow 2 - English DOS CD (from "The Roberta Williams Antology"/1996) // Executable scanning reports "1.001.072", VERSION file reports "1.1" (from jvprat) @@ -1701,7 +1709,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "a70945e61ba7ac7bfea6b7bd72c6aec5", 7274}, {"resource.000", 0, "82578b8d5a7e09c4c58891ca49fae35b", 5598672}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_CD, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_CD, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Laura Bow 2 v1.1 - French DOS Floppy (from Hkz) {"laurabow2", "", { @@ -1709,7 +1717,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.000", 0, "57084910bc923bff5d6d9bc1b56e9604", 5028766}, {"resource.msg", 0, "0fceedfbdd85a4bc7851fdd9dd2d2f19", 278253}, AD_LISTEND}, - Common::FR_FRA, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::FR_FRA, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Laura Bow 2 v1.1 - German DOS Floppy (from Tobis87, updated info from markcoolio in bug report #2723787, updated info from #2797962)) // Executable scanning reports "2.000.274" @@ -1718,7 +1726,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.000", 0, "57084910bc923bff5d6d9bc1b56e9604", 5028766}, {"resource.msg", 0, "795c928cd00dfec9fbc62ebcd12e1f65", 303185}, AD_LISTEND}, - Common::DE_DEU, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::DE_DEU, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Laura Bow 2 - Spanish DOS CD (from jvprat) // Executable scanning reports "2.000.274", VERSION file reports "1.000.000, May 10, 1994" @@ -1727,7 +1735,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.000", 0, "57084910bc923bff5d6d9bc1b56e9604", 5028766}, {"resource.msg", 0, "71f1f0cd9f082da2e750c793a8ed9d84", 286141}, AD_LISTEND}, - Common::ES_ESP, Common::kPlatformPC, ADGF_CD, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::ES_ESP, Common::kPlatformDOS, ADGF_CD, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 1 EGA Remake - English DOS (from spookypeanut) // SCI interpreter version 0.000.510 (or 0.000.577?) @@ -1738,7 +1746,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.002", 0, "24c958bc922b07f91e25e8c93aa01fcf", 491230}, {"resource.003", 0, "685cd6c1e05a695ab1e0db826337ee2a", 553279}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, #if 0 // The resource.002 file, contained in disk 3, is broken in this version @@ -1767,7 +1775,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.001", 0, "ec20246209d7b19f38989261e5c8f5b8", 1111226}, {"resource.002", 0, "85d6935ef77e6b0e16bc307640a0d913", 1088312}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 1 VGA Remake - English DOS (from FRG) // SCI interpreter version 1.000.510 @@ -1777,7 +1785,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.001", 0, "d34cadb11e1aefbb497cf91bc1d3baa7", 1114688}, {"resource.002", 0, "85b030bb66d5342b0a068f1208c431a8", 1078443}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 1 VGA Remake - English Macintosh (from omer_mor, bug report #3328262) {"lsl1sci", "SCI", { @@ -1794,7 +1802,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "434e1f6c39d71647b34f0ee57b2bbd68", 444}, {"resource.001", 0, "0c0768215c562d9dace4a5ca53696cf3", 359913}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 1 VGA Remake - Spanish DOS (from the Leisure Suit Larry Collection, also includes english language) // Executable scanning reports "1.SQ4.057", VERSION file reports "1.000" @@ -1807,7 +1815,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.002", 0, "3fe2a3aec0ed53c7d6db1845a67e3aa2", 1095908}, {"resource.003", 0, "ac175df0ea9a2cba57f0248651856d27", 376556}, AD_LISTEND}, - Common::ES_ESP, Common::kPlatformPC, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::ES_ESP, Common::kPlatformDOS, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 1 VGA Remake - Russian DOS (also includes english language?!) // Executable scanning reports "1.000.510", VERSION file reports "2.0" @@ -1818,7 +1826,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.001", 0, "bc8ca10c807515d959cbd91f9ba47735", 1123759}, {"resource.002", 0, "b7409ab32bc3bee2d6cce887cd33f2b6", 1092160}, AD_LISTEND}, - Common::RU_RUS, Common::kPlatformPC, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::RU_RUS, Common::kPlatformDOS, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 1 VGA Remake - Polish DOS (from Polish Leisure Suit Larry Collection, official release) // SCI interpreter version 1.000.577, VERSION file reports "2.1" (this release does NOT include english text) @@ -1826,7 +1834,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "58330a85767e42a2487129913283ab5b", 3228}, {"resource.000", 0, "b6097ff35cdc8469f02150fe2f824198", 4781210}, AD_LISTEND}, - Common::PL_POL, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::PL_POL, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 2 - English Amiga (from www.back2roots.org) // Executable scanning reports "x.yyy.zzz" @@ -1847,7 +1855,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "03dba704bb77da55a91ad27b5a3cac09", 528}, {"resource.001", 0, "9f5520f0297206928df0b0b36493cd33", 127532}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 2 - English DOS // SCI interpreter version 0.000.409 @@ -1860,7 +1868,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.005", 0, "4a24443a25e2b1492462a52809605dc2", 277732}, {"resource.006", 0, "4a24443a25e2b1492462a52809605dc2", 345683}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 2 - English DOS // SCI interpreter version 0.000.343 @@ -1875,7 +1883,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { //{"resource.006", 0, "96033f57accfca903750413fd09193c8", 345818}, {"resource.006", 0, "96033f57accfca903750413fd09193c8", -1}, // 345818 or 208739 AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 2 - English DOS (supplied by ssburnout in bug report #3049193) // 1.000.011 3x3.5" (label: Int. #0.000.343) @@ -1885,7 +1893,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.002", 0, "96033f57accfca903750413fd09193c8", 407014}, {"resource.003", 0, "96033f57accfca903750413fd09193c8", 592834}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 2 - English DOS (supplied by ssburnout in bug report #3049193) // 1.002.000 3x3.5" (label: INT#0.000.409) @@ -1895,7 +1903,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.002", 0, "4a24443a25e2b1492462a52809605dc2", 406935}, {"resource.003", 0, "4a24443a25e2b1492462a52809605dc2", 592533}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 3 - English Amiga (from www.back2roots.org) // Executable scanning reports "1.002.032" @@ -1911,17 +1919,6 @@ static const struct ADGameDescription SciGameDescriptions[] = { AD_LISTEND}, Common::EN_ANY, Common::kPlatformAmiga, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, - // Larry 3 - English DOS - // SCI interpreter version 0.000.572 - {"lsl3", "", { - {"resource.map", 0, "0b6bd3e039682830a51c5755c06591db", 5916}, - {"resource.001", 0, "f18441027154292836b973c655fa3175", 456722}, - {"resource.002", 0, "f18441027154292836b973c655fa3175", 578024}, - {"resource.003", 0, "f18441027154292836b973c655fa3175", 506807}, - {"resource.004", 0, "f18441027154292836b973c655fa3175", 513651}, - AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, - // Larry 3 - English DOS (supplied by ssburnout in bug report #3049193) // 1.021 8x5.25" (label: Int#5.15.90) {"lsl3", "", { @@ -1934,7 +1931,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "f18441027154292836b973c655fa3175", 282649}, {"resource.007", 0, "f18441027154292836b973c655fa3175", 257178}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 3 - English DOS // SCI interpreter version 0.000.572 @@ -1948,7 +1945,28 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "f18441027154292836b973c655fa3175", 282465}, {"resource.007", 0, "f18441027154292836b973c655fa3175", 257174}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + + // Larry 3 - English DOS + // SCI interpreter version 0.000.572 + {"lsl3", "", { + {"resource.map", 0, "0b6bd3e039682830a51c5755c06591db", 5916}, + {"resource.001", 0, "f18441027154292836b973c655fa3175", 456722}, + {"resource.002", 0, "f18441027154292836b973c655fa3175", 578024}, + {"resource.003", 0, "f18441027154292836b973c655fa3175", 506807}, + {"resource.004", 0, "f18441027154292836b973c655fa3175", 513651}, + AD_LISTEND}, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + + // Larry 3 - English DOS (supplied by kervala in bug report #3611488) + {"lsl3", "", { + {"resource.map", 0, "534d8946f10bc71a71b5bf89a84c31be", 5916}, + {"resource.001", 0, "f18441027154292836b973c655fa3175", 456265}, + {"resource.002", 0, "f18441027154292836b973c655fa3175", 577059}, + {"resource.003", 0, "f18441027154292836b973c655fa3175", 506817}, + {"resource.004", 0, "f18441027154292836b973c655fa3175", 513337}, + AD_LISTEND}, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 3 - English DOS Non-Interactive Demo // SCI interpreter version 0.000.530 @@ -1957,7 +1975,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.001", 0, "f773d79b93dfd4052ec8c1cc64c1e6ab", 76525}, {"resource.002", 0, "f773d79b93dfd4052ec8c1cc64c1e6ab", 268299}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 3 - German DOS (from Tobis87, updated info from markcoolio in bug report #2723832, also includes english language) // Executable scanning reports "S.old.123" @@ -1969,7 +1987,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.003", 0, "3827a9b17b926e12dcc336860f50612a", 587036}, {"resource.004", 0, "3827a9b17b926e12dcc336860f50612a", 691932}, AD_LISTEND}, - Common::DE_DEU, Common::kPlatformPC, ADGF_ADDENGLISH, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::DE_DEU, Common::kPlatformDOS, ADGF_ADDENGLISH, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 3 - French DOS (provided by richiefs in bug report #2670691, also includes english language) // Executable scanning reports "S.old.123" @@ -1981,7 +1999,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.003", 0, "65f1bdaa20f6d0470e9d969f22473873", 586921}, {"resource.004", 0, "65f1bdaa20f6d0470e9d969f22473873", 690826}, AD_LISTEND}, - Common::FR_FRA, Common::kPlatformPC, ADGF_ADDENGLISH, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::FR_FRA, Common::kPlatformDOS, ADGF_ADDENGLISH, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 3 1.050 Fr/En (9 x 5.25" disks) // Provided by ssburnout in bug report #3046779 @@ -1995,7 +2013,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "65f1bdaa20f6d0470e9d969f22473873", 325292}, {"resource.007", 0, "65f1bdaa20f6d0470e9d969f22473873", 308982}, AD_LISTEND}, - Common::FR_FRA, Common::kPlatformPC, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::FR_FRA, Common::kPlatformDOS, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 5 - English Amiga // Executable scanning reports "1.004.023" @@ -2034,7 +2052,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "efe8d3f45ce4f6bd9a6643e0ac8d2a97", 504}, {"resource.001", 0, "8bd8d9c0b5f455ee1269d63ce86c50dd", 531380}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 5 - English DOS (from spookypeanut) // SCI interpreter version 1.000.510 @@ -2049,7 +2067,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "dda27ce00682aa76198dac124bbbe334", 1024810}, {"resource.007", 0, "ac443fae1285fb359bf2b2bc6a7301ae", 1030656}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 5 - English Macintosh (from omer_mor, bug report #3328257) {"lsl5", "", { @@ -2078,7 +2096,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "dda27ce00682aa76198dac124bbbe334", 1021774}, {"resource.007", 0, "ac443fae1285fb359bf2b2bc6a7301ae", 993408}, AD_LISTEND}, - Common::DE_DEU, Common::kPlatformPC, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::DE_DEU, Common::kPlatformDOS, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 5 - French DOS (provided by richiefs in bug report #2670691) // Executable scanning reports "1.lsl5.019" @@ -2094,7 +2112,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "dda27ce00682aa76198dac124bbbe334", 946540}, {"resource.007", 0, "ac443fae1285fb359bf2b2bc6a7301ae", 958842}, AD_LISTEND}, - Common::FR_FRA, Common::kPlatformPC, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::FR_FRA, Common::kPlatformDOS, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 5 - Spanish DOS (from the Leisure Suit Larry Collection) // Executable scanning reports "1.ls5.006", VERSION file reports "1.000, 4/21/92" @@ -2110,7 +2128,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "dda27ce00682aa76198dac124bbbe334", 1015136}, {"resource.007", 0, "ac443fae1285fb359bf2b2bc6a7301ae", 987222}, AD_LISTEND}, - Common::ES_ESP, Common::kPlatformPC, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::ES_ESP, Common::kPlatformDOS, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 5 - Italian DOS Floppy (from glorifindel) // SCI interpreter version 1.000.510 (just a guess) @@ -2118,7 +2136,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "a99776df795127f387cb35dae872d4e4", 5919}, {"resource.000", 0, "a8989a5a89e7d4f702b26b378c7a357a", 7001981}, AD_LISTEND}, - Common::IT_ITA, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::IT_ITA, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 5 1.0 EGA DOS (8 x 3.5" disks) // Provided by ssburnout in bug report #3046806 @@ -2133,7 +2151,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "f6046a8445422f17d40b1b10ab21ebf3", 568551}, {"resource.007", 0, "640ee65595d40372ef95462f2c1ae28a", 593429}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 5 EGA // Supplied by omer_mor in bug report #3049771 @@ -2144,7 +2162,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.002", 0, "5a55af4e40728b1a8103dc47ad2afa8d", 1100539}, {"resource.003", 0, "16f4d8fb1b526125edaca4fc6cbb7530", 1064563}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 6 - English DOS (from spookypeanut) // SCI interpreter version 1.001.113 @@ -2152,7 +2170,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "bb8a39d9e2a77ba449a1e591109ad9a8", 6973}, {"resource.000", 0, "4462fe48c7452d98fddcec327a3e738d", 5789138}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 6 - English/German/French DOS CD - LOWRES // SCI interpreter version 1.001.115 @@ -2160,7 +2178,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "0b91234b7112782962cb480b7791b6e2", 7263}, {"resource.000", 0, "57d5fe8bb9e044158514476ea7678eb0", 5754790}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_CD, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_CD, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 6 - German DOS CD - LOWRES (provided by richiefs in bug report #2670691) // SCI interpreter version 1.001.115 @@ -2168,7 +2186,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "bafe85f32738854135991d4324ad147e", 7268}, {"resource.000", 0, "f6cbc6da7b90ea135883e0759848ca2c", 5773160}, AD_LISTEND}, - Common::DE_DEU, Common::kPlatformPC, ADGF_CD, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::DE_DEU, Common::kPlatformDOS, ADGF_CD, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 6 - French DOS CD - LOWRES (provided by richiefs in bug report #2670691) // SCI interpreter version 1.001.115 @@ -2176,7 +2194,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "97797ea775baaf18a1907d357d3c0ea6", 7268}, {"resource.000", 0, "f6cbc6da7b90ea135883e0759848ca2c", 5776092}, AD_LISTEND}, - Common::FR_FRA, Common::kPlatformPC, ADGF_CD, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::FR_FRA, Common::kPlatformDOS, ADGF_CD, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 6 - Spanish DOS - LOWRES (from the Leisure Suit Larry Collection) // Executable scanning reports "1.001.113", VERSION file reports "1.000, 11.06.93, FIVE PATCHES ADDED TO DISK 6 ON 11-18-93" @@ -2184,7 +2202,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "633bf8f42170b6271019917c8009989b", 6943}, {"resource.000", 0, "7884a8db9253e29e6b37a2651fd90ba3", 5733116}, AD_LISTEND}, - Common::ES_ESP, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::ES_ESP, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Crazy Nick's Software Picks: Leisure Suit Larry's Casino - English DOS (from the Leisure Suit Larry Collection) // Executable scanning reports "1.001.029", VERSION file reports "1.000" @@ -2192,35 +2210,35 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "194f1578f2624db813c9072359ad1639", 783}, {"resource.001", 0, "3733433b517ec3d14a3331d9ab3842ae", 344830}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Crazy Nick's Software Picks: King Graham's Board Game Challenge {"cnick-kq", "", { {"resource.map", 0, "44bc538a5cd24b39ffccc967c0ebf84d", 1137}, {"resource.001", 0, "470e7a4a3504635e70b623c44461e1ac", 451272}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Crazy Nick's Software Picks: Parlor Games with Laura Bow {"cnick-laurabow", "", { {"resource.map", 0, "3b826bfe64f8ff1ccf30eef93cd2f727", 999}, {"resource.001", 0, "985ac8db6f636f2b4334c04b0fbb44fb", 336698}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Crazy Nick's Software Picks: Robin Hood's Game of Skill and Chance {"cnick-longbow", "", { {"resource.map", 0, "4a5c81f485a2416bde12978506f2fb5f", 897}, {"resource.001", 0, "ef16dc9e867eb8eeb5b13e110b90bd4b", 571466}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Crazy Nick's Software Picks: Roger Wilco's Spaced Out Game Pack {"cnick-sq", "", { {"resource.map", 0, "b4d95b02d84e297441bd999d34eaa6b1", 879}, {"resource.001", 0, "82ff2b64a60117886fbcd6a3a8c977c6", 364921}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, #ifdef ENABLE_SCI32 // Larry 6 - English/German DOS CD - HIRES @@ -2229,7 +2247,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "0c0804434ea62278dd15032b1947426c", 8872}, {"resource.000", 0, "9a9f4870504444cda863dd14d077a680", 18520872}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 6 - German DOS CD - HIRES (provided by richiefs in bug report #2670691) // SCI interpreter version 2.100.002 @@ -2237,7 +2255,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "badfdf446ffed569a310d2c63a249421", 8896}, {"resource.000", 0, "bd944d2b06614a5b39f1586906f0ee88", 18534274}, AD_LISTEND}, - Common::DE_DEU, Common::kPlatformPC, ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::DE_DEU, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 6 - French DOS CD - HIRES (provided by richiefs in bug report #2670691) // SCI interpreter version 2.100.002 @@ -2245,7 +2263,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "d184e9aa4f2d4b5670ddb3669db82cda", 8896}, {"resource.000", 0, "bd944d2b06614a5b39f1586906f0ee88", 18538987}, AD_LISTEND}, - Common::FR_FRA, Common::kPlatformPC, ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::FR_FRA, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 7 - English DOS Demo (provided by richiefs in bug report #2670691) // SCI interpreter version 2.100.002 @@ -2253,7 +2271,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"ressci.000", 0, "5cc6159688b2dc03790a67c90ccc67f9", 10195878}, {"resmap.000", 0, "6a2b2811eef82e87cde91cf1de845af8", 2695}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO | ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO | ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, #ifdef ENABLE_SCI3_GAMES // Larry 7 - English DOS CD (from spookypeanut) @@ -2262,7 +2280,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resmap.000", 0, "eae93e1b1d1ccc58b4691c371281c95d", 8188}, {"ressci.000", 0, "89353723488219e25589165d73ed663e", 66965678}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 7 - German DOS (from Tobis87) // SCI interpreter version 3.000.000 @@ -2270,7 +2288,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resmap.000", 0, "c11e6bfcfc2f2d05da47e5a7df3e9b1a", 8188}, {"ressci.000", 0, "a8c6817bb94f332ff498a71c8b47f893", 66971724}, AD_LISTEND}, - Common::DE_DEU, Common::kPlatformPC, ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::DE_DEU, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 7 - French DOS (provided by richiefs in bug report #2670691) // SCI interpreter version 3.000.000 @@ -2278,7 +2296,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resmap.000", 0, "4407849fd52fe3efb0c30fba60cd5cd4", 8206}, {"ressci.000", 0, "dc37c3055fffbefb494ff22b145d377b", 66964472}, AD_LISTEND}, - Common::FR_FRA, Common::kPlatformPC, ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::FR_FRA, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 7 - Italian DOS CD (from glorifindel) // SCI interpreter version 3.000.000 @@ -2286,7 +2304,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resmap.000", 0, "9852a97141f789413f29bf956052acdb", 8212}, {"ressci.000", 0, "440b9fed89590abb4e4386ed6f948ee2", 67140181}, AD_LISTEND}, - Common::IT_ITA, Common::kPlatformPC, ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::IT_ITA, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Larry 7 - Spanish DOS (from the Leisure Suit Larry Collection) // Executable scanning reports "3.000.000", VERSION file reports "1.0s" @@ -2294,7 +2312,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resmap.000", 0, "8f3d603e1acc834a5d598b30cdfc93f3", 8188}, {"ressci.000", 0, "32792f9bc1bf3633a88b382bb3f6e40d", 67071418}, AD_LISTEND}, - Common::ES_ESP, Common::kPlatformPC, ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::ES_ESP, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, #endif // Lighthouse - English Windows Demo (from jvprat) @@ -2303,7 +2321,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "543124606352bfa5e07696ddf2a669be", 64}, {"resource.000", 0, "5d7714416b612463d750fb9c5690c859", 28952}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO | ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO | ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, #ifdef ENABLE_SCI3_GAMES // Lighthouse - English Windows Demo @@ -2312,7 +2330,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resmap.000", 0, "3bdee7a16926975a4729f75cf6b80a92", 1525}, {"ressci.000", 0, "3c585827fa4a82f4c04a56a0bc52ccee", 11494351}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO | ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO | ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Lighthouse - English DOS (from jvprat) // Executable scanning reports "3.000.000", VERSION file reports "1.1" @@ -2322,7 +2340,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resmap.002", 0, "c68db5333f152fea6ca2dfc75cad8b34", 7573}, {"ressci.002", 0, "175468431a979b9f317c294ce3bc1430", 94628315}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Lighthouse - Spanish DOS (from jvprat) // Executable scanning reports "3.000.000", VERSION file reports "1.1" @@ -2332,7 +2350,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resmap.002", 0, "e7dc85884a2417e2eff9de0c63dd65fa", 7630}, {"ressci.002", 0, "3c8d627c555b0e3e4f1d9955bc0f0df4", 94631127}, AD_LISTEND}, - Common::ES_ESP, Common::kPlatformPC, ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::ES_ESP, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, #endif // ENABLE_SCI3_GAMES #endif // ENABLE_SCI32 @@ -2343,7 +2361,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.000", 0, "8be56a3a88c065ee00c02c0e29199f3a", 14643}, {"resource.001", 0, "9e33566515b18bee7915db448063bba2", 871853}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Mixed-Up Fairy Tales - English DOS Floppy EGA (from omer_mor, bug report #3035350) {"fairytales", "EGA", { @@ -2354,7 +2372,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.003", 0, "509b2467ba779100d5933ed51a9ae32f", 560255}, {"resource.004", 0, "93afc85d5ffa60ea555d6cc336d22c03", 651109}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Mixed-Up Fairy Tales v1.000 - English DOS (supplied by markcoolio in bug report #2723791) // Executable scanning reports "1.000.145" @@ -2366,7 +2384,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.003", 0, "b1288e0821ee358d1ffe877e5900c8ec", 1047565}, {"resource.004", 0, "f79daa70390d73746742ffcfc3dc4471", 937580}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Mixed-Up Fairy Tales - English DOS Floppy (from jvprat) // Executable scanning reports "1.000.145", Floppy label reports "1.0, 11.13.91", VERSION file reports "1.000" @@ -2377,7 +2395,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.002", 0, "564f516d991032e781492592a4eaa275", 1414142}, {"resource.003", 0, "dd6cef0c592eadb7e6be9a25307c57a2", 1344719}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Mixed-Up Mother Goose - English Amiga (from www.back2roots.org) // Executable scanning reports "1.003.009" @@ -2395,7 +2413,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.001", 0, "d893892d62b3f061357291d66775e360", 239906}, {"resource.002", 0, "d893892d62b3f061357291d66775e360", 719398}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Mixed-Up Mother Goose - English DOS Floppy EGA (supplied by ssburnout in bug report #3049193) // 1.011 5x5.25" (label: Int#8.2.90) @@ -2408,7 +2426,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.004", 0, "dbbc22f124533ce308bc386b08956326", 146251}, {"resource.005", 0, "2ba5348e7fad641b9c4c7ff7c7cf4e68", 110979}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Mixed-Up Mother Goose v2.000 - English DOS Floppy (supplied by markcoolio in bug report #2723795) // Executable scanning reports "1.001.031" @@ -2416,7 +2434,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "52aae15e493cafd1da7e1c9b657a5bb9", 7026}, {"resource.000", 0, "b7ecd8ae9e254e80310b5a668b276e6e", 2948975}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Mixed-Up Mother Goose - English DOS CD (from jvprat) // Executable scanning reports "x.yyy.zzz" @@ -2425,7 +2443,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "1c7f311b0a2c927b2fbe81ae341fb2f6", 5790}, {"resource.001", 0, "5a0ed1d745855148364de1b3be099bac", 4369438}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_CD, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_CD, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Mixed-Up Mother Goose - English Windows Interactive Demo // Executable scanning reports "x.yyy.zzz" @@ -2454,7 +2472,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "5159a1578c4306bfe070a3e4d8c2e1d3", 4741}, {"resource.000", 0, "1926925c95d82f0999590e93b02887c5", 15150768}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Mixed-Up Mother Goose Deluxe - Multilingual Windows CD (English/French/German/Spanish) // Executable scanning reports "2.100.002" @@ -2462,7 +2480,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resmap.000", 0, "ef611af561898dcfea87846919ebf3eb", 4969}, {"ressci.000", 0, "227685bc59d90821978d330713e44a7a", 17205800}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, #endif // ENABLE_SCI32 // Ms. Astro Chicken - English DOS @@ -2471,7 +2489,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "5b457cbe5042f557e5b610148171f6c0", 1158}, {"resource.001", 0, "453ea81ef66a50cbe33ce06302afe47f", 229737}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, #ifdef ENABLE_SCI32 // Phantasmagoria - English DOS (from jvprat) @@ -2492,7 +2510,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resmap.007", 0, "afbd16ea77869a720afa1c5371de107d", 7972}, //{"ressci.007", 0, "3aae6559aa1df273bc542d5ac6330d75", 25859038}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Phantasmagoria - English DOS Demo // Executable scanning reports "2.100.002" @@ -2500,7 +2518,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resmap.001", 0, "416138651ea828219ca454cae18341a3", 11518}, {"ressci.001", 0, "3aae6559aa1df273bc542d5ac6330d75", 65844612}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO | ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO | ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Phantasmagoria - English DOS/Windows (GOG version) - ressci.* merged in ressci.000 // Windows executable scanning reports "2.100.002" - "Sep 19 1995 15:09:43" @@ -2511,7 +2529,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"ressci.000", 0, "cd5967f9b9586e3380645961c0765be3", 116822037}, {"resmap.000", 0, "3cafc1c6a53945c1f3babbfd6380c64c", 16468}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Phantasmagoria - English Macintosh // NOTE: This only contains disc 1 files (as well as the two persistent files: @@ -2565,7 +2583,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "72726dc81c1b4c1110c486be77369bc8", 5179}, {"resource.000", 0, "670d0c53622429f4b11275caf7f8d292", 5459574}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Pepper - English DOS Non-Interactive Demo // Executable scanning reports "1.001.060", VERSION file reports "1.000" @@ -2573,7 +2591,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "379bb4fb896630b14f2d91ed21e36ba1", 984}, {"resource.000", 0, "118f6c31a93ec7fd9a231c61125229e3", 645494}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Pepper - English DOS/Windows Interactive Demo // Executable scanning reports "1.001.069", VERSION file reports ".001" @@ -2581,7 +2599,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "975e8df76106a5c13d12ab674f906a02", 2514}, {"resource.000", 0, "e6a918a2dd7a4bcecd8fb389f43287c2", 1698164}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Pepper - English DOS Interactive Demo // Executable scanning reports "1.001.072", VERSION file reports "1.000" @@ -2589,7 +2607,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "9c9b7b900651a370dd3fb38d478b1798", 2524}, {"resource.000", 0, "e6a918a2dd7a4bcecd8fb389f43287c2", 1713544}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Police Quest 1 VGA Remake - English DOS (from the Police Quest Collection) // Executable scanning reports "1.001.029", VERSION file reports "2.000" @@ -2597,7 +2615,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "35efa814fb994b1cbdac9611e401da67", 5013}, {"resource.000", 0, "e0d5ddf34eda903a38f0837e2aa7145b", 6401433}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Police Quest 2 - English Amiga (from www.back2roots.org) // SCI interpreter version 0.000.685 (just a guess) @@ -2616,7 +2634,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "8b77d0d4650c2052b356cece28294b58", 576}, {"resource.001", 0, "376ef6d6eaaeed66e1424bd219c4b9ab", 215398}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Police Quest 2 - English DOS (provided by richiefs in bug report #2670691) // SCI interpreter version 0.000.395 @@ -2629,7 +2647,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.005", 0, "77f02def3094af804fd2371db25b7100", 349899}, {"resource.006", 0, "77f02def3094af804fd2371db25b7100", 354991}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Police Quest 2 - English DOS (from the Police Quest Collection) // Executable scanning reports "0.000.490" @@ -2639,7 +2657,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.002", 0, "77f02def3094af804fd2371db25b7100", 546000}, {"resource.003", 0, "77f02def3094af804fd2371db25b7100", 591851}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Police Quest 2 - English DOS (from FRG) // SCI interpreter version 0.000.395 @@ -2649,7 +2667,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.002", 0, "77f02def3094af804fd2371db25b7100", 542897}, {"resource.003", 0, "77f02def3094af804fd2371db25b7100", 586857}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Police Quest 2 English DOS 1.001.006 (supplied by merkur-kun in bug report #3028479) {"pq2", "", { @@ -2658,7 +2676,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.002", 0, "77f02def3094af804fd2371db25b7100", 541261}, {"resource.003", 0, "77f02def3094af804fd2371db25b7100", 587511}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Police Quest 2 - Japanese PC-98 (also includes english language) // SCI interpreter version unknown @@ -2708,7 +2726,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.003", 0, "8791b9eef53edf77c2dac950142221d3", 1159791}, {"resource.004", 0, "1b91e891a3c60a941dac0eecdf83375b", 1143606}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Police Quest 3 - English DOS Non-Interactive Demo // Executable scanning reports "T.A00.052" @@ -2718,7 +2736,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.000", 0, "277f97771f7a6d89677141f02da313d6", 65150}, {"resource.001", 0, "5c5a551b6c86cce2ee75becb90e0b586", 624411}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Police Quest 3 - German DOS (supplied by markcoolio in bug report #2723837, also includes english language) // Executable scanning reports "T.A00.178" @@ -2731,14 +2749,14 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.003", 0, "4836f460f4cfc8de61e2df4c45775504", 1180956}, {"resource.004", 0, "0c3eb84b9755852d9e795e0d5c9373c7", 1171760}, AD_LISTEND}, - Common::DE_DEU, Common::kPlatformPC, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::DE_DEU, Common::kPlatformDOS, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Police Quest 3 - Spanish DOS v1.000 - Supplied by dianiu in bug report #3555647 {"pq3", "", { {"resource.map", 0, "ffa0b4631c4e36d69631256d19ba29e7", 5421}, {"resource.000", 0, "5ee460af3d70c06a745cc482b6c783ba", 5410263}, AD_LISTEND}, - Common::ES_ESP, Common::kPlatformPC, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::ES_ESP, Common::kPlatformDOS, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Police Quest 3 EGA // Reported by musiclyinspired in bug report #3046573 @@ -2751,7 +2769,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.004", 0, "b96a86ab681769e4cbb439670d967ca6", 449682}, {"resource.005", 0, "9e6c53a0e7eef53694d260fade8b1fc7", 724000}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Police Quest 4 - English DOS Non-Interactive Demo (from FRG) // SCI interpreter version 1.001.096 @@ -2759,7 +2777,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "be56f87a1c4a13062a30a362df860c2f", 1472}, {"resource.000", 0, "527d5684016e6816157cd15d9071b11b", 1121310}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, #ifdef ENABLE_SCI32 // Police Quest 4 - English DOS CD (from the Police Quest Collection) @@ -2768,7 +2786,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "379dfe80ed6bd16c47e4b950c4722eac", 11374}, {"resource.000", 0, "fd316a09b628b7032248139003369022", 18841068}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_CD | ADGF_UNSTABLE, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_CD | ADGF_UNSTABLE, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Police Quest 4 - German DOS CD (German text, English speech) // Supplied by markcoolio in bug report #3392955 @@ -2776,7 +2794,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "a398076371ed0e1e706c8f9fb9fc7ac5", 11386}, {"resource.000", 0, "6ff21954e0a2c5992279e7eb787c8d56", 18918747}, AD_LISTEND}, - Common::DE_DEU, Common::kPlatformPC, ADGF_CD | ADGF_UNSTABLE, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::DE_DEU, Common::kPlatformDOS, ADGF_CD | ADGF_UNSTABLE, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Police Quest 4 - English DOS // SCI interpreter version 2.000.000 (a guess?) @@ -2784,7 +2802,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "aed9643158ccf01b71f359db33137f82", 9895}, {"resource.000", 0, "da383857b3be1e4514daeba2524359e0", 15141432}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_UNSTABLE, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Police Quest 4 - French DOS (supplied by abevi in bug report #2612718) // SCI interpreter version 2.000.000 @@ -2792,7 +2810,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "008030846edcc7c5c7a812c7f4ae4ceb", 9256}, {"resource.000", 0, "6ba98bd2e436739d87ecd2a9b99cabb4", 14730153}, AD_LISTEND}, - Common::FR_FRA, Common::kPlatformPC, ADGF_UNSTABLE, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::FR_FRA, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Police Quest 4 - German DOS (supplied by markcoolio in bug report #2723840) // SCI interpreter version 2.000.000 (a guess?) @@ -2800,7 +2818,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "2393ee728ab930b2762cb5889f9b5aff", 9256}, {"resource.000", 0, "6ba98bd2e436739d87ecd2a9b99cabb4", 14730155}, AD_LISTEND}, - Common::DE_DEU, Common::kPlatformPC, ADGF_UNSTABLE, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::DE_DEU, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Police Quest: SWAT - English DOS/Windows Demo (from jvprat) // Executable scanning reports "2.100.002", VERSION file reports "0.001.200" @@ -2808,7 +2826,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "8c96733ef94c21526792f7ca4e3f2120", 1648}, {"resource.000", 0, "d8892f1b8c56c8f7704325460f49b300", 3676175}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO | ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO | ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Police Quest: SWAT - English DOS (from GOG.com) // Executable scanning reports "2.100.002", VERSION file reports "1.0c" @@ -2816,7 +2834,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resmap.000", 0, "1c2563fee189885e29d9348f37306d94", 12175}, {"ressci.000", 0, "b2e1826ca81ce2e7e764587f5a14eee9", 127149181}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Police Quest: SWAT - English Windows (from the Police Quest Collection) // Executable scanning reports "2.100.002", VERSION file reports "1.0c" @@ -2844,7 +2862,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.003", 0, "7ab2bf8e224b57f75e0cd6e4ba790761", 642203}, {"resource.004", 0, "7ab2bf8e224b57f75e0cd6e4ba790761", 641688}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Quest for Glory 1 / Hero's Quest - English DOS 3.5" Floppy (supplied by alonzotg in bug report #3206006) {"qfg1", "", { @@ -2855,7 +2873,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.003", 0, "7ab2bf8e224b57f75e0cd6e4ba790761", 642203}, {"resource.004", 0, "7ab2bf8e224b57f75e0cd6e4ba790761", 641688}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Quest for Glory 1 / Hero's Quest - English DOS 3.5" Floppy v1.102 Int#0.000.629 (suppled by digitoxin1 in bug report #3554611) {"qfg1", "", { @@ -2866,7 +2884,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.003", 0, "f0af87c60ec869946da442833aa5afa8", 640502}, {"resource.004", 0, "f0af87c60ec869946da442833aa5afa8", 644575}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Quest for Glory 1 / Hero's Quest - English DOS 5.25" Floppy v1.102 Int#0.000.629 (suppled by digitoxin1 in bug report #3554611) {"qfg1", "", { @@ -2880,7 +2898,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "48b2b3c964dcbeccb68e984e6d4e97db", 278473}, {"resource.007", 0, "f0af87c60ec869946da442833aa5afa8", 269237}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Quest for Glory 1 / Hero's Quest - English DOS 5.25" Floppy (supplied by markcoolio in bug report #2723843) // Executable scanning reports "0.000.566" @@ -2895,7 +2913,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "69366c2a2f99917199fe1b60a4fee19d", 267852}, {"resource.007", 0, "7ab2bf8e224b57f75e0cd6e4ba790761", 272747}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Quest for Glory 1 / Hero's Quest - English DOS 5.25" Floppy (supplied by ssburnout in bug report #3049193) // 1.001 10x5.25" (label: INT.#0.000.566) @@ -2910,7 +2928,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "69366c2a2f99917199fe1b60a4fee19d", 267852}, {"resource.007", 0, "7ab2bf8e224b57f75e0cd6e4ba790761", 272747}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Quest for Glory 1 / Hero's Quest - English DOS 5.25" Floppy (supplied by ssburnout in bug report #3049193) // 1.200 10x5.25" (label: INT#9.10.90) @@ -2925,7 +2943,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "f46690dca714abc8c89357d30e363dd3", 278387}, {"resource.007", 0, "951299a82a8134ed12c5c18118d45c2f", 269173}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Quest for Glory 1 / Hero's Quest - English DOS Demo // Executable scanning reports "0.000.685" @@ -2933,7 +2951,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "df34c758cbb9026da175793ff686b0e6", 882}, {"resource.001", 0, "73fbaafdd313b39aeedb80fbf85ecef1", 389884}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Quest for Glory 1 - Japanese PC-98 5.25" Floppy (also includes English language) // Executable scanning reports "S.old.201" @@ -2979,7 +2997,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.003", 0, "951299a82a8134ed12c5c18118d45c2f", 640483}, {"resource.004", 0, "951299a82a8134ed12c5c18118d45c2f", 644443}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Quest for Glory 1 VGA Remake - English DOS // Executable scanning reports "2.000.411" @@ -2987,7 +3005,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "a731fb6c9c0b282443f7027bc8694d4c", 8469}, {"resource.000", 0, "ecace1a2771846b1a8aa1afdd44111a0", 6570147}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Quest for Glory 1 VGA Remake - English DOS Non-Interactive Demo (from FRG) // SCI interpreter version 1.001.029 @@ -2995,7 +3013,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "ac0257051c95a59c0cdc0be24d9b11fa", 729}, {"resource.000", 0, "ec6f5cf369054dd3e5392995e9975b9e", 768218}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Quest for Glory 1 VGA Remake - English Macintosh Floppy // VERSION file reports "2.0" @@ -3031,7 +3049,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.003", 0, "0790f67d87642132be515cab05026baa", 972144}, {"resource.004", 0, "2ac1e6fea9aa1f5b91a06693a67b9766", 982830}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Quest for Glory 2 - English (supplied by ssburnout in bug report #3049193) // 1.000 9x3.5" (label: INT#10.31.90) @@ -3046,7 +3064,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "5e9deacbdb17198ad844988e04833520", 498593}, {"resource.007", 0, "2ac1e6fea9aa1f5b91a06693a67b9766", 490151}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Quest for Glory 2 - English (from FRG) // Executable scanning reports "1.000.072" @@ -3058,7 +3076,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.003", 0, "b192607c42f6960ecdf2ad2e4f90e9bc", 972804}, {"resource.004", 0, "cd2de58e27665d5853530de93fae7cd6", 983617}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Quest for Glory 2 - English DOS // Executable scanning reports "1.000.072" @@ -3073,7 +3091,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "b1944bd664ddbd2859cdaa0c4a0d6281", 507489}, {"resource.007", 0, "cd2de58e27665d5853530de93fae7cd6", 490794}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Quest for Glory 2 - English DOS (supplied by digitoxin1 in bug report #3554614) // v1.102 9x3.5" (label: Int#11.20.90) @@ -3088,7 +3106,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "b1944bd664ddbd2859cdaa0c4a0d6281", 507489}, {"resource.007", 0, "cd2de58e27665d5853530de93fae7cd6", 490794}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Quest for Glory 2 - English DOS Non-Interactive Demo // Executable scanning reports "1.000.046" @@ -3096,7 +3114,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "e75eb86bdd517b3ef709058249986a87", 906}, {"resource.001", 0, "9b098f9e1008abe30e56c93b896494e6", 362123}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Quest for Glory 3 - English DOS Non-Interactive Demo (from FRG) // Executable scanning reports "1.001.021", VERSION file reports "1.000, 0.001.059, 6.12.92" @@ -3104,7 +3122,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "fd71de9b588a45f085317caacf050e91", 687}, {"resource.000", 0, "b6c69bf6c18bf177492249fe81fc6a6d", 648702}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Quest for Glory 3 - English DOS // SCI interpreter version 1.001.050 @@ -3112,7 +3130,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "19e2bf9b693932b5e2bb59b9f9ab86c9", 5958}, {"resource.000", 0, "6178ad2e83e58e4671ca03315f7a6498", 5868000}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Quest for Glory 3 - English DOS (supplied by abevi in bug report #2612718) // SCI interpreter version 1.001.050 @@ -3120,7 +3138,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "62c185d190363d7df06330fa0cc45b36", 5958}, {"resource.000", 0, "6178ad2e83e58e4671ca03315f7a6498", 5867442}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Quest for Glory 3 - English DOS (supplied by dknute in bug report #3125559) {"qfg3", "", { @@ -3128,7 +3146,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.000", 0, "6178ad2e83e58e4671ca03315f7a6498", 5868042}, {"resource.msg", 0, "27e5419c98ce444253f88c95dced14a9", 246888}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Quest for Glory 3 - German DOS (supplied by markcoolio in bug report #2723846) // Executable scanning reports "L.rry.083" @@ -3136,7 +3154,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "19e2bf9b693932b5e2bb59b9f9ab86c9", 5958}, {"resource.000", 0, "6178ad2e83e58e4671ca03315f7a6498", 5868042}, AD_LISTEND}, - Common::DE_DEU, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::DE_DEU, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Quest for Glory 3 - French DOS v1.1 (supplied by misterhands in bug report #3586214) // Executable scanning reports "L.rry.083" @@ -3145,7 +3163,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.000", 0, "6178ad2e83e58e4671ca03315f7a6498", 5868000}, {"resource.msg", 0, "0fa1047002df904b8d1807bb7bab4fab", 267210}, AD_LISTEND}, - Common::FR_FRA, Common::kPlatformPC, 0, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::FR_FRA, Common::kPlatformDOS, 0, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Quest for Glory 3 - Spanish DOS CD (from jvprat) // Executable scanning reports "L.rry.083", VERSION file reports "1.000.000, June 30, 1994" @@ -3154,7 +3172,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.000", 0, "ba7ac86155e4c531e46cd73c86daa80a", 5884098}, {"resource.msg", 0, "a63974730d294dec0bea10057c36e506", 256014}, AD_LISTEND}, - Common::ES_ESP, Common::kPlatformPC, 0, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::ES_ESP, Common::kPlatformDOS, 0, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Quest for Glory 3 - Italian DOS // Supplied by ghoost in bug report #3053457 @@ -3163,7 +3181,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.000", 0, "6178ad2e83e58e4671ca03315f7a6498", 5868000}, {"resource.msg", 0, "5a0a896ff3e4a628db38a75eb6c84114", 259018}, AD_LISTEND}, - Common::IT_ITA, Common::kPlatformPC, 0, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::IT_ITA, Common::kPlatformDOS, 0, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Quest for Glory 4 - English DOS Non-Interactive Demo (from FRG) // SCI interpreter version 1.001.069 (just a guess) @@ -3171,7 +3189,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "1ba7c7ae1efb315326d45cb931569b1b", 922}, {"resource.000", 0, "41ba03f0b188b029132daa3ece0d3e14", 623154}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, #ifdef ENABLE_SCI32 // Quest for Glory 4 1.1 Floppy - English DOS (supplied by markcool in bug report #2723852) @@ -3180,7 +3198,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "685bdb1ed47bbbb0e5e25db392da83ce", 9301}, {"resource.000", 0, "f64fd6aa3977939a86ff30783dd677e1", 11004993}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_UNSTABLE, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Quest for Glory 4 1.1 Floppy - English DOS (supplied by abevi in bug report #2612718) // SCI interpreter version 2.000.000 @@ -3188,7 +3206,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "d10a4cc177d2091d744e2ad8c049b0ae", 9295}, {"resource.000", 0, "f64fd6aa3977939a86ff30783dd677e1", 11003589}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_UNSTABLE, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Quest for Glory 4 1.1 Floppy - German DOS (supplied by markcool in bug report #2723850) // Executable scanning reports "2.000.000", VERSION file reports "1.1" @@ -3196,7 +3214,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "9e0abba8746f40565bc7eb5720522ecd", 9301}, {"resource.000", 0, "57f22cdc54eeb35fce1f26b31b5c3ee1", 11076197}, AD_LISTEND}, - Common::DE_DEU, Common::kPlatformPC, ADGF_UNSTABLE, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::DE_DEU, Common::kPlatformDOS, ADGF_UNSTABLE, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Quest for Glory 4 CD - English DOS/Windows (from jvprat) // Executable scanning reports "2.100.002", VERSION file reports "1.0" @@ -3204,7 +3222,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "aba367f2102e81782d961b14fbe3d630", 10246}, {"resource.000", 0, "263dce4aa34c49d3ad29bec889007b1c", 11571394}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_CD | ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_CD | ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // RAMA - English DOS/Windows Demo // Executable scanning reports "2.100.002", VERSION file reports "000.000.008" @@ -3307,7 +3325,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.msg", 0, "1aeafe2b495de288d002109650b66614", 1364}, {"resource.000", 0, "8e10d4f05c1fd9f883384fa38a898489", 377394}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Slater & Charlie Go Camping - English DOS/Windows {"slater", "", { @@ -3315,7 +3333,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "21f85414124dc23e54544a5536dc35cd", 4044}, {"resource.msg", 0, "c44f51fb955eae266fecf360ebcd5ad2", 1132}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Slater & Charlie Go Camping - English DOS/Windows (Sierra Originals) @@ -3324,7 +3342,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "21f85414124dc23e54544a5536dc35cd", 4044}, {"resource.msg", 0, "c44f51fb955eae266fecf360ebcd5ad2", 1132}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Slater & Charlie Go Camping - English Macintosh {"slater", "", { @@ -3357,7 +3375,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.003", 0, "c47600e50c6fc591957ae0c5020ee7b8", 1213262}, {"resource.004", 0, "e19ea4ad131472f9238590f2e1d40289", 1203051}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest 1 VGA Remake - English Mac (from Fingolfin) {"sq1sci", "SCI", { @@ -3376,7 +3394,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "5af709ac5e0e923e0b8174f49978c30e", 636}, {"resource.001", 0, "fd99ea43f57576ded7c86036996346cf", 507642}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest 1 VGA Remake - Spanish DOS Floppy (from jvprat) // Executable scanning reports "T.A00.081", VERSION file reports "2.000" @@ -3390,7 +3408,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.004", 0, "9b78228ad4f9f335fedf74f1812dcfca", 513325}, {"resource.005", 0, "7d4ebcb745c0bf8fc42e4013f52ecd49", 1101812}, AD_LISTEND}, - Common::ES_ESP, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::ES_ESP, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest I 2.0 EGA DOS (6 x 3.5" disks) // Provided by ssburnout in bug report #3046805 @@ -3403,7 +3421,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.004", 0, "975c6e81194ae6b65e960a248129ecaa", 684119}, {"resource.005", 0, "13d96f7905637552c0647175ff816145", 695589}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest 3 - English Amiga (from www.back2roots.org) // SCI interpreter version 0.000.453 (just a guess) @@ -3435,7 +3453,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "ec66ac2b1ce58b2575ba00b65058de1a", 612}, {"resource.001", 0, "ceeda7202b96e5c85ecaa88a40a540fc", 180245}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest 3 - English DOS (provided by richiefs in bug report #2670691) // SCI interpreter version 0.000.453 @@ -3445,7 +3463,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.002", 0, "ceeda7202b96e5c85ecaa88a40a540fc", 720244}, {"resource.003", 0, "ceeda7202b96e5c85ecaa88a40a540fc", 688367}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest 3 - English DOS (from the Space Quest Collection) // Executable scanning reports "0.000.685", VERSION file reports "1.018" @@ -3455,7 +3473,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.002", 0, "8b55c4875298f45ea5696a5ee8f6a7fe", 715777}, {"resource.003", 0, "8b55c4875298f45ea5696a5ee8f6a7fe", 703370}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest 3 - English DOS (from abevi, bug report #2612718) {"sq3", "", { @@ -3467,7 +3485,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.005", 0, "ceeda7202b96e5c85ecaa88a40a540fc", 328278}, {"resource.006", 0, "ceeda7202b96e5c85ecaa88a40a540fc", 356702}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest 3 - English Mac (from Fingolfin) {"sq3", "", { @@ -3490,7 +3508,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.006", 0, "9107c2aa5398e28b5c5406df13491f85", 320643}, {"resource.007", 0, "9107c2aa5398e28b5c5406df13491f85", 344287}, AD_LISTEND}, - Common::DE_DEU, Common::kPlatformPC, ADGF_ADDENGLISH, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::DE_DEU, Common::kPlatformDOS, ADGF_ADDENGLISH, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest 3 v1.052 - German DOS (supplied by markcoolio in bug report #2723860, also includes english language) // Executable scanning reports "S.old.114" @@ -3500,7 +3518,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.002", 0, "9107c2aa5398e28b5c5406df13491f85", 596768}, {"resource.003", 0, "9107c2aa5398e28b5c5406df13491f85", 693573}, AD_LISTEND}, - Common::DE_DEU, Common::kPlatformPC, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::DE_DEU, Common::kPlatformDOS, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest 4 - English Amiga // Executable scanning reports "1.004.024" @@ -3538,7 +3556,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "a18088c8aceb06025dbc945f29e02935", 5124}, {"resource.000", 0, "e1f46832cd2458796028e054a0466031", 5502009}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_PIRATED, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_PIRATED, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest 4 - English DOS // Executable scanning reports "1.000.753" @@ -3547,7 +3565,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "71ccf4f82ac4efb588731acfb7bf2603", 5646}, {"resource.000", 0, "e1f46832cd2458796028e054a0466031", 933928}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest 4 1.052 - English DOS Floppy (supplied by markcoolio in bug report #2723865) // Executable scanning reports "1.000.753" @@ -3561,7 +3579,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.004", 0, "ff9c87da3bc53473fdee8b9d3edbc93c", 1200631}, {"resource.005", 0, "e33019ac19f755ae33fbf49b4fc9066c", 1053294}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest 4 1.000 - French DOS Floppy (supplied by misterhands in bug report #3515247) {"sq4", "", { @@ -3574,7 +3592,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.004", 0, "b2cca3afcf2e013b8ce86b64155af766", 1254353}, {"resource.005", 0, "9e520577e035547c4b5149a6d12ef85b", 1098814}, AD_LISTEND}, - Common::FR_FRA, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::FR_FRA, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest 4 1.000 - English DOS Floppy (from abevi, bug report #2612718) {"sq4", "", { @@ -3586,7 +3604,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.004", 0, "c06350184a490c10eb4585fff0aa3192", 1254368}, {"resource.005", 0, "b8d6efbd3235329bfe844c794097b2c9", 1098717}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest IV DOS 1.060 EGA (6 x 3.5" disks) // Supplied by ssburnout in bug report #3046781 @@ -3599,7 +3617,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.004", 0, "9a673e33c3f6dd560b993ffed77eeb49", 534994}, {"resource.005", 0, "3c4841d0a3ebba4404af588c93620c22", 595465}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest 4 - German DOS (from Tobis87, also includes english language) // SCI interpreter version 1.000.200 (just a guess) @@ -3613,7 +3631,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.005", 0, "47ee647b5b12232d27e63cc627c25899", 1156765}, {"resource.006", 0, "dfb023e4e2a1e7a00fa18f9ede72a91b", 924059}, AD_LISTEND}, - Common::DE_DEU, Common::kPlatformPC, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::DE_DEU, Common::kPlatformDOS, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest 4 - Italian DOS Floppy (from glorifindel, also includes english language) // SCI interpreter version 1.000.200 (just a guess) @@ -3626,7 +3644,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.004", 0, "4277c61bed40a50dadc4b5a344520af2", 1251000}, {"resource.005", 0, "5f885abd335978e2fd4e5f886d7676c8", 1102880}, AD_LISTEND}, - Common::IT_ITA, Common::kPlatformPC, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::IT_ITA, Common::kPlatformDOS, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest 4 - Japanese PC-98 5.25" Floppy (also includes english language) // SCI interpreter version 1.000.1068 @@ -3654,7 +3672,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "ed90a8e3ccc53af6633ff6ab58392bae", 7054}, {"resource.000", 0, "63247e3901ab8963d4eece73747832e0", 5157378}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_CD, GUIO4(GAMEOPTION_SQ4_SILVER_CURSORS, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_CD, GUIO4(GAMEOPTION_SQ4_SILVER_CURSORS, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest 4 - English Windows CD (from the Space Quest Collection) // Executable scanning reports "1.001.064", VERSION file reports "1.0" @@ -3678,7 +3696,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.004", 0, "776fba81c110d1908776232cbe190e20", 1253752}, {"resource.005", 0, "55fae26c2a92f16ef72c1e216e827c0f", 1098328}, AD_LISTEND}, - Common::ES_ESP, Common::kPlatformPC, ADGF_ADDENGLISH, GUIO4(GAMEOPTION_SQ4_SILVER_CURSORS, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::ES_ESP, Common::kPlatformDOS, ADGF_ADDENGLISH, GUIO4(GAMEOPTION_SQ4_SILVER_CURSORS, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest 4 - Spanish DOS Floppy (from jvprat, also includes english language) // Executable scanning reports "1.SQ4.056", VERSION file reports "1.000" @@ -3690,7 +3708,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.002", 0, "74c62fa2146ff3b3b2ea2b3fb95b9af9", 1140801}, {"resource.003", 0, "42a307941edeb1a3be31daeb2e4be90b", 1088408}, AD_LISTEND}, - Common::ES_ESP, Common::kPlatformPC, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::ES_ESP, Common::kPlatformDOS, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest 4 1.000 - German DOS Floppy (supplied by markcoolio in bug report #2723862, also includes english language) // Executable scanning reports "1.SQ4.030" @@ -3704,7 +3722,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.004", 0, "c06350184a490c10eb4585fff0aa3192", 1254368}, {"resource.005", 0, "b8d6efbd3235329bfe844c794097b2c9", 1098717}, AD_LISTEND}, - Common::DE_DEU, Common::kPlatformPC, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::DE_DEU, Common::kPlatformDOS, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest 4 - English Macintosh // Executable scanning reports "x.yyy.zzz" @@ -3732,7 +3750,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.004", 0, "2763fe4f0cb74df716ec8b0c464b0988", 1217428}, {"resource.005", 0, "d608713197c5ba1cd8c6ed46299c3069", 1057924}, AD_LISTEND}, - Common::RU_RUS, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::RU_RUS, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest 5 - English DOS (from the Space Quest Collection) // Executable scanning reports "1.001.068", VERSION file reports "1.04" @@ -3741,16 +3759,16 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.000", 0, "4147edc5045e6d62998018b5614c58ec", 5496486}, {"resource.msg", 0, "bb8ad78793c26bdb3f77498b1d6515a9", 125988}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest 5 - English DOS - THIS IS THE UNOFFICIAL BETA VERSION, WHICH IS OBVIOUSLY PIRATED AND CONTAINS MANY BUGS - // ffs. http://www.akril15.com/sr/sq5alt/sq5alt.html =DO NOT RE-ADD= + // refer to http://www.akril15.com/sr/sq5alt/sq5alt.html =DO NOT RE-ADD= // SCI interpreter version 1.001.067 {"sq5", "", { {"resource.map", 0, "8bde0a9adb9a3e9aaa861826874c9834", 6473}, {"resource.000", 0, "f4a48705764544d7cc64a7bb22a610df", 6025184}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_PIRATED, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_PIRATED, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest 5 v1.04 - German DOS (from Tobis87, updated information by markcool from bug reports #2723935 and #2724762) // SCI interpreter version 1.001.068 @@ -3759,7 +3777,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.000", 0, "4147edc5045e6d62998018b5614c58ec", 5496486}, {"resource.msg", 0, "7c71cfc36153cfe07b450423a51f7e68", 146282}, AD_LISTEND}, - Common::DE_DEU, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::DE_DEU, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest 5 v1.04 - French DOS (from Hkz, Included in Space Quest Collector's Edition, with chapters I-V) {"sq5", "", { @@ -3767,7 +3785,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.000", 0, "4147edc5045e6d62998018b5614c58ec", 5496486}, {"resource.msg", 0, "877c42380320eb1db7dad83ccd261214", 140374}, AD_LISTEND}, - Common::FR_FRA, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::FR_FRA, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest 5 - Italian DOS Floppy (from glorifindel) // SCI interpreter version 1.001.068 (just a guess) @@ -3775,7 +3793,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.000", 0, "5040026519f37199f3616fb1d4704dff", 6047170}, {"resource.map", 0, "5b09168baa2f6e2e22787429b2d72f54", 6492}, AD_LISTEND}, - Common::IT_ITA, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::IT_ITA, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest 5 - Spanish DOS Floppy (from mirir, bug report #3090664) {"sq5", "", { @@ -3783,7 +3801,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "5714a899033bdebf2d61ad333c8c6637", 6492}, {"resource.msg", 0, "46deca7ef9cf057f7d442df98c1a2ae2", 134612}, AD_LISTEND}, - Common::ES_ESP, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::ES_ESP, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest 5 - Russian DOS // Executable scanning reports "1.001.068", VERSION file reports "1.994" @@ -3792,7 +3810,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.000", 0, "6f9ed21e1001526b4137f6703ed476af", 6103778}, {"resource.msg", 0, "0a8931990cd2eac1691602391c68ab85", 147580}, AD_LISTEND}, - Common::RU_RUS, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::RU_RUS, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, #ifdef ENABLE_SCI32 // Space Quest 6 - English DOS/Win3.11 CD (from the Space Quest Collection) @@ -3801,7 +3819,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "6dddfa3a8f3a3a513ec9dfdfae955005", 10528}, {"resource.000", 0, "c4259ab7355aead07773397b1052827d", 41150806}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_CD | ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_CD | ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest 6 - English DOS/Win3.11 CD ver 1.11 (from FRG) // SCI interpreter version 2.100.002 (just a guess) @@ -3809,7 +3827,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "e0615d6e4e10e37ae42e6a2a95aaf145", 10528}, {"resource.000", 0, "c4259ab7355aead07773397b1052827d", 41150806}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_CD | ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_CD | ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest 6 - French DOS/Win3.11 CD (from French magazine Joystick - September 1997) // Executable scanning reports "2.100.002", VERSION file reports "1.0" @@ -3817,7 +3835,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "3c831625931d5079b73ae8c275f52c95", 10534}, {"resource.000", 0, "4195ca940f759424f62b90e262cc1737", 40932397}, AD_LISTEND}, - Common::FR_FRA, Common::kPlatformPC, ADGF_CD | ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::FR_FRA, Common::kPlatformDOS, ADGF_CD | ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest 6 - German DOS (from Tobis87, updated info from markcoolio in bug report #2723884) // SCI interpreter version 2.100.002 (just a guess) @@ -3825,7 +3843,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "664d797415484f85c90b1b45aedc7686", 10534}, {"resource.000", 0, "ba87ba91e5bdabb4169dd0df75777722", 40933685}, AD_LISTEND}, - Common::DE_DEU, Common::kPlatformPC, ADGF_CD | ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::DE_DEU, Common::kPlatformDOS, ADGF_CD | ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // Space Quest 6 - English DOS/Win3.11 Interactive Demo (from FRG) // SCI interpreter version 2.100.002 (just a guess) @@ -3833,7 +3851,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "368f07b07433db3f819fa3fa0e5efee5", 2572}, {"resource.000", 0, "ab12724e078dea34b624e0d2a38dcd7c", 2272050}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO | ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO | ADGF_UNSTABLE, GUIO5(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, #endif // ENABLE_SCI32 // The Island of Dr. Brain - English DOS CD (from jvprat) @@ -3842,7 +3860,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "2388efef8430b041b0f3b00b9050e4a2", 3281}, {"resource.000", 0, "b3acd9b9dd7fe53c4ee133ac9a1acfab", 2103560}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // The Island of Dr. Brain - English DOS (from Quietust) // Executable scanning reports "1.001.053", VERSION file reports "1.1 2.3.93" @@ -3850,7 +3868,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "3c07da06bdd1689f9d07af78fb94d0ec", 3101}, {"resource.000", 0, "ecc686e0034fb4d41de077ac7167b3cf", 1947866}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, // The Island of Dr. Brain - English DOS Non-Interactive Demo // SCI interpreter version 1.001.053 (just a guess) @@ -3858,7 +3876,7 @@ static const struct ADGameDescription SciGameDescriptions[] = { {"resource.map", 0, "a8e5ca8ed1996974afa59f4c45e06195", 986}, {"resource.000", 0, "b3acd9b9dd7fe53c4ee133ac9a1acfab", 586560}, AD_LISTEND}, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) }, #ifdef ENABLE_SCI32 // Torin's Passage - English Windows Interactive Demo diff --git a/engines/sci/engine/features.cpp b/engines/sci/engine/features.cpp index 49e2bfc79f..6005ac50be 100644 --- a/engines/sci/engine/features.cpp +++ b/engines/sci/engine/features.cpp @@ -496,7 +496,9 @@ bool GameFeatures::autoDetectSci21KernelType() { opcode = extOpcode >> 1; // Check for end of script - if (opcode == op_ret || offset >= script->getBufSize()) + // We don't check for op_ret here because the Phantasmagoria Mac script + // has an op_ret early on in its script (controlled by a branch). + if (offset >= script->getBufSize()) break; if (opcode == op_callk) { diff --git a/engines/sci/engine/kernel.cpp b/engines/sci/engine/kernel.cpp index 46051ef145..8d55790ad2 100644 --- a/engines/sci/engine/kernel.cpp +++ b/engines/sci/engine/kernel.cpp @@ -132,7 +132,7 @@ void Kernel::loadSelectorNames() { return; } - int count = isBE ? READ_BE_UINT16(r->data) : READ_LE_UINT16(r->data) + 1; // Counter is slightly off + int count = (isBE ? READ_BE_UINT16(r->data) : READ_LE_UINT16(r->data)) + 1; // Counter is slightly off for (int i = 0; i < count; i++) { int offset = isBE ? READ_BE_UINT16(r->data + 2 + i * 2) : READ_LE_UINT16(r->data + 2 + i * 2); @@ -536,7 +536,7 @@ void Kernel::mapFunctions() { SciVersion myVersion = getSciVersion(); switch (g_sci->getPlatform()) { - case Common::kPlatformPC: + case Common::kPlatformDOS: case Common::kPlatformFMTowns: platformMask = SIGFOR_DOS; break; @@ -585,6 +585,17 @@ void Kernel::mapFunctions() { continue; } +#ifdef ENABLE_SCI32 + // HACK: Phantasmagoria Mac uses a modified kDoSound (which *nothing* + // else seems to use)! + if (g_sci->getPlatform() == Common::kPlatformMacintosh && g_sci->getGameId() == GID_PHANTASMAGORIA && kernelName == "DoSound") { + _kernelFuncs[id].function = kDoSoundPhantasmagoriaMac; + _kernelFuncs[id].signature = parseKernelSignature("DoSoundPhantasmagoriaMac", "i.*"); + _kernelFuncs[id].name = "DoSoundPhantasmagoriaMac"; + continue; + } +#endif + // If the name is known, look it up in s_kernelMap. This table // maps kernel func names to actual function (pointers). SciKernelMapEntry *kernelMap = s_kernelMap; diff --git a/engines/sci/engine/kernel.h b/engines/sci/engine/kernel.h index e3ebce80fb..8a021073fc 100644 --- a/engines/sci/engine/kernel.h +++ b/engines/sci/engine/kernel.h @@ -471,6 +471,9 @@ reg_t kAddLine(EngineState *s, int argc, reg_t *argv); reg_t kUpdateLine(EngineState *s, int argc, reg_t *argv); reg_t kDeleteLine(EngineState *s, int argc, reg_t *argv); +// Phantasmagoria Mac Special Kernel Function +reg_t kDoSoundPhantasmagoriaMac(EngineState *s, int argc, reg_t *argv); + // SCI3 Kernel functions reg_t kPlayDuck(EngineState *s, int argc, reg_t *argv); #endif diff --git a/engines/sci/engine/kevent.cpp b/engines/sci/engine/kevent.cpp index 34477cc23b..11ef18c0c2 100644 --- a/engines/sci/engine/kevent.cpp +++ b/engines/sci/engine/kevent.cpp @@ -87,10 +87,11 @@ reg_t kGetEvent(EngineState *s, int argc, reg_t *argv) { g_sci->getVocabulary()->parser_event = NULL_REG; // Invalidate parser event if (s->_cursorWorkaroundActive) { - // ffs: GfxCursor::setPosition() - // we check, if actual cursor position is inside given rect - // if that's the case, we switch ourself off. Otherwise - // we simulate the original set position to the scripts + // We check if the actual cursor position is inside specific rectangles + // where the cursor itself should be moved to. If this is the case, we + // set the mouse cursor's position to be within the rectangle in + // question. Check GfxCursor::setPosition(), for a more detailed + // explanation and a list of cursor position workarounds. if (s->_cursorWorkaroundRect.contains(mousePos.x, mousePos.y)) { s->_cursorWorkaroundActive = false; } else { diff --git a/engines/sci/engine/kfile.cpp b/engines/sci/engine/kfile.cpp index 09ea35e792..c6635f2f27 100644 --- a/engines/sci/engine/kfile.cpp +++ b/engines/sci/engine/kfile.cpp @@ -978,7 +978,7 @@ reg_t kGetSaveFiles(EngineState *s, int argc, reg_t *argv) { char *saveNamePtr = saveNames; for (uint i = 0; i < totalSaves; i++) { - *slot++ = make_reg(0, saves[i].id + SAVEGAMEID_OFFICIALRANGE_START); // Store the virtual savegame ID ffs. see above + *slot++ = make_reg(0, saves[i].id + SAVEGAMEID_OFFICIALRANGE_START); // Store the virtual savegame ID (see above) strcpy(saveNamePtr, saves[i].name); saveNamePtr += SCI_MAX_SAVENAME_LENGTH; } diff --git a/engines/sci/engine/klists.cpp b/engines/sci/engine/klists.cpp index 342fa95eda..7e6c112b9f 100644 --- a/engines/sci/engine/klists.cpp +++ b/engines/sci/engine/klists.cpp @@ -801,7 +801,8 @@ reg_t kArray(EngineState *s, int argc, reg_t *argv) { #endif return NULL_REG; } - if (s->_segMan->getSegmentObj(argv[1].getSegment())->getType() != SEG_TYPE_ARRAY) + SegmentObj *sobj = s->_segMan->getSegmentObj(argv[1].getSegment()); + if (!sobj || sobj->getType() != SEG_TYPE_ARRAY) error("kArray(Dup): Request to duplicate a segment which isn't an array"); reg_t arrayHandle; diff --git a/engines/sci/engine/ksound.cpp b/engines/sci/engine/ksound.cpp index b803e123f1..2879b7f45d 100644 --- a/engines/sci/engine/ksound.cpp +++ b/engines/sci/engine/ksound.cpp @@ -309,6 +309,33 @@ reg_t kSetLanguage(EngineState *s, int argc, reg_t *argv) { return s->r_acc; } +reg_t kDoSoundPhantasmagoriaMac(EngineState *s, int argc, reg_t *argv) { + // Phantasmagoria Mac (and seemingly no other game (!)) uses this + // cutdown version of kDoSound. + + switch (argv[0].toUint16()) { + case 0: + return g_sci->_soundCmd->kDoSoundMasterVolume(argc - 1, argv + 1, s->r_acc); + case 2: + return g_sci->_soundCmd->kDoSoundInit(argc - 1, argv + 1, s->r_acc); + case 3: + return g_sci->_soundCmd->kDoSoundDispose(argc - 1, argv + 1, s->r_acc); + case 4: + return g_sci->_soundCmd->kDoSoundPlay(argc - 1, argv + 1, s->r_acc); + case 5: + return g_sci->_soundCmd->kDoSoundStop(argc - 1, argv + 1, s->r_acc); + case 8: + return g_sci->_soundCmd->kDoSoundSetVolume(argc - 1, argv + 1, s->r_acc); + case 9: + return g_sci->_soundCmd->kDoSoundSetLoop(argc - 1, argv + 1, s->r_acc); + case 10: + return g_sci->_soundCmd->kDoSoundUpdateCues(argc - 1, argv + 1, s->r_acc); + } + + error("Unknown kDoSound Phantasmagoria Mac subop %d", argv[0].toUint16()); + return s->r_acc; +} + #endif } // End of namespace Sci diff --git a/engines/sci/engine/kstring.cpp b/engines/sci/engine/kstring.cpp index 65e139e1ee..15a9f54996 100644 --- a/engines/sci/engine/kstring.cpp +++ b/engines/sci/engine/kstring.cpp @@ -488,9 +488,9 @@ enum kMessageFunc { K_MESSAGE_GET, K_MESSAGE_NEXT, K_MESSAGE_SIZE, - K_MESSAGE_REFCOND, - K_MESSAGE_REFVERB, K_MESSAGE_REFNOUN, + K_MESSAGE_REFVERB, + K_MESSAGE_REFCOND, K_MESSAGE_PUSH, K_MESSAGE_POP, K_MESSAGE_LASTMESSAGE @@ -511,16 +511,10 @@ reg_t kMessage(EngineState *s, int argc, reg_t *argv) { #ifdef ENABLE_SCI32 if (getSciVersion() >= SCI_VERSION_2) { // In complete weirdness, SCI32 bumps up subops 3-8 to 4-9 and stubs off subop 3. - // In addition, SCI32 reorders the REF* subops. if (func == 3) error("SCI32 kMessage(3)"); - else if (func > 3) { + else if (func > 3) func--; - if (func == K_MESSAGE_REFCOND) - func = K_MESSAGE_REFNOUN; - else if (func == K_MESSAGE_REFNOUN || func == K_MESSAGE_REFVERB) - func--; - } } #endif diff --git a/engines/sci/engine/message.cpp b/engines/sci/engine/message.cpp index 49be25d7f1..8c5741f8b0 100644 --- a/engines/sci/engine/message.cpp +++ b/engines/sci/engine/message.cpp @@ -56,7 +56,7 @@ public: protected: MessageReader(const byte *data, uint size, uint headerSize, uint recordSize) - : _data(data), _size(size), _headerSize(headerSize), _recordSize(recordSize) { } + : _data(data), _size(size), _headerSize(headerSize), _recordSize(recordSize), _messageCount(0) { } const byte *_data; const uint _size; diff --git a/engines/sci/engine/message.h b/engines/sci/engine/message.h index 4444ede3bb..5bead82efe 100644 --- a/engines/sci/engine/message.h +++ b/engines/sci/engine/message.h @@ -60,7 +60,7 @@ typedef Common::Stack<CursorStack> CursorStackStack; class MessageState { public: - MessageState(SegManager *segMan) : _segMan(segMan) { } + MessageState(SegManager *segMan) : _segMan(segMan), _lastReturnedModule(0) { } int getMessage(int module, MessageTuple &t, reg_t buf); int nextMessage(reg_t buf); int messageSize(int module, MessageTuple &t); diff --git a/engines/sci/engine/savegame.cpp b/engines/sci/engine/savegame.cpp index b2d95c599e..c8076ec819 100644 --- a/engines/sci/engine/savegame.cpp +++ b/engines/sci/engine/savegame.cpp @@ -678,7 +678,7 @@ void GfxPalette::saveLoadWithSerializer(Common::Serializer &s) { // We need to save intensity of the _sysPalette at least for kq6 when entering the dark cave (room 390) // from room 340. scripts will set intensity to 60 for this room and restore them when leaving. // Sierra SCI is also doing this (although obviously not for SCI0->SCI01 games, still it doesn't hurt - // to save it everywhere). ffs. bug #3072868 + // to save it everywhere). Refer to bug #3072868 s.syncBytes(_sysPalette.intensity, 256); } if (s.getVersion() >= 24) { diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp index c928cf3569..20c5c52178 100644 --- a/engines/sci/engine/script_patches.cpp +++ b/engines/sci/engine/script_patches.cpp @@ -23,6 +23,7 @@ #include "sci/sci.h" #include "sci/engine/script.h" #include "sci/engine/state.h" +#include "sci/engine/features.h" #include "common/util.h" @@ -62,7 +63,7 @@ struct SciScriptSignature { // boundaries of room 660. Normally a textbox is supposed to get on screen // but the call is wrong, so not only do we get an error message the script // is also hanging because the cue won't get sent out -// This also happens in sierra sci - ffs. bug #3038387 +// This also happens in sierra sci - refer to bug #3038387 const byte ecoquest1SignatureStayAndHelp[] = { 40, 0x3f, 0x01, // link 01 @@ -128,7 +129,7 @@ const SciScriptSignature ecoquest1Signatures[] = { // ecorder. This is done by reusing temp-space, that was filled on state 1. // this worked in sierra sci just by accident. In our sci, the temp space // is resetted every time, which means the previous text isn't available -// anymore. We have to patch the code because of that ffs. bug #3035386 +// anymore. We have to patch the code because of that - bug #3035386 const byte ecoquest2SignatureEcorder[] = { 35, 0x31, 0x22, // bnt [next state] @@ -363,10 +364,42 @@ const uint16 freddypharkasPatchLadderEvent[] = { PATCH_END }; +// In the Macintosh version of Freddy Pharkas, kRespondsTo is broken for +// property selectors. They hacked the script to work around the issue, +// so we revert the script back to using the values of the DOS script. +const byte freddypharkasSignatureMacInventory[] = { + 10, + 0x39, 0x23, // pushi 23 + 0x39, 0x74, // pushi 74 + 0x78, // push1 + 0x38, 0x01, 0x74, // pushi 0174 + 0x85, 0x15, // lat 15 + 0 +}; + +const uint16 freddypharkasPatchMacInventory[] = { + 0x39, 0x02, // pushi 02 (now matches the DOS version) + 0x39, 0x74, // pushi 74 + 0x78, // push1 + 0x38, 0x01, 0x74, // pushi 0174 + 0x85, 0x15, // lat 15 + 0x4a, 0x06, // send 06 + 0x31, 0x08, // bnt 08 + 0x38, 0x01, 0x74, // pushi 0174 + 0x76, // push0 + 0x85, 0x15, // lat 15 + 0x4a, 0x04, // send 04 + 0x02, // add + 0xa5, 0x12, // sat 12 + 0x39, 0x04, // pushi 04 (now matches the DOS version) + PATCH_END +}; + // script, description, magic DWORD, adjust const SciScriptSignature freddypharkasSignatures[] = { { 0, "CD: score early disposal", 1, PATCH_MAGICDWORD(0x39, 0x0d, 0x43, 0x75), -3, freddypharkasSignatureScoreDisposal, freddypharkasPatchScoreDisposal }, - { 235, "CD: canister pickup hang", 3, PATCH_MAGICDWORD(0x39, 0x07, 0x39, 0x08), -4, freddypharkasSignatureCanisterHang, freddypharkasPatchCanisterHang }, + { 15, "Mac: broken inventory", 1, PATCH_MAGICDWORD(0x39, 0x23, 0x39, 0x74), 0, freddypharkasSignatureMacInventory, freddypharkasPatchMacInventory }, + { 235, "CD: canister pickup hang", 3, PATCH_MAGICDWORD(0x39, 0x07, 0x39, 0x08), -4, freddypharkasSignatureCanisterHang, freddypharkasPatchCanisterHang }, { 320, "ladder event issue", 2, PATCH_MAGICDWORD(0x6d, 0x76, 0x38, 0xf5), -1, freddypharkasSignatureLadderEvent, freddypharkasPatchLadderEvent }, SCI_SIGNATUREENTRY_TERMINATOR }; @@ -590,6 +623,34 @@ const uint16 kq5PatchWitchCageInit[] = { PATCH_END }; + +// In the final battle, the DOS version uses signals in the music to handle +// timing, while in the Windows version another method is used and the GM +// tracks do not contain these signals. +// The original kq5 interpreter used global 400 to distinguish between +// Windows (1) and DOS (0) versions. +// We replace the 4 relevant checks for global 400 by a fixed true when +// we use these GM tracks. +// +// Instead, we could have set global 400, but this has the possibly unwanted +// side effects of switching to black&white cursors (which also needs complex +// changes to GameFeatures::detectsetCursorType() ) and breaking savegame +// compatibilty between the DOS and Windows CD versions of KQ5. +// TODO: Investigate these side effects more closely. +const byte kq5SignatureWinGMSignals[] = { + 9, + 0x80, 0x90, 0x01, // lag 0x190 + 0x18, // not + 0x30, 0x1b, 0x00, // bnt +0x001B + 0x89, 0x57, // lsg 0x57 + 0 +}; + +const uint16 kq5PatchWinGMSignals[] = { + 0x34, 0x01, 0x00, // ldi 0x0001 + PATCH_END +}; + // script, description, magic DWORD, adjust const SciScriptSignature kq5Signatures[] = { { 0, "CD: harpy volume change", 1, PATCH_MAGICDWORD(0x80, 0x91, 0x01, 0x18), 0, kq5SignatureCdHarpyVolume, kq5PatchCdHarpyVolume }, @@ -597,6 +658,13 @@ const SciScriptSignature kq5Signatures[] = { SCI_SIGNATUREENTRY_TERMINATOR }; +const SciScriptSignature kq5WinGMSignatures[] = { + { 0, "CD: harpy volume change", 1, PATCH_MAGICDWORD(0x80, 0x91, 0x01, 0x18), 0, kq5SignatureCdHarpyVolume, kq5PatchCdHarpyVolume }, + { 200, "CD: witch cage init", 1, PATCH_MAGICDWORD(0x7a, 0x00, 0xc8, 0x00), -10, kq5SignatureWitchCageInit, kq5PatchWitchCageInit }, + { 124, "Win: GM Music signal checks", 4, PATCH_MAGICDWORD(0x80, 0x90, 0x01, 0x18), 0, kq5SignatureWinGMSignals, kq5PatchWinGMSignals }, + SCI_SIGNATUREENTRY_TERMINATOR +}; + // =========================================================================== // When giving the milk bottle to one of the babies in the garden in KQ6 (room // 480), script 481 starts a looping baby cry sound. However, that particular @@ -1034,7 +1102,7 @@ const SciScriptSignature qfg3Signatures[] = { // adds it to nest::x. The problem is that the script also checks if x exceeds // we never reach that of course, so the pterodactyl-flight will go endlessly // we could either calculate property count differently somehow fixing this -// but I think just patching it out is cleaner (ffs. bug #3037938) +// but I think just patching it out is cleaner (bug #3037938) const byte sq4FloppySignatureEndlessFlight[] = { 8, 0x39, 0x04, // pushi 04 (selector x) @@ -1045,7 +1113,7 @@ const byte sq4FloppySignatureEndlessFlight[] = { 0 }; -// Similar to the above, for the German version (ffs. bug #3110215) +// Similar to the above, for the German version (bug #3110215) const byte sq4FloppySignatureEndlessFlightGerman[] = { 8, 0x39, 0x04, // pushi 04 (selector x) @@ -1317,7 +1385,11 @@ void Script::matchSignatureAndPatch(uint16 scriptNr, byte *scriptData, const uin signatureTable = gk1Signatures; break; case GID_KQ5: - signatureTable = kq5Signatures; + // See the explanation in the kq5SignatureWinGMSignals comment + if (g_sci->_features->useAltWinGMSound()) + signatureTable = kq5WinGMSignatures; + else + signatureTable = kq5Signatures; break; case GID_KQ6: signatureTable = kq6Signatures; diff --git a/engines/sci/engine/seg_manager.cpp b/engines/sci/engine/seg_manager.cpp index 04c1dab158..97e33f256b 100644 --- a/engines/sci/engine/seg_manager.cpp +++ b/engines/sci/engine/seg_manager.cpp @@ -36,6 +36,9 @@ SegManager::SegManager(ResourceManager *resMan) { _nodesSegId = 0; _hunksSegId = 0; + _saveDirPtr = NULL_REG; + _parserPtr = NULL_REG; + #ifdef ENABLE_SCI32 _arraysSegId = 0; _stringSegId = 0; diff --git a/engines/sci/engine/state.h b/engines/sci/engine/state.h index 81090876c7..25110ce0ca 100644 --- a/engines/sci/engine/state.h +++ b/engines/sci/engine/state.h @@ -58,7 +58,7 @@ enum AbortGameState { }; // We assume that scripts give us savegameId 0->99 for creating a new save slot -// and savegameId 100->199 for existing save slots ffs. kfile.cpp +// and savegameId 100->199 for existing save slots. Refer to kfile.cpp enum { SAVEGAMEID_OFFICIALRANGE_START = 100, SAVEGAMEID_OFFICIALRANGE_END = 199 @@ -133,7 +133,7 @@ public: uint _chosenQfGImportItem; // Remembers the item selected in QfG import rooms - bool _cursorWorkaroundActive; // ffs. GfxCursor::setPosition() + bool _cursorWorkaroundActive; // Refer to GfxCursor::setPosition() Common::Point _cursorWorkaroundPoint; Common::Rect _cursorWorkaroundRect; diff --git a/engines/sci/graphics/animate.cpp b/engines/sci/graphics/animate.cpp index ee28c5ca31..53715613fc 100644 --- a/engines/sci/graphics/animate.cpp +++ b/engines/sci/graphics/animate.cpp @@ -528,7 +528,7 @@ void GfxAnimate::addToPicDrawCels() { it->priority = _ports->kernelCoordinateToPriority(it->y); if (!view->isScaleable()) { - // Laura Bow 2 specific - ffs. fill() + // Laura Bow 2 specific - Check fill() below it->scaleSignal = 0; it->scaleY = it->scaleX = 128; } diff --git a/engines/sci/graphics/compare.cpp b/engines/sci/graphics/compare.cpp index 70dff15a86..b42063b119 100644 --- a/engines/sci/graphics/compare.cpp +++ b/engines/sci/graphics/compare.cpp @@ -37,8 +37,8 @@ namespace Sci { -GfxCompare::GfxCompare(SegManager *segMan, Kernel *kernel, GfxCache *cache, GfxScreen *screen, GfxCoordAdjuster *coordAdjuster) - : _segMan(segMan), _kernel(kernel), _cache(cache), _screen(screen), _coordAdjuster(coordAdjuster) { +GfxCompare::GfxCompare(SegManager *segMan, GfxCache *cache, GfxScreen *screen, GfxCoordAdjuster *coordAdjuster) + : _segMan(segMan), _cache(cache), _screen(screen), _coordAdjuster(coordAdjuster) { } GfxCompare::~GfxCompare() { diff --git a/engines/sci/graphics/compare.h b/engines/sci/graphics/compare.h index 91e3b90fdb..0080406a3b 100644 --- a/engines/sci/graphics/compare.h +++ b/engines/sci/graphics/compare.h @@ -34,7 +34,7 @@ class Screen; */ class GfxCompare { public: - GfxCompare(SegManager *segMan, Kernel *kernel, GfxCache *cache, GfxScreen *screen, GfxCoordAdjuster *coordAdjuster); + GfxCompare(SegManager *segMan, GfxCache *cache, GfxScreen *screen, GfxCoordAdjuster *coordAdjuster); ~GfxCompare(); uint16 kernelOnControl(byte screenMask, const Common::Rect &rect); @@ -47,7 +47,6 @@ public: private: SegManager *_segMan; - Kernel *_kernel; GfxCache *_cache; GfxScreen *_screen; GfxCoordAdjuster *_coordAdjuster; diff --git a/engines/sci/graphics/controls16.cpp b/engines/sci/graphics/controls16.cpp index 7c09969717..0098f7b9ef 100644 --- a/engines/sci/graphics/controls16.cpp +++ b/engines/sci/graphics/controls16.cpp @@ -42,16 +42,13 @@ namespace Sci { GfxControls16::GfxControls16(SegManager *segMan, GfxPorts *ports, GfxPaint16 *paint16, GfxText16 *text16, GfxScreen *screen) : _segMan(segMan), _ports(ports), _paint16(paint16), _text16(text16), _screen(screen) { - init(); + _texteditBlinkTime = 0; + _texteditCursorVisible = false; } GfxControls16::~GfxControls16() { } -void GfxControls16::init() { - _texteditCursorVisible = false; -} - const char controlListUpArrow[2] = { 0x18, 0 }; const char controlListDownArrow[2] = { 0x19, 0 }; diff --git a/engines/sci/graphics/controls16.h b/engines/sci/graphics/controls16.h index 90bd7beacb..2cde86d4b1 100644 --- a/engines/sci/graphics/controls16.h +++ b/engines/sci/graphics/controls16.h @@ -63,7 +63,6 @@ public: void kernelTexteditChange(reg_t controlObject, reg_t eventObject); private: - void init(); void texteditSetBlinkTime(); void drawListControl(Common::Rect rect, reg_t obj, int16 maxChars, int16 count, const char **entries, GuiResourceId fontId, int16 upperPos, int16 cursorPos, bool isAlias); diff --git a/engines/sci/graphics/controls32.cpp b/engines/sci/graphics/controls32.cpp index 5535a7408a..5b61e1a86a 100644 --- a/engines/sci/graphics/controls32.cpp +++ b/engines/sci/graphics/controls32.cpp @@ -35,8 +35,8 @@ namespace Sci { -GfxControls32::GfxControls32(SegManager *segMan, GfxCache *cache, GfxScreen *screen, GfxText32 *text) - : _segMan(segMan), _cache(cache), _screen(screen), _text(text) { +GfxControls32::GfxControls32(SegManager *segMan, GfxCache *cache, GfxText32 *text) + : _segMan(segMan), _cache(cache), _text(text) { } GfxControls32::~GfxControls32() { diff --git a/engines/sci/graphics/controls32.h b/engines/sci/graphics/controls32.h index 68dca59462..1b705988c2 100644 --- a/engines/sci/graphics/controls32.h +++ b/engines/sci/graphics/controls32.h @@ -34,7 +34,7 @@ class GfxText32; */ class GfxControls32 { public: - GfxControls32(SegManager *segMan, GfxCache *cache, GfxScreen *screen, GfxText32 *text); + GfxControls32(SegManager *segMan, GfxCache *cache, GfxText32 *text); ~GfxControls32(); void kernelTexteditChange(reg_t controlObject); @@ -42,7 +42,6 @@ public: private: SegManager *_segMan; GfxCache *_cache; - GfxScreen *_screen; GfxText32 *_text; }; diff --git a/engines/sci/graphics/coordadjuster.h b/engines/sci/graphics/coordadjuster.h index 63f608be6b..25279b34b1 100644 --- a/engines/sci/graphics/coordadjuster.h +++ b/engines/sci/graphics/coordadjuster.h @@ -71,8 +71,6 @@ public: private: GfxPorts *_ports; - - Port *backuppedPort; }; #ifdef ENABLE_SCI32 diff --git a/engines/sci/graphics/cursor.cpp b/engines/sci/graphics/cursor.cpp index fe2aefd689..a9c741670f 100644 --- a/engines/sci/graphics/cursor.cpp +++ b/engines/sci/graphics/cursor.cpp @@ -69,6 +69,10 @@ GfxCursor::GfxCursor(ResourceManager *resMan, GfxPalette *palette, GfxScreen *sc _useSilverSQ4CDCursors = ConfMan.getBool("silver_cursors"); else _useSilverSQ4CDCursors = false; + + // _coordAdjuster and _event will be initialized later on + _coordAdjuster = NULL; + _event = NULL; } GfxCursor::~GfxCursor() { @@ -277,16 +281,16 @@ void GfxCursor::kernelSetView(GuiResourceId viewNum, int loopNum, int celNum, Co delete cursorHotspot; } -// this list contains all mandatory set cursor changes, that need special handling -// ffs. GfxCursor::setPosition (below) -// Game, newPosition, validRect +// This list contains all mandatory set cursor changes, that need special handling +// Refer to GfxCursor::setPosition() below +// Game, newPosition, validRect static const SciCursorSetPositionWorkarounds setPositionWorkarounds[] = { - { GID_ISLANDBRAIN, 84, 109, 46, 76, 174, 243 }, // island of dr. brain / game menu - { GID_ISLANDBRAIN,143, 135, 57, 102, 163, 218 },// island of dr. brain / pause menu within copy protection - { GID_LSL5, 23, 171, 0, 0, 26, 320 }, // larry 5 / skip forward helper - { GID_QFG1VGA, 64, 174, 40, 37, 74, 284 }, // Quest For Glory 1 VGA / run/walk/sleep sub-menu - { GID_QFG3, 70, 170, 40, 61, 81, 258 }, // Quest For Glory 3 / run/walk/sleep sub-menu - { (SciGameId)0, -1, -1, -1, -1, -1, -1 } + { GID_ISLANDBRAIN, 84, 109, 46, 76, 174, 243 }, // Island of Dr. Brain, game menu + { GID_ISLANDBRAIN, 143, 135, 57, 102, 163, 218 }, // Island of Dr. Brain, pause menu within copy protection + { GID_LSL5, 23, 171, 0, 0, 26, 320 }, // Larry 5, skip forward helper pop-up + { GID_QFG1VGA, 64, 174, 40, 37, 74, 284 }, // Quest For Glory 1 VGA, run/walk/sleep sub-menu + { GID_QFG3, 70, 170, 40, 61, 81, 258 }, // Quest For Glory 3, run/walk/sleep sub-menu + { (SciGameId)0, -1, -1, -1, -1, -1, -1 } }; void GfxCursor::setPosition(Common::Point pos) { @@ -306,16 +310,24 @@ void GfxCursor::setPosition(Common::Point pos) { g_system->warpMouse(pos.x, pos.y); } + // WORKAROUNDS for games with windows that are hidden when the mouse cursor + // is moved outside them - also check setPositionWorkarounds above. + // // Some games display a new menu, set mouse position somewhere within and - // expect it to be in there. This is fine for a real mouse, but on wii using - // wii-mote or touch interfaces this won't work. In fact on those platforms - // the menus will close immediately because of that behavior. - // We identify those cases and set a reaction-rect. If the mouse it outside - // of that rect, we won't report the position back to the scripts. - // As soon as the mouse was inside once, we will revert to normal behavior - // Currently this code is enabled for all platforms, especially because we can't - // differentiate between e.g. Windows used via mouse and Windows used via touchscreen - // The workaround won't hurt real-mouse platforms + // expect it to be in there. This is fine for a real mouse, but on platforms + // without a mouse, such as a Wii with a Wii Remote, or touch interfaces, + // this won't work. In these platforms, the affected menus will close + // immediately, because the mouse cursor's position won't be what the game + // scripts expect. + // We identify these cases via the cursor position set. If the mouse position + // is outside the expected rectangle, we report back to the game scripts that + // it's actually inside it, the first time that the mouse position is polled, + // as the scripts expect. In subsequent mouse position poll attempts, we + // return back the actual mouse coordinates. + // Currently this code is enabled for all platforms, as we can't differentiate + // between ones that have normal mouse input, and platforms that have + // alternative mouse input methods, like a touch screen. Platforms that have + // a normal mouse for input won't be affected by this workaround. const SciGameId gameId = g_sci->getGameId(); const SciCursorSetPositionWorkarounds *workaround; workaround = setPositionWorkarounds; diff --git a/engines/sci/graphics/fontsjis.h b/engines/sci/graphics/fontsjis.h index c4ae4ab580..ae5eaa43f9 100644 --- a/engines/sci/graphics/fontsjis.h +++ b/engines/sci/graphics/fontsjis.h @@ -50,9 +50,6 @@ private: GuiResourceId _resourceId; Graphics::FontSJIS *_commonFont; - - byte _lastForDoubleByteWidth; - byte _lastForDoubleByteDraw; }; } // End of namespace Sci diff --git a/engines/sci/graphics/frameout.cpp b/engines/sci/graphics/frameout.cpp index 5f65762685..bf1ce6da64 100644 --- a/engines/sci/graphics/frameout.cpp +++ b/engines/sci/graphics/frameout.cpp @@ -747,7 +747,8 @@ void GfxFrameout::kernelFrameout() { // TODO: We can only process symmetrical scaling for now (i.e. same value for scaleX/scaleY) if ((itemEntry->scaleSignal & kScaleSignalDoScaling32) && !(itemEntry->scaleSignal & kScaleSignalDisableGlobalScaling32) && - (itemEntry->scaleX == itemEntry->scaleY)) + (itemEntry->scaleX == itemEntry->scaleY) && + itemEntry->scaleX != 128) applyGlobalScaling(itemEntry, it->planeRect, view->getHeight(itemEntry->loopNo, itemEntry->celNo)); if ((itemEntry->scaleX == 128) && (itemEntry->scaleY == 128)) diff --git a/engines/sci/graphics/menu.cpp b/engines/sci/graphics/menu.cpp index e5b734782c..d2416ab4e0 100644 --- a/engines/sci/graphics/menu.cpp +++ b/engines/sci/graphics/menu.cpp @@ -46,6 +46,7 @@ GfxMenu::GfxMenu(EventManager *event, SegManager *segMan, GfxPorts *ports, GfxPa _menuSaveHandle = NULL_REG; _barSaveHandle = NULL_REG; _oldPort = NULL; + _mouseOldState = false; reset(); } diff --git a/engines/sci/graphics/paint16.cpp b/engines/sci/graphics/paint16.cpp index d20aa80c77..940a1ac3cf 100644 --- a/engines/sci/graphics/paint16.cpp +++ b/engines/sci/graphics/paint16.cpp @@ -41,8 +41,14 @@ namespace Sci { -GfxPaint16::GfxPaint16(ResourceManager *resMan, SegManager *segMan, Kernel *kernel, GfxCache *cache, GfxPorts *ports, GfxCoordAdjuster *coordAdjuster, GfxScreen *screen, GfxPalette *palette, GfxTransitions *transitions, AudioPlayer *audio) - : _resMan(resMan), _segMan(segMan), _kernel(kernel), _cache(cache), _ports(ports), _coordAdjuster(coordAdjuster), _screen(screen), _palette(palette), _transitions(transitions), _audio(audio) { +GfxPaint16::GfxPaint16(ResourceManager *resMan, SegManager *segMan, GfxCache *cache, GfxPorts *ports, GfxCoordAdjuster *coordAdjuster, GfxScreen *screen, GfxPalette *palette, GfxTransitions *transitions, AudioPlayer *audio) + : _resMan(resMan), _segMan(segMan), _cache(cache), _ports(ports), + _coordAdjuster(coordAdjuster), _screen(screen), _palette(palette), + _transitions(transitions), _audio(audio), _EGAdrawingVisualize(false) { + + // _animate and _text16 will be initialized later on + _animate = NULL; + _text16 = NULL; } GfxPaint16::~GfxPaint16() { @@ -51,8 +57,6 @@ GfxPaint16::~GfxPaint16() { void GfxPaint16::init(GfxAnimate *animate, GfxText16 *text16) { _animate = animate; _text16 = text16; - - _EGAdrawingVisualize = false; } void GfxPaint16::debugSetEGAdrawingVisualize(bool state) { diff --git a/engines/sci/graphics/paint16.h b/engines/sci/graphics/paint16.h index 46df203200..e06021c3e7 100644 --- a/engines/sci/graphics/paint16.h +++ b/engines/sci/graphics/paint16.h @@ -38,7 +38,7 @@ class GfxView; */ class GfxPaint16 : public GfxPaint { public: - GfxPaint16(ResourceManager *resMan, SegManager *segMan, Kernel *kernel, GfxCache *cache, GfxPorts *ports, GfxCoordAdjuster *coordAdjuster, GfxScreen *screen, GfxPalette *palette, GfxTransitions *transitions, AudioPlayer *audio); + GfxPaint16(ResourceManager *resMan, SegManager *segMan, GfxCache *cache, GfxPorts *ports, GfxCoordAdjuster *coordAdjuster, GfxScreen *screen, GfxPalette *palette, GfxTransitions *transitions, AudioPlayer *audio); ~GfxPaint16(); void init(GfxAnimate *animate, GfxText16 *text16); @@ -89,7 +89,6 @@ public: private: ResourceManager *_resMan; SegManager *_segMan; - Kernel *_kernel; AudioPlayer *_audio; GfxAnimate *_animate; GfxCache *_cache; diff --git a/engines/sci/graphics/paint32.cpp b/engines/sci/graphics/paint32.cpp index a9590c829a..a03e77dfa6 100644 --- a/engines/sci/graphics/paint32.cpp +++ b/engines/sci/graphics/paint32.cpp @@ -34,8 +34,8 @@ namespace Sci { -GfxPaint32::GfxPaint32(ResourceManager *resMan, SegManager *segMan, Kernel *kernel, GfxCoordAdjuster *coordAdjuster, GfxCache *cache, GfxScreen *screen, GfxPalette *palette) - : _resMan(resMan), _segMan(segMan), _kernel(kernel), _coordAdjuster(coordAdjuster), _cache(cache), _screen(screen), _palette(palette) { +GfxPaint32::GfxPaint32(ResourceManager *resMan, GfxCoordAdjuster *coordAdjuster, GfxScreen *screen, GfxPalette *palette) + : _resMan(resMan), _coordAdjuster(coordAdjuster), _screen(screen), _palette(palette) { } GfxPaint32::~GfxPaint32() { diff --git a/engines/sci/graphics/paint32.h b/engines/sci/graphics/paint32.h index 66b31de282..81e355f77f 100644 --- a/engines/sci/graphics/paint32.h +++ b/engines/sci/graphics/paint32.h @@ -34,7 +34,7 @@ class GfxPorts; */ class GfxPaint32 : public GfxPaint { public: - GfxPaint32(ResourceManager *resMan, SegManager *segMan, Kernel *kernel, GfxCoordAdjuster *coordAdjuster, GfxCache *cache, GfxScreen *screen, GfxPalette *palette); + GfxPaint32(ResourceManager *resMan, GfxCoordAdjuster *coordAdjuster, GfxScreen *screen, GfxPalette *palette); ~GfxPaint32(); void fillRect(Common::Rect rect, byte color); @@ -44,10 +44,7 @@ public: private: ResourceManager *_resMan; - SegManager *_segMan; - Kernel *_kernel; GfxCoordAdjuster *_coordAdjuster; - GfxCache *_cache; GfxScreen *_screen; GfxPalette *_palette; }; diff --git a/engines/sci/graphics/palette.cpp b/engines/sci/graphics/palette.cpp index 9b6eff6edc..d8d788b00a 100644 --- a/engines/sci/graphics/palette.cpp +++ b/engines/sci/graphics/palette.cpp @@ -851,7 +851,7 @@ int16 GfxPalette::kernelPalVaryReverse(int16 ticks, uint16 stepStop, int16 direc if (!_palVaryTicks) { _palVaryDirection = _palVaryStepStop - _palVaryStep; - // ffs. see palVaryInit right above, we fix the code here as well + // see palVaryInit above, we fix the code here as well // just in case palVaryProcess(1, true); } else { diff --git a/engines/sci/graphics/picture.cpp b/engines/sci/graphics/picture.cpp index bb326b1d2f..af372640da 100644 --- a/engines/sci/graphics/picture.cpp +++ b/engines/sci/graphics/picture.cpp @@ -605,7 +605,7 @@ void GfxPicture::drawVectorData(byte *data, int dataSize) { case PIC_OP_MEDIUM_LINES: // medium line vectorGetAbsCoords(data, curPos, x, y); if (icemanDrawFix) { - // WORKAROUND: remove certain lines in iceman ffs. see above + // WORKAROUND: remove certain lines in iceman - see above if ((pic_color == 1) && (pic_priority == 14)) { if ((y < 100) || (!(y & 1))) { pic_color = 255; diff --git a/engines/sci/graphics/screen.cpp b/engines/sci/graphics/screen.cpp index 246b6bfff9..74503c0c77 100644 --- a/engines/sci/graphics/screen.cpp +++ b/engines/sci/graphics/screen.cpp @@ -115,6 +115,8 @@ GfxScreen::GfxScreen(ResourceManager *resMan) : _resMan(resMan) { _controlScreen = (byte *)calloc(_pixels, 1); _displayScreen = (byte *)calloc(_displayPixels, 1); + memset(&_ditheredPicColors, 0, sizeof(_ditheredPicColors)); + // Sets display screen to be actually displayed _activeScreen = _displayScreen; diff --git a/engines/sci/graphics/text16.cpp b/engines/sci/graphics/text16.cpp index 7eaa0168b8..56e9ea8b69 100644 --- a/engines/sci/graphics/text16.cpp +++ b/engines/sci/graphics/text16.cpp @@ -36,8 +36,8 @@ namespace Sci { -GfxText16::GfxText16(ResourceManager *resMan, GfxCache *cache, GfxPorts *ports, GfxPaint16 *paint16, GfxScreen *screen) - : _resMan(resMan), _cache(cache), _ports(ports), _paint16(paint16), _screen(screen) { +GfxText16::GfxText16(GfxCache *cache, GfxPorts *ports, GfxPaint16 *paint16, GfxScreen *screen) + : _cache(cache), _ports(ports), _paint16(paint16), _screen(screen) { init(); } diff --git a/engines/sci/graphics/text16.h b/engines/sci/graphics/text16.h index b33c2c4df0..321c7fc25e 100644 --- a/engines/sci/graphics/text16.h +++ b/engines/sci/graphics/text16.h @@ -40,7 +40,7 @@ class GfxFont; */ class GfxText16 { public: - GfxText16(ResourceManager *_resMan, GfxCache *fonts, GfxPorts *ports, GfxPaint16 *paint16, GfxScreen *screen); + GfxText16(GfxCache *fonts, GfxPorts *ports, GfxPaint16 *paint16, GfxScreen *screen); ~GfxText16(); GuiResourceId GetFontId(); @@ -75,7 +75,6 @@ private: void init(); bool SwitchToFont900OnSjis(const char *text); - ResourceManager *_resMan; GfxCache *_cache; GfxPorts *_ports; GfxPaint16 *_paint16; diff --git a/engines/sci/parser/grammar.cpp b/engines/sci/parser/grammar.cpp index 6e02eb75e3..26e3ec9238 100644 --- a/engines/sci/parser/grammar.cpp +++ b/engines/sci/parser/grammar.cpp @@ -386,8 +386,10 @@ ParseRuleList *Vocabulary::buildGNF(bool verbose) { for (uint i = 1; i < _parserBranches.size(); i++) { // branch rule 0 is treated specially ParseRule *rule = _vbuild_rule(&_parserBranches[i]); - if (!rule) + if (!rule) { + freeRuleList(ntlist); return NULL; + } ntlist = _vocab_add_rule(ntlist, rule); } diff --git a/engines/sci/resource.cpp b/engines/sci/resource.cpp index 1da0c5dccc..d14c965ebb 100644 --- a/engines/sci/resource.cpp +++ b/engines/sci/resource.cpp @@ -158,24 +158,24 @@ static const ResourceType s_resTypeMapSci21[] = { ResourceType ResourceManager::convertResType(byte type) { type &= 0x7f; - if (_mapVersion < kResVersionSci2) { + bool forceSci0 = false; + + // LSL6 hires doesn't have the chunk resource type, to match + // the resource types of the lowres version, thus we use the + // older resource types here. + // PQ4 CD and QFG4 CD are SCI2.1, but use the resource types of the + // corresponding SCI2 floppy disk versions. + if (g_sci && (g_sci->getGameId() == GID_LSL6HIRES || + g_sci->getGameId() == GID_QFG4 || g_sci->getGameId() == GID_PQ4)) + forceSci0 = true; + + if (_mapVersion < kResVersionSci2 || forceSci0) { // SCI0 - SCI2 if (type < ARRAYSIZE(s_resTypeMapSci0)) return s_resTypeMapSci0[type]; } else { - // SCI2.1+ - if (type < ARRAYSIZE(s_resTypeMapSci21)) { - // LSL6 hires doesn't have the chunk resource type, to match - // the resource types of the lowres version, thus we use the - // older resource types here. - // PQ4 CD and QFG4 CD are SCI2.1, but use the resource types of the - // corresponding SCI2 floppy disk versions. - if (g_sci && (g_sci->getGameId() == GID_LSL6HIRES || - g_sci->getGameId() == GID_QFG4 || g_sci->getGameId() == GID_PQ4)) - return s_resTypeMapSci0[type]; - else - return s_resTypeMapSci21[type]; - } + if (type < ARRAYSIZE(s_resTypeMapSci21)) + return s_resTypeMapSci21[type]; } return kResourceTypeInvalid; diff --git a/engines/sci/resource_audio.cpp b/engines/sci/resource_audio.cpp index 684e1a1d0d..744f05f2b9 100644 --- a/engines/sci/resource_audio.cpp +++ b/engines/sci/resource_audio.cpp @@ -75,6 +75,10 @@ AudioVolumeResourceSource::AudioVolumeResourceSource(ResourceManager *resMan, co delete fileStream; } +AudioVolumeResourceSource::~AudioVolumeResourceSource() { + delete[] _audioCompressionOffsetMapping; +} + bool Resource::loadFromWaveFile(Common::SeekableReadStream *file) { data = new byte[size]; diff --git a/engines/sci/resource_intern.h b/engines/sci/resource_intern.h index e8e66503d8..c256c9d156 100644 --- a/engines/sci/resource_intern.h +++ b/engines/sci/resource_intern.h @@ -149,6 +149,8 @@ protected: public: AudioVolumeResourceSource(ResourceManager *resMan, const Common::String &name, ResourceSource *map, int volNum); + virtual ~AudioVolumeResourceSource(); + virtual void loadResource(ResourceManager *resMan, Resource *res); virtual uint32 getAudioCompressionType() const; diff --git a/engines/sci/sci.cpp b/engines/sci/sci.cpp index 1f5c354d1f..c1aadc3622 100644 --- a/engines/sci/sci.cpp +++ b/engines/sci/sci.cpp @@ -385,7 +385,7 @@ bool SciEngine::gameHasFanMadePatch() { { GID_PQ3, 994, 4686, 1291, 0x78 }, // English { GID_PQ3, 994, 4734, 1283, 0x78 }, // German { GID_QFG1VGA, 994, 4388, 0, 0x00 }, - { GID_QFG3, 33, 260, 0, 0x00 }, + { GID_QFG3, 994, 4714, 2, 0x48 }, // TODO: Disabled, as it fixes a whole lot of bugs which can't be tested till SCI2.1 support is finished //{ GID_QFG4, 710, 11477, 0, 0x00 }, { GID_SQ1, 994, 4740, 0, 0x00 }, @@ -455,10 +455,19 @@ static byte patchGameRestoreSaveSci21[] = { static void patchGameSaveRestoreCode(SegManager *segMan, reg_t methodAddress, byte id) { Script *script = segMan->getScript(methodAddress.getSegment()); byte *patchPtr = const_cast<byte *>(script->getBuf(methodAddress.getOffset())); - if (getSciVersion() <= SCI_VERSION_1_1) + + if (getSciVersion() <= SCI_VERSION_1_1) { memcpy(patchPtr, patchGameRestoreSave, sizeof(patchGameRestoreSave)); - else // SCI2+ + } else { // SCI2+ memcpy(patchPtr, patchGameRestoreSaveSci2, sizeof(patchGameRestoreSaveSci2)); + + if (g_sci->isBE()) { + // LE -> BE + patchPtr[9] = 0x00; + patchPtr[10] = 0x06; + } + } + patchPtr[8] = id; } @@ -466,8 +475,16 @@ static void patchGameSaveRestoreCodeSci21(SegManager *segMan, reg_t methodAddres Script *script = segMan->getScript(methodAddress.getSegment()); byte *patchPtr = const_cast<byte *>(script->getBuf(methodAddress.getOffset())); memcpy(patchPtr, patchGameRestoreSaveSci21, sizeof(patchGameRestoreSaveSci21)); + if (doRestore) patchPtr[2] = 0x78; // push1 + + if (g_sci->isBE()) { + // LE -> BE + patchPtr[10] = 0x00; + patchPtr[11] = 0x08; + } + patchPtr[9] = id; } @@ -627,11 +644,11 @@ void SciEngine::initGraphics() { // SCI32 graphic objects creation _gfxCoordAdjuster = new GfxCoordAdjuster32(_gamestate->_segMan); _gfxCursor->init(_gfxCoordAdjuster, _eventMan); - _gfxCompare = new GfxCompare(_gamestate->_segMan, _kernel, _gfxCache, _gfxScreen, _gfxCoordAdjuster); - _gfxPaint32 = new GfxPaint32(_resMan, _gamestate->_segMan, _kernel, _gfxCoordAdjuster, _gfxCache, _gfxScreen, _gfxPalette); + _gfxCompare = new GfxCompare(_gamestate->_segMan, _gfxCache, _gfxScreen, _gfxCoordAdjuster); + _gfxPaint32 = new GfxPaint32(_resMan, _gfxCoordAdjuster, _gfxScreen, _gfxPalette); _gfxPaint = _gfxPaint32; _gfxText32 = new GfxText32(_gamestate->_segMan, _gfxCache, _gfxScreen); - _gfxControls32 = new GfxControls32(_gamestate->_segMan, _gfxCache, _gfxScreen, _gfxText32); + _gfxControls32 = new GfxControls32(_gamestate->_segMan, _gfxCache, _gfxText32); _robotDecoder = new RobotDecoder(getPlatform() == Common::kPlatformMacintosh); _gfxFrameout = new GfxFrameout(_gamestate->_segMan, _resMan, _gfxCoordAdjuster, _gfxCache, _gfxScreen, _gfxPalette, _gfxPaint32); } else { @@ -640,24 +657,24 @@ void SciEngine::initGraphics() { _gfxPorts = new GfxPorts(_gamestate->_segMan, _gfxScreen); _gfxCoordAdjuster = new GfxCoordAdjuster16(_gfxPorts); _gfxCursor->init(_gfxCoordAdjuster, _eventMan); - _gfxCompare = new GfxCompare(_gamestate->_segMan, _kernel, _gfxCache, _gfxScreen, _gfxCoordAdjuster); + _gfxCompare = new GfxCompare(_gamestate->_segMan, _gfxCache, _gfxScreen, _gfxCoordAdjuster); _gfxTransitions = new GfxTransitions(_gfxScreen, _gfxPalette); - _gfxPaint16 = new GfxPaint16(_resMan, _gamestate->_segMan, _kernel, _gfxCache, _gfxPorts, _gfxCoordAdjuster, _gfxScreen, _gfxPalette, _gfxTransitions, _audio); + _gfxPaint16 = new GfxPaint16(_resMan, _gamestate->_segMan, _gfxCache, _gfxPorts, _gfxCoordAdjuster, _gfxScreen, _gfxPalette, _gfxTransitions, _audio); _gfxPaint = _gfxPaint16; _gfxAnimate = new GfxAnimate(_gamestate, _gfxCache, _gfxPorts, _gfxPaint16, _gfxScreen, _gfxPalette, _gfxCursor, _gfxTransitions); - _gfxText16 = new GfxText16(_resMan, _gfxCache, _gfxPorts, _gfxPaint16, _gfxScreen); + _gfxText16 = new GfxText16(_gfxCache, _gfxPorts, _gfxPaint16, _gfxScreen); _gfxControls16 = new GfxControls16(_gamestate->_segMan, _gfxPorts, _gfxPaint16, _gfxText16, _gfxScreen); _gfxMenu = new GfxMenu(_eventMan, _gamestate->_segMan, _gfxPorts, _gfxPaint16, _gfxText16, _gfxScreen, _gfxCursor); _gfxMenu->reset(); -#ifdef ENABLE_SCI32 - } -#endif - if (_gfxPorts) { _gfxPorts->init(_features->usesOldGfxFunctions(), _gfxPaint16, _gfxText16); _gfxPaint16->init(_gfxAnimate, _gfxText16); + +#ifdef ENABLE_SCI32 } +#endif + // Set default (EGA, amiga or resource 999) palette _gfxPalette->setDefault(); } diff --git a/engines/sci/sound/audio.cpp b/engines/sci/sound/audio.cpp index 528bb51393..8f405b0fa5 100644 --- a/engines/sci/sound/audio.cpp +++ b/engines/sci/sound/audio.cpp @@ -324,7 +324,10 @@ Audio::RewindableAudioStream *AudioPlayer::getAudioStream(uint32 number, uint32 // Calculate samplelen from WAVE header int waveSize = 0, waveRate = 0; byte waveFlags = 0; - Audio::loadWAVFromStream(*waveStream, waveSize, waveRate, waveFlags); + bool ret = Audio::loadWAVFromStream(*waveStream, waveSize, waveRate, waveFlags); + if (!ret) + error("Failed to load WAV from stream"); + *sampleLen = (waveFlags & Audio::FLAG_16BITS ? waveSize >> 1 : waveSize) * 60 / waveRate; waveStream->seek(0, SEEK_SET); @@ -336,7 +339,10 @@ Audio::RewindableAudioStream *AudioPlayer::getAudioStream(uint32 number, uint32 // Calculate samplelen from AIFF header int waveSize = 0, waveRate = 0; byte waveFlags = 0; - Audio::loadAIFFFromStream(*waveStream, waveSize, waveRate, waveFlags); + bool ret = Audio::loadAIFFFromStream(*waveStream, waveSize, waveRate, waveFlags); + if (!ret) + error("Failed to load AIFF from stream"); + *sampleLen = (waveFlags & Audio::FLAG_16BITS ? waveSize >> 1 : waveSize) * 60 / waveRate; waveStream->seek(0, SEEK_SET); @@ -347,6 +353,9 @@ Audio::RewindableAudioStream *AudioPlayer::getAudioStream(uint32 number, uint32 Common::SeekableReadStream *sndStream = new Common::MemoryReadStream(audioRes->data, audioRes->size, DisposeAfterUse::NO); audioSeekStream = Audio::makeMacSndStream(sndStream, DisposeAfterUse::YES); + if (!audioSeekStream) + error("Failed to load Mac sound stream"); + } else { // SCI1 raw audio size = audioRes->size; diff --git a/engines/sci/sound/drivers/adlib.cpp b/engines/sci/sound/drivers/adlib.cpp index 191e13db0a..3229fd7071 100644 --- a/engines/sci/sound/drivers/adlib.cpp +++ b/engines/sci/sound/drivers/adlib.cpp @@ -512,7 +512,7 @@ int MidiDriver_AdLib::findVoiceBasic(int channel) { } if (voice == -1) { - if (oldestVoice != -1) { + if (oldestVoice >= 0) { voiceOff(oldestVoice); voice = oldestVoice; } else { @@ -550,7 +550,7 @@ int MidiDriver_AdLib::findVoice(int channel) { } if (voice == -1) { - if (oldestVoice != -1) { + if (oldestVoice >= 0) { voiceOff(oldestVoice); voice = oldestVoice; } else { diff --git a/engines/sci/sound/drivers/cms.cpp b/engines/sci/sound/drivers/cms.cpp index dbcbf3d431..fd60863177 100644 --- a/engines/sci/sound/drivers/cms.cpp +++ b/engines/sci/sound/drivers/cms.cpp @@ -422,7 +422,7 @@ int MidiDriver_CMS::findVoiceBasic(int channel) { } if (voice == -1) { - if (oldestVoice != -1) { + if (oldestVoice >= 0) { voiceOff(oldestVoice); voice = oldestVoice; } else { diff --git a/engines/sci/sound/drivers/fb01.cpp b/engines/sci/sound/drivers/fb01.cpp index 9f3945bbec..b16473e62e 100644 --- a/engines/sci/sound/drivers/fb01.cpp +++ b/engines/sci/sound/drivers/fb01.cpp @@ -250,7 +250,7 @@ int MidiPlayer_Fb01::findVoice(int channel) { } if (voice == -1) { - if (oldestVoice != -1) { + if (oldestVoice >= 0) { voiceOff(oldestVoice); voice = oldestVoice; } else { diff --git a/engines/sci/sound/soundcmd.cpp b/engines/sci/sound/soundcmd.cpp index 873a16cc73..daba976f50 100644 --- a/engines/sci/sound/soundcmd.cpp +++ b/engines/sci/sound/soundcmd.cpp @@ -177,18 +177,6 @@ void SoundCommandParser::processPlaySound(reg_t obj) { writeSelectorValue(_segMan, obj, SELECTOR(state), kSoundPlaying); } - // WORKAROUND: Songs 1840, 1843 and 1849 in the Windows version of KQ5CD - // are all missing their channel 15 (all played during its ending - // sequences, when fighting with Mordack). This makes the game scripts - // wait indefinitely for the missing signals in these songs. In the - // original interpreter, this bug manifests as an "Out of heap" error. We - // signal the game scripts to stop waiting forever by setting the song's - // dataInc selector to something other than 0. This causes Mordack's - // appearing animation to occur a bit earlier than expected, but at least - // the game doesn't freeze at that point. Fixes bug #3605269. - if (g_sci->getGameId() == GID_KQ5 && (resourceId == 1840 || resourceId == 1843 || resourceId == 1849)) - musicSlot->dataInc = 1; - musicSlot->loop = readSelectorValue(_segMan, obj, SELECTOR(loop)); musicSlot->priority = readSelectorValue(_segMan, obj, SELECTOR(priority)); // Reset hold when starting a new song. kDoSoundSetHold is always called after @@ -395,7 +383,7 @@ reg_t SoundCommandParser::kDoSoundFade(int argc, reg_t *argv, reg_t acc) { if (musicSlot->fadeTo == musicSlot->volume) return acc; - // sometimes we get objects in that position, fix it up (ffs. workarounds) + // Sometimes we get objects in that position, so fix the value (refer to workarounds.cpp) if (!argv[1].getSegment()) musicSlot->fadeStep = volume > musicSlot->fadeTo ? -argv[3].toUint16() : argv[3].toUint16(); else @@ -749,7 +737,7 @@ void SoundCommandParser::updateSci0Cues() { } if (noOnePlaying && pWaitingForPlay) { - // If there is a queued entry, play it now ffs: SciMusic::soundPlay() + // If there is a queued entry, play it now - check SciMusic::soundPlay() pWaitingForPlay->isQueued = false; _music->soundPlay(pWaitingForPlay); } diff --git a/engines/scumm/actor.cpp b/engines/scumm/actor.cpp index 0c375efcdd..5c148a7b57 100644 --- a/engines/scumm/actor.cpp +++ b/engines/scumm/actor.cpp @@ -1880,7 +1880,7 @@ bool Actor::actorHitTest(int x, int y) { #endif void Actor::startAnimActor(int f) { - if (_vm->_game.version >= 7 && !((_vm->_game.id == GID_FT) && (_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC))) { + if (_vm->_game.version >= 7 && !((_vm->_game.id == GID_FT) && (_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS))) { switch (f) { case 1001: f = _initFrame; @@ -1968,7 +1968,7 @@ void Actor_v0::startAnimActor(int f) { void Actor::animateActor(int anim) { int cmd, dir; - if (_vm->_game.version >= 7 && !((_vm->_game.id == GID_FT) && (_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC))) { + if (_vm->_game.version >= 7 && !((_vm->_game.id == GID_FT) && (_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS))) { if (anim == 0xFF) anim = 2000; diff --git a/engines/scumm/debugger.h b/engines/scumm/debugger.h index a9b340d691..b60a1a2f03 100644 --- a/engines/scumm/debugger.h +++ b/engines/scumm/debugger.h @@ -35,7 +35,6 @@ public: private: ScummEngine *_vm; - bool _old_soundsPaused; // Commands bool Cmd_Room(int argc, const char **argv); diff --git a/engines/scumm/detection.cpp b/engines/scumm/detection.cpp index e5c3023380..170ca0993c 100644 --- a/engines/scumm/detection.cpp +++ b/engines/scumm/detection.cpp @@ -963,7 +963,7 @@ static Common::String generatePreferredTarget(const DetectorResult &x) { } // Append the platform, if a non-standard one has been specified. - if (x.game.platform != Common::kPlatformPC && x.game.platform != Common::kPlatformUnknown) { + if (x.game.platform != Common::kPlatformDOS && x.game.platform != Common::kPlatformUnknown) { // HACK: For CoMI, it's pointless to encode the fact that it's for Windows if (x.game.id != GID_CMI) res = res + "-" + Common::getPlatformAbbrev(x.game.platform); diff --git a/engines/scumm/detection_tables.h b/engines/scumm/detection_tables.h index 9f6206439d..cb807997e9 100644 --- a/engines/scumm/detection_tables.h +++ b/engines/scumm/detection_tables.h @@ -205,11 +205,11 @@ static const Engines::ObsoleteGameID obsoleteGameIDsTable[] = { static const GameSettings gameVariantsTable[] = { {"maniac", "Apple II", 0, GID_MANIAC, 0, 0, MDT_APPLEIIGS, 0, Common::kPlatformApple2GS, GUIO2(GUIO_NOSPEECH, GUIO_NOMIDI)}, {"maniac", "C64", 0, GID_MANIAC, 0, 0, MDT_C64, 0, Common::kPlatformC64, GUIO2(GUIO_NOSPEECH, GUIO_NOMIDI) }, - {"maniac", "V1", "v1", GID_MANIAC, 1, 0, MDT_PCSPK | MDT_PCJR, 0, Common::kPlatformPC, GUIO2(GUIO_NOSPEECH, GUIO_NOMIDI)}, - {"maniac", "V1 Demo", "v1", GID_MANIAC, 1, 0, MDT_PCSPK | MDT_PCJR, GF_DEMO, Common::kPlatformPC, GUIO2(GUIO_NOSPEECH, GUIO_NOMIDI)}, + {"maniac", "V1", "v1", GID_MANIAC, 1, 0, MDT_PCSPK | MDT_PCJR, 0, Common::kPlatformDOS, GUIO2(GUIO_NOSPEECH, GUIO_NOMIDI)}, + {"maniac", "V1 Demo", "v1", GID_MANIAC, 1, 0, MDT_PCSPK | MDT_PCJR, GF_DEMO, Common::kPlatformDOS, GUIO2(GUIO_NOSPEECH, GUIO_NOMIDI)}, {"maniac", "NES", 0, GID_MANIAC, 1, 0, MDT_NONE, 0, Common::kPlatformNES, GUIO3(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_NOASPECT)}, {"maniac", "V2", "v2", GID_MANIAC, 2, 0, MDT_PCSPK | MDT_PCJR, 0, UNK, GUIO2(GUIO_NOSPEECH, GUIO_NOMIDI)}, - {"maniac", "V2 Demo", "v2", GID_MANIAC, 2, 0, MDT_PCSPK | MDT_PCJR, GF_DEMO, Common::kPlatformPC, GUIO2(GUIO_NOSPEECH, GUIO_NOMIDI)}, + {"maniac", "V2 Demo", "v2", GID_MANIAC, 2, 0, MDT_PCSPK | MDT_PCJR, GF_DEMO, Common::kPlatformDOS, GUIO2(GUIO_NOSPEECH, GUIO_NOMIDI)}, {"zak", "V1", "v1", GID_ZAK, 1, 0, MDT_PCSPK | MDT_PCJR, 0, UNK, GUIO2(GUIO_NOSPEECH, GUIO_NOMIDI)}, {"zak", "V2", "v2", GID_ZAK, 2, 0, MDT_PCSPK | MDT_PCJR, 0, UNK, GUIO2(GUIO_NOSPEECH, GUIO_NOMIDI)}, @@ -220,7 +220,7 @@ static const GameSettings gameVariantsTable[] = { {"indy3", "EGA", "ega", GID_INDY3, 3, 0, MDT_PCSPK | MDT_PCJR | MDT_CMS | MDT_ADLIB, 0, UNK, GUIO2(GUIO_NOSPEECH, GUIO_NOMIDI)}, {"indy3", "No AdLib", "ega", GID_INDY3, 3, 0, MDT_PCSPK | MDT_PCJR, 0, UNK, GUIO2(GUIO_NOSPEECH, GUIO_NOMIDI)}, - {"indy3", "VGA", "vga", GID_INDY3, 3, 0, MDT_PCSPK | MDT_PCJR | MDT_CMS | MDT_ADLIB, GF_OLD256 | GF_FEW_LOCALS, Common::kPlatformPC, GUIO2(GUIO_NOSPEECH, GUIO_NOMIDI)}, + {"indy3", "VGA", "vga", GID_INDY3, 3, 0, MDT_PCSPK | MDT_PCJR | MDT_CMS | MDT_ADLIB, GF_OLD256 | GF_FEW_LOCALS, Common::kPlatformDOS, GUIO2(GUIO_NOSPEECH, GUIO_NOMIDI)}, {"indy3", "FM-TOWNS", 0, GID_INDY3, 3, 0, MDT_TOWNS, GF_OLD256 | GF_FEW_LOCALS | GF_AUDIOTRACKS, Common::kPlatformFMTowns, GUIO4(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_MIDITOWNS, GUIO_NOASPECT)}, {"loom", "EGA", "ega", GID_LOOM, 3, 0, MDT_PCSPK | MDT_PCJR | MDT_CMS | MDT_ADLIB | MDT_MIDI | MDT_PREFER_MT32, 0, UNK, GUIO1(GUIO_NOSPEECH)}, @@ -229,14 +229,14 @@ static const GameSettings gameVariantsTable[] = { {"loom", "PC-Engine", 0, GID_LOOM, 3, 0, MDT_NONE, GF_AUDIOTRACKS | GF_OLD256 | GF_16BIT_COLOR, Common::kPlatformPCEngine, GUIO2(GUIO_NOSPEECH, GUIO_NOMIDI)}, #endif {"loom", "FM-TOWNS", 0, GID_LOOM, 3, 0, MDT_TOWNS, GF_AUDIOTRACKS | GF_OLD256, Common::kPlatformFMTowns, GUIO4(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_MIDITOWNS, GUIO_NOASPECT)}, - {"loom", "VGA", "vga", GID_LOOM, 4, 0, MDT_NONE, GF_AUDIOTRACKS, Common::kPlatformPC, GUIO2(GUIO_NOSPEECH, GUIO_NOMIDI)}, + {"loom", "VGA", "vga", GID_LOOM, 4, 0, MDT_NONE, GF_AUDIOTRACKS, Common::kPlatformDOS, GUIO2(GUIO_NOSPEECH, GUIO_NOMIDI)}, - {"pass", 0, 0, GID_PASS, 4, 0, MDT_PCSPK | MDT_PCJR | MDT_CMS | MDT_ADLIB, GF_16COLOR, Common::kPlatformPC, GUIO2(GUIO_NOSPEECH, GUIO_NOMIDI)}, + {"pass", 0, 0, GID_PASS, 4, 0, MDT_PCSPK | MDT_PCJR | MDT_CMS | MDT_ADLIB, GF_16COLOR, Common::kPlatformDOS, GUIO2(GUIO_NOSPEECH, GUIO_NOMIDI)}, {"monkey", "VGA", "vga", GID_MONKEY_VGA, 4, 0, MDT_PCSPK | MDT_PCJR | MDT_CMS | MDT_ADLIB | MDT_MIDI | MDT_PREFER_MT32, 0, UNK, GUIO1(GUIO_NOSPEECH)}, - {"monkey", "EGA", "ega", GID_MONKEY_EGA, 4, 0, MDT_PCSPK | MDT_PCJR | MDT_CMS | MDT_ADLIB | MDT_MIDI | MDT_PREFER_MT32, GF_16COLOR, Common::kPlatformPC, GUIO1(GUIO_NOSPEECH)}, + {"monkey", "EGA", "ega", GID_MONKEY_EGA, 4, 0, MDT_PCSPK | MDT_PCJR | MDT_CMS | MDT_ADLIB | MDT_MIDI | MDT_PREFER_MT32, GF_16COLOR, Common::kPlatformDOS, GUIO1(GUIO_NOSPEECH)}, {"monkey", "No AdLib", "ega", GID_MONKEY_EGA, 4, 0, MDT_PCSPK | MDT_PCJR, GF_16COLOR, Common::kPlatformAtariST, GUIO2(GUIO_NOSPEECH, GUIO_NOMIDI)}, - {"monkey", "Demo", "ega", GID_MONKEY_EGA, 4, 0, MDT_PCSPK | MDT_PCJR | MDT_CMS | MDT_ADLIB, GF_16COLOR, Common::kPlatformPC, GUIO2(GUIO_NOSPEECH, GUIO_NOMIDI)}, + {"monkey", "Demo", "ega", GID_MONKEY_EGA, 4, 0, MDT_PCSPK | MDT_PCJR | MDT_CMS | MDT_ADLIB, GF_16COLOR, Common::kPlatformDOS, GUIO2(GUIO_NOSPEECH, GUIO_NOMIDI)}, {"monkey", "CD", 0, GID_MONKEY, 5, 0, MDT_ADLIB, GF_AUDIOTRACKS, UNK, GUIO2(GUIO_NOSPEECH, GUIO_NOMIDI)}, {"monkey", "FM-TOWNS", 0, GID_MONKEY, 5, 0, MDT_TOWNS, GF_AUDIOTRACKS, Common::kPlatformFMTowns, GUIO4(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_MIDITOWNS, GUIO_NOASPECT)}, {"monkey", "SEGA", 0, GID_MONKEY, 5, 0, MDT_NONE, GF_AUDIOTRACKS, Common::kPlatformSegaCD, GUIO2(GUIO_NOSPEECH, GUIO_NOMIDI)}, diff --git a/engines/scumm/he/animation_he.h b/engines/scumm/he/animation_he.h index 7fa31a195d..e17c1b9a39 100644 --- a/engines/scumm/he/animation_he.h +++ b/engines/scumm/he/animation_he.h @@ -55,7 +55,6 @@ private: Video::VideoDecoder *_video; - char baseName[40]; uint32 _flags; uint32 _wizResNum; }; diff --git a/engines/scumm/he/logic/football.cpp b/engines/scumm/he/logic/football.cpp index b405d634a4..ea990ca86b 100644 --- a/engines/scumm/he/logic/football.cpp +++ b/engines/scumm/he/logic/football.cpp @@ -218,10 +218,10 @@ int LogicHEfootball::nextPoint(int32 *args) { if (res >= (double)args[6]) { var8 = (double)args[6] * var8 / res; var10 = (double)args[6] * var10 / res; - res = (double)args[6] * var6 / res; + var6 = (double)args[6] * var6 / res; } - writeScummVar(108, (int32)res); + writeScummVar(108, (int32)var6); writeScummVar(109, (int32)var10); writeScummVar(110, (int32)var8); @@ -297,6 +297,15 @@ private: int initScreenTranslations(); int getPlaybookFiles(int32 *args); int largestFreeBlock(); + + float _var0; + float _var1; + float _var2; + float _var3; + float _var4; + float _angle; + int32 _maxX; + int32 _minX; }; int32 LogicHEfootball2002::dispatch(int op, int numArgs, int32 *args) { @@ -325,8 +334,16 @@ int32 LogicHEfootball2002::dispatch(int op, int numArgs, int32 *args) { res = 1; break; + case 1030: + // Get Computer Name (online play only) + break; + + case 1515: + // Initialize Session (online play only) + break; + case 1516: - // Start auto LAN game + // Start auto LAN game (online play only) break; default: @@ -338,13 +355,74 @@ int32 LogicHEfootball2002::dispatch(int op, int numArgs, int32 *args) { } int LogicHEfootball2002::translateWorldToScreen(int32 *args) { - // TODO: Implement modified 2002 version - return LogicHEfootball::translateWorldToScreen(args); + // While this performs the same task as football's 1006 opcode, + // the implementation is different. Note that this is also the + // same as basketball's 1006 opcode with different constants! + + double v9; + if (args[1] >= _minX) { + if (args[1] < _maxX) { + v9 = (sqrt(_var1 + args[1]) - sqrt(_var1)) / sqrt(_var0); + } else { + double v10 = sqrt(_var0 * (_maxX + _var1)); + v9 = 1.0 / (v10 + v10) * (args[1] - _maxX) + 451.0; + } + } else { + double v8 = sqrt(_var0 * (_minX + _var1)); + v9 = 1.0 / (v8 + v8) * (args[1] - _minX) - 29.0; + } + + double v11 = tan(_angle); + double v12, v13; + + if (v9 >= -29.0) { + if (v9 >= 451.0) { + v12 = 1517.0 - (451.0 / v11 + 451.0 / v11); + v13 = tan(1.570796326794895 - _angle) * 451.0; + } else { + v12 = 1517.0 - (v9 / v11 + v9 / v11); + v13 = tan(1.570796326794895 - _angle) * v9; + } + } else { + v12 = 1517.0 - (-29.0 / v11 + -29.0 / v11); + v13 = tan(1.570796326794895 - _angle) * -29.0; + } + + writeScummVar(108, scummRound(v12 * args[0] / 12200.0 + v13 + 41.0)); + writeScummVar(109, scummRound(611.0 - v9 - v12 * args[2] / 12200.0)); + + return 1; } int LogicHEfootball2002::translateScreenToWorld(int32 *args) { - // TODO: Implement modified 2002 version - return LogicHEfootball::translateScreenToWorld(args); + // While this performs the same task as football's 1010 opcode, + // the implementation is different. Note that this is also the + // same as basketball's 1010 opcode with different constants! + + double v15 = 611.0 - args[1]; + double v5 = tan(_angle); + double v4, v6, v7; + + if (v15 >= -29.0) { + if (v15 >= 451.0) { + v4 = (_var2 * 902.0 + _var3) * (v15 - 451.0) + _maxX; + v6 = 1517.0 - (451.0 / v5 + 451.0 / v5); + v7 = tan(1.570796326794895 - _angle) * 451.0; + } else { + v4 = (v15 * _var2 + _var3) * v15 + _var4; + v6 = 1517.0 - (v15 / v5 + v15 / v5); + v7 = tan(1.570796326794895 - _angle) * v15; + } + } else { + v4 = (_var3 - _var2 * 58.0) * (v15 - -29.0) + _minX; + v6 = 1517.0 - (-29.0 / v5 + -29.0 / v5); + v7 = tan(1.570796326794895 - _angle) * -29.0; + } + + writeScummVar(108, scummRound((args[0] - (v7 + 41.0)) * (12200.0 / v6))); + writeScummVar(109, scummRound(v4)); + + return 1; } int LogicHEfootball2002::getDayOfWeek() { @@ -358,7 +436,14 @@ int LogicHEfootball2002::getDayOfWeek() { } int LogicHEfootball2002::initScreenTranslations() { - // TODO: Set values used by translateWorldToScreen/translateScreenToWorld + // Set values used by translateWorldToScreen/translateScreenToWorld + _var0 = _var2 = 0.0029172597f; + _var1 = 4896.3755f; + _var3 = 7.5588355f; + _var4 = 0.0f; + _angle = (float)atan(2.899280575539569); + _maxX = 4002; + _minX = -217; return 1; } diff --git a/engines/scumm/he/script_v100he.cpp b/engines/scumm/he/script_v100he.cpp index a2eb42214b..b024154c7f 100644 --- a/engines/scumm/he/script_v100he.cpp +++ b/engines/scumm/he/script_v100he.cpp @@ -2237,7 +2237,10 @@ void ScummEngine_v100he::o100_videoOps() { switch (subOp) { case 0: memset(_videoParams.filename, 0, sizeof(_videoParams.filename)); + _videoParams.status = 0; + _videoParams.flags = 0; _videoParams.unk2 = pop(); + _videoParams.wizResNum = 0; break; case 19: _videoParams.status = 19; diff --git a/engines/scumm/he/script_v60he.cpp b/engines/scumm/he/script_v60he.cpp index 5e359385b6..bbd8725904 100644 --- a/engines/scumm/he/script_v60he.cpp +++ b/engines/scumm/he/script_v60he.cpp @@ -804,7 +804,7 @@ void ScummEngine_v60he::o60_readFile() { int val; // Fatty Bear uses positive values - if (_game.platform == Common::kPlatformPC && _game.id == GID_FBEAR) + if (_game.platform == Common::kPlatformDOS && _game.id == GID_FBEAR) size = -size; assert(_hInFileTable[slot]); @@ -834,7 +834,7 @@ void ScummEngine_v60he::o60_writeFile() { int slot = pop(); // Fatty Bear uses positive values - if (_game.platform == Common::kPlatformPC && _game.id == GID_FBEAR) + if (_game.platform == Common::kPlatformDOS && _game.id == GID_FBEAR) size = -size; assert(_hOutFileTable[slot]); diff --git a/engines/scumm/he/wiz_he.cpp b/engines/scumm/he/wiz_he.cpp index 798f703db6..ca360803bd 100644 --- a/engines/scumm/he/wiz_he.cpp +++ b/engines/scumm/he/wiz_he.cpp @@ -1548,12 +1548,18 @@ uint8 *Wiz::drawWizImage(int resNum, int state, int maskNum, int maskState, int if (rScreen.intersects(clip)) { rScreen.clip(clip); } else { + if (flags & kWIFBlitToMemBuffer) + free(dst); + return 0; } } else if (_rectOverrideEnabled) { if (rScreen.intersects(_rectOverride)) { rScreen.clip(_rectOverride); } else { + if (flags & kWIFBlitToMemBuffer) + free(dst); + return 0; } } diff --git a/engines/scumm/insane/insane.cpp b/engines/scumm/insane/insane.cpp index b8089ff226..44528e5bac 100644 --- a/engines/scumm/insane/insane.cpp +++ b/engines/scumm/insane/insane.cpp @@ -54,7 +54,7 @@ Insane::Insane(ScummEngine_v7 *scumm) { initvars(); - if (!((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC))) { + if (!((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS))) { readFileToMem("roadrash.rip", &_smush_roadrashRip); readFileToMem("roadrsh2.rip", &_smush_roadrsh2Rip); readFileToMem("roadrsh3.rip", &_smush_roadrsh3Rip); @@ -173,7 +173,7 @@ void Insane::initvars() { _iactBits[i] = 0; - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) { + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) { init_enemyStruct(EN_ROTT1, EN_ROTT1, 0, 0, 60, 0, INV_MACE, 63, "endcrshr.san", 25, 15, 16, 26, 13, 3); } else { @@ -356,7 +356,7 @@ void Insane::initvars() { init_scenePropStruct(138, 57, 0, 59, 134, 0xFF, 0xFF, 0xFF, 0, 30, 0); _actor[0].damage = 0; - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) _actor[0].maxdamage = 60; else _actor[0].maxdamage = 80; @@ -466,7 +466,7 @@ void Insane::init_enemyStruct(int n, int32 handler, int32 initializer, _enemy[n].isEmpty = isEmpty; _enemy[n].weapon = weapon; _enemy[n].sound = sound; - strncpy(_enemy[n].filename, filename, 20); + Common::strlcpy(_enemy[n].filename, filename, 20); _enemy[n].costume4 = costume4; _enemy[n].costume6 = costume6; _enemy[n].costume5 = costume5; @@ -632,7 +632,7 @@ void Insane::putActors() { void Insane::readState() { // PATCH - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) { + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) { _actor[0].inventory[INV_CHAIN] = 0; _actor[0].inventory[INV_CHAINSAW] = 0; _actor[0].inventory[INV_MACE] = 0; @@ -801,7 +801,7 @@ void Insane::prepareScenePropScene(int32 scenePropNum, bool arg_4, bool arg_8) { debugC(DEBUG_INSANE, "Insane::prepareScenePropScene(%d, %d, %d)", scenePropNum, arg_4, arg_8); - if (((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) || !loadScenePropSounds(idx)) + if (((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) || !loadScenePropSounds(idx)) return; _actor[0].defunct = arg_4; @@ -898,7 +898,7 @@ int32 Insane::weaponDamage(int32 actornum) { } void Insane::reinitActors() { - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) { + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) { smlayer_setActorCostume(0, 2, readArray(11)); smlayer_setActorCostume(0, 0, readArray(13)); smlayer_setActorCostume(0, 1, readArray(12)); @@ -966,7 +966,7 @@ void Insane::escapeKeyHandler() { debugC(DEBUG_INSANE, "scene: %d", _currSceneId); switch (_currSceneId) { case 1: - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) { + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) { queueSceneSwitch(1, 0, "minedriv.san", 64, 0, 0, 0); } else { queueSceneSwitch(1, _smush_minedrivFlu, "minedriv.san", 64, 0, _continueFrame1, 1300); @@ -979,7 +979,7 @@ void Insane::escapeKeyHandler() { break; case 2: flu = &_fluConf[14 + _iactSceneId2]; - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) queueSceneSwitch(4, 0, "tovista.san", 64, 0, 0, 0); else queueSceneSwitch(flu->sceneId, *flu->fluPtr, flu->filenamePtr, 64, 0, @@ -1033,7 +1033,7 @@ void Insane::escapeKeyHandler() { break; case 8: flu = &_fluConf[7 + _iactSceneId2]; - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) queueSceneSwitch(1, 0, "minedriv.san", 64, 0, 0, 0); else queueSceneSwitch(flu->sceneId, *flu->fluPtr, flu->filenamePtr, 64, 0, @@ -1041,7 +1041,7 @@ void Insane::escapeKeyHandler() { break; case 7: flu = &_fluConf[0 + _iactSceneId2]; - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) queueSceneSwitch(1, 0, "minedriv.san", 64, 0, 0, 0); else queueSceneSwitch(flu->sceneId, *flu->fluPtr, flu->filenamePtr, 64, 0, @@ -1060,7 +1060,7 @@ void Insane::escapeKeyHandler() { queueSceneSwitch(1, _smush_minedrivFlu, "minedriv.san", 64, 0, _continueFrame1, 1300); break; case 13: - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) queueSceneSwitch(1, 0, "minedriv.san", 64, 0, 0, 0); else queueSceneSwitch(1, _smush_minedrivFlu, "minedriv.san", 64, 0, _continueFrame, 1300); @@ -1195,7 +1195,7 @@ void Insane::smlayer_setActorLayer(int actornum, int actnum, int layer) { } void Insane::smlayer_setFluPalette(byte *pal, int shut_flag) { - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) return; // if (shut_flag) @@ -1311,7 +1311,7 @@ void Insane::procSKIP(int32 subSize, Common::SeekableReadStream &b) { int16 par1, par2; _player->_skipNext = false; - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) { + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) { assert(subSize >= 2); par1 = b.readUint16LE(); par2 = 0; diff --git a/engines/scumm/insane/insane_ben.cpp b/engines/scumm/insane/insane_ben.cpp index 9d11f14e4e..a7fa72c417 100644 --- a/engines/scumm/insane/insane_ben.cpp +++ b/engines/scumm/insane/insane_ben.cpp @@ -125,7 +125,7 @@ int32 Insane::actionBen() { bool doDamage = false; int sound; - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) sound = 59; else sound = 95; @@ -558,7 +558,7 @@ void Insane::actor02Reaction(int32 buttons) { _actor[0].weaponClass = 1; _actor[0].act[2].state = 3; _actor[0].act[2].tilt = calcTilt(_actor[0].tilt); - if (!((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC))) + if (!((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS))) smlayer_startSfx(63); break; case 3: @@ -567,7 +567,7 @@ void Insane::actor02Reaction(int32 buttons) { if (_actor[0].act[2].frame == 2) { if (_currEnemy != EN_CAVEFISH) { tmp = calcEnemyDamage(1, 1); - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) { + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) { if (tmp == 1) smlayer_startSfx(50); } else { @@ -890,7 +890,7 @@ void Insane::actor02Reaction(int32 buttons) { case INV_2X4: case INV_BOOT: tmp = calcEnemyDamage(1, 1); - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) { + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) { if (tmp == 1) smlayer_startSfx(52); if (tmp == 1000) @@ -1015,7 +1015,7 @@ void Insane::actor02Reaction(int32 buttons) { smlayer_setActorFacing(0, 2, 19, 180); _actor[0].act[2].state = 27; _actor[0].act[2].tilt = calcTilt(_actor[0].tilt); - if (!((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC))) + if (!((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS))) smlayer_startSfx(72); break; case 27: @@ -1058,7 +1058,7 @@ void Insane::actor02Reaction(int32 buttons) { case INV_BOOT: case INV_DUST: tmp = calcEnemyDamage(1, 1); - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) { + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) { if (tmp == 1) smlayer_startSfx(58); if (tmp == 1000) @@ -1178,7 +1178,7 @@ void Insane::actor02Reaction(int32 buttons) { _actor[0].lost = true; smlayer_setActorLayer(0, 2, 5); _actor[0].kicking = false; - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) smlayer_setActorCostume(0, 2, readArray(17)); else smlayer_setActorCostume(0, 2, readArray(18)); @@ -1214,7 +1214,7 @@ void Insane::actor02Reaction(int32 buttons) { smlayer_setActorLayer(0, 2, 25); _actor[0].cursorX = 0; _actor[0].kicking = false; - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) { + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) { if (_actor[0].act[2].frame >= 28) { queueSceneSwitch(9, 0, "bencrshe.san", 64, 0, 0, 0); _actor[0].act[2].state = 38; @@ -1229,7 +1229,7 @@ void Insane::actor02Reaction(int32 buttons) { case EN_ROTT1: case EN_ROTT2: case EN_ROTT3: - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) queueSceneSwitch(9, 0, "bencrshe.san", 64, 0, 0, 0); else queueSceneSwitch(9, 0, "wr2_benr.san", 64, 0, 0, 0); @@ -1902,7 +1902,7 @@ void Insane::switchBenWeapon() { switch (_actor[0].weapon) { case INV_CHAIN: - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) smlayer_setActorCostume(0, 2, readArray(19)); else smlayer_setActorCostume(0, 2, readArray(20)); @@ -1911,7 +1911,7 @@ void Insane::switchBenWeapon() { _actor[0].act[2].state = 34; break; case INV_CHAINSAW: - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) smlayer_setActorCostume(0, 2, readArray(23)); else smlayer_setActorCostume(0, 2, readArray(24)); @@ -1920,7 +1920,7 @@ void Insane::switchBenWeapon() { _actor[0].act[2].state = 34; break; case INV_MACE: - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) smlayer_setActorCostume(0, 2, readArray(22)); else smlayer_setActorCostume(0, 2, readArray(23)); @@ -1929,7 +1929,7 @@ void Insane::switchBenWeapon() { _actor[0].act[2].state = 34; break; case INV_2X4: - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) { + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) { smlayer_setActorCostume(0, 2, readArray(18)); } else { if (_currEnemy == EN_CAVEFISH) @@ -1942,7 +1942,7 @@ void Insane::switchBenWeapon() { _actor[0].act[2].state = 34; break; case INV_WRENCH: - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) smlayer_setActorCostume(0, 2, readArray(24)); else smlayer_setActorCostume(0, 2, readArray(25)); @@ -1953,7 +1953,7 @@ void Insane::switchBenWeapon() { case INV_BOOT: case INV_HAND: case INV_DUST: - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) smlayer_setActorCostume(0, 2, readArray(11)); else smlayer_setActorCostume(0, 2, readArray(12)); @@ -2004,7 +2004,7 @@ int32 Insane::setBenState() { void Insane::ouchSoundBen() { _actor[0].act[3].state = 52; - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) { + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) { smlayer_startVoice(54); return; } diff --git a/engines/scumm/insane/insane_enemy.cpp b/engines/scumm/insane/insane_enemy.cpp index 8107956646..fa6d4264ec 100644 --- a/engines/scumm/insane/insane_enemy.cpp +++ b/engines/scumm/insane/insane_enemy.cpp @@ -1244,7 +1244,7 @@ void Insane::ouchSoundEnemy() { _actor[1].act[3].state = 52; - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) { + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) { smlayer_startVoice(55); return; } @@ -1671,7 +1671,7 @@ void Insane::actor12Reaction(int32 buttons) { _actor[1].weaponClass = 1; _actor[1].act[2].state = 3; _actor[1].act[2].tilt = calcTilt(_actor[1].tilt); - if (!((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC))) + if (!((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS))) smlayer_startSfx(63); break; case 3: @@ -1679,7 +1679,7 @@ void Insane::actor12Reaction(int32 buttons) { _actor[1].weaponClass = 1; if (_actor[1].act[2].frame >= 6) { tmp = calcBenDamage(1, 1); - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) { + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) { if (tmp == 1) smlayer_startSfx(50); } else if (tmp == 1) @@ -1851,7 +1851,7 @@ void Insane::actor12Reaction(int32 buttons) { smlayer_setActorFacing(1, 2, 19, 180); _actor[1].act[2].state = 19; _actor[1].act[2].tilt = calcTilt(_actor[1].tilt); - if (!((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC))) { + if (!((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS))) { smlayer_startSfx(69); if (!_actor[1].field_54) { tmp = _vm->_rnd.getRandomNumber(4); @@ -1916,7 +1916,7 @@ void Insane::actor12Reaction(int32 buttons) { case INV_2X4: case INV_BOOT: tmp = calcBenDamage(1, 1); - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) { + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) { if (tmp == 1) smlayer_startSfx(52); else if (tmp == 1000) @@ -2034,7 +2034,7 @@ void Insane::actor12Reaction(int32 buttons) { _actor[1].kicking = true; if (_actor[1].act[2].frame >= 3) { tmp = calcBenDamage(1, 1); - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) { + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) { if (tmp == 1) smlayer_startSfx(57); } else if (tmp == 1) @@ -2088,7 +2088,7 @@ void Insane::actor12Reaction(int32 buttons) { smlayer_setActorLayer(1, 2, 25); _actor[1].act[2].state = 37; - if (!((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC))) { + if (!((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS))) { smlayer_startSfx(96); switch (_currEnemy) { case EN_ROTT1: diff --git a/engines/scumm/insane/insane_iact.cpp b/engines/scumm/insane/insane_iact.cpp index 48c96b537c..9c395beea6 100644 --- a/engines/scumm/insane/insane_iact.cpp +++ b/engines/scumm/insane/insane_iact.cpp @@ -171,7 +171,7 @@ void Insane::iactScene1(byte *renderBitmap, int32 codecparam, int32 setupsan12, } void Insane::chooseEnemy() { - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) { + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) { _currEnemy = EN_ROTT1; return; } diff --git a/engines/scumm/insane/insane_scenes.cpp b/engines/scumm/insane/insane_scenes.cpp index db0b0171bc..06d5d7ac68 100644 --- a/engines/scumm/insane/insane_scenes.cpp +++ b/engines/scumm/insane/insane_scenes.cpp @@ -61,7 +61,7 @@ void Insane::runScene(int arraynum) { case 1: initScene(1); setupValues(); - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) smlayer_setActorCostume(0, 2, readArray(9)); else smlayer_setActorCostume(0, 2, readArray(10)); @@ -70,14 +70,14 @@ void Insane::runScene(int arraynum) { break; case 2: setupValues(); - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) smlayer_setActorCostume(0, 2, readArray(10)); else smlayer_setActorCostume(0, 2, readArray(11)); smlayer_putActor(0, 2, _actor[0].x, _actor[0].y1 + 190, _smlayer_room2); _mainRoadPos = readArray(2); - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) { + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) { initScene(5); startVideo("tovista.san", 1, 32, 12, 0); } else if (_mainRoadPos == _posBrokenTruck) { @@ -93,7 +93,7 @@ void Insane::runScene(int arraynum) { break; case 3: setupValues(); - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) smlayer_setActorCostume(0, 2, readArray(10)); else smlayer_setActorCostume(0, 2, readArray(11)); @@ -148,7 +148,7 @@ void Insane::runScene(int arraynum) { _insaneIsRunning = false; _player->insanity(false); - if (!((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC))) { + if (!((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS))) { writeArray(50, _actor[0].inventory[INV_CHAIN]); writeArray(51, _actor[0].inventory[INV_CHAINSAW]); writeArray(52, _actor[0].inventory[INV_MACE]); @@ -243,7 +243,7 @@ void Insane::stopSceneSounds(int sceneId) { _actor[1].defunct = 0; _actor[1].scenePropSubIdx = 0; _actor[1].field_54 = 0; - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) { + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) { smlayer_stopSound(59); smlayer_stopSound(63); } else { @@ -319,7 +319,7 @@ void Insane::shutCurrentScene() { // insane_loadSceneData1 & insane_loadSceneData2 int Insane::loadSceneData(int scene, int flag, int phase) { - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) return 1; int retvalue = 1; @@ -621,7 +621,7 @@ void Insane::setSceneCostumes(int sceneId) { switch (sceneId) { case 1: - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) smlayer_setActorCostume(0, 2, readArray(9)); else smlayer_setActorCostume(0, 2, readArray(10)); @@ -634,7 +634,7 @@ void Insane::setSceneCostumes(int sceneId) { setupValues(); return; case 2: - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) smlayer_setActorCostume(0, 2, readArray(9)); else smlayer_setActorCostume(0, 2, readArray(10)); @@ -653,7 +653,7 @@ void Insane::setSceneCostumes(int sceneId) { case 4: case 5: case 6: - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) smlayer_setActorCostume(0, 2, readArray(10)); else smlayer_setActorCostume(0, 2, readArray(11)); @@ -672,7 +672,7 @@ void Insane::setEnemyCostumes() { debugC(DEBUG_INSANE, "setEnemyCostumes(%d)", _currEnemy); - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) { + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) { smlayer_setActorCostume(0, 2, readArray(11)); smlayer_setActorCostume(0, 0, readArray(13)); smlayer_setActorCostume(0, 1, readArray(12)); @@ -1000,7 +1000,7 @@ void Insane::postCase11(byte *renderBitmap, int32 codecparam, int32 setupsan12, if (_firstBattle) { smush_setToFinish(); } else { - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) queueSceneSwitch(1, 0, "minedriv.san", 64, 0, 0, 0); else queueSceneSwitch(1, _smush_minedrivFlu, "minedriv.san", 64, 0, @@ -1096,7 +1096,7 @@ void Insane::postCase1(byte *renderBitmap, int32 codecparam, int32 setupsan12, if ((curFrame >= maxFrame) && !_needSceneSwitch) { flu = &_fluConf[14 + _iactSceneId2]; - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) queueSceneSwitch(4, 0, "tovista.san", 64, 0, 0, 0); else queueSceneSwitch(flu->sceneId, *flu->fluPtr, flu->filenamePtr, 64, 0, @@ -1224,7 +1224,7 @@ void Insane::postCase6(byte *renderBitmap, int32 codecparam, int32 setupsan12, else flu = &_fluConf[0 + _iactSceneId2]; - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) queueSceneSwitch(1, 0, "minedriv.san", 64, 0, 0, 0); else queueSceneSwitch(flu->sceneId, *flu->fluPtr, flu->filenamePtr, 64, 0, @@ -1243,7 +1243,7 @@ void Insane::postCase8(byte *renderBitmap, int32 codecparam, int32 setupsan12, queueSceneSwitch(13, _smush_minefiteFlu, "minefite.san", 64, 0, _continueFrame, 1300); } else { - if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC)) { + if ((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS)) { queueSceneSwitch(1, 0, "minedriv.san", 64, 0, 0, 0); } else { if (_currSceneId == 23) { diff --git a/engines/scumm/resource.cpp b/engines/scumm/resource.cpp index b2093e9c1a..7c42b40f58 100644 --- a/engines/scumm/resource.cpp +++ b/engines/scumm/resource.cpp @@ -1214,7 +1214,7 @@ void ScummEngine_v7::readMAXS(int blockSize) { _objectRoomTable = (byte *)calloc(_numGlobalObjects, 1); if ((_game.id == GID_FT) && (_game.features & GF_DEMO) && - (_game.platform == Common::kPlatformPC)) + (_game.platform == Common::kPlatformDOS)) _numGlobalScripts = 300; else _numGlobalScripts = 2000; diff --git a/engines/scumm/script.cpp b/engines/scumm/script.cpp index 8587fb8092..c8eabdd61c 100644 --- a/engines/scumm/script.cpp +++ b/engines/scumm/script.cpp @@ -49,6 +49,8 @@ void ScummEngine::runScript(int script, bool freezeResistant, bool recursive, in if (!recursive) stopScript(script); + uint16 number = (_currentScript != 0xFF) ? vm.slot[_currentScript].number : 0; + if (script < _numGlobalScripts) { // Call getResourceAddress to ensure the resource is loaded & its usage count reset /*scriptPtr =*/ getResourceAddress(rtScript, script); @@ -56,7 +58,7 @@ void ScummEngine::runScript(int script, bool freezeResistant, bool recursive, in scriptType = WIO_GLOBAL; debugC(DEBUG_SCRIPTS, "runScript(Global-%d) from %d-%d", script, - vm.slot[_currentScript].number, _roomResource); + number, _roomResource); } else { scriptOffs = _localScriptOffsets[script - _numGlobalScripts]; if (scriptOffs == 0) @@ -64,7 +66,7 @@ void ScummEngine::runScript(int script, bool freezeResistant, bool recursive, in scriptType = WIO_LOCAL; debugC(DEBUG_SCRIPTS, "runScript(%d) from %d-%d", script, - vm.slot[_currentScript].number, _roomResource); + number, _roomResource); } if (cycle == 0) @@ -138,10 +140,10 @@ void ScummEngine::runObjectScript(int object, int entry, bool freezeResistant, b void ScummEngine::initializeLocals(int slot, int *vars) { int i; if (!vars) { - for (i = 0; i < 25; i++) + for (i = 0; i < NUM_SCRIPT_LOCAL; i++) vm.localvar[slot][i] = 0; } else { - for (i = 0; i < 25; i++) + for (i = 0; i < NUM_SCRIPT_LOCAL; i++) vm.localvar[slot][i] = vars[i]; } } @@ -755,13 +757,13 @@ void ScummEngine::stopObjectCode() { } void ScummEngine::runInventoryScript(int i) { - int args[24]; - memset(args, 0, sizeof(args)); - args[0] = i; if (VAR(VAR_INVENTORY_SCRIPT)) { if (_game.id == GID_INDY3 && _game.platform == Common::kPlatformMacintosh) { inventoryScriptIndy3Mac(); } else { + int args[NUM_SCRIPT_LOCAL]; + memset(args, 0, sizeof(args)); + args[0] = i; runScript(VAR(VAR_INVENTORY_SCRIPT), 0, 0, args); } } @@ -1060,7 +1062,7 @@ void ScummEngine::doSentence(int verb, int objectA, int objectB) { void ScummEngine::checkAndRunSentenceScript() { int i; - int localParamList[24]; + int localParamList[NUM_SCRIPT_LOCAL]; const ScriptSlot *ss; int sentenceScript; @@ -1308,7 +1310,7 @@ void ScummEngine_v0::runSentenceScript() { } void ScummEngine_v2::runInputScript(int clickArea, int val, int mode) { - int args[24]; + int args[NUM_SCRIPT_LOCAL]; int verbScript; verbScript = 4; @@ -1332,7 +1334,7 @@ void ScummEngine_v2::runInputScript(int clickArea, int val, int mode) { } void ScummEngine::runInputScript(int clickArea, int val, int mode) { - int args[24]; + int args[NUM_SCRIPT_LOCAL]; int verbScript; verbScript = VAR(VAR_VERB_SCRIPT); @@ -1490,7 +1492,7 @@ void ScummEngine::beginCutscene(int *args) { void ScummEngine::endCutscene() { ScriptSlot *ss = &vm.slot[_currentScript]; - int args[16]; + int args[NUM_SCRIPT_LOCAL]; if (ss->cutsceneOverride > 0) // Only terminate if active ss->cutsceneOverride--; diff --git a/engines/scumm/script.h b/engines/scumm/script.h index 7b2c625144..74ffaaf426 100644 --- a/engines/scumm/script.h +++ b/engines/scumm/script.h @@ -66,13 +66,15 @@ struct OpcodeEntry : Common::NonCopyable { /** * The number of script slots, which determines the maximal number - * of concurrently running scripts. - * WARNING: Do NOT changes this value unless you really have to, as + * of concurrently running scripts, and the number of local variables + * in a script. + * WARNING: Do NOT changes these values unless you really have to, as * this will break savegame compatibility if done carelessly. If you - * have to change it, make sure you update saveload.cpp accordingly! + * have to change them, make sure you update saveload.cpp accordingly! */ enum { - NUM_SCRIPT_SLOT = 80 + NUM_SCRIPT_SLOT = 80, + NUM_SCRIPT_LOCAL = 25 }; /* Script status type (slot.status) */ @@ -122,7 +124,8 @@ struct VirtualMachineState { int16 cutSceneScriptIndex; byte cutSceneStackPointer; ScriptSlot slot[NUM_SCRIPT_SLOT]; - int32 localvar[NUM_SCRIPT_SLOT][26]; + // Why does localvar have space for one extra local variable? + int32 localvar[NUM_SCRIPT_SLOT][NUM_SCRIPT_LOCAL + 1]; NestedScript nest[kMaxScriptNesting]; byte numNestedScripts; diff --git a/engines/scumm/script_v4.cpp b/engines/scumm/script_v4.cpp index 1de9f08168..ec3ac4b00f 100644 --- a/engines/scumm/script_v4.cpp +++ b/engines/scumm/script_v4.cpp @@ -415,7 +415,7 @@ void ScummEngine_v4::o4_saveLoadGame() { char* ptr; int firstSlot = (_game.id == GID_LOOM) ? STRINGID_SAVENAME1_LOOM : STRINGID_SAVENAME1; ptr = (char *)getStringAddress(slot + firstSlot - 1); - strncpy(name, ptr, sizeof(name)); + Common::strlcpy(name, ptr, sizeof(name)); } if (savePreparedSavegame(slot, name)) diff --git a/engines/scumm/script_v5.cpp b/engines/scumm/script_v5.cpp index 0bf51a2816..2d4c326b68 100644 --- a/engines/scumm/script_v5.cpp +++ b/engines/scumm/script_v5.cpp @@ -630,7 +630,7 @@ void ScummEngine_v5::o5_breakHere() { } void ScummEngine_v5::o5_chainScript() { - int vars[16]; + int vars[NUM_SCRIPT_LOCAL]; int script; int cur; @@ -663,7 +663,7 @@ void ScummEngine_v5::o5_chainScript() { void ScummEngine_v5::o5_cursorCommand() { int i, j, k; - int table[16]; + int table[NUM_SCRIPT_LOCAL]; switch ((_opcode = fetchScriptByte()) & 0x1F) { case 1: // SO_CURSOR_ON _cursor.state = 1; @@ -736,7 +736,7 @@ void ScummEngine_v5::o5_cursorCommand() { } void ScummEngine_v5::o5_cutscene() { - int args[16]; + int args[NUM_SCRIPT_LOCAL]; getWordVararg(args); beginCutscene(args); } @@ -2083,14 +2083,14 @@ void ScummEngine_v5::o5_isSoundRunning() { } void ScummEngine_v5::o5_soundKludge() { - int items[16]; + int items[NUM_SCRIPT_LOCAL]; int num = getWordVararg(items); _sound->soundKludge(items, num); } void ScummEngine_v5::o5_startObject() { int obj, script; - int data[16]; + int data[NUM_SCRIPT_LOCAL]; obj = getVarOrDirectWord(PARAM_1); script = getVarOrDirectByte(PARAM_2); @@ -2101,7 +2101,7 @@ void ScummEngine_v5::o5_startObject() { void ScummEngine_v5::o5_startScript() { int op, script; - int data[16]; + int data[NUM_SCRIPT_LOCAL]; op = _opcode; script = getVarOrDirectByte(PARAM_1); @@ -2130,7 +2130,7 @@ void ScummEngine_v5::o5_startScript() { // Method used by original games to skip copy protection scheme if (!_copyProtection) { // Copy protection was disabled in LucasArts Classic Adventures (PC Disk) - if (_game.id == GID_LOOM && _game.platform == Common::kPlatformPC && _game.version == 3 && _currentRoom == 69 && script == 201) + if (_game.id == GID_LOOM && _game.platform == Common::kPlatformDOS && _game.version == 3 && _currentRoom == 69 && script == 201) script = 205; // Copy protection was disabled in KIXX XL release (Amiga Disk) and // in LucasArts Classic Adventures (PC Disk) @@ -2556,7 +2556,7 @@ void ScummEngine_v5::o5_walkActorToObject() { int ScummEngine_v5::getWordVararg(int *ptr) { int i; - for (i = 0; i < 16; i++) + for (i = 0; i < NUM_SCRIPT_LOCAL; i++) ptr[i] = 0; i = 0; diff --git a/engines/scumm/script_v6.cpp b/engines/scumm/script_v6.cpp index decd34222d..a75e864e7a 100644 --- a/engines/scumm/script_v6.cpp +++ b/engines/scumm/script_v6.cpp @@ -2510,7 +2510,7 @@ void ScummEngine_v7::o6_kernelSetFunctions() { _disableFadeInEffect = true; } } else if (_game.id == GID_FT && !_skipVideo) { - const int insaneVarNum = ((_game.features & GF_DEMO) && (_game.platform == Common::kPlatformPC)) + const int insaneVarNum = ((_game.features & GF_DEMO) && (_game.platform == Common::kPlatformDOS)) ? 232 : 233; _insane->setSmushParams(_smushFrameRate); diff --git a/engines/scumm/scumm-md5.h b/engines/scumm/scumm-md5.h index faa03b3fbb..6aad52578d 100644 --- a/engines/scumm/scumm-md5.h +++ b/engines/scumm/scumm-md5.h @@ -1,5 +1,5 @@ /* - This file was generated by the md5table tool on Fri Apr 05 21:06:17 2013 + This file was generated by the md5table tool on Thu May 2 21:27:50 2013 DO NOT EDIT MANUALLY! */ @@ -17,7 +17,7 @@ static const MD5Table md5table[] = { { "008e76ec3ae58d0add637ea7aa299a2c", "freddi3", "", "", -1, Common::FR_FRA, Common::kPlatformMacintosh }, { "02cae0e7ff8504f73618391873d5781a", "freddi3", "HE 98.5", "", -1, Common::DE_DEU, Common::kPlatformWindows }, { "0305e850382b812fec6e5998ef88a966", "pajama", "", "Demo", -1, Common::NL_NLD, Common::kPlatformUnknown }, - { "035deab53b47bc43abc763560d0f8d4b", "atlantis", "Floppy", "Demo", -1, Common::EN_ANY, Common::kPlatformPC }, + { "035deab53b47bc43abc763560d0f8d4b", "atlantis", "Floppy", "Demo", -1, Common::EN_ANY, Common::kPlatformDOS }, { "037385a953789190298494d92b89b3d0", "catalog", "HE 72", "Demo", -1, Common::EN_ANY, Common::kPlatformWindows }, { "03d3b18ee3fd68114e2a687c871e38d5", "freddi4", "HE 99", "Mini Game", -1, Common::EN_USA, Common::kPlatformWindows }, { "0425954a9db5c340861672892c3e678d", "samnmax", "", "Demo", -1, Common::EN_ANY, Common::kPlatformUnknown }, @@ -33,7 +33,7 @@ static const MD5Table md5table[] = { { "07b810e37be7489263f7bc7627d4765d", "freddi4", "unenc", "Unencrypted", -1, Common::RU_RUS, Common::kPlatformWindows }, { "084ed0fa98a6d1e9368d67fe9cfbd417", "freddi", "HE 71", "Demo", -1, Common::EN_ANY, Common::kPlatformWindows }, { "0855496dde35356b1a9691e22ba84cdc", "freddi", "HE 73", "Demo", -1, Common::EN_ANY, Common::kPlatformWindows }, - { "08656dd9698ddf1023ba9bf8a195e37b", "monkey", "VGA", "VGA", -1, Common::EN_ANY, Common::kPlatformPC }, + { "08656dd9698ddf1023ba9bf8a195e37b", "monkey", "VGA", "VGA", -1, Common::EN_ANY, Common::kPlatformDOS }, { "08cc5c3eedaf72ebe12734eee94f7fa2", "balloon", "HE 80", "", -1, Common::EN_ANY, Common::kPlatformUnknown }, { "09820417db26687bb7fe0c83cc4c553b", "ft", "", "Version A", 19697, Common::EN_ANY, Common::kPlatformUnknown }, { "0a212fa35fa8421f31c1f3961272caf0", "monkey", "VGA", "VGA", -1, Common::DE_DEU, Common::kPlatformAmiga }, @@ -43,15 +43,15 @@ static const MD5Table md5table[] = { { "0aa050f4ad79402fbe9c4f78fb8ac494", "loom", "PC-Engine", "", 6532, Common::EN_ANY, Common::kPlatformPCEngine }, { "0ab19be9e2a3f6938226638b2a3744fe", "PuttTime", "HE 100", "Demo", -1, Common::EN_USA, Common::kPlatformUnknown }, { "0ac41e2e3d2174e5a042a6b565328dba", "puttrace", "HE 98", "Demo", 13110, Common::EN_USA, Common::kPlatformUnknown }, - { "0b3222aaa7efcf283eb621e0cefd26cc", "puttputt", "HE 60", "", -1, Common::RU_RUS, Common::kPlatformPC }, - { "0be88565f734b1e9e77ccaaf3bb14b29", "loom", "EGA", "EGA", -1, Common::ES_ESP, Common::kPlatformPC }, + { "0b3222aaa7efcf283eb621e0cefd26cc", "puttputt", "HE 60", "", -1, Common::RU_RUS, Common::kPlatformDOS }, + { "0be88565f734b1e9e77ccaaf3bb14b29", "loom", "EGA", "EGA", -1, Common::ES_ESP, Common::kPlatformDOS }, { "0bf1a3eb198ca1bd2ebe104825cec770", "puttrace", "HE 99", "Demo", -1, Common::FR_FRA, Common::kPlatformWindows }, { "0c331637580950aea2346e012ef2a868", "maniac", "V2", "V2", 1988, Common::EN_ANY, Common::kPlatformAtariST }, { "0c45eb4baff0c12c3d9dfa889c8070ab", "pajama3", "", "Demo", 13884, Common::DE_DEU, Common::kPlatformUnknown }, { "0cccfa5223099a60e76cfcca57a1a141", "freddi3", "", "", -1, Common::NL_NLD, Common::kPlatformUnknown }, - { "0d1b69471605201ef2fa9cec1f5f02d2", "maniac", "V2", "V2", -1, Common::ES_ESP, Common::kPlatformPC }, + { "0d1b69471605201ef2fa9cec1f5f02d2", "maniac", "V2", "V2", -1, Common::ES_ESP, Common::kPlatformDOS }, { "0ddf1174d0d097956ba10dd452ea65e6", "freddi3", "HE 99", "", -1, Common::HE_ISR, Common::kPlatformWindows }, - { "0e4c5d54a0ad4b26132e78b5ea76642a", "samnmax", "Floppy", "Demo", 6485, Common::EN_ANY, Common::kPlatformPC }, + { "0e4c5d54a0ad4b26132e78b5ea76642a", "samnmax", "Floppy", "Demo", 6485, Common::EN_ANY, Common::kPlatformDOS }, { "0e96ab45a4eb72acc1b46813976589fd", "activity", "", "", -1, Common::EN_ANY, Common::kPlatformMacintosh }, { "0e9b01430e31d9fcd94071d433bbc6bf", "loom", "No AdLib", "EGA", -1, Common::FR_FRA, Common::kPlatformAtariST }, { "0f5935bd5e88ba6f09e558d64459746d", "thinker1", "", "Demo", 30919, Common::EN_USA, Common::kPlatformWindows }, @@ -62,7 +62,7 @@ static const MD5Table md5table[] = { { "1005456bfe351c1b679e1ff2dc2849e9", "puttzoo", "", "", -1, Common::UNK_LANG, Common::kPlatformWindows }, { "100b4c8403ad6a83d4bf7dbf83e44dc4", "spyfox", "", "", -1, Common::FR_FRA, Common::kPlatformWindows }, { "10d8e66cd11049ce64815ebb9fd76eb3", "spyozon", "", "", -1, Common::FR_FRA, Common::kPlatformUnknown }, - { "114acdc2659a273c220f86ee9edb24c1", "maniac", "V2", "V2", -1, Common::FR_FRA, Common::kPlatformPC }, + { "114acdc2659a273c220f86ee9edb24c1", "maniac", "V2", "V2", -1, Common::FR_FRA, Common::kPlatformDOS }, { "11ddf1fde76e3156eb3a38da213f484e", "monkey2", "", "", -1, Common::IT_ITA, Common::kPlatformAmiga }, { "11e6e244078ff09b0f3832e35420e0a7", "catalog", "", "Demo", -1, Common::EN_ANY, Common::kPlatformWindows }, { "132bff65e6367c09cc69318ce1b59333", "monkey2", "", "", 11155, Common::EN_ANY, Common::kPlatformAmiga }, @@ -74,20 +74,20 @@ static const MD5Table md5table[] = { { "15240c59d3681ed53f714f8d925cb2d6", "maniac", "V2", "V2", -1, Common::ES_ESP, Common::kPlatformAtariST }, { "157367c3c21e0d03a0cba44361b4cf65", "indy3", "No AdLib", "EGA", -1, Common::EN_ANY, Common::kPlatformAtariST }, { "15878e3bee2e1e759184abee98589eaa", "spyfox", "HE 100", "", -1, Common::EN_ANY, Common::kPlatformIOS }, - { "15e03ffbfeddb9c2aebc13dcb2a4a8f4", "monkey", "VGA", "VGA", 8357, Common::EN_ANY, Common::kPlatformPC }, + { "15e03ffbfeddb9c2aebc13dcb2a4a8f4", "monkey", "VGA", "VGA", 8357, Common::EN_ANY, Common::kPlatformDOS }, { "15f588e887e857e8c56fe6ade4956168", "atlantis", "Floppy", "Floppy", -1, Common::ES_ESP, Common::kPlatformAmiga }, { "16542a7342a918bfe4ba512007d36c47", "FreddisFunShop", "HE 99L", "", -1, Common::EN_USA, Common::kPlatformUnknown }, { "166553538ff320c69edafeee29525419", "samnmax", "", "CD", 199195304, Common::EN_ANY, Common::kPlatformMacintosh }, { "16effd200aa6b8abe9c569c3e578814d", "freddi4", "HE 99", "Demo", -1, Common::NL_NLD, Common::kPlatformUnknown }, { "179879b6e35c1ead0d93aab26db0951b", "fbear", "HE 70", "", 13381, Common::EN_ANY, Common::kPlatformWindows }, - { "17b5d5e6af4ae89d62631641d66d5a05", "indy3", "VGA", "VGA", -1, Common::IT_ITA, Common::kPlatformPC }, + { "17b5d5e6af4ae89d62631641d66d5a05", "indy3", "VGA", "VGA", -1, Common::IT_ITA, Common::kPlatformDOS }, { "17f7296f63c78642724f057fd8e736a7", "maniac", "NES", "", 2082, Common::EN_GRB, Common::kPlatformNES }, - { "17fa250eb72dae2dad511ba79c0b6b0a", "tentacle", "", "Demo", -1, Common::FR_FRA, Common::kPlatformPC }, - { "182344899c2e2998fca0bebcd82aa81a", "atlantis", "", "CD", 12035, Common::EN_ANY, Common::kPlatformPC }, - { "183d7464902d40d00800e8ee1f04117c", "maniac", "V2", "V2", 1988, Common::DE_DEU, Common::kPlatformPC }, - { "1875b90fade138c9253a8e967007031a", "indy3", "VGA", "VGA", 6295, Common::EN_ANY, Common::kPlatformPC }, - { "187d315f6b5168f68680dfe8c3d76a3e", "loom", "EGA", "EGA", -1, Common::HE_ISR, Common::kPlatformPC }, - { "1900e501a52fbf55bde6e4196f6d2aa6", "zak", "V2", "V2", -1, Common::IT_ITA, Common::kPlatformPC }, + { "17fa250eb72dae2dad511ba79c0b6b0a", "tentacle", "", "Demo", -1, Common::FR_FRA, Common::kPlatformDOS }, + { "182344899c2e2998fca0bebcd82aa81a", "atlantis", "", "CD", 12035, Common::EN_ANY, Common::kPlatformDOS }, + { "183d7464902d40d00800e8ee1f04117c", "maniac", "V2", "V2", 1988, Common::DE_DEU, Common::kPlatformDOS }, + { "1875b90fade138c9253a8e967007031a", "indy3", "VGA", "VGA", 6295, Common::EN_ANY, Common::kPlatformDOS }, + { "187d315f6b5168f68680dfe8c3d76a3e", "loom", "EGA", "EGA", -1, Common::HE_ISR, Common::kPlatformDOS }, + { "1900e501a52fbf55bde6e4196f6d2aa6", "zak", "V2", "V2", -1, Common::IT_ITA, Common::kPlatformDOS }, { "19263586f749a560c1adf8b3393a9593", "socks", "HE 85", "", -1, Common::RU_RUS, Common::kPlatformWindows }, { "19bf6938a94698296bcb0c99c31c91a7", "spyfox2", "", "Demo", -1, Common::EN_GRB, Common::kPlatformWindows }, { "1a6e5ae2777a6a33f06ffc0226210934", "atlantis", "", "CD", -1, Common::EN_ANY, Common::kPlatformMacintosh }, @@ -96,13 +96,13 @@ static const MD5Table md5table[] = { { "1c792d28376d45e145cb916bca0400a2", "spyfox2", "", "Demo", -1, Common::NL_NLD, Common::kPlatformUnknown }, { "1c7e7db2cfab1ad62746ab680a634204", "maniac", "NES", "", -1, Common::FR_FRA, Common::kPlatformNES }, { "1ca86e2cf9aaa2068738a1e5ba477e60", "zak", "FM-TOWNS", "", -1, Common::JA_JPN, Common::kPlatformFMTowns }, - { "1d05cd189e4908f79b57e78a4402f292", "monkey", "EGA", "EGA", -1, Common::EN_ANY, Common::kPlatformPC }, + { "1d05cd189e4908f79b57e78a4402f292", "monkey", "EGA", "EGA", -1, Common::EN_ANY, Common::kPlatformDOS }, { "1d7a2e1ddcade791e2de0cfceac86725", "pajama", "", "", -1, Common::FR_FRA, Common::kPlatformUnknown }, - { "1dd3c11ea4439adfe681e4e405b624e1", "monkey", "EGA", "EGA", -1, Common::FR_FRA, Common::kPlatformPC }, + { "1dd3c11ea4439adfe681e4e405b624e1", "monkey", "EGA", "EGA", -1, Common::FR_FRA, Common::kPlatformDOS }, { "1dd7aa088e09f96d06818aa9a9deabe0", "indy3", "No AdLib", "EGA", 5361, Common::EN_ANY, Common::kPlatformMacintosh }, { "1ed22f601f8b3695804a6583cc3083f1", "puttrace", "HE 98.5", "", -1, Common::NL_NLD, Common::kPlatformUnknown }, { "1f2e62b5a9c50589fc342285a6bb3a27", "freddi", "HE 73", "", -1, Common::HE_ISR, Common::kPlatformWindows }, - { "1fbebd7b2b692df5297870447a80cfed", "atlantis", "Floppy", "Floppy", 12030, Common::DE_DEU, Common::kPlatformPC }, + { "1fbebd7b2b692df5297870447a80cfed", "atlantis", "Floppy", "Floppy", 12030, Common::DE_DEU, Common::kPlatformDOS }, { "1ff5997c78fbd0a841a75ef15a05d9d5", "BluesBirthday", "Red", "Red", -1, Common::EN_ANY, Common::kPlatformUnknown }, { "2012f854d83d9cc6f73b2b544cd8bbf8", "water", "HE 80", "", -1, Common::RU_RUS, Common::kPlatformWindows }, { "20176076d708bf14407bcc9bdcd7a418", "pajama3", "", "", -1, Common::RU_RUS, Common::kPlatformWindows }, @@ -115,22 +115,22 @@ static const MD5Table md5table[] = { { "225e18566e810c634bf7de63e7568e3e", "mustard", "", "", -1, Common::EN_USA, Common::kPlatformUnknown }, { "22c9eb04455440131ffc157aeb8d40a8", "fbear", "HE 70", "Demo", -1, Common::EN_ANY, Common::kPlatformWindows }, { "22de86b2f7ec6e5db745ed1123310b44", "spyfox2", "", "Demo", 15832, Common::FR_FRA, Common::kPlatformWindows }, - { "22f4ea88a09da12df9308ba30bcb7d0f", "loom", "EGA", "EGA", -1, Common::EN_ANY, Common::kPlatformPC }, + { "22f4ea88a09da12df9308ba30bcb7d0f", "loom", "EGA", "EGA", -1, Common::EN_ANY, Common::kPlatformDOS }, { "23394c8d29cc63c61313959431a12476", "spyfox", "HE 100", "Updated", -1, Common::EN_ANY, Common::kPlatformWindows }, { "254fede2f15dbb32a23760d601b01816", "zak", "V1", "", -1, Common::EN_ANY, Common::kPlatformC64 }, - { "2723fea3dae0cb47768c424b145ae0e7", "tentacle", "Floppy", "Floppy", 7932, Common::EN_ANY, Common::kPlatformPC }, + { "2723fea3dae0cb47768c424b145ae0e7", "tentacle", "Floppy", "Floppy", 7932, Common::EN_ANY, Common::kPlatformDOS }, { "27b2ef1653089fe5b897d9cc89ce784f", "balloon", "HE 80", "", -1, Common::RU_RUS, Common::kPlatformWindows }, { "27b3a4224ad63d5b04627595c1c1a025", "zak", "V2", "V2", -1, Common::IT_ITA, Common::kPlatformAmiga }, { "28d24a33448fab6795850bc9f159a4a2", "atlantis", "FM-TOWNS", "Demo", 11170, Common::JA_JPN, Common::kPlatformFMTowns }, - { "28ef68ee3ed76d7e2ee8ee13c15fbd5b", "loom", "EGA", "EGA", 5748, Common::EN_ANY, Common::kPlatformPC }, + { "28ef68ee3ed76d7e2ee8ee13c15fbd5b", "loom", "EGA", "EGA", 5748, Common::EN_ANY, Common::kPlatformDOS }, { "28f07458f1b6c24e118a1ea056827701", "lost", "HE 99", "", -1, Common::NL_NLD, Common::kPlatformUnknown }, - { "2a208ffbcd0e83e86f4356e6f64aa6e1", "loom", "EGA", "EGA", -1, Common::ES_ESP, Common::kPlatformPC }, + { "2a208ffbcd0e83e86f4356e6f64aa6e1", "loom", "EGA", "EGA", -1, Common::ES_ESP, Common::kPlatformDOS }, { "2a41b53cf1a90b6e6f26c10cc6041084", "tentacle", "", "Demo", 2439158, Common::EN_ANY, Common::kPlatformMacintosh }, { "2a446817ffcabfef8716e0c456ecaf81", "puttzoo", "", "Demo", -1, Common::DE_DEU, Common::kPlatformWindows }, { "2a8658dbd13d84d1bce64a71a35995eb", "pajama2", "HE 99", "Demo", -1, Common::HE_ISR, Common::kPlatformWindows }, - { "2c04aacffb8428f30ccf4f734fbe3adc", "activity", "", "", -1, Common::EN_ANY, Common::kPlatformPC }, + { "2c04aacffb8428f30ccf4f734fbe3adc", "activity", "", "", -1, Common::EN_ANY, Common::kPlatformDOS }, { "2ccd8891ce4d3f1a334d21bff6a88ca2", "monkey", "CD", "", 9455, Common::EN_ANY, Common::kPlatformMacintosh }, - { "2d1e891fe52df707c30185e52c50cd92", "monkey", "CD", "CD", 8955, Common::EN_ANY, Common::kPlatformPC }, + { "2d1e891fe52df707c30185e52c50cd92", "monkey", "CD", "CD", 8955, Common::EN_ANY, Common::kPlatformDOS }, { "2d388339d6050d8ccaa757b64633954e", "indyloom", "FM-TOWNS", "Demo", 7520, Common::EN_ANY, Common::kPlatformFMTowns }, { "2d4536a56e01da4b02eb021e7770afa2", "zak", "FM-TOWNS", "", 7520, Common::EN_ANY, Common::kPlatformFMTowns }, { "2d4acbdcfd8e374c9da8c2e7303a5cd0", "BluesBirthday", "", "Demo", -1, Common::EN_ANY, Common::kPlatformUnknown }, @@ -139,14 +139,14 @@ static const MD5Table md5table[] = { { "2e85f7aa054930c692a5b1bed1dfc295", "football2002", "", "Patched", -1, Common::EN_ANY, Common::kPlatformUnknown }, { "2e8a1f76ea33bc5e04347646feee173d", "pajama3", "", "", -1, Common::DE_DEU, Common::kPlatformUnknown }, { "2fe369ad70f52a8cf7ad6077ee64f81a", "loom", "EGA", "EGA", -1, Common::DE_DEU, Common::kPlatformAmiga }, - { "305d3dd57c96c65b017bc70c8c7cfb5e", "monkey", "CD", "CD", 8955, Common::DE_DEU, Common::kPlatformPC }, + { "305d3dd57c96c65b017bc70c8c7cfb5e", "monkey", "CD", "CD", 8955, Common::DE_DEU, Common::kPlatformDOS }, { "30ba1e825d4ad2b448143ae8df18482a", "pajama2", "HE 98.5", "Demo", -1, Common::NL_NLD, Common::kPlatformUnknown }, { "30d1903b0715759af064be2127381cd0", "freddi", "HE 100", "", 34837, Common::DE_DEU, Common::kPlatformWii }, { "319a4dde52c7960b5aae8a1ec348d918", "monkey", "VGA", "VGA", -1, Common::DE_DEU, Common::kPlatformAmiga }, - { "31aa57f460a3d12429f0552a46a90b39", "puttputt", "Demo", "Demo", 6150, Common::EN_ANY, Common::kPlatformPC }, + { "31aa57f460a3d12429f0552a46a90b39", "puttputt", "Demo", "Demo", 6150, Common::EN_ANY, Common::kPlatformDOS }, { "31b8fda4c8c7413fa6b39997e776eba4", "loom", "FM-TOWNS", "", -1, Common::JA_JPN, Common::kPlatformFMTowns }, { "32709cbeeb3044b34129950860a83f14", "pajama2", "HE 99", "", -1, Common::RU_RUS, Common::kPlatformWindows }, - { "32a433dea56b86a55b59e4ff7d755711", "ft", "Demo", "Demo", -1, Common::EN_ANY, Common::kPlatformPC }, + { "32a433dea56b86a55b59e4ff7d755711", "ft", "Demo", "Demo", -1, Common::EN_ANY, Common::kPlatformDOS }, { "330f631502e381a4e199a3f7cb483c20", "indy3", "EGA", "EGA", -1, Common::DE_DEU, Common::kPlatformAmiga }, { "33e989f85da700e2014d00f345cab3d7", "puttrace", "HE 98.5", "", -1, Common::FR_FRA, Common::kPlatformWindows }, { "3433be9866ca4261b2d5d25374e3f243", "monkey", "VGA", "VGA", -1, Common::FR_FRA, Common::kPlatformAmiga }, @@ -154,16 +154,16 @@ static const MD5Table md5table[] = { { "356fb5f680b68251333016175935d126", "BluesABCTime", "HE CUP", "Preview", 4133436, Common::UNK_LANG, Common::kPlatformUnknown }, { "35a2d3040fa512f8232d9e443319d84d", "dig", "", "", 659335495, Common::EN_ANY, Common::kPlatformMacintosh }, { "362c1d281fb9899254cda66ad246c66a", "dig", "Demo", "Demo", 3472, Common::EN_ANY, Common::kPlatformUnknown }, - { "3686cf8f89e102ececf4366e1d2c8126", "monkey2", "", "", 11135, Common::EN_ANY, Common::kPlatformPC }, + { "3686cf8f89e102ececf4366e1d2c8126", "monkey2", "", "", 11135, Common::EN_ANY, Common::kPlatformDOS }, { "36a6750e03fb505fc19fc2bf3e4dbe91", "pajama2", "", "Demo", 58749, Common::EN_ANY, Common::kPlatformUnknown }, { "3769b56c9a22f5521d74525ee459f88d", "puttrace", "HE 99", "Demo", 13108, Common::DE_DEU, Common::kPlatformWindows }, { "37aed3f91c1ef959e0bd265f9b13781f", "pajama", "HE 100", "Updated", -1, Common::EN_USA, Common::kPlatformUnknown }, - { "37f56ceb13e401a7ac7d9e6b37fecaf7", "loom", "EGA", "EGA", 5748, Common::EN_ANY, Common::kPlatformPC }, + { "37f56ceb13e401a7ac7d9e6b37fecaf7", "loom", "EGA", "EGA", 5748, Common::EN_ANY, Common::kPlatformDOS }, { "37ff1b308999c4cca7319edfcc1280a0", "puttputt", "HE 70", "Demo", 8269, Common::EN_ANY, Common::kPlatformWindows }, - { "3824e60cdf639d22f6df92a03dc4b131", "fbear", "HE 62", "", 7732, Common::EN_ANY, Common::kPlatformPC }, - { "387a544b8b10b26912d8413bab63a853", "monkey2", "", "Demo", -1, Common::EN_ANY, Common::kPlatformPC }, + { "3824e60cdf639d22f6df92a03dc4b131", "fbear", "HE 62", "", 7732, Common::EN_ANY, Common::kPlatformDOS }, + { "387a544b8b10b26912d8413bab63a853", "monkey2", "", "Demo", -1, Common::EN_ANY, Common::kPlatformDOS }, { "3938ee1aa4433fca9d9308c9891172b1", "indyzak", "FM-TOWNS", "Demo", 7520, Common::EN_ANY, Common::kPlatformFMTowns }, - { "399b217b0c8d65d0398076da486363a9", "indy3", "VGA", "VGA", 6295, Common::DE_DEU, Common::kPlatformPC }, + { "399b217b0c8d65d0398076da486363a9", "indy3", "VGA", "VGA", 6295, Common::DE_DEU, Common::kPlatformDOS }, { "39cb9dec16fa16f38d79acd80effb059", "loom", "EGA", "EGA", -1, Common::UNK_LANG, Common::kPlatformAmiga }, { "39fd6db10d0222d817025c4d3346e3b4", "farm", "", "Demo", -1, Common::EN_ANY, Common::kPlatformMacintosh }, { "3a03dab514e4038df192d8a8de469788", "atlantis", "Floppy", "Floppy", -1, Common::EN_ANY, Common::kPlatformAmiga }, @@ -173,32 +173,32 @@ static const MD5Table md5table[] = { { "3a5ec90d556d4920976c5578bfbfaf79", "maniac", "NES", "", -1, Common::DE_DEU, Common::kPlatformNES }, { "3ae7f002d9256b8bdf76aaf8a3a069f8", "freddi", "HE 100", "", 34837, Common::EN_GRB, Common::kPlatformWii }, { "3af61c5edf8e15b43dbafd285b2e9777", "puttcircus", "", "Demo", -1, Common::HE_ISR, Common::kPlatformWindows }, - { "3b301b7892f883ce42ab4be6a274fea6", "samnmax", "Floppy", "Floppy", -1, Common::EN_ANY, Common::kPlatformPC }, + { "3b301b7892f883ce42ab4be6a274fea6", "samnmax", "Floppy", "Floppy", -1, Common::EN_ANY, Common::kPlatformDOS }, { "3b832f4a90740bf22e9b8ed42ca0128c", "freddi4", "HE 99", "", -1, Common::EN_GRB, Common::kPlatformUnknown }, { "3c4c471342bd95505a42334367d8f127", "puttmoon", "HE 70", "", 12161, Common::RU_RUS, Common::kPlatformWindows }, - { "3cce1913a3bc586b51a75c3892ff18dd", "indy3", "VGA", "VGA", -1, Common::RU_RUS, Common::kPlatformPC }, - { "3d219e7546039543307b55a91282bf18", "funpack", "", "", -1, Common::EN_ANY, Common::kPlatformPC }, + { "3cce1913a3bc586b51a75c3892ff18dd", "indy3", "VGA", "VGA", -1, Common::RU_RUS, Common::kPlatformDOS }, + { "3d219e7546039543307b55a91282bf18", "funpack", "", "", -1, Common::EN_ANY, Common::kPlatformDOS }, { "3de99ef0523f8ca7958faa3afccd035a", "spyfox", "HE 100", "Updated", -1, Common::EN_USA, Common::kPlatformUnknown }, { "3df6ead57930488bc61e6e41901d0e97", "fbear", "HE 62", "", -1, Common::EN_ANY, Common::kPlatformMacintosh }, { "3e48298920fab9b7aec5a971e1bd1fab", "pajama3", "", "Demo", -1, Common::EN_GRB, Common::kPlatformWindows }, { "3e861421f494711bc6f619d4aba60285", "airport", "", "", 93231, Common::RU_RUS, Common::kPlatformWindows }, - { "40564ec47da48a67787d1f9bd043902a", "maniac", "V2 Demo", "V2 Demo", 1988, Common::EN_ANY, Common::kPlatformPC }, + { "40564ec47da48a67787d1f9bd043902a", "maniac", "V2 Demo", "V2 Demo", 1988, Common::EN_ANY, Common::kPlatformDOS }, { "4167a92a1d46baa4f4127d918d561f88", "tentacle", "", "CD", 7932, Common::EN_ANY, Common::kPlatformUnknown }, { "41958e24d03181ff9a381a66d048a581", "ft", "", "", -1, Common::PT_BRA, Common::kPlatformUnknown }, { "425205754fa749f4f0b0dd9d09fa45fd", "football", "", "Demo", -1, Common::EN_ANY, Common::kPlatformUnknown }, { "430bc518017b6fac046f58bab6baad5d", "monkey2", "FM-TOWNS", "", -1, Common::JA_JPN, Common::kPlatformFMTowns }, { "439a7f4adf510489981ac52308e7d7a2", "maniac", "C64", "", -1, Common::DE_DEU, Common::kPlatformC64 }, { "45082a5c9f42ba14dacfe1fdeeba819d", "freddicove", "HE 100", "Demo", 18422, Common::EN_ANY, Common::kPlatformUnknown }, - { "45152f7cf2ba8f43cf8a8ea2e740ae09", "monkey", "VGA", "VGA", 8357, Common::ES_ESP, Common::kPlatformPC }, + { "45152f7cf2ba8f43cf8a8ea2e740ae09", "monkey", "VGA", "VGA", 8357, Common::ES_ESP, Common::kPlatformDOS }, { "4521138d15d1fd7649c31fb981746231", "pajama2", "HE 98.5", "Demo", -1, Common::DE_DEU, Common::kPlatformUnknown }, { "4522564b3c31aaf218b6a96826a549fd", "maze", "HE 99", "", -1, Common::EN_USA, Common::kPlatformWindows }, - { "46b53fd430adcfbed791b48a0d4b079f", "funpack", "", "", -1, Common::EN_ANY, Common::kPlatformPC }, - { "470c45b636139bb40716daa1c7edaad0", "loom", "EGA", "EGA", -1, Common::DE_DEU, Common::kPlatformPC }, - { "477dbafbd66a53c98416dc01aef019ad", "monkey", "EGA", "EGA", -1, Common::IT_ITA, Common::kPlatformPC }, + { "46b53fd430adcfbed791b48a0d4b079f", "funpack", "", "", -1, Common::EN_ANY, Common::kPlatformDOS }, + { "470c45b636139bb40716daa1c7edaad0", "loom", "EGA", "EGA", -1, Common::DE_DEU, Common::kPlatformDOS }, + { "477dbafbd66a53c98416dc01aef019ad", "monkey", "EGA", "EGA", -1, Common::IT_ITA, Common::kPlatformDOS }, { "47e041521d35c7a801bb1c010d84da9d", "freddi4", "HE 99", "Demo", -1, Common::IT_ITA, Common::kPlatformWindows }, - { "47e75b1bdcb44c78cb94883d1731ccf8", "fbear", "HE 62", "Demo", 6203, Common::EN_ANY, Common::kPlatformPC }, + { "47e75b1bdcb44c78cb94883d1731ccf8", "fbear", "HE 62", "Demo", 6203, Common::EN_ANY, Common::kPlatformDOS }, { "48b9f04b348bc5013327753f0d12a144", "loom", "EGA", "EGA", -1, Common::ES_ESP, Common::kPlatformAmiga }, - { "49210e124e4c2b30f1290a9ef6306301", "monkey", "EGA", "EGA", 8357, Common::EN_ANY, Common::kPlatformPC }, + { "49210e124e4c2b30f1290a9ef6306301", "monkey", "EGA", "EGA", 8357, Common::EN_ANY, Common::kPlatformDOS }, { "499c958affc394f2a3868f1eb568c3ee", "freddi4", "HE 99", "Demo", -1, Common::NL_NLD, Common::kPlatformUnknown }, { "49a1739981a89066b1121fac04b710f4", "spyfox2", "HE CUP", "Preview", 5756234, Common::UNK_LANG, Common::kPlatformUnknown }, { "4aa93cb30e485b728504ba3a693f12bf", "pajama", "HE 100", "", -1, Common::RU_RUS, Common::kPlatformWindows }, @@ -211,7 +211,7 @@ static const MD5Table md5table[] = { { "4c4820518e16e1a0e3616a3b021a04f3", "catalog", "HE CUP", "Preview", 10927456, Common::DE_DEU, Common::kPlatformUnknown }, { "4cb9c3618f71668f8e4346c8f323fa82", "monkey2", "", "", 10700, Common::EN_ANY, Common::kPlatformMacintosh }, { "4ce2d5b355964bbcb5e5ce73236ef868", "freddicove", "HE 100", "", -1, Common::RU_RUS, Common::kPlatformWindows }, - { "4cfd3fda4a4e6e64a1fc488eba973b7a", "fbpack", "", "", -1, Common::EN_ANY, Common::kPlatformPC }, + { "4cfd3fda4a4e6e64a1fc488eba973b7a", "fbpack", "", "", -1, Common::EN_ANY, Common::kPlatformDOS }, { "4d34042713958b971cb139fba4658586", "atlantis", "FM-TOWNS", "", -1, Common::JA_JPN, Common::kPlatformFMTowns }, { "4d3fbc888de4e6565013f61dc83da6b6", "FreddisFunShop", "HE 99", "", 36245, Common::NL_NLD, Common::kPlatformUnknown }, { "4dbff3787aedcd96b0b325f2d92d7ad9", "maze", "HE 100", "Updated", -1, Common::EN_USA, Common::kPlatformUnknown }, @@ -221,7 +221,7 @@ static const MD5Table md5table[] = { { "4edbf9d03550f7ba01e7f34d69b678dd", "spyfox", "HE 98.5", "Demo", -1, Common::NL_NLD, Common::kPlatformUnknown }, { "4f04b321a95d4315ce6d65f8e1dd0368", "maze", "HE 80", "", -1, Common::EN_USA, Common::kPlatformUnknown }, { "4f138ac6f9b2ac5a41bc68b2c3296064", "freddi4", "HE 99", "", -1, Common::FR_FRA, Common::kPlatformWindows }, - { "4f1d6f8b38343dba405472538b5037ed", "fbear", "HE 62", "", 7717, Common::EN_ANY, Common::kPlatformPC }, + { "4f1d6f8b38343dba405472538b5037ed", "fbear", "HE 62", "", 7717, Common::EN_ANY, Common::kPlatformDOS }, { "4f267a901719623de7dde83e47d5b474", "atlantis", "Floppy", "Floppy", -1, Common::DE_DEU, Common::kPlatformAmiga }, { "4f580a021eee026f3b4589e17d130d78", "freddi4", "", "", -1, Common::UNK_LANG, Common::kPlatformUnknown }, { "4fa6870d9bc8c313b65d54b1da5a1891", "pajama", "", "", -1, Common::NL_NLD, Common::kPlatformUnknown }, @@ -230,11 +230,11 @@ static const MD5Table md5table[] = { { "5057fb0e99e5aa29df1836329232f101", "freddi2", "HE 80", "", -1, Common::UNK_LANG, Common::kPlatformWindows }, { "507bb360688dc4180fdf0d7597352a69", "freddi", "HE 73", "", 26402, Common::SE_SWE, Common::kPlatformWindows }, { "50b831f11b8c4b83784cf81f4dcc69ea", "spyfox", "HE 101", "", -1, Common::EN_ANY, Common::kPlatformWii }, - { "50fcdc982a25063b78ad46bf389b8e8d", "tentacle", "Floppy", "Floppy", -1, Common::IT_ITA, Common::kPlatformPC }, + { "50fcdc982a25063b78ad46bf389b8e8d", "tentacle", "Floppy", "Floppy", -1, Common::IT_ITA, Common::kPlatformDOS }, { "51305e929e330e24a75a0351c8f9975e", "freddi2", "HE 99", "Updated", -1, Common::EN_USA, Common::kPlatformUnknown }, { "513f91a9dbe8d5490b39e56a3ac5bbdf", "pajama2", "HE 98.5", "", -1, Common::NL_NLD, Common::kPlatformUnknown }, { "5262a27afcaee04e5c4900220bd463e7", "PuttsFunShop", "", "", -1, Common::EN_USA, Common::kPlatformUnknown }, - { "52a4bae0746a11d7b1e8554e91a6645c", "zak", "V2", "V2", -1, Common::FR_FRA, Common::kPlatformPC }, + { "52a4bae0746a11d7b1e8554e91a6645c", "zak", "V2", "V2", -1, Common::FR_FRA, Common::kPlatformDOS }, { "53e94115b55dd51d4b8ff0871aa1df1e", "spyfox", "", "Demo", 20103, Common::EN_ANY, Common::kPlatformUnknown }, { "54a936ad06161ff7bfefcb96200f7bff", "monkey", "VGA", "VGA Demo", 7617, Common::EN_ANY, Common::kPlatformAmiga }, { "55518cd73cf9c6d23ea29c51ee06bdfe", "ft", "", "", -1, Common::IT_ITA, Common::kPlatformUnknown }, @@ -246,53 +246,53 @@ static const MD5Table md5table[] = { { "5798972220cd458be2626d54c80f71d7", "atlantis", "Floppy", "Floppy", -1, Common::IT_ITA, Common::kPlatformAmiga }, { "57a17febe2183f521250e55d55b83e60", "PuttTime", "HE 99", "", -1, Common::FR_FRA, Common::kPlatformWindows }, { "57a5cfec9ef231a007043cc1917e8988", "freddi", "HE 100", "", -1, Common::EN_ANY, Common::kPlatformWii }, - { "57b0d89af79befe1cabce3bece869e7f", "tentacle", "Floppy", "Floppy", -1, Common::DE_DEU, Common::kPlatformPC }, + { "57b0d89af79befe1cabce3bece869e7f", "tentacle", "Floppy", "Floppy", -1, Common::DE_DEU, Common::kPlatformDOS }, { "58436e634f4fae1d9973591c2ffa1fcb", "spyfox", "HE 99", "Updated", -1, Common::EN_ANY, Common::kPlatformUnknown }, { "589601b676c98b1c0c987bc031ab68b3", "chase", "HE 95", "", -1, Common::EN_USA, Common::kPlatformUnknown }, { "58fdf4c7ad13540a734e18f8584cad89", "puttzoo", "", "", -1, Common::EN_ANY, Common::kPlatformMacintosh }, { "590e6546aacd0d374b7f3a4f53013ab1", "freddicove", "", "", -1, Common::UNK_LANG, Common::kPlatformUnknown }, { "59d5cfcc5e672a6e07baae01328b918b", "PuttTime", "HE 90", "Demo", -1, Common::FR_FRA, Common::kPlatformUnknown }, - { "5a35e36fd777e9c37a49c5b2faca52f9", "loom", "EGA", "EGA Demo", 6108, Common::EN_ANY, Common::kPlatformPC }, + { "5a35e36fd777e9c37a49c5b2faca52f9", "loom", "EGA", "EGA Demo", 6108, Common::EN_ANY, Common::kPlatformDOS }, { "5b08000a9c47b2887df6506ac767ca68", "fbear", "HE 62", "", -1, Common::EN_ANY, Common::kPlatform3DO }, { "5bd335265a61caa3d78956ad9f88ba23", "football", "", "Demo", 23135, Common::EN_ANY, Common::kPlatformUnknown }, { "5c21fc49aee8f46e58fef21579e614a1", "thinker1", "", "", -1, Common::EN_USA, Common::kPlatformUnknown }, { "5c9cecbd2952ccec14c9ecebf5822a34", "puttzoo", "HE 100", "", -1, Common::EN_ANY, Common::kPlatformIOS }, - { "5d88b9d6a88e6f8e90cded9d01b7f082", "loom", "VGA", "VGA", 8307, Common::EN_ANY, Common::kPlatformPC }, + { "5d88b9d6a88e6f8e90cded9d01b7f082", "loom", "VGA", "VGA", 8307, Common::EN_ANY, Common::kPlatformDOS }, { "5dda73606533d66a4c3f4f9ea6e842af", "farm", "", "", 87061, Common::RU_RUS, Common::kPlatformWindows }, { "5e8fb66971a60e523e5afbc4c129c0e8", "socks", "HE 85", "", -1, Common::EN_USA, Common::kPlatformUnknown }, { "5ebb57234b2fe5c5dff641e00184ad81", "freddi", "HE 73", "", -1, Common::FR_FRA, Common::kPlatformWindows }, - { "5fbe557049892eb4b709d90916ec97ca", "indy3", "EGA", "EGA", 5361, Common::EN_ANY, Common::kPlatformPC }, + { "5fbe557049892eb4b709d90916ec97ca", "indy3", "EGA", "EGA", 5361, Common::EN_ANY, Common::kPlatformDOS }, { "5fdb2ac2483908b065c6e77988338a54", "freddi4", "HE 99", "Demo", -1, Common::NL_NLD, Common::kPlatformWindows }, { "600abd3e9f47e63e670188b7e4e86ac7", "spyozon", "", "", 47128, Common::EN_USA, Common::kPlatformUnknown }, { "6027e9ca9c35746d95dee2068cec17e5", "zak", "V2", "V2", -1, Common::DE_DEU, Common::kPlatformAmiga }, { "60ba818dc3bede86d40357e3913f8505", "ft", "", "Version B", 19697, Common::EN_ANY, Common::kPlatformUnknown }, { "613f64f78ea26c7353b2a5940eb61d6a", "zak", "V2", "V2", -1, Common::FR_FRA, Common::kPlatformAtariST }, { "62050da376483d8edcbd98cd26b6cb57", "puttrace", "HE 99", "", -1, Common::RU_RUS, Common::kPlatformWindows }, - { "624cdb93654667c869d204a64af7e57f", "maniac", "V2", "V2", 1988, Common::EN_ANY, Common::kPlatformPC }, + { "624cdb93654667c869d204a64af7e57f", "maniac", "V2", "V2", 1988, Common::EN_ANY, Common::kPlatformDOS }, { "6269b8fbf51a353e5b501e4ad98cdc67", "arttime", "", "", -1, Common::EN_ANY, Common::kPlatformUnknown }, { "6271130f440066830eca9056c1d7926f", "water", "HE 80", "", -1, Common::RU_RUS, Common::kPlatformWindows }, { "62b8c16b6db226ba95aaa8be73f9885c", "indy3", "EGA", "EGA", -1, Common::ES_ESP, Common::kPlatformAmiga }, { "632d2fddb8ba97723fa15334763ae857", "thinker1", "", "", 33270, Common::EN_ANY, Common::kPlatformWindows }, { "63fdcdc95cdeea00060883aed38e5504", "PuttTime", "HE 85", "", -1, Common::EN_ANY, Common::kPlatformUnknown }, - { "6508fd55530e6915507e1cc37f7f045d", "indy3", "EGA", "EGA", -1, Common::EN_ANY, Common::kPlatformPC }, + { "6508fd55530e6915507e1cc37f7f045d", "indy3", "EGA", "EGA", -1, Common::EN_ANY, Common::kPlatformDOS }, { "65563295c3a06493351870f20a1630cf", "spyozon", "HE CUP", "Preview", 5235008, Common::UNK_LANG, Common::kPlatformUnknown }, { "659942b9a6b519f123a13cca3c333a13", "jungle", "", "", -1, Common::EN_ANY, Common::kPlatformMacintosh }, { "65fa23d6884e8ca23d5d2406d70de7e8", "puttzoo", "", "Demo", -1, Common::FR_FRA, Common::kPlatformWindows }, - { "66236cd1aec24e1d4aff4c4cc93b7e18", "indy3", "EGA", "EGA", -1, Common::FR_FRA, Common::kPlatformPC }, + { "66236cd1aec24e1d4aff4c4cc93b7e18", "indy3", "EGA", "EGA", -1, Common::FR_FRA, Common::kPlatformDOS }, { "663743c03ae0c007f3d665cf631c0e6b", "puttrace", "HE 99", "Demo", 13135, Common::DE_DEU, Common::kPlatformUnknown }, - { "66fd5ff9a810dfeb6d6bdada18221140", "monkey", "VGA", "VGA", -1, Common::IT_ITA, Common::kPlatformPC }, + { "66fd5ff9a810dfeb6d6bdada18221140", "monkey", "VGA", "VGA", -1, Common::IT_ITA, Common::kPlatformDOS }, { "672dec94b82f7f0877ebb5b5cf7f4bc1", "pajama", "", "", -1, Common::EN_USA, Common::kPlatformUnknown }, - { "675d71151e9b5a968c8ce46d9fbf4cbf", "zak", "V2", "V2", 1916, Common::EN_ANY, Common::kPlatformPC }, + { "675d71151e9b5a968c8ce46d9fbf4cbf", "zak", "V2", "V2", 1916, Common::EN_ANY, Common::kPlatformDOS }, { "679855cf61932f9bf995c8f3677380ed", "pajama3", "", "Demo", -1, Common::FR_FRA, Common::kPlatformWindows }, { "68155a6bf082221525f431c2cbdac8ab", "SamsFunShop", "", "", -1, Common::EN_USA, Common::kPlatformUnknown }, { "684732efb5799c0f78804c99d8de9aba", "puttputt", "HE 62", "", -1, Common::EN_ANY, Common::kPlatformMacintosh }, { "68530d2e15f339fbbf3150b78b4d2ffb", "freddi", "HE 73", "", -1, Common::EN_ANY, Common::kPlatformMacintosh }, { "688328c5bdc4c8ec4145688dfa077bf2", "freddi4", "HE 99", "Demo", -1, Common::DE_DEU, Common::kPlatformUnknown }, - { "6886e5d08cee329b1f2e743ae2e3ceed", "monkey2", "", "", 11135, Common::DE_DEU, Common::kPlatformPC }, + { "6886e5d08cee329b1f2e743ae2e3ceed", "monkey2", "", "", 11135, Common::DE_DEU, Common::kPlatformDOS }, { "695fe0b3963333b7e15b37514db3c745", "thinkerk", "", "Demo", 29789, Common::EN_USA, Common::kPlatformUnknown }, - { "697c9b7c55a05d8199c48b48e379d2c8", "puttmoon", "", "", -1, Common::HE_ISR, Common::kPlatformPC }, - { "69d70269fafc4445adbb0d223e4f9a3f", "indy3", "EGA", "EGA", 5361, Common::EN_ANY, Common::kPlatformPC }, - { "69ea626f1f87eecb78ea0d6c6b983a1d", "monkey2", "", "", -1, Common::IT_ITA, Common::kPlatformPC }, + { "697c9b7c55a05d8199c48b48e379d2c8", "puttmoon", "", "", -1, Common::HE_ISR, Common::kPlatformDOS }, + { "69d70269fafc4445adbb0d223e4f9a3f", "indy3", "EGA", "EGA", 5361, Common::EN_ANY, Common::kPlatformDOS }, + { "69ea626f1f87eecb78ea0d6c6b983a1d", "monkey2", "", "", -1, Common::IT_ITA, Common::kPlatformDOS }, { "69ffe29185b8d71f09f6199f8b2a87cb", "lost", "HE 100", "", -1, Common::RU_RUS, Common::kPlatformWindows }, { "6a30a07f353a75cdc602db27d73e1b42", "puttputt", "HE 70", "", -1, Common::EN_ANY, Common::kPlatformWindows }, { "6a60d395b78b205c93a956100b1bf5ae", "pajama2", "HE 98.5", "", -1, Common::DE_DEU, Common::kPlatformUnknown }, @@ -300,7 +300,7 @@ static const MD5Table md5table[] = { { "6b19d0e25cbf720d05822379b8b90ed9", "PuttTime", "HE 90", "Demo", -1, Common::NL_NLD, Common::kPlatformUnknown }, { "6b257bb2827dd894b8109a50a1a18b5a", "freddicove", "HE 100", "Demo", -1, Common::NL_NLD, Common::kPlatformUnknown }, { "6b27dbcd8d5697d5c918eeca0f68ef6a", "puttrace", "HE CUP", "Preview", 3901484, Common::UNK_LANG, Common::kPlatformUnknown }, - { "6b3ec67da214f558dc5ceaa2acd47453", "indy3", "EGA", "EGA", -1, Common::EN_ANY, Common::kPlatformPC }, + { "6b3ec67da214f558dc5ceaa2acd47453", "indy3", "EGA", "EGA", -1, Common::EN_ANY, Common::kPlatformDOS }, { "6b5a3fef241e90d4b2e77f1e222773ee", "maniac", "NES", "", -1, Common::SE_SWE, Common::kPlatformNES }, { "6bca7a1a96d16e52b8f3c42b50dbdca3", "fbear", "HE 62", "", -1, Common::JA_JPN, Common::kPlatform3DO }, { "6bf70eee5de3d24d2403e0dd3d267e8a", "spyfox", "", "", 49221, Common::UNK_LANG, Common::kPlatformWindows }, @@ -311,36 +311,36 @@ static const MD5Table md5table[] = { { "6e959d65358eedf9b68b81e304b97fa4", "tentacle", "", "CD", 7932, Common::DE_DEU, Common::kPlatformUnknown }, { "6ea966b4d660c870b9ee790d1fbfc535", "monkey2", "", "", -1, Common::ES_ESP, Common::kPlatformAmiga }, { "6f0be328c64d689bb606d22a389e1b0f", "loom", "No AdLib", "EGA", 5748, Common::EN_ANY, Common::kPlatformMacintosh }, - { "6f6ef668c608c7f534fea6e6d3878dde", "indy3", "EGA", "EGA", -1, Common::DE_DEU, Common::kPlatformPC }, - { "6f8a22bfa397be1f7ed4b74aba0e397e", "loom", "EGA", "EGA", -1, Common::FR_FRA, Common::kPlatformPC }, + { "6f6ef668c608c7f534fea6e6d3878dde", "indy3", "EGA", "EGA", -1, Common::DE_DEU, Common::kPlatformDOS }, + { "6f8a22bfa397be1f7ed4b74aba0e397e", "loom", "EGA", "EGA", -1, Common::FR_FRA, Common::kPlatformDOS }, { "701246819d1a70573f41bf33fc19214f", "soccer", "", "", -1, Common::EN_ANY, Common::kPlatformUnknown }, { "7015b059ab72cff3a0ef9fb4d5e9889d", "spyozon", "", "", -1, Common::DE_DEU, Common::kPlatformWindows }, - { "7020931d5a2be0a49d68e7a1882363e4", "zak", "V1", "V1", 1896, Common::EN_ANY, Common::kPlatformPC }, + { "7020931d5a2be0a49d68e7a1882363e4", "zak", "V1", "V1", 1896, Common::EN_ANY, Common::kPlatformDOS }, { "70b0719ac3a5b47ae233c561823d5b96", "puttzoo", "", "", -1, Common::NL_NLD, Common::kPlatformMacintosh }, - { "71523b539491527d9860f4407faf0411", "monkey", "Demo", "EGA Demo", 7607, Common::EN_ANY, Common::kPlatformPC }, + { "71523b539491527d9860f4407faf0411", "monkey", "Demo", "EGA Demo", 7607, Common::EN_ANY, Common::kPlatformDOS }, { "71d384e7676c53d513ddd333eae1d82c", "Blues123time", "", "", -1, Common::EN_ANY, Common::kPlatformUnknown }, { "71fe97c3108678cf604f14abe342341b", "spyfox2", "", "", -1, Common::NL_NLD, Common::kPlatformWindows }, { "7222f260253f325c21fcfa68b5bfab67", "spyfox2", "", "Demo", -1, Common::EN_USA, Common::kPlatformUnknown }, { "72ac6bc980d5101c2142189d746bd62f", "spyfox", "HE 99", "", -1, Common::RU_RUS, Common::kPlatformWindows }, { "732845548b1d6c2da572cb6a1bf81b07", "spyfox2", "", "Demo", -1, Common::DE_DEU, Common::kPlatformUnknown }, { "73b8197e236da4bf49adc99fe8f5fa1b", "spyfox", "", "Demo", -1, Common::DE_DEU, Common::kPlatformUnknown }, - { "73e5ab7dbb9a8061cc6d25df02dbd1e7", "loom", "EGA", "EGA", -1, Common::EN_ANY, Common::kPlatformPC }, + { "73e5ab7dbb9a8061cc6d25df02dbd1e7", "loom", "EGA", "EGA", -1, Common::EN_ANY, Common::kPlatformDOS }, { "7410a8ba9795020cd42f171c4320659e", "pajama3", "", "", -1, Common::FR_FRA, Common::kPlatformWindows }, { "746e88c172a5b7a1ae89ac0ee3ee681a", "freddi", "HE 90", "Updated", -1, Common::RU_RUS, Common::kPlatformWindows }, { "74da3494fbe1a7d20213b0afe0954755", "catalog", "HE CUP", "Preview", 10841544, Common::FR_FRA, Common::kPlatformUnknown }, { "754feb59d3bf86b8a00840df74fd7b26", "freddi3", "", "Demo", -1, Common::NL_NLD, Common::kPlatformUnknown }, - { "75ba23fff4fd63fa446c02864f2a5a4b", "zak", "V2", "V2", -1, Common::IT_ITA, Common::kPlatformPC }, + { "75ba23fff4fd63fa446c02864f2a5a4b", "zak", "V2", "V2", -1, Common::IT_ITA, Common::kPlatformDOS }, { "75bff95816b84672b877d22a911ab811", "freddi3", "HE 99", "Updated", -1, Common::RU_RUS, Common::kPlatformWindows }, { "76b66b43e593ad4d2f1dfb5cc8f19700", "spyfox", "HE 99", "", -1, Common::NL_NLD, Common::kPlatformWindows }, - { "771bc18ec6f93837b839c992b211904b", "monkey", "Demo", "EGA Demo", -1, Common::DE_DEU, Common::kPlatformPC }, - { "7766c9487f9d53a8cb0edabda5119c3d", "puttputt", "HE 60", "", 8022, Common::EN_ANY, Common::kPlatformPC }, + { "771bc18ec6f93837b839c992b211904b", "monkey", "Demo", "EGA Demo", -1, Common::DE_DEU, Common::kPlatformDOS }, + { "7766c9487f9d53a8cb0edabda5119c3d", "puttputt", "HE 60", "", 8022, Common::EN_ANY, Common::kPlatformDOS }, { "77f5c9cc0986eb729c1a6b4c8823bbae", "zakloom", "FM-TOWNS", "Demo", 7520, Common::EN_ANY, Common::kPlatformFMTowns }, - { "780e4a0ae2ff17dc296f4a79543b44f8", "puttmoon", "", "", -1, Common::UNK_LANG, Common::kPlatformPC }, + { "780e4a0ae2ff17dc296f4a79543b44f8", "puttmoon", "", "", -1, Common::UNK_LANG, Common::kPlatformDOS }, { "782393c5934ecd0b536eaf5fd541bd26", "pajama", "HE 101", "Updated", -1, Common::EN_ANY, Common::kPlatformWindows }, { "784b499c98d07260a30952685758636b", "pajama3", "", "Demo", 13911, Common::DE_DEU, Common::kPlatformWindows }, { "78bd5f036ea35a878b74e4f47941f784", "freddi4", "HE 99", "", -1, Common::RU_RUS, Common::kPlatformWindows }, { "78c07ca088526d8d4446a4c2cb501203", "freddi3", "HE 99", "", -1, Common::FR_FRA, Common::kPlatformUnknown }, - { "7974365d3dc0f43a2748c975f91ff042", "monkey2", "", "", -1, Common::ES_ESP, Common::kPlatformPC }, + { "7974365d3dc0f43a2748c975f91ff042", "monkey2", "", "", -1, Common::ES_ESP, Common::kPlatformDOS }, { "79b05f628586837e7166e82b2279bb50", "loom", "PC-Engine", "", -1, Common::JA_JPN, Common::kPlatformPCEngine }, { "7bad72e332a59f9fcc1d437f4edad32a", "puttcircus", "", "", -1, Common::RU_RUS, Common::kPlatformUnknown }, { "7c2e76087027eeee9c8f8985f93a1cc5", "freddi4", "", "Demo", 13584, Common::EN_ANY, Common::kPlatformUnknown }, @@ -350,7 +350,7 @@ static const MD5Table md5table[] = { { "7e151c17adf624f1966c8fc5827c95e9", "puttputt", "HE 61", "", -1, Common::EN_ANY, Common::kPlatform3DO }, { "7ea2da67ebabea4ac20cee9f4f9d2934", "airport", "", "Demo", -1, Common::EN_ANY, Common::kPlatformMacintosh }, { "7edd665bbede7ea8b7233f8e650be6f8", "samnmax", "", "CD", -1, Common::FR_FRA, Common::kPlatformUnknown }, - { "7f45ddd6dbfbf8f80c0c0efea4c295bc", "maniac", "V1", "V1", 1972, Common::EN_ANY, Common::kPlatformPC }, + { "7f45ddd6dbfbf8f80c0c0efea4c295bc", "maniac", "V1", "V1", 1972, Common::EN_ANY, Common::kPlatformDOS }, { "7f945525abcd48015adf1632637a44a1", "pajama", "", "Demo", -1, Common::FR_FRA, Common::kPlatformUnknown }, { "7fc6cdb46b4c9d384c52327f4bca6416", "football", "", "", -1, Common::EN_ANY, Common::kPlatformUnknown }, { "810a9da887aefa597b0cf3c77d262897", "BluesABCTime", "", "Demo", -1, Common::EN_ANY, Common::kPlatformUnknown }, @@ -363,18 +363,18 @@ static const MD5Table md5table[] = { { "84e3c23a49ded8a6f9197735c8eb3de7", "PuttTime", "HE 85", "", -1, Common::DE_DEU, Common::kPlatformWindows }, { "8539c0ff89868e55a08e652ac44daaae", "water", "HE 98.5", "", -1, Common::NL_NLD, Common::kPlatformUnknown }, { "861e59ed72a1cd0e6d454f7ee7e2bf3d", "comi", "", "", -1, Common::RU_RUS, Common::kPlatformWindows }, - { "86be8ada36371d4fdc35659d0e912a26", "indy3", "EGA", "EGA", -1, Common::ES_ESP, Common::kPlatformPC }, + { "86be8ada36371d4fdc35659d0e912a26", "indy3", "EGA", "EGA", -1, Common::ES_ESP, Common::kPlatformDOS }, { "86c9902b7bec1a17926d4dae85beaa45", "airport", "HE 71", "Demo", -1, Common::EN_ANY, Common::kPlatformWindows }, { "870d1e3c86bc50846d808d14a36b4e08", "monkey", "VGA", "VGA", -1, Common::ES_ESP, Common::kPlatformAmiga }, { "8776caed014c321272af407c1502a2df", "monkey", "CD", "", 8955, Common::EN_ANY, Common::kPlatformMacintosh }, { "87df3e0074624040407764b7c5e710b9", "pajama", "", "Demo", 18354, Common::NL_NLD, Common::kPlatformWindows }, - { "87f6e8037b7cc996e13474b491a7a98e", "maniac", "V2", "V2", -1, Common::IT_ITA, Common::kPlatformPC }, + { "87f6e8037b7cc996e13474b491a7a98e", "maniac", "V2", "V2", -1, Common::IT_ITA, Common::kPlatformDOS }, { "8801fb4a1200b347f7a38523339526dd", "jungle", "", "", -1, Common::EN_ANY, Common::kPlatformWindows }, { "880c5ca5b944648b3f8b03feb41705a8", "freddi", "HE 100", "", 34837, Common::SE_SWE, Common::kPlatformWii }, { "883af4b0af4f77a92f1dcf1d0a283140", "tentacle", "", "CD", -1, Common::ES_ESP, Common::kPlatformUnknown }, { "898ce8eb1234a955ef75e87141902bb3", "freddi3", "", "", -1, Common::RU_RUS, Common::kPlatformWindows }, { "898eaa21f79cf8d4f08db856244689ff", "pajama", "HE 99", "Updated", 66505, Common::EN_ANY, Common::kPlatformWindows }, - { "89cfc425566003ff74b7dc7b3e6fd469", "indy3", "EGA", "EGA", -1, Common::FR_FRA, Common::kPlatformPC }, + { "89cfc425566003ff74b7dc7b3e6fd469", "indy3", "EGA", "EGA", -1, Common::FR_FRA, Common::kPlatformDOS }, { "8a484262363a8e18be87112454f1456b", "pjgames", "", "", -1, Common::EN_USA, Common::kPlatformUnknown }, { "8aa05d3cdb0e795436043f0546af2da2", "tentacle", "", "CD?", -1, Common::FR_FRA, Common::kPlatformUnknown }, { "8aed489aba45d2b9fb8a04079c9c6e6a", "baseball", "HE CUP", "Preview", 12876596, Common::UNK_LANG, Common::kPlatformUnknown }, @@ -383,41 +383,41 @@ static const MD5Table md5table[] = { { "8d479e36f35e80257dfc102cf4b8a912", "farm", "HE 72", "Demo", 34333, Common::EN_ANY, Common::kPlatformWindows }, { "8de13897f0121c79d29a2377159f9ad0", "socks", "HE 99", "Updated", -1, Common::EN_ANY, Common::kPlatformWindows }, { "8e3241ddd6c8dadf64305e8740d45e13", "balloon", "HE 100", "Updated", -1, Common::EN_ANY, Common::kPlatformUnknown }, - { "8e4ee4db46954bfe2912e259a16fad82", "monkey2", "", "", -1, Common::FR_FRA, Common::kPlatformPC }, + { "8e4ee4db46954bfe2912e259a16fad82", "monkey2", "", "", -1, Common::FR_FRA, Common::kPlatformDOS }, { "8e9417564f33790815445b2136efa667", "atlantis", "", "CD", 11915, Common::JA_JPN, Common::kPlatformMacintosh }, { "8e9830a6f2702be5b22c8fa0a6aaf977", "freddi2", "HE 80", "", -1, Common::NL_NLD, Common::kPlatformMacintosh }, { "8eb84cee9b429314c7f0bdcf560723eb", "monkey", "FM-TOWNS", "", 9925, Common::EN_ANY, Common::kPlatformFMTowns }, { "8ee63cafb1fe9d62aa0d5a23117e70e7", "freddi2", "HE 100", "Updated", -1, Common::EN_USA, Common::kPlatformUnknown }, - { "8f3758ff98c9c5d78e5d635222cad026", "atlantis", "Floppy", "Floppy", -1, Common::IT_ITA, Common::kPlatformPC }, + { "8f3758ff98c9c5d78e5d635222cad026", "atlantis", "Floppy", "Floppy", -1, Common::IT_ITA, Common::kPlatformDOS }, { "8fec68383202d38c0d25e9e3b757c5df", "comi", "Demo", "Demo", 18041, Common::UNK_LANG, Common::kPlatformWindows }, { "8ffd618a776a4c0d8922bb28b09f8ce8", "airport", "", "Demo", -1, Common::EN_ANY, Common::kPlatformWindows }, - { "90a329d8ad5b7ce0690429e98cfbb32f", "funpack", "", "", -1, Common::HE_ISR, Common::kPlatformPC }, + { "90a329d8ad5b7ce0690429e98cfbb32f", "funpack", "", "", -1, Common::HE_ISR, Common::kPlatformDOS }, { "90c755e1c9b9b8a4129d37b2259d0655", "chase", "HE 100", "Updated", -1, Common::EN_USA, Common::kPlatformUnknown }, { "90e2f0af4f779629695c6394a65bb702", "spyfox2", "", "", -1, Common::FR_FRA, Common::kPlatformUnknown }, - { "910e31cffb28226bd68c569668a0d6b4", "monkey", "EGA", "EGA", -1, Common::ES_ESP, Common::kPlatformPC }, + { "910e31cffb28226bd68c569668a0d6b4", "monkey", "EGA", "EGA", -1, Common::ES_ESP, Common::kPlatformDOS }, { "91469353f7be1b122fa88d23480a1320", "zak", "V2", "V2", -1, Common::FR_FRA, Common::kPlatformAmiga }, { "91d5db93187fab54d823f73bd6441cb6", "maniac", "NES", "", -1, Common::EN_USA, Common::kPlatformNES }, { "927a764615c7fcdd72f591355e089d8c", "monkey", "No AdLib", "EGA", -1, Common::DE_DEU, Common::kPlatformAtariST }, - { "92b078d9d6d9d751da9c26b8b3075779", "tentacle", "Floppy", "Floppy", -1, Common::FR_FRA, Common::kPlatformPC }, + { "92b078d9d6d9d751da9c26b8b3075779", "tentacle", "Floppy", "Floppy", -1, Common::FR_FRA, Common::kPlatformDOS }, { "92e7727e67f5cd979d8a1070e4eb8cb3", "puttzoo", "HE 98.5", "Updated", -1, Common::EN_ANY, Common::kPlatformUnknown }, { "92fc0073a4cf259ff36070ecb8628ba8", "thinkerk", "", "", -1, Common::EN_USA, Common::kPlatformUnknown }, - { "94aaedbb8f26d71ed3ad6dd34490e29e", "tentacle", "Floppy", "Floppy", -1, Common::FR_FRA, Common::kPlatformPC }, + { "94aaedbb8f26d71ed3ad6dd34490e29e", "tentacle", "Floppy", "Floppy", -1, Common::FR_FRA, Common::kPlatformDOS }, { "94db6519da85b8d08c976d8e9a858ea7", "baseball", "HE CUP", "Preview", 10044774, Common::UNK_LANG, Common::kPlatformUnknown }, { "95818b178d473c989ac753574e8892aa", "readtime", "", "Demo", -1, Common::EN_ANY, Common::kPlatformUnknown }, { "95b3806e043be08668c54c3ffe98650f", "BluesABCTime", "", "", -1, Common::EN_ANY, Common::kPlatformUnknown }, { "95be99181bd0f10fef4872c2d4a771cb", "zak", "V1", "", -1, Common::DE_DEU, Common::kPlatformC64 }, { "96a3069a3c63caa7329588ce1fef41ee", "spyozon", "", "", -1, Common::RU_RUS, Common::kPlatformUnknown }, - { "9708cf716ed8bcc9ff3fcfc69413b746", "puttputt", "HE 62", "", -1, Common::EN_ANY, Common::kPlatformPC }, + { "9708cf716ed8bcc9ff3fcfc69413b746", "puttputt", "HE 62", "", -1, Common::EN_ANY, Common::kPlatformDOS }, { "9778341eefc6feb447ca07e7be21791c", "puttrace", "HE 99", "Demo", -1, Common::IT_ITA, Common::kPlatformWindows }, { "9781422e4288dbc090720e4563168ba7", "puttzoo", "", "", -1, Common::FR_FRA, Common::kPlatformWindows }, { "981e1e1891f2be7e25a01f50ae55a5af", "puttrace", "HE 98", "", -1, Common::EN_USA, Common::kPlatformUnknown }, - { "98744fe66ff730e8c2b3b1f58803ab0b", "atlantis", "Floppy", "Demo", -1, Common::EN_ANY, Common::kPlatformPC }, + { "98744fe66ff730e8c2b3b1f58803ab0b", "atlantis", "Floppy", "Demo", -1, Common::EN_ANY, Common::kPlatformDOS }, { "99128b6a5bdd9831d9682fb8b5cbf8d4", "BluesBirthday", "Yellow", "Yellow", -1, Common::EN_ANY, Common::kPlatformUnknown }, - { "99a3699f80b8f776efae592b44b9b991", "maniac", "V2", "V2", -1, Common::FR_FRA, Common::kPlatformPC }, - { "99b6f822b0b2612415407865438697d6", "atlantis", "", "Demo", -1, Common::EN_ANY, Common::kPlatformPC }, + { "99a3699f80b8f776efae592b44b9b991", "maniac", "V2", "V2", -1, Common::FR_FRA, Common::kPlatformDOS }, + { "99b6f822b0b2612415407865438697d6", "atlantis", "", "Demo", -1, Common::EN_ANY, Common::kPlatformDOS }, { "9b7452b5cd6d3ffb2b2f5118010af84f", "ft", "Demo", "Demo", 116463537, Common::EN_ANY, Common::kPlatformMacintosh }, { "9bc548e179cdb0767009401c094d0895", "maniac", "V2", "V2", -1, Common::DE_DEU, Common::kPlatformAmiga }, - { "9bd2a8f72613e715c199246dd511e10f", "atlantis", "Floppy", "Floppy", -1, Common::ES_ESP, Common::kPlatformPC }, + { "9bd2a8f72613e715c199246dd511e10f", "atlantis", "Floppy", "Floppy", -1, Common::ES_ESP, Common::kPlatformDOS }, { "9bda5fee51d2fda5253d02c642016bf4", "spyfox", "HE 98.5", "", -1, Common::NL_NLD, Common::kPlatformUnknown }, { "9c0ee9c252785e9fca0143e42ac4b256", "freddi2", "HE 99", "Updated", -1, Common::DE_DEU, Common::kPlatformWindows }, { "9c0fee288ad564a7d25ec3e841810d79", "indy3", "EGA", "EGA", -1, Common::EN_ANY, Common::kPlatformAmiga }, @@ -429,8 +429,8 @@ static const MD5Table md5table[] = { { "9dc02577bf50d4cfaf3de3fbac06fbe2", "puttmoon", "", "", -1, Common::EN_ANY, Common::kPlatformMacintosh }, { "9e5e0fb43bd22f4628719b7501adb717", "monkey", "No AdLib", "EGA", -1, Common::FR_FRA, Common::kPlatformAtariST }, { "9fd66fb3b04703bd50da4356e4202558", "spyfox2", "", "", 51295, Common::EN_ANY, Common::kPlatformMacintosh }, - { "a00554c31d623fdb9fcb0f924b89b42b", "loom", "EGA", "EGA Demo", -1, Common::EN_ANY, Common::kPlatformPC }, - { "a01fab4a64d47b96e2e58e6b0f825cc7", "monkey", "VGA", "VGA", 8347, Common::FR_FRA, Common::kPlatformPC }, + { "a00554c31d623fdb9fcb0f924b89b42b", "loom", "EGA", "EGA Demo", -1, Common::EN_ANY, Common::kPlatformDOS }, + { "a01fab4a64d47b96e2e58e6b0f825cc7", "monkey", "VGA", "VGA", 8347, Common::FR_FRA, Common::kPlatformDOS }, { "a095616d2d23ccf43b8e257711202cba", "football2002", "", "", -1, Common::EN_ANY, Common::kPlatformUnknown }, { "a095e33061606d231ff37dca4c64c8ac", "pajama", "HE 99", "", -1, Common::DE_DEU, Common::kPlatformUnknown }, { "a0a7dea72003933b8b3f8b99b9f7ddeb", "loom", "No AdLib", "EGA", -1, Common::EN_ANY, Common::kPlatformAtariST }, @@ -440,7 +440,7 @@ static const MD5Table md5table[] = { { "a2386da005672cbd5136f4f27a626c5f", "farm", "", "", 87061, Common::NL_NLD, Common::kPlatformWindows }, { "a28135a7ade38cc0208b04507c46efd1", "spyfox", "HE 99", "", -1, Common::DE_DEU, Common::kPlatformUnknown }, { "a2bb6aa0537402c1b3c2ea899ccef64b", "lost", "HE 99", "Demo", 15540, Common::EN_ANY, Common::kPlatformWindows }, - { "a3036878840720fbefa41e6965fa4a0a", "samnmax", "Floppy", "Floppy", -1, Common::EN_ANY, Common::kPlatformPC }, + { "a3036878840720fbefa41e6965fa4a0a", "samnmax", "Floppy", "Floppy", -1, Common::EN_ANY, Common::kPlatformDOS }, { "a336134914eaab4892d35625aa15ad1d", "freddi4", "HE 99", "", -1, Common::RU_RUS, Common::kPlatformWindows }, { "a525c1753c1db5011c00417da37887ef", "PuttTime", "HE 100", "Updated", -1, Common::EN_USA, Common::kPlatformUnknown }, { "a561d2e2413cc1c71d5a1bf87bf493ea", "lost", "HE 100", "Updated", -1, Common::EN_USA, Common::kPlatformUnknown }, @@ -456,38 +456,38 @@ static const MD5Table md5table[] = { { "a9543ef0d79bcb47cd76ec197ad0a967", "puttmoon", "", "", -1, Common::EN_ANY, Common::kPlatform3DO }, { "a99c39ba65b6086be28aef576da69595", "spyozon", "", "Demo", -1, Common::FR_FRA, Common::kPlatformWindows }, { "a9f2f04b1ecaab9495b59befffe9bf88", "pajama3", "", "Demo", -1, Common::EN_USA, Common::kPlatformUnknown }, - { "aa6a91b7f6f119d1b7b1f2a4c9e24d59", "puttmoon", "", "Demo", 6233, Common::EN_ANY, Common::kPlatformPC }, - { "aa7a07d94ae853f6460be4ce0a1bf530", "monkey", "EGA", "EGA", -1, Common::FR_FRA, Common::kPlatformPC }, + { "aa6a91b7f6f119d1b7b1f2a4c9e24d59", "puttmoon", "", "Demo", 6233, Common::EN_ANY, Common::kPlatformDOS }, + { "aa7a07d94ae853f6460be4ce0a1bf530", "monkey", "EGA", "EGA", -1, Common::FR_FRA, Common::kPlatformDOS }, { "aa81aa6d5545ce172fdba81f2e2f9d36", "puttzoo", "", "Demo", -1, Common::NL_NLD, Common::kPlatformWindows }, - { "aa8a0cb65f3afbbe2c14c3f9f92775a3", "monkey", "CD", "CD", 8955, Common::FR_FRA, Common::kPlatformPC }, + { "aa8a0cb65f3afbbe2c14c3f9f92775a3", "monkey", "CD", "CD", 8955, Common::FR_FRA, Common::kPlatformDOS }, { "aaa587701cde7e74692c68c1024b85eb", "puttrace", "HE 99", "Demo", -1, Common::NL_NLD, Common::kPlatformUnknown }, { "aaa7f36a253f277dd29dd1c051b0e4b9", "indy3", "No AdLib", "EGA", -1, Common::DE_DEU, Common::kPlatformAtariST }, { "ab0693e9324cfcf498fdcbb12acf8bb4", "puttcircus", "", "", -1, Common::EN_ANY, Common::kPlatformUnknown }, - { "ac1642b6edfb8521ca03760126f1c250", "tentacle", "", "Demo", -1, Common::DE_DEU, Common::kPlatformPC }, + { "ac1642b6edfb8521ca03760126f1c250", "tentacle", "", "Demo", -1, Common::DE_DEU, Common::kPlatformDOS }, { "ac62d50e39492ee3738b4e83a5ac780f", "freddi2", "HE 80", "", -1, Common::NL_NLD, Common::kPlatformWindows }, { "acad97ab1c6fc2a5b2d98abf6db4a190", "tentacle", "Floppy", "Floppy", -1, Common::EN_ANY, Common::kPlatformUnknown }, - { "ae94f110a14ce71fc515d5b648827a8f", "tentacle", "Floppy", "Floppy", -1, Common::ES_ESP, Common::kPlatformPC }, + { "ae94f110a14ce71fc515d5b648827a8f", "tentacle", "Floppy", "Floppy", -1, Common::ES_ESP, Common::kPlatformDOS }, { "aeec382acef62e122bf0d5b14581cfa4", "zak", "V1", "", -1, Common::IT_ITA, Common::kPlatformC64 }, { "aefa244ea034b7cd2041f0a44be7d9ba", "pajama3", "", "", -1, Common::EN_ANY, Common::kPlatformMacintosh }, { "af2bd1a43b50b55915d87994e093203d", "freddi", "HE 99", "Updated", 34829, Common::DE_DEU, Common::kPlatformWindows }, { "b100abf7ff83146df50db78dbd5e9cfa", "freddicove", "HE 100", "", -1, Common::FR_FRA, Common::kPlatformUnknown }, - { "b23f7cd7c304d7dff08e92a96120d5b4", "zak", "V1", "V1", -1, Common::EN_ANY, Common::kPlatformPC }, - { "b250d0f9cc83f80ced56fe11a4fb057c", "maniac", "V2", "V2", 1988, Common::EN_ANY, Common::kPlatformPC }, - { "b289a2a8cbedbf45786e0b4ad2f510f1", "samnmax", "Floppy", "Floppy", -1, Common::IT_ITA, Common::kPlatformPC }, + { "b23f7cd7c304d7dff08e92a96120d5b4", "zak", "V1", "V1", -1, Common::EN_ANY, Common::kPlatformDOS }, + { "b250d0f9cc83f80ced56fe11a4fb057c", "maniac", "V2", "V2", 1988, Common::EN_ANY, Common::kPlatformDOS }, + { "b289a2a8cbedbf45786e0b4ad2f510f1", "samnmax", "Floppy", "Floppy", -1, Common::IT_ITA, Common::kPlatformDOS }, { "b47be81e39a9710f6f595f7b527b60f8", "puttrace", "HE 99", "", -1, Common::EN_GRB, Common::kPlatformWindows }, { "b5298a5c15ffbe8b381d51ea4e26d35c", "freddi4", "HE 99", "", -1, Common::DE_DEU, Common::kPlatformUnknown }, - { "b597e0403cc0002f69170e6caba7edd9", "indy3", "EGA", "EGA Demo", 5361, Common::EN_ANY, Common::kPlatformPC }, + { "b597e0403cc0002f69170e6caba7edd9", "indy3", "EGA", "EGA Demo", 5361, Common::EN_ANY, Common::kPlatformDOS }, { "b628506f7def772e40de0aa5440fb8e1", "activity", "HE 70", "", -1, Common::EN_ANY, Common::kPlatformWindows }, { "b7d37d6b786b5a22deea3b038eca96ca", "maniac", "NES", "", -1, Common::ES_ESP, Common::kPlatformNES }, - { "b886b0a5d909c7158a914e1d7c1c6c65", "loom", "EGA", "EGA", -1, Common::FR_FRA, Common::kPlatformPC }, + { "b886b0a5d909c7158a914e1d7c1c6c65", "loom", "EGA", "EGA", -1, Common::FR_FRA, Common::kPlatformDOS }, { "b8955d7d23b4972229060d1592489fef", "freddicove", "HE 100", "", -1, Common::NL_NLD, Common::kPlatformUnknown }, { "b9ba19ce376efc69be78ef3baef8d2b9", "monkey", "CD", "", -1, Common::EN_ANY, Common::kPlatformMacintosh }, - { "b9bb68c5d2c9b6e2d9c513a29a754a57", "puttmoon", "", "", 7828, Common::EN_ANY, Common::kPlatformPC }, + { "b9bb68c5d2c9b6e2d9c513a29a754a57", "puttmoon", "", "", 7828, Common::EN_ANY, Common::kPlatformDOS }, { "ba888e6831517597859e91aa173f945c", "spyfox", "", "Demo", -1, Common::FR_FRA, Common::kPlatformUnknown }, { "bab0fb81dcb12b8930c5d850b8f2a7de", "balloon", "HE 80", "", 12800, Common::DE_DEU, Common::kPlatformWindows }, { "bbadf7309c4a2c2763e4bbba3c3be634", "freddi3", "", "Demo", -1, Common::FR_FRA, Common::kPlatformUnknown }, { "bc4700bc0e12879f6d25d14d6be6cfdd", "spyfox2", "", "", -1, Common::DE_DEU, Common::kPlatformUnknown }, - { "bd126753de619a495f9f22adc951c8d5", "monkey2", "", "", -1, Common::IT_ITA, Common::kPlatformPC }, + { "bd126753de619a495f9f22adc951c8d5", "monkey2", "", "", -1, Common::IT_ITA, Common::kPlatformDOS }, { "bd5fd7835335dfce03064d5f77b7f0ae", "dog", "", "", 19681, Common::NL_NLD, Common::kPlatformWindows }, { "be2abe172f58db170de3a037daa1dd27", "puttputt", "HE 61", "", -1, Common::JA_JPN, Common::kPlatform3DO }, { "be39a5d4db60e8aa736b9086778cb45c", "spyozon", "", "", -1, Common::EN_GRB, Common::kPlatformWindows }, @@ -501,18 +501,18 @@ static const MD5Table md5table[] = { { "c24c490373aeb48fbd54caa8e7ae376d", "loom", "No AdLib", "EGA", -1, Common::DE_DEU, Common::kPlatformAtariST }, { "c25755b08a8d0d47695e05f1e2111bfc", "freddi4", "", "Demo", -1, Common::EN_USA, Common::kPlatformUnknown }, { "c30ef068add4277104243c31ce46c12b", "monkey2", "", "", -1, Common::FR_FRA, Common::kPlatformAmiga }, - { "c3196c5349e53e387aaff1533d95e53a", "samnmax", "Floppy", "Demo", -1, Common::EN_ANY, Common::kPlatformPC }, + { "c3196c5349e53e387aaff1533d95e53a", "samnmax", "Floppy", "Demo", -1, Common::EN_ANY, Common::kPlatformDOS }, { "c3b22fa4654bb580b20325ebf4174841", "puttzoo", "", "", -1, Common::NL_NLD, Common::kPlatformWindows }, - { "c3df37df9d3b481b45f75283a9907c47", "loom", "EGA", "EGA", -1, Common::IT_ITA, Common::kPlatformPC }, - { "c4787c3e8b5e2dfda90850ee800af00f", "zak", "V2", "V2", -1, Common::FR_FRA, Common::kPlatformPC }, + { "c3df37df9d3b481b45f75283a9907c47", "loom", "EGA", "EGA", -1, Common::IT_ITA, Common::kPlatformDOS }, + { "c4787c3e8b5e2dfda90850ee800af00f", "zak", "V2", "V2", -1, Common::FR_FRA, Common::kPlatformDOS }, { "c4ffae9fac495475d6bc3343ccc8faf9", "Soccer2004", "", "", -1, Common::EN_ANY, Common::kPlatformUnknown }, { "c5cc7cba02a2fbd539c4439e775b0536", "puttzoo", "HE 99", "Updated", 43470, Common::DE_DEU, Common::kPlatformWindows }, { "c5d10e190d4b4d59114b824f2fdbd00e", "loom", "FM-TOWNS", "", 7540, Common::EN_ANY, Common::kPlatformFMTowns }, - { "c63ee46143ba65f9ce14cf539ca51bd7", "atlantis", "Floppy", "Floppy", -1, Common::EN_ANY, Common::kPlatformPC }, + { "c63ee46143ba65f9ce14cf539ca51bd7", "atlantis", "Floppy", "Floppy", -1, Common::EN_ANY, Common::kPlatformDOS }, { "c666a998af90d81db447eccba9f72c8d", "monkey", "No AdLib", "EGA", -1, Common::EN_ANY, Common::kPlatformAtariST }, { "c6907d44f1166941d982864cd42cdc89", "pajama2", "HE 99", "", -1, Common::DE_DEU, Common::kPlatformUnknown }, { "c782fbbe74a987c3df8ac73cd3e289ed", "freddi", "HE 73", "", -1, Common::SE_SWE, Common::kPlatformMacintosh }, - { "c7890e038806df2bb5c0c8c6f1986ea2", "monkey", "VGA", "VGA", -1, Common::EN_ANY, Common::kPlatformPC }, + { "c7890e038806df2bb5c0c8c6f1986ea2", "monkey", "VGA", "VGA", -1, Common::EN_ANY, Common::kPlatformDOS }, { "c7be10f775404fd9785a8b92a06d240c", "atlantis", "FM-TOWNS", "", 12030, Common::EN_ANY, Common::kPlatformFMTowns }, { "c7c492a107ec520d7a7943037d0ca54a", "freddi", "HE 71", "Demo", -1, Common::NL_NLD, Common::kPlatformWindows }, { "c8253da0f4626d2236b5291b99e33408", "puttcircus", "HE 99", "", -1, Common::HE_ISR, Common::kPlatformWindows }, @@ -524,15 +524,15 @@ static const MD5Table md5table[] = { { "cb1559e8405d17a5a278a6b5ad9338d1", "freddi3", "", "Demo", 22718, Common::EN_ANY, Common::kPlatformUnknown }, { "cc04a076779379524ed4d9c5ee3c6fb1", "tentacle", "", "CD", 282467632, Common::EN_ANY, Common::kPlatformMacintosh }, { "cc0c4111449054f1692bb3c0c5e04629", "BluesBirthday", "", "Demo", -1, Common::EN_ANY, Common::kPlatformUnknown }, - { "cc8ba2b0df2f9c450bcf055fe2711979", "samnmax", "Floppy", "Demo", 7485, Common::DE_DEU, Common::kPlatformPC }, + { "cc8ba2b0df2f9c450bcf055fe2711979", "samnmax", "Floppy", "Demo", 7485, Common::DE_DEU, Common::kPlatformDOS }, { "cd424f143a141bc59226ad83a6e40f51", "maze", "HE 98.5", "", -1, Common::NL_NLD, Common::kPlatformUnknown }, - { "cd46c9f122272d02bbf79332ff521898", "loom", "EGA", "EGA", 5748, Common::RU_RUS, Common::kPlatformPC }, + { "cd46c9f122272d02bbf79332ff521898", "loom", "EGA", "EGA", 5748, Common::RU_RUS, Common::kPlatformDOS }, { "cd9c05e755d7bf8e9b9590ad1ebe273e", "dig", "Demo", "Demo", 45156007, Common::EN_ANY, Common::kPlatformMacintosh }, - { "cdd760228cf1010c2903f37e788ea31c", "zak", "V2", "V2", 1916, Common::DE_DEU, Common::kPlatformPC }, + { "cdd760228cf1010c2903f37e788ea31c", "zak", "V2", "V2", 1916, Common::DE_DEU, Common::kPlatformDOS }, { "ce2304f3919e1dcfcc512a81d7b603e0", "SoccerMLS", "", "", -1, Common::EN_ANY, Common::kPlatformUnknown }, - { "ce6a4cef315b20fef58a95bc40a2d8d3", "monkey", "EGA", "EGA", -1, Common::FR_FRA, Common::kPlatformPC }, + { "ce6a4cef315b20fef58a95bc40a2d8d3", "monkey", "EGA", "EGA", -1, Common::FR_FRA, Common::kPlatformDOS }, { "ce7733f185b838e248927c7ba1a04204", "maniac", "V2", "V2", -1, Common::FR_FRA, Common::kPlatformAmiga }, - { "ce7fd0c382389a6791fc3e199c117ef4", "indy3", "EGA", "EGA", -1, Common::ES_ESP, Common::kPlatformPC }, + { "ce7fd0c382389a6791fc3e199c117ef4", "indy3", "EGA", "EGA", -1, Common::ES_ESP, Common::kPlatformDOS }, { "cea91e3dd47f2518ea418e41611aa77f", "spyfox2", "", "", -1, Common::RU_RUS, Common::kPlatformUnknown }, { "cf400d20769fb70eb21766582f4924f7", "moonbase", "", "", -1, Common::EN_ANY, Common::kPlatformWindows }, { "cf4ef315214c7d8cdab6302cdb7e50db", "freddi", "HE 73", "Demo", -1, Common::DE_DEU, Common::kPlatformWindows }, @@ -541,13 +541,13 @@ static const MD5Table md5table[] = { { "cf90b4db5486ef798db78fe6fbf897e5", "pajama3", "", "Demo", 13902, Common::EN_USA, Common::kPlatformWindows }, { "d00ffc8c32d17e575fd985d435d2eb88", "arttime", "", "Demo", -1, Common::EN_ANY, Common::kPlatformUnknown }, { "d0549508a06bbb9f99ed19c9e97891f3", "football2002", "", "", -1, Common::EN_ANY, Common::kPlatformUnknown }, - { "d06fbe28818fef7bfc45c2cdf0c0849d", "zak", "V2", "V2", -1, Common::DE_DEU, Common::kPlatformPC }, + { "d06fbe28818fef7bfc45c2cdf0c0849d", "zak", "V2", "V2", -1, Common::DE_DEU, Common::kPlatformDOS }, { "d0ad929def3e9cfe39dea55bd12098d4", "puttcircus", "", "", -1, Common::FR_FRA, Common::kPlatformWindows }, - { "d0b531227a27c6662018d2bd05aac52a", "monkey", "VGA", "VGA", 8357, Common::DE_DEU, Common::kPlatformPC }, + { "d0b531227a27c6662018d2bd05aac52a", "monkey", "VGA", "VGA", 8357, Common::DE_DEU, Common::kPlatformDOS }, { "d220d154aafbfa12bd6f3ab1b2dae420", "puttzoo", "", "Demo", -1, Common::DE_DEU, Common::kPlatformMacintosh }, { "d2cc8e31bce61e6cf2951249e10638fe", "basketball", "", "", -1, Common::EN_ANY, Common::kPlatformUnknown }, { "d37c55388294b66e53e7ced3af88fa68", "freddi2", "HE 100", "Updated Demo", -1, Common::EN_ANY, Common::kPlatformUnknown }, - { "d43352a805d78b5f4936c6d7779bf575", "samnmax", "", "CD", -1, Common::RU_RUS, Common::kPlatformPC }, + { "d43352a805d78b5f4936c6d7779bf575", "samnmax", "", "CD", -1, Common::RU_RUS, Common::kPlatformDOS }, { "d4aac997e2f4e15341f0bfbf905419bd", "PuttTime", "HE 99", "", 62698, Common::EN_GRB, Common::kPlatformWindows }, { "d4b8ee426b1afd3e53bc0cf020418cf6", "dog", "HE 99", "", -1, Common::EN_ANY, Common::kPlatformWindows }, { "d4cccb5af88f3e77f370896e9ba8c5f9", "freddi", "HE 71", "", -1, Common::UNK_LANG, Common::kPlatformWindows }, @@ -555,7 +555,7 @@ static const MD5Table md5table[] = { { "d54622d31255619d207dd245d3f92327", "freddi4", "HE 99", "Demo", -1, Common::FR_FRA, Common::kPlatformWindows }, { "d55eff37c2100f5065cde9de428621fa", "zak", "V2", "V2", -1, Common::EN_ANY, Common::kPlatformAtariST }, { "d62047a6729349ab36f7ee065bf26509", "dig", "", "", -1, Common::RU_RUS, Common::kPlatformUnknown }, - { "d62d248c3df6ec177405e2cb23d923b2", "indy3", "EGA", "EGA", -1, Common::IT_ITA, Common::kPlatformPC }, + { "d62d248c3df6ec177405e2cb23d923b2", "indy3", "EGA", "EGA", -1, Common::IT_ITA, Common::kPlatformDOS }, { "d6334a5a9b61afe18c368540fdf522ca", "airport", "", "", -1, Common::EN_ANY, Common::kPlatformMacintosh }, { "d6dd0646404768a63e963891a96daadd", "atlantis", "Floppy", "Floppy", 12035, Common::EN_ANY, Common::kPlatformMacintosh }, { "d73c851b942af44deb9b6d5f416a0972", "freddi3", "HE 99", "Demo", -1, Common::HE_ISR, Common::kPlatformWindows }, @@ -564,9 +564,9 @@ static const MD5Table md5table[] = { { "d7b247c26bf1f01f8f7daf142be84de3", "balloon", "HE 99", "Updated", -1, Common::EN_ANY, Common::kPlatformWindows }, { "d8323015ecb8b10bf53474f6e6b0ae33", "dig", "", "", 16304, Common::UNK_LANG, Common::kPlatformUnknown }, { "d917f311a448e3cc7239c31bddb00dd2", "samnmax", "", "CD", 9080, Common::EN_ANY, Common::kPlatformUnknown }, - { "d9d0dd93d16ab4dec55cabc2b86bbd17", "samnmax", "", "Demo", 6478, Common::EN_ANY, Common::kPlatformPC }, + { "d9d0dd93d16ab4dec55cabc2b86bbd17", "samnmax", "", "Demo", 6478, Common::EN_ANY, Common::kPlatformDOS }, { "da09e666fc8f5b78d7b0ac65d1a3b56e", "monkey2", "FM-TOWNS", "", 11135, Common::EN_ANY, Common::kPlatformFMTowns }, - { "da6269b18fcb08189c0aa9c95533cce2", "monkey", "CD", "CD", 8955, Common::IT_ITA, Common::kPlatformPC }, + { "da6269b18fcb08189c0aa9c95533cce2", "monkey", "CD", "CD", 8955, Common::IT_ITA, Common::kPlatformDOS }, { "da669b20271b85182e9c17a2a37ea02e", "monkey2", "", "", -1, Common::DE_DEU, Common::kPlatformAmiga }, { "db21a6e338fe3b70c2723b6530865bf2", "PuttTime", "HE 85", "", -1, Common::FR_FRA, Common::kPlatformUnknown }, { "db74136c20557eca6ed3411bff39f7a1", "puttcircus", "", "", -1, Common::EN_GRB, Common::kPlatformWindows }, @@ -574,7 +574,7 @@ static const MD5Table md5table[] = { { "dcf0119a90451a7d6e0f1920931ba130", "freddi4", "HE 99", "Demo", -1, Common::FR_FRA, Common::kPlatformWindows }, { "dd30a53035393baa5a5e222e716559af", "maniac", "V2", "V2", -1, Common::FR_FRA, Common::kPlatformAtariST }, { "de4efb910210736813c9a1185384bace", "puttzoo", "HE 72", "Demo", 14337, Common::EN_ANY, Common::kPlatformWindows }, - { "debe337f73d660e951ece7c1f1c81add", "zak", "V2", "V2", -1, Common::EN_ANY, Common::kPlatformPC }, + { "debe337f73d660e951ece7c1f1c81add", "zak", "V2", "V2", -1, Common::EN_ANY, Common::kPlatformDOS }, { "defb8cb9ec4b0f91acfb6b61c6129ad9", "PuttTime", "HE 99", "", -1, Common::RU_RUS, Common::kPlatformWindows }, { "df03ee021aa9b81d90cab9c26da07614", "indy3", "EGA", "EGA", -1, Common::IT_ITA, Common::kPlatformAmiga }, { "df047cc4792150f601290357566d36a6", "freddi", "HE 90", "Updated", -1, Common::EN_USA, Common::kPlatformUnknown }, @@ -583,7 +583,7 @@ static const MD5Table md5table[] = { { "e144f5f49d9241d2a9dee2576b3d09cb", "airport", "", "Demo", 51152, Common::EN_ANY, Common::kPlatformWindows }, { "e17db1ddf91b39ca6bbc8ad3ed19e883", "monkey", "FM-TOWNS", "", -1, Common::JA_JPN, Common::kPlatformFMTowns }, { "e246e02db9630533a40d99c9f54a8e01", "monkey2", "", "", -1, Common::EN_ANY, Common::kPlatformMacintosh }, - { "e361a7058ed8e8ebb462663c0a3ae8d6", "puttputt", "HE 62", "", -1, Common::HE_ISR, Common::kPlatformPC }, + { "e361a7058ed8e8ebb462663c0a3ae8d6", "puttputt", "HE 62", "", -1, Common::HE_ISR, Common::kPlatformDOS }, { "e41de1c2a15abbcdbf9977e2d7e8a340", "freddi2", "HE 100", "Updated", -1, Common::RU_RUS, Common::kPlatformWindows }, { "e44ea295a3f8fe4f41983080dab1e9ce", "freddi", "HE 90", "Updated", -1, Common::FR_FRA, Common::kPlatformMacintosh }, { "e534d29afb3c6e0ee9dc3d53c5956714", "atlantis", "Floppy", "Floppy", -1, Common::DE_DEU, Common::kPlatformAmiga }, @@ -592,36 +592,36 @@ static const MD5Table md5table[] = { { "e62056ba675ad65d8854ab3c5ad4b3c0", "spyfox2", "", "Mini Game", -1, Common::EN_ANY, Common::kPlatformWindows }, { "e63a0b9249b5ca4cc4d3ac34305ae360", "freddi", "HE 99", "", -1, Common::NB_NOR, Common::kPlatformWindows }, { "e689bdf67f98b1d760ce4487ec0e8d06", "indy3", "EGA", "EGA", -1, Common::FR_FRA, Common::kPlatformAmiga }, - { "e6cd81b25ab1453a8a6d3482118c391e", "pass", "", "", 7857, Common::EN_ANY, Common::kPlatformPC }, + { "e6cd81b25ab1453a8a6d3482118c391e", "pass", "", "", 7857, Common::EN_ANY, Common::kPlatformDOS }, { "e72bb4c2b613db2cf50f89ff6350e70a", "ft", "", "", -1, Common::ES_ESP, Common::kPlatformUnknown }, { "e781230da44a44e2f0770edb2b3b3633", "maniac", "V2", "V2", -1, Common::EN_ANY, Common::kPlatformAmiga }, - { "e8d0697906e53fee8b7e9f5652696da8", "atlantis", "", "CD", 11915, Common::JA_JPN, Common::kPlatformPC }, + { "e8d0697906e53fee8b7e9f5652696da8", "atlantis", "", "CD", 11915, Common::JA_JPN, Common::kPlatformDOS }, { "e9271b3d0694c7101f10d675ab7c0133", "freddi4", "HE 99", "", -1, Common::IT_ITA, Common::kPlatformWindows }, { "e94c7cc3686fce406d3c91b5eae5a72d", "zak", "V2", "V2", -1, Common::EN_ANY, Common::kPlatformAmiga }, { "e95cf980719c0be078fb68a67af97b4a", "funpack", "", "", -1, Common::JA_JPN, Common::kPlatform3DO }, - { "e98b982ceaf9d253d730bde8903233d6", "monkey", "EGA", "EGA", -1, Common::DE_DEU, Common::kPlatformPC }, + { "e98b982ceaf9d253d730bde8903233d6", "monkey", "EGA", "EGA", -1, Common::DE_DEU, Common::kPlatformDOS }, { "eae95b2b3546d8ba86ae1d397c383253", "dog", "", "", -1, Common::EN_ANY, Common::kPlatformUnknown }, - { "eb700bb73ca1cc44a1ad5e4b1a4bdeaf", "indy3", "EGA", "EGA", 5361, Common::DE_DEU, Common::kPlatformPC }, + { "eb700bb73ca1cc44a1ad5e4b1a4bdeaf", "indy3", "EGA", "EGA", 5361, Common::DE_DEU, Common::kPlatformDOS }, { "ebd0b2c8a387f18887282afe6cad894a", "spyozon", "", "Demo", 15317, Common::EN_ANY, Common::kPlatformUnknown }, { "ebd324dcf06a4c49e1ba5c231eee1060", "freddi4", "HE 99", "Demo", -1, Common::EN_USA, Common::kPlatformUnknown }, { "ecc4340c2b801f5af8da4e00c0e432d9", "puttcircus", "", "", -1, Common::NL_NLD, Common::kPlatformUnknown }, { "ed2b074bc3166087a747acb2a3c6abb0", "freddi3", "HE 98.5", "Demo", -1, Common::DE_DEU, Common::kPlatformUnknown }, { "ed361270102e355afe5236954216aba2", "lost", "", "", -1, Common::EN_USA, Common::kPlatformUnknown }, { "ede149fda3edfc1dbd7347e0737cb583", "tentacle", "", "CD", -1, Common::FR_FRA, Common::kPlatformMacintosh }, - { "edfdb24a499d92c59f824c52987c0eec", "atlantis", "Floppy", "Floppy", -1, Common::FR_FRA, Common::kPlatformPC }, + { "edfdb24a499d92c59f824c52987c0eec", "atlantis", "Floppy", "Floppy", -1, Common::FR_FRA, Common::kPlatformDOS }, { "ee41f6afbc5b26fa475754b56fe92048", "puttputt", "HE 61", "", 8032, Common::JA_JPN, Common::kPlatform3DO }, { "ee785fe2569bc9965526e774f7ab86f1", "spyfox", "HE 99", "", -1, Common::FR_FRA, Common::kPlatformMacintosh }, { "eea4d9ac2fb6f145945a308e8866915b", "maniac", "C64", "", -1, Common::EN_ANY, Common::kPlatformC64 }, - { "ef347474f3c7be3b29584eaa133cca05", "samnmax", "Floppy", "Floppy", -1, Common::FR_FRA, Common::kPlatformPC }, + { "ef347474f3c7be3b29584eaa133cca05", "samnmax", "Floppy", "Floppy", -1, Common::FR_FRA, Common::kPlatformDOS }, { "ef71a322b6530ac45b1a070f7c0795f7", "moonbase", "Demo", "Demo", -1, Common::EN_ANY, Common::kPlatformWindows }, - { "ef74d9071d4e564b037cb44bd6774de7", "fbear", "HE 62", "", -1, Common::HE_ISR, Common::kPlatformPC }, + { "ef74d9071d4e564b037cb44bd6774de7", "fbear", "HE 62", "", -1, Common::HE_ISR, Common::kPlatformDOS }, { "efe0a04a703e765ebebe92b6c8aa6b86", "baseball2003", "", "", -1, Common::EN_ANY, Common::kPlatformUnknown }, - { "f049e38c1f8302b5db6170f1872af89a", "monkey", "CD", "CD", 8955, Common::ES_ESP, Common::kPlatformPC }, - { "f06e66fd45b2f8b0f4a2833ff4476050", "fbpack", "", "", -1, Common::HE_ISR, Common::kPlatformPC }, + { "f049e38c1f8302b5db6170f1872af89a", "monkey", "CD", "CD", 8955, Common::ES_ESP, Common::kPlatformDOS }, + { "f06e66fd45b2f8b0f4a2833ff4476050", "fbpack", "", "", -1, Common::HE_ISR, Common::kPlatformDOS }, { "f08145577e4f13584cc90b3d6e9caa55", "pajama3", "", "Demo", -1, Common::NL_NLD, Common::kPlatformUnknown }, { "f1b0e0d587b85052de5534a3847e68fe", "water", "HE 99", "Updated", -1, Common::EN_ANY, Common::kPlatformUnknown }, { "f237bf8a5ef9af78b2a6a4f3901da341", "pajama", "", "Demo", 18354, Common::EN_ANY, Common::kPlatformUnknown }, - { "f27b1ba0eadaf2a6617b2b58192d1dbf", "samnmax", "Floppy", "Floppy", -1, Common::DE_DEU, Common::kPlatformPC }, + { "f27b1ba0eadaf2a6617b2b58192d1dbf", "samnmax", "Floppy", "Floppy", -1, Common::DE_DEU, Common::kPlatformDOS }, { "f2ec78e50bdc63b70044e9758be10914", "spyfox", "HE 98.5", "Demo", -1, Common::NL_NLD, Common::kPlatformMacintosh }, { "f3d55aea441e260e9e9c7d2a187097e0", "puttzoo", "", "Demo", 14337, Common::EN_ANY, Common::kPlatformWindows }, { "f40a7f495f59188ca57a9d1d50301bb6", "puttputt", "HE 60", "Demo", -1, Common::EN_ANY, Common::kPlatformMacintosh }, @@ -631,7 +631,7 @@ static const MD5Table md5table[] = { { "f7711f9264d4d43c2a1518ec7c10a607", "pajama3", "", "", 79382, Common::EN_USA, Common::kPlatformUnknown }, { "f79e60c17cca601e411f1f75e8ee9b5a", "spyfox2", "", "", 51286, Common::UNK_LANG, Common::kPlatformUnknown }, { "f8be685007a8b425ba2a455da732f59f", "pajama2", "HE 99", "", -1, Common::FR_FRA, Common::kPlatformMacintosh }, - { "fa127d7c4bb47d05bb1c33ddcaa9f767", "loom", "EGA", "EGA", 5748, Common::DE_DEU, Common::kPlatformPC }, + { "fa127d7c4bb47d05bb1c33ddcaa9f767", "loom", "EGA", "EGA", 5748, Common::DE_DEU, Common::kPlatformDOS }, { "fa30c4a7a806629626269b6dcab59a15", "BluesBirthday", "HE CUP", "Preview", 7819264, Common::UNK_LANG, Common::kPlatformUnknown }, { "fa3cb1541f9d7cf99ccbae6249bc150c", "maniac", "NES", "", -1, Common::IT_ITA, Common::kPlatformNES }, { "fa84cb1018103a4ee4e5fa8041c1d0d1", "freddi4", "", "Demo", 13609, Common::DE_DEU, Common::kPlatformWindows }, @@ -639,8 +639,8 @@ static const MD5Table md5table[] = { { "fbb697d89d2beca87360a145f467bdae", "PuttTime", "HE 90", "Demo", -1, Common::DE_DEU, Common::kPlatformUnknown }, { "fbbbb38a81fc9d6a61d509278390a290", "farm", "", "", -1, Common::EN_ANY, Common::kPlatformMacintosh }, { "fbdd947d21e8f5bac6d6f7a316af1c5a", "spyfox", "", "Demo", 15693, Common::EN_ANY, Common::kPlatformUnknown }, - { "fc53ce0e5f6562b1c1e1b4b8203acafb", "samnmax", "Floppy", "Floppy", -1, Common::ES_ESP, Common::kPlatformPC }, - { "fc6b6148e80d67939d9a18697c0f626a", "monkey", "EGA", "EGA", 8367, Common::DE_DEU, Common::kPlatformPC }, + { "fc53ce0e5f6562b1c1e1b4b8203acafb", "samnmax", "Floppy", "Floppy", -1, Common::ES_ESP, Common::kPlatformDOS }, + { "fc6b6148e80d67939d9a18697c0f626a", "monkey", "EGA", "EGA", 8367, Common::DE_DEU, Common::kPlatformDOS }, { "fc8d197a22146e74766e9cb0cfcaf1da", "freddi2", "HE 80", "Demo", 27298, Common::EN_ANY, Common::kPlatformUnknown }, { "fcb78ebecab2757264c590890c319cc5", "PuttTime", "HE 85", "", -1, Common::NL_NLD, Common::kPlatformUnknown }, { "fce4b8010704b103acfeea9413788f32", "freddi2", "HE 80", "", -1, Common::DE_DEU, Common::kPlatformUnknown }, diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp index 3afeeda13d..2a14673855 100644 --- a/engines/scumm/scumm.cpp +++ b/engines/scumm/scumm.cpp @@ -1747,7 +1747,7 @@ void ScummEngine::setupMusic(int midi) { } if ((_game.id == GID_MONKEY_EGA || (_game.id == GID_LOOM && _game.version == 3)) - && (_game.platform == Common::kPlatformPC) && _sound->_musicType == MDT_MIDI) { + && (_game.platform == Common::kPlatformDOS) && _sound->_musicType == MDT_MIDI) { Common::String fileName; bool missingFile = false; if (_game.id == GID_LOOM) { @@ -2124,7 +2124,7 @@ load_game: // HACK as in game save stuff isn't supported currently if (_game.id == GID_LOOM) { - int args[16]; + int args[NUM_SCRIPT_LOCAL]; uint var; memset(args, 0, sizeof(args)); args[0] = 2; @@ -2512,7 +2512,7 @@ void ScummEngine::restart() { } void ScummEngine::runBootscript() { - int args[16]; + int args[NUM_SCRIPT_LOCAL]; memset(args, 0, sizeof(args)); args[0] = _bootParam; if (_game.id == GID_MANIAC && (_game.features & GF_DEMO)) diff --git a/engines/scumm/smush/smush_player.cpp b/engines/scumm/smush/smush_player.cpp index a53b808ba1..ce098f07aa 100644 --- a/engines/scumm/smush/smush_player.cpp +++ b/engines/scumm/smush/smush_player.cpp @@ -920,7 +920,7 @@ void SmushPlayer::handleAnimHeader(int32 subSize, Common::SeekableReadStream &b) void SmushPlayer::setupAnim(const char *file) { if (_insanity) { - if (!((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC))) + if (!((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS))) readString("mineroad.trs"); } else readString(file); @@ -933,7 +933,7 @@ SmushFont *SmushPlayer::getFont(int font) { return _sf[font]; if (_vm->_game.id == GID_FT) { - if (!((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformPC))) { + if (!((_vm->_game.features & GF_DEMO) && (_vm->_game.platform == Common::kPlatformDOS))) { const char *ft_fonts[] = { "scummfnt.nut", "techfnt.nut", diff --git a/engines/scumm/sound.cpp b/engines/scumm/sound.cpp index 2fe16c5441..3f6290f8fc 100644 --- a/engines/scumm/sound.cpp +++ b/engines/scumm/sound.cpp @@ -1815,7 +1815,7 @@ int ScummEngine::readSoundResourceSmallHeader(ResId idx) { debug(4, "readSoundResourceSmallHeader(%d)", idx); - if ((_game.id == GID_LOOM) && (_game.version == 3) && (_game.platform == Common::kPlatformPC) && VAR(VAR_SOUNDCARD) == 4) { + if ((_game.id == GID_LOOM) && (_game.version == 3) && (_game.platform == Common::kPlatformDOS) && VAR(VAR_SOUNDCARD) == 4) { // Roland resources in Loom are tagless // So we add an RO tag to allow imuse to detect format byte *ptr, *src_ptr; diff --git a/engines/scumm/vars.cpp b/engines/scumm/vars.cpp index 6d132c601f..77c7daa0df 100644 --- a/engines/scumm/vars.cpp +++ b/engines/scumm/vars.cpp @@ -741,7 +741,7 @@ void ScummEngine::resetScummVars() { break; default: if ((_game.id == GID_MONKEY_EGA || _game.id == GID_MONKEY_VGA || (_game.id == GID_LOOM && _game.version == 3)) - && (_game.platform == Common::kPlatformPC)) { + && (_game.platform == Common::kPlatformDOS)) { VAR(VAR_SOUNDCARD) = 4; } else { VAR(VAR_SOUNDCARD) = 3; @@ -770,7 +770,7 @@ void ScummEngine::resetScummVars() { // Set screen size for the Macintosh version of Indy3/Loom VAR(39) = 320; } - if (_game.platform == Common::kPlatformPC && _game.id == GID_LOOM && _game.version == 3) { + if (_game.platform == Common::kPlatformDOS && _game.id == GID_LOOM && _game.version == 3) { // Set number of sound resources VAR(39) = 80; } diff --git a/engines/sword1/animation.cpp b/engines/sword1/animation.cpp index ff3c897dba..206bd68b07 100644 --- a/engines/sword1/animation.cpp +++ b/engines/sword1/animation.cpp @@ -98,7 +98,7 @@ static const char *const sequenceListPSX[20] = { /////////////////////////////////////////////////////////////////////////////// MoviePlayer::MoviePlayer(SwordEngine *vm, Text *textMan, ResMan *resMan, OSystem *system, Video::VideoDecoder *decoder, DecoderType decoderType) - : _vm(vm), _textMan(textMan), _resMan(resMan), _system(system) { + : _vm(vm), _textMan(textMan), _resMan(resMan), _system(system), _textX(0), _textY(0), _textWidth(0), _textHeight(0), _textColor(1) { _decoderType = decoderType; _decoder = decoder; diff --git a/engines/sword1/console.cpp b/engines/sword1/console.cpp index 603efd308e..4c55f8d990 100644 --- a/engines/sword1/console.cpp +++ b/engines/sword1/console.cpp @@ -26,6 +26,7 @@ namespace Sword1 { SwordConsole::SwordConsole(SwordEngine *vm) : GUI::Debugger(), _vm(vm) { + assert(_vm); } SwordConsole::~SwordConsole() { diff --git a/engines/sword1/control.cpp b/engines/sword1/control.cpp index 7cd85dff54..80d8edc1dd 100644 --- a/engines/sword1/control.cpp +++ b/engines/sword1/control.cpp @@ -856,10 +856,8 @@ bool Control::savegamesExist() { void Control::checkForOldSaveGames() { Common::InSaveFile *inf = _saveFileMan->openForLoading("SAVEGAME.INF"); - if (!inf) { - delete inf; + if (!inf) return; - } GUI::MessageDialog dialog0( _("ScummVM found that you have old savefiles for Broken Sword 1 that should be converted.\n" diff --git a/engines/sword1/resman.cpp b/engines/sword1/resman.cpp index 878ba8eceb..7222965c9d 100644 --- a/engines/sword1/resman.cpp +++ b/engines/sword1/resman.cpp @@ -227,7 +227,10 @@ Header *ResMan::lockScript(uint32 scrID) { #else openScriptResourceLittleEndian(scrID); #endif - return (Header *)resHandle(scrID)->data; + MemHandle *handle = resHandle(scrID); + if (!handle) + error("Script resource handle %d not found", scrID); + return (Header *)handle->data; } void ResMan::unlockScript(uint32 scrID) { @@ -343,8 +346,8 @@ MemHandle *ResMan::resHandle(uint32 id) { uint8 cluster = (uint8)((id >> 24) - 1); uint8 group = (uint8)(id >> 16); - // There is a know case of reading beyond array boundaries when trying to use - // portuguese subtitles (cluster file 2, group 6) with a version that do not + // There is a known case of reading beyond array boundaries when trying to use + // portuguese subtitles (cluster file 2, group 6) with a version that does not // contain subtitles for this languages (i.e. has only 6 languages and not 7). if (cluster >= _prj.noClu || group >= _prj.clu[cluster].noGrp) return NULL; diff --git a/engines/sword1/sound.cpp b/engines/sword1/sound.cpp index 61bf5257ab..268da74508 100644 --- a/engines/sword1/sound.cpp +++ b/engines/sword1/sound.cpp @@ -45,9 +45,8 @@ namespace Sword1 { #define SOUND_SPEECH_ID 1 #define SPEECH_FLAGS (Audio::FLAG_16BITS | Audio::FLAG_LITTLE_ENDIAN) -Sound::Sound(const char *searchPath, Audio::Mixer *mixer, ResMan *pResMan) +Sound::Sound(Audio::Mixer *mixer, ResMan *pResMan) : _rnd("sword1sound") { - strcpy(_filePath, searchPath); _mixer = mixer; _resMan = pResMan; _bigEndianSpeech = false; diff --git a/engines/sword1/sound.h b/engines/sword1/sound.h index 4e1ac7ba34..b52d89f390 100644 --- a/engines/sword1/sound.h +++ b/engines/sword1/sound.h @@ -80,7 +80,7 @@ enum CowMode { class Sound { public: - Sound(const char *searchPath, Audio::Mixer *mixer, ResMan *pResMan); + Sound(Audio::Mixer *mixer, ResMan *pResMan); ~Sound(); void setSpeechVol(uint8 volL, uint8 volR) { _speechVolL = volL; _speechVolR = volR; } void setSfxVol(uint8 volL, uint8 volR) { _sfxVolL = volL; _sfxVolR = volR; } @@ -125,7 +125,6 @@ private: Audio::Mixer *_mixer; ResMan *_resMan; bool _bigEndianSpeech; - char _filePath[100]; static const char _musicList[270]; static const uint16 _roomsFixedFx[TOTAL_ROOMS][TOTAL_FX_PER_ROOM]; static const FxDef _fxList[312]; diff --git a/engines/sword1/sword1.cpp b/engines/sword1/sword1.cpp index fa593b8df4..2d5452778d 100644 --- a/engines/sword1/sword1.cpp +++ b/engines/sword1/sword1.cpp @@ -104,7 +104,7 @@ Common::Error SwordEngine::init() { _mouse = new Mouse(_system, _resMan, _objectMan); _screen = new Screen(_system, _resMan, _objectMan); _music = new Music(_mixer); - _sound = new Sound("", _mixer, _resMan); + _sound = new Sound(_mixer, _resMan); _menu = new Menu(_screen, _mouse); _logic = new Logic(this, _objectMan, _resMan, _screen, _mouse, _sound, _music, _menu, _system, _mixer); _mouse->useLogicAndMenu(_logic, _menu); diff --git a/engines/sword2/console.cpp b/engines/sword2/console.cpp index 28e2e8ce7b..4838bd15f6 100644 --- a/engines/sword2/console.cpp +++ b/engines/sword2/console.cpp @@ -173,7 +173,7 @@ bool Debugger::Cmd_Mem(int argc, const char **argv) { int16 numBlocks = _vm->_memory->getNumBlocks(); MemBlock *memBlocks = _vm->_memory->getMemBlocks(); - MemBlock **blocks = (MemBlock **)malloc(numBlocks * sizeof(MemBlock)); + MemBlock **blocks = (MemBlock **)malloc(numBlocks * sizeof(MemBlock *)); int i, j; diff --git a/engines/sword2/controls.cpp b/engines/sword2/controls.cpp index 3611294eb8..a4b540ac7b 100644 --- a/engines/sword2/controls.cpp +++ b/engines/sword2/controls.cpp @@ -117,8 +117,6 @@ private: Glyph _glyph[SIZE_OF_CHAR_SET]; - int _fontId; - public: enum { kAlignLeft, @@ -142,7 +140,7 @@ public: }; FontRendererGui::FontRendererGui(Sword2Engine *vm, int fontId) - : _vm(vm), _fontId(fontId) { + : _vm(vm) { byte *font = _vm->_resman->openResource(fontId); SpriteInfo sprite; diff --git a/engines/sword2/memory.cpp b/engines/sword2/memory.cpp index 5fd2d4e78e..391983930d 100644 --- a/engines/sword2/memory.cpp +++ b/engines/sword2/memory.cpp @@ -52,7 +52,7 @@ namespace Sword2 { -MemoryManager::MemoryManager(Sword2Engine *vm) : _vm(vm) { +MemoryManager::MemoryManager() { // The id stack contains all the possible ids for the memory blocks. // We use this to ensure that no two blocks ever have the same id. diff --git a/engines/sword2/memory.h b/engines/sword2/memory.h index 3f511dd5db..250da138c2 100644 --- a/engines/sword2/memory.h +++ b/engines/sword2/memory.h @@ -40,8 +40,6 @@ struct MemBlock { class MemoryManager { private: - Sword2Engine *_vm; - MemBlock *_memBlocks; MemBlock **_memBlockIndex; int16 _numBlocks; @@ -56,7 +54,7 @@ private: int16 findInsertionPointInIndex(byte *ptr); public: - MemoryManager(Sword2Engine *vm); + MemoryManager(); ~MemoryManager(); int16 getNumBlocks() { return _numBlocks; } diff --git a/engines/sword2/palette.cpp b/engines/sword2/palette.cpp index c3a3d24075..9634d3af10 100644 --- a/engines/sword2/palette.cpp +++ b/engines/sword2/palette.cpp @@ -288,19 +288,17 @@ void Screen::fadeServer() { } void Screen::setSystemPalette(const byte *colors, uint start, uint num) { - const byte *palette; - if (_dimPalette) { byte pal[256 * 3]; for (uint i = start * 3; i < 3 * (start + num); i++) pal[i] = colors[i] / 2; - palette = pal; - } else - palette = colors; + _vm->_system->getPaletteManager()->setPalette(pal, start, num); + } else { + _vm->_system->getPaletteManager()->setPalette(colors, start, num); + } - _vm->_system->getPaletteManager()->setPalette(palette, start, num); } } // End of namespace Sword2 diff --git a/engines/sword2/sound.h b/engines/sword2/sound.h index 9a59ef27a8..e250707fb9 100644 --- a/engines/sword2/sound.h +++ b/engines/sword2/sound.h @@ -142,7 +142,6 @@ private: bool _looping; int32 _fading; int32 _fadeSamples; - bool _paused; void refill(); diff --git a/engines/sword2/sprite.cpp b/engines/sword2/sprite.cpp index 91a5e2e86b..5e25a86d75 100644 --- a/engines/sword2/sprite.cpp +++ b/engines/sword2/sprite.cpp @@ -590,8 +590,11 @@ int32 Screen::drawSprite(SpriteInfo *s) { s->w = (decompData / (s->h / 2)); sprite = (byte *)malloc(s->w * s->h); - if (!sprite) + if (!sprite) { + free(tempBuf); + return RDERR_OUTOFMEMORY; + } resizePsxSprite(sprite, tempBuf, s->w, s->h); free(tempBuf); diff --git a/engines/sword2/sword2.cpp b/engines/sword2/sword2.cpp index dfa6a23320..3375dda312 100644 --- a/engines/sword2/sword2.cpp +++ b/engines/sword2/sword2.cpp @@ -314,7 +314,7 @@ Sword2Engine::Sword2Engine(OSystem *syst) : Engine(syst), _rnd("sword2") { if (!scumm_stricmp(ConfMan.get("gameid").c_str(), "sword2psx") || !scumm_stricmp(ConfMan.get("gameid").c_str(), "sword2psxdemo")) Sword2Engine::_platform = Common::kPlatformPSX; else - Sword2Engine::_platform = Common::kPlatformPC; + Sword2Engine::_platform = Common::kPlatformWindows; _bootParam = ConfMan.getInt("boot_param"); _saveSlot = ConfMan.getInt("save_slot"); @@ -450,7 +450,7 @@ Common::Error Sword2Engine::run() { _debugger = new Debugger(this); - _memory = new MemoryManager(this); + _memory = new MemoryManager(); _resman = new ResourceManager(this); if (!_resman->init()) diff --git a/engines/sword25/console.cpp b/engines/sword25/console.cpp index 5d15f189ab..f1b91d2bc2 100644 --- a/engines/sword25/console.cpp +++ b/engines/sword25/console.cpp @@ -26,6 +26,7 @@ namespace Sword25 { Sword25Console::Sword25Console(Sword25Engine *vm) : GUI::Debugger(), _vm(vm) { + assert(_vm); } Sword25Console::~Sword25Console() { diff --git a/engines/sword25/gfx/animation.cpp b/engines/sword25/gfx/animation.cpp index 22a4dfb71b..1660c393c0 100644 --- a/engines/sword25/gfx/animation.cpp +++ b/engines/sword25/gfx/animation.cpp @@ -170,7 +170,7 @@ void Animation::setFrame(uint nr) { forceRefresh(); } -bool Animation::doRender() { +bool Animation::doRender(RectangleList *updateRects) { AnimationDescription *animationDescriptionPtr = getAnimationDescription(); assert(animationDescriptionPtr); assert(_currentFrame < animationDescriptionPtr->getFrameCount()); @@ -191,12 +191,14 @@ bool Animation::doRender() { result = pBitmapResource->blit(_absoluteX, _absoluteY, (animationDescriptionPtr->getFrame(_currentFrame).flipV ? BitmapResource::FLIP_V : 0) | (animationDescriptionPtr->getFrame(_currentFrame).flipH ? BitmapResource::FLIP_H : 0), - 0, _modulationColor, _width, _height); + 0, _modulationColor, _width, _height, + updateRects); } else { result = pBitmapResource->blit(_absoluteX, _absoluteY, (animationDescriptionPtr->getFrame(_currentFrame).flipV ? BitmapResource::FLIP_V : 0) | (animationDescriptionPtr->getFrame(_currentFrame).flipH ? BitmapResource::FLIP_H : 0), - 0, _modulationColor, -1, -1); + 0, _modulationColor, -1, -1, + updateRects); } // Resource freigeben diff --git a/engines/sword25/gfx/animation.h b/engines/sword25/gfx/animation.h index 60070be214..44255e3b64 100644 --- a/engines/sword25/gfx/animation.h +++ b/engines/sword25/gfx/animation.h @@ -151,7 +151,7 @@ public: void setCallbacks(); protected: - virtual bool doRender(); + virtual bool doRender(RectangleList *updateRects); private: enum Direction { diff --git a/engines/sword25/gfx/bitmapresource.h b/engines/sword25/gfx/bitmapresource.h index f1278f3885..72b8a3ea1f 100644 --- a/engines/sword25/gfx/bitmapresource.h +++ b/engines/sword25/gfx/bitmapresource.h @@ -123,9 +123,10 @@ public: int flipping = FLIP_NONE, Common::Rect *pSrcPartRect = NULL, uint color = BS_ARGB(255, 255, 255, 255), - int width = -1, int height = -1) { + int width = -1, int height = -1, + RectangleList *updateRects = 0) { assert(_pImage); - return _pImage->blit(posX, posY, flipping, pSrcPartRect, color, width, height); + return _pImage->blit(posX, posY, flipping, pSrcPartRect, color, width, height, updateRects); } /** @@ -202,6 +203,11 @@ public: return _pImage->isColorModulationAllowed(); } + bool isSolid() { + assert(_pImage); + return _pImage->isSolid(); + } + private: Image *_pImage; }; diff --git a/engines/sword25/gfx/dynamicbitmap.cpp b/engines/sword25/gfx/dynamicbitmap.cpp index 137d943575..242508bf85 100644 --- a/engines/sword25/gfx/dynamicbitmap.cpp +++ b/engines/sword25/gfx/dynamicbitmap.cpp @@ -53,10 +53,13 @@ DynamicBitmap::DynamicBitmap(InputPersistenceBlock &reader, RenderObjectPtr<Rend bool DynamicBitmap::createRenderedImage(uint width, uint height) { bool result = false; _image.reset(new RenderedImage(width, height, result)); - + _originalWidth = _width = width; _originalHeight = _height = height; + _image->setIsTransparent(false); + _isSolid = true; + return result; } @@ -70,11 +73,11 @@ uint DynamicBitmap::getPixel(int x, int y) const { return _image->getPixel(x, y); } -bool DynamicBitmap::doRender() { +bool DynamicBitmap::doRender(RectangleList *updateRects) { // Get the frame buffer object GraphicEngine *pGfx = Kernel::getInstance()->getGfx(); assert(pGfx); - + // Draw the bitmap bool result; if (_scaleFactorX == 1.0f && _scaleFactorY == 1.0f) { @@ -85,7 +88,8 @@ bool DynamicBitmap::doRender() { result = _image->blit(_absoluteX, _absoluteY, (_flipV ? BitmapResource::FLIP_V : 0) | (_flipH ? BitmapResource::FLIP_H : 0), - 0, _modulationColor, -1, -1); + 0, _modulationColor, -1, -1, + updateRects); #else // WIP: A bit faster code @@ -103,13 +107,15 @@ bool DynamicBitmap::doRender() { result = _image->blit(_absoluteX, _absoluteY, (_flipV ? BitmapResource::FLIP_V : 0) | (_flipH ? BitmapResource::FLIP_H : 0), - 0, _modulationColor, _width, _height); + 0, _modulationColor, _width, _height, + updateRects); } return result; } bool DynamicBitmap::setContent(const byte *pixeldata, uint size, uint offset, uint stride) { + ++_version; // Update version to display the new video image return _image->setContent(pixeldata, size, offset, stride); } diff --git a/engines/sword25/gfx/dynamicbitmap.h b/engines/sword25/gfx/dynamicbitmap.h index 35ed9a9341..ed53776577 100644 --- a/engines/sword25/gfx/dynamicbitmap.h +++ b/engines/sword25/gfx/dynamicbitmap.h @@ -59,7 +59,7 @@ public: virtual bool unpersist(InputPersistenceBlock &reader); protected: - virtual bool doRender(); + virtual bool doRender(RectangleList *updateRects); private: DynamicBitmap(RenderObjectPtr<RenderObject> parentPtr, uint width, uint height); diff --git a/engines/sword25/gfx/graphicengine.cpp b/engines/sword25/gfx/graphicengine.cpp index 216d801f3e..bfdb51481b 100644 --- a/engines/sword25/gfx/graphicengine.cpp +++ b/engines/sword25/gfx/graphicengine.cpp @@ -216,7 +216,6 @@ bool GraphicEngine::fill(const Common::Rect *fillRectPtr, uint color) { } } - g_system->copyRectToScreen(_backSurface.getBasePtr(rect.left, rect.top), _backSurface.pitch, rect.left, rect.top, rect.width(), rect.height()); } return true; diff --git a/engines/sword25/gfx/image/image.h b/engines/sword25/gfx/image/image.h index f1934656da..9d7fc43251 100644 --- a/engines/sword25/gfx/image/image.h +++ b/engines/sword25/gfx/image/image.h @@ -46,6 +46,8 @@ namespace Sword25 { +class RectangleList; + class Image { public: virtual ~Image() {} @@ -129,7 +131,8 @@ public: int flipping = FLIP_NONE, Common::Rect *pPartRect = NULL, uint color = BS_ARGB(255, 255, 255, 255), - int width = -1, int height = -1) = 0; + int width = -1, int height = -1, + RectangleList *updateRects = 0) = 0; /** @brief fills a rectangular section of the image with a color. @@ -202,6 +205,8 @@ public: @brief Returns true, if the content of the BS_Image is allowed to be replaced by call of SetContent(). */ virtual bool isSetContentAllowed() const = 0; + + virtual bool isSolid() const { return false; } //@} }; diff --git a/engines/sword25/gfx/image/renderedimage.cpp b/engines/sword25/gfx/image/renderedimage.cpp index 27ee4ef182..c8a6666046 100644 --- a/engines/sword25/gfx/image/renderedimage.cpp +++ b/engines/sword25/gfx/image/renderedimage.cpp @@ -38,6 +38,8 @@ #include "sword25/gfx/image/imgloader.h" #include "sword25/gfx/image/renderedimage.h" +#include "sword25/gfx/renderobjectmanager.h" + #include "common/system.h" namespace Sword25 { @@ -99,7 +101,8 @@ static byte *readSavegameThumbnail(const Common::String &filename, uint &fileSiz RenderedImage::RenderedImage(const Common::String &filename, bool &result) : _data(0), _width(0), - _height(0) { + _height(0), + _isTransparent(true) { result = false; PackageManager *pPackage = Kernel::getInstance()->getPackage(); @@ -142,6 +145,11 @@ RenderedImage::RenderedImage(const Common::String &filename, bool &result) : _doCleanup = true; +#if defined(SCUMM_LITTLE_ENDIAN) + // Makes sense for LE only at the moment + checkForTransparency(); +#endif + return; } @@ -149,7 +157,8 @@ RenderedImage::RenderedImage(const Common::String &filename, bool &result) : RenderedImage::RenderedImage(uint width, uint height, bool &result) : _width(width), - _height(height) { + _height(height), + _isTransparent(true) { _data = new byte[width * height * 4]; Common::fill(_data, &_data[width * height * 4], 0); @@ -162,7 +171,7 @@ RenderedImage::RenderedImage(uint width, uint height, bool &result) : return; } -RenderedImage::RenderedImage() : _width(0), _height(0), _data(0) { +RenderedImage::RenderedImage() : _width(0), _height(0), _data(0), _isTransparent(true) { _backSurface = Kernel::getInstance()->getGfx()->getSurface(); _doCleanup = false; @@ -219,7 +228,7 @@ uint RenderedImage::getPixel(int x, int y) { // ----------------------------------------------------------------------------- -bool RenderedImage::blit(int posX, int posY, int flipping, Common::Rect *pPartRect, uint color, int width, int height) { +bool RenderedImage::blit(int posX, int posY, int flipping, Common::Rect *pPartRect, uint color, int width, int height, RectangleList *updateRects) { int ca = (color >> 24) & 0xff; // Check if we need to draw anything at all @@ -282,156 +291,175 @@ bool RenderedImage::blit(int posX, int posY, int flipping, Common::Rect *pPartRe img = &srcImage; } - // Handle off-screen clipping - if (posY < 0) { - img->h = MAX(0, (int)img->h - -posY); - img->pixels = (byte *)img->pixels + img->pitch * -posY; - posY = 0; - } - - if (posX < 0) { - img->w = MAX(0, (int)img->w - -posX); - img->pixels = (byte *)img->pixels + (-posX * 4); - posX = 0; - } - - img->w = CLIP((int)img->w, 0, (int)MAX((int)_backSurface->w - posX, 0)); - img->h = CLIP((int)img->h, 0, (int)MAX((int)_backSurface->h - posY, 0)); - - if ((img->w > 0) && (img->h > 0)) { - int xp = 0, yp = 0; - - int inStep = 4; - int inoStep = img->pitch; - if (flipping & Image::FLIP_V) { - inStep = -inStep; - xp = img->w - 1; + for (RectangleList::iterator it = updateRects->begin(); it != updateRects->end(); ++it) { + const Common::Rect &clipRect = *it; + + int skipLeft = 0, skipTop = 0; + int drawX = posX, drawY = posY; + int drawWidth = img->w; + int drawHeight = img->h; + + // Handle clipping + if (drawX < clipRect.left) { + skipLeft = clipRect.left - drawX; + drawWidth -= skipLeft; + drawX = clipRect.left; } - - if (flipping & Image::FLIP_H) { - inoStep = -inoStep; - yp = img->h - 1; + + if (drawY < clipRect.top) { + skipTop = clipRect.top - drawY; + drawHeight -= skipTop; + drawY = clipRect.top; } - byte *ino = (byte *)img->getBasePtr(xp, yp); - byte *outo = (byte *)_backSurface->getBasePtr(posX, posY); - byte *in, *out; - - for (int i = 0; i < img->h; i++) { - out = outo; - in = ino; - for (int j = 0; j < img->w; j++) { - uint32 pix = *(uint32 *)in; - int b = (pix >> 0) & 0xff; - int g = (pix >> 8) & 0xff; - int r = (pix >> 16) & 0xff; - int a = (pix >> 24) & 0xff; - in += inStep; - - if (ca != 255) { - a = a * ca >> 8; - } + if (drawX + drawWidth >= clipRect.right) + drawWidth = clipRect.right - drawX; + + if (drawY + drawHeight >= clipRect.bottom) + drawHeight = clipRect.bottom - drawY; + + if ((drawWidth > 0) && (drawHeight > 0)) { + int xp = 0, yp = 0; + + int inStep = 4; + int inoStep = img->pitch; + if (flipping & Image::FLIP_V) { + inStep = -inStep; + xp = img->w - 1 - skipLeft; + } else { + xp = skipLeft; + } + + if (flipping & Image::FLIP_H) { + inoStep = -inoStep; + yp = img->h - 1 - skipTop; + } else { + yp = skipTop; + } + + byte *ino = (byte *)img->getBasePtr(xp, yp); + byte *outo = (byte *)_backSurface->getBasePtr(drawX, drawY); - switch (a) { - case 0: // Full transparency - out += 4; - break; - case 255: // Full opacity #if defined(SCUMM_LITTLE_ENDIAN) - if (cb != 255) - *out++ = (b * cb) >> 8; - else - *out++ = b; - - if (cg != 255) - *out++ = (g * cg) >> 8; - else - *out++ = g; - - if (cr != 255) - *out++ = (r * cr) >> 8; - else - *out++ = r; - - *out++ = a; + // Simple memcpy if the source bitmap doesn't have transparent pixels and the drawing transparency is 255 + // NOTE Only possible with LE-machines at the moment, maybe it would be feasible to convert the bitmap pixels at loading time? + if (!_isTransparent && ca == 255) { + for (int i = 0; i < drawHeight; i++) { + memcpy(outo, ino, drawWidth * 4); + outo += _backSurface->pitch; + ino += inoStep; + } + } else +#endif + { + byte *in, *out; + for (int i = 0; i < drawHeight; i++) { + out = outo; + in = ino; + for (int j = 0; j < drawWidth; j++) { + uint32 pix = *(uint32 *)in; + int a = (pix >> 24) & 0xff; + in += inStep; + + if (ca != 255) { + a = a * ca >> 8; + } + + if (a == 0) { + // Full transparency + out += 4; + continue; + } + + int b = (pix >> 0) & 0xff; + int g = (pix >> 8) & 0xff; + int r = (pix >> 16) & 0xff; + + if (a == 255) { +#if defined(SCUMM_LITTLE_ENDIAN) + if (cb != 255) + b = (b * cb) >> 8; + if (cg != 255) + g = (g * cg) >> 8; + if (cr != 255) + r = (r * cr) >> 8; + *(uint32 *)out = (255 << 24) | (r << 16) | (g << 8) | b; + out += 4; #else - *out++ = a; - - if (cr != 255) - *out++ = (r * cr) >> 8; - else - *out++ = r; - - if (cg != 255) - *out++ = (g * cg) >> 8; - else - *out++ = g; - - if (cb != 255) - *out++ = (b * cb) >> 8; - else - *out++ = b; + *out++ = a; + if (cr != 255) + *out++ = (r * cr) >> 8; + else + *out++ = r; + if (cg != 255) + *out++ = (g * cg) >> 8; + else + *out++ = g; + if (cb != 255) + *out++ = (b * cb) >> 8; + else + *out++ = b; #endif - break; - - default: // alpha blending + } else { #if defined(SCUMM_LITTLE_ENDIAN) - if (cb == 0) - *out = 0; - else if (cb != 255) - *out += ((b - *out) * a * cb) >> 16; - else - *out += ((b - *out) * a) >> 8; - out++; - if (cg == 0) - *out = 0; - else if (cg != 255) - *out += ((g - *out) * a * cg) >> 16; - else - *out += ((g - *out) * a) >> 8; - out++; - if (cr == 0) - *out = 0; - else if (cr != 255) - *out += ((r - *out) * a * cr) >> 16; - else - *out += ((r - *out) * a) >> 8; - out++; - *out = 255; - out++; + pix = *(uint32 *)out; + int outb = (pix >> 0) & 0xff; + int outg = (pix >> 8) & 0xff; + int outr = (pix >> 16) & 0xff; + if (cb == 0) + outb = 0; + else if (cb != 255) + outb += ((b - outb) * a * cb) >> 16; + else + outb += ((b - outb) * a) >> 8; + if (cg == 0) + outg = 0; + else if (cg != 255) + outg += ((g - outg) * a * cg) >> 16; + else + outg += ((g - outg) * a) >> 8; + if (cr == 0) + outr = 0; + else if (cr != 255) + outr += ((r - outr) * a * cr) >> 16; + else + outr += ((r - outr) * a) >> 8; + *(uint32 *)out = (255 << 24) | (outr << 16) | (outg << 8) | outb; + out += 4; #else - *out = 255; - out++; - if (cr == 0) - *out = 0; - else if (cr != 255) - *out += ((r - *out) * a * cr) >> 16; - else - *out += ((r - *out) * a) >> 8; - out++; - if (cg == 0) - *out = 0; - else if (cg != 255) - *out += ((g - *out) * a * cg) >> 16; - else - *out += ((g - *out) * a) >> 8; - out++; - if (cb == 0) - *out = 0; - else if (cb != 255) - *out += ((b - *out) * a * cb) >> 16; - else - *out += ((b - *out) * a) >> 8; - out++; + *out = 255; + out++; + if (cr == 0) + *out = 0; + else if (cr != 255) + *out += ((r - *out) * a * cr) >> 16; + else + *out += ((r - *out) * a) >> 8; + out++; + if (cg == 0) + *out = 0; + else if (cg != 255) + *out += ((g - *out) * a * cg) >> 16; + else + *out += ((g - *out) * a) >> 8; + out++; + if (cb == 0) + *out = 0; + else if (cb != 255) + *out += ((b - *out) * a * cb) >> 16; + else + *out += ((b - *out) * a) >> 8; + out++; #endif + } + } + outo += _backSurface->pitch; + ino += inoStep; } } - outo += _backSurface->pitch; - ino += inoStep; - } - g_system->copyRectToScreen(_backSurface->getBasePtr(posX, posY), _backSurface->pitch, posX, posY, - img->w, img->h); + } + } if (imgScaled) { @@ -467,6 +495,20 @@ void RenderedImage::copyDirectly(int posX, int posY) { g_system->copyRectToScreen(data, _backSurface->pitch, posX, posY, w, h); } +void RenderedImage::checkForTransparency() { + // Check if the source bitmap has any transparent pixels at all + _isTransparent = false; + byte *data = _data; + for (int i = 0; i < _height; i++) { + for (int j = 0; j < _width; j++) { + _isTransparent = data[3] != 0xff; + if (_isTransparent) + return; + data += 4; + } + } +} + /** * Scales a passed surface, creating a new surface with the result * @param srcImage Source image to scale diff --git a/engines/sword25/gfx/image/renderedimage.h b/engines/sword25/gfx/image/renderedimage.h index f92a5b39b4..a25b258592 100644 --- a/engines/sword25/gfx/image/renderedimage.h +++ b/engines/sword25/gfx/image/renderedimage.h @@ -75,7 +75,8 @@ public: int flipping = Image::FLIP_NONE, Common::Rect *pPartRect = NULL, uint color = BS_ARGB(255, 255, 255, 255), - int width = -1, int height = -1); + int width = -1, int height = -1, + RectangleList *updateRects = 0); virtual bool fill(const Common::Rect *pFillRect, uint color); virtual bool setContent(const byte *pixeldata, uint size, uint offset = 0, uint stride = 0); void replaceContent(byte *pixeldata, int width, int height); @@ -105,14 +106,19 @@ public: static Graphics::Surface *scale(const Graphics::Surface &srcImage, int xSize, int ySize); + void setIsTransparent(bool isTransparent) { _isTransparent = isTransparent; } + virtual bool isSolid() const { return !_isTransparent; } + private: byte *_data; int _width; int _height; bool _doCleanup; + bool _isTransparent; Graphics::Surface *_backSurface; + void checkForTransparency(); static int *scaleLine(int size, int srcSize); }; diff --git a/engines/sword25/gfx/image/swimage.cpp b/engines/sword25/gfx/image/swimage.cpp index 0b9cc11df2..7e4c3143f5 100644 --- a/engines/sword25/gfx/image/swimage.cpp +++ b/engines/sword25/gfx/image/swimage.cpp @@ -79,7 +79,8 @@ bool SWImage::blit(int posX, int posY, int flipping, Common::Rect *pPartRect, uint color, - int width, int height) { + int width, int height, + RectangleList *updateRects) { error("Blit() is not supported."); return false; } diff --git a/engines/sword25/gfx/image/swimage.h b/engines/sword25/gfx/image/swimage.h index 5f348958b2..a35127a41d 100644 --- a/engines/sword25/gfx/image/swimage.h +++ b/engines/sword25/gfx/image/swimage.h @@ -58,7 +58,8 @@ public: int flipping = Image::FLIP_NONE, Common::Rect *pPartRect = NULL, uint color = BS_ARGB(255, 255, 255, 255), - int width = -1, int height = -1); + int width = -1, int height = -1, + RectangleList *updateRects = 0); virtual bool fill(const Common::Rect *fillRectPtr, uint color); virtual bool setContent(const byte *pixeldata, uint size, uint offset, uint stride); virtual uint getPixel(int x, int y); diff --git a/engines/sword25/gfx/image/vectorimage.cpp b/engines/sword25/gfx/image/vectorimage.cpp index 81f4fc2ad5..ab895b5cef 100644 --- a/engines/sword25/gfx/image/vectorimage.cpp +++ b/engines/sword25/gfx/image/vectorimage.cpp @@ -190,6 +190,7 @@ Common::Rect CalculateBoundingBox(const VectorImageElement &vectorImageElement) ArtVpath *vec = art_bez_path_to_vec(bez, 0.5); if (vec[0].code == ART_END) { + free(vec); continue; } else { x0 = x1 = vec[0].x; @@ -602,7 +603,8 @@ bool VectorImage::blit(int posX, int posY, int flipping, Common::Rect *pPartRect, uint color, - int width, int height) { + int width, int height, + RectangleList *updateRects) { static VectorImage *oldThis = 0; static int oldWidth = -2; static int oldHeight = -2; @@ -623,7 +625,7 @@ bool VectorImage::blit(int posX, int posY, RenderedImage *rend = new RenderedImage(); rend->replaceContent(_pixelData, width, height); - rend->blit(posX, posY, flipping, pPartRect, color, width, height); + rend->blit(posX, posY, flipping, pPartRect, color, width, height, updateRects); delete rend; diff --git a/engines/sword25/gfx/image/vectorimage.h b/engines/sword25/gfx/image/vectorimage.h index 959f251c14..d1760a433e 100644 --- a/engines/sword25/gfx/image/vectorimage.h +++ b/engines/sword25/gfx/image/vectorimage.h @@ -212,7 +212,8 @@ public: int flipping = FLIP_NONE, Common::Rect *pPartRect = NULL, uint color = BS_ARGB(255, 255, 255, 255), - int width = -1, int height = -1); + int width = -1, int height = -1, + RectangleList *updateRects = 0); class SWFBitStream; diff --git a/engines/sword25/gfx/microtiles.cpp b/engines/sword25/gfx/microtiles.cpp new file mode 100644 index 0000000000..8dceed5348 --- /dev/null +++ b/engines/sword25/gfx/microtiles.cpp @@ -0,0 +1,164 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * + */ + +#include "sword25/gfx/microtiles.h" + +namespace Sword25 { + +MicroTileArray::MicroTileArray(int16 width, int16 height) { + _tilesW = (width / TileSize) + ((width % TileSize) > 0 ? 1 : 0); + _tilesH = (height / TileSize) + ((height % TileSize) > 0 ? 1 : 0); + _tiles = new BoundingBox[_tilesW * _tilesH]; + clear(); +} + +MicroTileArray::~MicroTileArray() { + delete[] _tiles; +} + +void MicroTileArray::addRect(Common::Rect r) { + + int ux0, uy0, ux1, uy1; + int tx0, ty0, tx1, ty1; + int ix0, iy0, ix1, iy1; + + r.clip(Common::Rect(0, 0, 799, 599)); + + ux0 = r.left / TileSize; + uy0 = r.top / TileSize; + ux1 = r.right / TileSize; + uy1 = r.bottom / TileSize; + + tx0 = r.left % TileSize; + ty0 = r.top % TileSize; + tx1 = r.right % TileSize; + ty1 = r.bottom % TileSize; + + for (int yc = uy0; yc <= uy1; yc++) { + for (int xc = ux0; xc <= ux1; xc++) { + ix0 = (xc == ux0) ? tx0 : 0; + ix1 = (xc == ux1) ? tx1 : TileSize - 1; + iy0 = (yc == uy0) ? ty0 : 0; + iy1 = (yc == uy1) ? ty1 : TileSize - 1; + updateBoundingBox(_tiles[xc + yc * _tilesW], ix0, iy0, ix1, iy1); + } + } + +} + +void MicroTileArray::clear() { + memset(_tiles, 0, _tilesW * _tilesH * sizeof(BoundingBox)); +} + +byte MicroTileArray::TileX0(const BoundingBox &boundingBox) { + return (boundingBox >> 24) & 0xFF; +} + +byte MicroTileArray::TileY0(const BoundingBox &boundingBox) { + return (boundingBox >> 16) & 0xFF; +} + +byte MicroTileArray::TileX1(const BoundingBox &boundingBox) { + return (boundingBox >> 8) & 0xFF; +} + +byte MicroTileArray::TileY1(const BoundingBox &boundingBox) { + return boundingBox & 0xFF; +} + +bool MicroTileArray::isBoundingBoxEmpty(const BoundingBox &boundingBox) { + return boundingBox == EmptyBoundingBox; +} + +bool MicroTileArray::isBoundingBoxFull(const BoundingBox &boundingBox) { + return boundingBox == FullBoundingBox; +} + +void MicroTileArray::setBoundingBox(BoundingBox &boundingBox, byte x0, byte y0, byte x1, byte y1) { + boundingBox = (x0 << 24) | (y0 << 16) | (x1 << 8) | y1; +} + +void MicroTileArray::updateBoundingBox(BoundingBox &boundingBox, byte x0, byte y0, byte x1, byte y1) { + if (!isBoundingBoxEmpty(boundingBox)) { + x0 = MIN(TileX0(boundingBox), x0); + y0 = MIN(TileY0(boundingBox), y0); + x1 = MAX(TileX1(boundingBox), x1); + y1 = MAX(TileY1(boundingBox), y1); + } + setBoundingBox(boundingBox, x0, y0, x1, y1); +} + +RectangleList *MicroTileArray::getRectangles() { + + RectangleList *rects = new RectangleList(); + + int x, y; + int x0, y0, x1, y1; + int i = 0; + + for (y = 0; y < _tilesH; ++y) { + for (x = 0; x < _tilesW; ++x) { + + int start; + int finish = 0; + BoundingBox boundingBox = _tiles[i]; + + if (isBoundingBoxEmpty(boundingBox)) { + ++i; + continue; + } + + x0 = (x * TileSize) + TileX0(boundingBox); + y0 = (y * TileSize) + TileY0(boundingBox); + y1 = (y * TileSize) + TileY1(boundingBox); + + start = i; + + if (TileX1(boundingBox) == TileSize - 1 && x != _tilesW - 1) { // check if the tile continues + while (!finish) { + ++x; + ++i; + if (x == _tilesW || i >= _tilesW * _tilesH || + TileY0(_tiles[i]) != TileY0(boundingBox) || + TileY1(_tiles[i]) != TileY1(boundingBox) || + TileX0(_tiles[i]) != 0) + { + --x; + --i; + finish = 1; + } + } + } + + x1 = (x * TileSize) + TileX1(_tiles[i]); + + rects->push_back(Common::Rect(x0, y0, x1 + 1, y1 + 1)); + + ++i; + } + } + + return rects; +} + +} // End of namespace Sword25 diff --git a/engines/sword25/gfx/microtiles.h b/engines/sword25/gfx/microtiles.h new file mode 100644 index 0000000000..454fc39f37 --- /dev/null +++ b/engines/sword25/gfx/microtiles.h @@ -0,0 +1,65 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * + */ + +#ifndef SWORD25_MICROTILES_H +#define SWORD25_MICROTILES_H + +#include "common/scummsys.h" +#include "common/list.h" +#include "common/util.h" +#include "common/rect.h" + +namespace Sword25 { + +typedef uint32 BoundingBox; + +const BoundingBox FullBoundingBox = 0x00001F1F; +const BoundingBox EmptyBoundingBox = 0x00000000; +const int TileSize = 32; + +class RectangleList : public Common::List<Common::Rect> { +}; + +class MicroTileArray { +public: + MicroTileArray(int16 width, int16 height); + ~MicroTileArray(); + void addRect(Common::Rect r); + void clear(); + RectangleList *getRectangles(); +protected: + BoundingBox *_tiles; + int16 _tilesW, _tilesH; + byte TileX0(const BoundingBox &boundingBox); + byte TileY0(const BoundingBox &boundingBox); + byte TileX1(const BoundingBox &boundingBox); + byte TileY1(const BoundingBox &boundingBox); + bool isBoundingBoxEmpty(const BoundingBox &boundingBox); + bool isBoundingBoxFull(const BoundingBox &boundingBox); + void setBoundingBox(BoundingBox &boundingBox, byte x0, byte y0, byte x1, byte y1); + void updateBoundingBox(BoundingBox &boundingBox, byte x0, byte y0, byte x1, byte y1); +}; + +} // namespace Sword25 + +#endif // SWORD25_MICROTILES_H diff --git a/engines/sword25/gfx/panel.cpp b/engines/sword25/gfx/panel.cpp index 6d5b2a623d..931b9cdbe7 100644 --- a/engines/sword25/gfx/panel.cpp +++ b/engines/sword25/gfx/panel.cpp @@ -36,6 +36,8 @@ #include "sword25/gfx/graphicengine.h" #include "sword25/gfx/image/image.h" +#include "sword25/gfx/renderobjectmanager.h" + namespace Sword25 { Panel::Panel(RenderObjectPtr<RenderObject> parentPtr, int width, int height, uint color) : @@ -67,7 +69,7 @@ Panel::Panel(InputPersistenceBlock &reader, RenderObjectPtr<RenderObject> parent Panel::~Panel() { } -bool Panel::doRender() { +bool Panel::doRender(RectangleList *updateRects) { // Falls der Alphawert 0 ist, ist das Panel komplett durchsichtig und es muss nichts gezeichnet werden. if (_color >> 24 == 0) return true; @@ -75,7 +77,15 @@ bool Panel::doRender() { GraphicEngine *gfxPtr = Kernel::getInstance()->getGfx(); assert(gfxPtr); - return gfxPtr->fill(&_bbox, _color); + for (RectangleList::iterator it = updateRects->begin(); it != updateRects->end(); ++it) { + const Common::Rect &clipRect = *it; + if (_bbox.intersects(clipRect)) { + Common::Rect intersectionRect = _bbox.findIntersectingRect(clipRect); + gfxPtr->fill(&intersectionRect, _color); + } + } + + return true; } bool Panel::persist(OutputPersistenceBlock &writer) { diff --git a/engines/sword25/gfx/panel.h b/engines/sword25/gfx/panel.h index cbf04ce40f..74a93247b6 100644 --- a/engines/sword25/gfx/panel.h +++ b/engines/sword25/gfx/panel.h @@ -51,15 +51,17 @@ public: return _color; } void setColor(uint color) { - _color = color; - forceRefresh(); + if (_color != color) { + _color = color; + forceRefresh(); + } } virtual bool persist(OutputPersistenceBlock &writer); virtual bool unpersist(InputPersistenceBlock &reader); protected: - virtual bool doRender(); + virtual bool doRender(RectangleList *updateRects); private: uint _color; diff --git a/engines/sword25/gfx/renderobject.cpp b/engines/sword25/gfx/renderobject.cpp index a977eb80ba..807c1eb64b 100644 --- a/engines/sword25/gfx/renderobject.cpp +++ b/engines/sword25/gfx/renderobject.cpp @@ -48,6 +48,8 @@ namespace Sword25 { +int RenderObject::_nextGlobalVersion = 0; + RenderObject::RenderObject(RenderObjectPtr<RenderObject> parentPtr, TYPES type, uint handle) : _managerPtr(0), _parentPtr(parentPtr), @@ -65,7 +67,9 @@ RenderObject::RenderObject(RenderObjectPtr<RenderObject> parentPtr, TYPES type, _type(type), _initSuccess(false), _refreshForced(true), - _handle(0) { + _handle(0), + _version(++_nextGlobalVersion), + _isSolid(false) { // Renderobject registrieren, abhängig vom Handle-Parameter entweder mit beliebigem oder vorgegebenen Handle. if (handle == 0) @@ -106,13 +110,12 @@ RenderObject::~RenderObject() { RenderObjectRegistry::instance().deregisterObject(this); } -bool RenderObject::render() { +void RenderObject::preRender(RenderObjectQueue *renderQueue) { // Objektänderungen validieren validateObject(); - // Falls das Objekt nicht sichtbar ist, muss gar nichts gezeichnet werden if (!_visible) - return true; + return; // Falls notwendig, wird die Renderreihenfolge der Kinderobjekte aktualisiert. if (_childChanged) { @@ -120,13 +123,36 @@ bool RenderObject::render() { _childChanged = false; } + renderQueue->add(this); + + RENDEROBJECT_ITER it = _children.begin(); + for (; it != _children.end(); ++it) + (*it)->preRender(renderQueue); + +} + +bool RenderObject::render(RectangleList *updateRects, const Common::Array<int> &updateRectsMinZ) { + + // Falls das Objekt nicht sichtbar ist, muss gar nichts gezeichnet werden + if (!_visible) + return true; + // Objekt zeichnen. - doRender(); + bool needRender = false; + int index = 0; + + // Only draw if the bounding box intersects any update rectangle and + // the object is in front of the minimum Z value. + for (RectangleList::iterator rectIt = updateRects->begin(); !needRender && rectIt != updateRects->end(); ++rectIt, ++index) + needRender = (_bbox.contains(*rectIt) || _bbox.intersects(*rectIt)) && getAbsoluteZ() >= updateRectsMinZ[index]; + + if (needRender) + doRender(updateRects); // Dann müssen die Kinder gezeichnet werden RENDEROBJECT_ITER it = _children.begin(); for (; it != _children.end(); ++it) - if (!(*it)->render()) + if (!(*it)->render(updateRects, updateRectsMinZ)) return false; return true; @@ -157,6 +183,8 @@ bool RenderObject::updateObjectState() { // Die Bounding-Box neu berechnen und Update-Regions registrieren. updateBoxes(); + + ++_version; // Änderungen Validieren validateObject(); @@ -191,9 +219,10 @@ Common::Rect RenderObject::calcBoundingBox() const { return bbox; } -void RenderObject::calcAbsolutePos(int &x, int &y) const { +void RenderObject::calcAbsolutePos(int &x, int &y, int &z) const { x = calcAbsoluteX(); y = calcAbsoluteY(); + z = calcAbsoluteZ(); } int RenderObject::calcAbsoluteX() const { @@ -210,6 +239,13 @@ int RenderObject::calcAbsoluteY() const { return _y; } +int RenderObject::calcAbsoluteZ() const { + if (_parentPtr.isValid()) + return _parentPtr->getAbsoluteZ() + _z; + else + return _z; +} + void RenderObject::deleteAllChildren() { // Es ist nicht notwendig die Liste zu iterieren, da jedes Kind für sich DetatchChildren an diesem Objekt aufruft und sich somit // selber entfernt. Daher muss immer nur ein beliebiges Element (hier das letzte) gelöscht werden, bis die Liste leer ist. @@ -253,7 +289,7 @@ void RenderObject::sortRenderObjects() { } void RenderObject::updateAbsolutePos() { - calcAbsolutePos(_absoluteX, _absoluteY); + calcAbsolutePos(_absoluteX, _absoluteY, _absoluteZ); RENDEROBJECT_ITER it = _children.begin(); for (; it != _children.end(); ++it) @@ -285,8 +321,10 @@ void RenderObject::setY(int y) { void RenderObject::setZ(int z) { if (z < 0) error("Tried to set a negative Z value (%d).", z); - else + else { _z = z; + updateAbsolutePos(); + } } void RenderObject::setVisible(bool visible) { diff --git a/engines/sword25/gfx/renderobject.h b/engines/sword25/gfx/renderobject.h index f963ccaeb3..7e0334ee88 100644 --- a/engines/sword25/gfx/renderobject.h +++ b/engines/sword25/gfx/renderobject.h @@ -53,6 +53,8 @@ namespace Sword25 { class Kernel; class RenderObjectManager; +class RenderObjectQueue; +class RectangleList; class Bitmap; class Animation; class AnimationTemplate; @@ -211,6 +213,9 @@ public: // Interface // --------- + + void preRender(RenderObjectQueue *renderQueue); + /** @brief Rendert des Objekt und alle seine Unterobjekte. @return Gibt false zurück, falls beim Rendern ein Fehler aufgetreten ist. @@ -218,7 +223,8 @@ public: Dieses kann entweder direkt geschehen oder durch den Aufruf von UpdateObjectState() an einem Vorfahren-Objekt.<br> Diese Methode darf nur von BS_RenderObjectManager aufgerufen werden. */ - bool render(); + bool render(RectangleList *updateRects, const Common::Array<int> &updateRectsMinZ); + /** @brief Bereitet das Objekt und alle seine Unterobjekte auf einen Rendervorgang vor. Hierbei werden alle Dirty-Rectangles berechnet und die Renderreihenfolge aktualisiert. @@ -230,7 +236,7 @@ public: @brief Löscht alle Kinderobjekte. */ void deleteAllChildren(); - + // Accessor-Methoden // ----------------- /** @@ -299,6 +305,11 @@ public: int getZ() const { return _z; } + + int getAbsoluteZ() const { + return _absoluteZ; + } + /** @brief Gibt die Breite des Objektes zurück. */ @@ -352,6 +363,15 @@ public: return _handle; } + // Get the RenderObjects current version + int getVersion() const { + return _version; + } + + bool isSolid() const { + return _isSolid; + } + // Persistenz-Methoden // ------------------- virtual bool persist(OutputPersistenceBlock &writer); @@ -370,9 +390,10 @@ protected: int _x; ///< Die X-Position des Objektes relativ zum Eltern-Objekt int _y; ///< Die Y-Position des Objektes relativ zum Eltern-Objekt + int _z; ///< Der Z-Wert des Objektes relativ zum Eltern-Objekt int _absoluteX; ///< Die absolute X-Position des Objektes int _absoluteY; ///< Die absolute Y-Position des Objektes - int _z; ///< Der Z-Wert des Objektes relativ zum Eltern-Objekt + int _absoluteZ; int _width; ///< Die Breite des Objektes int _height; ///< Die Höhe des Objektes bool _visible; ///< Ist true, wenn das Objekt sichtbar ist @@ -388,6 +409,13 @@ protected: int _oldZ; bool _oldVisible; + static int _nextGlobalVersion; + + int _version; + + // This should be set to true if the RenderObject is NOT alpha-blended to optimize drawing + bool _isSolid; + /// Ein Pointer auf den BS_RenderObjektManager, der das Objekt verwaltet. RenderObjectManager *_managerPtr; @@ -402,7 +430,7 @@ protected: @return Gibt false zurück, falls das Rendern fehlgeschlagen ist. @remark */ - virtual bool doRender() = 0; // { return true; } + virtual bool doRender(RectangleList *updateRects) = 0; // { return true; } // RenderObject-Baum Variablen // --------------------------- @@ -472,7 +500,7 @@ private: /** @brief Berechnet die absolute Position des Objektes. */ - void calcAbsolutePos(int &x, int &y) const; + void calcAbsolutePos(int &x, int &y, int &z) const; /** @brief Berechnet die absolute Position des Objektes auf der X-Achse. */ @@ -481,6 +509,9 @@ private: @brief Berechnet die absolute Position des Objektes. */ int calcAbsoluteY() const; + + int calcAbsoluteZ() const; + /** @brief Sortiert alle Kinderobjekte nach ihrem Renderang. */ diff --git a/engines/sword25/gfx/renderobjectmanager.cpp b/engines/sword25/gfx/renderobjectmanager.cpp index 38289991eb..994d9367ab 100644 --- a/engines/sword25/gfx/renderobjectmanager.cpp +++ b/engines/sword25/gfx/renderobjectmanager.cpp @@ -41,17 +41,37 @@ #include "sword25/gfx/timedrenderobject.h" #include "sword25/gfx/rootrenderobject.h" +#include "common/system.h" + namespace Sword25 { +void RenderObjectQueue::add(RenderObject *renderObject) { + push_back(RenderObjectQueueItem(renderObject, renderObject->getBbox(), renderObject->getVersion())); +} + +bool RenderObjectQueue::exists(const RenderObjectQueueItem &renderObjectQueueItem) { + for (RenderObjectQueue::iterator it = begin(); it != end(); ++it) + if ((*it)._renderObject == renderObjectQueueItem._renderObject && + (*it)._version == renderObjectQueueItem._version) + return true; + return false; +} + RenderObjectManager::RenderObjectManager(int width, int height, int framebufferCount) : _frameStarted(false) { // Wurzel des BS_RenderObject-Baumes erzeugen. _rootPtr = (new RootRenderObject(this, width, height))->getHandle(); + _uta = new MicroTileArray(width, height); + _currQueue = new RenderObjectQueue(); + _prevQueue = new RenderObjectQueue(); } RenderObjectManager::~RenderObjectManager() { // Die Wurzel des Baumes löschen, damit werden alle BS_RenderObjects mitgelöscht. _rootPtr.erase(); + delete _uta; + delete _currQueue; + delete _prevQueue; } void RenderObjectManager::startFrame() { @@ -76,7 +96,58 @@ bool RenderObjectManager::render() { _frameStarted = false; // Die Render-Methode der Wurzel aufrufen. Dadurch wird das rekursive Rendern der Baumelemente angestoßen. - return _rootPtr->render(); + + _currQueue->clear(); + _rootPtr->preRender(_currQueue); + + _uta->clear(); + + // Add rectangles of objects which don't exist in this frame any more + for (RenderObjectQueue::iterator it = _prevQueue->begin(); it != _prevQueue->end(); ++it) + if (!_currQueue->exists(*it)) + _uta->addRect((*it)._bbox); + // Add rectangles of objects which are different from the previous frame + for (RenderObjectQueue::iterator it = _currQueue->begin(); it != _currQueue->end(); ++it) + if (!_prevQueue->exists(*it)) + _uta->addRect((*it)._bbox); + + RectangleList *updateRects = _uta->getRectangles(); + Common::Array<int> updateRectsMinZ; + + updateRectsMinZ.reserve(updateRects->size()); + + // Calculate the minimum drawing Z value of each update rectangle + // Solid bitmaps with a Z order less than the value calculated here would be overdrawn again and + // so don't need to be drawn in the first place which speeds things up a bit. + for (RectangleList::iterator rectIt = updateRects->begin(); rectIt != updateRects->end(); ++rectIt) { + int minZ = 0; + for (RenderObjectQueue::iterator it = _currQueue->reverse_begin(); it != _currQueue->end(); --it) { + if ((*it)._renderObject->isVisible() && (*it)._renderObject->isSolid() && + (*it)._renderObject->getBbox().contains(*rectIt)) { + minZ = (*it)._renderObject->getAbsoluteZ(); + break; + } + } + updateRectsMinZ.push_back(minZ); + } + + if (_rootPtr->render(updateRects, updateRectsMinZ)) { + // Copy updated rectangles to the video screen + Graphics::Surface *backSurface = Kernel::getInstance()->getGfx()->getSurface(); + for (RectangleList::iterator rectIt = updateRects->begin(); rectIt != updateRects->end(); ++rectIt) { + const int x = (*rectIt).left; + const int y = (*rectIt).top; + const int width = (*rectIt).width(); + const int height = (*rectIt).height(); + g_system->copyRectToScreen(backSurface->getBasePtr(x, y), backSurface->pitch, x, y, width, height); + } + } + + delete updateRects; + + SWAP(_currQueue, _prevQueue); + + return true; } void RenderObjectManager::attatchTimedRenderObject(RenderObjectPtr<TimedRenderObject> renderObjectPtr) { diff --git a/engines/sword25/gfx/renderobjectmanager.h b/engines/sword25/gfx/renderobjectmanager.h index 9e7efd8e60..1db91dfbe6 100644 --- a/engines/sword25/gfx/renderobjectmanager.h +++ b/engines/sword25/gfx/renderobjectmanager.h @@ -47,11 +47,28 @@ #include "sword25/gfx/renderobjectptr.h" #include "sword25/kernel/persistable.h" +#include "sword25/gfx/microtiles.h" + namespace Sword25 { class Kernel; class RenderObject; class TimedRenderObject; +class RenderObjectManager; + +struct RenderObjectQueueItem { + RenderObject *_renderObject; + Common::Rect _bbox; + int _version; + RenderObjectQueueItem(RenderObject *renderObject, const Common::Rect &bbox, int version) + : _renderObject(renderObject), _bbox(bbox), _version(version) {} +}; + +class RenderObjectQueue : public Common::List<RenderObjectQueueItem> { +public: + void add(RenderObject *renderObject); + bool exists(const RenderObjectQueueItem &renderObjectQueueItem); +}; /** @brief Diese Klasse ist für die Verwaltung von BS_RenderObjects zuständig. @@ -114,6 +131,9 @@ private: typedef Common::Array<RenderObjectPtr<TimedRenderObject> > RenderObjectList; RenderObjectList _timedRenderObjects; + MicroTileArray *_uta; + RenderObjectQueue *_currQueue, *_prevQueue; + // RenderObject-Tree Variablen // --------------------------- // Der Baum legt die hierachische Ordnung der BS_RenderObjects fest. diff --git a/engines/sword25/gfx/rootrenderobject.h b/engines/sword25/gfx/rootrenderobject.h index 4782fad175..f1b19d6bae 100644 --- a/engines/sword25/gfx/rootrenderobject.h +++ b/engines/sword25/gfx/rootrenderobject.h @@ -59,7 +59,7 @@ private: } protected: - virtual bool doRender() { + virtual bool doRender(RectangleList *updateRects) { return true; } }; diff --git a/engines/sword25/gfx/staticbitmap.cpp b/engines/sword25/gfx/staticbitmap.cpp index 0ae07b36b5..91b93e8910 100644 --- a/engines/sword25/gfx/staticbitmap.cpp +++ b/engines/sword25/gfx/staticbitmap.cpp @@ -71,6 +71,8 @@ bool StaticBitmap::initBitmapResource(const Common::String &filename) { // RenderObject Eigenschaften aktualisieren _originalWidth = _width = bitmapPtr->getWidth(); _originalHeight = _height = bitmapPtr->getHeight(); + + _isSolid = bitmapPtr->isSolid(); // Bild-Resource freigeben bitmapPtr->release(); @@ -81,7 +83,7 @@ bool StaticBitmap::initBitmapResource(const Common::String &filename) { StaticBitmap::~StaticBitmap() { } -bool StaticBitmap::doRender() { +bool StaticBitmap::doRender(RectangleList *updateRects) { // Bitmap holen Resource *resourcePtr = Kernel::getInstance()->getResourceManager()->requestResource(_resourceFilename); assert(resourcePtr); @@ -98,12 +100,14 @@ bool StaticBitmap::doRender() { result = bitmapResourcePtr->blit(_absoluteX, _absoluteY, (_flipV ? BitmapResource::FLIP_V : 0) | (_flipH ? BitmapResource::FLIP_H : 0), - 0, _modulationColor, -1, -1); + 0, _modulationColor, -1, -1, + updateRects); } else { result = bitmapResourcePtr->blit(_absoluteX, _absoluteY, (_flipV ? BitmapResource::FLIP_V : 0) | (_flipH ? BitmapResource::FLIP_H : 0), - 0, _modulationColor, _width, _height); + 0, _modulationColor, _width, _height, + updateRects); } // Resource freigeben diff --git a/engines/sword25/gfx/staticbitmap.h b/engines/sword25/gfx/staticbitmap.h index e66ede02b4..90b92b4331 100644 --- a/engines/sword25/gfx/staticbitmap.h +++ b/engines/sword25/gfx/staticbitmap.h @@ -65,7 +65,7 @@ public: virtual bool unpersist(InputPersistenceBlock &reader); protected: - virtual bool doRender(); + virtual bool doRender(RectangleList *updateRects); private: Common::String _resourceFilename; diff --git a/engines/sword25/gfx/text.cpp b/engines/sword25/gfx/text.cpp index 82bb7cdff7..d4aaa90682 100644 --- a/engines/sword25/gfx/text.cpp +++ b/engines/sword25/gfx/text.cpp @@ -91,9 +91,11 @@ bool Text::setFont(const Common::String &font) { } void Text::setText(const Common::String &text) { - _text = text; - updateFormat(); - forceRefresh(); + if (_text != text) { + _text = text; + updateFormat(); + forceRefresh(); + } } void Text::setColor(uint modulationColor) { @@ -129,7 +131,7 @@ void Text::setAutoWrapThreshold(uint autoWrapThreshold) { } } -bool Text::doRender() { +bool Text::doRender(RectangleList *updateRects) { // Font-Resource locken. FontResource *fontPtr = lockFontResource(); if (!fontPtr) @@ -171,7 +173,7 @@ bool Text::doRender() { Common::Rect renderRect(curX, curY, curX + curRect.width(), curY + curRect.height()); renderRect.translate(curRect.left - curX, curRect.top - curY); - result = charMapPtr->blit(curX, curY, Image::FLIP_NONE, &renderRect, _modulationColor); + result = charMapPtr->blit(curX, curY, Image::FLIP_NONE, &renderRect, _modulationColor, -1, -1, updateRects); if (!result) break; diff --git a/engines/sword25/gfx/text.h b/engines/sword25/gfx/text.h index a0d668014f..94e7a30865 100644 --- a/engines/sword25/gfx/text.h +++ b/engines/sword25/gfx/text.h @@ -136,7 +136,7 @@ public: virtual bool unpersist(InputPersistenceBlock &reader); protected: - virtual bool doRender(); + virtual bool doRender(RectangleList *updateRects); private: Text(RenderObjectPtr<RenderObject> parentPtr); diff --git a/engines/sword25/module.mk b/engines/sword25/module.mk index e24a221244..234baec165 100644 --- a/engines/sword25/module.mk +++ b/engines/sword25/module.mk @@ -16,6 +16,7 @@ MODULE_OBJS := \ gfx/fontresource.o \ gfx/graphicengine.o \ gfx/graphicengine_script.o \ + gfx/microtiles.o \ gfx/panel.o \ gfx/renderobject.o \ gfx/renderobjectmanager.o \ diff --git a/engines/teenagent/detection.cpp b/engines/teenagent/detection.cpp index 0c1268a5fc..f9f5d2f13a 100644 --- a/engines/teenagent/detection.cpp +++ b/engines/teenagent/detection.cpp @@ -53,7 +53,7 @@ static const ADGameDescription teenAgentGameDescriptions[] = { {NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -73,7 +73,7 @@ static const ADGameDescription teenAgentGameDescriptions[] = { {NULL, 0, NULL, 0} }, Common::CZ_CZE, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, diff --git a/engines/testbed/detection.cpp b/engines/testbed/detection.cpp index 02a9dfcb87..fd426d3e98 100644 --- a/engines/testbed/detection.cpp +++ b/engines/testbed/detection.cpp @@ -38,7 +38,7 @@ static const ADGameDescription testbedDescriptions[] = { "", AD_ENTRY1("TESTBED", 0), // Game-data file for detection Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, diff --git a/engines/testbed/midi.cpp b/engines/testbed/midi.cpp index 69d361b0d6..70ede406d5 100644 --- a/engines/testbed/midi.cpp +++ b/engines/testbed/midi.cpp @@ -96,6 +96,10 @@ TestExitStatus MidiTests::playMidiMusic() { Common::String errMsg = MidiDriver::getErrorName(errCode); Testsuite::writeOnScreen(errMsg, Common::Point(0, 100)); Testsuite::logPrintf("Error! %s", errMsg.c_str()); + + delete smfParser; + delete driver; + return kTestFailed; } diff --git a/engines/tinsel/detection_tables.h b/engines/tinsel/detection_tables.h index 4762acfe2c..f05f39b319 100644 --- a/engines/tinsel/detection_tables.h +++ b/engines/tinsel/detection_tables.h @@ -41,7 +41,7 @@ static const TinselGameDescription gameDescriptions[] = { AD_ENTRY1s("dw.gra", "ce1b57761ba705221bcf70955b827b97", 441192), //AD_ENTRY1s("dw.scn", "ccd72f02183d0e96b6e7d8df9492cda8", 23308), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DEMO, GUIO3(GUIO_NOSPEECH, GUIO_NOSFX, GUIO_NOMUSIC) }, @@ -60,7 +60,7 @@ static const TinselGameDescription gameDescriptions[] = { {"english.smp", 0, NULL, -1}, }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DEMO | ADGF_CD, GUIO0() }, @@ -104,7 +104,7 @@ static const TinselGameDescription gameDescriptions[] = { {NULL, 0, NULL, 0} }, Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE, GUIO1(GUIO_NOSPEECH) }, @@ -127,7 +127,7 @@ static const TinselGameDescription gameDescriptions[] = { {NULL, 0, NULL, 0} }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE, GUIO1(GUIO_NOSPEECH) }, @@ -150,7 +150,7 @@ static const TinselGameDescription gameDescriptions[] = { {NULL, 0, NULL, 0} }, Common::IT_ITA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE, GUIO1(GUIO_NOSPEECH) }, @@ -173,7 +173,7 @@ static const TinselGameDescription gameDescriptions[] = { {NULL, 0, NULL, 0} }, Common::ES_ESP, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE, GUIO1(GUIO_NOSPEECH) }, @@ -189,7 +189,7 @@ static const TinselGameDescription gameDescriptions[] = { "Floppy", AD_ENTRY1s("dw.gra", "c8808ccd988d603dd35dff42013ae7fd", 781656), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NOSPEECH) }, @@ -208,7 +208,7 @@ static const TinselGameDescription gameDescriptions[] = { {"english.smp", 0, NULL, -1}, }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -227,7 +227,7 @@ static const TinselGameDescription gameDescriptions[] = { {"english.smp", 0, NULL, -1}, }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO_NONE }, @@ -243,7 +243,7 @@ static const TinselGameDescription gameDescriptions[] = { "Floppy", AD_ENTRY1s("dw.gra", "ef05bbd2a754bd11a2e87bcd84ab5ccf", 781864), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_NOSPEECH }, @@ -265,7 +265,7 @@ static const TinselGameDescription gameDescriptions[] = { {NULL, 0, NULL, 0} }, Common::IT_ITA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE | ADGF_CD, GUIO0() }, @@ -290,7 +290,7 @@ static const TinselGameDescription gameDescriptions[] = { {NULL, 0, NULL, 0} }, Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE | ADGF_CD, GUIO0() }, @@ -314,7 +314,7 @@ static const TinselGameDescription gameDescriptions[] = { {NULL, 0, NULL, 0} }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE, GUIO0() }, @@ -337,7 +337,7 @@ static const TinselGameDescription gameDescriptions[] = { {NULL, 0, NULL, 0} }, Common::IT_ITA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE | ADGF_CD, GUIO0() }, @@ -360,7 +360,7 @@ static const TinselGameDescription gameDescriptions[] = { {NULL, 0, NULL, 0} }, Common::ES_ESP, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DROPLANGUAGE | ADGF_CD, GUIO0() }, @@ -380,7 +380,7 @@ static const TinselGameDescription gameDescriptions[] = { {NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -400,7 +400,7 @@ static const TinselGameDescription gameDescriptions[] = { {NULL, 0, NULL, 0} }, Common::HE_ISR, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -463,7 +463,7 @@ static const TinselGameDescription gameDescriptions[] = { {NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -501,7 +501,7 @@ static const TinselGameDescription gameDescriptions[] = { "CD", AD_ENTRY1s("dw.scn", "6182c7986eaec893c62fb6ea13a9f225", 774556), Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO0() }, @@ -522,7 +522,7 @@ static const TinselGameDescription gameDescriptions[] = { {NULL, 0, NULL, 0} }, Common::RU_RUS, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO1(GUIO_NOASPECT) }, @@ -543,7 +543,7 @@ static const TinselGameDescription gameDescriptions[] = { {NULL, 0, NULL, 0} }, Common::PL_POL, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO_NONE }, @@ -563,7 +563,7 @@ static const TinselGameDescription gameDescriptions[] = { {NULL, 0, NULL, 0} }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DEMO | ADGF_CD, GUIO1(GUIO_NOASPECT) }, @@ -583,7 +583,7 @@ static const TinselGameDescription gameDescriptions[] = { {NULL, 0, NULL, 0} }, Common::EN_GRB, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO1(GUIO_NOASPECT) }, @@ -603,7 +603,7 @@ static const TinselGameDescription gameDescriptions[] = { {NULL, 0, NULL, 0} }, Common::EN_USA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO1(GUIO_NOASPECT) }, @@ -623,7 +623,7 @@ static const TinselGameDescription gameDescriptions[] = { {NULL, 0, NULL, 0} }, Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO1(GUIO_NOASPECT) }, @@ -643,7 +643,7 @@ static const TinselGameDescription gameDescriptions[] = { {NULL, 0, NULL, 0} }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO1(GUIO_NOASPECT) }, @@ -664,7 +664,7 @@ static const TinselGameDescription gameDescriptions[] = { {NULL, 0, NULL, 0} }, Common::IT_ITA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO1(GUIO_NOASPECT) }, @@ -684,7 +684,7 @@ static const TinselGameDescription gameDescriptions[] = { {NULL, 0, NULL, 0} }, Common::ES_ESP, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO1(GUIO_NOASPECT) }, @@ -705,7 +705,7 @@ static const TinselGameDescription gameDescriptions[] = { {NULL, 0, NULL, 0} }, Common::RU_RUS, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO1(GUIO_NOASPECT) }, diff --git a/engines/tinsel/dialogs.cpp b/engines/tinsel/dialogs.cpp index d0c99f7830..e6229ff3a0 100644 --- a/engines/tinsel/dialogs.cpp +++ b/engines/tinsel/dialogs.cpp @@ -3655,10 +3655,10 @@ extern void HideConversation(bool bHide) { if (g_InventoryState == ACTIVE_INV && g_ino == INV_CONV) { if (bHide) { // Move all the window and icons off-screen - for (i = 0; g_objArray[i] && i < MAX_WCOMP; i++) { + for (i = 0; i < MAX_WCOMP && g_objArray[i]; i++) { MultiAdjustXY(g_objArray[i], 2 * SCREEN_WIDTH, 0); } - for (i = 0; g_iconArray[i] && i < MAX_ICONS; i++) { + for (i = 0; i < MAX_ICONS && g_iconArray[i]; i++) { MultiAdjustXY(g_iconArray[i], 2 * SCREEN_WIDTH, 0); } diff --git a/engines/tinsel/faders.cpp b/engines/tinsel/faders.cpp index b772e37b47..b51b1d6d4f 100644 --- a/engines/tinsel/faders.cpp +++ b/engines/tinsel/faders.cpp @@ -106,7 +106,7 @@ static void FadeProcess(CORO_PARAM, const void *param) { FadingPalette(pFade->pPalQ, true); // get pointer to palette - reduce pointer indirection a bit - _ctx->pPalette = (PALETTE *)LockMem(FROM_32(pFade->pPalQ->hPal)); + _ctx->pPalette = (PALETTE *)LockMem(pFade->pPalQ->hPal); for (_ctx->pColMult = pFade->pColorMultTable; *_ctx->pColMult >= 0; _ctx->pColMult++) { // go through all multipliers in table - until a negative entry diff --git a/engines/tinsel/graphics.cpp b/engines/tinsel/graphics.cpp index ef8a10221b..5dae984def 100644 --- a/engines/tinsel/graphics.cpp +++ b/engines/tinsel/graphics.cpp @@ -797,9 +797,10 @@ static void PackedWrtNonZero(DRAWOBJECT *pObj, uint8 *srcP, uint8 *destP, * Clears both the screen surface buffer and screen to the specified value */ void ClearScreen() { + byte blackColorIndex = (!TinselV1Mac) ? 0 : 255; void *pDest = _vm->screen().getBasePtr(0, 0); - memset(pDest, 0, SCREEN_WIDTH * SCREEN_HEIGHT); - g_system->fillScreen(0); + memset(pDest, blackColorIndex, SCREEN_WIDTH * SCREEN_HEIGHT); + g_system->fillScreen(blackColorIndex); g_system->updateScreen(); } diff --git a/engines/tinsel/object.cpp b/engines/tinsel/object.cpp index cbf1c86649..b70b581bbe 100644 --- a/engines/tinsel/object.cpp +++ b/engines/tinsel/object.cpp @@ -375,7 +375,7 @@ OBJECT *InitObject(const OBJ_INIT *pInitTbl) { if (pImg->hImgPal) { // allocate a palette for this object - pPalQ = AllocPalette(FROM_LE_32(pImg->hImgPal)); + pPalQ = AllocPalette(FROM_32(pImg->hImgPal)); // make sure palette allocated assert(pPalQ != NULL); @@ -494,7 +494,7 @@ OBJECT *RectangleObject(SCNHANDLE hPal, int color, int width, int height) { OBJECT *pRect = InitObject(&rectObj); // allocate a palette for this object - pPalQ = AllocPalette(FROM_32(hPal)); + pPalQ = AllocPalette(hPal); // make sure palette allocated assert(pPalQ != NULL); diff --git a/engines/tinsel/palette.cpp b/engines/tinsel/palette.cpp index 505cb21adb..b72d52cc8d 100644 --- a/engines/tinsel/palette.cpp +++ b/engines/tinsel/palette.cpp @@ -150,7 +150,7 @@ void PalettesToVideoDAC() { // we are using a palette handle // get hardware palette pointer - pPalette = (const PALETTE *)LockMem(FROM_32(pDACtail->pal.hRGBarray)); + pPalette = (const PALETTE *)LockMem(pDACtail->pal.hRGBarray); // get RGB pointer pColors = pPalette->palRGB; @@ -306,7 +306,7 @@ PALQ *AllocPalette(SCNHANDLE hNewPal) { PALETTE *pNewPal; // get pointer to new palette - pNewPal = (PALETTE *)LockMem(FROM_32(hNewPal)); + pNewPal = (PALETTE *)LockMem(hNewPal); // search all structs in palette allocator - see if palette already allocated for (p = g_palAllocData; p < g_palAllocData + NUM_PALETTES; p++) { diff --git a/engines/toltecs/detection.cpp b/engines/toltecs/detection.cpp index 788f813762..c5652f0c8d 100644 --- a/engines/toltecs/detection.cpp +++ b/engines/toltecs/detection.cpp @@ -66,7 +66,7 @@ static const ToltecsGameDescription gameDescriptions[] = { 0, AD_ENTRY1s("WESTERN", "05472037e9cfde146e953c434e74f0f4", 337643527), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NONE) }, @@ -79,7 +79,7 @@ static const ToltecsGameDescription gameDescriptions[] = { 0, AD_ENTRY1s("WESTERN", "ba1742d3193b68ceb9434e2ab7a09a9b", 391462783), Common::RU_RUS, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NONE) }, @@ -92,7 +92,7 @@ static const ToltecsGameDescription gameDescriptions[] = { 0, AD_ENTRY1s("WESTERN", "1a3292bad8e0bb5701800c73531dd75e", 345176617), Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NONE) }, @@ -105,7 +105,7 @@ static const ToltecsGameDescription gameDescriptions[] = { 0, AD_ENTRY1s("WESTERN", "4fb845635cbdac732453fe23be350df9", 327269545), Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NONE) }, @@ -118,7 +118,7 @@ static const ToltecsGameDescription gameDescriptions[] = { 0, AD_ENTRY1s("WESTERN", "479f468beccc1b0ce5873ec523d1380e", 308391018), Common::ES_ESP, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NONE) }, @@ -132,7 +132,7 @@ static const ToltecsGameDescription gameDescriptions[] = { 0, AD_ENTRY1s("WESTERN", "69a5572e75409d8c6230b787faa353af", 337647960), Common::HU_HUN, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO1(GUIO_NONE) }, @@ -145,7 +145,7 @@ static const ToltecsGameDescription gameDescriptions[] = { 0, AD_ENTRY1s("WESTERN", "53a0abd1c0bc5cad8ba18f0e56877705", 46241833), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DEMO, GUIO1(GUIO_NONE) }, @@ -158,7 +158,7 @@ static const ToltecsGameDescription gameDescriptions[] = { 0, AD_ENTRY1s("WESTERN", "1c85e82712d24f1d5c1ea2a66ddd75c2", 47730038), Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DEMO, GUIO1(GUIO_NONE) }, diff --git a/engines/toltecs/movie.cpp b/engines/toltecs/movie.cpp index 8bc00511e9..341da7e5f3 100644 --- a/engines/toltecs/movie.cpp +++ b/engines/toltecs/movie.cpp @@ -45,7 +45,7 @@ enum ChunkTypes { kChunkStopSubtitles = 8 }; -MoviePlayer::MoviePlayer(ToltecsEngine *vm) : _vm(vm), _isPlaying(false) { +MoviePlayer::MoviePlayer(ToltecsEngine *vm) : _vm(vm), _isPlaying(false), _lastPrefetchOfs(0), _framesPerSoundChunk(0), _endPos(0) { } MoviePlayer::~MoviePlayer() { @@ -67,12 +67,12 @@ void MoviePlayer::playMovie(uint resIndex) { memset(moviePalette, 0, sizeof(moviePalette)); _vm->_screen->finishTalkTextItems(); - _vm->_screen->clearSprites(); _vm->_arc->openResource(resIndex); + _endPos = _vm->_arc->pos() + _vm->_arc->getResourceSize(resIndex); - _frameCount = _vm->_arc->readUint32LE(); - _chunkCount = _vm->_arc->readUint32LE(); + /*_frameCount = */_vm->_arc->readUint32LE(); + uint32 chunkCount = _vm->_arc->readUint32LE(); // TODO: Figure out rest of the header _vm->_arc->readUint32LE(); @@ -91,7 +91,6 @@ void MoviePlayer::playMovie(uint resIndex) { _vm->_mixer->playStream(Audio::Mixer::kPlainSoundType, &_audioStreamHandle, _audioStream); - _soundChunkFramesLeft = 0; _lastPrefetchOfs = 0; fetchAudioChunks(); @@ -100,8 +99,9 @@ void MoviePlayer::playMovie(uint resIndex) { uint32 chunkBufferSize = 0; uint32 frame = 0; bool abortMovie = false; + uint32 soundChunkFramesLeft = 0; - while (_chunkCount-- && !abortMovie) { + while (chunkCount-- && !abortMovie) { byte chunkType = _vm->_arc->readByte(); uint32 chunkSize = _vm->_arc->readUint32LE(); @@ -111,6 +111,7 @@ void MoviePlayer::playMovie(uint resIndex) { // fetchAudioChunks() if (chunkType == kChunkAudio) { _vm->_arc->skip(chunkSize); + soundChunkFramesLeft += _framesPerSoundChunk; } else { // Only reallocate the chunk buffer if the new chunk is bigger if (chunkSize > chunkBufferSize) { @@ -128,8 +129,7 @@ void MoviePlayer::playMovie(uint resIndex) { unpackRle(chunkBuffer, _vm->_screen->_backScreen); _vm->_screen->_fullRefresh = true; - _soundChunkFramesLeft--; - if (_soundChunkFramesLeft <= _framesPerSoundChunk) { + if (--soundChunkFramesLeft <= _framesPerSoundChunk) { fetchAudioChunks(); } @@ -208,13 +208,12 @@ void MoviePlayer::playMovie(uint resIndex) { void MoviePlayer::fetchAudioChunks() { uint32 startOfs = _vm->_arc->pos(); - uint32 chunkCount = _chunkCount; uint prefetchChunkCount = 0; if (_lastPrefetchOfs != 0) _vm->_arc->seek(_lastPrefetchOfs, SEEK_SET); - while (chunkCount-- && prefetchChunkCount < _framesPerSoundChunk / 2) { + while (prefetchChunkCount < _framesPerSoundChunk / 2 && _vm->_arc->pos() < _endPos) { byte chunkType = _vm->_arc->readByte(); uint32 chunkSize = _vm->_arc->readUint32LE(); if (chunkType == kChunkAudio) { @@ -223,7 +222,6 @@ void MoviePlayer::fetchAudioChunks() { _audioStream->queueBuffer(chunkBuffer, chunkSize, DisposeAfterUse::YES, Audio::FLAG_UNSIGNED); chunkBuffer = NULL; prefetchChunkCount++; - _soundChunkFramesLeft += _framesPerSoundChunk; } else { _vm->_arc->seek(chunkSize, SEEK_CUR); } diff --git a/engines/toltecs/movie.h b/engines/toltecs/movie.h index c1ed6d7ba0..aa28c83fef 100644 --- a/engines/toltecs/movie.h +++ b/engines/toltecs/movie.h @@ -46,8 +46,8 @@ protected: bool _isPlaying; - uint32 _chunkCount, _frameCount, _lastPrefetchOfs; - uint32 _soundChunkFramesLeft, _framesPerSoundChunk; + uint32 _framesPerSoundChunk; + int32 _lastPrefetchOfs, _endPos; void unpackPalette(byte *source, byte *dest, int elemCount, int elemSize); void unpackRle(byte *source, byte *dest); diff --git a/engines/toltecs/screen.cpp b/engines/toltecs/screen.cpp index 1cd2373b43..5e12773e1b 100644 --- a/engines/toltecs/screen.cpp +++ b/engines/toltecs/screen.cpp @@ -251,10 +251,6 @@ void Screen::addAnimatedSprite(int16 x, int16 y, int16 fragmentId, byte *data, i } } -void Screen::clearSprites() { - -} - void Screen::blastSprite(int16 x, int16 y, int16 fragmentId, int16 resIndex, uint16 flags) { DrawRequest drawRequest; SpriteDrawItem sprite; diff --git a/engines/toltecs/screen.h b/engines/toltecs/screen.h index 52f412251e..7b2149fded 100644 --- a/engines/toltecs/screen.h +++ b/engines/toltecs/screen.h @@ -167,7 +167,6 @@ public: // Sprite list void addStaticSprite(byte *spriteItem); void addAnimatedSprite(int16 x, int16 y, int16 fragmentId, byte *data, int16 *spriteArray, bool loop, int mode); - void clearSprites(); // Sprite drawing void drawSprite(const SpriteDrawItem &sprite); diff --git a/engines/toltecs/script.cpp b/engines/toltecs/script.cpp index 07d74ac369..476c3a4fcf 100644 --- a/engines/toltecs/script.cpp +++ b/engines/toltecs/script.cpp @@ -265,7 +265,7 @@ void ScriptInterpreter::execOpcode(byte opcode) { _subCode = _code; byte length = readByte(); if (length == 0) { - warning("Possible script bug detected - opcode length is 0 when calling script function"); + warning("Opcode length is 0 when calling script function"); return; } debug(2, "length = %d", length); @@ -484,7 +484,9 @@ void ScriptInterpreter::execOpcode(byte opcode) { _code++; break; default: - error("Invalid opcode %d", opcode); + // Most likely a script bug. Throw a warning and ignore it. + // The original ignores invalid opcodes as well - bug #3604025. + warning("Invalid opcode %d", opcode); } } diff --git a/engines/toltecs/toltecs.cpp b/engines/toltecs/toltecs.cpp index 1a399dacc0..188facd63c 100644 --- a/engines/toltecs/toltecs.cpp +++ b/engines/toltecs/toltecs.cpp @@ -153,7 +153,6 @@ Common::Error ToltecsEngine::run() { _palette->loadAddPalette(9, 224); _palette->setDeltaPalette(_palette->getMainPalette(), 7, 0, 31, 224); _screen->finishTalkTextItems(); - _screen->clearSprites(); _menuSystem->run(); /* while (1) { @@ -280,7 +279,6 @@ void ToltecsEngine::updateScreen() { _flag01 = 1; _counter02 = 1; } else { - _screen->clearSprites(); _flag01 = 0; } @@ -425,8 +423,6 @@ void ToltecsEngine::setGuiHeight(int16 guiHeight) { void ToltecsEngine::setCamera(int16 x, int16 y) { _screen->finishTalkTextItems(); - _screen->clearSprites(); - _cameraX = x; _newCameraX = x; @@ -646,7 +642,6 @@ void ToltecsEngine::showMenu(MenuID menuId) { _palette->loadAddPalette(9, 224); _palette->setDeltaPalette(_palette->getMainPalette(), 7, 0, 31, 224); _screen->finishTalkTextItems(); - _screen->clearSprites(); CursorMan.showMouse(true); _menuSystem->run(menuId); _keyState.reset(); diff --git a/engines/toon/anim.cpp b/engines/toon/anim.cpp index 1c85a8d798..a6744568f7 100644 --- a/engines/toon/anim.cpp +++ b/engines/toon/anim.cpp @@ -78,8 +78,10 @@ bool Animation::loadAnimation(const Common::String &file) { delete[] _frames; _frames = new AnimationFrame[_numFrames]; for (int32 e = 0; e < _numFrames; e++) { - if (READ_LE_UINT32(data) != 0x12345678) + if (READ_LE_UINT32(data) != 0x12345678) { + delete[] finalBuffer; return false; + } int32 oldRef = READ_LE_UINT32(data + 4); uint32 compressedSize = READ_LE_UINT32(data + 8); diff --git a/engines/toon/console.cpp b/engines/toon/console.cpp index 8037dca4cb..18f81e1323 100644 --- a/engines/toon/console.cpp +++ b/engines/toon/console.cpp @@ -26,6 +26,7 @@ namespace Toon { ToonConsole::ToonConsole(ToonEngine *vm) : GUI::Debugger(), _vm(vm) { + assert(_vm); } ToonConsole::~ToonConsole() { diff --git a/engines/toon/detection.cpp b/engines/toon/detection.cpp index 38b1f4f6e1..cee7a23796 100644 --- a/engines/toon/detection.cpp +++ b/engines/toon/detection.cpp @@ -44,7 +44,7 @@ static const ADGameDescription gameDescriptions[] = { {"study.svl", 0, "281efa3f33f6712c0f641a605f4d40fd", 2511090}, AD_LISTEND }, - Common::EN_ANY, Common::kPlatformPC, ADGF_NO_FLAGS, GUIO0() + Common::EN_ANY, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, { "toon", "", @@ -54,7 +54,7 @@ static const ADGameDescription gameDescriptions[] = { {"study.svl", 0, "df056b94ea83f1ed92a539cf636053ab", 2542668}, AD_LISTEND }, - Common::FR_FRA, Common::kPlatformPC, ADGF_NO_FLAGS, GUIO0() + Common::FR_FRA, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, { "toon", "", @@ -64,7 +64,7 @@ static const ADGameDescription gameDescriptions[] = { {"study.svl", 0, "72fe96a9e10967d3138e918295babc42", 2910283}, AD_LISTEND }, - Common::DE_DEU, Common::kPlatformPC, ADGF_NO_FLAGS, GUIO0() + Common::DE_DEU, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, { "toon", "", @@ -74,7 +74,7 @@ static const ADGameDescription gameDescriptions[] = { {"study.svl", 0, "b6b1ee2d9d94d53d305856039ab7bde7", 2634620}, AD_LISTEND }, - Common::ES_ESP, Common::kPlatformPC, ADGF_NO_FLAGS, GUIO0() + Common::ES_ESP, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, { "toon", "", @@ -83,7 +83,7 @@ static const ADGameDescription gameDescriptions[] = { {"arcaddbl.svl", 0, "1d1b96e317e03ffd3874a8ebe59556f3", 6246232}, {"study.svl", 0, "d4aff126ee27be3c3d25e2996369d7cb", 2324368}, }, - Common::RU_RUS, Common::kPlatformPC, ADGF_NO_FLAGS, GUIO0() + Common::RU_RUS, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, { "toon", "", @@ -93,7 +93,7 @@ static const ADGameDescription gameDescriptions[] = { {"generic.svl", 0, "5eb99850ada22f0b8cf6392262d4dd07", 9404599}, AD_LISTEND }, - Common::DE_DEU, Common::kPlatformPC, ADGF_DEMO, GUIO0() + Common::DE_DEU, Common::kPlatformDOS, ADGF_DEMO, GUIO0() }, { "toon", "", @@ -102,7 +102,7 @@ static const ADGameDescription gameDescriptions[] = { {"generic.svl", 0, "5c42724bb93b360dca7044d6b7ef26e5", 7739319}, AD_LISTEND }, - Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO0() + Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO0() }, AD_TABLE_END_MARKER diff --git a/engines/toon/font.cpp b/engines/toon/font.cpp index 1e851ff4ae..e26ed92f83 100644 --- a/engines/toon/font.cpp +++ b/engines/toon/font.cpp @@ -116,15 +116,15 @@ void FontRenderer::computeSize(const Common::String &origText, int16 *retX, int1 const byte *text = (const byte *)origText.c_str(); while (*text) { byte curChar = *text; - if (curChar < 32) { - text++; - continue; - } else if (curChar == 13) { + if (curChar == 13) { totalWidth = MAX(totalWidth, lineWidth); totalHeight += lineHeight; lineHeight = 0; lineWidth = 0; lastLineHeight = 0; + } else if (curChar < 32) { + text++; + continue; } else { curChar = textToFont(curChar); int16 charWidth = _currentFont->getFrameWidth(curChar) - 1; diff --git a/engines/toon/toon.cpp b/engines/toon/toon.cpp index 9fd8415676..7ad29ab8d8 100644 --- a/engines/toon/toon.cpp +++ b/engines/toon/toon.cpp @@ -2882,7 +2882,7 @@ void ToonEngine::getTextPosition(int32 characterId, int32 *retX, int32 *retY) { if (character && !_gameState->_inCutaway) { if (character->getAnimationInstance()) { if (character->getX() >= _gameState->_currentScrollValue && character->getX() <= _gameState->_currentScrollValue + TOON_SCREEN_WIDTH) { - int16 x1, y1, x2, y2; + int16 x1= 0, y1 = 0, x2 = 0, y2 = 0; character->getAnimationInstance()->getRect(&x1, &y1, &x2, &y2); *retX = (x1 + x2) / 2; *retY = y1; diff --git a/engines/touche/detection.cpp b/engines/touche/detection.cpp index e4bbe0c4c1..0662e718d5 100644 --- a/engines/touche/detection.cpp +++ b/engines/touche/detection.cpp @@ -43,7 +43,7 @@ static const ADGameDescription gameDescriptions[] = { "", AD_ENTRY1s("touche.dat", "2af0177f8887e3430f345e6b4d8b1414", 26350211), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -52,7 +52,7 @@ static const ADGameDescription gameDescriptions[] = { "", AD_ENTRY1s("touche.dat", "95967f0b51d2e813e99ca00325098340", 26350190), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -61,7 +61,7 @@ static const ADGameDescription gameDescriptions[] = { "", AD_ENTRY1s("touche.dat", "1caa20bb4d4fc2ce8eb867b6610082b3", 26558232), Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -70,7 +70,7 @@ static const ADGameDescription gameDescriptions[] = { "", AD_ENTRY1s("touche.dat", "be2ae6454b3325e410946f2322547cd4", 26625537), Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -79,7 +79,7 @@ static const ADGameDescription gameDescriptions[] = { "", AD_ENTRY1s("touche.dat", "64e95ba1decf5a5a60f8fa1840f40c62", 26529523), Common::ES_ESP, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -88,7 +88,7 @@ static const ADGameDescription gameDescriptions[] = { "", AD_ENTRY1s("touche.dat", "1f442331d4b327c3488a9f6ffe9bdd25", 26367792), Common::IT_ITA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -97,7 +97,7 @@ static const ADGameDescription gameDescriptions[] = { "", AD_ENTRY1s("touche.dat", "42d19a0bef65465109020440a9caa228", 26487370), Common::PL_POL, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -106,7 +106,7 @@ static const ADGameDescription gameDescriptions[] = { "Demo", AD_ENTRY1s("touche.dat", "ddaed436445b2e77294ed19e8ae4aa2c", 8720683), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DEMO, GUIO0() }, diff --git a/engines/tsage/converse.cpp b/engines/tsage/converse.cpp index ba27db9104..de5ac62425 100644 --- a/engines/tsage/converse.cpp +++ b/engines/tsage/converse.cpp @@ -42,6 +42,8 @@ SequenceManager::SequenceManager() : Action() { _objectIndex = 0; _keepActive = false; _onCallback = NULL; + for (int i = 0; i < 6; i ++) + _objectList[i] = NULL; setup(); } @@ -415,6 +417,8 @@ ConversationChoiceDialog::ConversationChoiceDialog() { _stdColor = 23; _highlightColor = g_globals->_scenePalette._colors.background; _fontNumber = 1; + _savedFgColor = _savedFontNumber = 0; + _selectedIndex = 0; } int ConversationChoiceDialog::execute(const Common::StringArray &choiceList) { @@ -587,6 +591,8 @@ StripManager::StripManager() { _activeSpeaker = NULL; _onBegin = NULL; _onEnd = NULL; + _sceneNumber = 0; + _lookupList = NULL; reset(); } @@ -932,6 +938,7 @@ Speaker::Speaker() : EventHandler() { _color1 = _color2 = _color3 = g_globals->_scenePalette._colors.foreground; _action = NULL; _speakerName = "SPEAKER"; + _oldSceneNumber = -1; } void Speaker::synchronize(Serializer &s) { diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp index 292e74c09b..4a90e23a33 100644 --- a/engines/tsage/core.cpp +++ b/engines/tsage/core.cpp @@ -65,6 +65,11 @@ InvObject::InvObject(int visage, int strip, int frame) { _frame = frame; _sceneNumber = 0; _iconResNum = 10; + + _displayResNum = 0; + _rlbNum = 0; + _cursorNum = 0; + _cursorId = INV_NONE; } InvObject::InvObject(int strip, int frame) { @@ -75,6 +80,11 @@ InvObject::InvObject(int strip, int frame) { _visage = 7; _sceneNumber = 0; _iconResNum = 10; + + _displayResNum = 0; + _rlbNum = 0; + _cursorNum = 0; + _cursorId = INV_NONE; } void InvObject::setCursor() { @@ -163,6 +173,8 @@ Action::Action() { _owner = NULL; _endHandler = NULL; _attached = false; + _delayFrames = 0; + _startFrame = 0; } void Action::synchronize(Serializer &s) { @@ -387,6 +399,8 @@ void ObjectMover::endMove() { ObjectMover2::ObjectMover2() : ObjectMover() { _destObject = NULL; + _minArea = 0; + _maxArea = 0; } void ObjectMover2::synchronize(Serializer &s) { @@ -1047,6 +1061,8 @@ PaletteModifier::PaletteModifier() { PaletteModifierCached::PaletteModifierCached(): PaletteModifier() { _step = 0; _percent = 0; + for (int i = 0; i < 768; i++) + _palette[i] = 0; } void PaletteModifierCached::setPalette(ScenePalette *palette, int step) { @@ -1070,6 +1086,10 @@ PaletteRotation::PaletteRotation() : PaletteModifierCached() { _frameNumber = g_globals->_events.getFrameNumber(); _idxChange = 1; _countdown = 0; + _currIndex = 0; + _start = _end = 0; + _rotationMode = 0; + _duration = 0; } void PaletteRotation::synchronize(Serializer &s) { @@ -1273,6 +1293,10 @@ ScenePalette::ScenePalette() { } _field412 = 0; + _redColor = _greenColor = _blueColor = 0; + _aquaColor = 0; + _purpleColor = 0; + _limeColor = 0; } ScenePalette::~ScenePalette() { @@ -1280,6 +1304,12 @@ ScenePalette::~ScenePalette() { } ScenePalette::ScenePalette(int paletteNum) { + _field412 = 0; + _redColor = _greenColor = _blueColor = 0; + _aquaColor = 0; + _purpleColor = 0; + _limeColor = 0; + loadPalette(paletteNum); } @@ -1781,6 +1811,7 @@ void SceneItem::display(const Common::String &msg) { SceneHotspot::SceneHotspot(): SceneItem() { _lookLineNum = _useLineNum = _talkLineNum = 0; + _resNum = 0; } void SceneHotspot::synchronize(Serializer &s) { @@ -2036,6 +2067,13 @@ SceneObject::SceneObject() : SceneHotspot() { _linkedActor = NULL; _field8A = Common::Point(0, 0); + _angle = 0; + _xs = 0; + _xe = 0; + _endFrame = 0; + _field68 = 0; + _regionIndex = 0; + _field9C = NULL; } SceneObject::SceneObject(const SceneObject &so) : SceneHotspot() { @@ -2331,6 +2369,7 @@ void SceneObject::animate(AnimateMode animMode, ...) { setFrame(getNewFrame()); break; } + va_end(va); } SceneObject *SceneObject::clone() const { @@ -3072,6 +3111,7 @@ Visage::Visage(const Visage &v) { _data = v._data; if (_data) g_vm->_memoryManager.incLocks(_data); + _flipHoriz = false; } Visage &Visage::operator=(const Visage &s) { @@ -3579,6 +3619,7 @@ void SceneItemList::addItems(SceneItem *first, ...) { push_back(p); p = va_arg(va, SceneItem *); } + va_end(va); } /*--------------------------------------------------------------------------*/ @@ -4074,6 +4115,7 @@ SceneHandler::SceneHandler() { _saveGameSlot = -1; _loadGameSlot = -1; _prevFrameNumber = 0; + _delayTicks = 0; } void SceneHandler::registerHandler() { diff --git a/engines/tsage/core.h b/engines/tsage/core.h index 60a7930eab..296754011e 100644 --- a/engines/tsage/core.h +++ b/engines/tsage/core.h @@ -189,7 +189,7 @@ public: Action *_action; SceneObject *_sceneObject; public: - ObjectMover() { _action = NULL; _sceneObject = NULL; } + ObjectMover() { _action = NULL; _sceneObject = NULL; _minorDiff = 0; _majorDiff = 0; _changeCtr = 0;} virtual ~ObjectMover(); virtual void synchronize(Serializer &s); @@ -272,7 +272,7 @@ public: SceneObject *_destObject; int _maxArea; int _minArea; - PlayerMover2() : PlayerMover() { _destObject = NULL; } + PlayerMover2() : PlayerMover() { _destObject = NULL; _minArea = _maxArea = 0;} virtual void synchronize(Serializer &s); virtual Common::String getClassName() { return "PlayerMover2"; } @@ -415,7 +415,7 @@ public: int _yDiff; int _sceneRegionId; public: - SceneItem() : EventHandler() { _msg = "Feature"; _action = NULL; _sceneRegionId = 0; } + SceneItem() : EventHandler() { _msg = "Feature"; _action = NULL; _sceneRegionId = 0; _yDiff = 0; _fieldE = _field10 = 0;} virtual void synchronize(Serializer &s); virtual Common::String getClassName() { return "SceneItem"; } @@ -685,6 +685,7 @@ public: int xe = va_arg(va, int); items.push_back(LineSlice(xs, xe)); } + va_end(va); } void add(LineSlice &slice) { items.push_back(slice); } diff --git a/engines/tsage/detection_tables.h b/engines/tsage/detection_tables.h index a84ee5662f..b374dbc98b 100644 --- a/engines/tsage/detection_tables.h +++ b/engines/tsage/detection_tables.h @@ -31,7 +31,7 @@ static const tSageGameDescription gameDescriptions[] = { "CD", AD_ENTRY1s("ring.rlb", "466f0e6492d9d0f34d35c5cd088de90f", 37847618), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO2(GUIO_NOSPEECH, GUIO_NOSFX) }, @@ -45,7 +45,7 @@ static const tSageGameDescription gameDescriptions[] = { "CD", AD_ENTRY1s("ring.rlb", "cb8bba91b30cd172712371d7123bd763", 7427980), Common::ES_ESP, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO2(GUIO_NOSPEECH, GUIO_NOSFX) }, @@ -59,7 +59,7 @@ static const tSageGameDescription gameDescriptions[] = { "Floppy", AD_ENTRY1s("ring.rlb", "7b7f0c5b37b58fa5ec06ebb2ca0d0d9d", 8438770), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSPEECH, GUIO_NOSFX) }, @@ -73,7 +73,7 @@ static const tSageGameDescription gameDescriptions[] = { "Floppy Demo", AD_ENTRY1s("tsage.rlb", "3b3604a97c06c91f3735d3e9d341f63f", 833453), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DEMO, GUIO2(GUIO_NOSPEECH, GUIO_NOSFX) }, @@ -88,7 +88,7 @@ static const tSageGameDescription gameDescriptions[] = { "Floppy Demo", AD_ENTRY1s("demoring.rlb", "64050e1806203b15bb03876140eb4f56", 832206), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DEMO, GUIO2(GUIO_NOSPEECH, GUIO_NOSFX) }, @@ -104,7 +104,7 @@ static const tSageGameDescription gameDescriptions[] = { "Floppy", AD_ENTRY1s("blue.rlb", "17c3993415e8a2cf93040eef7e88ec93", 1156508), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_UNSTABLE, GUIO2(GUIO_NOSPEECH, GUIO_NOSFX) }, @@ -119,7 +119,7 @@ static const tSageGameDescription gameDescriptions[] = { "", AD_ENTRY1s("blue.rlb", "17eabb456cb1546c66baf1aff387ba6a", 10032614), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO2(GUIO_NOSPEECH, GUIO_NOSFX) }, @@ -133,7 +133,7 @@ static const tSageGameDescription gameDescriptions[] = { "CD", AD_ENTRY1s("blue.rlb", "99983f48cb218f1f3760cf2f9a7ef11d", 63863322), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD, GUIO2(GUIO_NOSPEECH, GUIO_NOSFX) }, @@ -149,7 +149,7 @@ static const tSageGameDescription gameDescriptions[] = { "CD", AD_ENTRY1s("blue.rlb", "5b2b35c51b62e82d82b0791540bfae2d", 10082565), Common::ES_ESP, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD | ADGF_UNSTABLE, GUIO2(GUIO_NOSPEECH, GUIO_NOSFX) }, @@ -164,7 +164,7 @@ static const tSageGameDescription gameDescriptions[] = { "CD", AD_ENTRY1s("r2rw.rlb", "df6c25622387007788ca36d99362c1f0", 47586928), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_CD | ADGF_UNSTABLE, GUIO0() }, diff --git a/engines/tsage/graphics.h b/engines/tsage/graphics.h index 9175b1050a..826f2fef6f 100644 --- a/engines/tsage/graphics.h +++ b/engines/tsage/graphics.h @@ -162,7 +162,6 @@ public: class GfxFontBackup { private: - GfxSurface *_surface; Common::Point _edgeSize; Common::Point _position; GfxColors _colors; diff --git a/engines/tsage/ringworld/ringworld_scenes3.cpp b/engines/tsage/ringworld/ringworld_scenes3.cpp index 0e4ccd1269..b2ed986331 100644 --- a/engines/tsage/ringworld/ringworld_scenes3.cpp +++ b/engines/tsage/ringworld/ringworld_scenes3.cpp @@ -2179,6 +2179,7 @@ Scene2120::Scene2120(): Scene() { _prevDbMode = 0; _visageVisable = false; _subjectIndex = 0; + _lineOffset = 0; } void Scene2120::postInit(SceneObjectList *OwnerList) { @@ -3690,8 +3691,8 @@ void Scene2230::Hotspot12::doAction(int action) { /*--------------------------------------------------------------------------*/ -Scene2230::Scene2230() : - _hotspot9(0, CURSOR_LOOK, 2230, 16, CURSOR_USE, 2230, 18, LIST_END) { +Scene2230::Scene2230() : _hotspot9(0, CURSOR_LOOK, 2230, 16, CURSOR_USE, 2230, 18, LIST_END) { + _field30A = 0; } void Scene2230::postInit(SceneObjectList *OwnerList) { @@ -4877,6 +4878,7 @@ Scene2310::Scene2310() { _rectList[4].set(199, 70, 215, 140); _wireIndex = 5; + _pageIndex = 0; } void Scene2310::postInit(SceneObjectList *OwnerList) { diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.cpp b/engines/tsage/ringworld2/ringworld2_scenes1.cpp index 3a246459dd..af62ab6916 100644 --- a/engines/tsage/ringworld2/ringworld2_scenes1.cpp +++ b/engines/tsage/ringworld2/ringworld2_scenes1.cpp @@ -1062,9 +1062,10 @@ void Scene1200::Area1::process(Event &event) { CursorType cursor = R2_GLOBALS._events.getCursor(); if (_actor2._bounds.contains(event.mousePos.x + g_globals->gfxManager()._bounds.left , event.mousePos.y)) { - if (cursor == _cursorNum) + if (cursor == _cursorNum) { warning("TODO: _cursorState = ???"); R2_GLOBALS._events.setCursor(_savedCursorNum); //, _cursorState); + } } else if (event.mousePos.y < 168) { if (cursor != _cursorNum) { _savedCursorNum = cursor; @@ -6930,9 +6931,10 @@ void Scene1550::UnkArea1550::process(Event &event) { CursorType cursor = R2_GLOBALS._events.getCursor(); if (_areaActor._bounds.contains(event.mousePos.x + g_globals->gfxManager()._bounds.left , event.mousePos.y)) { - if (cursor == _cursorNum) + if (cursor == _cursorNum) { warning("TODO: _cursorState = ???"); R2_GLOBALS._events.setCursor(_savedCursorNum); //, _cursorState); + } } else if (event.mousePos.y < 168) { if (cursor != _cursorNum) { _savedCursorNum = cursor; @@ -8232,9 +8234,10 @@ void Scene1550::subA2B2F() { R2_GLOBALS._sceneManager._fadeMode = FADEMODE_IMMEDIATE; if (varA == 0) { - if (_field417 != 1550) + if (_field417 != 1550) { g_globals->_scenePalette.loadPalette(1550); R2_GLOBALS._sceneManager._hasPalette = true; + } } else { g_globals->_scenePalette.loadPalette(varA); R2_GLOBALS._sceneManager._hasPalette = true; @@ -12951,9 +12954,10 @@ void Scene1950::Area1::process(Event &event) { CursorType cursor = R2_GLOBALS._events.getCursor(); if (_areaActor._bounds.contains(event.mousePos.x + g_globals->gfxManager()._bounds.left , event.mousePos.y)) { - if (cursor == _cursorNum) + if (cursor == _cursorNum) { warning("TODO: _cursorState = ???"); R2_GLOBALS._events.setCursor(_savedCursorNum); //, _cursorState); + } } else if (event.mousePos.y < 168) { if (cursor != _cursorNum) { _savedCursorNum = cursor; @@ -14556,9 +14560,10 @@ void Scene1950::signal() { case 1964: // No break on purpose case 1965: - if (!R2_GLOBALS.getFlag(37)) + if (!R2_GLOBALS.getFlag(37)) { SceneItem::display(1950, 26, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); R2_GLOBALS._player.enableControl(); + } break; case 1966: _actor4.remove(); diff --git a/engines/tsage/sound.cpp b/engines/tsage/sound.cpp index 69a9975ef4..b9567cece2 100644 --- a/engines/tsage/sound.cpp +++ b/engines/tsage/sound.cpp @@ -1494,6 +1494,11 @@ Sound::Sound() { memset(_trkLoopIndex, 0, SOUND_ARR_SIZE * sizeof(int)); memset(_trkRest, 0, SOUND_ARR_SIZE * sizeof(int)); memset(_trkLoopRest, 0, SOUND_ARR_SIZE * sizeof(int)); + for (int i = 0; i < 16; i++) { + _chWork[i] = false; + _trackInfo._chunks[i] = 0; + _trackInfo._voiceTypes[i] = 0; + } } Sound::~Sound() { @@ -2504,6 +2509,7 @@ SoundDriver::SoundDriver() { _driverResID = 0; _minVersion = _maxVersion = 0; _groupMask = 0; + _groupOffset = NULL; } /*--------------------------------------------------------------------------*/ @@ -2568,6 +2574,12 @@ AdlibSoundDriver::AdlibSoundDriver(): SoundDriver() { Common::fill(_pitchBlend, _pitchBlend + ADLIB_CHANNEL_COUNT, 0x2000); memset(_v4409E, 0, ADLIB_CHANNEL_COUNT * sizeof(int)); _patchData = NULL; + for (int i = 0; i < 256; i++) + _portContents[i] = 0; + for (int i = 0; i < 9; i++) { + _channelVoiced[i] = false; + _pitchBlend[i] = 0; + } } AdlibSoundDriver::~AdlibSoundDriver() { @@ -2862,6 +2874,7 @@ SoundBlasterDriver::SoundBlasterDriver(): SoundDriver() { _sampleRate = _mixer->getOutputRate(); _audioStream = NULL; _channelData = NULL; + _channelVolume = 0; } SoundBlasterDriver::~SoundBlasterDriver() { diff --git a/engines/tucker/console.cpp b/engines/tucker/console.cpp index e0f2debc30..17ba2038d0 100644 --- a/engines/tucker/console.cpp +++ b/engines/tucker/console.cpp @@ -11,7 +11,7 @@ * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License @@ -26,6 +26,7 @@ namespace Tucker { TuckerConsole::TuckerConsole(TuckerEngine *vm) : _vm(vm) { + assert(_vm); } TuckerConsole::~TuckerConsole() { diff --git a/engines/tucker/detection.cpp b/engines/tucker/detection.cpp index aeeebe6877..e4a74f6c37 100644 --- a/engines/tucker/detection.cpp +++ b/engines/tucker/detection.cpp @@ -41,7 +41,7 @@ static const ADGameDescription tuckerGameDescriptions[] = { "", AD_ENTRY1s("infobar.txt", "f1e42a95972643462b9c3c2ea79d6683", 543), Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, Tucker::kGameFlagNoSubtitles, GUIO0() }, @@ -50,7 +50,7 @@ static const ADGameDescription tuckerGameDescriptions[] = { "", AD_ENTRY1s("infobar.txt", "9c1ddeafc5283b90d1a284bd0924831c", 462), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, Tucker::kGameFlagEncodedData, GUIO0() }, @@ -59,7 +59,7 @@ static const ADGameDescription tuckerGameDescriptions[] = { "", AD_ENTRY1s("infobar.txt", "1b3ea79d8528ea3c7df83dd0ed345e37", 525), Common::ES_ESP, - Common::kPlatformPC, + Common::kPlatformDOS, Tucker::kGameFlagEncodedData, GUIO0() }, @@ -68,7 +68,7 @@ static const ADGameDescription tuckerGameDescriptions[] = { "", AD_ENTRY1s("infobrgr.txt", "4df9eb65722418d1a1723508115b146c", 552), Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, Tucker::kGameFlagEncodedData, GUIO0() }, @@ -77,7 +77,7 @@ static const ADGameDescription tuckerGameDescriptions[] = { "", AD_ENTRY1s("infobar.txt", "5f85285bbc23ce57cbc164021ee1f23c", 525), Common::PL_POL, - Common::kPlatformPC, + Common::kPlatformDOS, 0, GUIO0() }, @@ -86,7 +86,7 @@ static const ADGameDescription tuckerGameDescriptions[] = { "", AD_ENTRY1s("infobar.txt", "e548994877ff31ca304f6352ce022a8e", 497), Common::CZ_CZE, - Common::kPlatformPC, + Common::kPlatformDOS, Tucker::kGameFlagEncodedData, GUIO0() }, @@ -95,7 +95,7 @@ static const ADGameDescription tuckerGameDescriptions[] = { "Demo", AD_ENTRY1s("infobar.txt", "010b055de42097b140d5bcb6e95a5c7c", 203), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DEMO | Tucker::kGameFlagDemo, GUIO0() }, @@ -107,7 +107,7 @@ static const ADGameDescription tuckerDemoGameDescription = { "Non-Interactive Demo", AD_ENTRY1(0, 0), Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_DEMO | Tucker::kGameFlagDemo | Tucker::kGameFlagIntroOnly, GUIO0() }; diff --git a/engines/wintermute/ad/ad_actor.cpp b/engines/wintermute/ad/ad_actor.cpp index 9879cc9f40..e4c18d6287 100644 --- a/engines/wintermute/ad/ad_actor.cpp +++ b/engines/wintermute/ad/ad_actor.cpp @@ -1320,23 +1320,23 @@ bool AdActor::persist(BasePersistenceManager *persistMgr) { AdTalkHolder::persist(persistMgr); persistMgr->transfer(TMEMBER_INT(_dir)); - persistMgr->transfer(TMEMBER(_path)); + persistMgr->transferPtr(TMEMBER_PTR(_path)); persistMgr->transfer(TMEMBER(_pFCount)); persistMgr->transfer(TMEMBER(_pFStepX)); persistMgr->transfer(TMEMBER(_pFStepY)); persistMgr->transfer(TMEMBER(_pFX)); persistMgr->transfer(TMEMBER(_pFY)); - persistMgr->transfer(TMEMBER(_standSprite)); + persistMgr->transferPtr(TMEMBER_PTR(_standSprite)); _talkSprites.persist(persistMgr); _talkSpritesEx.persist(persistMgr); persistMgr->transfer(TMEMBER_INT(_targetDir)); persistMgr->transfer(TMEMBER_INT(_afterWalkDir)); - persistMgr->transfer(TMEMBER(_targetPoint)); - persistMgr->transfer(TMEMBER(_turnLeftSprite)); - persistMgr->transfer(TMEMBER(_turnRightSprite)); - persistMgr->transfer(TMEMBER(_walkSprite)); + persistMgr->transferPtr(TMEMBER_PTR(_targetPoint)); + persistMgr->transferPtr(TMEMBER_PTR(_turnLeftSprite)); + persistMgr->transferPtr(TMEMBER_PTR(_turnRightSprite)); + persistMgr->transferPtr(TMEMBER_PTR(_walkSprite)); - persistMgr->transfer(TMEMBER(_animSprite2)); + persistMgr->transferPtr(TMEMBER_PTR(_animSprite2)); persistMgr->transfer(TMEMBER(_talkAnimName)); persistMgr->transfer(TMEMBER(_idleAnimName)); persistMgr->transfer(TMEMBER(_walkAnimName)); diff --git a/engines/wintermute/ad/ad_entity.cpp b/engines/wintermute/ad/ad_entity.cpp index 6e47d0f072..c43f74b620 100644 --- a/engines/wintermute/ad/ad_entity.cpp +++ b/engines/wintermute/ad/ad_entity.cpp @@ -1093,7 +1093,7 @@ bool AdEntity::persist(BasePersistenceManager *persistMgr) { AdTalkHolder::persist(persistMgr); persistMgr->transfer(TMEMBER(_item)); - persistMgr->transfer(TMEMBER(_region)); + persistMgr->transferPtr(TMEMBER_PTR(_region)); //persistMgr->transfer(TMEMBER(_sprite)); persistMgr->transfer(TMEMBER_INT(_subtype)); _talkSprites.persist(persistMgr); @@ -1103,7 +1103,7 @@ bool AdEntity::persist(BasePersistenceManager *persistMgr) { persistMgr->transfer(TMEMBER(_walkToY)); persistMgr->transfer(TMEMBER_INT(_walkToDir)); - persistMgr->transfer(TMEMBER(_theora)); + persistMgr->transferPtr(TMEMBER_PTR(_theora)); return STATUS_OK; } diff --git a/engines/wintermute/ad/ad_game.cpp b/engines/wintermute/ad/ad_game.cpp index fac59dc473..ead68f7729 100644 --- a/engines/wintermute/ad/ad_game.cpp +++ b/engines/wintermute/ad/ad_game.cpp @@ -1413,32 +1413,32 @@ bool AdGame::persist(BasePersistenceManager *persistMgr) { _dlgPendingBranches.persist(persistMgr); _inventories.persist(persistMgr); - persistMgr->transfer(TMEMBER(_inventoryBox)); + persistMgr->transferPtr(TMEMBER_PTR(_inventoryBox)); _objects.persist(persistMgr); persistMgr->transfer(TMEMBER(_prevSceneName)); persistMgr->transfer(TMEMBER(_prevSceneFilename)); - persistMgr->transfer(TMEMBER(_responseBox)); + persistMgr->transferPtr(TMEMBER_PTR(_responseBox)); _responsesBranch.persist(persistMgr); _responsesGame.persist(persistMgr); - persistMgr->transfer(TMEMBER(_scene)); + persistMgr->transferPtr(TMEMBER_PTR(_scene)); _sceneStates.persist(persistMgr); persistMgr->transfer(TMEMBER(_scheduledFadeIn)); persistMgr->transfer(TMEMBER(_scheduledScene)); - persistMgr->transfer(TMEMBER(_selectedItem)); + persistMgr->transferPtr(TMEMBER_PTR(_selectedItem)); persistMgr->transfer(TMEMBER_INT(_talkSkipButton)); _sentences.persist(persistMgr); - persistMgr->transfer(TMEMBER(_sceneViewport)); + persistMgr->transferPtr(TMEMBER_PTR(_sceneViewport)); persistMgr->transfer(TMEMBER_INT(_stateEx)); persistMgr->transfer(TMEMBER(_initialScene)); persistMgr->transfer(TMEMBER(_debugStartupScene)); - persistMgr->transfer(TMEMBER(_invObject)); - persistMgr->transfer(TMEMBER(_inventoryOwner)); + persistMgr->transferPtr(TMEMBER_PTR(_invObject)); + persistMgr->transferPtr(TMEMBER_PTR(_inventoryOwner)); persistMgr->transfer(TMEMBER(_tempDisableSaveState)); _items.persist(persistMgr); diff --git a/engines/wintermute/ad/ad_inventory_box.cpp b/engines/wintermute/ad/ad_inventory_box.cpp index 4bb0905688..110359917b 100644 --- a/engines/wintermute/ad/ad_inventory_box.cpp +++ b/engines/wintermute/ad/ad_inventory_box.cpp @@ -84,7 +84,7 @@ bool AdInventoryBox::listen(BaseScriptHolder *param1, uint32 param2) { _visible = false; } else if (scumm_stricmp(obj->getName(), "prev") == 0) { _scrollOffset -= _scrollBy; - _scrollOffset = MAX(_scrollOffset, 0); + _scrollOffset = MAX<int32>(_scrollOffset, 0); } else if (scumm_stricmp(obj->getName(), "next") == 0) { _scrollOffset += _scrollBy; } else { @@ -371,7 +371,7 @@ bool AdInventoryBox::saveAsText(BaseDynamicBuffer *buffer, int indent) { bool AdInventoryBox::persist(BasePersistenceManager *persistMgr) { BaseObject::persist(persistMgr); - persistMgr->transfer(TMEMBER(_closeButton)); + persistMgr->transferPtr(TMEMBER_PTR(_closeButton)); persistMgr->transfer(TMEMBER(_hideSelected)); persistMgr->transfer(TMEMBER(_itemHeight)); persistMgr->transfer(TMEMBER(_itemsArea)); @@ -380,7 +380,7 @@ bool AdInventoryBox::persist(BasePersistenceManager *persistMgr) { persistMgr->transfer(TMEMBER(_scrollOffset)); persistMgr->transfer(TMEMBER(_spacing)); persistMgr->transfer(TMEMBER(_visible)); - persistMgr->transfer(TMEMBER(_window)); + persistMgr->transferPtr(TMEMBER_PTR(_window)); persistMgr->transfer(TMEMBER(_exclusive)); return STATUS_OK; diff --git a/engines/wintermute/ad/ad_item.cpp b/engines/wintermute/ad/ad_item.cpp index 578105105c..1a46eb783b 100644 --- a/engines/wintermute/ad/ad_item.cpp +++ b/engines/wintermute/ad/ad_item.cpp @@ -784,9 +784,9 @@ bool AdItem::persist(BasePersistenceManager *persistMgr) { AdTalkHolder::persist(persistMgr); persistMgr->transfer(TMEMBER(_cursorCombined)); - persistMgr->transfer(TMEMBER(_cursorHover)); - persistMgr->transfer(TMEMBER(_cursorNormal)); - persistMgr->transfer(TMEMBER(_spriteHover)); + persistMgr->transferPtr(TMEMBER_PTR(_cursorHover)); + persistMgr->transferPtr(TMEMBER_PTR(_cursorNormal)); + persistMgr->transferPtr(TMEMBER_PTR(_spriteHover)); persistMgr->transfer(TMEMBER(_inInventory)); persistMgr->transfer(TMEMBER(_displayAmount)); persistMgr->transfer(TMEMBER(_amount)); diff --git a/engines/wintermute/ad/ad_node_state.cpp b/engines/wintermute/ad/ad_node_state.cpp index c741dec54f..d52201a08d 100644 --- a/engines/wintermute/ad/ad_node_state.cpp +++ b/engines/wintermute/ad/ad_node_state.cpp @@ -93,7 +93,7 @@ void AdNodeState::setCursor(const char *filename) { ////////////////////////////////////////////////////////////////////////// bool AdNodeState::persist(BasePersistenceManager *persistMgr) { - persistMgr->transfer(TMEMBER(_gameRef)); + persistMgr->transferPtr(TMEMBER_PTR(_gameRef)); persistMgr->transfer(TMEMBER(_active)); persistMgr->transfer(TMEMBER(_name)); diff --git a/engines/wintermute/ad/ad_object.cpp b/engines/wintermute/ad/ad_object.cpp index 9026b2849c..741d6e6fc6 100644 --- a/engines/wintermute/ad/ad_object.cpp +++ b/engines/wintermute/ad/ad_object.cpp @@ -864,14 +864,14 @@ int AdObject::getHeight() { return 0; } else { BaseFrame *frame = _currentSprite->_frames[_currentSprite->_currentFrame]; - int ret = 0; + int32 ret = 0; for (uint32 i = 0; i < frame->_subframes.size(); i++) { ret = MAX(ret, frame->_subframes[i]->_hotspotY); } if (_zoomable) { float zoom = ((AdGame *)_gameRef)->_scene->getZoomAt(_posX, _posY); - ret = (int)(ret * zoom / 100); + ret = (int32)(ret * zoom / 100); } return ret; } @@ -941,11 +941,11 @@ void AdObject::talk(const char *text, const char *sound, uint32 duration, const // set duration by text length if (_sentence->_duration <= 0) {// TODO: Avoid longs. - _sentence->_duration = MAX((size_t)1000, _gameRef->_subtitlesSpeed * strlen(_sentence->_text)); + _sentence->_duration = MAX<int32>((size_t)1000, _gameRef->_subtitlesSpeed * strlen(_sentence->_text)); } - int x, y, width, height; + int32 x, y, width, height; x = _posX; y = _posY; @@ -981,8 +981,8 @@ void AdObject::talk(const char *text, const char *sound, uint32 duration, const } - x = MIN(MAX(0, x), _gameRef->_renderer->getWidth() - width); - y = MIN(MAX(0, y), _gameRef->_renderer->getHeight() - height); + x = MIN(MAX<int32>(0, x), _gameRef->_renderer->getWidth() - width); + y = MIN(MAX<int32>(0, y), _gameRef->_renderer->getHeight() - height); _sentence->_width = width; @@ -1031,39 +1031,39 @@ bool AdObject::persist(BasePersistenceManager *persistMgr) { BaseObject::persist(persistMgr); persistMgr->transfer(TMEMBER(_active)); - persistMgr->transfer(TMEMBER(_blockRegion)); - persistMgr->transfer(TMEMBER(_currentBlockRegion)); - persistMgr->transfer(TMEMBER(_currentWptGroup)); - persistMgr->transfer(TMEMBER(_currentSprite)); + persistMgr->transferPtr(TMEMBER_PTR(_blockRegion)); + persistMgr->transferPtr(TMEMBER_PTR(_currentBlockRegion)); + persistMgr->transferPtr(TMEMBER_PTR(_currentWptGroup)); + persistMgr->transferPtr(TMEMBER_PTR(_currentSprite)); persistMgr->transfer(TMEMBER(_drawn)); - persistMgr->transfer(TMEMBER(_font)); + persistMgr->transferPtr(TMEMBER_PTR(_font)); persistMgr->transfer(TMEMBER(_ignoreItems)); persistMgr->transfer(TMEMBER_INT(_nextState)); - persistMgr->transfer(TMEMBER(_sentence)); + persistMgr->transferPtr(TMEMBER_PTR(_sentence)); persistMgr->transfer(TMEMBER_INT(_state)); - persistMgr->transfer(TMEMBER(_animSprite)); + persistMgr->transferPtr(TMEMBER_PTR(_animSprite)); persistMgr->transfer(TMEMBER(_sceneIndependent)); persistMgr->transfer(TMEMBER(_forcedTalkAnimName)); persistMgr->transfer(TMEMBER(_forcedTalkAnimUsed)); - persistMgr->transfer(TMEMBER(_tempSprite2)); + persistMgr->transferPtr(TMEMBER_PTR(_tempSprite2)); persistMgr->transfer(TMEMBER_INT(_type)); - persistMgr->transfer(TMEMBER(_wptGroup)); - persistMgr->transfer(TMEMBER(_stickRegion)); + persistMgr->transferPtr(TMEMBER_PTR(_wptGroup)); + persistMgr->transferPtr(TMEMBER_PTR(_stickRegion)); persistMgr->transfer(TMEMBER(_subtitlesModRelative)); persistMgr->transfer(TMEMBER(_subtitlesModX)); persistMgr->transfer(TMEMBER(_subtitlesModY)); persistMgr->transfer(TMEMBER(_subtitlesModXCenter)); persistMgr->transfer(TMEMBER(_subtitlesWidth)); - persistMgr->transfer(TMEMBER(_inventory)); - persistMgr->transfer(TMEMBER(_partEmitter)); + persistMgr->transferPtr(TMEMBER_PTR(_inventory)); + persistMgr->transferPtr(TMEMBER_PTR(_partEmitter)); for (int i = 0; i < MAX_NUM_REGIONS; i++) { - persistMgr->transfer(TMEMBER(_currentRegions[i])); + persistMgr->transferPtr(TMEMBER_PTR(_currentRegions[i])); } _attachmentsPre.persist(persistMgr); _attachmentsPost.persist(persistMgr); - persistMgr->transfer(TMEMBER(_registerAlias)); + persistMgr->transferPtr(TMEMBER_PTR(_registerAlias)); persistMgr->transfer(TMEMBER(_partFollowParent)); persistMgr->transfer(TMEMBER(_partOffsetX)); diff --git a/engines/wintermute/ad/ad_path.cpp b/engines/wintermute/ad/ad_path.cpp index afdd29828c..5b36ed6471 100644 --- a/engines/wintermute/ad/ad_path.cpp +++ b/engines/wintermute/ad/ad_path.cpp @@ -108,7 +108,7 @@ bool AdPath::setReady(bool ready) { ////////////////////////////////////////////////////////////////////////// bool AdPath::persist(BasePersistenceManager *persistMgr) { - persistMgr->transfer(TMEMBER(_gameRef)); + persistMgr->transferPtr(TMEMBER_PTR(_gameRef)); persistMgr->transfer(TMEMBER(_currIndex)); _points.persist(persistMgr); diff --git a/engines/wintermute/ad/ad_path_point.cpp b/engines/wintermute/ad/ad_path_point.cpp index f3ccd264b1..be4b487466 100644 --- a/engines/wintermute/ad/ad_path_point.cpp +++ b/engines/wintermute/ad/ad_path_point.cpp @@ -67,7 +67,7 @@ bool AdPathPoint::persist(BasePersistenceManager *persistMgr) { persistMgr->transfer(TMEMBER(_distance)); persistMgr->transfer(TMEMBER(_marked)); - persistMgr->transfer(TMEMBER(_origin)); + persistMgr->transferPtr(TMEMBER_PTR(_origin)); return STATUS_OK; } diff --git a/engines/wintermute/ad/ad_response.cpp b/engines/wintermute/ad/ad_response.cpp index 0e6817ae6f..4483bbc667 100644 --- a/engines/wintermute/ad/ad_response.cpp +++ b/engines/wintermute/ad/ad_response.cpp @@ -131,14 +131,14 @@ bool AdResponse::persist(BasePersistenceManager *persistMgr) { BaseObject::persist(persistMgr); - persistMgr->transfer(TMEMBER(_icon)); - persistMgr->transfer(TMEMBER(_iconHover)); - persistMgr->transfer(TMEMBER(_iconPressed)); + persistMgr->transferPtr(TMEMBER_PTR(_icon)); + persistMgr->transferPtr(TMEMBER_PTR(_iconHover)); + persistMgr->transferPtr(TMEMBER_PTR(_iconPressed)); persistMgr->transfer(TMEMBER(_iD)); persistMgr->transfer(TMEMBER(_text)); persistMgr->transfer(TMEMBER(_textOrig)); persistMgr->transfer(TMEMBER_INT(_responseType)); - persistMgr->transfer(TMEMBER(_font)); + persistMgr->transferPtr(TMEMBER_PTR(_font)); return STATUS_OK; } diff --git a/engines/wintermute/ad/ad_response_box.cpp b/engines/wintermute/ad/ad_response_box.cpp index a4e59c6a49..a589bf3a30 100644 --- a/engines/wintermute/ad/ad_response_box.cpp +++ b/engines/wintermute/ad/ad_response_box.cpp @@ -187,7 +187,7 @@ bool AdResponseBox::createButtons() { // make the responses touchable if (_gameRef->_touchInterface) { - btn->_height = MAX(btn->_height, 50); + btn->_height = MAX<int32>(btn->_height, 50); } //btn->SetListener(this, btn, _responses[i]->_iD); @@ -573,8 +573,8 @@ bool AdResponseBox::listen(BaseScriptHolder *param1, uint32 param2) { bool AdResponseBox::persist(BasePersistenceManager *persistMgr) { BaseObject::persist(persistMgr); - persistMgr->transfer(TMEMBER(_font)); - persistMgr->transfer(TMEMBER(_fontHover)); + persistMgr->transferPtr(TMEMBER_PTR(_font)); + persistMgr->transferPtr(TMEMBER_PTR(_fontHover)); persistMgr->transfer(TMEMBER(_horizontal)); persistMgr->transfer(TMEMBER(_lastResponseText)); persistMgr->transfer(TMEMBER(_lastResponseTextOrig)); @@ -582,10 +582,10 @@ bool AdResponseBox::persist(BasePersistenceManager *persistMgr) { persistMgr->transfer(TMEMBER(_responseArea)); _responses.persist(persistMgr); persistMgr->transfer(TMEMBER(_scrollOffset)); - persistMgr->transfer(TMEMBER(_shieldWindow)); + persistMgr->transferPtr(TMEMBER_PTR(_shieldWindow)); persistMgr->transfer(TMEMBER(_spacing)); - persistMgr->transfer(TMEMBER(_waitingScript)); - persistMgr->transfer(TMEMBER(_window)); + persistMgr->transferPtr(TMEMBER_PTR(_waitingScript)); + persistMgr->transferPtr(TMEMBER_PTR(_window)); persistMgr->transfer(TMEMBER_INT(_verticalAlign)); persistMgr->transfer(TMEMBER_INT(_align)); diff --git a/engines/wintermute/ad/ad_response_context.cpp b/engines/wintermute/ad/ad_response_context.cpp index d87651c178..663ef49a24 100644 --- a/engines/wintermute/ad/ad_response_context.cpp +++ b/engines/wintermute/ad/ad_response_context.cpp @@ -49,7 +49,7 @@ AdResponseContext::~AdResponseContext() { ////////////////////////////////////////////////////////////////////////// bool AdResponseContext::persist(BasePersistenceManager *persistMgr) { - persistMgr->transfer(TMEMBER(_gameRef)); + persistMgr->transferPtr(TMEMBER_PTR(_gameRef)); persistMgr->transfer(TMEMBER(_context)); persistMgr->transfer(TMEMBER(_id)); diff --git a/engines/wintermute/ad/ad_scene.cpp b/engines/wintermute/ad/ad_scene.cpp index 699ef0685d..4d0068fad1 100644 --- a/engines/wintermute/ad/ad_scene.cpp +++ b/engines/wintermute/ad/ad_scene.cpp @@ -976,14 +976,14 @@ bool AdScene::traverseNodes(bool doUpdate) { ////////////////////////////////////////////////////////////////////////// - int viewportWidth, viewportHeight; + int32 viewportWidth, viewportHeight; getViewportSize(&viewportWidth, &viewportHeight); - int viewportX, viewportY; + int32 viewportX, viewportY; getViewportOffset(&viewportX, &viewportY); - int scrollableX = _width - viewportWidth; - int scrollableY = _height - viewportHeight; + int32 scrollableX = _width - viewportWidth; + int32 scrollableY = _height - viewportHeight; double widthRatio = scrollableX <= 0 ? 0 : ((double)(_offsetLeft) / (double)scrollableX); double heightRatio = scrollableY <= 0 ? 0 : ((double)(_offsetTop) / (double)scrollableY); @@ -1272,16 +1272,16 @@ bool AdScene::update() { ////////////////////////////////////////////////////////////////////////// void AdScene::scrollTo(int offsetX, int offsetY) { - int viewportWidth, viewportHeight; + int32 viewportWidth, viewportHeight; getViewportSize(&viewportWidth, &viewportHeight); - int origOffsetLeft = _targetOffsetLeft; - int origOffsetTop = _targetOffsetTop; + int32 origOffsetLeft = _targetOffsetLeft; + int32 origOffsetTop = _targetOffsetTop; - _targetOffsetLeft = MAX(0, offsetX - viewportWidth / 2); + _targetOffsetLeft = MAX<int32>(0, offsetX - viewportWidth / 2); _targetOffsetLeft = MIN(_targetOffsetLeft, _width - viewportWidth); - _targetOffsetTop = MAX(0, offsetY - viewportHeight / 2); + _targetOffsetTop = MAX<int32>(0, offsetY - viewportHeight / 2); _targetOffsetTop = MIN(_targetOffsetTop, _height - viewportHeight); @@ -1317,13 +1317,13 @@ void AdScene::skipToObject(BaseObject *object) { ////////////////////////////////////////////////////////////////////////// void AdScene::skipTo(int offsetX, int offsetY) { - int viewportWidth, viewportHeight; + int32 viewportWidth, viewportHeight; getViewportSize(&viewportWidth, &viewportHeight); - _offsetLeft = MAX(0, offsetX - viewportWidth / 2); + _offsetLeft = MAX<int32>(0, offsetX - viewportWidth / 2); _offsetLeft = MIN(_offsetLeft, _width - viewportWidth); - _offsetTop = MAX(0, offsetY - viewportHeight / 2); + _offsetTop = MAX<int32>(0, offsetY - viewportHeight / 2); _offsetTop = MIN(_offsetTop, _height - viewportHeight); _targetOffsetLeft = _offsetLeft; @@ -1866,7 +1866,7 @@ ScValue *AdScene::scGetProperty(const Common::String &name) { // MouseX (RO) ////////////////////////////////////////////////////////////////////////// else if (name == "MouseX") { - int viewportX; + int32 viewportX; getViewportOffset(&viewportX); _scValue->setInt(_gameRef->_mousePos.x + _offsetLeft - viewportX); @@ -1877,7 +1877,7 @@ ScValue *AdScene::scGetProperty(const Common::String &name) { // MouseY (RO) ////////////////////////////////////////////////////////////////////////// else if (name == "MouseY") { - int viewportY; + int32 viewportY; getViewportOffset(nullptr, &viewportY); _scValue->setInt(_gameRef->_mousePos.y + _offsetTop - viewportY); @@ -2057,10 +2057,10 @@ bool AdScene::scSetProperty(const char *name, ScValue *value) { else if (strcmp(name, "OffsetX") == 0) { _offsetLeft = value->getInt(); - int viewportWidth, viewportHeight; + int32 viewportWidth, viewportHeight; getViewportSize(&viewportWidth, &viewportHeight); - _offsetLeft = MAX(0, _offsetLeft - viewportWidth / 2); + _offsetLeft = MAX<int32>(0, _offsetLeft - viewportWidth / 2); _offsetLeft = MIN(_offsetLeft, _width - viewportWidth); _targetOffsetLeft = _offsetLeft; @@ -2073,10 +2073,10 @@ bool AdScene::scSetProperty(const char *name, ScValue *value) { else if (strcmp(name, "OffsetY") == 0) { _offsetTop = value->getInt(); - int viewportWidth, viewportHeight; + int32 viewportWidth, viewportHeight; getViewportSize(&viewportWidth, &viewportHeight); - _offsetTop = MAX(0, _offsetTop - viewportHeight / 2); + _offsetTop = MAX<int32>(0, _offsetTop - viewportHeight / 2); _offsetTop = MIN(_offsetTop, _height - viewportHeight); _targetOffsetTop = _offsetTop; @@ -2319,13 +2319,13 @@ bool AdScene::persist(BasePersistenceManager *persistMgr) { persistMgr->transfer(TMEMBER(_editorShowEntities)); persistMgr->transfer(TMEMBER(_editorShowRegions)); persistMgr->transfer(TMEMBER(_editorShowScale)); - persistMgr->transfer(TMEMBER(_fader)); + persistMgr->transferPtr(TMEMBER_PTR(_fader)); persistMgr->transfer(TMEMBER(_height)); persistMgr->transfer(TMEMBER(_initialized)); persistMgr->transfer(TMEMBER(_lastTimeH)); persistMgr->transfer(TMEMBER(_lastTimeV)); _layers.persist(persistMgr); - persistMgr->transfer(TMEMBER(_mainLayer)); + persistMgr->transferPtr(TMEMBER_PTR(_mainLayer)); _objects.persist(persistMgr); persistMgr->transfer(TMEMBER(_offsetLeft)); persistMgr->transfer(TMEMBER(_offsetTop)); @@ -2336,20 +2336,20 @@ bool AdScene::persist(BasePersistenceManager *persistMgr) { _pfPath.persist(persistMgr); persistMgr->transfer(TMEMBER(_pfPointsNum)); persistMgr->transfer(TMEMBER(_pfReady)); - persistMgr->transfer(TMEMBER(_pfRequester)); - persistMgr->transfer(TMEMBER(_pfTarget)); - persistMgr->transfer(TMEMBER(_pfTargetPath)); + persistMgr->transferPtr(TMEMBER_PTR(_pfRequester)); + persistMgr->transferPtr(TMEMBER_PTR(_pfTarget)); + persistMgr->transferPtr(TMEMBER_PTR(_pfTargetPath)); _rotLevels.persist(persistMgr); _scaleLevels.persist(persistMgr); persistMgr->transfer(TMEMBER(_scrollPixelsH)); persistMgr->transfer(TMEMBER(_scrollPixelsV)); persistMgr->transfer(TMEMBER(_scrollTimeH)); persistMgr->transfer(TMEMBER(_scrollTimeV)); - persistMgr->transfer(TMEMBER(_shieldWindow)); + persistMgr->transferPtr(TMEMBER_PTR(_shieldWindow)); persistMgr->transfer(TMEMBER(_targetOffsetLeft)); persistMgr->transfer(TMEMBER(_targetOffsetTop)); _waypointGroups.persist(persistMgr); - persistMgr->transfer(TMEMBER(_viewport)); + persistMgr->transferPtr(TMEMBER_PTR(_viewport)); persistMgr->transfer(TMEMBER(_width)); return STATUS_OK; @@ -2361,10 +2361,10 @@ bool AdScene::afterLoad() { } ////////////////////////////////////////////////////////////////////////// -bool AdScene::correctTargetPoint2(int startX, int startY, int *targetX, int *targetY, bool checkFreeObjects, BaseObject *requester) { +bool AdScene::correctTargetPoint2(int32 startX, int32 startY, int32 *targetX, int32 *targetY, bool checkFreeObjects, BaseObject *requester) { double xStep, yStep, x, y; - int xLength, yLength, xCount, yCount; - int x1, y1, x2, y2; + int32 xLength, yLength, xCount, yCount; + int32 x1, y1, x2, y2; x1 = *targetX; y1 = *targetY; @@ -2407,9 +2407,9 @@ bool AdScene::correctTargetPoint2(int startX, int startY, int *targetX, int *tar } ////////////////////////////////////////////////////////////////////////// -bool AdScene::correctTargetPoint(int startX, int startY, int *argX, int *argY, bool checkFreeObjects, BaseObject *requester) { - int x = *argX; - int y = *argY; +bool AdScene::correctTargetPoint(int32 startX, int32 startY, int32 *argX, int32 *argY, bool checkFreeObjects, BaseObject *requester) { + int32 x = *argX; + int32 y = *argY; if (isWalkableAt(x, y, checkFreeObjects, requester) || !_mainLayer) { return STATUS_OK; @@ -2522,7 +2522,7 @@ void AdScene::pfPointsAdd(int x, int y, int distance) { ////////////////////////////////////////////////////////////////////////// -bool AdScene::getViewportOffset(int *offsetX, int *offsetY) { +bool AdScene::getViewportOffset(int32 *offsetX, int32 *offsetY) { AdGame *adGame = (AdGame *)_gameRef; if (_viewport && !_gameRef->_editorMode) { if (offsetX) { @@ -2551,7 +2551,7 @@ bool AdScene::getViewportOffset(int *offsetX, int *offsetY) { ////////////////////////////////////////////////////////////////////////// -bool AdScene::getViewportSize(int *width, int *height) { +bool AdScene::getViewportSize(int32 *width, int32 *height) { AdGame *adGame = (AdGame *)_gameRef; if (_viewport && !_gameRef->_editorMode) { if (width) { @@ -2581,7 +2581,7 @@ bool AdScene::getViewportSize(int *width, int *height) { ////////////////////////////////////////////////////////////////////////// int AdScene::getOffsetLeft() { - int viewportX; + int32 viewportX; getViewportOffset(&viewportX); return _offsetLeft - viewportX; @@ -2590,7 +2590,7 @@ int AdScene::getOffsetLeft() { ////////////////////////////////////////////////////////////////////////// int AdScene::getOffsetTop() { - int viewportY; + int32 viewportY; getViewportOffset(nullptr, &viewportY); return _offsetTop - viewportY; @@ -2599,7 +2599,7 @@ int AdScene::getOffsetTop() { ////////////////////////////////////////////////////////////////////////// bool AdScene::pointInViewport(int x, int y) { - int left, top, width, height; + int32 left, top, width, height; getViewportOffset(&left, &top); getViewportSize(&width, &height); diff --git a/engines/wintermute/ad/ad_scene.h b/engines/wintermute/ad/ad_scene.h index 9ddef73b65..cd144b77ef 100644 --- a/engines/wintermute/ad/ad_scene.h +++ b/engines/wintermute/ad/ad_scene.h @@ -67,16 +67,16 @@ public: bool pointInViewport(int x, int y); int getOffsetTop(); int getOffsetLeft(); - bool getViewportSize(int *width = nullptr, int *height = nullptr); - bool getViewportOffset(int *offsetX = nullptr, int *offsetY = nullptr); + bool getViewportSize(int32 *width = nullptr, int32 *height = nullptr); + bool getViewportOffset(int32 *offsetX = nullptr, int32 *offsetY = nullptr); BaseViewport *_viewport; BaseFader *_fader; - int _pfPointsNum; + int32 _pfPointsNum; void pfPointsAdd(int x, int y, int distance); void pfPointsStart(); bool _initialized; - bool correctTargetPoint(int startX, int startY, int *x, int *y, bool checkFreeObjects = false, BaseObject *requester = nullptr); - bool correctTargetPoint2(int startX, int startY, int *targetX, int *targetY, bool checkFreeObjects, BaseObject *requester); + bool correctTargetPoint(int32 startX, int32 startY, int32 *x, int32 *y, bool checkFreeObjects = false, BaseObject *requester = nullptr); + bool correctTargetPoint2(int32 startX, int32 startY, int32 *targetX, int32 *targetY, bool checkFreeObjects, BaseObject *requester); DECLARE_PERSISTENT(AdScene, BaseObject) bool displayRegionContent(AdRegion *region = nullptr, bool display3DOnly = false); bool displayRegionContentOld(AdRegion *region = nullptr); @@ -98,14 +98,14 @@ public: void scrollTo(int offsetX, int offsetY); virtual bool update() override; bool _autoScroll; - int _targetOffsetTop; - int _targetOffsetLeft; + int32 _targetOffsetTop; + int32 _targetOffsetLeft; - int _scrollPixelsV; + int32 _scrollPixelsV; uint32 _scrollTimeV; uint32 _lastTimeV; - int _scrollPixelsH; + int32 _scrollPixelsH; uint32 _scrollTimeH; uint32 _lastTimeH; @@ -171,8 +171,8 @@ private: BaseObject *_pfRequester; BaseArray<AdPathPoint *> _pfPath; - int _offsetTop; - int _offsetLeft; + int32 _offsetTop; + int32 _offsetLeft; }; diff --git a/engines/wintermute/ad/ad_scene_node.cpp b/engines/wintermute/ad/ad_scene_node.cpp index f84e9212e5..e9b80b3cc8 100644 --- a/engines/wintermute/ad/ad_scene_node.cpp +++ b/engines/wintermute/ad/ad_scene_node.cpp @@ -72,8 +72,8 @@ bool AdSceneNode::persist(BasePersistenceManager *persistMgr) { BaseObject::persist(persistMgr); - persistMgr->transfer(TMEMBER(_entity)); - persistMgr->transfer(TMEMBER(_region)); + persistMgr->transferPtr(TMEMBER_PTR(_entity)); + persistMgr->transferPtr(TMEMBER_PTR(_region)); persistMgr->transfer(TMEMBER_INT(_type)); return STATUS_OK; diff --git a/engines/wintermute/ad/ad_sentence.cpp b/engines/wintermute/ad/ad_sentence.cpp index 9192b74c4e..70a57a624d 100644 --- a/engines/wintermute/ad/ad_sentence.cpp +++ b/engines/wintermute/ad/ad_sentence.cpp @@ -204,8 +204,8 @@ bool AdSentence::display() { } if (_gameRef->_subtitles) { - int x = _pos.x; - int y = _pos.y; + int32 x = _pos.x; + int32 y = _pos.y; if (!_fixedPos) { x = x - ((AdGame *)_gameRef)->_scene->getOffsetLeft(); @@ -213,9 +213,9 @@ bool AdSentence::display() { } - x = MAX(x, 0); + x = MAX<int32>(x, 0); x = MIN(x, _gameRef->_renderer->getWidth() - _width); - y = MAX(y, 0); + y = MAX<int32>(y, 0); _font->drawText((byte *)_text, x, y, _width, _align); } @@ -247,20 +247,20 @@ bool AdSentence::finish() { ////////////////////////////////////////////////////////////////////////// bool AdSentence::persist(BasePersistenceManager *persistMgr) { - persistMgr->transfer(TMEMBER(_gameRef)); + persistMgr->transferPtr(TMEMBER_PTR(_gameRef)); persistMgr->transfer(TMEMBER_INT(_align)); persistMgr->transfer(TMEMBER(_currentStance)); - persistMgr->transfer(TMEMBER(_currentSprite)); + persistMgr->transferPtr(TMEMBER_PTR(_currentSprite)); persistMgr->transfer(TMEMBER(_currentSkelAnim)); persistMgr->transfer(TMEMBER(_duration)); - persistMgr->transfer(TMEMBER(_font)); + persistMgr->transferPtr(TMEMBER_PTR(_font)); persistMgr->transfer(TMEMBER(_pos)); - persistMgr->transfer(TMEMBER(_sound)); + persistMgr->transferPtr(TMEMBER_PTR(_sound)); persistMgr->transfer(TMEMBER(_soundStarted)); persistMgr->transfer(TMEMBER(_stances)); persistMgr->transfer(TMEMBER(_startTime)); - persistMgr->transfer(TMEMBER(_talkDef)); + persistMgr->transferPtr(TMEMBER_PTR(_talkDef)); persistMgr->transfer(TMEMBER(_tempStance)); persistMgr->transfer(TMEMBER(_text)); persistMgr->transfer(TMEMBER(_width)); diff --git a/engines/wintermute/ad/ad_sprite_set.cpp b/engines/wintermute/ad/ad_sprite_set.cpp index ffa7bb2530..6c802c4863 100644 --- a/engines/wintermute/ad/ad_sprite_set.cpp +++ b/engines/wintermute/ad/ad_sprite_set.cpp @@ -249,9 +249,9 @@ bool AdSpriteSet::persist(BasePersistenceManager *persistMgr) { BaseObject::persist(persistMgr); - persistMgr->transfer(TMEMBER(_owner)); + persistMgr->transferPtr(TMEMBER_PTR(_owner)); for (int i = 0; i < NUM_DIRECTIONS; i++) { - persistMgr->transfer("", &_sprites[i]); + persistMgr->transferPtr("", &_sprites[i]); } return STATUS_OK; diff --git a/engines/wintermute/ad/ad_talk_def.cpp b/engines/wintermute/ad/ad_talk_def.cpp index 4ad5d2ccc6..bf72b2916b 100644 --- a/engines/wintermute/ad/ad_talk_def.cpp +++ b/engines/wintermute/ad/ad_talk_def.cpp @@ -208,9 +208,9 @@ bool AdTalkDef::persist(BasePersistenceManager *persistMgr) { BaseObject::persist(persistMgr); - persistMgr->transfer(TMEMBER(_defaultSprite)); + persistMgr->transferPtr(TMEMBER_PTR(_defaultSprite)); persistMgr->transfer(TMEMBER(_defaultSpriteFilename)); - persistMgr->transfer(TMEMBER(_defaultSpriteSet)); + persistMgr->transferPtr(TMEMBER_PTR(_defaultSpriteSet)); persistMgr->transfer(TMEMBER(_defaultSpriteSetFilename)); _nodes.persist(persistMgr); diff --git a/engines/wintermute/ad/ad_talk_holder.cpp b/engines/wintermute/ad/ad_talk_holder.cpp index ed2333a345..33deab7805 100644 --- a/engines/wintermute/ad/ad_talk_holder.cpp +++ b/engines/wintermute/ad/ad_talk_holder.cpp @@ -392,7 +392,7 @@ bool AdTalkHolder::saveAsText(BaseDynamicBuffer *buffer, int indent) { bool AdTalkHolder::persist(BasePersistenceManager *persistMgr) { AdObject::persist(persistMgr); - persistMgr->transfer(TMEMBER(_sprite)); + persistMgr->transferPtr(TMEMBER_PTR(_sprite)); _talkSprites.persist(persistMgr); _talkSpritesEx.persist(persistMgr); diff --git a/engines/wintermute/ad/ad_talk_node.cpp b/engines/wintermute/ad/ad_talk_node.cpp index 2e0985ed99..f03c24ea94 100644 --- a/engines/wintermute/ad/ad_talk_node.cpp +++ b/engines/wintermute/ad/ad_talk_node.cpp @@ -195,9 +195,9 @@ bool AdTalkNode::persist(BasePersistenceManager *persistMgr) { persistMgr->transfer(TMEMBER(_startTime)); persistMgr->transfer(TMEMBER(_endTime)); persistMgr->transfer(TMEMBER(_playToEnd)); - persistMgr->transfer(TMEMBER(_sprite)); + persistMgr->transferPtr(TMEMBER_PTR(_sprite)); persistMgr->transfer(TMEMBER(_spriteFilename)); - persistMgr->transfer(TMEMBER(_spriteSet)); + persistMgr->transferPtr(TMEMBER_PTR(_spriteSet)); persistMgr->transfer(TMEMBER(_spriteSetFilename)); return STATUS_OK; diff --git a/engines/wintermute/base/base_frame.cpp b/engines/wintermute/base/base_frame.cpp index 382e8acbe0..9fb5770f79 100644 --- a/engines/wintermute/base/base_frame.cpp +++ b/engines/wintermute/base/base_frame.cpp @@ -420,7 +420,7 @@ bool BaseFrame::persist(BasePersistenceManager *persistMgr) { persistMgr->transfer(TMEMBER(_killSound)); persistMgr->transfer(TMEMBER(_moveX)); persistMgr->transfer(TMEMBER(_moveY)); - persistMgr->transfer(TMEMBER(_sound)); + persistMgr->transferPtr(TMEMBER_PTR(_sound)); _subframes.persist(persistMgr); return STATUS_OK; diff --git a/engines/wintermute/base/base_game.cpp b/engines/wintermute/base/base_game.cpp index 0f2a3d1260..e97e342149 100644 --- a/engines/wintermute/base/base_game.cpp +++ b/engines/wintermute/base/base_game.cpp @@ -602,7 +602,7 @@ int BaseGame::getSequence() { ////////////////////////////////////////////////////////////////////////// -void BaseGame::setOffset(int offsetX, int offsetY) { +void BaseGame::setOffset(int32 offsetX, int32 offsetY) { _offsetX = offsetX; _offsetY = offsetY; } @@ -1090,11 +1090,11 @@ bool BaseGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack ////////////////////////////////////////////////////////////////////////// else if (strcmp(name, "SetMousePos") == 0) { stack->correctParams(2); - int x = stack->pop()->getInt(); - int y = stack->pop()->getInt(); - x = MAX(x, 0); + int32 x = stack->pop()->getInt(); + int32 y = stack->pop()->getInt(); + x = MAX<int32>(x, 0); x = MIN(x, _renderer->getWidth()); - y = MAX(y, 0); + y = MAX<int32>(y, 0); y = MIN(y, _renderer->getHeight()); Point32 p; p.x = x + _renderer->_drawOffsetX; @@ -2486,7 +2486,7 @@ bool BaseGame::scSetProperty(const char *name, ScValue *value) { ////////////////////////////////////////////////////////////////////////// else if (strcmp(name, "SoundBufferSize") == 0) { _soundBufferSizeSec = value->getInt(); - _soundBufferSizeSec = MAX(3, _soundBufferSizeSec); + _soundBufferSizeSec = MAX<int32>(3, _soundBufferSizeSec); return STATUS_OK; } @@ -2995,7 +2995,7 @@ bool BaseGame::showCursor() { ////////////////////////////////////////////////////////////////////////// -bool BaseGame::saveGame(int slot, const char *desc, bool quickSave) { +bool BaseGame::saveGame(int32 slot, const char *desc, bool quickSave) { return SaveLoad::saveGame(slot, desc, quickSave, _gameRef); } @@ -3055,18 +3055,18 @@ bool BaseGame::persist(BasePersistenceManager *persistMgr) { BaseObject::persist(persistMgr); - persistMgr->transfer(TMEMBER(_activeObject)); - persistMgr->transfer(TMEMBER(_capturedObject)); - persistMgr->transfer(TMEMBER(_cursorNoninteractive)); + persistMgr->transferPtr(TMEMBER_PTR(_activeObject)); + persistMgr->transferPtr(TMEMBER_PTR(_capturedObject)); + persistMgr->transferPtr(TMEMBER_PTR(_cursorNoninteractive)); persistMgr->transfer(TMEMBER(_editorMode)); - persistMgr->transfer(TMEMBER(_fader)); + persistMgr->transferPtr(TMEMBER_PTR(_fader)); persistMgr->transfer(TMEMBER(_freezeLevel)); - persistMgr->transfer(TMEMBER(_focusedWindow)); - persistMgr->transfer(TMEMBER(_fontStorage)); + persistMgr->transferPtr(TMEMBER_PTR(_focusedWindow)); + persistMgr->transferPtr(TMEMBER_PTR(_fontStorage)); persistMgr->transfer(TMEMBER(_interactive)); - persistMgr->transfer(TMEMBER(_keyboardState)); + persistMgr->transferPtr(TMEMBER_PTR(_keyboardState)); persistMgr->transfer(TMEMBER(_lastTime)); - persistMgr->transfer(TMEMBER(_mainObject)); + persistMgr->transferPtr(TMEMBER_PTR(_mainObject)); _musicSystem->persistChannels(persistMgr); _musicSystem->persistCrossfadeSettings(persistMgr); @@ -3082,14 +3082,14 @@ bool BaseGame::persist(BasePersistenceManager *persistMgr) { _regObjects.persist(persistMgr); - persistMgr->transfer(TMEMBER(_scEngine)); + persistMgr->transferPtr(TMEMBER_PTR(_scEngine)); //persistMgr->transfer(TMEMBER(_soundMgr)); persistMgr->transfer(TMEMBER_INT(_state)); //persistMgr->transfer(TMEMBER(_surfaceStorage)); persistMgr->transfer(TMEMBER(_subtitles)); persistMgr->transfer(TMEMBER(_subtitlesSpeed)); - persistMgr->transfer(TMEMBER(_systemFont)); - persistMgr->transfer(TMEMBER(_videoFont)); + persistMgr->transferPtr(TMEMBER_PTR(_systemFont)); + persistMgr->transferPtr(TMEMBER_PTR(_videoFont)); persistMgr->transfer(TMEMBER(_videoSubtitles)); _timerNormal.persist(persistMgr); @@ -3840,7 +3840,7 @@ bool BaseGame::isRightDoubleClick() { } ////////////////////////////////////////////////////////////////////////// -bool BaseGame::isDoubleClick(int buttonIndex) { +bool BaseGame::isDoubleClick(int32 buttonIndex) { uint32 maxDoubleCLickTime = 500; int maxMoveX = 4; int maxMoveY = 4; diff --git a/engines/wintermute/base/base_game_music.cpp b/engines/wintermute/base/base_game_music.cpp index a39deb8d8d..ac23801e4c 100644 --- a/engines/wintermute/base/base_game_music.cpp +++ b/engines/wintermute/base/base_game_music.cpp @@ -214,7 +214,7 @@ bool BaseGameMusic::updateMusicCrossfade() { bool BaseGameMusic::persistChannels(BasePersistenceManager *persistMgr) { for (int i = 0; i < NUM_MUSIC_CHANNELS; i++) { - persistMgr->transfer(TMEMBER(_music[i])); + persistMgr->transferPtr(TMEMBER_PTR(_music[i])); persistMgr->transfer(TMEMBER(_musicStartTime[i])); } return true; diff --git a/engines/wintermute/base/base_object.cpp b/engines/wintermute/base/base_object.cpp index 75ba4fb50f..ad181b922e 100644 --- a/engines/wintermute/base/base_object.cpp +++ b/engines/wintermute/base/base_object.cpp @@ -955,10 +955,10 @@ bool BaseObject::persist(BasePersistenceManager *persistMgr) { for (int i = 0; i < 7; i++) { persistMgr->transfer(TMEMBER(_caption[i])); } - persistMgr->transfer(TMEMBER(_activeCursor)); + persistMgr->transferPtr(TMEMBER_PTR(_activeCursor)); persistMgr->transfer(TMEMBER(_alphaColor)); persistMgr->transfer(TMEMBER(_autoSoundPanning)); - persistMgr->transfer(TMEMBER(_cursor)); + persistMgr->transferPtr(TMEMBER_PTR(_cursor)); persistMgr->transfer(TMEMBER(_sharedCursors)); persistMgr->transfer(TMEMBER(_editorAlwaysRegister)); persistMgr->transfer(TMEMBER(_editorOnly)); @@ -971,7 +971,7 @@ bool BaseObject::persist(BasePersistenceManager *persistMgr) { persistMgr->transfer(TMEMBER(_relativeScale)); persistMgr->transfer(TMEMBER(_rotatable)); persistMgr->transfer(TMEMBER(_scale)); - persistMgr->transfer(TMEMBER(_sFX)); + persistMgr->transferPtr(TMEMBER_PTR(_sFX)); persistMgr->transfer(TMEMBER(_sFXStart)); persistMgr->transfer(TMEMBER(_sFXVolume)); persistMgr->transfer(TMEMBER(_ready)); diff --git a/engines/wintermute/base/base_persistence_manager.cpp b/engines/wintermute/base/base_persistence_manager.cpp index 12bc62d5dc..5dbacb157b 100644 --- a/engines/wintermute/base/base_persistence_manager.cpp +++ b/engines/wintermute/base/base_persistence_manager.cpp @@ -533,7 +533,7 @@ TimeDate BasePersistenceManager::getTimeDate() { } void BasePersistenceManager::putFloat(float val) { - int32 exponent = 0; + int exponent = 0; float significand = frexp(val, &exponent); Common::String str = Common::String::format("FS%f", significand); _saveStream->writeUint32LE(str.size()); @@ -556,7 +556,7 @@ float BasePersistenceManager::getFloat() { } void BasePersistenceManager::putDouble(double val) { - int32 exponent = 0; + int exponent = 0; double significand = frexp(val, &exponent); Common::String str = Common::String::format("DS%f", significand); _saveStream->writeUint32LE(str.size()); @@ -599,7 +599,7 @@ bool BasePersistenceManager::transfer(const char *name, bool *val) { ////////////////////////////////////////////////////////////////////////// // int -bool BasePersistenceManager::transfer(const char *name, int *val) { +bool BasePersistenceManager::transfer(const char *name, int32 *val) { if (_saving) { _saveStream->writeSint32LE(*val); if (_saveStream->err()) { @@ -848,7 +848,8 @@ bool BasePersistenceManager::transfer(const char *name, Vector2 *val) { ////////////////////////////////////////////////////////////////////////// // generic pointer -bool BasePersistenceManager::transfer(const char *name, void *val) { + +bool BasePersistenceManager::transferPtr(const char *name, void *val) { int classID = -1, instanceID = -1; if (_saving) { @@ -869,7 +870,6 @@ bool BasePersistenceManager::transfer(const char *name, void *val) { return STATUS_OK; } - ////////////////////////////////////////////////////////////////////////// bool BasePersistenceManager::checkVersion(byte verMajor, byte verMinor, byte verBuild) { if (_saving) { diff --git a/engines/wintermute/base/base_persistence_manager.h b/engines/wintermute/base/base_persistence_manager.h index 8cc21b353b..7b578085ba 100644 --- a/engines/wintermute/base/base_persistence_manager.h +++ b/engines/wintermute/base/base_persistence_manager.h @@ -73,8 +73,8 @@ public: uint32 _richBufferSize; byte *_richBuffer; - bool transfer(const char *name, void *val); - bool transfer(const char *name, int *val); + bool transferPtr(const char *name, void *val); + bool transfer(const char *name, int32 *val); bool transfer(const char *name, uint32 *val); bool transfer(const char *name, float *val); bool transfer(const char *name, double *val); diff --git a/engines/wintermute/base/base_region.cpp b/engines/wintermute/base/base_region.cpp index 51d222be4c..2dabe6ae44 100644 --- a/engines/wintermute/base/base_region.cpp +++ b/engines/wintermute/base/base_region.cpp @@ -493,7 +493,7 @@ bool BaseRegion::getBoundingRect(Rect32 *rect) { if (_points.size() == 0) { BasePlatform::setRectEmpty(rect); } else { - int minX = INT_MAX, minY = INT_MAX, maxX = INT_MIN, maxY = INT_MIN; + int32 minX = INT_MAX, minY = INT_MAX, maxX = INT_MIN, maxY = INT_MIN; for (uint32 i = 0; i < _points.size(); i++) { minX = MIN(minX, _points[i]->x); diff --git a/engines/wintermute/base/base_scriptable.cpp b/engines/wintermute/base/base_scriptable.cpp index fca1df4c90..5753b0482b 100644 --- a/engines/wintermute/base/base_scriptable.cpp +++ b/engines/wintermute/base/base_scriptable.cpp @@ -152,10 +152,10 @@ void BaseScriptable::scSetBool(bool val) { ////////////////////////////////////////////////////////////////////////// bool BaseScriptable::persist(BasePersistenceManager *persistMgr) { - persistMgr->transfer(TMEMBER(_gameRef)); + persistMgr->transferPtr(TMEMBER_PTR(_gameRef)); persistMgr->transfer(TMEMBER(_refCount)); - persistMgr->transfer(TMEMBER(_scProp)); - persistMgr->transfer(TMEMBER(_scValue)); + persistMgr->transferPtr(TMEMBER_PTR(_scProp)); + persistMgr->transferPtr(TMEMBER_PTR(_scValue)); return STATUS_OK; } diff --git a/engines/wintermute/base/base_sprite.cpp b/engines/wintermute/base/base_sprite.cpp index 3f809f7a46..c920da9ee9 100644 --- a/engines/wintermute/base/base_sprite.cpp +++ b/engines/wintermute/base/base_sprite.cpp @@ -298,8 +298,8 @@ bool BaseSprite::loadBuffer(byte *buffer, bool complete, int lifeTime, TSpriteCa case TOKEN_EDITOR_BG_ALPHA: parser.scanStr((char *)params, "%d", &_editorBgAlpha); - _editorBgAlpha = MIN(_editorBgAlpha, 255); - _editorBgAlpha = MAX(_editorBgAlpha, 0); + _editorBgAlpha = MIN<int32>(_editorBgAlpha, 255); + _editorBgAlpha = MAX<int32>(_editorBgAlpha, 0); break; case TOKEN_FRAME: { @@ -539,7 +539,7 @@ bool BaseSprite::persist(BasePersistenceManager *persistMgr) { persistMgr->transfer(TMEMBER(_looping)); persistMgr->transfer(TMEMBER(_moveX)); persistMgr->transfer(TMEMBER(_moveY)); - persistMgr->transfer(TMEMBER(_owner)); + persistMgr->transferPtr(TMEMBER_PTR(_owner)); persistMgr->transfer(TMEMBER(_precise)); persistMgr->transfer(TMEMBER(_streamed)); persistMgr->transfer(TMEMBER(_streamedKeepLoaded)); diff --git a/engines/wintermute/base/base_sprite.h b/engines/wintermute/base/base_sprite.h index 24c1f47755..05cb9fc936 100644 --- a/engines/wintermute/base/base_sprite.h +++ b/engines/wintermute/base/base_sprite.h @@ -56,7 +56,7 @@ public: bool loadFile(const Common::String &filename, int lifeTime = -1, TSpriteCacheType cacheType = CACHE_ALL); bool draw(int x, int y, BaseObject *Register = nullptr, float zoomX = 100, float zoomY = 100, uint32 alpha = 0xFFFFFFFF); bool _looping; - int _currentFrame; + int32 _currentFrame; bool addFrame(const char *filename, uint32 delay = 0, int hotspotX = 0, int hotspotY = 0, Rect32 *rect = nullptr); BaseSprite(BaseGame *inGame, BaseObject *owner = nullptr); virtual ~BaseSprite(); diff --git a/engines/wintermute/base/base_sub_frame.h b/engines/wintermute/base/base_sub_frame.h index 1ecf6c671d..37ba34b748 100644 --- a/engines/wintermute/base/base_sub_frame.h +++ b/engines/wintermute/base/base_sub_frame.h @@ -56,8 +56,8 @@ public: bool getBoundingRect(Rect32 *rect, int x, int y, float scaleX = 100, float scaleY = 100); const char* getSurfaceFilename(); - int _hotspotX; - int _hotspotY; + int32 _hotspotX; + int32 _hotspotY; uint32 _alpha; // These two setters and getters are rather usefull, as they allow _rect to be lazily defined // Thus we don't need to load the actual graphics before the rect is actually needed. diff --git a/engines/wintermute/base/base_viewport.cpp b/engines/wintermute/base/base_viewport.cpp index 4f62a4f6f9..f79e5c9f13 100644 --- a/engines/wintermute/base/base_viewport.cpp +++ b/engines/wintermute/base/base_viewport.cpp @@ -53,9 +53,9 @@ BaseViewport::~BaseViewport() { ////////////////////////////////////////////////////////////////////////// bool BaseViewport::persist(BasePersistenceManager *persistMgr) { - persistMgr->transfer(TMEMBER(_gameRef)); + persistMgr->transferPtr(TMEMBER_PTR(_gameRef)); - persistMgr->transfer(TMEMBER(_mainObject)); + persistMgr->transferPtr(TMEMBER_PTR(_mainObject)); persistMgr->transfer(TMEMBER(_offsetX)); persistMgr->transfer(TMEMBER(_offsetY)); persistMgr->transfer(TMEMBER(_rect)); @@ -65,10 +65,10 @@ bool BaseViewport::persist(BasePersistenceManager *persistMgr) { ////////////////////////////////////////////////////////////////////////// -bool BaseViewport::setRect(int left, int top, int right, int bottom, bool noCheck) { +bool BaseViewport::setRect(int32 left, int32 top, int32 right, int32 bottom, bool noCheck) { if (!noCheck) { - left = MAX(left, 0); - top = MAX(top, 0); + left = MAX<int32>(left, 0); + top = MAX<int32>(top, 0); right = MIN(right, BaseEngine::instance().getRenderer()->getWidth()); bottom = MIN(bottom, BaseEngine::instance().getRenderer()->getHeight()); } diff --git a/engines/wintermute/base/base_viewport.h b/engines/wintermute/base/base_viewport.h index 75b9989080..584e5a78f9 100644 --- a/engines/wintermute/base/base_viewport.h +++ b/engines/wintermute/base/base_viewport.h @@ -41,7 +41,7 @@ public: int getHeight() const; int getWidth() const; Rect32 *getRect(); - bool setRect(int left, int top, int right, int bottom, bool noCheck = false); + bool setRect(int32 left, int32 top, int32 right, int32 bottom, bool noCheck = false); DECLARE_PERSISTENT(BaseViewport, BaseClass) int32 _offsetY; int32 _offsetX; diff --git a/engines/wintermute/base/font/base_font_bitmap.cpp b/engines/wintermute/base/font/base_font_bitmap.cpp index 5139620727..03bd471636 100644 --- a/engines/wintermute/base/font/base_font_bitmap.cpp +++ b/engines/wintermute/base/font/base_font_bitmap.cpp @@ -478,7 +478,7 @@ bool BaseFontBitmap::loadBuffer(byte *buffer) { _widths[spaceChar] = spaceWidth; } else { if (_widths[spaceChar] == expandWidth || _widths[spaceChar] == 0) { - _widths[spaceChar] = (_widths['m'] + _widths['i']) / 2; + _widths[spaceChar] = (_widths[(uint)'m'] + _widths[(uint)'i']) / 2; } } } else { @@ -498,10 +498,10 @@ bool BaseFontBitmap::persist(BasePersistenceManager *persistMgr) { BaseFont::persist(persistMgr); persistMgr->transfer(TMEMBER(_numColumns)); - persistMgr->transfer(TMEMBER(_subframe)); + persistMgr->transferPtr(TMEMBER_PTR(_subframe)); persistMgr->transfer(TMEMBER(_tileHeight)); persistMgr->transfer(TMEMBER(_tileWidth)); - persistMgr->transfer(TMEMBER(_sprite)); + persistMgr->transferPtr(TMEMBER_PTR(_sprite)); persistMgr->transfer(TMEMBER(_widthsFrame)); if (persistMgr->getIsSaving()) { diff --git a/engines/wintermute/base/font/base_font_bitmap.h b/engines/wintermute/base/font/base_font_bitmap.h index e380a949e2..0bdac64026 100644 --- a/engines/wintermute/base/font/base_font_bitmap.h +++ b/engines/wintermute/base/font/base_font_bitmap.h @@ -39,10 +39,10 @@ public: DECLARE_PERSISTENT(BaseFontBitmap, BaseFont) bool loadBuffer(byte *Buffer); bool loadFile(const Common::String &filename); - virtual int getTextWidth(const byte *text, int maxLength = -1); - virtual int getTextHeight(const byte *text, int width); - virtual void drawText(const byte *text, int x, int y, int width, TTextAlign align = TAL_LEFT, int max_height = -1, int maxLength = -1); - virtual int getLetterHeight(); + virtual int getTextWidth(const byte *text, int maxLength = -1) override; + virtual int getTextHeight(const byte *text, int width) override; + virtual void drawText(const byte *text, int x, int y, int width, TTextAlign align = TAL_LEFT, int max_height = -1, int maxLength = -1) override; + virtual int getLetterHeight() override; BaseFontBitmap(BaseGame *inGame); virtual ~BaseFontBitmap(); @@ -50,11 +50,11 @@ public: private: bool getWidths(); BaseSprite *_sprite; - int _widthsFrame; + int32 _widthsFrame; bool _fontextFix; - int _numColumns; - int _tileHeight; - int _tileWidth; + int32 _numColumns; + int32 _tileHeight; + int32 _tileWidth; byte _widths[NUM_CHARACTERS]; BaseSubFrame *_subframe; bool _wholeCell; diff --git a/engines/wintermute/base/font/base_font_storage.cpp b/engines/wintermute/base/font/base_font_storage.cpp index 6a625f30ae..3286742478 100644 --- a/engines/wintermute/base/font/base_font_storage.cpp +++ b/engines/wintermute/base/font/base_font_storage.cpp @@ -132,7 +132,7 @@ bool BaseFontStorage::persist(BasePersistenceManager *persistMgr) { cleanup(false); } - persistMgr->transfer(TMEMBER(_gameRef)); + persistMgr->transferPtr(TMEMBER_PTR(_gameRef)); _fonts.persist(persistMgr); return STATUS_OK; diff --git a/engines/wintermute/base/font/base_font_truetype.cpp b/engines/wintermute/base/font/base_font_truetype.cpp index 246c6befb7..2fcdebc117 100644 --- a/engines/wintermute/base/font/base_font_truetype.cpp +++ b/engines/wintermute/base/font/base_font_truetype.cpp @@ -39,6 +39,7 @@ #include "graphics/fonts/ttf.h" #include "graphics/fontman.h" #include "common/unzip.h" +#include "common/config-manager.h" // For Scummmodern.zip #include <limits.h> namespace Wintermute { @@ -509,7 +510,7 @@ bool BaseFontTT::persist(BasePersistenceManager *persistMgr) { // persist layers - int numLayers; + int32 numLayers; if (persistMgr->getIsSaving()) { numLayers = _layers.size(); persistMgr->transfer(TMEMBER(numLayers)); @@ -566,7 +567,19 @@ bool BaseFontTT::initFont() { // Fallback2: Try to find ScummModern.zip, and get the font from there: if (!_font) { - Common::SeekableReadStream *themeFile = SearchMan.createReadStreamForMember("scummmodern.zip"); + Common::SeekableReadStream *themeFile = nullptr; + if (ConfMan.hasKey("themepath")) { + Common::FSNode themePath(ConfMan.get("themepath")); + if (themePath.exists()) { + Common::FSNode scummModern = themePath.getChild("scummmodern.zip"); + if (scummModern.exists()) { + themeFile = scummModern.createReadStream(); + } + } + } + if (!themeFile) { // Fallback 2.5: Search for ScummModern.zip in SearchMan. + themeFile = SearchMan.createReadStreamForMember("scummmodern.zip"); + } if (themeFile) { Common::Archive *themeArchive = Common::makeZipArchive(themeFile); if (themeArchive->hasFile("FreeSans.ttf")) { diff --git a/engines/wintermute/base/font/base_font_truetype.h b/engines/wintermute/base/font/base_font_truetype.h index c9ac4cd993..f93505921f 100644 --- a/engines/wintermute/base/font/base_font_truetype.h +++ b/engines/wintermute/base/font/base_font_truetype.h @@ -46,13 +46,13 @@ private: class BaseCachedTTFontText { public: WideString _text; - int _width; + int32 _width; TTextAlign _align; - int _maxHeight; - int _maxLength; + int32 _maxHeight; + int32 _maxLength; BaseSurface *_surface; - int _priority; - int _textOffset; + int32 _priority; + int32 _textOffset; bool _marked; uint32 _lastUsed; @@ -90,8 +90,8 @@ public: return STATUS_OK; } - int _offsetX; - int _offsetY; + int32 _offsetX; + int32 _offsetY; uint32 _color; }; @@ -100,10 +100,10 @@ public: BaseFontTT(BaseGame *inGame); virtual ~BaseFontTT(void); - virtual int getTextWidth(const byte *text, int maxLength = -1); - virtual int getTextHeight(const byte *text, int width); - virtual void drawText(const byte *text, int x, int y, int width, TTextAlign align = TAL_LEFT, int max_height = -1, int maxLength = -1); - virtual int getLetterHeight(); + virtual int getTextWidth(const byte *text, int maxLength = -1) override; + virtual int getTextHeight(const byte *text, int width) override; + virtual void drawText(const byte *text, int x, int y, int width, TTextAlign align = TAL_LEFT, int max_height = -1, int maxLength = -1) override; + virtual int getLetterHeight() override; bool loadBuffer(byte *buffer); bool loadFile(const Common::String &filename); @@ -140,7 +140,7 @@ public: bool _isItalic; bool _isUnderline; bool _isStriked; - int _fontHeight; + int32 _fontHeight; char *_fontFile; BaseArray<BaseTTFontLayer *> _layers; diff --git a/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp b/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp index 0bb987a8b9..e1424cea87 100644 --- a/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp +++ b/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp @@ -39,6 +39,8 @@ #include "common/queue.h" #include "common/config-manager.h" +#define DIRTY_RECT_LIMIT 800 + namespace Wintermute { BaseRenderer *makeOSystemRenderer(BaseGame *inGame) { @@ -62,6 +64,7 @@ BaseRenderOSystem::BaseRenderOSystem(BaseGame *inGame) : BaseRenderer(inGame) { setColorMod(255, 255, 255); _dirtyRect = nullptr; _disableDirtyRects = false; + _tempDisableDirtyRects = 0; if (ConfMan.hasKey("dirty_rects")) { _disableDirtyRects = !ConfMan.getBool("dirty_rects"); } @@ -166,6 +169,9 @@ bool BaseRenderOSystem::indicatorFlip() { } bool BaseRenderOSystem::flip() { + if (_renderQueue.size() > DIRTY_RECT_LIMIT) { + _tempDisableDirtyRects++; + } if (_skipThisFrame) { _skipThisFrame = false; delete _dirtyRect; @@ -176,7 +182,7 @@ bool BaseRenderOSystem::flip() { addDirtyRect(_renderRect); return true; } - if (!_disableDirtyRects) { + if (!_tempDisableDirtyRects && !_disableDirtyRects) { drawTickets(); } else { // Clear the scale-buffered tickets that wasn't reused. @@ -192,8 +198,8 @@ bool BaseRenderOSystem::flip() { } } } - if (_needsFlip || _disableDirtyRects) { - if (_disableDirtyRects) { + if (_needsFlip || _disableDirtyRects || _tempDisableDirtyRects) { + if (_disableDirtyRects || _tempDisableDirtyRects) { g_system->copyRectToScreen((byte *)_renderSurface->pixels, _renderSurface->pitch, 0, 0, _renderSurface->w, _renderSurface->h); } // g_system->copyRectToScreen((byte *)_renderSurface->pixels, _renderSurface->pitch, _dirtyRect->left, _dirtyRect->top, _dirtyRect->width(), _dirtyRect->height()); @@ -204,13 +210,29 @@ bool BaseRenderOSystem::flip() { } _drawNum = 1; + if (_tempDisableDirtyRects && !_disableDirtyRects) { + _tempDisableDirtyRects--; + if (!_tempDisableDirtyRects) { + Common::Rect screen(_screenRect.top, _screenRect.left, _screenRect.bottom, _screenRect.right); + addDirtyRect(screen); + + // The queue has been ignored but updated, and is guaranteed to be in draw-order when run without dirty-rects. + RenderQueueIterator it = _renderQueue.begin(); + int drawNum = 1; + while (it != _renderQueue.end()) { + (*it)->_drawNum = drawNum++; + ++it; + } + } + } + return STATUS_OK; } ////////////////////////////////////////////////////////////////////////// bool BaseRenderOSystem::fill(byte r, byte g, byte b, Common::Rect *rect) { _clearColor = _renderSurface->format.ARGBToColor(0xFF, r, g, b); - if (!_disableDirtyRects) { + if (!_disableDirtyRects && !_tempDisableDirtyRects) { return STATUS_OK; } if (!rect) { @@ -277,6 +299,15 @@ Graphics::PixelFormat BaseRenderOSystem::getPixelFormat() const { } void BaseRenderOSystem::drawSurface(BaseSurfaceOSystem *owner, const Graphics::Surface *surf, Common::Rect *srcRect, Common::Rect *dstRect, bool mirrorX, bool mirrorY, bool disableAlpha) { + if (_tempDisableDirtyRects || _disableDirtyRects) { + RenderTicket *ticket = new RenderTicket(owner, surf, srcRect, dstRect, mirrorX, mirrorY, disableAlpha); + ticket->_colorMod = _colorMod; + ticket->_wantsDraw = true; + _renderQueue.push_back(ticket); + _previousTicket = ticket; + drawFromSurface(ticket); + return; + } // Start searching from the beginning for the first and second items (since it's empty the first time around // then keep incrementing the start-position, to avoid comparing against already used tickets. if (_drawNum == 0 || _drawNum == 1) { @@ -310,6 +341,10 @@ void BaseRenderOSystem::drawSurface(BaseSurfaceOSystem *owner, const Graphics::S drawFromTicket(compareTicket); _previousTicket = compareTicket; } + if (_renderQueue.size() > DIRTY_RECT_LIMIT) { + drawTickets(); + _tempDisableDirtyRects = 3; + } return; } } @@ -322,6 +357,8 @@ void BaseRenderOSystem::drawSurface(BaseSurfaceOSystem *owner, const Graphics::S } else { ticket->_wantsDraw = true; _renderQueue.push_back(ticket); + _previousTicket = ticket; + drawFromSurface(ticket); } } @@ -330,7 +367,7 @@ void BaseRenderOSystem::repeatLastDraw(int offsetX, int offsetY, int numTimesX, RenderTicket *origTicket = _previousTicket; // Make sure drawSurface WILL start from the correct _lastAddedTicket - if (*_lastAddedTicket != origTicket) { + if (!_tempDisableDirtyRects && !_disableDirtyRects && *_lastAddedTicket != origTicket) { RenderQueueIterator it; RenderQueueIterator endIterator = _renderQueue.end(); for (it = _renderQueue.begin(); it != endIterator; ++it) { @@ -541,7 +578,7 @@ void BaseRenderOSystem::drawFromSurface(RenderTicket *ticket, Common::Rect *dstR bool BaseRenderOSystem::drawLine(int x1, int y1, int x2, int y2, uint32 color) { // This function isn't used outside of indicator-displaying, and thus quite unused in // BaseRenderOSystem when dirty-rects are enabled. - if (!_disableDirtyRects && !_indicatorDisplay) { + if (!_tempDisableDirtyRects && !_disableDirtyRects && !_indicatorDisplay) { error("BaseRenderOSystem::DrawLine - doesn't work for dirty rects yet"); } diff --git a/engines/wintermute/base/gfx/osystem/base_render_osystem.h b/engines/wintermute/base/gfx/osystem/base_render_osystem.h index cc2ed57f9b..3cb0fa82a3 100644 --- a/engines/wintermute/base/gfx/osystem/base_render_osystem.h +++ b/engines/wintermute/base/gfx/osystem/base_render_osystem.h @@ -108,6 +108,7 @@ private: int _borderBottom; bool _disableDirtyRects; + uint32 _tempDisableDirtyRects; bool _spriteBatch; uint32 _batchNum; float _ratioX; diff --git a/engines/wintermute/base/particles/part_emitter.cpp b/engines/wintermute/base/particles/part_emitter.cpp index d09f2215dd..c86e1ce369 100644 --- a/engines/wintermute/base/particles/part_emitter.cpp +++ b/engines/wintermute/base/particles/part_emitter.cpp @@ -1212,7 +1212,7 @@ bool PartEmitter::persist(BasePersistenceManager *persistMgr) { persistMgr->transfer(TMEMBER_INT(_batchesGenerated)); persistMgr->transfer(TMEMBER(_emitEvent)); - persistMgr->transfer(TMEMBER(_owner)); + persistMgr->transferPtr(TMEMBER_PTR(_owner)); _sprites.persist(persistMgr); diff --git a/engines/wintermute/base/particles/part_emitter.h b/engines/wintermute/base/particles/part_emitter.h index cbc0aa49b4..a0d701f338 100644 --- a/engines/wintermute/base/particles/part_emitter.h +++ b/engines/wintermute/base/particles/part_emitter.h @@ -94,31 +94,31 @@ private: float _scale2; bool _scaleZBased; - int _maxParticles; + int32 _maxParticles; - int _lifeTime1; - int _lifeTime2; + int32 _lifeTime1; + int32 _lifeTime2; bool _lifeTimeZBased; - int _genInterval; - int _genAmount; + int32 _genInterval; + int32 _genAmount; bool _running; - int _overheadTime; + int32 _overheadTime; - int _maxBatches; - int _batchesGenerated; + int32 _maxBatches; + int32 _batchesGenerated; Rect32 _border; - int _borderThicknessLeft; - int _borderThicknessRight; - int _borderThicknessTop; - int _borderThicknessBottom; + int32 _borderThicknessLeft; + int32 _borderThicknessRight; + int32 _borderThicknessTop; + int32 _borderThicknessBottom; - int _fadeInTime; + int32 _fadeInTime; - int _alpha1; - int _alpha2; + int32 _alpha1; + int32 _alpha2; bool _alphaTimeBased; bool _useRegion; diff --git a/engines/wintermute/base/save_thumb_helper.cpp b/engines/wintermute/base/save_thumb_helper.cpp index db6f855cc6..bab29c5cf8 100644 --- a/engines/wintermute/base/save_thumb_helper.cpp +++ b/engines/wintermute/base/save_thumb_helper.cpp @@ -35,7 +35,7 @@ namespace Wintermute { ////////////////////////////////////////////////////////////////////////// -SaveThumbHelper::SaveThumbHelper(const BaseGame *inGame) { +SaveThumbHelper::SaveThumbHelper(BaseGame *inGame) : _gameRef(inGame) { _thumbnail = nullptr; _scummVMThumb = nullptr; } diff --git a/engines/wintermute/base/save_thumb_helper.h b/engines/wintermute/base/save_thumb_helper.h index 43cc7e39a7..d3bc5f5523 100644 --- a/engines/wintermute/base/save_thumb_helper.h +++ b/engines/wintermute/base/save_thumb_helper.h @@ -35,7 +35,7 @@ class BaseGame; class SaveThumbHelper { public: - SaveThumbHelper(const BaseGame *inGame); + SaveThumbHelper(BaseGame *inGame); virtual ~SaveThumbHelper(void); bool storeThumbnail(bool doFlip = false); bool storeScummVMThumbNail(bool doFlip = false); @@ -44,7 +44,6 @@ public: BaseImage *_scummVMThumb; private: BaseImage *storeThumb(bool doFlip, int width, int height); - BaseImage *_richThumbnail; BaseGame *_gameRef; }; diff --git a/engines/wintermute/base/scriptables/script.cpp b/engines/wintermute/base/scriptables/script.cpp index 56ffbf75c5..1b945c2e1c 100644 --- a/engines/wintermute/base/scriptables/script.cpp +++ b/engines/wintermute/base/scriptables/script.cpp @@ -1243,7 +1243,7 @@ void ScScript::runtimeError(const char *fmt, ...) { ////////////////////////////////////////////////////////////////////////// bool ScScript::persist(BasePersistenceManager *persistMgr) { - persistMgr->transfer(TMEMBER(_gameRef)); + persistMgr->transferPtr(TMEMBER_PTR(_gameRef)); // buffer if (persistMgr->getIsSaving()) { @@ -1252,7 +1252,7 @@ bool ScScript::persist(BasePersistenceManager *persistMgr) { persistMgr->putBytes(_buffer, _bufferSize); } else { // don't save idle/finished scripts - int bufferSize = 0; + int32 bufferSize = 0; persistMgr->transfer(TMEMBER(bufferSize)); } } else { @@ -1268,33 +1268,33 @@ bool ScScript::persist(BasePersistenceManager *persistMgr) { } } - persistMgr->transfer(TMEMBER(_callStack)); + persistMgr->transferPtr(TMEMBER_PTR(_callStack)); persistMgr->transfer(TMEMBER(_currentLine)); - persistMgr->transfer(TMEMBER(_engine)); + persistMgr->transferPtr(TMEMBER_PTR(_engine)); persistMgr->transfer(TMEMBER(_filename)); persistMgr->transfer(TMEMBER(_freezable)); - persistMgr->transfer(TMEMBER(_globals)); + persistMgr->transferPtr(TMEMBER_PTR(_globals)); persistMgr->transfer(TMEMBER(_iP)); - persistMgr->transfer(TMEMBER(_scopeStack)); - persistMgr->transfer(TMEMBER(_stack)); + persistMgr->transferPtr(TMEMBER_PTR(_scopeStack)); + persistMgr->transferPtr(TMEMBER_PTR(_stack)); persistMgr->transfer(TMEMBER_INT(_state)); - persistMgr->transfer(TMEMBER(_operand)); + persistMgr->transferPtr(TMEMBER_PTR(_operand)); persistMgr->transfer(TMEMBER_INT(_origState)); - persistMgr->transfer(TMEMBER(_owner)); - persistMgr->transfer(TMEMBER(_reg1)); + persistMgr->transferPtr(TMEMBER_PTR(_owner)); + persistMgr->transferPtr(TMEMBER_PTR(_reg1)); persistMgr->transfer(TMEMBER(_thread)); persistMgr->transfer(TMEMBER(_threadEvent)); - persistMgr->transfer(TMEMBER(_thisStack)); + persistMgr->transferPtr(TMEMBER_PTR(_thisStack)); persistMgr->transfer(TMEMBER(_timeSlice)); - persistMgr->transfer(TMEMBER(_waitObject)); - persistMgr->transfer(TMEMBER(_waitScript)); + persistMgr->transferPtr(TMEMBER_PTR(_waitObject)); + persistMgr->transferPtr(TMEMBER_PTR(_waitScript)); persistMgr->transfer(TMEMBER(_waitTime)); persistMgr->transfer(TMEMBER(_waitFrozen)); persistMgr->transfer(TMEMBER(_methodThread)); persistMgr->transfer(TMEMBER(_methodThread)); persistMgr->transfer(TMEMBER(_unbreakable)); - persistMgr->transfer(TMEMBER(_parentScript)); + persistMgr->transferPtr(TMEMBER_PTR(_parentScript)); if (!persistMgr->getIsSaving()) { _tracingMode = false; diff --git a/engines/wintermute/base/scriptables/script_engine.cpp b/engines/wintermute/base/scriptables/script_engine.cpp index d8f38f2f4d..f83fb36843 100644 --- a/engines/wintermute/base/scriptables/script_engine.cpp +++ b/engines/wintermute/base/scriptables/script_engine.cpp @@ -484,9 +484,9 @@ bool ScEngine::persist(BasePersistenceManager *persistMgr) { cleanup(); } - persistMgr->transfer(TMEMBER(_gameRef)); - persistMgr->transfer(TMEMBER(_currentScript)); - persistMgr->transfer(TMEMBER(_globals)); + persistMgr->transferPtr(TMEMBER_PTR(_gameRef)); + persistMgr->transferPtr(TMEMBER_PTR(_currentScript)); + persistMgr->transferPtr(TMEMBER_PTR(_globals)); _scripts.persist(persistMgr); return STATUS_OK; diff --git a/engines/wintermute/base/scriptables/script_ext_array.cpp b/engines/wintermute/base/scriptables/script_ext_array.cpp index 892d0674ff..a466d361ec 100644 --- a/engines/wintermute/base/scriptables/script_ext_array.cpp +++ b/engines/wintermute/base/scriptables/script_ext_array.cpp @@ -215,7 +215,7 @@ bool SXArray::persist(BasePersistenceManager *persistMgr) { BaseScriptable::persist(persistMgr); persistMgr->transfer(TMEMBER(_length)); - persistMgr->transfer(TMEMBER(_values)); + persistMgr->transferPtr(TMEMBER_PTR(_values)); return STATUS_OK; } diff --git a/engines/wintermute/base/scriptables/script_ext_date.cpp b/engines/wintermute/base/scriptables/script_ext_date.cpp index 53a1d36b81..afca0c4bbf 100644 --- a/engines/wintermute/base/scriptables/script_ext_date.cpp +++ b/engines/wintermute/base/scriptables/script_ext_date.cpp @@ -237,12 +237,29 @@ bool SXDate::scSetProperty(const char *name, ScValue *value) { bool SXDate::persist(BasePersistenceManager *persistMgr) { BaseScriptable::persist(persistMgr); - persistMgr->transfer(TMEMBER(_tm.tm_year)); - persistMgr->transfer(TMEMBER(_tm.tm_mon)); - persistMgr->transfer(TMEMBER(_tm.tm_mday)); - persistMgr->transfer(TMEMBER(_tm.tm_hour)); - persistMgr->transfer(TMEMBER(_tm.tm_min)); - persistMgr->transfer(TMEMBER(_tm.tm_sec)); + int32 year = _tm.tm_year; + int32 mon = _tm.tm_mon; + int32 mday = _tm.tm_mday; + int32 hour = _tm.tm_hour; + int32 min = _tm.tm_min; + int32 sec = _tm.tm_sec; + persistMgr->transfer(TMEMBER(year)); + persistMgr->transfer(TMEMBER(mon)); + persistMgr->transfer(TMEMBER(mday)); + persistMgr->transfer(TMEMBER(hour)); + persistMgr->transfer(TMEMBER(min)); + persistMgr->transfer(TMEMBER(sec)); + if (persistMgr->checkVersion(1, 2, 1)) { + int32 wday = _tm.tm_wday; + persistMgr->transfer(TMEMBER(wday)); + _tm.tm_wday = wday; + } + _tm.tm_year = year; + _tm.tm_mon = mon; + _tm.tm_mday = mday; + _tm.tm_hour = hour; + _tm.tm_min = min; + _tm.tm_sec = sec; return STATUS_OK; } diff --git a/engines/wintermute/base/scriptables/script_stack.cpp b/engines/wintermute/base/scriptables/script_stack.cpp index 3239decae8..b53457c81b 100644 --- a/engines/wintermute/base/scriptables/script_stack.cpp +++ b/engines/wintermute/base/scriptables/script_stack.cpp @@ -184,7 +184,7 @@ void ScStack::pushNative(BaseScriptable *val, bool persistent) { ////////////////////////////////////////////////////////////////////////// bool ScStack::persist(BasePersistenceManager *persistMgr) { - persistMgr->transfer(TMEMBER(_gameRef)); + persistMgr->transferPtr(TMEMBER_PTR(_gameRef)); persistMgr->transfer(TMEMBER(_sP)); _values.persist(persistMgr); diff --git a/engines/wintermute/base/scriptables/script_value.cpp b/engines/wintermute/base/scriptables/script_value.cpp index 46d6c25d44..5e2923e029 100644 --- a/engines/wintermute/base/scriptables/script_value.cpp +++ b/engines/wintermute/base/scriptables/script_value.cpp @@ -73,7 +73,7 @@ ScValue::ScValue(BaseGame *inGame, bool val) : BaseClass(inGame) { ////////////////////////////////////////////////////////////////////////// -ScValue::ScValue(BaseGame *inGame, int val) : BaseClass(inGame) { +ScValue::ScValue(BaseGame *inGame, int32 val) : BaseClass(inGame) { _type = VAL_INT; _valInt = val; @@ -789,7 +789,7 @@ void ScValue::setValue(ScValue *val) { ////////////////////////////////////////////////////////////////////////// bool ScValue::persist(BasePersistenceManager *persistMgr) { - persistMgr->transfer(TMEMBER(_gameRef)); + persistMgr->transferPtr(TMEMBER_PTR(_gameRef)); persistMgr->transfer(TMEMBER(_persistent)); persistMgr->transfer(TMEMBER(_isConstVar)); @@ -797,9 +797,9 @@ bool ScValue::persist(BasePersistenceManager *persistMgr) { persistMgr->transfer(TMEMBER(_valBool)); persistMgr->transfer(TMEMBER(_valFloat)); persistMgr->transfer(TMEMBER(_valInt)); - persistMgr->transfer(TMEMBER(_valNative)); + persistMgr->transferPtr(TMEMBER_PTR(_valNative)); - int size; + int32 size; const char *str; if (persistMgr->getIsSaving()) { size = _valObject.size(); @@ -808,23 +808,23 @@ bool ScValue::persist(BasePersistenceManager *persistMgr) { while (_valIter != _valObject.end()) { str = _valIter->_key.c_str(); persistMgr->transfer("", &str); - persistMgr->transfer("", &_valIter->_value); + persistMgr->transferPtr("", &_valIter->_value); _valIter++; } } else { - ScValue *val; + ScValue *val = nullptr; persistMgr->transfer("", &size); for (int i = 0; i < size; i++) { persistMgr->transfer("", &str); - persistMgr->transfer("", &val); + persistMgr->transferPtr("", &val); _valObject[str] = val; delete[] str; } } - persistMgr->transfer(TMEMBER(_valRef)); + persistMgr->transferPtr(TMEMBER_PTR(_valRef)); persistMgr->transfer(TMEMBER(_valString)); /* // TODO: Convert to Debug-statements. @@ -951,7 +951,7 @@ int ScValue::compareStrict(ScValue *val1, ScValue *val2) { } ////////////////////////////////////////////////////////////////////////// -bool ScValue::setProperty(const char *propName, int value) { +bool ScValue::setProperty(const char *propName, int32 value) { ScValue *val = new ScValue(_gameRef, value); bool ret = DID_SUCCEED(setProp(propName, val)); delete val; diff --git a/engines/wintermute/base/scriptables/script_value.h b/engines/wintermute/base/scriptables/script_value.h index e8173474d6..a8e815023e 100644 --- a/engines/wintermute/base/scriptables/script_value.h +++ b/engines/wintermute/base/scriptables/script_value.h @@ -94,14 +94,14 @@ public: TValType _type; ScValue(BaseGame *inGame); ScValue(BaseGame *inGame, bool Val); - ScValue(BaseGame *inGame, int Val); + ScValue(BaseGame *inGame, int32 Val); ScValue(BaseGame *inGame, double Val); ScValue(BaseGame *inGame, const char *Val); virtual ~ScValue(); Common::HashMap<Common::String, ScValue *> _valObject; Common::HashMap<Common::String, ScValue *>::iterator _valIter; - bool setProperty(const char *propName, int value); + bool setProperty(const char *propName, int32 value); bool setProperty(const char *propName, const char *value); bool setProperty(const char *propName, double value); bool setProperty(const char *propName, bool value); diff --git a/engines/wintermute/base/sound/base_sound.cpp b/engines/wintermute/base/sound/base_sound.cpp index f246c03fe1..d027c03c8b 100644 --- a/engines/wintermute/base/sound/base_sound.cpp +++ b/engines/wintermute/base/sound/base_sound.cpp @@ -164,7 +164,7 @@ bool BaseSound::persist(BasePersistenceManager *persistMgr) { _sFXParam1 = _sFXParam2 = _sFXParam3 = _sFXParam4 = 0; } - persistMgr->transfer(TMEMBER(_gameRef)); + persistMgr->transferPtr(TMEMBER_PTR(_gameRef)); persistMgr->transfer(TMEMBER(_soundFilename)); persistMgr->transfer(TMEMBER(_soundLooping)); diff --git a/engines/wintermute/base/timer.cpp b/engines/wintermute/base/timer.cpp index 590dba4655..5dfc117f48 100644 --- a/engines/wintermute/base/timer.cpp +++ b/engines/wintermute/base/timer.cpp @@ -71,4 +71,4 @@ void Timer::persist(BasePersistenceManager *persistMgr) { persistMgr->transfer(TMEMBER(_timerLast)); } -} // End of namespace Wintermute
\ No newline at end of file +} // End of namespace Wintermute diff --git a/engines/wintermute/base/timer.h b/engines/wintermute/base/timer.h index 8353b08abc..ec5477ba2e 100644 --- a/engines/wintermute/base/timer.h +++ b/engines/wintermute/base/timer.h @@ -54,4 +54,4 @@ public: } // End of namespace Wintermute -#endif
\ No newline at end of file +#endif diff --git a/engines/wintermute/coll_templ.h b/engines/wintermute/coll_templ.h index 493ea07015..4a8e92c121 100644 --- a/engines/wintermute/coll_templ.h +++ b/engines/wintermute/coll_templ.h @@ -36,48 +36,105 @@ namespace Wintermute { // Basically Common::Array with peristence-support. template<typename TYPE> -class BaseArray : public Common::Array<TYPE> { +class BaseArrayBase : public Common::Array<TYPE> { public: // TODO: Might want to make sure that destructors are called when replacing/deleting/getting destructed + int add(TYPE newElement) { + Common::Array<TYPE>::push_back(newElement); + return Common::Array<TYPE>::size() - 1; + } + void remove_at(uint32 idx) { + Common::Array<TYPE>::remove_at(idx); + } + void remove_at(uint32 idx, uint32 num) { + while (num) { + if (idx >= Common::Array<TYPE>::size()) { + break; + } + Common::Array<TYPE>::remove_at(idx); + } + } + template<typename T2> + void copy(const BaseArrayBase<T2> &src) { + Common::Array<TYPE>::insert_at(0, src); + } +}; + +template <typename TYPE> +class BaseArray : public BaseArrayBase<TYPE> { + public: bool persist(BasePersistenceManager *persistMgr) { - int j; + int32 j; if (persistMgr->getIsSaving()) { j = Common::Array<TYPE>::size(); persistMgr->transfer("ArraySize", &j); typename Common::Array<TYPE>::const_iterator it = Common::Array<TYPE>::begin(); for (; it != Common::Array<TYPE>::end(); ++it) { TYPE obj = *it; - persistMgr->transfer("", &obj); + persistMgr->transferPtr("", &obj); } } else { Common::Array<TYPE>::clear(); persistMgr->transfer("ArraySize", &j); for (int i = 0; i < j; i++) { - TYPE obj; + TYPE obj = nullptr; + persistMgr->transferPtr("", &obj); + this->add(obj); + } + } + return true; + } +}; + +template <> +class BaseArray<char *> : public BaseArrayBase<char *> { + public: + bool persist(BasePersistenceManager *persistMgr) { + int32 j; + if (persistMgr->getIsSaving()) { + j = Common::Array<char *>::size(); + persistMgr->transfer("ArraySize", &j); + Common::Array<char *>::const_iterator it = Common::Array<char *>::begin(); + for (; it != Common::Array<char *>::end(); ++it) { + char * obj = *it; + persistMgr->transfer("", &obj); + } + } else { + Common::Array<char *>::clear(); + persistMgr->transfer("ArraySize", &j); + for (int i = 0; i < j; i++) { + char * obj = nullptr; persistMgr->transfer("", &obj); add(obj); } } return true; } - int add(TYPE newElement) { - Common::Array<TYPE>::push_back(newElement); - return Common::Array<TYPE>::size() - 1; - } - void remove_at(uint32 idx) { - Common::Array<TYPE>::remove_at(idx); - } - void remove_at(uint32 idx, uint32 num) { - while (num) { - if (idx >= Common::Array<TYPE>::size()) { - break; +}; + +template <> +class BaseArray<const char *> : public BaseArrayBase<const char *> { +public: + bool persist(BasePersistenceManager *persistMgr) { + int32 j; + if (persistMgr->getIsSaving()) { + j = Common::Array<const char *>::size(); + persistMgr->transfer("ArraySize", &j); + Common::Array<const char *>::const_iterator it = Common::Array<const char *>::begin(); + for (; it != Common::Array<const char *>::end(); ++it) { + const char * obj = *it; + persistMgr->transfer("", &obj); + } + } else { + Common::Array<const char *>::clear(); + persistMgr->transfer("ArraySize", &j); + for (int i = 0; i < j; i++) { + const char * obj = nullptr; + persistMgr->transfer("", &obj); + add(obj); } - Common::Array<TYPE>::remove_at(idx); } - } - template<typename T2> - void copy(const BaseArray<T2> &src) { - Common::Array<TYPE>::insert_at(0, src); + return true; } }; diff --git a/engines/wintermute/dcgf.h b/engines/wintermute/dcgf.h index 4f8e96e0ac..fe92194443 100644 --- a/engines/wintermute/dcgf.h +++ b/engines/wintermute/dcgf.h @@ -32,7 +32,7 @@ ////////////////////////////////////////////////////////////////////////// #define DCGF_VER_MAJOR 1 -#define DCGF_VER_MINOR 1 +#define DCGF_VER_MINOR 2 #define DCGF_VER_BUILD 1 #define DCGF_VER_SUFFIX "ScummVM" #define DCGF_VER_BETA true diff --git a/engines/wintermute/detection_tables.h b/engines/wintermute/detection_tables.h index b5dbfc1a15..00ec51a715 100644 --- a/engines/wintermute/detection_tables.h +++ b/engines/wintermute/detection_tables.h @@ -162,7 +162,7 @@ static const ADGameDescription gameDescriptions[] = { AD_ENTRY1s("data.dcp", "ebd0915d9a12df5224be22f53bb23eb6", 7278306), Common::EN_ANY, Common::kPlatformWindows, - ADGF_UNSTABLE, + ADGF_TESTING, GUIO0() }, // Chivalry is Not Dead (Version from deirdrakai.com) @@ -172,7 +172,7 @@ static const ADGameDescription gameDescriptions[] = { AD_ENTRY1s("data.dcp", "ae6d91b9517f4d2851a8ad94c96951c8", 7278302), Common::EN_ANY, Common::kPlatformWindows, - ADGF_UNSTABLE, + ADGF_TESTING, GUIO0() }, // Dead City (English) diff --git a/engines/wintermute/persistent.h b/engines/wintermute/persistent.h index ca9281f798..1464ae0fd6 100644 --- a/engines/wintermute/persistent.h +++ b/engines/wintermute/persistent.h @@ -82,7 +82,8 @@ namespace Wintermute { }\ #define TMEMBER(memberName) #memberName, &memberName -#define TMEMBER_INT(memberName) #memberName, (int*)&memberName +#define TMEMBER_PTR(memberName) #memberName, &memberName +#define TMEMBER_INT(memberName) #memberName, (int32*)&memberName } // end of namespace Wintermute diff --git a/engines/wintermute/ui/ui_button.cpp b/engines/wintermute/ui/ui_button.cpp index b638522f6e..9db1f4f4b4 100644 --- a/engines/wintermute/ui/ui_button.cpp +++ b/engines/wintermute/ui/ui_button.cpp @@ -1179,21 +1179,21 @@ bool UIButton::persist(BasePersistenceManager *persistMgr) { UIObject::persist(persistMgr); persistMgr->transfer(TMEMBER_INT(_align)); - persistMgr->transfer(TMEMBER(_backDisable)); - persistMgr->transfer(TMEMBER(_backFocus)); - persistMgr->transfer(TMEMBER(_backHover)); - persistMgr->transfer(TMEMBER(_backPress)); + persistMgr->transferPtr(TMEMBER_PTR(_backDisable)); + persistMgr->transferPtr(TMEMBER_PTR(_backFocus)); + persistMgr->transferPtr(TMEMBER_PTR(_backHover)); + persistMgr->transferPtr(TMEMBER_PTR(_backPress)); persistMgr->transfer(TMEMBER(_centerImage)); - persistMgr->transfer(TMEMBER(_fontDisable)); - persistMgr->transfer(TMEMBER(_fontFocus)); - persistMgr->transfer(TMEMBER(_fontHover)); - persistMgr->transfer(TMEMBER(_fontPress)); + persistMgr->transferPtr(TMEMBER_PTR(_fontDisable)); + persistMgr->transferPtr(TMEMBER_PTR(_fontFocus)); + persistMgr->transferPtr(TMEMBER_PTR(_fontHover)); + persistMgr->transferPtr(TMEMBER_PTR(_fontPress)); persistMgr->transfer(TMEMBER(_hover)); - persistMgr->transfer(TMEMBER(_image)); - persistMgr->transfer(TMEMBER(_imageDisable)); - persistMgr->transfer(TMEMBER(_imageFocus)); - persistMgr->transfer(TMEMBER(_imageHover)); - persistMgr->transfer(TMEMBER(_imagePress)); + persistMgr->transferPtr(TMEMBER_PTR(_image)); + persistMgr->transferPtr(TMEMBER_PTR(_imageDisable)); + persistMgr->transferPtr(TMEMBER_PTR(_imageFocus)); + persistMgr->transferPtr(TMEMBER_PTR(_imageHover)); + persistMgr->transferPtr(TMEMBER_PTR(_imagePress)); persistMgr->transfer(TMEMBER(_pixelPerfect)); persistMgr->transfer(TMEMBER(_press)); persistMgr->transfer(TMEMBER(_stayPressed)); diff --git a/engines/wintermute/ui/ui_edit.cpp b/engines/wintermute/ui/ui_edit.cpp index 7fddf59898..91ca7326cb 100644 --- a/engines/wintermute/ui/ui_edit.cpp +++ b/engines/wintermute/ui/ui_edit.cpp @@ -481,7 +481,7 @@ bool UIEdit::scSetProperty(const char *name, ScValue *value) { ////////////////////////////////////////////////////////////////////////// if (strcmp(name, "SelStart") == 0) { _selStart = value->getInt(); - _selStart = MAX(_selStart, 0); + _selStart = MAX<int32>(_selStart, 0); _selStart = (int)MIN((size_t)_selStart, strlen(_text)); return STATUS_OK; } @@ -491,7 +491,7 @@ bool UIEdit::scSetProperty(const char *name, ScValue *value) { ////////////////////////////////////////////////////////////////////////// else if (strcmp(name, "SelEnd") == 0) { _selEnd = value->getInt(); - _selEnd = MAX(_selEnd, 0); + _selEnd = MAX<int32>(_selEnd, 0); _selEnd = (int)MIN((size_t)_selEnd, strlen(_text)); return STATUS_OK; } @@ -600,8 +600,8 @@ bool UIEdit::display(int offsetX, int offsetY) { bool focused = isFocused(); - _selStart = MAX(_selStart, 0); - _selEnd = MAX(_selEnd, 0); + _selStart = MAX<int32>(_selStart, 0); + _selEnd = MAX<int32>(_selEnd, 0); _selStart = (int)MIN((size_t)_selStart, strlen(_text)); _selEnd = (int)MIN((size_t)_selEnd, strlen(_text)); @@ -609,11 +609,11 @@ bool UIEdit::display(int offsetX, int offsetY) { //int CursorWidth = font->GetCharWidth(_cursorChar[0]); int cursorWidth = font->getTextWidth((byte *)_cursorChar); - int s1, s2; + int32 s1, s2; bool curFirst; // modify scroll offset if (_selStart >= _selEnd) { - while (font->getTextWidth((byte *)_text + _scrollOffset, MAX(0, _selEnd - _scrollOffset)) > _width - cursorWidth - 2 * _frameWidth) { + while (font->getTextWidth((byte *)_text + _scrollOffset, MAX<int32>(0, _selEnd - _scrollOffset)) > _width - cursorWidth - 2 * _frameWidth) { _scrollOffset++; if (_scrollOffset >= (int)strlen(_text)) { break; @@ -626,8 +626,8 @@ bool UIEdit::display(int offsetX, int offsetY) { s2 = _selStart; curFirst = true; } else { - while (font->getTextWidth((byte *)_text + _scrollOffset, MAX(0, _selStart - _scrollOffset)) + - sfont->getTextWidth((byte *)(_text + MAX(_scrollOffset, _selStart)), _selEnd - MAX(_scrollOffset, _selStart)) + while (font->getTextWidth((byte *)_text + _scrollOffset, MAX<int32>(0, _selStart - _scrollOffset)) + + sfont->getTextWidth((byte *)(_text + MAX<int32>(_scrollOffset, _selStart)), _selEnd - MAX(_scrollOffset, _selStart)) > _width - cursorWidth - 2 * _frameWidth) { _scrollOffset++; @@ -766,7 +766,7 @@ bool UIEdit::handleKeypress(Common::Event *event, bool printable) { deleteChars(_selStart, _selEnd); } if (_selEnd >= _selStart) { - _selEnd -= MAX(1, _selEnd - _selStart); + _selEnd -= MAX<int32>(1, _selEnd - _selStart); } _selStart = _selEnd; @@ -934,7 +934,7 @@ bool UIEdit::persist(BasePersistenceManager *persistMgr) { persistMgr->transfer(TMEMBER(_cursorBlinkRate)); persistMgr->transfer(TMEMBER(_cursorChar)); - persistMgr->transfer(TMEMBER(_fontSelected)); + persistMgr->transferPtr(TMEMBER_PTR(_fontSelected)); persistMgr->transfer(TMEMBER(_frameWidth)); persistMgr->transfer(TMEMBER(_maxLength)); persistMgr->transfer(TMEMBER(_scrollOffset)); diff --git a/engines/wintermute/ui/ui_entity.cpp b/engines/wintermute/ui/ui_entity.cpp index 00d442e895..1872400cdd 100644 --- a/engines/wintermute/ui/ui_entity.cpp +++ b/engines/wintermute/ui/ui_entity.cpp @@ -359,7 +359,7 @@ bool UIEntity::persist(BasePersistenceManager *persistMgr) { UIObject::persist(persistMgr); - persistMgr->transfer(TMEMBER(_entity)); + persistMgr->transferPtr(TMEMBER_PTR(_entity)); return STATUS_OK; } diff --git a/engines/wintermute/ui/ui_object.cpp b/engines/wintermute/ui/ui_object.cpp index 9dea3dadf9..07efc5e4cb 100644 --- a/engines/wintermute/ui/ui_object.cpp +++ b/engines/wintermute/ui/ui_object.cpp @@ -621,17 +621,17 @@ bool UIObject::persist(BasePersistenceManager *persistMgr) { BaseObject::persist(persistMgr); - persistMgr->transfer(TMEMBER(_back)); + persistMgr->transferPtr(TMEMBER_PTR(_back)); persistMgr->transfer(TMEMBER(_canFocus)); persistMgr->transfer(TMEMBER(_disable)); - persistMgr->transfer(TMEMBER(_focusedWidget)); - persistMgr->transfer(TMEMBER(_font)); + persistMgr->transferPtr(TMEMBER_PTR(_focusedWidget)); + persistMgr->transferPtr(TMEMBER_PTR(_font)); persistMgr->transfer(TMEMBER(_height)); - persistMgr->transfer(TMEMBER(_image)); - persistMgr->transfer(TMEMBER(_listenerObject)); - persistMgr->transfer(TMEMBER(_listenerParamObject)); + persistMgr->transferPtr(TMEMBER_PTR(_image)); + persistMgr->transferPtr(TMEMBER_PTR(_listenerObject)); + persistMgr->transferPtr(TMEMBER_PTR(_listenerParamObject)); persistMgr->transfer(TMEMBER(_listenerParamDWORD)); - persistMgr->transfer(TMEMBER(_parent)); + persistMgr->transferPtr(TMEMBER_PTR(_parent)); persistMgr->transfer(TMEMBER(_parentNotify)); persistMgr->transfer(TMEMBER(_sharedFonts)); persistMgr->transfer(TMEMBER(_sharedImages)); diff --git a/engines/wintermute/ui/ui_tiled_image.cpp b/engines/wintermute/ui/ui_tiled_image.cpp index be9f87cf58..abccdd6c39 100644 --- a/engines/wintermute/ui/ui_tiled_image.cpp +++ b/engines/wintermute/ui/ui_tiled_image.cpp @@ -358,7 +358,7 @@ bool UITiledImage::saveAsText(BaseDynamicBuffer *buffer, int indent) { } ////////////////////////////////////////////////////////////////////////// -void UITiledImage::correctSize(int *width, int *height) { +void UITiledImage::correctSize(int32 *width, int32 *height) { int tileWidth = _middleMiddle.right - _middleMiddle.left; int tileHeight = _middleMiddle.bottom - _middleMiddle.top; @@ -377,7 +377,7 @@ bool UITiledImage::persist(BasePersistenceManager *persistMgr) { persistMgr->transfer(TMEMBER(_downLeft)); persistMgr->transfer(TMEMBER(_downMiddle)); persistMgr->transfer(TMEMBER(_downRight)); - persistMgr->transfer(TMEMBER(_image)); + persistMgr->transferPtr(TMEMBER_PTR(_image)); persistMgr->transfer(TMEMBER(_middleLeft)); persistMgr->transfer(TMEMBER(_middleMiddle)); persistMgr->transfer(TMEMBER(_middleRight)); diff --git a/engines/wintermute/ui/ui_tiled_image.h b/engines/wintermute/ui/ui_tiled_image.h index 4868710264..a6cd22d53d 100644 --- a/engines/wintermute/ui/ui_tiled_image.h +++ b/engines/wintermute/ui/ui_tiled_image.h @@ -38,7 +38,7 @@ class BaseSubFrame; class UITiledImage : public BaseObject { public: DECLARE_PERSISTENT(UITiledImage, BaseObject) - void correctSize(int *width, int *height); + void correctSize(int32 *width, int32 *height); bool loadFile(const char *filename); bool loadBuffer(byte *buffer, bool complete = true); virtual bool saveAsText(BaseDynamicBuffer *buffer, int indent) override; diff --git a/engines/wintermute/ui/ui_window.cpp b/engines/wintermute/ui/ui_window.cpp index 460ec1877b..2ce9f68605 100644 --- a/engines/wintermute/ui/ui_window.cpp +++ b/engines/wintermute/ui/ui_window.cpp @@ -1257,24 +1257,24 @@ bool UIWindow::persist(BasePersistenceManager *persistMgr) { UIObject::persist(persistMgr); - persistMgr->transfer(TMEMBER(_backInactive)); + persistMgr->transferPtr(TMEMBER_PTR(_backInactive)); persistMgr->transfer(TMEMBER(_clipContents)); persistMgr->transfer(TMEMBER(_dragFrom)); persistMgr->transfer(TMEMBER(_dragging)); persistMgr->transfer(TMEMBER(_dragRect)); persistMgr->transfer(TMEMBER(_fadeBackground)); persistMgr->transfer(TMEMBER(_fadeColor)); - persistMgr->transfer(TMEMBER(_fontInactive)); - persistMgr->transfer(TMEMBER(_imageInactive)); + persistMgr->transferPtr(TMEMBER_PTR(_fontInactive)); + persistMgr->transferPtr(TMEMBER_PTR(_imageInactive)); persistMgr->transfer(TMEMBER(_inGame)); persistMgr->transfer(TMEMBER(_isMenu)); persistMgr->transfer(TMEMBER_INT(_mode)); - persistMgr->transfer(TMEMBER(_shieldButton)); - persistMgr->transfer(TMEMBER(_shieldWindow)); + persistMgr->transferPtr(TMEMBER_PTR(_shieldButton)); + persistMgr->transferPtr(TMEMBER_PTR(_shieldWindow)); persistMgr->transfer(TMEMBER_INT(_titleAlign)); persistMgr->transfer(TMEMBER(_titleRect)); persistMgr->transfer(TMEMBER(_transparent)); - persistMgr->transfer(TMEMBER(_viewport)); + persistMgr->transferPtr(TMEMBER_PTR(_viewport)); persistMgr->transfer(TMEMBER(_pauseMusic)); _widgets.persist(persistMgr); diff --git a/engines/wintermute/video/video_theora_player.cpp b/engines/wintermute/video/video_theora_player.cpp index f03be9691e..8f9db8392f 100644 --- a/engines/wintermute/video/video_theora_player.cpp +++ b/engines/wintermute/video/video_theora_player.cpp @@ -491,7 +491,7 @@ bool VideoTheoraPlayer::persist(BasePersistenceManager *persistMgr) { SetDefaults(); } - persistMgr->transfer(TMEMBER(_gameRef)); + persistMgr->transferPtr(TMEMBER_PTR(_gameRef)); persistMgr->transfer(TMEMBER(_savedPos)); persistMgr->transfer(TMEMBER(_savedState)); persistMgr->transfer(TMEMBER(_filename)); |