[Scummvm-git-logs] scummvm master -> 612c55f53fdc3c8e5509bbb88bdbc92a4646db70

mgerhardy martin.gerhardy at gmail.com
Sun Mar 28 16:58:31 UTC 2021


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

Summary:
698861bba6 TWINE: init the configuration values earlier
a108866b7d TWINE: added text parser
f98eead34f TWINE: format
e9b72e2d7e TWINE: debug output for text handling
772368b6dc TWINE: use TextData parser
df11ff82b9 TWINE: access to the current text bank id
a144b88b5c TWINE: added text-to-speech for the floppy disc version
612c55f53f TWINE: reduced warnings output to debug


Commit: 698861bba628ad0494f2f02cad6b514d4595a998
    https://github.com/scummvm/scummvm/commit/698861bba628ad0494f2f02cad6b514d4595a998
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-03-28T18:56:32+02:00

Commit Message:
TWINE: init the configuration values earlier

this allows us to load localized resources to the data cache

Changed paths:
    engines/twine/twine.cpp


diff --git a/engines/twine/twine.cpp b/engines/twine/twine.cpp
index 5ae1a45705..31cb4f56b5 100644
--- a/engines/twine/twine.cpp
+++ b/engines/twine/twine.cpp
@@ -462,9 +462,6 @@ void TwinEEngine::queueMovie(const char *filename) {
 }
 
 void TwinEEngine::initEngine() {
-	// getting configuration file
-	initConfigurations();
-
 	_screens->clearScreen();
 
 	// Check if LBA CD-Rom is on drive
@@ -522,6 +519,9 @@ void TwinEEngine::initAll() {
 	// Set clip to fullscreen by default, allows main menu to render properly after load
 	_interface->resetClip();
 
+	// getting configuration file
+	initConfigurations();
+
 	_resources->initResources();
 
 	exitSceneryView();


Commit: a108866b7d23bab093581b6935c39824dd8194d9
    https://github.com/scummvm/scummvm/commit/a108866b7d23bab093581b6935c39824dd8194d9
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-03-28T18:56:32+02:00

Commit Message:
TWINE: added text parser

Changed paths:
  A engines/twine/parser/text.cpp
  A engines/twine/parser/text.h
    engines/twine/module.mk


diff --git a/engines/twine/module.mk b/engines/twine/module.mk
index 7719c0595e..22fd6c2bc8 100644
--- a/engines/twine/module.mk
+++ b/engines/twine/module.mk
@@ -20,6 +20,7 @@ MODULE_OBJS := \
 	parser/holomap.o \
 	parser/parser.o \
 	parser/sprite.o \
+	parser/text.o \
 	\
 	renderer/redraw.o \
 	renderer/renderer.o \
diff --git a/engines/twine/parser/text.cpp b/engines/twine/parser/text.cpp
new file mode 100644
index 0000000000..3c5ac31b12
--- /dev/null
+++ b/engines/twine/parser/text.cpp
@@ -0,0 +1,81 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "twine/parser/text.h"
+#include "common/debug.h"
+#include "common/util.h"
+#include "twine/resources/hqr.h"
+
+namespace TwinE {
+
+bool TextData::loadFromHQR(const char *name, int textBankId, int language, int entryCount) {
+	const int langIdx = textBankId * 2 + (entryCount * language);
+	Common::SeekableReadStream *indexStream = HQR::makeReadStream(name, langIdx + 0);
+	Common::SeekableReadStream *offsetStream = HQR::makeReadStream(name, langIdx + 1);
+	if (indexStream == nullptr || offsetStream == nullptr) {
+		warning("Failed to load %s with index %i", name, langIdx);
+		delete indexStream;
+		delete offsetStream;
+		return false;
+	}
+
+	_texts[textBankId].clear();
+
+	const int numIdxEntries = indexStream->size() / 2;
+	_texts[textBankId].reserve(numIdxEntries);
+
+	for (int entry = 0; entry < numIdxEntries; ++entry) {
+		const uint16 textIdx = indexStream->readUint16LE();
+		const uint16 start = offsetStream->readUint16LE();
+		const int32 offsetPos = offsetStream->pos();
+		const uint16 end = offsetStream->readUint16LE();
+		offsetStream->seek(start);
+		Common::String result;
+		for (int16 i = start; i < end - 1; ++i) {
+			const char c = (char)offsetStream->readByte();
+			result += c;
+		}
+		_texts[textBankId].push_back(TextEntry{result, entry, textIdx});
+		debug(5, "index: %i (bank %i), text: %s", textIdx, textBankId, result.c_str());
+		offsetStream->seek(offsetPos);
+		if (end >= offsetStream->size()) {
+			break;
+		}
+	}
+	delete indexStream;
+	delete offsetStream;
+	return true;
+}
+
+const TextEntry *TextData::getText(int textBankId, int textIndex) const {
+	const Common::Array<TextEntry> &entries = _texts[textBankId];
+	const int32 size = entries.size();
+	for (int32 i = 0; i < size; ++i) {
+		if (entries[i].textIndex == textIndex) {
+			return &entries[i];
+		}
+	}
+	warning("Failed to find text entry for bank id %i with text index %i", textBankId, textIndex);
+	return nullptr;
+}
+
+} // End of namespace TwinE
diff --git a/engines/twine/parser/text.h b/engines/twine/parser/text.h
new file mode 100644
index 0000000000..50a676b847
--- /dev/null
+++ b/engines/twine/parser/text.h
@@ -0,0 +1,52 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef TWINE_PARSER_TEXT_H
+#define TWINE_PARSER_TEXT_H
+
+#include "common/array.h"
+#include "common/memstream.h"
+#include "common/stream.h"
+#include "twine/parser/parser.h"
+#include "twine/shared.h"
+
+namespace TwinE {
+
+struct TextEntry {
+	Common::String string;	/**< The real string behind the text id */
+	int index;				/**< The index in the text index hqr file. This is also the index in the corresponding vox hqr file */
+	int textIndex;			/**< The text identifier */
+};
+
+class TextData {
+private:
+	// 30 is the max for lba2, lba1 uses 28
+	Common::Array<TextEntry> _texts[30];
+public:
+	bool loadFromHQR(const char *name, int textBankId, int language, int entryCount);
+
+	const TextEntry *getText(int textBankId, int textIndex) const;
+};
+
+} // End of namespace TwinE
+
+#endif


Commit: f98eead34ff637635127c5afe6c12e2605eb5241
    https://github.com/scummvm/scummvm/commit/f98eead34ff637635127c5afe6c12e2605eb5241
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-03-28T18:56:32+02:00

Commit Message:
TWINE: format

Changed paths:
    engines/twine/resources/resources.h


diff --git a/engines/twine/resources/resources.h b/engines/twine/resources/resources.h
index d0bc368787..b8eabe1317 100644
--- a/engines/twine/resources/resources.h
+++ b/engines/twine/resources/resources.h
@@ -25,10 +25,10 @@
 
 #include "common/hashmap.h"
 #include "common/scummsys.h"
-#include "twine/parser/sprite.h"
 #include "twine/parser/holomap.h"
-#include "twine/scene/gamestate.h"
+#include "twine/parser/sprite.h"
 #include "twine/resources/hqr.h"
+#include "twine/scene/gamestate.h"
 #include "twine/scene/scene.h"
 
 namespace TwinE {
@@ -60,8 +60,8 @@ namespace TwinE {
 #define RESSHQR_ALARMREDPAL 22
 #define RESSHQR_FLAINFO 23
 #define RESSHQR_DARKPAL 24
-#define RESSHQR_TWINSEN_ZOE_SENDELLIMG  25
-#define RESSHQR_TWINSEN_ZOE_SENDELLPAL  26
+#define RESSHQR_TWINSEN_ZOE_SENDELLIMG 25
+#define RESSHQR_TWINSEN_ZOE_SENDELLPAL 26
 #define RESSHQR_ADELINEIMG 27
 #define RESSHQR_ADELINEPAL 28
 
@@ -148,7 +148,7 @@ private:
 	void preloadSamples();
 	void loadFlaInfo();
 
-	using MovieInfoMap = Common::HashMap<Common::String, Common::Array<int32>>;
+	using MovieInfoMap = Common::HashMap<Common::String, Common::Array<int32> >;
 	MovieInfoMap _flaMovieFrames;
 
 	TrajectoryData _trajectories;
@@ -157,15 +157,15 @@ public:
 	Resources(TwinEEngine *engine) : _engine(engine) {}
 	~Resources();
 
-	const Common::Array<int32>& getFlaMovieInfo(const Common::String &name) const;
+	const Common::Array<int32> &getFlaMovieInfo(const Common::String &name) const;
 
 	/** Table with all loaded samples */
 	BodyData inventoryTable[NUM_INVENTORY_ITEMS];
 
 	/** Table with all loaded sprites */
-	uint8 *spriteTable[NUM_SPRITES] {nullptr};
+	uint8 *spriteTable[NUM_SPRITES]{nullptr};
 	/** Table with all loaded sprite sizes */
-	uint32 spriteSizeTable[NUM_SPRITES] {0};
+	uint32 spriteSizeTable[NUM_SPRITES]{0};
 	SpriteData spriteData[NUM_SPRITES];
 
 	AnimData animData[NUM_ANIMS];
@@ -199,7 +199,7 @@ public:
 	/** Initialize resource pointers */
 	void initResources();
 
-	const Trajectory* getTrajectory(int index) const;
+	const Trajectory *getTrajectory(int index) const;
 
 	// main palette
 	static constexpr const char *HQR_RESS_FILE = "ress.hqr";


Commit: e9b72e2d7e4984cfa52493b79cbb364cfe4a2e1e
    https://github.com/scummvm/scummvm/commit/e9b72e2d7e4984cfa52493b79cbb364cfe4a2e1e
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-03-28T18:56:32+02:00

Commit Message:
TWINE: debug output for text handling

Changed paths:
    engines/twine/text.cpp


diff --git a/engines/twine/text.cpp b/engines/twine/text.cpp
index 6dde524a8d..081db8880c 100644
--- a/engines/twine/text.cpp
+++ b/engines/twine/text.cpp
@@ -722,6 +722,7 @@ bool Text::getText(int32 index) {
 	// RECHECK: this was added for vox playback
 	currDialTextEntry = currIdx;
 
+	debug(3, "text for bank %i with index %i (currIndex: %i): %s", _currentBankIdx, index, currIdx, _currDialTextPtr);
 	return true;
 }
 


Commit: 772368b6dcb30f8213869106d792782d07cee4de
    https://github.com/scummvm/scummvm/commit/772368b6dcb30f8213869106d792782d07cee4de
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-03-28T18:56:32+02:00

Commit Message:
TWINE: use TextData parser

Changed paths:
    engines/twine/resources/resources.cpp
    engines/twine/resources/resources.h
    engines/twine/text.cpp
    engines/twine/text.h


diff --git a/engines/twine/resources/resources.cpp b/engines/twine/resources/resources.cpp
index bff15c20f2..6a05ac6b1c 100644
--- a/engines/twine/resources/resources.cpp
+++ b/engines/twine/resources/resources.cpp
@@ -203,6 +203,18 @@ void Resources::initResources() {
 	}
 
 	loadFlaInfo();
+
+	const int32 textEntryCount = _engine->isLBA1() ? 28 : 30;
+	for (int32 i = 0; i < textEntryCount / 2; ++i) {
+		if (!_textData.loadFromHQR(Resources::HQR_TEXT_FILE, i, _engine->cfgfile.LanguageId, textEntryCount)) {
+			error("HQR ERROR: Parsing textbank %i failed", i);
+		}
+	}
+	debug("Loaded %i text banks", textEntryCount / 2);
+}
+
+const TextEntry *Resources::getText(int textBankId, int index) const {
+	return _textData.getText(textBankId, index);
 }
 
 const Trajectory *Resources::getTrajectory(int index) const {
diff --git a/engines/twine/resources/resources.h b/engines/twine/resources/resources.h
index b8eabe1317..61852b6637 100644
--- a/engines/twine/resources/resources.h
+++ b/engines/twine/resources/resources.h
@@ -27,6 +27,7 @@
 #include "common/scummsys.h"
 #include "twine/parser/holomap.h"
 #include "twine/parser/sprite.h"
+#include "twine/parser/text.h"
 #include "twine/resources/hqr.h"
 #include "twine/scene/gamestate.h"
 #include "twine/scene/scene.h"
@@ -153,6 +154,8 @@ private:
 
 	TrajectoryData _trajectories;
 
+	TextData _textData;
+
 public:
 	Resources(TwinEEngine *engine) : _engine(engine) {}
 	~Resources();
@@ -201,6 +204,8 @@ public:
 
 	const Trajectory *getTrajectory(int index) const;
 
+	const TextEntry *getText(int textBankId, int index) const;
+
 	// main palette
 	static constexpr const char *HQR_RESS_FILE = "ress.hqr";
 	// dialoges
diff --git a/engines/twine/text.cpp b/engines/twine/text.cpp
index 081db8880c..fe417d0810 100644
--- a/engines/twine/text.cpp
+++ b/engines/twine/text.cpp
@@ -32,6 +32,7 @@
 #include "twine/input.h"
 #include "twine/menu/interface.h"
 #include "twine/menu/menu.h"
+#include "twine/parser/text.h"
 #include "twine/renderer/renderer.h"
 #include "twine/renderer/screens.h"
 #include "twine/resources/hqr.h"
@@ -44,9 +45,6 @@ namespace TwinE {
 /** FLA movie extension */
 #define VOX_EXT ".vox"
 
-#define INDEXOFFSET 0
-#define DIALOGSOFFSET 1
-
 static const int32 PADDING = 8;
 
 Text::Text(TwinEEngine *engine) : _engine(engine) {
@@ -54,8 +52,6 @@ Text::Text(TwinEEngine *engine) : _engine(engine) {
 }
 
 Text::~Text() {
-	free(_dialTextPtr);
-	free(_dialOrderPtr);
 }
 
 void Text::initVoxBank(int32 bankIdx) {
@@ -95,16 +91,8 @@ bool Text::initVoxToPlay(int32 index) { // setVoxFileAtDigit
 		return false;
 	}
 
-	Common::MemoryReadStream stream((const byte *)_dialOrderPtr, _dialOrderSize);
-	// choose right text from order index
-	for (int32 i = 0; i < _numDialTextEntries; i++) {
-		const int32 orderIdx = stream.readSint16LE();
-		if (orderIdx == index) {
-			currDialTextEntry = i;
-			break;
-		}
-	}
-
+	const TextEntry *textEntry = _engine->_resources->getText(_currentBankIdx, index);
+	currDialTextEntry = textEntry ? textEntry->index : 0;
 	_engine->_sound->playVoxSample(currDialTextEntry);
 
 	return true;
@@ -145,24 +133,6 @@ void Text::initTextBank(int32 bankIdx) {
 	}
 
 	_currentBankIdx = bankIdx;
-
-	// get index according with language
-	const int32 size = _engine->isLBA1() ? 28 : 30;
-	// the text banks indices are split into index and dialogs - each entry thus consists of two entries in the hqr
-	// every 28 entries starts a new language
-	const int32 languageIndex = _engine->cfgfile.LanguageId * size + (int)bankIdx * 2;
-	_dialOrderSize = HQR::getAllocEntry((uint8 **)&_dialOrderPtr, Resources::HQR_TEXT_FILE, languageIndex + INDEXOFFSET);
-	if (_dialOrderSize == 0) {
-		warning("Failed to initialize text bank %i from file %s", languageIndex, Resources::HQR_TEXT_FILE);
-		return;
-	}
-
-	_numDialTextEntries = _dialOrderSize / 2;
-
-	if (HQR::getAllocEntry((uint8 **)&_dialTextPtr, Resources::HQR_TEXT_FILE, languageIndex + DIALOGSOFFSET) == 0) {
-		warning("Failed to initialize additional text bank %i from file %s", languageIndex + 1, Resources::HQR_TEXT_FILE);
-		return;
-	}
 	initVoxBank(bankIdx);
 }
 
@@ -694,35 +664,17 @@ void Text::setTextCrossColor(int32 stopColor, int32 startColor, int32 stepSize)
 }
 
 bool Text::getText(int32 index) {
-	const int16 *localTextBuf = (const int16 *)_dialTextPtr;
-	const int16 *localOrderBuf = (const int16 *)_dialOrderPtr;
-
-	const int32 numEntries = _numDialTextEntries;
-	int32 currIdx = 0;
-	// choose right text from order index
-	do {
-		const int16 orderIdx = READ_LE_UINT16(localOrderBuf);
-		if (orderIdx == index) {
-			break;
-		}
-		currIdx++;
-		localOrderBuf++;
-	} while (currIdx < numEntries);
-
-	if (currIdx >= numEntries) {
+	const TextEntry *textEntry = _engine->_resources->getText(_currentBankIdx, index);
+	if (textEntry == nullptr) {
 		return false;
 	}
-
-	const int32 ptrCurrentEntry = READ_LE_INT16(&localTextBuf[currIdx]);
-	const int32 ptrNextEntry = READ_LE_INT16(&localTextBuf[currIdx + 1]);
-
-	_currDialTextPtr = _dialTextPtr + ptrCurrentEntry;
-	_currDialTextSize = ptrNextEntry - ptrCurrentEntry;
+	_currDialTextPtr = textEntry->string.c_str();
+	_currDialTextSize = textEntry->string.size();
 
 	// RECHECK: this was added for vox playback
-	currDialTextEntry = currIdx;
+	currDialTextEntry = textEntry->index;
 
-	debug(3, "text for bank %i with index %i (currIndex: %i): %s", _currentBankIdx, index, currIdx, _currDialTextPtr);
+	debug(3, "text for bank %i with index %i (currIndex: %i): %s", _currentBankIdx, textEntry->index, textEntry->textIndex, _currDialTextPtr);
 	return true;
 }
 
diff --git a/engines/twine/text.h b/engines/twine/text.h
index c7f6bcfe8e..605013ca3f 100644
--- a/engines/twine/text.h
+++ b/engines/twine/text.h
@@ -172,14 +172,6 @@ private:
 	// RECHECK THIS LATER
 	int32 _currentBankIdx = TextBankId::None; // textVar1
 
-	/** Dialogue text pointer */
-	char *_dialTextPtr = nullptr; // bufText
-	/** Dialogue entry order pointer */
-	int32 _dialOrderSize = 0;
-	char *_dialOrderPtr = nullptr; // bufOrder
-	/** Number of dialogues text entries */
-	int16 _numDialTextEntries = 0;
-
 	// TODO: refactor all this variables and related functions
 	char _progressiveTextBuffer[256] {'\0'};
 	const char *_currentTextPosition = nullptr;
@@ -200,7 +192,7 @@ private:
 	int32 _fadeInCharactersPos = 0;
 
 	/** Current dialogue text pointer */
-	char *_currDialTextPtr = nullptr;
+	const char *_currDialTextPtr = nullptr;
 	/** Current dialogue text size */
 	int32 _currDialTextSize = 0;
 


Commit: df11ff82b907a6663a20f7e6c3c08557b1bc63e3
    https://github.com/scummvm/scummvm/commit/df11ff82b907a6663a20f7e6c3c08557b1bc63e3
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-03-28T18:56:32+02:00

Commit Message:
TWINE: access to the current text bank id

Changed paths:
    engines/twine/text.h


diff --git a/engines/twine/text.h b/engines/twine/text.h
index 605013ca3f..64b8cbf3c1 100644
--- a/engines/twine/text.h
+++ b/engines/twine/text.h
@@ -252,6 +252,9 @@ public:
 	 */
 	void initTextBank(int32 bankIdx);
 	void initSceneTextBank();
+	inline int textBank() const {
+		return _currentBankIdx;
+	}
 
 	/**
 	 * Display a certain dialogue text in the screen


Commit: a144b88b5c57e5b13b1fc0e7d5582c8d45a84fa0
    https://github.com/scummvm/scummvm/commit/a144b88b5c57e5b13b1fc0e7d5582c8d45a84fa0
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-03-28T18:56:32+02:00

Commit Message:
TWINE: added text-to-speech for the floppy disc version

this version doesn't include any vox files for speech

Changed paths:
    engines/twine/audio/sound.cpp
    engines/twine/metaengine.cpp


diff --git a/engines/twine/audio/sound.cpp b/engines/twine/audio/sound.cpp
index 16c0ba9a94..f779470fba 100644
--- a/engines/twine/audio/sound.cpp
+++ b/engines/twine/audio/sound.cpp
@@ -25,6 +25,7 @@
 #include "audio/decoders/voc.h"
 #include "common/memstream.h"
 #include "common/system.h"
+#include "common/text-to-speech.h"
 #include "common/types.h"
 #include "common/util.h"
 #include "twine/scene/collision.h"
@@ -122,6 +123,19 @@ void Sound::playVoxSample(int32 index) {
 	uint8 *sampPtr = nullptr;
 	int32 sampSize = HQR::getAllocVoxEntry(&sampPtr, _engine->_text->currentVoxBankFile.c_str(), index, _engine->_text->voxHiddenIndex);
 	if (sampSize == 0) {
+#ifdef USE_TTS
+		if (ConfMan.getBool("tts_narrator")) {
+			Common::TextToSpeechManager *ttsMan = g_system->getTextToSpeechManager();
+			if (ttsMan != nullptr) {
+				ttsMan->stop();
+				const TextEntry *text = _engine->_resources->getText(_engine->_text->textBank(), index);
+				if (text) {
+					ttsMan->say(text->string);
+				}
+				return;
+			}
+		}
+#endif
 		warning("Failed to get vox sample for index: %i", index);
 		return;
 	}
diff --git a/engines/twine/metaengine.cpp b/engines/twine/metaengine.cpp
index 14b6fdac52..dbca13ffb8 100644
--- a/engines/twine/metaengine.cpp
+++ b/engines/twine/metaengine.cpp
@@ -152,6 +152,15 @@ static const ExtraGuiOption OptHighRes = {
 	false
 };
 
+#ifdef USE_TTS
+static const ExtraGuiOption OptTextToSpeech = {
+	_s("TTS Narrator"),
+	_s("Use TTS to read the descriptions (if TTS is available)"),
+	"tts_narrator",
+	false
+};
+#endif
+
 const ExtraGuiOptions TwinEMetaEngine::getExtraGuiOptions(const Common::String &target) const {
 	ExtraGuiOptions options;
 	options.push_back(OptWallCollision);
@@ -167,6 +176,9 @@ const ExtraGuiOptions TwinEMetaEngine::getExtraGuiOptions(const Common::String &
 	options.push_back(OptVoices);
 	options.push_back(OptText);
 	options.push_back(OptDebug);
+#ifdef USE_TTS
+	options.push_back(OptTextToSpeech);
+#endif
 	return options;
 }
 


Commit: 612c55f53fdc3c8e5509bbb88bdbc92a4646db70
    https://github.com/scummvm/scummvm/commit/612c55f53fdc3c8e5509bbb88bdbc92a4646db70
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-03-28T18:56:33+02:00

Commit Message:
TWINE: reduced warnings output to debug

Changed paths:
    engines/twine/parser/text.cpp


diff --git a/engines/twine/parser/text.cpp b/engines/twine/parser/text.cpp
index 3c5ac31b12..f4e360ea0d 100644
--- a/engines/twine/parser/text.cpp
+++ b/engines/twine/parser/text.cpp
@@ -74,7 +74,7 @@ const TextEntry *TextData::getText(int textBankId, int textIndex) const {
 			return &entries[i];
 		}
 	}
-	warning("Failed to find text entry for bank id %i with text index %i", textBankId, textIndex);
+	debug(1, "Failed to find text entry for bank id %i with text index %i", textBankId, textIndex);
 	return nullptr;
 }
 




More information about the Scummvm-git-logs mailing list