From 5d852b5c56cf54cbd447ad29b6ab2318ac8ef8ae Mon Sep 17 00:00:00 2001 From: MestreLion Date: Tue, 6 Jan 2015 08:39:23 -0200 Subject: SCUMM: Improve FOA keyboard help --- engines/scumm/help.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'engines/scumm') diff --git a/engines/scumm/help.cpp b/engines/scumm/help.cpp index cfb23a392a..2281e954ef 100644 --- a/engines/scumm/help.cpp +++ b/engines/scumm/help.cpp @@ -36,6 +36,8 @@ int ScummHelp::numPages(byte gameId) { case GID_MANIAC: case GID_ZAK: return 4; + case GID_INDY4: + return 5; case GID_INDY3: return 6; case GID_LOOM: @@ -43,7 +45,6 @@ int ScummHelp::numPages(byte gameId) { case GID_MONKEY_VGA: case GID_MONKEY: case GID_MONKEY2: - case GID_INDY4: case GID_TENTACLE: case GID_SAMNMAX: case GID_DIG: @@ -287,10 +288,19 @@ void ScummHelp::updateStrings(byte gameId, byte version, Common::Platform platfo ADD_BIND("F3", "Melissa"); ADD_BIND("F4", "Leslie"); } + if (gameId == GID_INDY4) { + ADD_BIND("i", _("Toggle Inventory/IQ Points display")); + ADD_BIND("f", _("Toggle Keyboard/Mouse Fighting (*)")); + ADD_LINE; + ADD_TEXT(_("* Keyboard Fighting is always on,")); + ADD_TEXT(_(" so despite the in-game message this")); + ADD_TEXT(_(" actually toggles Mouse Fighting Off/On")); + } break; case 5: switch (gameId) { case GID_INDY3: + case GID_INDY4: title = _("Fighting controls (numpad):"); ADD_BIND("7", _("Step back")); ADD_BIND("4", _("Step back")); @@ -301,7 +311,9 @@ void ScummHelp::updateStrings(byte gameId, byte version, Common::Platform platfo ADD_BIND("9", _("Punch high")); ADD_BIND("6", _("Punch middle")); ADD_BIND("3", _("Punch low")); - ADD_LINE; + if (gameId == GID_INDY4) { + ADD_BIND("0", _("Sucker punch")); + } ADD_LINE; ADD_TEXT(_("These are for Indy on left.")); ADD_TEXT(_("When Indy is on the right,")); -- cgit v1.2.3 From f1c64c2afe7d9de5ea337d61b4443376e4685ab0 Mon Sep 17 00:00:00 2001 From: Thierry Crozat Date: Tue, 3 Feb 2015 08:49:26 +0000 Subject: SCUMM: Fix handling of string resources in smash player for Steam mac games The Dig Steam/mac uses LF instead of CRLF for end of line. This fixes display of subtitles in that version. This also fixes the crash described in bug #6796. --- engines/scumm/smush/smush_player.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'engines/scumm') diff --git a/engines/scumm/smush/smush_player.cpp b/engines/scumm/smush/smush_player.cpp index 7617fc541f..2014462ab7 100644 --- a/engines/scumm/smush/smush_player.cpp +++ b/engines/scumm/smush/smush_player.cpp @@ -115,6 +115,10 @@ public: if (data_end[-2] == '\r' && data_end[-1] == '\n' && data_end[0] == '\r' && data_end[1] == '\n') { break; } + // In Steam mac version LF is used instead of CR-LF + if (data_end[-2] == '\n' && data_end[-1] == '\n') { + break; + } // In Russian Full Throttle strings are finished with // just one pair of CR-LF if (data_end[-2] == '\r' && data_end[-1] == '\n' && data_end[0] == '#') { -- cgit v1.2.3 From 666a4f3a57361e711a2854a4aa4fb5df19bc5569 Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Tue, 3 Feb 2015 12:35:17 +0200 Subject: SCUMM: Adapt wording for the fix in commit f1c64c2afe --- engines/scumm/smush/smush_player.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'engines/scumm') diff --git a/engines/scumm/smush/smush_player.cpp b/engines/scumm/smush/smush_player.cpp index 2014462ab7..05c7ff2d9a 100644 --- a/engines/scumm/smush/smush_player.cpp +++ b/engines/scumm/smush/smush_player.cpp @@ -115,7 +115,8 @@ public: if (data_end[-2] == '\r' && data_end[-1] == '\n' && data_end[0] == '\r' && data_end[1] == '\n') { break; } - // In Steam mac version LF is used instead of CR-LF + // In the Steam Mac version of The Dig, LF-LF is used + // instead of CR-LF if (data_end[-2] == '\n' && data_end[-1] == '\n') { break; } -- cgit v1.2.3 From a0661328b94f0d452995da4f91318d0952ab8346 Mon Sep 17 00:00:00 2001 From: Torbjörn Andersson Date: Sat, 7 Feb 2015 21:55:24 +0100 Subject: SCUMM: Fix detection of the DoTT Maniac Mansion easter egg target It's the key, not the gameid, that is the proper target name. In my case, the key for that version of MM had the target name "maniac-old" and gameid "maniac" (can you tell I've messed around with this file a bit on my own?), so it tried to use "maniac" as the target, which happened to be the target name for the enhanced version instead. --- engines/scumm/scumm.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engines/scumm') diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp index 7d927b0cda..99b4e695bb 100644 --- a/engines/scumm/scumm.cpp +++ b/engines/scumm/scumm.cpp @@ -2612,7 +2612,7 @@ bool ScummEngine::startManiac() { if (path.hasPrefix(currentPath)) { path.erase(0, currentPath.size() + 1); if (path.equalsIgnoreCase("maniac")) { - maniacTarget = dom.getVal("gameid"); + maniacTarget = iter->_key; break; } } -- cgit v1.2.3 From d582c8492ce5ef300e24358c80bf0adadcfd11f0 Mon Sep 17 00:00:00 2001 From: Torbjörn Andersson Date: Sun, 22 Mar 2015 12:22:30 +0100 Subject: SCUMM: Fix argc check in Cmd_Script() --- engines/scumm/debugger.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engines/scumm') diff --git a/engines/scumm/debugger.cpp b/engines/scumm/debugger.cpp index 2b718b2cfe..0ebea94608 100644 --- a/engines/scumm/debugger.cpp +++ b/engines/scumm/debugger.cpp @@ -256,7 +256,7 @@ bool ScummDebugger::Cmd_Hide(int argc, const char **argv) { bool ScummDebugger::Cmd_Script(int argc, const char** argv) { int scriptnum; - if (argc < 2) { + if (argc < 3) { debugPrintf("Syntax: script \n"); return true; } -- cgit v1.2.3 From 6a1eee88cfbc0f362bb4a2c058ece310e966ca84 Mon Sep 17 00:00:00 2001 From: Kirben Date: Thu, 16 Apr 2015 14:36:34 +1000 Subject: SCUMM: Add file prefixes used by Italian versions of several HE games. --- engines/scumm/detection_tables.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'engines/scumm') diff --git a/engines/scumm/detection_tables.h b/engines/scumm/detection_tables.h index 6eab5c752f..d42a7251d9 100644 --- a/engines/scumm/detection_tables.h +++ b/engines/scumm/detection_tables.h @@ -812,6 +812,7 @@ static const GameFilenamePattern gameFilenamesTable[] = { { "pajama3", "PyjamaHG", kGenHEPC, Common::FR_FRA, UNK, 0 }, { "pajama3", "PyjamaSKS", kGenHEPC, Common::DE_DEU, UNK, 0 }, { "pajama3", "PyjamaSKS", kGenHEMac, Common::DE_DEU, Common::kPlatformMacintosh, 0 }, + { "pajama3", "SamLDM", kGenHEPC, Common::IT_ITA, Common::kPlatformWindows, 0 }, { "pajama3", "UKPajamaEAT", kGenHEPC, Common::RU_RUS, UNK, 0 }, { "puttcircus", "puttcircus", kGenHEPC, UNK_LANG, UNK, 0 }, @@ -830,6 +831,7 @@ static const GameFilenamePattern gameFilenamesTable[] = { { "puttrace", "500demo", kGenHEPC, Common::NL_NLD, Common::kPlatformWindows, 0 }, { "puttrace", "course", kGenHEPC, Common::FR_FRA, UNK, 0 }, { "puttrace", "CourseDemo", kGenHEPC, Common::FR_FRA, UNK, 0 }, + { "puttrace", "GasGasEG", kGenHEPC, Common::IT_ITA, Common::kPlatformWindows, 0 }, { "puttrace", "racedemo", kGenHEPC, UNK_LANG, Common::kPlatformWindows, 0 }, { "puttrace", "RaceDemo", kGenHEMac, UNK_LANG, Common::kPlatformMacintosh, 0 }, { "puttrace", "Rennen", kGenHEPC, Common::DE_DEU, UNK, 0 }, @@ -926,6 +928,7 @@ static const GameFilenamePattern gameFilenamesTable[] = { { "spyfox2", "Sf2demo", kGenHEMac, UNK_LANG, Common::kPlatformMacintosh, 0 }, { "spyfox2", "Spy Fox 2", kGenHEMac, UNK_LANG, Common::kPlatformMacintosh, 0 }, { "spyfox2", "Spy Fox 2 - Demo", kGenHEMac, UNK_LANG, Common::kPlatformMacintosh, 0 }, + { "spyfox2", "SPyFoxMCR", kGenHEPC, Common::IT_ITA, Common::kPlatformWindows, 0 }, { "spyfox2", "SpyFoxOR", kGenHEPC, Common::DE_DEU, UNK, 0 }, { "spyfox2", "SpyFoxOR", kGenHEMac, Common::DE_DEU, Common::kPlatformMacintosh, 0 }, { "spyfox2", "SPYFoxORE", kGenHEPC, Common::FR_FRA, UNK, 0 }, -- cgit v1.2.3 From da19822e373bf134049b6b415f2f19bf2e1e343b Mon Sep 17 00:00:00 2001 From: Kirben Date: Thu, 16 Apr 2015 14:46:40 +1000 Subject: SCUMM: Add md5 checksums for Italian versions of several HE games. --- engines/scumm/scumm-md5.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'engines/scumm') diff --git a/engines/scumm/scumm-md5.h b/engines/scumm/scumm-md5.h index 5be18fb990..bc3548c150 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 Sun Dec 7 23:09:10 2014 + This file was generated by the md5table tool on Thu Apr 16 04:45:24 2015 DO NOT EDIT MANUALLY! */ @@ -27,6 +27,7 @@ static const MD5Table md5table[] = { { "0557df19f046a84c2fdc63507c6616cb", "farm", "HE 72", "Demo", -1, Common::NL_NLD, Common::kPlatformWindows }, { "055ffe4f47753e47594ac67823220c54", "puttrace", "HE 99", "", -1, Common::DE_DEU, Common::kPlatformUnknown }, { "057c9b456dedcc4d71b991a3072a20b3", "monkey", "SEGA", "", 9465, Common::JA_JPN, Common::kPlatformSegaCD }, + { "05d3143827ab4f5d2521a1a47dab8ff2", "puttrace", "HE 98", "", -1, Common::IT_ITA, Common::kPlatformUnknown }, { "06b187468113f9ae5a400b148a847fac", "atlantis", "Floppy", "Floppy", 12075, Common::EN_ANY, Common::kPlatformMacintosh }, { "06c3cf4f31daad8b1cd93153491db9e6", "pajama3", "", "", 79382, Common::NL_NLD, Common::kPlatformUnknown }, { "07433205acdca3bc553d0e731588b35f", "airport", "", "", -1, Common::EN_ANY, Common::kPlatformWindows }, @@ -164,6 +165,7 @@ static const MD5Table md5table[] = { { "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 }, + { "3785fd25f7e02b5782bfc5072d8f77c8", "spyfox2", "", "", -1, Common::IT_ITA, Common::kPlatformUnknown }, { "37aed3f91c1ef959e0bd265f9b13781f", "pajama", "HE 100", "Updated", -1, Common::EN_USA, Common::kPlatformUnknown }, { "37f56ceb13e401a7ac7d9e6b37fecaf7", "loom", "EGA", "EGA", 5748, Common::EN_ANY, Common::kPlatformDOS }, { "37ff1b308999c4cca7319edfcc1280a0", "puttputt", "HE 70", "Demo", 8269, Common::EN_ANY, Common::kPlatformWindows }, @@ -376,6 +378,7 @@ static const MD5Table md5table[] = { { "8368f552b1e3eba559f8d559bcc4cadb", "freddi3", "", "", -1, Common::UNK_LANG, Common::kPlatformUnknown }, { "839a658f7d22de00787ebc945348cdb6", "dog", "", "", 19681, Common::DE_DEU, Common::kPlatformWindows }, { "83cedbe26aa8b58988e984e3d34cac8e", "freddi3", "HE 99", "", -1, Common::DE_DEU, Common::kPlatformUnknown }, + { "83e7a9205567dceb456ee35eeaf26ffa", "pajama3", "", "", -1, Common::IT_ITA, Common::kPlatformUnknown }, { "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 }, -- cgit v1.2.3 From 8b82090c91cf10d231d232a1a29ebb3936d61618 Mon Sep 17 00:00:00 2001 From: Kirben Date: Thu, 7 May 2015 10:23:11 +1000 Subject: SCUMM: Add UK version of Pajama Sam 2 for Windows. --- engines/scumm/scumm-md5.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'engines/scumm') diff --git a/engines/scumm/scumm-md5.h b/engines/scumm/scumm-md5.h index bc3548c150..4353fe2969 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 Thu Apr 16 04:45:24 2015 + This file was generated by the md5table tool on Thu May 07 00:21:21 2015 DO NOT EDIT MANUALLY! */ @@ -120,6 +120,7 @@ static const MD5Table md5table[] = { { "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::kPlatformDOS }, + { "2328be0317008ef047eed7912a4b0850", "pajama2", "HE 98.5", "", -1, Common::EN_GRB, Common::kPlatformWindows }, { "23394c8d29cc63c61313959431a12476", "spyfox", "HE 100", "Updated", -1, Common::EN_ANY, Common::kPlatformWindows }, { "24942a4200d99bdb4bdb78f9c7e07027", "pajama3", "", "Mini Game", 13911, Common::NL_NLD, Common::kPlatformWindows }, { "254fede2f15dbb32a23760d601b01816", "zak", "V1", "", -1, Common::EN_ANY, Common::kPlatformC64 }, -- cgit v1.2.3 From 2456163f5dd08a72e88c4af9e76f646406ae7d36 Mon Sep 17 00:00:00 2001 From: Kirben Date: Thu, 7 May 2015 11:04:08 +1000 Subject: SCUMM: SCUMM: Add English 1.4 version of Indiana Jones and the Last Crusade for DOS. --- engines/scumm/scumm-md5.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'engines/scumm') diff --git a/engines/scumm/scumm-md5.h b/engines/scumm/scumm-md5.h index 4353fe2969..a9043e80a5 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 Thu May 07 00:21:21 2015 + This file was generated by the md5table tool on Thu May 07 00:45:51 2015 DO NOT EDIT MANUALLY! */ @@ -253,6 +253,7 @@ static const MD5Table md5table[] = { { "55f4e9402bec2bded383843123f37c5c", "pajama2", "HE 98.5", "", -1, Common::DE_DEU, Common::kPlatformWindows }, { "566165a7338fa11029e7c14d94fa70d0", "freddi", "HE 73", "Demo", 9800, Common::EN_ANY, Common::kPlatformWindows }, { "56b5922751be7ffd771b38dda56b028b", "freddi", "HE 100", "", 34837, Common::NL_NLD, Common::kPlatformWii }, + { "56e8c37a0a08c3a7076f82417461a877", "indy3", "EGA", "EGA", -1, Common::EN_ANY, Common::kPlatformDOS }, { "5719fc8a13b4638b78d9d8d12f091f94", "puttrace", "HE 99", "", -1, Common::FR_FRA, Common::kPlatformWindows }, { "5798972220cd458be2626d54c80f71d7", "atlantis", "Floppy", "Floppy", -1, Common::IT_ITA, Common::kPlatformAmiga }, { "57a17febe2183f521250e55d55b83e60", "PuttTime", "HE 99", "", -1, Common::FR_FRA, Common::kPlatformWindows }, -- cgit v1.2.3 From 3f3ad61927874f5565242211acad12fcdf83b136 Mon Sep 17 00:00:00 2001 From: Kirben Date: Thu, 7 May 2015 11:12:59 +1000 Subject: SCUMM: SCUMM: Add English 1.6 disk version of Day of the Tentacle for DOS. --- engines/scumm/scumm-md5.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'engines/scumm') diff --git a/engines/scumm/scumm-md5.h b/engines/scumm/scumm-md5.h index a9043e80a5..1158aaa980 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 Thu May 07 00:45:51 2015 + This file was generated by the md5table tool on Thu May 07 01:11:26 2015 DO NOT EDIT MANUALLY! */ @@ -656,6 +656,7 @@ static const MD5Table md5table[] = { { "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 }, + { "f0ccc12a8704bf57706b42a37f877128", "tentacle", "Floppy", "Floppy", -1, Common::EN_ANY, Common::kPlatformDOS }, { "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::kPlatformDOS }, -- cgit v1.2.3 From 04931d040085d77d031290fda57ca2c5dc486f54 Mon Sep 17 00:00:00 2001 From: Thierry Crozat Date: Thu, 7 May 2015 21:30:25 +0100 Subject: SCUMM: Add DOS en demo for Indiana Jones and the Fate of Atlantis This was reported by Paulo Vicente in bug #6862. --- engines/scumm/scumm-md5.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'engines/scumm') diff --git a/engines/scumm/scumm-md5.h b/engines/scumm/scumm-md5.h index 1158aaa980..bac7a4665b 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 Thu May 07 01:11:26 2015 + This file was generated by the md5table tool on Thu May 7 20:24:51 2015 DO NOT EDIT MANUALLY! */ @@ -68,6 +68,7 @@ static const MD5Table md5table[] = { { "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 }, + { "12cdc256eae5a461bcc9a49975999841", "atlantis", "Floppy", "Demo", -1, Common::EN_ANY, Common::kPlatformDOS }, { "132bff65e6367c09cc69318ce1b59333", "monkey2", "", "", 11155, Common::EN_ANY, Common::kPlatformAmiga }, { "1387d16aa620dc1c2d1fd87f8a9e7a09", "puttcircus", "", "Demo", -1, Common::FR_FRA, Common::kPlatformWindows }, { "13d2a86a7290813a1c386490447d72db", "fbear", "HE 62", "", -1, Common::EN_ANY, Common::kPlatform3DO }, -- cgit v1.2.3 From aee23fd7046622e18456d5e777bdf1c33b0f9b7d Mon Sep 17 00:00:00 2001 From: Thierry Crozat Date: Sun, 10 May 2015 15:28:18 +0100 Subject: SCUMM: Add detection for Full Throttle French Mac Also add file size for Sam & Max and DOTT French Mac versions. --- engines/scumm/scumm-md5.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'engines/scumm') diff --git a/engines/scumm/scumm-md5.h b/engines/scumm/scumm-md5.h index bac7a4665b..1cbefee105 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 Thu May 7 20:24:51 2015 + This file was generated by the md5table tool on Sun May 10 14:23:43 2015 DO NOT EDIT MANUALLY! */ @@ -180,7 +180,7 @@ static const MD5Table md5table[] = { { "3a03dab514e4038df192d8a8de469788", "atlantis", "Floppy", "Floppy", -1, Common::EN_ANY, Common::kPlatformAmiga }, { "3a0c35f3c147b98a2bdf8d400cfc4ab5", "indy3", "FM-TOWNS", "", -1, Common::JA_JPN, Common::kPlatformFMTowns }, { "3a3e592b074f595489f7f11e150c398d", "puttzoo", "HE 99", "Updated", -1, Common::EN_USA, Common::kPlatformWindows }, - { "3a5d13675e9a23aedac0bac7730f0ac1", "samnmax", "", "CD", -1, Common::FR_FRA, Common::kPlatformMacintosh }, + { "3a5d13675e9a23aedac0bac7730f0ac1", "samnmax", "", "CD", 228446581, Common::FR_FRA, Common::kPlatformMacintosh }, { "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 }, @@ -193,6 +193,7 @@ static const MD5Table md5table[] = { { "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 }, + { "403d2ec4d60d3cdae925e6cbf67716d6", "ft", "", "", 489436643, Common::FR_FRA, Common::kPlatformMacintosh }, { "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 }, @@ -643,7 +644,7 @@ static const MD5Table md5table[] = { { "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 }, + { "ede149fda3edfc1dbd7347e0737cb583", "tentacle", "", "CD", 282830409, Common::FR_FRA, Common::kPlatformMacintosh }, { "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 }, -- cgit v1.2.3 From e670951a469b33e28bc9352f8417ba42868468a8 Mon Sep 17 00:00:00 2001 From: Kirben Date: Tue, 9 Jun 2015 11:58:59 +1000 Subject: SCUMM: Fix bug #6592 SCUMM: ZAK - Read Ticket is too fast to read. --- engines/scumm/scumm.cpp | 1 + engines/scumm/scumm.h | 1 + engines/scumm/string.cpp | 7 +++++++ 3 files changed, 9 insertions(+) (limited to 'engines/scumm') diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp index 99b4e695bb..c2e0cb2e05 100644 --- a/engines/scumm/scumm.cpp +++ b/engines/scumm/scumm.cpp @@ -316,6 +316,7 @@ ScummEngine::ScummEngine(OSystem *syst, const DetectorResult &dr) _NES_lastTalkingActor = 0; _NES_talkColor = 0; _keepText = false; + _msgCount = 0; _costumeLoader = NULL; _costumeRenderer = NULL; _2byteFontPtr = 0; diff --git a/engines/scumm/scumm.h b/engines/scumm/scumm.h index 30b4d61880..6e0adc3ff3 100644 --- a/engines/scumm/scumm.h +++ b/engines/scumm/scumm.h @@ -1182,6 +1182,7 @@ protected: byte _charsetBuffer[512]; bool _keepText; + byte _msgCount; int _nextLeft, _nextTop; diff --git a/engines/scumm/string.cpp b/engines/scumm/string.cpp index d60c4c6a50..3049fbcf62 100644 --- a/engines/scumm/string.cpp +++ b/engines/scumm/string.cpp @@ -283,6 +283,7 @@ bool ScummEngine::handleNextCharsetCode(Actor *a, int *code) { switch (c) { case 1: c = 13; // new line + _msgCount = _screenWidth; endLoop = true; break; case 2: @@ -293,6 +294,7 @@ bool ScummEngine::handleNextCharsetCode(Actor *a, int *code) { case 3: _haveMsg = (_game.version >= 7) ? 1 : 0xFF; _keepText = false; + _msgCount = 0; endLoop = true; break; case 8: @@ -573,6 +575,9 @@ void ScummEngine::CHARSET_1() { #endif restoreCharsetBg(); } + _msgCount = 0; + } else if (_game.version <= 2) { + _talkDelay += _msgCount * _defaultTalkDelay; } if (_game.version > 3) { @@ -600,6 +605,7 @@ void ScummEngine::CHARSET_1() { // End of text reached, set _haveMsg accordingly _haveMsg = (_game.version >= 7) ? 2 : 1; _keepText = false; + _msgCount = 0; break; } @@ -648,6 +654,7 @@ void ScummEngine::CHARSET_1() { } if (_game.version <= 3) { _charset->printChar(c, false); + _msgCount += 1; } else { if (_game.features & GF_16BIT_COLOR) { // HE games which use sprites for subtitles -- cgit v1.2.3 From 343d0c41dbc7e4473787b2ae0275ba7e80b27480 Mon Sep 17 00:00:00 2001 From: Kirben Date: Sun, 28 Jun 2015 13:22:20 +1000 Subject: SCUMM: Fix bug #6873 FARM: Crash at the end of trivia minigame on easy. --- engines/scumm/detection_tables.h | 2 +- engines/scumm/scumm-md5.h | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) (limited to 'engines/scumm') diff --git a/engines/scumm/detection_tables.h b/engines/scumm/detection_tables.h index d42a7251d9..5a994cb699 100644 --- a/engines/scumm/detection_tables.h +++ b/engines/scumm/detection_tables.h @@ -306,9 +306,9 @@ static const GameSettings gameVariantsTable[] = { // Humongous Entertainment Scumm Version 7.2 {"airport", "", 0, GID_HEGAME, 6, 72, MDT_NONE, GF_USE_KEY, UNK, GUIO3(GUIO_NOLAUNCHLOAD, GUIO_NOMIDI, GUIO_NOASPECT)}, + {"farm", "", 0, GID_HEGAME, 6, 72, MDT_NONE, GF_USE_KEY, UNK, GUIO3(GUIO_NOLAUNCHLOAD, GUIO_NOMIDI, GUIO_NOASPECT)}, // Changed o_getResourceSize to cover all resource types - {"farm", "", 0, GID_HEGAME, 6, 73, MDT_NONE, GF_USE_KEY, UNK, GUIO3(GUIO_NOLAUNCHLOAD, GUIO_NOMIDI, GUIO_NOASPECT)}, {"puttzoo", "", 0, GID_PUTTZOO, 6, 73, MDT_NONE, GF_USE_KEY, UNK, GUIO3(GUIO_NOLAUNCHLOAD, GUIO_NOMIDI, GUIO_NOASPECT)}, {"puttzoo", "HE 72", 0, GID_PUTTZOO, 6, 72, MDT_NONE, GF_USE_KEY, UNK, GUIO3(GUIO_NOLAUNCHLOAD, GUIO_NOMIDI, GUIO_NOASPECT)}, {"puttzoo", "HE 98.5", 0, GID_PUTTZOO, 6, 98, MDT_NONE, GF_USE_KEY | GF_HE_985, UNK, GUIO3(GUIO_NOLAUNCHLOAD, GUIO_NOMIDI, GUIO_NOASPECT)}, diff --git a/engines/scumm/scumm-md5.h b/engines/scumm/scumm-md5.h index 1cbefee105..a836cf12bc 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 Sun May 10 14:23:43 2015 + This file was generated by the md5table tool on Sun Jun 28 03:19:52 2015 DO NOT EDIT MANUALLY! */ @@ -272,7 +272,7 @@ static const MD5Table md5table[] = { { "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::kPlatformDOS }, - { "5dda73606533d66a4c3f4f9ea6e842af", "farm", "", "", 87061, Common::RU_RUS, Common::kPlatformWindows }, + { "5dda73606533d66a4c3f4f9ea6e842af", "farm", "HE 73", "", 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::kPlatformDOS }, @@ -465,7 +465,7 @@ static const MD5Table md5table[] = { { "a194f15f51ee62badab74b9e7da97693", "baseball2001", "", "Demo", 20507, Common::EN_ANY, Common::kPlatformUnknown }, { "a197a87ae77f3b3333f09a7a2c448fe2", "freddi", "HE 99", "Updated", -1, Common::EN_ANY, Common::kPlatformWindows }, { "a22af0ad0e3126d19d22707b0267a37d", "balloon", "HE 80", "", -1, Common::NL_NLD, Common::kPlatformWindows }, - { "a2386da005672cbd5136f4f27a626c5f", "farm", "", "", 87061, Common::NL_NLD, Common::kPlatformWindows }, + { "a2386da005672cbd5136f4f27a626c5f", "farm", "HE 73", "", 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::kPlatformDOS }, @@ -480,7 +480,7 @@ static const MD5Table md5table[] = { { "a654fb60c3b67d6317a7894ffd9f25c5", "pajama3", "", "Demo", -1, Common::EN_USA, Common::kPlatformUnknown }, { "a71014c53a6d18c66ef2ea0ee42328e9", "PuttTime", "HE 99", "Mini Game", 18458, Common::NL_NLD, Common::kPlatformWindows }, { "a7cacad9c40c4dc9e1812abf6c8af9d5", "puttcircus", "", "Demo", -1, Common::EN_ANY, Common::kPlatformUnknown }, - { "a85856675429fe88051744f755b72f93", "farm", "", "", -1, Common::EN_ANY, Common::kPlatformWindows }, + { "a85856675429fe88051744f755b72f93", "farm", "HE 73", "", -1, Common::EN_ANY, Common::kPlatformWindows }, { "a86f9c49355579c30d4a55b477c0d869", "baseball2001", "", "", -1, Common::EN_ANY, Common::kPlatformUnknown }, { "a8fcc3084ad5e3e569722755f205b1ef", "pajama3", "", "Mini Game", 13911, Common::DE_DEU, Common::kPlatformWindows }, { "a9543ef0d79bcb47cd76ec197ad0a967", "puttmoon", "", "", -1, Common::EN_ANY, Common::kPlatform3DO }, @@ -650,7 +650,7 @@ static const MD5Table md5table[] = { { "ee785fe2569bc9965526e774f7ab86f1", "spyfox", "HE 99", "", -1, Common::FR_FRA, Common::kPlatformMacintosh }, { "ee8cfeb76e55d43a01c25e0865a9db76", "puttrace", "HE 98", "Demo", 13135, Common::NL_NLD, Common::kPlatformMacintosh }, { "eea4d9ac2fb6f145945a308e8866915b", "maniac", "C64", "", -1, Common::EN_ANY, Common::kPlatformC64 }, - { "eeb606c2d2ec877a712a9f20c10bcdda", "farm", "", "", 87034, Common::NL_NLD, Common::kPlatformMacintosh }, + { "eeb606c2d2ec877a712a9f20c10bcdda", "farm", "HE 73", "", 87034, Common::NL_NLD, Common::kPlatformMacintosh }, { "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::kPlatformDOS }, @@ -679,7 +679,7 @@ static const MD5Table md5table[] = { { "faa89ab5e67ba4eebb4399f584f7490c", "pajama3", "", "Mini Game", 13911, Common::FR_FRA, Common::kPlatformWindows }, { "fb66aa42de21675116346213f176a366", "monkey", "VGA", "VGA", -1, Common::IT_ITA, Common::kPlatformAmiga }, { "fbb697d89d2beca87360a145f467bdae", "PuttTime", "HE 90", "Demo", -1, Common::DE_DEU, Common::kPlatformUnknown }, - { "fbbbb38a81fc9d6a61d509278390a290", "farm", "", "", -1, Common::EN_ANY, Common::kPlatformMacintosh }, + { "fbbbb38a81fc9d6a61d509278390a290", "farm", "HE 73", "", -1, Common::EN_ANY, Common::kPlatformMacintosh }, { "fbdd947d21e8f5bac6d6f7a316af1c5a", "spyfox", "", "Demo", 15693, Common::EN_ANY, Common::kPlatformUnknown }, { "fc53ce0e5f6562b1c1e1b4b8203acafb", "samnmax", "Floppy", "Floppy", -1, Common::ES_ESP, Common::kPlatformDOS }, { "fc6b6148e80d67939d9a18697c0f626a", "monkey", "EGA", "EGA", 8367, Common::DE_DEU, Common::kPlatformDOS }, -- cgit v1.2.3 From 2e8f9dcec93653f1bd1f115662f9fcf3a5581fd8 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Fri, 3 Apr 2015 01:05:03 -0400 Subject: AUDIO: Remove the sample rate configuration from the OPL code --- engines/scumm/players/player_ad.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engines/scumm') diff --git a/engines/scumm/players/player_ad.cpp b/engines/scumm/players/player_ad.cpp index adcda68e10..b22180b47f 100644 --- a/engines/scumm/players/player_ad.cpp +++ b/engines/scumm/players/player_ad.cpp @@ -38,7 +38,7 @@ namespace Scumm { Player_AD::Player_AD(ScummEngine *scumm, Audio::Mixer *mixer) : _vm(scumm), _mixer(mixer), _rate(mixer->getOutputRate()) { _opl2 = OPL::Config::create(); - if (!_opl2->init(_rate)) { + if (!_opl2->init()) { error("Could not initialize OPL2 emulator"); } -- cgit v1.2.3 From 0bb13b358e1126f25bd8e6053da2b4343269252f Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Fri, 3 Apr 2015 01:48:34 -0400 Subject: SCUMM: Use the built-in OPL timer for Player_AD --- engines/scumm/players/player_ad.cpp | 44 ++++++++++--------------------------- engines/scumm/players/player_ad.h | 8 +++---- 2 files changed, 14 insertions(+), 38 deletions(-) (limited to 'engines/scumm') diff --git a/engines/scumm/players/player_ad.cpp b/engines/scumm/players/player_ad.cpp index b22180b47f..ea59a22c66 100644 --- a/engines/scumm/players/player_ad.cpp +++ b/engines/scumm/players/player_ad.cpp @@ -42,19 +42,12 @@ Player_AD::Player_AD(ScummEngine *scumm, Audio::Mixer *mixer) error("Could not initialize OPL2 emulator"); } - _samplesPerCallback = _rate / AD_CALLBACK_FREQUENCY; - _samplesPerCallbackRemainder = _rate % AD_CALLBACK_FREQUENCY; - _samplesTillCallback = 0; - _samplesTillCallbackRemainder = 0; - memset(_registerBackUpTable, 0, sizeof(_registerBackUpTable)); writeReg(0x01, 0x00); writeReg(0xBD, 0x00); writeReg(0x08, 0x00); writeReg(0x01, 0x20); - _mixer->playStream(Audio::Mixer::kPlainSoundType, &_soundHandle, this, -1, Audio::Mixer::kMaxChannelVolume, 0, DisposeAfterUse::NO, true); - _engineMusicTimer = 0; _soundPlaying = -1; @@ -78,6 +71,9 @@ Player_AD::Player_AD(ScummEngine *scumm, Audio::Mixer *mixer) _musicVolume = _sfxVolume = 255; _isSeeking = false; + + _opl2->start(new Common::Functor0Mem(this, &Player_AD::onTimer), AD_CALLBACK_FREQUENCY); + _mixer->playStream(Audio::Mixer::kPlainSoundType, &_soundHandle, this, -1, Audio::Mixer::kMaxChannelVolume, 0, DisposeAfterUse::NO, true); } Player_AD::~Player_AD() { @@ -244,36 +240,18 @@ void Player_AD::saveLoadWithSerializer(Serializer *ser) { } } -int Player_AD::readBuffer(int16 *buffer, const int numSamples) { +void Player_AD::onTimer() { Common::StackLock lock(_mutex); - int len = numSamples; - - while (len > 0) { - if (!_samplesTillCallback) { - if (_curOffset) { - updateMusic(); - } - - updateSfx(); - - _samplesTillCallback = _samplesPerCallback; - _samplesTillCallbackRemainder += _samplesPerCallbackRemainder; - if (_samplesTillCallbackRemainder >= AD_CALLBACK_FREQUENCY) { - ++_samplesTillCallback; - _samplesTillCallbackRemainder -= AD_CALLBACK_FREQUENCY; - } - } - - const int samplesToRead = MIN(len, _samplesTillCallback); - _opl2->readBuffer(buffer, samplesToRead); - - buffer += samplesToRead; - len -= samplesToRead; - _samplesTillCallback -= samplesToRead; + if (_curOffset) { + updateMusic(); } - return numSamples; + updateSfx(); +} + +int Player_AD::readBuffer(int16 *buffer, const int numSamples) { + return _opl2->readBuffer(buffer, numSamples); } void Player_AD::setupVolume() { diff --git a/engines/scumm/players/player_ad.h b/engines/scumm/players/player_ad.h index 63a8503f47..9662b08927 100644 --- a/engines/scumm/players/player_ad.h +++ b/engines/scumm/players/player_ad.h @@ -62,6 +62,9 @@ public: virtual bool endOfData() const { return false; } virtual int getRate() const { return _rate; } + // Timer callback + void onTimer(); + private: ScummEngine *const _vm; Common::Mutex _mutex; @@ -75,11 +78,6 @@ private: OPL::OPL *_opl2; - int _samplesPerCallback; - int _samplesPerCallbackRemainder; - int _samplesTillCallback; - int _samplesTillCallbackRemainder; - int _soundPlaying; int32 _engineMusicTimer; -- cgit v1.2.3 From bed9da8b9dbbaa19d317f71663e42875c1717fda Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Thu, 30 Apr 2015 00:01:30 -0400 Subject: AUDIO: Remove all AudioStream access to OPL --- engines/scumm/players/player_ad.cpp | 9 +-------- engines/scumm/players/player_ad.h | 10 +--------- 2 files changed, 2 insertions(+), 17 deletions(-) (limited to 'engines/scumm') diff --git a/engines/scumm/players/player_ad.cpp b/engines/scumm/players/player_ad.cpp index ea59a22c66..5c0d443105 100644 --- a/engines/scumm/players/player_ad.cpp +++ b/engines/scumm/players/player_ad.cpp @@ -36,7 +36,7 @@ namespace Scumm { #define AD_CALLBACK_FREQUENCY 472 Player_AD::Player_AD(ScummEngine *scumm, Audio::Mixer *mixer) - : _vm(scumm), _mixer(mixer), _rate(mixer->getOutputRate()) { + : _vm(scumm), _mixer(mixer) { _opl2 = OPL::Config::create(); if (!_opl2->init()) { error("Could not initialize OPL2 emulator"); @@ -73,12 +73,9 @@ Player_AD::Player_AD(ScummEngine *scumm, Audio::Mixer *mixer) _isSeeking = false; _opl2->start(new Common::Functor0Mem(this, &Player_AD::onTimer), AD_CALLBACK_FREQUENCY); - _mixer->playStream(Audio::Mixer::kPlainSoundType, &_soundHandle, this, -1, Audio::Mixer::kMaxChannelVolume, 0, DisposeAfterUse::NO, true); } Player_AD::~Player_AD() { - _mixer->stopHandle(_soundHandle); - stopAllSounds(); Common::StackLock lock(_mutex); delete _opl2; @@ -250,10 +247,6 @@ void Player_AD::onTimer() { updateSfx(); } -int Player_AD::readBuffer(int16 *buffer, const int numSamples) { - return _opl2->readBuffer(buffer, numSamples); -} - void Player_AD::setupVolume() { // Setup the correct volume _musicVolume = CLIP(ConfMan.getInt("music_volume"), 0, Audio::Mixer::kMaxChannelVolume); diff --git a/engines/scumm/players/player_ad.h b/engines/scumm/players/player_ad.h index 9662b08927..b8cd8dc359 100644 --- a/engines/scumm/players/player_ad.h +++ b/engines/scumm/players/player_ad.h @@ -41,7 +41,7 @@ class ScummEngine; /** * Sound output for v3/v4 AdLib data. */ -class Player_AD : public MusicEngine, public Audio::AudioStream { +class Player_AD : public MusicEngine { public: Player_AD(ScummEngine *scumm, Audio::Mixer *mixer); virtual ~Player_AD(); @@ -56,12 +56,6 @@ public: virtual void saveLoadWithSerializer(Serializer *ser); - // AudioStream API - virtual int readBuffer(int16 *buffer, const int numSamples); - virtual bool isStereo() const { return false; } - virtual bool endOfData() const { return false; } - virtual int getRate() const { return _rate; } - // Timer callback void onTimer(); @@ -69,8 +63,6 @@ private: ScummEngine *const _vm; Common::Mutex _mutex; Audio::Mixer *const _mixer; - const int _rate; - Audio::SoundHandle _soundHandle; void setupVolume(); int _musicVolume; -- cgit v1.2.3 From ac4360af88d2dfec53fc00677c0284b8ab849b86 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Sun, 19 Jul 2015 17:08:08 +0200 Subject: SCUMM: Get rid of unused Audio::mixer references --- engines/scumm/players/player_ad.cpp | 5 +++-- engines/scumm/players/player_ad.h | 4 +--- engines/scumm/scumm.cpp | 2 +- 3 files changed, 5 insertions(+), 6 deletions(-) (limited to 'engines/scumm') diff --git a/engines/scumm/players/player_ad.cpp b/engines/scumm/players/player_ad.cpp index 5c0d443105..4d4be2c3c2 100644 --- a/engines/scumm/players/player_ad.cpp +++ b/engines/scumm/players/player_ad.cpp @@ -27,6 +27,7 @@ #include "scumm/saveload.h" #include "audio/fmopl.h" +#include "audio/mixer.h" #include "common/textconsole.h" #include "common/config-manager.h" @@ -35,8 +36,8 @@ namespace Scumm { #define AD_CALLBACK_FREQUENCY 472 -Player_AD::Player_AD(ScummEngine *scumm, Audio::Mixer *mixer) - : _vm(scumm), _mixer(mixer) { +Player_AD::Player_AD(ScummEngine *scumm) + : _vm(scumm) { _opl2 = OPL::Config::create(); if (!_opl2->init()) { error("Could not initialize OPL2 emulator"); diff --git a/engines/scumm/players/player_ad.h b/engines/scumm/players/player_ad.h index b8cd8dc359..63fda3cc7c 100644 --- a/engines/scumm/players/player_ad.h +++ b/engines/scumm/players/player_ad.h @@ -26,7 +26,6 @@ #include "scumm/music.h" #include "audio/audiostream.h" -#include "audio/mixer.h" #include "common/mutex.h" @@ -43,7 +42,7 @@ class ScummEngine; */ class Player_AD : public MusicEngine { public: - Player_AD(ScummEngine *scumm, Audio::Mixer *mixer); + Player_AD(ScummEngine *scumm); virtual ~Player_AD(); // MusicEngine API @@ -62,7 +61,6 @@ public: private: ScummEngine *const _vm; Common::Mutex _mutex; - Audio::Mixer *const _mixer; void setupVolume(); int _musicVolume; diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp index c2e0cb2e05..24d676a1ff 100644 --- a/engines/scumm/scumm.cpp +++ b/engines/scumm/scumm.cpp @@ -1905,7 +1905,7 @@ void ScummEngine::setupMusic(int midi) { // EGA/VGA. However, we support multi MIDI for that game and we cannot // support this with the Player_AD code at the moment. The reason here // is that multi MIDI is supported internally by our iMuse output. - _musicEngine = new Player_AD(this, _mixer); + _musicEngine = new Player_AD(this); } else if (_game.version >= 3 && _game.heversion <= 62) { MidiDriver *nativeMidiDriver = 0; MidiDriver *adlibMidiDriver = 0; -- cgit v1.2.3 From 1d45e08889f1be3151c000fdde18f4b4b094c69c Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Wed, 2 Sep 2015 22:03:25 -0400 Subject: SCUMM: Do not reverse stereo for digital iMuse sounds --- engines/scumm/imuse_digi/dimuse.cpp | 3 +-- engines/scumm/imuse_digi/dimuse_track.cpp | 9 +++------ 2 files changed, 4 insertions(+), 8 deletions(-) (limited to 'engines/scumm') diff --git a/engines/scumm/imuse_digi/dimuse.cpp b/engines/scumm/imuse_digi/dimuse.cpp index db260dce42..3f61946bf2 100644 --- a/engines/scumm/imuse_digi/dimuse.cpp +++ b/engines/scumm/imuse_digi/dimuse.cpp @@ -201,8 +201,7 @@ void IMuseDigital::saveOrLoad(Serializer *ser) { track->stream = Audio::makeQueuingAudioStream(freq, (track->mixerFlags & kFlagStereo) != 0); - _mixer->playStream(track->getType(), &track->mixChanHandle, track->stream, -1, track->getVol(), track->getPan(), - DisposeAfterUse::YES, false, (track->mixerFlags & kFlagStereo) != 0); + _mixer->playStream(track->getType(), &track->mixChanHandle, track->stream, -1, track->getVol(), track->getPan()); _mixer->pauseHandle(track->mixChanHandle, true); } } diff --git a/engines/scumm/imuse_digi/dimuse_track.cpp b/engines/scumm/imuse_digi/dimuse_track.cpp index 34926fa34e..b7abdd074e 100644 --- a/engines/scumm/imuse_digi/dimuse_track.cpp +++ b/engines/scumm/imuse_digi/dimuse_track.cpp @@ -110,8 +110,7 @@ void IMuseDigital::startSound(int soundId, const char *soundName, int soundType, track->souStreamUsed = (input != 0); if (track->souStreamUsed) { - _mixer->playStream(track->getType(), &track->mixChanHandle, input, -1, track->getVol(), track->getPan(), - DisposeAfterUse::YES, false, (track->mixerFlags & kFlagStereo) != 0); + _mixer->playStream(track->getType(), &track->mixChanHandle, input, -1, track->getVol(), track->getPan()); } else { strcpy(track->soundName, soundName); track->soundDesc = _sound->openSound(soundId, soundName, soundType, volGroupId, -1); @@ -167,8 +166,7 @@ void IMuseDigital::startSound(int soundId, const char *soundName, int soundType, } track->stream = Audio::makeQueuingAudioStream(freq, track->mixerFlags & kFlagStereo); - _mixer->playStream(track->getType(), &track->mixChanHandle, track->stream, -1, track->getVol(), track->getPan(), - DisposeAfterUse::YES, false, (track->mixerFlags & kFlagStereo) != 0); + _mixer->playStream(track->getType(), &track->mixChanHandle, track->stream, -1, track->getVol(), track->getPan()); } track->used = true; @@ -368,8 +366,7 @@ Track *IMuseDigital::cloneToFadeOutTrack(Track *track, int fadeDelay) { // Create an appendable output buffer fadeTrack->stream = Audio::makeQueuingAudioStream(_sound->getFreq(fadeTrack->soundDesc), track->mixerFlags & kFlagStereo); - _mixer->playStream(track->getType(), &fadeTrack->mixChanHandle, fadeTrack->stream, -1, fadeTrack->getVol(), fadeTrack->getPan(), - DisposeAfterUse::YES, false, (track->mixerFlags & kFlagStereo) != 0); + _mixer->playStream(track->getType(), &fadeTrack->mixChanHandle, fadeTrack->stream, -1, fadeTrack->getVol(), fadeTrack->getPan()); fadeTrack->used = true; debug(5, "cloneToFadeOutTrack() - end of func, soundId %d, fade soundId %d", track->soundId, fadeTrack->soundId); -- cgit v1.2.3 From 5be63fdda6e864ad81ae05b950a1b6fb098d68a0 Mon Sep 17 00:00:00 2001 From: Thierry Crozat Date: Sun, 11 Oct 2015 18:58:50 +0100 Subject: SCUMM: Mark additional strings for translation These were reported in bug #6887 --- engines/scumm/POTFILES | 1 + engines/scumm/input.cpp | 9 +++++---- 2 files changed, 6 insertions(+), 4 deletions(-) (limited to 'engines/scumm') diff --git a/engines/scumm/POTFILES b/engines/scumm/POTFILES index 6d10537d3c..246f14d3f0 100644 --- a/engines/scumm/POTFILES +++ b/engines/scumm/POTFILES @@ -1,5 +1,6 @@ engines/scumm/dialogs.cpp engines/scumm/help.cpp +engines/scumm/input.cpp engines/scumm/scumm.cpp engines/scumm/players/player_v3m.cpp engines/scumm/players/player_v5m.cpp diff --git a/engines/scumm/input.cpp b/engines/scumm/input.cpp index 86048af57c..3ce053f6bc 100644 --- a/engines/scumm/input.cpp +++ b/engines/scumm/input.cpp @@ -23,6 +23,7 @@ #include "common/config-manager.h" #include "common/events.h" #include "common/system.h" +#include "common/translation.h" #include "gui/message.h" #include "gui/gui-manager.h" @@ -568,9 +569,9 @@ void ScummEngine::processKeyboard(Common::KeyState lastKeyHit) { lastKeyHit.hasFlags(Common::KBD_CTRL)) { _snapScroll ^= 1; if (_snapScroll) { - messageDialog("Snap scroll on"); + messageDialog(_("Snap scroll on")); } else { - messageDialog("Snap scroll off"); + messageDialog(_("Snap scroll off")); } if (VAR_CAMERA_FAST_X != 0xFF) @@ -583,7 +584,7 @@ void ScummEngine::processKeyboard(Common::KeyState lastKeyHit) { vol--; // Display the music volume - ValueDisplayDialog dlg("Music volume: ", 0, 16, vol, ']', '['); + ValueDisplayDialog dlg(_("Music volume: "), 0, 16, vol, ']', '['); vol = runDialog(dlg); vol *= 16; @@ -600,7 +601,7 @@ void ScummEngine::processKeyboard(Common::KeyState lastKeyHit) { _defaultTalkDelay++; // Display the talk speed - ValueDisplayDialog dlg("Subtitle speed: ", 0, 9, 9 - _defaultTalkDelay, '+', '-'); + ValueDisplayDialog dlg(_("Subtitle speed: "), 0, 9, 9 - _defaultTalkDelay, '+', '-'); _defaultTalkDelay = 9 - runDialog(dlg); // Save the new talkspeed value to ConfMan -- cgit v1.2.3 From 70c42f26b252307a4721e67321dec958272b8752 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Fri, 28 Aug 2015 01:45:02 +0200 Subject: SCUMM: Add Japanese Windows Freddi md5 --- engines/scumm/scumm-md5.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'engines/scumm') diff --git a/engines/scumm/scumm-md5.h b/engines/scumm/scumm-md5.h index a836cf12bc..c85073b877 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 Sun Jun 28 03:19:52 2015 + This file was generated by the md5table tool on Thu Aug 27 23:44:49 2015 DO NOT EDIT MANUALLY! */ @@ -288,6 +288,7 @@ static const MD5Table md5table[] = { { "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 }, + { "64a22be96d679018696e5c8d3ca8b71d", "freddi", "HE 73", "", 26375, Common::JA_JPN, Common::kPlatformWindows }, { "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 }, -- cgit v1.2.3 From 4ec41c291e3a1e273b0ee571acdf2942a579e3ad Mon Sep 17 00:00:00 2001 From: athrxx Date: Mon, 2 Nov 2015 20:52:49 +0100 Subject: AUDIO: (FM-TOWNS) - cleanup euphony code (rework parts of the code + improve naming of variables/functions) --- engines/scumm/players/player_towns.cpp | 61 +++++++++++++++++----------------- engines/scumm/players/player_towns.h | 4 +-- 2 files changed, 32 insertions(+), 33 deletions(-) (limited to 'engines/scumm') diff --git a/engines/scumm/players/player_towns.cpp b/engines/scumm/players/player_towns.cpp index 5b8ca04021..67993888aa 100644 --- a/engines/scumm/players/player_towns.cpp +++ b/engines/scumm/players/player_towns.cpp @@ -202,23 +202,24 @@ Player_Towns_v1::Player_Towns_v1(ScummEngine *vm, Audio::Mixer *mixer) : Player_ memset(_soundOverride, 0, _numSoundMax * sizeof(SoundOvrParameters)); } - _driver = new TownsEuphonyDriver(mixer); + _player = new EuphonyPlayer(mixer); + _intf = new TownsAudioInterface(mixer, 0); } Player_Towns_v1::~Player_Towns_v1() { - delete _driver; + delete _intf; + delete _player; delete[] _soundOverride; } bool Player_Towns_v1::init() { - if (!_driver) + if (!_player) return false; - if (!_driver->init()) + if (!_player->init()) return false; - _driver->reserveSoundEffectChannels(8); - _intf = _driver->intf(); + _player->driver()->reserveSoundEffectChannels(8); // Treat all 6 fm channels and all 8 pcm channels as sound effect channels // since music seems to exist as CD audio only in the games which use this @@ -231,7 +232,7 @@ bool Player_Towns_v1::init() { } void Player_Towns_v1::setMusicVolume(int vol) { - _driver->setMusicVolume(vol); + _player->driver()->setMusicVolume(vol); } void Player_Towns_v1::startSound(int sound) { @@ -275,7 +276,7 @@ void Player_Towns_v1::stopSound(int sound) { if (sound != 0 && sound == _eupCurrentSound) { _eupCurrentSound = 0; _eupLooping = false; - _driver->stopParser(); + _player->stop(); } stopPcmTrack(sound); @@ -288,7 +289,7 @@ void Player_Towns_v1::stopAllSounds() { _eupCurrentSound = 0; _eupLooping = false; - _driver->stopParser(); + _player->stop(); stopPcmTrack(0); } @@ -297,7 +298,7 @@ int Player_Towns_v1::getSoundStatus(int sound) const { if (sound == _cdaCurrentSound) return _vm->_sound->pollCD(); if (sound == _eupCurrentSound) - return _driver->parserIsPlaying() ? 1 : 0; + return _player->isPlaying() ? 1 : 0; return Player_Towns::getSoundStatus(sound); } @@ -306,7 +307,7 @@ int32 Player_Towns_v1::doCommand(int numargs, int args[]) { switch (args[0]) { case 2: - _driver->intf()->callback(73, 0); + _player->driver()->cdaToggle(0); break; case 3: @@ -344,7 +345,7 @@ int32 Player_Towns_v1::doCommand(int numargs, int args[]) { void Player_Towns_v1::setVolumeCD(int left, int right) { _cdaVolLeft = left & 0xff; _cdaVolRight = right & 0xff; - _driver->setOutputVolume(1, left >> 1, right >> 1); + _player->driver()->setOutputVolume(1, left >> 1, right >> 1); } void Player_Towns_v1::setSoundVolume(int sound, int left, int right) { @@ -373,7 +374,7 @@ void Player_Towns_v1::saveLoadWithSerializer(Serializer *ser) { ser->saveLoadEntries(this, cdEntries); - if (!_eupLooping && !_driver->parserIsPlaying()) + if (!_eupLooping && !_player->isPlaying()) _eupCurrentSound = 0; static const SaveLoadEntry eupEntries[] = { @@ -439,10 +440,10 @@ void Player_Towns_v1::restartLoopingSounds() { c++; } - _driver->playSoundEffect(i + 0x3f, _pcmCurrentSound[i].note, _pcmCurrentSound[i].velo, ptr); + _player->driver()->playSoundEffect(i + 0x3f, _pcmCurrentSound[i].note, _pcmCurrentSound[i].velo, ptr); } - _driver->intf()->callback(73, 1); + _player->driver()->cdaToggle(1); } void Player_Towns_v1::startSoundEx(int sound, int velo, int pan, int note) { @@ -492,9 +493,9 @@ void Player_Towns_v1::stopSoundSuspendLooping(int sound) { } else { for (int i = 1; i < 9; i++) { if (sound == _pcmCurrentSound[i].index) { - if (!_driver->soundEffectIsPlaying(i + 0x3f)) + if (!_player->driver()->soundEffectIsPlaying(i + 0x3f)) continue; - _driver->stopSoundEffect(i + 0x3f); + _player->driver()->stopSoundEffect(i + 0x3f); if (_pcmCurrentSound[i].looping) _pcmCurrentSound[i].paused = 1; else @@ -510,23 +511,23 @@ void Player_Towns_v1::playEuphonyTrack(int sound, const uint8 *data) { const uint8 *trackData = src + 150; for (int i = 0; i < 32; i++) - _driver->configChan_enable(i, *src++); + _player->configPart_enable(i, *src++); for (int i = 0; i < 32; i++) - _driver->configChan_setMode(i, 0xff); + _player->configPart_setType(i, 0xff); for (int i = 0; i < 32; i++) - _driver->configChan_remap(i, *src++); + _player->configPart_remap(i, *src++); for (int i = 0; i < 32; i++) - _driver->configChan_adjustVolume(i, *src++); + _player->configPart_adjustVolume(i, *src++); for (int i = 0; i < 32; i++) - _driver->configChan_setTranspose(i, *src++); + _player->configPart_setTranspose(i, *src++); src += 8; for (int i = 0; i < 6; i++) - _driver->assignChannel(i, *src++); + _player->driver()->assignPartToChannel(i, *src++); for (int i = 0; i < data[14]; i++) { - _driver->loadInstrument(i, i, pos + i * 48); - _driver->intf()->callback(4, i, i); + _player->driver()->loadInstrument(i, i, pos + i * 48); + _player->driver()->setInstrument(i, i); } _eupVolLeft = _soundOverride[sound].vLeft; @@ -537,18 +538,18 @@ void Player_Towns_v1::playEuphonyTrack(int sound, const uint8 *data) { lvl >>= 2; for (int i = 0; i < 6; i++) - _driver->chanVolume(i, lvl); + _player->driver()->channelVolume(i, lvl); uint32 trackSize = READ_LE_UINT32(src); src += 4; uint8 startTick = *src++; - _driver->setMusicTempo(*src++); - _driver->startMusicTrack(trackData, trackSize, startTick); + _player->setTempo(*src++); + _player->startTrack(trackData, trackSize, startTick); _eupLooping = (*src != 1) ? 1 : 0; - _driver->setMusicLoop(_eupLooping != 0); - _driver->continueParsing(); + _player->setLoopStatus(_eupLooping != 0); + _player->resume(); _eupCurrentSound = sound; } diff --git a/engines/scumm/players/player_towns.h b/engines/scumm/players/player_towns.h index 3736524ee2..576d17e392 100644 --- a/engines/scumm/players/player_towns.h +++ b/engines/scumm/players/player_towns.h @@ -104,8 +104,6 @@ public: void saveLoadWithSerializer(Serializer *ser); void restoreAfterLoad(); - TownsEuphonyDriver *driver() { return _driver; } - private: void restartLoopingSounds(); void startSoundEx(int sound, int velo, int pan, int note); @@ -137,7 +135,7 @@ private: uint8 _cdaCurrentSoundTemp; uint8 _cdaNumLoopsTemp; - TownsEuphonyDriver *_driver; + EuphonyPlayer *_player; }; class Player_Towns_v2 : public Player_Towns { -- cgit v1.2.3 From fb61f649035f8d823f4afa5302487d9a30009403 Mon Sep 17 00:00:00 2001 From: athrxx Date: Tue, 10 Nov 2015 17:16:52 +0100 Subject: SCUMM: WORKAROUND for bug #1873 INDY3 FMTOWNS: Music in Venice is distorted --- engines/scumm/players/player_towns.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'engines/scumm') diff --git a/engines/scumm/players/player_towns.cpp b/engines/scumm/players/player_towns.cpp index 67993888aa..d540fc4f6b 100644 --- a/engines/scumm/players/player_towns.cpp +++ b/engines/scumm/players/player_towns.cpp @@ -255,7 +255,9 @@ void Player_Towns_v1::startSound(int sound) { uint16 len = READ_LE_UINT16(ptr) + 2; playPcmTrack(sound, ptr + 6, velocity, 64, note ? note : (len > 50 ? ptr[50] : 60), READ_LE_UINT16(ptr + 10)); - } else if (type == 1) { + // WORKAROUND for bug #1873 INDY3 FMTOWNS: Music in Venice is distorted + // The resource for sound 40 accidently sets the sound type to 255 instead of 1. + } else if (type == 1 || (_vm->_game.id == GID_INDY3 && sound == 40)) { playEuphonyTrack(sound, ptr + 6); } else if (type == 2) { @@ -410,7 +412,9 @@ void Player_Towns_v1::restoreAfterLoad() { if (_vm->_game.version != 3) ptr += 2; - if (ptr[7] == 1) { + // WORKAROUND for bug #1873 INDY3 FMTOWNS: Music in Venice is distorted + // The resource for sound 40 accidently sets the sound type to 255 instead of 1. + if (ptr[7] == 1 || (_vm->_game.id == GID_INDY3 && _eupCurrentSound == 40)) { setSoundVolume(_eupCurrentSound, _eupVolLeft, _eupVolRight); playEuphonyTrack(_eupCurrentSound, ptr); } -- cgit v1.2.3