[Scummvm-cvs-logs] scummvm master -> 98ec26754329b13170e045c7aa34915be8be4758

bluegr bluegr at gmail.com
Wed Jan 2 11:44:07 CET 2013


This automated email contains information about 5 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
3249278a51 GROOVIE: Simplify the movie speed settings and add a GUI option
307972a549 TRANSLATION: Add the new translatable game file in the groovie engine
829624f4d6 README: Update documentation on the recently changed t7g movie speed settings
5c44f3e953 NEWS: Mention the change in the movie speed options of the 7th Guest
98ec267543 MT-32: Sync with the latest changes in munt


Commit: 3249278a51c666ae75a92d7119790ea551a81351
    https://github.com/scummvm/scummvm/commit/3249278a51c666ae75a92d7119790ea551a81351
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2013-01-02T02:42:53-08:00

Commit Message:
GROOVIE: Simplify the movie speed settings and add a GUI option

This removes the "iOS" speed setting, where some movies could get out
of sync. Two movie options are now available, "normal" and "fast" movie
speed, which is the old "tweaked" setting. With the "fast" movie speed,
the movie speed is changed to match that of the iOS version, but only
in movies with sound. Movies without sound (like the supernatural
animations, i.e. the "teeth" icon in-game) are still played at their
regular speed, to avoid music sync issues.

Changed paths:
    engines/groovie/detection.cpp
    engines/groovie/groovie.cpp
    engines/groovie/groovie.h
    engines/groovie/vdx.cpp



diff --git a/engines/groovie/detection.cpp b/engines/groovie/detection.cpp
index e06dace..65452f5 100644
--- a/engines/groovie/detection.cpp
+++ b/engines/groovie/detection.cpp
@@ -25,9 +25,12 @@
 #include "groovie/saveload.h"
 
 #include "common/system.h"
+#include "common/translation.h"
 
 namespace Groovie {
 
+#define GAMEOPTION_T7G_FAST_MOVIE_SPEED  GUIO_GAMEOPTIONS1
+
 static const PlainGameDescriptor groovieGames[] = {
 	// Games
 	{"t7g", "The 7th Guest"},
@@ -52,7 +55,7 @@ static const GroovieGameDescription gameDescriptions[] = {
 			"t7g", "",
 			AD_ENTRY1s("script.grv", "d1b8033b40aa67c076039881eccce90d", 16659),
 			Common::EN_ANY, Common::kPlatformPC, ADGF_NO_FLAGS,
-			GUIO4(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_NOASPECT)
+			GUIO5(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_NOASPECT, GAMEOPTION_T7G_FAST_MOVIE_SPEED)
 		},
 		kGroovieT7G, 0
 	},
@@ -63,7 +66,7 @@ static const GroovieGameDescription gameDescriptions[] = {
 			"t7g", "",
 			AD_ENTRY1s("T7GMac", "acdc4a58dd3f007f65e99b99d78e0bce", 1814029),
 			Common::EN_ANY, Common::kPlatformMacintosh, ADGF_MACRESFORK,
-			GUIO4(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_NOASPECT)
+			GUIO5(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_NOASPECT, GAMEOPTION_T7G_FAST_MOVIE_SPEED)
 		},
 		kGroovieT7G, 0
 	},
@@ -79,7 +82,7 @@ static const GroovieGameDescription gameDescriptions[] = {
 			"t7g", "",
 			AD_ENTRY1s("T7GMac", "6bdee8d0f9eef6d58d02fcd7deec3fb2", 1830783),
 			Common::EN_ANY, Common::kPlatformMacintosh, ADGF_MACRESFORK,
-			GUIO4(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_NOASPECT)
+			GUIO5(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_NOASPECT, GAMEOPTION_T7G_FAST_MOVIE_SPEED)
 		},
 		kGroovieT7G, 0
 	},
@@ -90,7 +93,7 @@ static const GroovieGameDescription gameDescriptions[] = {
 			"t7g", "",
 			AD_ENTRY1s("T7GMac", "0d595d4b44ae1814082938d051e5174e", 1830783),
 			Common::EN_ANY, Common::kPlatformMacintosh, ADGF_MACRESFORK,
-			GUIO4(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_NOASPECT)
+			GUIO5(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_NOASPECT, GAMEOPTION_T7G_FAST_MOVIE_SPEED)
 		},
 		kGroovieT7G, 0
 	},
