[Scummvm-git-logs] scummvm master -> e7b829412e40ee672f82089df7d0544f3e0196de

sev- noreply at scummvm.org
Wed Jun 1 16:16:04 UTC 2022


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

Summary:
50cb1551ed TWINE: added detection for gog lba1 classic release
e7b829412e TWINE: show the 2.21 logo and the lba1 classic bitmap


Commit: 50cb1551edf44d3eae85050bbb4d8f47c2e542b5
    https://github.com/scummvm/scummvm/commit/50cb1551edf44d3eae85050bbb4d8f47c2e542b5
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2022-06-01T18:16:00+02:00

Commit Message:
TWINE: added detection for gog lba1 classic release

Changed paths:
    engines/twine/audio/music.cpp
    engines/twine/detection.cpp
    engines/twine/detection.h
    engines/twine/twine.cpp
    engines/twine/twine.h


diff --git a/engines/twine/audio/music.cpp b/engines/twine/audio/music.cpp
index 6efc76b99e9..389fde2c507 100644
--- a/engines/twine/audio/music.cpp
+++ b/engines/twine/audio/music.cpp
@@ -170,7 +170,7 @@ bool Music::playTrackMusicCd(int32 track) {
 	}
 
 	AudioCDManager *cdrom = g_system->getAudioCDManager();
