diff options
Diffstat (limited to 'engines/sci')
133 files changed, 163 insertions, 540 deletions
diff --git a/engines/sci/console.cpp b/engines/sci/console.cpp index 419f5e1415..af945247ba 100644 --- a/engines/sci/console.cpp +++ b/engines/sci/console.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  // Console module @@ -77,6 +74,9 @@ static int parse_reg_t(EngineState *s, const char *str, reg_t *dest, bool mayBeV  Console::Console(SciEngine *engine) : GUI::Debugger(),  	_engine(engine), _debugState(engine->_debugState) { +	assert(_engine); +	assert(_engine->_gamestate); +  	// Variables  	DVar_Register("sleeptime_factor",	&g_debug_sleeptime_factor, DVAR_INT, 0);  	DVar_Register("gc_interval",		&engine->_gamestate->scriptGCInterval, DVAR_INT, 0); @@ -3362,20 +3362,22 @@ bool Console::cmdSfx01Track(int argc, const char **argv) {  bool Console::cmdQuit(int argc, const char **argv) {  	if (argc != 2) { -		DebugPrintf("%s game - exit gracefully\n", argv[0]); -		DebugPrintf("%s now - exit ungracefully\n", argv[0]); -		return true;  	} -	if (!scumm_stricmp(argv[1], "game")) { +	if (argc == 2 && !scumm_stricmp(argv[1], "now")) { +		// Quit ungracefully +		g_system->quit(); +	} else if (argc == 1 || (argc == 2 && !scumm_stricmp(argv[1], "game"))) { +  		// Quit gracefully  		_engine->_gamestate->abortScriptProcessing = kAbortQuitGame; // Terminate VM  		_debugState.seeking = kDebugSeekNothing;  		_debugState.runningStep = 0; -	} else if (!scumm_stricmp(argv[1], "now")) { -		// Quit ungracefully -		exit(0); +	} else { +		DebugPrintf("%s [game] - exit gracefully\n", argv[0]); +		DebugPrintf("%s now - exit ungracefully\n", argv[0]); +		return true;  	}  	return Cmd_Exit(0, 0); @@ -3775,7 +3777,7 @@ int Console::printObject(reg_t pos) {  	DebugPrintf("  -- member variables:\n");  	for (i = 0; (uint)i < obj->getVarCount(); i++) {  		DebugPrintf("    "); -		if (i < var_container->getVarCount()) { +		if (var_container && i < var_container->getVarCount()) {  			uint16 varSelector = var_container->getVarSelector(i);  			DebugPrintf("[%03x] %s = ", varSelector, _engine->getKernel()->getSelectorName(varSelector).c_str());  		} else diff --git a/engines/sci/console.h b/engines/sci/console.h index 93ccc45503..1e2ebe4ba2 100644 --- a/engines/sci/console.h +++ b/engines/sci/console.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */   // Console module header file diff --git a/engines/sci/debug.h b/engines/sci/debug.h index 8ddbbd0d45..765ceca07d 100644 --- a/engines/sci/debug.h +++ b/engines/sci/debug.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_DEBUG_H diff --git a/engines/sci/decompressor.cpp b/engines/sci/decompressor.cpp index c122fceeb0..03a06d240d 100644 --- a/engines/sci/decompressor.cpp +++ b/engines/sci/decompressor.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  // Resource library diff --git a/engines/sci/decompressor.h b/engines/sci/decompressor.h index 8b6f955ddb..37a5b5d7cb 100644 --- a/engines/sci/decompressor.h +++ b/engines/sci/decompressor.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_DECOMPRESSOR_H diff --git a/engines/sci/detection.cpp b/engines/sci/detection.cpp index 6db6cf8353..61e6cc9d09 100644 --- a/engines/sci/detection.cpp +++ b/engines/sci/detection.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "engines/advancedDetector.h" @@ -405,7 +402,7 @@ public:  	SciMetaEngine() : AdvancedMetaEngine(detectionParams) {}  	virtual const char *getName() const { -		return "SCI Engine [SCI0, SCI01, SCI10, SCI11" +		return "SCI [SCI0, SCI01, SCI10, SCI11"  #ifdef ENABLE_SCI32  			", SCI32"  #endif diff --git a/engines/sci/detection_tables.h b/engines/sci/detection_tables.h index 829831d3a6..d56d8f03cd 100644 --- a/engines/sci/detection_tables.h +++ b/engines/sci/detection_tables.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  namespace Sci { diff --git a/engines/sci/engine/features.cpp b/engines/sci/engine/features.cpp index 964097f57d..a5c1b970f1 100644 --- a/engines/sci/engine/features.cpp +++ b/engines/sci/engine/features.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "sci/engine/features.h" diff --git a/engines/sci/engine/features.h b/engines/sci/engine/features.h index 8237d43714..07ba626d15 100644 --- a/engines/sci/engine/features.h +++ b/engines/sci/engine/features.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_INCLUDE_FEATURES_H diff --git a/engines/sci/engine/gc.cpp b/engines/sci/engine/gc.cpp index e395eeab94..2d71878bda 100644 --- a/engines/sci/engine/gc.cpp +++ b/engines/sci/engine/gc.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "sci/engine/gc.h" diff --git a/engines/sci/engine/gc.h b/engines/sci/engine/gc.h index 48e1c6b482..97aa6513b6 100644 --- a/engines/sci/engine/gc.h +++ b/engines/sci/engine/gc.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */ diff --git a/engines/sci/engine/kernel.cpp b/engines/sci/engine/kernel.cpp index ea6fa31d05..8fb6322f55 100644 --- a/engines/sci/engine/kernel.cpp +++ b/engines/sci/engine/kernel.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "sci/sci.h" diff --git a/engines/sci/engine/kernel.h b/engines/sci/engine/kernel.h index 9a55ef630b..68b1601580 100644 --- a/engines/sci/engine/kernel.h +++ b/engines/sci/engine/kernel.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_ENGINE_KERNEL_H diff --git a/engines/sci/engine/kernel_tables.h b/engines/sci/engine/kernel_tables.h index 16d56d10a8..31ef64d109 100644 --- a/engines/sci/engine/kernel_tables.h +++ b/engines/sci/engine/kernel_tables.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_ENGINE_KERNEL_TABLES_H diff --git a/engines/sci/engine/kevent.cpp b/engines/sci/engine/kevent.cpp index 725b78341b..2cd6b198de 100644 --- a/engines/sci/engine/kevent.cpp +++ b/engines/sci/engine/kevent.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "common/system.h" diff --git a/engines/sci/engine/kfile.cpp b/engines/sci/engine/kfile.cpp index 0e2f64257a..ee88d8af15 100644 --- a/engines/sci/engine/kfile.cpp +++ b/engines/sci/engine/kfile.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "common/archive.h" @@ -466,7 +463,7 @@ static int findSavegame(Common::Array<SavegameDesc> &saves, int16 savegameId) {  // The scripts get IDs ranging from 100->199, because the scripts require us to assign unique ids THAT EVEN STAY BETWEEN  //  SAVES and the scripts also use "saves-count + 1" to create a new savedgame slot.  //  SCI1.1 actually recycles ids, in that case we will currently get "0". -// This behaviour is required especially for LSL6. In this game, it's possible to quick save. The scripts will use +// This behavior is required especially for LSL6. In this game, it's possible to quick save. The scripts will use  //  the last-used id for that feature. If we don't assign sticky ids, the feature will overwrite different saves all the  //  time. And sadly we can't just use the actual filename ids directly, because of the creation method for new slots. diff --git a/engines/sci/engine/kgraphics.cpp b/engines/sci/engine/kgraphics.cpp index c7a2a26c3d..6c96266922 100644 --- a/engines/sci/engine/kgraphics.cpp +++ b/engines/sci/engine/kgraphics.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "common/system.h" @@ -363,10 +360,29 @@ reg_t kTextSize(EngineState *s, int argc, reg_t *argv) {  	} else  #endif  		g_sci->_gfxText16->kernelTextSize(g_sci->strSplit(text.c_str(), sep).c_str(), font_nr, maxwidth, &textWidth, &textHeight); -	 + +	// One of the game texts in LB2 German contains loads of spaces in +	// its end. We trim the text here, otherwise the graphics code will +	// attempt to draw a very large window (larger than the screen) to +	// show the text, and crash. +	// Fixes bug #3306417. +	if (textWidth >= g_sci->_gfxScreen->getDisplayWidth() || +		textHeight >= g_sci->_gfxScreen->getDisplayHeight()) { +		// TODO: Is this needed for SCI32 as well? +		if (g_sci->_gfxText16) { +			warning("kTextSize: string would be too big to fit on screen. Trimming it"); +			text.trim(); +			// Copy over the trimmed string... +			s->_segMan->strcpy(argv[1], text.c_str()); +			// ...and recalculate bounding box dimensions +			g_sci->_gfxText16->kernelTextSize(g_sci->strSplit(text.c_str(), sep).c_str(), font_nr, maxwidth, &textWidth, &textHeight); +		} +	} +  	debugC(kDebugLevelStrings, "GetTextSize '%s' -> %dx%d", text.c_str(), textWidth, textHeight);  	dest[2] = make_reg(0, textHeight);  	dest[3] = make_reg(0, textWidth); +  	return s->r_acc;  } diff --git a/engines/sci/engine/klists.cpp b/engines/sci/engine/klists.cpp index 38cd6ef023..68469f5c9a 100644 --- a/engines/sci/engine/klists.cpp +++ b/engines/sci/engine/klists.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "sci/engine/features.h" diff --git a/engines/sci/engine/kmath.cpp b/engines/sci/engine/kmath.cpp index 9baf9f5a54..ef795d7e2f 100644 --- a/engines/sci/engine/kmath.cpp +++ b/engines/sci/engine/kmath.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "sci/engine/state.h" diff --git a/engines/sci/engine/kmenu.cpp b/engines/sci/engine/kmenu.cpp index 3986966a71..02aa1d3ece 100644 --- a/engines/sci/engine/kmenu.cpp +++ b/engines/sci/engine/kmenu.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "sci/sci.h" diff --git a/engines/sci/engine/kmisc.cpp b/engines/sci/engine/kmisc.cpp index 80425224bf..daed248db1 100644 --- a/engines/sci/engine/kmisc.cpp +++ b/engines/sci/engine/kmisc.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "common/system.h" diff --git a/engines/sci/engine/kmovement.cpp b/engines/sci/engine/kmovement.cpp index f4392df8f2..31715f19d3 100644 --- a/engines/sci/engine/kmovement.cpp +++ b/engines/sci/engine/kmovement.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "sci/sci.h" diff --git a/engines/sci/engine/kparse.cpp b/engines/sci/engine/kparse.cpp index 09cf7744b2..59694cb6ee 100644 --- a/engines/sci/engine/kparse.cpp +++ b/engines/sci/engine/kparse.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  /* String and parser handling */ diff --git a/engines/sci/engine/kpathing.cpp b/engines/sci/engine/kpathing.cpp index 7786f9b093..8904a48978 100644 --- a/engines/sci/engine/kpathing.cpp +++ b/engines/sci/engine/kpathing.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "sci/sci.h" @@ -37,6 +34,8 @@  namespace Sci { +// TODO: Code cleanup +  #define AVOIDPATH_DYNMEM_STRING "AvoidPath polyline"  #define POLY_LAST_POINT 0x7777 @@ -1177,7 +1176,6 @@ static void change_polygons_opt_0(PathfindingState *s) {  static PathfindingState *convert_polygon_set(EngineState *s, reg_t poly_list, Common::Point start, Common::Point end, int width, int height, int opt) {  	SegManager *segMan = s->_segMan;  	Polygon *polygon; -	int err;  	int count = 0;  	PathfindingState *pf_s = new PathfindingState(width, height); @@ -1200,50 +1198,53 @@ static PathfindingState *convert_polygon_set(EngineState *s, reg_t poly_list, Co  		}  	} -	if (opt == 0) { -		Common::Point intersection; - -		// Keyboard support -		// FIXME: We don't need to dijkstra for keyboard support as we currently do +	if (opt == 0)  		change_polygons_opt_0(pf_s); -		// Find nearest intersection -		err = nearest_intersection(pf_s, start, end, &intersection); - -		if (err == PF_FATAL) { -			warning("AvoidPath: fatal error finding nearest intersection"); -			delete pf_s; -			return NULL; -		} - -		if (err == PF_OK) { -			// Intersection was found, prepend original start position after pathfinding -			pf_s->_prependPoint = new Common::Point(start); -			// Merge new start point into polygon set -			pf_s->vertex_start = merge_point(pf_s, intersection); -		} else { -			// Otherwise we proceed with the original start point -			pf_s->vertex_start = merge_point(pf_s, start); -		} -		// Merge end point into polygon set -		pf_s->vertex_end = merge_point(pf_s, end); -	} else { -		Common::Point *new_start = fixup_start_point(pf_s, start); +	Common::Point *new_start = fixup_start_point(pf_s, start); +	 +	if (!new_start) { +		warning("AvoidPath: Couldn't fixup start position for pathfinding"); +		delete pf_s; +		return NULL; +	} -		if (!new_start) { -			warning("AvoidPath: Couldn't fixup start position for pathfinding"); -			delete pf_s; -			return NULL; -		} +	Common::Point *new_end = fixup_end_point(pf_s, end); +	 +	if (!new_end) { +		warning("AvoidPath: Couldn't fixup end position for pathfinding"); +		delete new_start; +		delete pf_s; +		return NULL; +	} -		Common::Point *new_end = fixup_end_point(pf_s, end); +	if (opt == 0) { +		// Keyboard support. Only the first edge of the path we compute +		// here matches the path returned by SSCI. This is assumed to be +		// sufficient as all known use cases only use the first two +		// vertices of the returned path. +		// Pharkas uses this mode for a secondary polygon set containing +		// rectangular polygons used to block an actor's path. + +		// If we have a prepended point, we do nothing here as the +		// actor is in barred territory and should be moved outside of +		// it ASAP. This matches the behavior of SSCI. +		if (!pf_s->_prependPoint) { +			// Actor position is OK, find nearest obstacle. +			int err = nearest_intersection(pf_s, start, *new_end, new_start); + +			if (err == PF_FATAL) { +				warning("AvoidPath: error finding nearest intersection"); +				delete new_start; +				delete new_end; +				delete pf_s; +				return NULL; +			} -		if (!new_end) { -			warning("AvoidPath: Couldn't fixup end position for pathfinding"); -			delete pf_s; -			return NULL; +			if (err == PF_OK) +				pf_s->_prependPoint = new Common::Point(start);  		} - +	} else {  		// WORKAROUND LSL5 room 660. Priority glitch due to us choosing a different path  		// than SSCI. Happens when Patti walks to the control room.  		if (g_sci->getGameId() == GID_LSL5 && (s->currentRoomNumber() == 660) && (Common::Point(67, 131) == *new_start) && (Common::Point(229, 101) == *new_end)) { @@ -1251,14 +1252,14 @@ static PathfindingState *convert_polygon_set(EngineState *s, reg_t poly_list, Co  			pf_s->_prependPoint = new_start;  			new_start = new Common::Point(77, 107);  		} +	} -		// Merge start and end points into polygon set -		pf_s->vertex_start = merge_point(pf_s, *new_start); -		pf_s->vertex_end = merge_point(pf_s, *new_end); +	// Merge start and end points into polygon set +	pf_s->vertex_start = merge_point(pf_s, *new_start); +	pf_s->vertex_end = merge_point(pf_s, *new_end); -		delete new_start; -		delete new_end; -	} +	delete new_start; +	delete new_end;  	// Allocate and build vertex index  	pf_s->vertex_index = (Vertex**)malloc(sizeof(Vertex *) * (count + 2)); diff --git a/engines/sci/engine/kscripts.cpp b/engines/sci/engine/kscripts.cpp index b9baa3540a..d83254b2c4 100644 --- a/engines/sci/engine/kscripts.cpp +++ b/engines/sci/engine/kscripts.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "sci/sci.h" @@ -49,7 +46,7 @@ reg_t kLoad(EngineState *s, int argc, reg_t *argv) {  }  // Unloads an arbitrary resource of type 'restype' with resource numbber 'resnr' -//  behaviour of this call didn't change between sci0->sci1.1 parameter wise, which means getting called with +//  behavior of this call didn't change between sci0->sci1.1 parameter wise, which means getting called with  //  1 or 3+ parameters is not right according to sierra sci  reg_t kUnLoad(EngineState *s, int argc, reg_t *argv) {  	if (argc >= 2) { @@ -195,7 +192,7 @@ reg_t kDisposeClone(EngineState *s, int argc, reg_t *argv) {  	}  	// SCI uses this technique to find out, if it's a clone and if it's supposed to get freed -	//  At least kq4early relies on this behaviour. The scripts clone "Sound", then set bit 1 manually +	//  At least kq4early relies on this behavior. The scripts clone "Sound", then set bit 1 manually  	//  and call kDisposeClone later. In that case we may not free it, otherwise we will run into issues  	//  later, because kIsObject would then return false and Sound object wouldn't get checked.  	uint16 infoSelector = object->getInfoSelector().offset; @@ -262,7 +259,7 @@ reg_t kDisposeScript(EngineState *s, int argc, reg_t *argv) {  	SegmentId id = s->_segMan->getScriptSegment(script);  	Script *scr = s->_segMan->getScriptIfLoaded(id); -	if (scr) { +	if (scr && !scr->isMarkedAsDeleted()) {  		if (s->_executionStack.back().addr.pc.segment != id)  			scr->setLockers(1);  	} diff --git a/engines/sci/engine/ksound.cpp b/engines/sci/engine/ksound.cpp index 7fb6ac296e..33bef58e52 100644 --- a/engines/sci/engine/ksound.cpp +++ b/engines/sci/engine/ksound.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "sci/sci.h" diff --git a/engines/sci/engine/kstring.cpp b/engines/sci/engine/kstring.cpp index e79af70158..c3c10bd2a2 100644 --- a/engines/sci/engine/kstring.cpp +++ b/engines/sci/engine/kstring.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  /* String and parser handling */ @@ -69,8 +66,9 @@ reg_t kStrCpy(EngineState *s, int argc, reg_t *argv) {  			s->_segMan->strncpy(argv[0], argv[1], length);  		else  			s->_segMan->memcpy(argv[0], argv[1], -length); -	} else +	} else {  		s->_segMan->strcpy(argv[0], argv[1]); +	}  	return argv[0];  } diff --git a/engines/sci/engine/kvideo.cpp b/engines/sci/engine/kvideo.cpp index a8d4437148..9a60f39c85 100644 --- a/engines/sci/engine/kvideo.cpp +++ b/engines/sci/engine/kvideo.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "engines/util.h" diff --git a/engines/sci/engine/message.cpp b/engines/sci/engine/message.cpp index ff2d96e804..f30f4e923e 100644 --- a/engines/sci/engine/message.cpp +++ b/engines/sci/engine/message.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */ diff --git a/engines/sci/engine/message.h b/engines/sci/engine/message.h index 43ddb29d78..4444ede3bb 100644 --- a/engines/sci/engine/message.h +++ b/engines/sci/engine/message.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_ENGINE_MESSAGE_H diff --git a/engines/sci/engine/object.cpp b/engines/sci/engine/object.cpp index 267ba35e3c..f09f18298a 100644 --- a/engines/sci/engine/object.cpp +++ b/engines/sci/engine/object.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */ @@ -61,14 +58,14 @@ void Object::init(byte *buf, reg_t obj_pos, bool initVariables) {  	if (getSciVersion() <= SCI_VERSION_1_LATE) {  		_variables.resize(READ_LE_UINT16(data + kOffsetSelectorCounter)); -		_baseVars = (uint16 *)(_baseObj + _variables.size() * 2); +		_baseVars = (const uint16 *)(_baseObj + _variables.size() * 2);  		_methodCount = READ_LE_UINT16(data + READ_LE_UINT16(data + kOffsetFunctionArea) - 2);  		for (int i = 0; i < _methodCount * 2 + 2; ++i) {  			_baseMethod.push_back(READ_SCI11ENDIAN_UINT16(data + READ_LE_UINT16(data + kOffsetFunctionArea) + i * 2));  		}  	} else if (getSciVersion() >= SCI_VERSION_1_1 && getSciVersion() <= SCI_VERSION_2_1) {  		_variables.resize(READ_SCI11ENDIAN_UINT16(data + 2)); -		_baseVars = (uint16 *)(buf + READ_SCI11ENDIAN_UINT16(data + 4)); +		_baseVars = (const uint16 *)(buf + READ_SCI11ENDIAN_UINT16(data + 4));  		_methodCount = READ_SCI11ENDIAN_UINT16(buf + READ_SCI11ENDIAN_UINT16(data + 6));  		for (int i = 0; i < _methodCount * 2 + 3; ++i) {  			_baseMethod.push_back(READ_SCI11ENDIAN_UINT16(buf + READ_SCI11ENDIAN_UINT16(data + 6) + i * 2)); diff --git a/engines/sci/engine/object.h b/engines/sci/engine/object.h index 8ae06f2707..80c8e9e83d 100644 --- a/engines/sci/engine/object.h +++ b/engines/sci/engine/object.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_ENGINE_OBJECT_H @@ -239,7 +236,7 @@ private:  	void initSelectorsSci3(const byte *buf);  	const byte *_baseObj; /**< base + object offset within base */ -	uint16 *_baseVars; /**< Pointer to the varselector area for this object */ +	const uint16 *_baseVars; /**< Pointer to the varselector area for this object */  	Common::Array<uint16> _baseMethod; /**< Pointer to the method selector area for this object */  	uint16 *_propertyOffsetsSci3; /**< This is used to enable relocation of property valuesa in SCI3 */ diff --git a/engines/sci/engine/savegame.cpp b/engines/sci/engine/savegame.cpp index 43d00ebc15..65b5e602ff 100644 --- a/engines/sci/engine/savegame.cpp +++ b/engines/sci/engine/savegame.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "common/stream.h" diff --git a/engines/sci/engine/savegame.h b/engines/sci/engine/savegame.h index 778b0bf137..ff5bc5204b 100644 --- a/engines/sci/engine/savegame.h +++ b/engines/sci/engine/savegame.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_ENGINE_SAVEGAME_H diff --git a/engines/sci/engine/script.cpp b/engines/sci/engine/script.cpp index 25bf91c3ad..a38aa06bc4 100644 --- a/engines/sci/engine/script.cpp +++ b/engines/sci/engine/script.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "sci/sci.h" @@ -383,6 +380,7 @@ void Script::relocateSci3(reg_t block) {  }  void Script::incrementLockers() { +	assert(!_markedAsDeleted);  	_lockers++;  } @@ -396,6 +394,7 @@ int Script::getLockers() const {  }  void Script::setLockers(int lockers) { +	assert(lockers == 0 || !_markedAsDeleted);  	_lockers = lockers;  } @@ -493,7 +492,7 @@ SegmentRef Script::dereference(reg_t pointer) {  	return ret;  } -void Script::initialiseLocals(SegManager *segMan) { +void Script::initializeLocals(SegManager *segMan) {  	LocalVariables *locals = segMan->allocLocalsSegment(this);  	if (locals) {  		if (getSciVersion() > SCI_VERSION_0_EARLY) { @@ -509,7 +508,7 @@ void Script::initialiseLocals(SegManager *segMan) {  	}  } -void Script::initialiseClasses(SegManager *segMan) { +void Script::initializeClasses(SegManager *segMan) {  	const byte *seeker = 0;  	uint16 mult = 0; @@ -581,7 +580,7 @@ void Script::initialiseClasses(SegManager *segMan) {  	}  } -void Script::initialiseObjectsSci0(SegManager *segMan, SegmentId segmentId) { +void Script::initializeObjectsSci0(SegManager *segMan, SegmentId segmentId) {  	bool oldScriptHeader = (getSciVersion() == SCI_VERSION_0_EARLY);  	// We need to make two passes, as the objects in the script might be in the @@ -633,7 +632,7 @@ void Script::initialiseObjectsSci0(SegManager *segMan, SegmentId segmentId) {  		relocateSci0Sci21(make_reg(segmentId, relocationBlock - getBuf() + 4));  } -void Script::initialiseObjectsSci11(SegManager *segMan, SegmentId segmentId) { +void Script::initializeObjectsSci11(SegManager *segMan, SegmentId segmentId) {  	const byte *seeker = _heapStart + 4 + READ_SCI11ENDIAN_UINT16(_heapStart + 2) * 2;  	while (READ_SCI11ENDIAN_UINT16(seeker) == SCRIPT_OBJECT_MAGIC_NUMBER) { @@ -668,7 +667,7 @@ void Script::initialiseObjectsSci11(SegManager *segMan, SegmentId segmentId) {  	relocateSci0Sci21(make_reg(segmentId, READ_SCI11ENDIAN_UINT16(_heapStart)));  } -void Script::initialiseObjectsSci3(SegManager *segMan, SegmentId segmentId) { +void Script::initializeObjectsSci3(SegManager *segMan, SegmentId segmentId) {  	const byte *seeker = getSci3ObjectsPointer();  	while (READ_SCI11ENDIAN_UINT16(seeker) == SCRIPT_OBJECT_MAGIC_NUMBER) { @@ -682,13 +681,13 @@ void Script::initialiseObjectsSci3(SegManager *segMan, SegmentId segmentId) {  	relocateSci3(make_reg(segmentId, 0));  } -void Script::initialiseObjects(SegManager *segMan, SegmentId segmentId) { +void Script::initializeObjects(SegManager *segMan, SegmentId segmentId) {  	if (getSciVersion() <= SCI_VERSION_1_LATE) -		initialiseObjectsSci0(segMan, segmentId); +		initializeObjectsSci0(segMan, segmentId);  	else if (getSciVersion() >= SCI_VERSION_1_1 && getSciVersion() <= SCI_VERSION_2_1) -		initialiseObjectsSci11(segMan, segmentId); +		initializeObjectsSci11(segMan, segmentId);  	else if (getSciVersion() == SCI_VERSION_3) -		initialiseObjectsSci3(segMan, segmentId); +		initializeObjectsSci3(segMan, segmentId);  }  reg_t Script::findCanonicAddress(SegManager *segMan, reg_t addr) const { diff --git a/engines/sci/engine/script.h b/engines/sci/engine/script.h index 18d7157747..ff061e0e36 100644 --- a/engines/sci/engine/script.h +++ b/engines/sci/engine/script.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_ENGINE_SCRIPT_H @@ -140,20 +137,20 @@ public:  	 * Initializes the script's local variables  	 * @param segMan	A reference to the segment manager  	 */ -	void initialiseLocals(SegManager *segMan); +	void initializeLocals(SegManager *segMan);  	/**  	 * Adds the script's classes to the segment manager's class table  	 * @param segMan	A reference to the segment manager  	 */ -	void initialiseClasses(SegManager *segMan); +	void initializeClasses(SegManager *segMan);  	/**  	 * Initializes the script's objects (SCI0)  	 * @param segMan	A reference to the segment manager  	 * @param segmentId	The script's segment id  	 */ -	void initialiseObjects(SegManager *segMan, SegmentId segmentId); +	void initializeObjects(SegManager *segMan, SegmentId segmentId);  	// script lock operations @@ -283,21 +280,21 @@ private:  	 * @param segMan	A reference to the segment manager  	 * @param segmentId	The script's segment id  	 */ -	void initialiseObjectsSci0(SegManager *segMan, SegmentId segmentId); +	void initializeObjectsSci0(SegManager *segMan, SegmentId segmentId);  	/**  	 * Initializes the script's objects (SCI1.1 - SCI2.1)  	 * @param segMan	A reference to the segment manager  	 * @param segmentId	The script's segment id  	 */ -	void initialiseObjectsSci11(SegManager *segMan, SegmentId segmentId); +	void initializeObjectsSci11(SegManager *segMan, SegmentId segmentId);  	/**  	 * Initializes the script's objects (SCI3)  	 * @param segMan	A reference to the segment manager  	 * @param segmentId	The script's segment id  	 */ -	void initialiseObjectsSci3(SegManager *segMan, SegmentId segmentId); +	void initializeObjectsSci3(SegManager *segMan, SegmentId segmentId);  };  } // End of namespace Sci diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp index 06540e6f43..2d3d8f6155 100644 --- a/engines/sci/engine/script_patches.cpp +++ b/engines/sci/engine/script_patches.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "sci/sci.h" @@ -865,6 +862,7 @@ const byte qfg3DialogCrash[] = {  	0x34, 0xe7, 0x03,  // ldi 3e7 (999)  	0x22,              // lt?  	0x33,              // jmp [back] ---> BUG! Infinite loop +	0  };  const uint16 qfg3PatchDialogCrash[] = { @@ -874,50 +872,9 @@ const uint16 qfg3PatchDialogCrash[] = {  	PATCH_END  }; -// Part of script 47 that handles the barter icon checks for the wrong local. -// The local is supposed to contain the value returned by a previous kDisplay -// call, but since the wrong one is checked, it contains junk instead. We -// remove that check here (this doesn't affect the game at all). This occurs -// when attempting to purchase something from a vendor and the barter button is -// available (e.g. when buying the robe or meat from the associated vendors). -// Fixes bug #3292251. -const byte qfg3BarterCrash[] = { -	22, -	0x83, 0x10,        // lal 10   ---> BUG! Wrong local -	0x30, 0x11, 0x00,  // bnt 0011 ---> the accumulator will now contain garbage, so this check fails -	0x35, 0x00,        // ldi 00 -	0xa5, 0x00,        // sat 00 -	0x39, 0x03,        // pushi 03 -	0x5b, 0x04, 0x00,  // lea 04 00 -	0x36,              // push -	0x39, 0x6c,        // pushi 6c -	0x8b, 0x10,        // lsl 10   ---> local 10 contains garbage, so the call below will fail -	0x43, 0x1b, 0x06   // callk Display[1b] 06 -}; - -// Same as above, but for local 0x11 -const byte qfg3BarterCrash2[] = { -	18, -	0x83, 0x11,        // lal 11   ---> BUG! Wrong local -	0x30, 0x0d, 0x00,  // bnt 000d ---> the accumulator will now contain garbage, so this check fails -	0x39, 0x03,        // pushi 03 -	0x5b, 0x04, 0x00,  // lea 04 00 -	0x36,              // push -	0x39, 0x6c,        // pushi 6c -	0x8b, 0x11,        // lsl 11   ---> local 11 contains garbage, so the call below will fail -	0x43, 0x1b, 0x06   // callk Display[1b] 06 -}; - -const uint16 qfg3PatchBarterCrash[] = { -	0x35, 0x00,       // ldi 00    ---> the accumulator will always be zero, so the problematic code won't run -	PATCH_END -}; -  //    script, description,                                      magic DWORD,                                  adjust  const SciScriptSignature qfg3Signatures[] = {  	{     23, "dialog crash",                                   1, PATCH_MAGICDWORD(0xe7, 0x03, 0x22, 0x33),  -1,           qfg3DialogCrash,          qfg3PatchDialogCrash }, -	{     47, "barter crash",                                   1, PATCH_MAGICDWORD(0x83, 0x10, 0x30, 0x11),   0,           qfg3BarterCrash,          qfg3PatchBarterCrash }, -	{     47, "barter crash 2",                                 1, PATCH_MAGICDWORD(0x83, 0x11, 0x30, 0x0d),   0,          qfg3BarterCrash2,          qfg3PatchBarterCrash },  	{    944, "import dialog continuous calls",                 1, PATCH_MAGICDWORD(0x2a, 0x31, 0x0b, 0x7a),  -1, qfg3SignatureImportDialog,         qfg3PatchImportDialog },  	SCI_SIGNATUREENTRY_TERMINATOR  }; diff --git a/engines/sci/engine/scriptdebug.cpp b/engines/sci/engine/scriptdebug.cpp index 596494d61b..16098ab275 100644 --- a/engines/sci/engine/scriptdebug.cpp +++ b/engines/sci/engine/scriptdebug.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  // Script debugger functionality. Absolutely not threadsafe. @@ -34,6 +31,10 @@  namespace Sci { +// This table is only used for debugging. Don't include it for devices +// with not enough available memory (e.g. phones), where REDUCE_MEMORY_USAGE +// is defined +#ifndef REDUCE_MEMORY_USAGE  const char *opcodeNames[] = {  	   "bnot",       "add",      "sub",      "mul",      "div",  		"mod",       "shr",      "shl",      "xor",      "and", @@ -62,6 +63,7 @@ const char *opcodeNames[] = {  	   "-agi",      "-ali",     "-ati",     "-api",     "-sgi",  	   "-sli",      "-sti",     "-spi"  }; +#endif	// REDUCE_MEMORY_USAGE  // Disassembles one command from the heap, returns address of next command or 0 if a ret was encountered.  reg_t disassemble(EngineState *s, reg_t pos, bool printBWTag, bool printBytecode) { @@ -113,7 +115,9 @@ reg_t disassemble(EngineState *s, reg_t pos, bool printBWTag, bool printBytecode  	if (printBWTag)  		debugN("[%c] ", opsize ? 'B' : 'W'); +#ifndef REDUCE_MEMORY_USAGE  	debugN("%s", opcodeNames[opcode]); +#endif  	i = 0;  	while (g_opcode_formats[opcode][i]) { diff --git a/engines/sci/engine/seg_manager.cpp b/engines/sci/engine/seg_manager.cpp index 0dc245a991..ab67da32db 100644 --- a/engines/sci/engine/seg_manager.cpp +++ b/engines/sci/engine/seg_manager.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "sci/sci.h" @@ -1010,9 +1007,9 @@ int SegManager::instantiateScript(int scriptNum) {  	scr->init(scriptNum, _resMan);  	scr->load(_resMan); -	scr->initialiseLocals(this); -	scr->initialiseClasses(this); -	scr->initialiseObjects(this, segmentId); +	scr->initializeLocals(this); +	scr->initializeClasses(this); +	scr->initializeObjects(this, segmentId);  	return segmentId;  } @@ -1023,7 +1020,7 @@ void SegManager::uninstantiateScript(int script_nr) {  	if (!scr || scr->isMarkedAsDeleted()) {   // Is it already unloaded?  		//warning("unloading script 0x%x requested although not loaded", script_nr); -		// This is perfectly valid SCI behaviour +		// This is perfectly valid SCI behavior  		return;  	} diff --git a/engines/sci/engine/seg_manager.h b/engines/sci/engine/seg_manager.h index d402afbf1a..ab5aeacabf 100644 --- a/engines/sci/engine/seg_manager.h +++ b/engines/sci/engine/seg_manager.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_ENGINE_SEGMAN_H @@ -74,7 +71,7 @@ public:  	 */  	Script *allocateScript(int script_nr, SegmentId *seg_id); -	// The script must then be initialised; see section (1b.), below. +	// The script must then be initialized; see section (1b.), below.  	/**  	 * Forcefully deallocate a previously allocated script. diff --git a/engines/sci/engine/segment.cpp b/engines/sci/engine/segment.cpp index 2bb77c707a..5d8a81a7f1 100644 --- a/engines/sci/engine/segment.cpp +++ b/engines/sci/engine/segment.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "common/endian.h" diff --git a/engines/sci/engine/segment.h b/engines/sci/engine/segment.h index 947953e8c3..009a2558ce 100644 --- a/engines/sci/engine/segment.h +++ b/engines/sci/engine/segment.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_ENGINE_SEGMENT_H @@ -134,7 +131,7 @@ public:  	/**  	 * Iterates over all references reachable from the specified object.  	 * Used by the garbage collector. -	 * @param  object	object (within the current segment) to analyse +	 * @param  object	object (within the current segment) to analyze  	 * @return a list of outgoing references within the object  	 *  	 * @note This function may also choose to report numbers (segment 0) as adresses diff --git a/engines/sci/engine/selector.cpp b/engines/sci/engine/selector.cpp index 957a836e3e..2edbea9676 100644 --- a/engines/sci/engine/selector.cpp +++ b/engines/sci/engine/selector.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "sci/sci.h" diff --git a/engines/sci/engine/selector.h b/engines/sci/engine/selector.h index 8a47984204..f13c13e00c 100644 --- a/engines/sci/engine/selector.h +++ b/engines/sci/engine/selector.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_ENGINE_SELECTOR_H @@ -47,7 +44,7 @@ struct SelectorCache {  	Selector underBits; ///< Used by the graphics subroutines to store backupped BG pic data  	Selector nsTop, nsLeft, nsBottom, nsRight; ///< View boundaries ('now seen')  	Selector lsTop, lsLeft, lsBottom, lsRight; ///< Used by Animate() subfunctions and scroll list controls -	Selector signal; ///< Used by Animate() to control a view's behaviour +	Selector signal; ///< Used by Animate() to control a view's behavior  	Selector illegalBits; ///< Used by CanBeHere  	Selector brTop, brLeft, brBottom, brRight; ///< Bounding Rectangle  	// name, key, time diff --git a/engines/sci/engine/state.cpp b/engines/sci/engine/state.cpp index f9d6c70389..e094ed3bd7 100644 --- a/engines/sci/engine/state.cpp +++ b/engines/sci/engine/state.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "common/system.h" diff --git a/engines/sci/engine/state.h b/engines/sci/engine/state.h index cd6d56500a..dcffe6dbb3 100644 --- a/engines/sci/engine/state.h +++ b/engines/sci/engine/state.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_INCLUDE_ENGINE_H diff --git a/engines/sci/engine/static_selectors.cpp b/engines/sci/engine/static_selectors.cpp index 23241de330..6526eff2db 100644 --- a/engines/sci/engine/static_selectors.cpp +++ b/engines/sci/engine/static_selectors.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  // We place selector vocab name tables here for any game that doesn't have diff --git a/engines/sci/engine/vm.cpp b/engines/sci/engine/vm.cpp index b441815014..499574957e 100644 --- a/engines/sci/engine/vm.cpp +++ b/engines/sci/engine/vm.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "common/debug.h" @@ -117,7 +114,9 @@ static bool validate_variable(reg_t *r, reg_t *stack_base, int type, int max, in  	return true;  } +#ifndef REDUCE_MEMORY_USAGE  extern const char *opcodeNames[]; // from scriptdebug.cpp +#endif  static reg_t read_var(EngineState *s, int type, int index) {  	if (validate_variable(s->variables[type], s->stack_base, type, s->variablesMax[type], index)) { diff --git a/engines/sci/engine/vm.h b/engines/sci/engine/vm.h index 5947579aa3..36eadfa1c2 100644 --- a/engines/sci/engine/vm.h +++ b/engines/sci/engine/vm.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_ENGINE_VM_H diff --git a/engines/sci/engine/vm_types.cpp b/engines/sci/engine/vm_types.cpp index e606fa1f86..71a28a9761 100644 --- a/engines/sci/engine/vm_types.cpp +++ b/engines/sci/engine/vm_types.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "sci/sci.h" diff --git a/engines/sci/engine/vm_types.h b/engines/sci/engine/vm_types.h index b927df339e..dc87cf758a 100644 --- a/engines/sci/engine/vm_types.h +++ b/engines/sci/engine/vm_types.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_ENGINE_VM_TYPES_H diff --git a/engines/sci/engine/workarounds.cpp b/engines/sci/engine/workarounds.cpp index 20d6cd0dd0..fa25b02a8f 100644 --- a/engines/sci/engine/workarounds.cpp +++ b/engines/sci/engine/workarounds.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "sci/engine/kernel.h" @@ -213,7 +210,10 @@ const SciWorkaroundEntry kDisplay_workarounds[] = {  	{ GID_PQ2,            23,    23,  0,         "rm23Script", "elements",    0x4ae,    0, { WORKAROUND_IGNORE,    0 } }, // when looking at the 2nd page of pate's file - 0x75 as id  	{ GID_PQ2,            23,    23,  0,         "rm23Script", "elements",    0x4c1,    0, { WORKAROUND_IGNORE,    0 } }, // when looking at the 2nd page of pate's file - 0x75 as id (another pq2 version, bug #3043904)  	{ GID_QFG1,           11,    11,  0,             "battle", "<noname90>",     -1,    0, { WORKAROUND_IGNORE,    0 } }, // DEMO: When entering battle, 0x75 as id +	{ GID_QFG3,           -1,    47,  0,          "barterWin", "open",       0x1426,    0, { WORKAROUND_IGNORE,    0 } }, // sometimes when talking with a vendor that can be bartered with, the wrong local variable is checked and the variable contents are wrong - bug #3292251 +	{ GID_QFG3,           -1,    47,  0,         "barterIcon", "show",       0x135c,    0, { WORKAROUND_IGNORE,    0 } }, // sometimes when talking with a vendor that can be bartered with, the wrong local variable is checked and the variable contents are wrong - bug #3292251  	{ GID_SQ1,            -1,   700,  0,       "arcadaRegion", "doit",           -1,    0, { WORKAROUND_IGNORE,    0 } }, // restoring in some rooms of the arcada (right at the start) +	{ GID_SQ1,            44,    44,  0,           "spinDone", "changeState",0x13b0,    0, { WORKAROUND_IGNORE,    0 } }, // restoring a game at the slot machine in Ulence Flats (bug #3308087)  	{ GID_SQ4,           397,     0,  0,                   "", "export 12",      -1,    0, { WORKAROUND_IGNORE,    0 } }, // FLOPPY: when going into the computer store (bug #3044044)  	{ GID_SQ4,           391,   391,  0,          "doCatalog", "mode",         0x84,    0, { WORKAROUND_IGNORE,    0 } }, // CD: clicking on catalog in roboter sale - a parameter is an object  	{ GID_SQ4,           391,   391,  0,         "choosePlug", "changeState",    -1,    0, { WORKAROUND_IGNORE,    0 } }, // CD: ordering connector in roboter sale - a parameter is an object @@ -230,7 +230,7 @@ const SciWorkaroundEntry kDirLoop_workarounds[] = {  const SciWorkaroundEntry kDisposeScript_workarounds[] = {  	{ GID_LAURABOW,      777,   777,  0,             "myStab", "changeState",    -1,    0, { WORKAROUND_IGNORE,    0 } }, // DEMO: after the will is signed, parameter 0 is an object - bug #3034907  	{ GID_QFG1,           -1,    64,  0,               "rm64", "dispose",        -1,    0, { WORKAROUND_IGNORE,    0 } }, // when leaving graveyard, parameter 0 is an object -	{ GID_SQ4,           150,   151,  0,        "fightScript", "dispose",        -1,    0, { WORKAROUND_IGNORE,    0 } }, // during fight with vohaul, parameter 0 is an object +	{ GID_SQ4,           150,   151,  0,        "fightScript", "dispose",        -1,    0, { WORKAROUND_IGNORE,    0 } }, // during fight with Vohaul, parameter 0 is an object  	{ GID_SQ4,           150,   152,  0,       "driveCloseUp", "dispose",        -1,    0, { WORKAROUND_IGNORE,    0 } }, // when choosing "beam download", parameter 0 is an object  	SCI_WORKAROUNDENTRY_TERMINATOR  }; diff --git a/engines/sci/engine/workarounds.h b/engines/sci/engine/workarounds.h index c7721aa787..59054ae552 100644 --- a/engines/sci/engine/workarounds.h +++ b/engines/sci/engine/workarounds.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_ENGINE_WORKAROUNDS_H diff --git a/engines/sci/event.cpp b/engines/sci/event.cpp index 6b5ea64fc4..74879f6c63 100644 --- a/engines/sci/event.cpp +++ b/engines/sci/event.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "common/system.h" @@ -253,7 +250,7 @@ SciEvent EventManager::getScummVMEvent() {  	// When Ctrl AND Alt are pressed together with a regular key, Linux will give us control-key, Windows will give  	//  us the actual key. My opinion is that windows is right, because under DOS the keys worked the same, anyway  	//  we support the other case as well -	if ((modifiers & Common::KBD_SHIFT) && input.character > 0 && input.character < 27) +	if ((modifiers & Common::KBD_ALT) && input.character > 0 && input.character < 27)  		input.character += 96; // 0x01 -> 'a'  	if (getSciVersion() <= SCI_VERSION_1_MIDDLE) { diff --git a/engines/sci/event.h b/engines/sci/event.h index be0322f2a4..930001160a 100644 --- a/engines/sci/event.h +++ b/engines/sci/event.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_EVENT_H diff --git a/engines/sci/graphics/animate.cpp b/engines/sci/graphics/animate.cpp index d8f3fa09b0..c36ecd112a 100644 --- a/engines/sci/graphics/animate.cpp +++ b/engines/sci/graphics/animate.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "common/util.h" @@ -233,7 +230,7 @@ void GfxAnimate::adjustInvalidCels(GfxView *view, AnimateList::iterator it) {  	//  this seems to be completely crazy code  	//  sierra sci checked signed int16 to be above or equal the counts and reseted to 0 in those cases  	//  later during view processing those are compared unsigned again and then set to maximum count - 1 -	//  Games rely on this behaviour. For example laura bow 1 has a knight standing around in room 37 +	//  Games rely on this behavior. For example laura bow 1 has a knight standing around in room 37  	//   which has cel set to 3. This cel does not exist and the actual knight is 0  	//   In kq5 on the other hand during the intro, when the trunk is opened, cel is set to some real  	//   high number, which is negative when considered signed. This actually requires to get fixed to diff --git a/engines/sci/graphics/animate.h b/engines/sci/graphics/animate.h index b2aadcbead..5e2e39ea1a 100644 --- a/engines/sci/graphics/animate.h +++ b/engines/sci/graphics/animate.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_GRAPHICS_ANIMATE_H diff --git a/engines/sci/graphics/cache.cpp b/engines/sci/graphics/cache.cpp index 25475c727f..d2bd76ac99 100644 --- a/engines/sci/graphics/cache.cpp +++ b/engines/sci/graphics/cache.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "common/util.h" diff --git a/engines/sci/graphics/cache.h b/engines/sci/graphics/cache.h index 140c96ecd0..c090cda7d7 100644 --- a/engines/sci/graphics/cache.h +++ b/engines/sci/graphics/cache.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_GRAPHICS_CACHE_H diff --git a/engines/sci/graphics/compare.cpp b/engines/sci/graphics/compare.cpp index db926f2962..1dbe279f8a 100644 --- a/engines/sci/graphics/compare.cpp +++ b/engines/sci/graphics/compare.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "common/util.h" diff --git a/engines/sci/graphics/compare.h b/engines/sci/graphics/compare.h index 1079f5f98c..83b4f49c08 100644 --- a/engines/sci/graphics/compare.h +++ b/engines/sci/graphics/compare.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_GRAPHICS_GFX_H diff --git a/engines/sci/graphics/controls.cpp b/engines/sci/graphics/controls.cpp index f42946fbea..0289735c0a 100644 --- a/engines/sci/graphics/controls.cpp +++ b/engines/sci/graphics/controls.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "common/util.h" diff --git a/engines/sci/graphics/controls.h b/engines/sci/graphics/controls.h index 9beaebe532..17e7c39318 100644 --- a/engines/sci/graphics/controls.h +++ b/engines/sci/graphics/controls.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_GRAPHICS_CONTROLS_H diff --git a/engines/sci/graphics/coordadjuster.cpp b/engines/sci/graphics/coordadjuster.cpp index bbeade87b5..2952d4da7b 100644 --- a/engines/sci/graphics/coordadjuster.cpp +++ b/engines/sci/graphics/coordadjuster.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "common/util.h" diff --git a/engines/sci/graphics/coordadjuster.h b/engines/sci/graphics/coordadjuster.h index 59afd1dcb7..1b8a3e2679 100644 --- a/engines/sci/graphics/coordadjuster.h +++ b/engines/sci/graphics/coordadjuster.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_GRAPHICS_COORDADJUSTER_H diff --git a/engines/sci/graphics/cursor.cpp b/engines/sci/graphics/cursor.cpp index d4d7dcfd4f..ec49a38814 100644 --- a/engines/sci/graphics/cursor.cpp +++ b/engines/sci/graphics/cursor.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "common/config-manager.h" @@ -255,10 +252,10 @@ void GfxCursor::setPosition(Common::Point pos) {  	// Some games display a new menu, set mouse position somewhere within and  	//  expect it to be in there. This is fine for a real mouse, but on wii using  	//  wii-mote or touch interfaces this won't work. In fact on those platforms -	//  the menus will close immediately because of that behaviour. +	//  the menus will close immediately because of that behavior.  	// We identify those cases and set a reaction-rect. If the mouse it outside  	//  of that rect, we won't report the position back to the scripts. -	//  As soon as the mouse was inside once, we will revert to normal behaviour +	//  As soon as the mouse was inside once, we will revert to normal behavior  	// Currently this code is enabled for all platforms, especially because we can't  	//  differentiate between e.g. Windows used via mouse and Windows used via touchscreen  	// The workaround won't hurt real-mouse platforms diff --git a/engines/sci/graphics/cursor.h b/engines/sci/graphics/cursor.h index 271cf507e0..25109b3920 100644 --- a/engines/sci/graphics/cursor.h +++ b/engines/sci/graphics/cursor.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_GRAPHICS_CURSOR_H diff --git a/engines/sci/graphics/font.cpp b/engines/sci/graphics/font.cpp index 760f4158ea..fcdd057509 100644 --- a/engines/sci/graphics/font.cpp +++ b/engines/sci/graphics/font.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "sci/sci.h" diff --git a/engines/sci/graphics/font.h b/engines/sci/graphics/font.h index 9d2b37c1f2..8e5c980e2c 100644 --- a/engines/sci/graphics/font.h +++ b/engines/sci/graphics/font.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_GRAPHICS_FONT_H diff --git a/engines/sci/graphics/fontsjis.cpp b/engines/sci/graphics/fontsjis.cpp index 73229a6e93..ac58c55423 100644 --- a/engines/sci/graphics/fontsjis.cpp +++ b/engines/sci/graphics/fontsjis.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "sci/sci.h" diff --git a/engines/sci/graphics/fontsjis.h b/engines/sci/graphics/fontsjis.h index 5538b5c2c5..c4ae4ab580 100644 --- a/engines/sci/graphics/fontsjis.h +++ b/engines/sci/graphics/fontsjis.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_GRAPHICS_FONTSJIS_H diff --git a/engines/sci/graphics/frameout.cpp b/engines/sci/graphics/frameout.cpp index 7fafe843fd..11948d5d38 100644 --- a/engines/sci/graphics/frameout.cpp +++ b/engines/sci/graphics/frameout.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "common/algorithm.h" diff --git a/engines/sci/graphics/frameout.h b/engines/sci/graphics/frameout.h index 347ecb9424..7e5b1a5006 100644 --- a/engines/sci/graphics/frameout.h +++ b/engines/sci/graphics/frameout.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_GRAPHICS_FRAMEOUT_H diff --git a/engines/sci/graphics/helpers.h b/engines/sci/graphics/helpers.h index 343f3c7e6e..773f83a00e 100644 --- a/engines/sci/graphics/helpers.h +++ b/engines/sci/graphics/helpers.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_GRAPHICS_HELPERS_H diff --git a/engines/sci/graphics/maciconbar.cpp b/engines/sci/graphics/maciconbar.cpp index 6cf4f269a7..bff145ad53 100644 --- a/engines/sci/graphics/maciconbar.cpp +++ b/engines/sci/graphics/maciconbar.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "sci/sci.h" diff --git a/engines/sci/graphics/maciconbar.h b/engines/sci/graphics/maciconbar.h index 72609d19ab..43de37a904 100644 --- a/engines/sci/graphics/maciconbar.h +++ b/engines/sci/graphics/maciconbar.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_GRAPHICS_MACICONBAR_H diff --git a/engines/sci/graphics/menu.cpp b/engines/sci/graphics/menu.cpp index 50ba77e832..9d4ab3f589 100644 --- a/engines/sci/graphics/menu.cpp +++ b/engines/sci/graphics/menu.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "common/util.h" diff --git a/engines/sci/graphics/menu.h b/engines/sci/graphics/menu.h index a6ac4d1d4c..aa3550da4e 100644 --- a/engines/sci/graphics/menu.h +++ b/engines/sci/graphics/menu.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_GRAPHICS_MENU_H diff --git a/engines/sci/graphics/paint.cpp b/engines/sci/graphics/paint.cpp index 27a0bdfc44..7befa99afe 100644 --- a/engines/sci/graphics/paint.cpp +++ b/engines/sci/graphics/paint.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "graphics/primitives.h" diff --git a/engines/sci/graphics/paint.h b/engines/sci/graphics/paint.h index a79e8993c2..efeaa38875 100644 --- a/engines/sci/graphics/paint.h +++ b/engines/sci/graphics/paint.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_GRAPHICS_PAINT_H diff --git a/engines/sci/graphics/paint16.cpp b/engines/sci/graphics/paint16.cpp index 5172f7cdc0..75fef0a3ec 100644 --- a/engines/sci/graphics/paint16.cpp +++ b/engines/sci/graphics/paint16.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "sci/sci.h" diff --git a/engines/sci/graphics/paint16.h b/engines/sci/graphics/paint16.h index 69ddf09ea6..31916599ba 100644 --- a/engines/sci/graphics/paint16.h +++ b/engines/sci/graphics/paint16.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_GRAPHICS_PAINT16_H diff --git a/engines/sci/graphics/paint32.cpp b/engines/sci/graphics/paint32.cpp index f277436631..a9590c829a 100644 --- a/engines/sci/graphics/paint32.cpp +++ b/engines/sci/graphics/paint32.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "sci/sci.h" diff --git a/engines/sci/graphics/paint32.h b/engines/sci/graphics/paint32.h index e412bdf1c4..dd4246c507 100644 --- a/engines/sci/graphics/paint32.h +++ b/engines/sci/graphics/paint32.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_GRAPHICS_PAINT32_H diff --git a/engines/sci/graphics/palette.cpp b/engines/sci/graphics/palette.cpp index 42551e9369..899ef10b33 100644 --- a/engines/sci/graphics/palette.cpp +++ b/engines/sci/graphics/palette.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "common/file.h" diff --git a/engines/sci/graphics/palette.h b/engines/sci/graphics/palette.h index d2e5151d6a..9b0c45baf6 100644 --- a/engines/sci/graphics/palette.h +++ b/engines/sci/graphics/palette.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_GRAPHICS_PALETTE_H diff --git a/engines/sci/graphics/picture.cpp b/engines/sci/graphics/picture.cpp index 8cdd46268a..6529a6ae64 100644 --- a/engines/sci/graphics/picture.cpp +++ b/engines/sci/graphics/picture.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "common/stack.h" diff --git a/engines/sci/graphics/picture.h b/engines/sci/graphics/picture.h index 7cd0d71b67..78623d5e09 100644 --- a/engines/sci/graphics/picture.h +++ b/engines/sci/graphics/picture.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_GRAPHICS_PICTURE_H diff --git a/engines/sci/graphics/portrait.cpp b/engines/sci/graphics/portrait.cpp index 3f9ebaa07a..8cd8cdb033 100644 --- a/engines/sci/graphics/portrait.cpp +++ b/engines/sci/graphics/portrait.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "common/archive.h" diff --git a/engines/sci/graphics/portrait.h b/engines/sci/graphics/portrait.h index 7da9425c9d..75baa9a56b 100644 --- a/engines/sci/graphics/portrait.h +++ b/engines/sci/graphics/portrait.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_GRAPHICS_PORTRAITS_H diff --git a/engines/sci/graphics/ports.cpp b/engines/sci/graphics/ports.cpp index cc206bd5b9..9412976d5b 100644 --- a/engines/sci/graphics/ports.cpp +++ b/engines/sci/graphics/ports.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "common/util.h" diff --git a/engines/sci/graphics/ports.h b/engines/sci/graphics/ports.h index 31ed671daf..1818eaddb3 100644 --- a/engines/sci/graphics/ports.h +++ b/engines/sci/graphics/ports.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_GRAPHICS_PORTS_H diff --git a/engines/sci/graphics/screen.cpp b/engines/sci/graphics/screen.cpp index 56e6759fac..2446ea545e 100644 --- a/engines/sci/graphics/screen.cpp +++ b/engines/sci/graphics/screen.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "common/timer.h" diff --git a/engines/sci/graphics/screen.h b/engines/sci/graphics/screen.h index bfe0a50b81..73ea596ba1 100644 --- a/engines/sci/graphics/screen.h +++ b/engines/sci/graphics/screen.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_GRAPHICS_SCREEN_H diff --git a/engines/sci/graphics/text16.cpp b/engines/sci/graphics/text16.cpp index 6269a58492..c2f71a0e54 100644 --- a/engines/sci/graphics/text16.cpp +++ b/engines/sci/graphics/text16.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "common/util.h" @@ -469,7 +466,7 @@ void GfxText16::Box(const char *text, bool show, const Common::Rect &rect, TextA  	if (doubleByteMode) {  		// Kanji is written by pc98 rom to screen directly. Because of -		// GetLongest() behaviour (not cutting off the last char, that causes a +		// GetLongest() behavior (not cutting off the last char, that causes a  		// new line), results in the script thinking that the text would need  		// less space. The coordinate adjustment in fontsjis.cpp handles the  		// incorrect centering because of that and this code actually shows all diff --git a/engines/sci/graphics/text16.h b/engines/sci/graphics/text16.h index 3ed2361497..b33c2c4df0 100644 --- a/engines/sci/graphics/text16.h +++ b/engines/sci/graphics/text16.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_GRAPHICS_TEXT16_H diff --git a/engines/sci/graphics/transitions.cpp b/engines/sci/graphics/transitions.cpp index dde1be13ab..1256db8969 100644 --- a/engines/sci/graphics/transitions.cpp +++ b/engines/sci/graphics/transitions.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "common/events.h" diff --git a/engines/sci/graphics/transitions.h b/engines/sci/graphics/transitions.h index a8f0ca6f07..246f681690 100644 --- a/engines/sci/graphics/transitions.h +++ b/engines/sci/graphics/transitions.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_GRAPHICS_TRANSITIONS_H diff --git a/engines/sci/graphics/view.cpp b/engines/sci/graphics/view.cpp index f31cbacb22..5c8e9c3d2e 100644 --- a/engines/sci/graphics/view.cpp +++ b/engines/sci/graphics/view.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "sci/sci.h" diff --git a/engines/sci/graphics/view.h b/engines/sci/graphics/view.h index 36914f916c..19ef2e62f8 100644 --- a/engines/sci/graphics/view.h +++ b/engines/sci/graphics/view.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_GRAPHICS_VIEW_H diff --git a/engines/sci/parser/grammar.cpp b/engines/sci/parser/grammar.cpp index b330a432e3..6e02eb75e3 100644 --- a/engines/sci/parser/grammar.cpp +++ b/engines/sci/parser/grammar.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  /* Functionality to transform the context-free SCI grammar rules into diff --git a/engines/sci/parser/said.cpp b/engines/sci/parser/said.cpp index 666a235cf9..827e28073a 100644 --- a/engines/sci/parser/said.cpp +++ b/engines/sci/parser/said.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "sci/engine/state.h" diff --git a/engines/sci/parser/vocabulary.cpp b/engines/sci/parser/vocabulary.cpp index 25043401cc..a5c4686b3b 100644 --- a/engines/sci/parser/vocabulary.cpp +++ b/engines/sci/parser/vocabulary.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  // Main vocabulary support functions and word lookup @@ -395,9 +392,11 @@ void Vocabulary::lookupWord(ResultWordList& retval, const char *word, int word_l  		// SCI01 was the first version to support  		// multiple matches, so no need to look further  		// in earlier versions. -		if (getSciVersion() < SCI_VERSION_01) -			return; +		// In versions that do support multiple matches, it seems +		// that SSCI also aborts early when it finds an exact match in the +		// dictionary. +		return;  	}  	// Now try all suffixes diff --git a/engines/sci/parser/vocabulary.h b/engines/sci/parser/vocabulary.h index 6d3e0b301e..e4a7e41b3c 100644 --- a/engines/sci/parser/vocabulary.h +++ b/engines/sci/parser/vocabulary.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_SCICORE_VOCABULARY_H diff --git a/engines/sci/resource.cpp b/engines/sci/resource.cpp index a48ae0fad7..308bd92ef4 100644 --- a/engines/sci/resource.cpp +++ b/engines/sci/resource.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  // Resource library diff --git a/engines/sci/resource.h b/engines/sci/resource.h index e941f666d9..f450f1b397 100644 --- a/engines/sci/resource.h +++ b/engines/sci/resource.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_RESOURCE_H diff --git a/engines/sci/resource_audio.cpp b/engines/sci/resource_audio.cpp index 1e0b9c0ddf..588ea76ea5 100644 --- a/engines/sci/resource_audio.cpp +++ b/engines/sci/resource_audio.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  // Resource library diff --git a/engines/sci/resource_intern.h b/engines/sci/resource_intern.h index 969e250e62..e8e66503d8 100644 --- a/engines/sci/resource_intern.h +++ b/engines/sci/resource_intern.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_RESOURCE_INTERN_H diff --git a/engines/sci/sci.cpp b/engines/sci/sci.cpp index 8a81ea7240..cc9042ceb7 100644 --- a/engines/sci/sci.cpp +++ b/engines/sci/sci.cpp @@ -18,16 +18,11 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "common/system.h"  #include "common/config-manager.h"  #include "common/debug-channels.h" -#include "common/EventRecorder.h" -#include "common/file.h"	// for Common::File::exists()  #include "engines/advancedDetector.h"  #include "engines/util.h" @@ -78,7 +73,7 @@ SciEngine *g_sci = 0;  class GfxDriver;  SciEngine::SciEngine(OSystem *syst, const ADGameDescription *desc, SciGameId gameId) -		: Engine(syst), _gameDescription(desc), _gameId(gameId) { +		: Engine(syst), _gameDescription(desc), _gameId(gameId), _rng("sci") {  	assert(g_sci == 0);  	g_sci = this; @@ -186,8 +181,6 @@ SciEngine::~SciEngine() {  extern void showScummVMDialog(const Common::String &message);  Common::Error SciEngine::run() { -	g_eventRec.registerRandomSource(_rng, "sci"); -  	// Assign default values to the config manager, in case settings are missing  	ConfMan.registerDefault("sci_originalsaveload", "false");  	ConfMan.registerDefault("native_fb01", "false"); @@ -220,8 +213,6 @@ Common::Error SciEngine::run() {  	_gfxScreen = new GfxScreen(_resMan);  	_gfxScreen->enableUndithering(ConfMan.getBool("disable_dithering")); -	// Create debugger console. It requires GFX to be initialized -	_console = new Console(this);  	_kernel = new Kernel(_resMan, segMan);  	_features = new GameFeatures(segMan, _kernel); @@ -234,6 +225,9 @@ Common::Error SciEngine::run() {  	_gamestate = new EngineState(segMan);  	_eventMan = new EventManager(_resMan->detectFontExtended()); +	// Create debugger console. It requires GFX and _gamestate to be initialized +	_console = new Console(this); +  	// The game needs to be initialized before the graphics system is initialized, as  	// the graphics code checks parts of the seg manager upon initialization (e.g. for  	// the presence of the fastCast object) diff --git a/engines/sci/sci.h b/engines/sci/sci.h index cd50b2402c..a340447354 100644 --- a/engines/sci/sci.h +++ b/engines/sci/sci.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_H diff --git a/engines/sci/sound/audio.cpp b/engines/sci/sound/audio.cpp index 53311b4252..592caa5814 100644 --- a/engines/sci/sound/audio.cpp +++ b/engines/sci/sound/audio.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "sci/resource.h" diff --git a/engines/sci/sound/audio.h b/engines/sci/sound/audio.h index 4cc8575a21..e0ba234b12 100644 --- a/engines/sci/sound/audio.h +++ b/engines/sci/sound/audio.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  /* Sound engine */ diff --git a/engines/sci/sound/drivers/adlib.cpp b/engines/sci/sound/drivers/adlib.cpp index f00c99d5b5..add3d8851f 100644 --- a/engines/sci/sound/drivers/adlib.cpp +++ b/engines/sci/sound/drivers/adlib.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "sci/sci.h" diff --git a/engines/sci/sound/drivers/amigamac.cpp b/engines/sci/sound/drivers/amigamac.cpp index 7ee8d21f86..158b4b08fb 100644 --- a/engines/sci/sound/drivers/amigamac.cpp +++ b/engines/sci/sound/drivers/amigamac.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "audio/softsynth/emumidi.h" diff --git a/engines/sci/sound/drivers/cms.cpp b/engines/sci/sound/drivers/cms.cpp index 47c59a1e3d..ace96ba499 100644 --- a/engines/sci/sound/drivers/cms.cpp +++ b/engines/sci/sound/drivers/cms.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "sci/sound/drivers/mididriver.h" diff --git a/engines/sci/sound/drivers/fb01.cpp b/engines/sci/sound/drivers/fb01.cpp index f217738bb2..9f3945bbec 100644 --- a/engines/sci/sound/drivers/fb01.cpp +++ b/engines/sci/sound/drivers/fb01.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "sci/sci.h" diff --git a/engines/sci/sound/drivers/gm_names.h b/engines/sci/sound/drivers/gm_names.h index b7883494f6..bfe5ff88c7 100644 --- a/engines/sci/sound/drivers/gm_names.h +++ b/engines/sci/sound/drivers/gm_names.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_SOUND_DRIVERS_GM_NAMES_H @@ -28,6 +25,11 @@  namespace Sci { +// These tables are only used for debugging. Don't include them for devices +// with not enough available memory (e.g. phones), where REDUCE_MEMORY_USAGE +// is defined +#ifndef REDUCE_MEMORY_USAGE +  static const char *GmInstrumentNames[] = {  	/*000*/  "Acoustic Grand Piano",  	/*001*/  "Bright Acoustic Piano", @@ -215,6 +217,8 @@ static const char *GmPercussionNames[] = {  	/*81*/  "Open Triangle"  }; +#endif	// REDUCE_MEMORY_USAGE +  } // End of namespace Sci  #endif // SCI_SOUND_DRIVERS_GM_NAMES_H diff --git a/engines/sci/sound/drivers/map-mt32-to-gm.h b/engines/sci/sound/drivers/map-mt32-to-gm.h index f7a6256ba4..12a36aa51c 100644 --- a/engines/sci/sound/drivers/map-mt32-to-gm.h +++ b/engines/sci/sound/drivers/map-mt32-to-gm.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_SOUND_DRIVERS_MAP_MT32_TO_GM_H diff --git a/engines/sci/sound/drivers/midi.cpp b/engines/sci/sound/drivers/midi.cpp index f36aac3a2a..93a2308410 100644 --- a/engines/sci/sound/drivers/midi.cpp +++ b/engines/sci/sound/drivers/midi.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "sci/sci.h" @@ -819,11 +816,13 @@ void MidiPlayer_Midi::mapMt32ToGm(byte *data, size_t size) {  		if (_patchMap[i] == MIDI_UNMAPPED) {  			debugC(kDebugLevelSound, "[Unmapped]");  		} else { +#ifndef REDUCE_MEMORY_USAGE  			if (_patchMap[i] >= 128) {  				debugC(kDebugLevelSound, "%s [Rhythm]", GmPercussionNames[_patchMap[i] - 128]);  			} else {  				debugC(kDebugLevelSound, "%s", GmInstrumentNames[_patchMap[i]]);  			} +#endif  		}  		_keyShift[i] = CLIP<uint8>(keyshift, 0, 48) - 24; @@ -855,10 +854,12 @@ void MidiPlayer_Midi::mapMt32ToGm(byte *data, size_t size) {  				}  			} +#ifndef REDUCE_MEMORY_USAGE  			if (_percussionMap[ins] == MIDI_UNMAPPED)  				debugC(kDebugLevelSound, "[Unmapped]");  			else  				debugC(kDebugLevelSound, "%s", GmPercussionNames[_percussionMap[ins]]); +#endif  			_percussionVelocityScale[ins] = *(data + pos + 4 * i + 3) * 127 / 100;  		} diff --git a/engines/sci/sound/drivers/mididriver.h b/engines/sci/sound/drivers/mididriver.h index 2038725dbe..ec66984bd4 100644 --- a/engines/sci/sound/drivers/mididriver.h +++ b/engines/sci/sound/drivers/mididriver.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_SFX_SOFTSEQ_MIDIDRIVER_H diff --git a/engines/sci/sound/drivers/pcjr.cpp b/engines/sci/sound/drivers/pcjr.cpp index 4b1efb3c87..1d823b643d 100644 --- a/engines/sci/sound/drivers/pcjr.cpp +++ b/engines/sci/sound/drivers/pcjr.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "sci/sound/drivers/mididriver.h" diff --git a/engines/sci/sound/midiparser_sci.cpp b/engines/sci/sound/midiparser_sci.cpp index 0b9d7617b8..95b165468d 100644 --- a/engines/sci/sound/midiparser_sci.cpp +++ b/engines/sci/sound/midiparser_sci.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "sci/engine/kernel.h" @@ -224,6 +221,7 @@ byte *MidiParser_SCI::midiFilterChannels(int channelMask) {  	byte command = 0, lastCommand = 0;  	int delta = 0;  	int midiParamCount = 0; +	bool containsMidiData = false;  	_mixedData = outData; @@ -250,6 +248,9 @@ byte *MidiParser_SCI::midiFilterChannels(int channelMask) {  			}  		}  		if ((1 << curChannel) & channelMask) { +			if (curChannel != 0xF) +				containsMidiData = true; +  			if (command != kEndOfTrack) {  				// Write delta  				while (delta > 240) { @@ -307,6 +308,11 @@ byte *MidiParser_SCI::midiFilterChannels(int channelMask) {  	*outData++ = 0x00;  	*outData++ = 0x00; +	// This occurs in the music tracks of LB1 Amiga, when using the MT-32 +	// driver (bug #3297881) +	if (!containsMidiData) +		warning("MIDI parser: the requested SCI0 sound has no MIDI note data for the currently selected sound driver"); +  	return _mixedData;  } diff --git a/engines/sci/sound/midiparser_sci.h b/engines/sci/sound/midiparser_sci.h index 39de425e18..82f34070a4 100644 --- a/engines/sci/sound/midiparser_sci.h +++ b/engines/sci/sound/midiparser_sci.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_MIDIPARSER_H diff --git a/engines/sci/sound/music.cpp b/engines/sci/sound/music.cpp index c7743ac587..96cbf135ed 100644 --- a/engines/sci/sound/music.cpp +++ b/engines/sci/sound/music.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "audio/audiostream.h" diff --git a/engines/sci/sound/music.h b/engines/sci/sound/music.h index dfe5ad1586..8577ed7313 100644 --- a/engines/sci/sound/music.h +++ b/engines/sci/sound/music.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_MUSIC_H diff --git a/engines/sci/sound/soundcmd.cpp b/engines/sci/sound/soundcmd.cpp index a2b09eab4c..4ea290ff9e 100644 --- a/engines/sci/sound/soundcmd.cpp +++ b/engines/sci/sound/soundcmd.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "common/config-manager.h" diff --git a/engines/sci/sound/soundcmd.h b/engines/sci/sound/soundcmd.h index cae72e2cdb..a542a8b384 100644 --- a/engines/sci/sound/soundcmd.h +++ b/engines/sci/sound/soundcmd.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_SOUNDCMD_H diff --git a/engines/sci/util.cpp b/engines/sci/util.cpp index f346adddeb..4f09bb7a55 100644 --- a/engines/sci/util.cpp +++ b/engines/sci/util.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "common/endian.h" diff --git a/engines/sci/util.h b/engines/sci/util.h index 7a2abb1873..0da5063a69 100644 --- a/engines/sci/util.h +++ b/engines/sci/util.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_UTIL_H diff --git a/engines/sci/video/robot_decoder.cpp b/engines/sci/video/robot_decoder.cpp index debc75dffd..d394fd0b2b 100644 --- a/engines/sci/video/robot_decoder.cpp +++ b/engines/sci/video/robot_decoder.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "common/archive.h" diff --git a/engines/sci/video/robot_decoder.h b/engines/sci/video/robot_decoder.h index aeb638e019..3f93582418 100644 --- a/engines/sci/video/robot_decoder.h +++ b/engines/sci/video/robot_decoder.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_VIDEO_ROBOT_DECODER_H diff --git a/engines/sci/video/seq_decoder.cpp b/engines/sci/video/seq_decoder.cpp index 7168496893..abd64911a7 100644 --- a/engines/sci/video/seq_decoder.cpp +++ b/engines/sci/video/seq_decoder.cpp @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #include "common/endian.h" diff --git a/engines/sci/video/seq_decoder.h b/engines/sci/video/seq_decoder.h index 70d3985ec5..f5e8ad9b05 100644 --- a/engines/sci/video/seq_decoder.h +++ b/engines/sci/video/seq_decoder.h @@ -18,9 +18,6 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   * - * $URL$ - * $Id$ - *   */  #ifndef SCI_VIDEO_SEQ_DECODER_H  | 
