[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