-	if (_engine->isDotEmuEnhanced()) {
+	if (_engine->isDotEmuEnhanced() || _engine->isLba1Classic()) {
 		track += 1;
 	}
 	return cdrom->play(track, 1, 0, 0);
@@ -244,7 +244,7 @@ bool Music::playMidiMusic(int32 midiIdx, int32 loop) {
 		stopMidiMusic();
 	}
 
-	if (_engine->isDotEmuEnhanced()) {
+	if (_engine->isDotEmuEnhanced() || _engine->isLba1Classic()) {
 		const Common::String &trackName = Common::String::format("lba1-%02i", midiIdx + 1);
 		Audio::SeekableAudioStream *stream = Audio::SeekableAudioStream::openStreamFile(trackName);
 		if (stream != nullptr) {
diff --git a/engines/twine/detection.cpp b/engines/twine/detection.cpp
index 2290f30778b..fa6cfebae86 100644
--- a/engines/twine/detection.cpp
+++ b/engines/twine/detection.cpp
@@ -510,6 +510,55 @@ static const ADGameDescription twineGameDescriptions[] = {
 		GUIO1(GUIO_NONE)
 	},
 
+	// Little Big Adventure - GOG Version
+	// LBA.GOG
+	// 11 October 2011 at 17:30
+	{
+		"lba",
+		"GOG Classic Version",
+		AD_ENTRY1s("TLBA1C.exe", "e377d036e997acbf543bc3023ce72be6", 4404224),
+		Common::EN_ANY,
+		Common::kPlatformWindows,
+		TwinE::TF_LBA1_CLASSIC,
+		GUIO1(GUIO_NONE)
+	},
+	{
+		"lba",
+		"GOG Classic Version",
+		AD_ENTRY1s("TLBA1C.exe", "e377d036e997acbf543bc3023ce72be6", 4404224),
+		Common::FR_FRA,
+		Common::kPlatformWindows,
+		TwinE::TF_LBA1_CLASSIC,
+		GUIO1(GUIO_NONE)
+	},
+	{
+		"lba",
+		"GOG Classic Version",
+		AD_ENTRY1s("TLBA1C.exe", "e377d036e997acbf543bc3023ce72be6", 4404224),
+		Common::DE_DEU,
+		Common::kPlatformWindows,
+		TwinE::TF_LBA1_CLASSIC,
+		GUIO1(GUIO_NONE)
+	},
+	{
+		"lba",
+		"GOG Classic Version",
+		AD_ENTRY1s("TLBA1C.exe", "e377d036e997acbf543bc3023ce72be6", 4404224),
+		Common::IT_ITA,
+		Common::kPlatformWindows,
+		TwinE::TF_LBA1_CLASSIC,
+		GUIO1(GUIO_NONE)
+	},
+	{
+		"lba",
+		"GOG Classic Version",
+		AD_ENTRY1s("TLBA1C.exe", "e377d036e997acbf543bc3023ce72be6", 4404224),
+		Common::ES_ESP,
+		Common::kPlatformWindows,
+		TwinE::TF_LBA1_CLASSIC,
+		GUIO1(GUIO_NONE)
+	},
+
 	// FAN Translations - http://lba.fishos.net/bit/index.html
 
 	// Portuguese by xesf (alexfont)
diff --git a/engines/twine/detection.h b/engines/twine/detection.h
index 6dfcbc2b170..c8de9ccd32a 100644
--- a/engines/twine/detection.h
+++ b/engines/twine/detection.h
@@ -37,7 +37,8 @@ enum TwineFeatureFlags {
 	TF_VERSION_CUSTOM = (1 << 2),
 	TF_USE_GIF = (1 << 3),
 	TF_DOTEMU_ENHANCED = (1 << 4),
-	TF_MOD = (1 << 5)
+	TF_LBA1_CLASSIC = (1 << 5),
+	TF_MOD = (1 << 6)
 };
 
 } // End of namespace TwinE
diff --git a/engines/twine/twine.cpp b/engines/twine/twine.cpp
index 8b79948ec4d..71efde2df89 100644
--- a/engines/twine/twine.cpp
+++ b/engines/twine/twine.cpp
@@ -133,6 +133,24 @@ TwinEEngine::TwinEEngine(OSystem *system, Common::Language language, uint32 flag
 		SearchMan.addSubDirectoryMatching(gameDataDir, "video");
 		SearchMan.addSubDirectoryMatching(gameDataDir, "music");
 	}
+
+	if (isLba1Classic()) {
+		SearchMan.addSubDirectoryMatching(gameDataDir, "common");
+		SearchMan.addSubDirectoryMatching(gameDataDir, "commonclassic");
+		SearchMan.addSubDirectoryMatching(gameDataDir, "common/fla");
+		SearchMan.addSubDirectoryMatching(gameDataDir, "common/vox");
+		SearchMan.addSubDirectoryMatching(gameDataDir, "common/music");
+		SearchMan.addSubDirectoryMatching(gameDataDir, "common/midi");
+		SearchMan.addSubDirectoryMatching(gameDataDir, "commonclassic/images");
+		if (_gameLang == Common::Language::DE_DEU) {
+			SearchMan.addSubDirectoryMatching(gameDataDir, "commonclassic/voices/de_voice");
+		} else if (_gameLang == Common::Language::EN_ANY || _gameLang == Common::Language::EN_GRB || _gameLang == Common::Language::EN_USA) {
+			SearchMan.addSubDirectoryMatching(gameDataDir, "commonclassic/voices/en_voice");
+		} else if (_gameLang == Common::Language::FR_FRA) {
+			SearchMan.addSubDirectoryMatching(gameDataDir, "commonclassic/voices/fr_voice");
+		}
+	}
+
 	if (isDotEmuEnhanced()) {
 		SearchMan.addSubDirectoryMatching(gameDataDir, "resources/lba_files/hqr");
 		SearchMan.addSubDirectoryMatching(gameDataDir, "resources/lba_files/fla");
diff --git a/engines/twine/twine.h b/engines/twine/twine.h
index e81dc473dba..9d1e96d3f90 100644
--- a/engines/twine/twine.h
+++ b/engines/twine/twine.h
@@ -251,6 +251,7 @@ public:
 	bool isLBASlideShow() const { return _gameType == TwineGameType::GType_LBASHOW; }
 	bool isMod() const { return (_gameFlags & TwinE::TF_MOD) != 0; }
 	bool isDotEmuEnhanced() const { return (_gameFlags & TwinE::TF_DOTEMU_ENHANCED) != 0; }
+	bool isLba1Classic() const { return (_gameFlags & TwinE::TF_LBA1_CLASSIC) != 0; }
 	bool isDemo() const { return (_gameFlags & ADGF_DEMO) != 0; };
 	const char *getGameId() const;
 	Common::Language getGameLang() const;


Commit: e7b829412e40ee672f82089df7d0544f3e0196de
    https://github.com/scummvm/scummvm/commit/e7b829412e40ee672f82089df7d0544f3e0196de
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2022-06-01T18:16:00+02:00

Commit Message:
TWINE: show the 2.21 logo and the lba1 classic bitmap

Changed paths:
    engines/twine/renderer/screens.cpp
    engines/twine/renderer/screens.h
    engines/twine/twine.cpp


diff --git a/engines/twine/renderer/screens.cpp b/engines/twine/renderer/screens.cpp
index afccddaf3e8..ee1be96f211 100644
--- a/engines/twine/renderer/screens.cpp
+++ b/engines/twine/renderer/screens.cpp
@@ -20,9 +20,11 @@
  */
 
 #include "twine/renderer/screens.h"
+#include "common/file.h"
 #include "common/system.h"
 #include "graphics/managed_surface.h"
 #include "graphics/surface.h"
+#include "image/bmp.h"
 #include "twine/audio/music.h"
 #include "twine/resources/hqr.h"
 #include "twine/resources/resources.h"
@@ -97,6 +99,33 @@ bool Screens::loadImageDelay(TwineImage image, int32 seconds) {
 	return false;
 }
 
+bool Screens::loadBitmapDelay(const char *image, int32 seconds) {
+	Common::File fileHandle;
+	if (!fileHandle.open(image)) {
+		warning("Failed to open %s", image);
+		return false;
+	}
+
+	Image::BitmapDecoder bitmap;
+	if (!bitmap.loadStream(fileHandle)) {
+		warning("Failed to load %s", image);
+		return false;
+	}
+	const Graphics::Surface *src = bitmap.getSurface();
+	if (src == nullptr) {
+		warning("Failed to decode %s", image);
+		return false;
+	}
+	Graphics::ManagedSurface &target = _engine->_frontVideoBuffer;
+	Common::Rect rect(src->w, src->h);
+	_engine->setPalette(bitmap.getPaletteStartIndex(), bitmap.getPaletteColorCount(), bitmap.getPalette());
+	target.transBlitFrom(*src, rect, target.getBounds(), 0, false, 0, 0xff, nullptr, true);
+	if (_engine->delaySkip(1000 * seconds)) {
+		return true;
+	}
+	return false;
+}
+
 void Screens::fadeIn(const uint32 *pal) {
 	fadeToPal(pal);
 
diff --git a/engines/twine/renderer/screens.h b/engines/twine/renderer/screens.h
index c2da3cc7f95..464c583500e 100644
--- a/engines/twine/renderer/screens.h
+++ b/engines/twine/renderer/screens.h
@@ -109,6 +109,8 @@ public:
 	 */
 	bool loadImageDelay(TwineImage image, int32 seconds);
 
+	bool loadBitmapDelay(const char *image, int32 seconds);
+
 	/**
 	 * Fade image in
 	 * @param palette current palette to fade in
diff --git a/engines/twine/twine.cpp b/engines/twine/twine.cpp
index 71efde2df89..d6748c64a39 100644
--- a/engines/twine/twine.cpp
+++ b/engines/twine/twine.cpp
@@ -528,27 +528,34 @@ void TwinEEngine::playIntro() {
 		abort |= _screens->loadImageDelay(_resources->eaLogo(), 7);
 	}
 
-	abort |= _screens->adelineLogo();
+	if (isLba1Classic()) {
+		abort |= _screens->loadBitmapDelay("Logo2Point21_640_480_256.bmp", 3);
+		if (!abort) {
+			abort |= _screens->loadBitmapDelay("TLBA1C_640_480_256.bmp", 3);
+		}
+	} else {
+		abort |= _screens->adelineLogo();
 
-	if (isLBA1()) {
-		// verify game version screens
-		if (!abort && _cfgfile.Version == EUROPE_VERSION) {
-			// Little Big Adventure screen
-			abort |= _screens->loadImageDelay(_resources->lbaLogo(), 3);
-			if (!abort) {
-				// Electronic Arts Logo
-				abort |= _screens->loadImageDelay(_resources->eaLogo(), 2);
-			}
-		} else if (!abort && _cfgfile.Version == USA_VERSION) {
-			// Relentless screen
-			abort |= _screens->loadImageDelay(_resources->relentLogo(), 3);
-			if (!abort) {
-				// Electronic Arts Logo
-				abort |= _screens->loadImageDelay(_resources->eaLogo(), 2);
+		if (isLBA1()) {
+			// verify game version screens
+			if (!abort && _cfgfile.Version == EUROPE_VERSION) {
+				// Little Big Adventure screen
+				abort |= _screens->loadImageDelay(_resources->lbaLogo(), 3);
+				if (!abort) {
+					// Electronic Arts Logo
+					abort |= _screens->loadImageDelay(_resources->eaLogo(), 2);
+				}
+			} else if (!abort && _cfgfile.Version == USA_VERSION) {
+				// Relentless screen
+				abort |= _screens->loadImageDelay(_resources->relentLogo(), 3);
+				if (!abort) {
+					// Electronic Arts Logo
+					abort |= _screens->loadImageDelay(_resources->eaLogo(), 2);
+				}
+			} else if (!abort && _cfgfile.Version == MODIFICATION_VERSION) {
+				// Modification screen
+				abort |= _screens->loadImageDelay(_resources->relentLogo(), 2);
 			}
-		} else if (!abort && _cfgfile.Version == MODIFICATION_VERSION) {
-			// Modification screen
-			abort |= _screens->loadImageDelay(_resources->relentLogo(), 2);
 		}
 	}
 




More information about the Scummvm-git-logs mailing list