aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/exereader.cpp
diff options
context:
space:
mode:
authorTravis Howell2009-08-16 01:03:09 +0000
committerTravis Howell2009-08-16 01:03:09 +0000
commitac45cf6f6f0cf6e41b608561316bcbda115fb6b1 (patch)
tree01d5f13eec4f6a91859093de4fac88ef7991f756 /engines/sci/exereader.cpp
parent09845556e0383fb187f548c7cfc1a68b22329f7e (diff)
parentb6a0f3e3716614ee270df048414c7f938299c476 (diff)
downloadscummvm-rg350-ac45cf6f6f0cf6e41b608561316bcbda115fb6b1.tar.gz
scummvm-rg350-ac45cf6f6f0cf6e41b608561316bcbda115fb6b1.tar.bz2
scummvm-rg350-ac45cf6f6f0cf6e41b608561316bcbda115fb6b1.zip
Merged revisions 43338-43340,43342,43344-43347,43349-43350,43352-43354,43357-43358,43362,43366,43369,43375,43377,43380,43383-43384,43386,43388,43390,43393,43400,43402,43404,43406-43409,43411,43413-43414 via svnmerge from
https://scummvm.svn.sourceforge.net/svnroot/scummvm/scummvm/trunk ........ r43338 | lordhoto | 2009-08-13 10:19:26 +1000 (Thu, 13 Aug 2009) | 1 line Little optimization in Screen::setPaletteIndex, now it only resets the palette, when the color index really changed. ........ r43339 | lordhoto | 2009-08-13 10:20:37 +1000 (Thu, 13 Aug 2009) | 1 line Fix key input in credits sequences. ........ r43340 | lordhoto | 2009-08-13 10:21:42 +1000 (Thu, 13 Aug 2009) | 1 line Fix serious bug in StaticResource::unloadId. ........ r43342 | lordhoto | 2009-08-13 10:26:41 +1000 (Thu, 13 Aug 2009) | 1 line Do not unload credits data after copying it to a temporary buffer in Kyrandia 1 Amiga, since the credits will be looped and need reload every time. ........ r43344 | strangerke | 2009-08-13 19:56:54 +1000 (Thu, 13 Aug 2009) | 1 line Initial save handler for Playtoons ........ r43345 | strangerke | 2009-08-13 19:59:44 +1000 (Thu, 13 Aug 2009) | 2 lines - Add a specific OPCODEFUNC checkData to avoid having a Playtoons workaround in working code - Replace OPCODEDRAW 0x20,0x23 and 0x25 ........ r43346 | strangerke | 2009-08-13 20:00:35 +1000 (Thu, 13 Aug 2009) | 1 line Suppress no longer needed Playtoons workaround ........ r43347 | strangerke | 2009-08-13 20:08:07 +1000 (Thu, 13 Aug 2009) | 1 line fix methods ........ r43349 | lordhoto | 2009-08-14 01:55:12 +1000 (Fri, 14 Aug 2009) | 1 line Implemented support for the "Lore of the Lands" special of Lands of Lore CD. ........ r43350 | lordhoto | 2009-08-14 02:41:07 +1000 (Fri, 14 Aug 2009) | 1 line Move version string in Modern theme beneath the Logo in high res mode, this saves some space and looks nicer. ........ r43352 | lordhoto | 2009-08-14 02:50:30 +1000 (Fri, 14 Aug 2009) | 1 line Little fix of new modern theme layout in the launcher for 3x. ........ r43353 | lordhoto | 2009-08-14 03:00:19 +1000 (Fri, 14 Aug 2009) | 1 line Cleanup. ........ r43354 | lordhoto | 2009-08-14 03:00:40 +1000 (Fri, 14 Aug 2009) | 1 line Cleanup. ........ r43357 | agent-q | 2009-08-14 07:46:41 +1000 (Fri, 14 Aug 2009) | 1 line Allow VOCs to stream from disk. Disabled by default, use symbol STREAM_AUDIO_FROM_DISK to enable. See patch #2834001. ........ r43358 | Kirben | 2009-08-14 10:44:36 +1000 (Fri, 14 Aug 2009) | 1 line The Nintendo DS hack for introduction in Simon the Sorcerer 1 is only required for Windows version (WAV format) now. ........ r43362 | anotherguest | 2009-08-14 16:42:57 +1000 (Fri, 14 Aug 2009) | 1 line Updated files from 1.0.0 branch ........ r43366 | drmccoy | 2009-08-15 01:22:43 +1000 (Sat, 15 Aug 2009) | 2 lines Setting gob3 save/load mode of the temporary sprite "intro.$$$" to ignore and remove the TempSpriteHandler. Gob3 doesn't use it at all and Lost in Time only saves (with an invalid index) and never loads ........ r43369 | joostp | 2009-08-15 02:13:00 +1000 (Sat, 15 Aug 2009) | 2 lines PSP: create an EBOOT.PBP when building via configure ........ r43375 | joostp | 2009-08-15 02:44:29 +1000 (Sat, 15 Aug 2009) | 2 lines Fix incorrect memset() call (reported by Peter Bortas). ........ r43377 | joostp | 2009-08-15 02:54:43 +1000 (Sat, 15 Aug 2009) | 2 lines add psp_clean build rule to clean up EBOOT.PBP and scummvm_stripped.elf ........ r43380 | joostp | 2009-08-15 03:18:03 +1000 (Sat, 15 Aug 2009) | 3 lines MIPSpro compilation fixes / workarounds (from a patch by Rainer Canavan) The hashmap.h change is ugly, but so far the only thing found to work. Suggestions for a better "fix" appreciated! ........ r43383 | lordhoto | 2009-08-15 03:49:30 +1000 (Sat, 15 Aug 2009) | 1 line Little fix for lopping credits in Kyrandia 1 Amiga. ........ r43384 | joostp | 2009-08-15 04:02:17 +1000 (Sat, 15 Aug 2009) | 2 lines PSP: also create param.sfo when building via configure ........ r43386 | joostp | 2009-08-15 04:34:01 +1000 (Sat, 15 Aug 2009) | 2 lines PSP: add svn revision + build date to SFO title. ........ r43388 | joostp | 2009-08-15 09:20:46 +1000 (Sat, 15 Aug 2009) | 2 lines remove double semi-colon -- hopefully this kicks the buildbot back into action =) ........ r43390 | waltervn | 2009-08-15 10:28:59 +1000 (Sat, 15 Aug 2009) | 2 lines SCI: Added enum for map and volume versions. Removed res_version setting from detection.cpp (should be detectable). Cleanup. ........ r43393 | dhewg | 2009-08-15 15:39:44 +1000 (Sat, 15 Aug 2009) | 1 line Fix compilation. ........ r43400 | Kirben | 2009-08-15 20:09:32 +1000 (Sat, 15 Aug 2009) | 1 line Fix regression, that caused multiple sounds in Simon the Sorcerer 2 to be cut off. ........ r43402 | Kirben | 2009-08-15 20:31:20 +1000 (Sat, 15 Aug 2009) | 1 line Restore code to clear screen, before playing videos with smaller resolution in the Amiga version of The Feeble Files. ........ r43404 | joostp | 2009-08-15 20:44:58 +1000 (Sat, 15 Aug 2009) | 2 lines Properly implement PSPFilesystemFactory::makeCurrentDirectoryFileNode() ........ r43406 | dreammaster | 2009-08-15 21:50:59 +1000 (Sat, 15 Aug 2009) | 1 line Added Dirty Rect handling functionality ........ r43407 | waltervn | 2009-08-15 22:09:47 +1000 (Sat, 15 Aug 2009) | 1 line SCI: Rename sci_version_t to SciVersion ........ r43408 | waltervn | 2009-08-15 22:17:23 +1000 (Sat, 15 Aug 2009) | 1 line SCI: Add missing versions to exe version parsing ........ r43409 | eriktorbjorn | 2009-08-16 00:13:48 +1000 (Sun, 16 Aug 2009) | 2 lines Removed unnecessary semi-colons. ........ r43411 | lordhoto | 2009-08-16 00:59:11 +1000 (Sun, 16 Aug 2009) | 1 line Added const qualifiers to static data. ........ r43413 | lordhoto | 2009-08-16 01:30:35 +1000 (Sun, 16 Aug 2009) | 1 line Yet another slight graphic fix for the Kyrandia 1 Amiga credits. ........ r43414 | buddha_ | 2009-08-16 05:04:21 +1000 (Sun, 16 Aug 2009) | 4 lines Fix for bug #2835581 (KQ3: Game Crash When Leaving Tavern as Fly): - Use AGI version 0x3149 instead of the previous 0x3086 - Makes ESC pause the game (Identical to original in this respect) ........ svn-id: r43418
Diffstat (limited to 'engines/sci/exereader.cpp')
-rw-r--r--engines/sci/exereader.cpp67
1 files changed, 30 insertions, 37 deletions
diff --git a/engines/sci/exereader.cpp b/engines/sci/exereader.cpp
index c1d279244c..8ac5ed098e 100644
--- a/engines/sci/exereader.cpp
+++ b/engines/sci/exereader.cpp
@@ -276,7 +276,7 @@ Common::String readSciVersionFromExe(Common::SeekableReadStream *exeStream, Comm
currentString[9] = 0;
// Return the current string if it's parseable
- int version;
+ SciVersion version;
if (getSciVersionFromString(currentString, &version, platform)) {
delete[] buffer;
return currentString;
@@ -296,61 +296,54 @@ Common::String readSciVersionFromExe(Common::SeekableReadStream *exeStream, Comm
return resultString;
}
-bool getSciVersionFromString(Common::String versionString, int *version, Common::Platform platform) {
- // Map non-numeric versions to their numeric counterparts
- Common::String mappedVersion = versionString;
+bool getSciVersionFromString(Common::String versionString, SciVersion *version, Common::Platform platform) {
+ *version = SCI_VERSION_AUTODETECT;
+
if (platform == Common::kPlatformAmiga) {
if (versionString.hasPrefix("1.002.")) {
- mappedVersion = "0.000.685";
+ *version = SCI_VERSION_0;
} else if (versionString.hasPrefix("1.003.")) {
- mappedVersion = "0.001.010";
+ *version = SCI_VERSION_01;
} else if (versionString.hasPrefix("1.004.")) {
- mappedVersion = "1.000.784";
+ *version = SCI_VERSION_01;
} else if (versionString.hasPrefix("1.005.")) {
- mappedVersion = "1.000.510";
+ *version = SCI_VERSION_1;
} else if (versionString == "x.yyy.zzz") {
// How to map it?
+ } else {
+ return false;
}
+ } else if (versionString.hasPrefix("0.000.")) {
+ *version = SCI_VERSION_0;
} else if (versionString.hasPrefix("S.old.")) {
- // SCI 01
- mappedVersion = "0.001.";
- mappedVersion += versionString.c_str() + 6;
+ *version = SCI_VERSION_01;
+ } else if (versionString.hasPrefix("1.000.")) {
+ *version = SCI_VERSION_1;
+ } else if (versionString.hasPrefix("1.001.")) {
+ *version = SCI_VERSION_1_1;
+ } else if (versionString.hasPrefix("2.000.")
+ || versionString.hasPrefix("2.100.")
+ || versionString.hasPrefix("3.000.")) {
+ *version = SCI_VERSION_32;
} else if (versionString.hasPrefix("1.ECO.")
|| versionString.hasPrefix("1.SQ1.")
|| versionString.hasPrefix("1.SQ4.")
|| versionString.hasPrefix("1.LS5.")
|| versionString.hasPrefix("1.pq3.")
- || versionString.hasPrefix("FAIRY.")) {
- // SCI 1.0
- mappedVersion = "1.000.";
- mappedVersion += versionString.c_str() + 6;
- } else if (versionString.hasPrefix("T.A00.")) {
- mappedVersion = "1.000.510";
+ || versionString.hasPrefix("FAIRY.")
+ || versionString.hasPrefix("T.A00.")) {
+ *version = SCI_VERSION_1;
} else if (versionString.hasPrefix("L.rry.")
|| versionString.hasPrefix("l.cfs.")) {
- // SCI 1.1
- mappedVersion = "1.001.";
- mappedVersion += versionString.c_str() + 6;
- } else if (versionString == "x.yyy.yyy") {
+ *version = SCI_VERSION_1_1;
+ } else if (versionString == "x.yyy.zzz") {
// How to map it?
+ } else {
+ // Unknown or not a version number
+ return false;
}
- // Parse to a version number
- char *endptr[3];
- const char *ver = mappedVersion.c_str();
- int major = strtol(ver, &endptr[0], 10);
- //int minor = strtol(ver + 2, &endptr[1], 10);
- //int patchlevel = strtol(ver + 6, &endptr[2], 10);
-
- if (endptr[0] != ver + 1 || endptr[1] != ver + 5 || *endptr[2] != '\0') {
- warning("Failed to parse version string '%s'", ver);
- return true;
- }
-
- //printf("Detected version: %s, parsed version: %s\n", versionString, ver);
- *version = major;
-
- return false;
+ return true;
}
} // End of namespace Sci