@@ -106,7 +109,7 @@ static const GroovieGameDescription gameDescriptions[] = {
 				{ NULL, 0, NULL, 0}
 			},
 			Common::RU_RUS, Common::kPlatformPC, ADGF_NO_FLAGS,
-			GUIO4(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_NOASPECT)
+			GUIO5(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_NOASPECT, GAMEOPTION_T7G_FAST_MOVIE_SPEED)
 		},
 		kGroovieT7G, 0
 	},
@@ -120,7 +123,7 @@ static const GroovieGameDescription gameDescriptions[] = {
 				{ NULL, 0, NULL, 0}
 			},
 			Common::EN_ANY, Common::kPlatformIOS, ADGF_NO_FLAGS,
-			GUIO2(GUIO_NOMIDI, GUIO_NOASPECT)
+			GUIO3(GUIO_NOMIDI, GUIO_NOASPECT, GAMEOPTION_T7G_FAST_MOVIE_SPEED)
 		},
 		kGroovieT7G, 0
 	},
@@ -302,9 +305,23 @@ static const char *directoryGlobs[] = {
 	0
 };
 
+static const ADExtraGuiOptionsMap optionsList[] = {
+	{
+		GAMEOPTION_T7G_FAST_MOVIE_SPEED,
+		{
+			_s("Fast movie speed"),
+			_s("Play movies at an increased speed"),
+			"fast_movie_speed",
+			false
+		}
+	},
+
+	AD_EXTRA_GUI_OPTIONS_TERMINATOR
+};
+
 class GroovieMetaEngine : public AdvancedMetaEngine {
 public:
-	GroovieMetaEngine() : AdvancedMetaEngine(gameDescriptions, sizeof(GroovieGameDescription), groovieGames) {
+	GroovieMetaEngine() : AdvancedMetaEngine(gameDescriptions, sizeof(GroovieGameDescription), groovieGames, optionsList) {
 		_singleid = "groovie";
 
 		// Use kADFlagUseExtraAsHint in order to distinguish the 11th hour from
diff --git a/engines/groovie/groovie.cpp b/engines/groovie/groovie.cpp
index 16358bf..5ade442 100644
--- a/engines/groovie/groovie.cpp
+++ b/engines/groovie/groovie.cpp
@@ -60,13 +60,8 @@ GroovieEngine::GroovieEngine(OSystem *syst, const GroovieGameDescription *gd) :
 	SearchMan.addSubDirectoryMatching(gameDataDir, "MIDI");
 
 	_modeSpeed = kGroovieSpeedNormal;
-	if (ConfMan.hasKey("t7g_speed")) {
-		Common::String speed = ConfMan.get("t7g_speed");
-		if (speed.equals("im_an_ios"))
-			_modeSpeed = kGroovieSpeediOS;
-		else if (speed.equals("tweaked"))
-			_modeSpeed = kGroovieSpeedTweaked;
-	}
+	if (ConfMan.hasKey("fast_movie_speed") && ConfMan.getBool("fast_movie_speed"))
+		_modeSpeed = kGroovieSpeedFast;
 
 	// Initialize the custom debug levels
 	DebugMan.addDebugChannel(kGroovieDebugAll, "All", "Debug everything");
diff --git a/engines/groovie/groovie.h b/engines/groovie/groovie.h
index c66e54b..79abc13 100644
--- a/engines/groovie/groovie.h
+++ b/engines/groovie/groovie.h
@@ -74,15 +74,14 @@ enum DebugLevels {
 
 /**
  * This enum reflects the available movie speed settings:
- * - Normal:  both movies and 'teeth' animations are played at a normal speed
- * - Tweaked: movies are played at a normal speed, 'teeth' animations at
-              increased speed
- * - iOS:     both movies and 'teeth' animations are played at increased speed
+ * - Normal:  play videos at a normal speed
+ * - Fast:    play videos with audio at a fast speed. Videos without audio,
+ *            like teeth animations, are played at their regular speed to avoid
+ *            audio sync issues
  */
 enum GameSpeed {
 	kGroovieSpeedNormal,
-	kGroovieSpeediOS,
-	kGroovieSpeedTweaked
+	kGroovieSpeedFast
 };
 
 struct GroovieGameDescription;
diff --git a/engines/groovie/vdx.cpp b/engines/groovie/vdx.cpp
index b3fcf46..8786e75 100644
--- a/engines/groovie/vdx.cpp
+++ b/engines/groovie/vdx.cpp
@@ -88,7 +88,7 @@ uint16 VDXPlayer::loadInternal() {
 
 	// Enable highspeed if we're not obeying fps, and not marked as special
 	// This will be disabled in chunk audio if we're actually an audio vdx
-	if ( _vm->_modeSpeed == kGroovieSpeediOS || (_vm->_modeSpeed == kGroovieSpeedTweaked && ((_flags & (1 << 15)) == 0)))
+	if (_vm->_modeSpeed == kGroovieSpeedFast && ((_flags & (1 << 15)) == 0))
 		setOverrideSpeed(true);
 
 	if (_flagOnePrev && !_flagOne && !_flagEight) {


Commit: 307972a549070c6abe1ff95bcf4cd217fd299c5e
    https://github.com/scummvm/scummvm/commit/307972a549070c6abe1ff95bcf4cd217fd299c5e
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2013-01-02T02:42:54-08:00

Commit Message:
TRANSLATION: Add the new translatable game file in the groovie engine

Changed paths:
    po/POTFILES



diff --git a/po/POTFILES b/po/POTFILES
index 72c6fb1..f79391d 100644
--- a/po/POTFILES
+++ b/po/POTFILES
@@ -40,6 +40,7 @@ engines/agos/animation.cpp
 engines/gob/inter_playtoons.cpp
 engines/gob/inter_v2.cpp
 engines/gob/inter_v5.cpp
+engines/groovie/detection.cpp
 engines/groovie/script.cpp
 engines/kyra/detection.cpp
 engines/kyra/lol.cpp


Commit: 829624f4d6583e473bd490d0c75996f1fad17755
    https://github.com/scummvm/scummvm/commit/829624f4d6583e473bd490d0c75996f1fad17755
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2013-01-02T02:42:54-08:00

Commit Message:
README: Update documentation on the recently changed t7g movie speed settings

Changed paths:
    README



diff --git a/README b/README
index b7b8176..f39df9a 100644
--- a/README
+++ b/README
@@ -2161,8 +2161,11 @@ keywords:
 
 The 7th Guest adds the following non-standard keyword:
 
-    t7g_speed          string   Video playback speed (normal, tweaked,
-                                im_an_ios)
+    fast_movie_speed   bool     If true, movies are played at an increased
+                                speed, matching the speed of the iOS version.
+                                Movies without sound are still played at their
+                                normal speed, to avoid music synchronization
+                                issues
 
 
 8.2) Custom game options that can be toggled via the GUI


Commit: 5c44f3e95351d8ab7cb4a041b701da814ff77fea
    https://github.com/scummvm/scummvm/commit/5c44f3e95351d8ab7cb4a041b701da814ff77fea
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2013-01-02T02:42:54-08:00

Commit Message:
NEWS: Mention the change in the movie speed options of the 7th Guest

Changed paths:
    NEWS



diff --git a/NEWS b/NEWS
index 74b8b04..abbec87 100644
--- a/NEWS
+++ b/NEWS
@@ -33,6 +33,13 @@ For a more comprehensive changelog of the latest experimental code, see:
      protection, this extra line can be toggled by the ScummVM copy protection
      command line option.
 
+  Groovie:
+   - Simplified the movie speed options, and added a custom option for The 7th
+     Guest. Movie options are now "normal" and "fast", with the latter changing
+     the movie speed in T7G to match the faster movie speed of the iOS version.
+     The game entry might need to be readded in the launcher for the new setting
+     to appear.
+
   SAGA:
    - Added music support for the Macintosh version of I Have No Mouth and, I
      Must Scream.


Commit: 98ec26754329b13170e045c7aa34915be8be4758
    https://github.com/scummvm/scummvm/commit/98ec26754329b13170e045c7aa34915be8be4758
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2013-01-02T02:42:54-08:00

Commit Message:
MT-32: Sync with the latest changes in munt

This syncs our code with munt commits 3f0db2d and 2c5f314

Changed paths:
    audio/softsynth/mt32/Partial.cpp
    audio/softsynth/mt32/Tables.cpp
    audio/softsynth/mt32/Tables.h



diff --git a/audio/softsynth/mt32/Partial.cpp b/audio/softsynth/mt32/Partial.cpp
index 58878a3..a4d1ab0 100644
--- a/audio/softsynth/mt32/Partial.cpp
+++ b/audio/softsynth/mt32/Partial.cpp
@@ -284,8 +284,12 @@ unsigned long Partial::generateSamples(float *partialBuf, unsigned long length)
 			// res corresponds to a value set in an LA32 register
 			Bit8u res = patchCache->srcPartial.tvf.resonance + 1;
 
-			// Using tiny exact table for computation of EXP2F(1.0f - (32 - res) / 4.0f)
-			float resAmp = tables.resAmpMax[res];
+			float resAmp;
+			{
+				// resAmp = EXP2F(1.0f - (32 - res) / 4.0f);
+				static const float resAmpFactor = EXP2F(-7);
+				resAmp = EXP2I(res << 10) * resAmpFactor;
+			}
 
 			// The cutoffModifier may not be supposed to be directly added to the cutoff -
 			// it may for example need to be multiplied in some way.
@@ -317,23 +321,26 @@ unsigned long Partial::generateSamples(float *partialBuf, unsigned long length)
 				relWavePos -= waveLen;
 			}
 
+			// Ratio of positive segment to wave length
 			float pulseLen = 0.5f;
 			if (pulseWidthVal > 128) {
-				pulseLen += tables.pulseLenFactor[pulseWidthVal - 128];
+				// pulseLen = EXP2F((64 - pulseWidthVal) / 64);
+				static const float pulseLenFactor = EXP2F(-192 / 64);
+				pulseLen = EXP2I((256 - pulseWidthVal) << 6) * pulseLenFactor;
 			}
 			pulseLen *= waveLen;
 
-			float lLen = pulseLen - cosineLen;
+			float hLen = pulseLen - cosineLen;
 
 			// Ignore pulsewidths too high for given freq
-			if (lLen < 0.0f) {
-				lLen = 0.0f;
+			if (hLen < 0.0f) {
+				hLen = 0.0f;
 			}
 
 			// Ignore pulsewidths too high for given freq and cutoff
-			float hLen = waveLen - lLen - 2 * cosineLen;
-			if (hLen < 0.0f) {
-				hLen = 0.0f;
+			float lLen = waveLen - hLen - 2 * cosineLen;
+			if (lLen < 0.0f) {
+				lLen = 0.0f;
 			}
 
 			// Correct resAmp for cutoff in range 50..66
diff --git a/audio/softsynth/mt32/Tables.cpp b/audio/softsynth/mt32/Tables.cpp
index b6e6384..5353a74 100644
--- a/audio/softsynth/mt32/Tables.cpp
+++ b/audio/softsynth/mt32/Tables.cpp
@@ -72,24 +72,12 @@ Tables::Tables() {
 		//synth->printDebug("%d: %d", i, pulseWidth100To255[i]);
 	}
 
-	// Ratio of negative segment to wave length
-	for (int i = 0; i < 128; i++) {
-		// Formula determined from sample analysis.
-		float pt = 0.5f / 127.0f * i;
-		pulseLenFactor[i] = (1.241857812f - pt) * pt;    // seems to be 2 ^ (5 / 16) = 1.241857812f
-	}
-
 	// The LA32 chip presumably has such a table inside as the internal computaions seem to be performed using fixed point math with 12-bit fractions
 	for (int i = 0; i < 4096; i++) {
 		exp2[i] = EXP2F(i / 4096.0f);
 	}
 
 	// found from sample analysis
-	for (int i = 0; i < 32; i++) {
-		resAmpMax[i] = EXP2F(1.0f - (32 - i) / 4.0f);
-	}
-
-	// found from sample analysis
 	resAmpFadeFactor[7] = 1.0f / 8.0f;
 	resAmpFadeFactor[6] = 2.0f / 8.0f;
 	resAmpFadeFactor[5] = 3.0f / 8.0f;
diff --git a/audio/softsynth/mt32/Tables.h b/audio/softsynth/mt32/Tables.h
index b353cf4..c3e80e7 100644
--- a/audio/softsynth/mt32/Tables.h
+++ b/audio/softsynth/mt32/Tables.h
@@ -57,8 +57,6 @@ public:
 	Bit8u pulseWidth100To255[101];
 
 	float exp2[4096];
-	float pulseLenFactor[128];
-	float resAmpMax[32];
 	float resAmpFadeFactor[8];
 	float sinf10[5120];
 };






More information about the Scummvm-git-logs mailing list