mirror of
https://github.com/libretro/scummvm.git
synced 2024-11-27 19:30:41 +00:00
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.
This commit is contained in:
parent
3dad5e55e2
commit
3249278a51
@ -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
|
||||
|
@ -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");
|
||||
|
@ -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;
|
||||
|
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user