diff options
| author | lukaslw | 2014-07-07 03:12:35 +0200 | 
|---|---|---|
| committer | lukaslw | 2014-07-07 03:12:35 +0200 | 
| commit | c7eada5b1db234f63fd25f4d397c1dbdf218fbbd (patch) | |
| tree | 294200f42d9cfec1b5a688ac0589636e1dd8fea3 | |
| parent | bdd7206fe2f508989331525563a586574d19bfe4 (diff) | |
| download | scummvm-rg350-c7eada5b1db234f63fd25f4d397c1dbdf218fbbd.tar.gz scummvm-rg350-c7eada5b1db234f63fd25f4d397c1dbdf218fbbd.tar.bz2 scummvm-rg350-c7eada5b1db234f63fd25f4d397c1dbdf218fbbd.zip | |
PRINCE: O_COMPAREHI, O_COMPARELO fix, debugger update
| -rw-r--r-- | engines/prince/debugger.cpp | 34 | ||||
| -rw-r--r-- | engines/prince/debugger.h | 5 | ||||
| -rw-r--r-- | engines/prince/object.cpp | 2 | ||||
| -rw-r--r-- | engines/prince/prince.cpp | 3 | ||||
| -rw-r--r-- | engines/prince/script.cpp | 22 | 
5 files changed, 47 insertions, 19 deletions
| diff --git a/engines/prince/debugger.cpp b/engines/prince/debugger.cpp index 95df1ec4bf..445d5ecfc4 100644 --- a/engines/prince/debugger.cpp +++ b/engines/prince/debugger.cpp @@ -22,10 +22,12 @@  #include "prince/debugger.h"  #include "prince/prince.h" +#include "prince/flags.h" +#include "prince/script.h"  namespace Prince { -Debugger::Debugger(PrinceEngine *vm) : GUI::Debugger(), _vm(vm), _locationNr(0) { +Debugger::Debugger(PrinceEngine *vm, InterpreterFlags *flags) : GUI::Debugger(), _vm(vm), _locationNr(0), _flags(flags) {  	DCmd_Register("continue",		WRAP_METHOD(Debugger, Cmd_Exit));  	DCmd_Register("level",			WRAP_METHOD(Debugger, Cmd_DebugLevel));  	DCmd_Register("setflag",		WRAP_METHOD(Debugger, Cmd_SetFlag)); @@ -34,6 +36,7 @@ Debugger::Debugger(PrinceEngine *vm) : GUI::Debugger(), _vm(vm), _locationNr(0)  	DCmd_Register("viewflc",		WRAP_METHOD(Debugger, Cmd_ViewFlc));  	DCmd_Register("initroom",		WRAP_METHOD(Debugger, Cmd_InitRoom));  	DCmd_Register("changecursor",	WRAP_METHOD(Debugger, Cmd_ChangeCursor)); +	DCmd_Register("additem",		WRAP_METHOD(Debugger, Cmd_AddItem));  }  static int strToInt(const char *s) { @@ -73,13 +76,14 @@ bool Debugger::Cmd_DebugLevel(int argc, const char **argv) {   */  bool Debugger::Cmd_SetFlag(int argc, const char **argv) {  	// Check for a flag to set -	if (argc != 2) { -		DebugPrintf("Usage: %s <flag number>\n", argv[0]); +	if (argc != 3) { +		DebugPrintf("Usage: %s <flag number> <value>\n", argv[0]);  		return true;  	} -	//int flagNum = strToInt(argv[1]); -	//g_globals->setFlag(flagNum); +	int flagNum = strToInt(argv[1]); +	uint16 value = strToInt(argv[2]); +	_flags->setFlagValue((Flags::Id)flagNum, value);  	return true;  } @@ -93,8 +97,8 @@ bool Debugger::Cmd_GetFlag(int argc, const char **argv) {  		return true;  	} -	//int flagNum = strToInt(argv[1]); -	//DebugPrintf("Value: %d\n", g_globals->getFlag(flagNum)); +	int flagNum = strToInt(argv[1]); +	DebugPrintf("Value: %d\n", _flags->getFlagValue((Flags::Id)flagNum));  	return true;  } @@ -108,8 +112,8 @@ bool Debugger::Cmd_ClearFlag(int argc, const char **argv) {  		return true;  	} -	//int flagNum = strToInt(argv[1]); -	//g_globals->clearFlag(flagNum); +	int flagNum = strToInt(argv[1]); +	_flags->setFlagValue((Flags::Id)flagNum, 0);  	return true;  } @@ -151,6 +155,18 @@ bool Debugger::Cmd_ChangeCursor(int argc, const char **argv) {  	return true;  } +bool Debugger::Cmd_AddItem(int argc, const char **argv) { +	if (argc != 2) { +		DebugPrintf("Usage: %s <itemId>\n", argv[0]); +		return true; +	} + +	int itemId = strToInt(argv[1]); +	_vm->addInv(0, itemId, true); + +	return true; +} +  }   /* vim: set tabstop=4 noexpandtab: */ diff --git a/engines/prince/debugger.h b/engines/prince/debugger.h index f3608af81d..10c82d5282 100644 --- a/engines/prince/debugger.h +++ b/engines/prince/debugger.h @@ -29,10 +29,11 @@  namespace Prince {  class PrinceEngine; +class InterpreterFlags;  class Debugger : public GUI::Debugger {  public: -	Debugger(PrinceEngine *vm); +	Debugger(PrinceEngine *vm, InterpreterFlags *flags);  	virtual ~Debugger() {}	// we need this for __SYMBIAN32__ archaic gcc/UIQ  	uint8 _locationNr; @@ -46,8 +47,10 @@ private:  	bool Cmd_ViewFlc(int argc, const char **argv);  	bool Cmd_InitRoom(int argc, const char **argv);  	bool Cmd_ChangeCursor(int argc, const char **argv); +	bool Cmd_AddItem(int argc, const char **argv);  	PrinceEngine *_vm; +	InterpreterFlags *_flags;  };  }  diff --git a/engines/prince/object.cpp b/engines/prince/object.cpp index 22ed0a7656..b7ff18c46c 100644 --- a/engines/prince/object.cpp +++ b/engines/prince/object.cpp @@ -68,7 +68,7 @@ bool Object::loadFromStream(Common::SeekableReadStream &stream) {  	const Common::String obStreamName = Common::String::format("OB%02d", stream.readUint16LE());  	Common::SeekableReadStream *obStream = SearchMan.createReadStreamForMember(obStreamName);  	if (!obStream) { -		error("Can't load %s", obStreamName.c_str()); +		//error("Can't load %s", obStreamName.c_str());  		return false;  	} diff --git a/engines/prince/prince.cpp b/engines/prince/prince.cpp index 29cd43c079..7e447376d9 100644 --- a/engines/prince/prince.cpp +++ b/engines/prince/prince.cpp @@ -205,7 +205,6 @@ void PrinceEngine::init() {  	_graph = new GraphicsMan(this);  	_rnd = new Common::RandomSource("prince"); -	_debugger = new Debugger(this);  	_midiPlayer = new MusicPlayer(this); @@ -226,6 +225,8 @@ void PrinceEngine::init() {  	_flags = new InterpreterFlags();  	_interpreter = new Interpreter(this, _script, _flags); +	_debugger = new Debugger(this, _flags); +  	_variaTxt = new VariaTxt();  	Resource::loadResource(_variaTxt, "variatxt.dat", true); diff --git a/engines/prince/script.cpp b/engines/prince/script.cpp index 93a4b9621e..2ca18746de 100644 --- a/engines/prince/script.cpp +++ b/engines/prince/script.cpp @@ -419,7 +419,7 @@ bool Script::loadAllMasks(Common::Array<Mask> &maskList, int offset) {  		const Common::String msStreamName = Common::String::format("MS%02d", tempMask._number);  		Common::SeekableReadStream *msStream = SearchMan.createReadStreamForMember(msStreamName);  		if (!msStream) { -			error("Can't load %s", msStreamName.c_str()); +			//error("Can't load %s", msStreamName.c_str());  			delete msStream;  			return false;  		} @@ -1154,17 +1154,25 @@ void Interpreter::O_RUNACTION() {  void Interpreter::O_COMPAREHI() {  	Flags::Id flag = readScriptFlagId();  	uint16 value = readScriptFlagValue(); - -	debugInterpreter("O_COMPAREHI flag %d, value %d", flag, value); -	_result = value < _flags->getFlagValue(flag); +	uint16 flagValue = _flags->getFlagValue(flag); +	if (flagValue > value) { +		_result = 0; +	} else { +		_result = 1; +	} +	debugInterpreter("O_COMPAREHI flag %04x - (%s), value %d, flagValue %d, result %d", flag, Flags::getFlagName(flag), value, flagValue, _result);  }  void Interpreter::O_COMPARELO() {  	Flags::Id flag = readScriptFlagId();  	uint16 value = readScriptFlagValue(); - -	debugInterpreter("O_COMPARELO flag %d, value %d", flag, value); -	_result = value > _flags->getFlagValue(flag); +	uint16 flagValue = _flags->getFlagValue(flag); +	if (flagValue < value) { +		_result = 0; +	} else { +		_result = 1; +	} +	debugInterpreter("O_COMPARELO flag %04x - (%s), value %d, flagValue %d, result %d", flag, Flags::getFlagName(flag), value, flagValue, _result);  }  void Interpreter::O_PRELOADSET() { | 
