diff options
| -rw-r--r-- | kyra/kyra.cpp | 4 | ||||
| -rw-r--r-- | kyra/script.cpp | 315 | ||||
| -rw-r--r-- | kyra/script_v1.cpp | 18 | 
3 files changed, 330 insertions, 7 deletions
| diff --git a/kyra/kyra.cpp b/kyra/kyra.cpp index a1ae6449c2..38783bd01e 100644 --- a/kyra/kyra.cpp +++ b/kyra/kyra.cpp @@ -117,12 +117,10 @@ KyraEngine::KyraEngine(GameDetector *detector, OSystem *syst)  	// loads the Font  	_font = _resMgr->loadFont("8FAT.FNT"); -	printf("loading scripts\n"); +  	// loads out scripts  	_npcScript = _resMgr->loadScript("_NPC.EMC");  	_currentScript = _resMgr->loadScript("_STARTUP.EMC"); -	printf("done\n"); -  }  KyraEngine::~KyraEngine() { diff --git a/kyra/script.cpp b/kyra/script.cpp index c40ab826b4..13bb593665 100644 --- a/kyra/script.cpp +++ b/kyra/script.cpp @@ -344,16 +344,324 @@ namespace Kyra {  			COMMAND(c1_unknownCommand),  			{ 0, 0 }  		}; -  		_commands = commandProcs; -//		_opcodes = opcodeProcs; +		static OpcodeEntry opcodeProcs[] = { +			// 0 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode),			 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			 +			// 10 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode),			 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			 +			// 20 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode),			 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			 +			// 30 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode),			 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			 +			// 40 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode),			 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			 +			// 50 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode),			 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			 +			// 60 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode),			 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			 +			// 70 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode),			 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			 +			// 80 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode),			 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			 +			// 90 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode),			 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			 +			// 100 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_0x68),			 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			 +			// 110 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode),			 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			 +			// 120 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode),			 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			 +			// 130 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode),			 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			 +			// 140 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode),			 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			 +			// 150 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode),			 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			 +			// 160 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode),			 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			 +			// 170 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode),			 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			 +			// 180 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode),			 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			 +			// 190 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode),			 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			 +			// 200 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode),			 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			 +			// 210 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode),			 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			 +			// 220 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode),			 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			 +			// 230 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode),			 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			 +			// 240 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode),			 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			 +			// 250 +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			COMMAND(o1_unknownOpcode), +			{ 0, 0 } +		}; +		_opcodes = opcodeProcs;  		_scriptFile = NULL;  		_scriptFileSize = 0;  	}  	void VMContext::loadScript(const char* file) { -		printf("a\n");  		if (_scriptFile) {  			delete [] _scriptFile;  			_scriptFileSize = 0; @@ -363,7 +671,6 @@ namespace Kyra {  		// loads the new file  		_scriptFile = _engine->resManager()->fileData(file, &_scriptFileSize); -		printf("c\n");  		if (!_scriptFileSize || !_scriptFile) {  			error("couldn't load script file '%s'", file); diff --git a/kyra/script_v1.cpp b/kyra/script_v1.cpp index 8b306f52e1..a224107760 100644 --- a/kyra/script_v1.cpp +++ b/kyra/script_v1.cpp @@ -217,4 +217,22 @@ namespace Kyra {  		pushStack(res);  	} + +	// opcode procs +	void VMContext::o1_unknownOpcode(void) { +		_error = true; + +		debug("unknown opcode '0x%x'.", _argument); +		debug("parameters:\n" +			"Param0: %d\nParam1: %d\nParam2: %d\nParam3: %d\nParam4: %d\nParam5: %d\n" +			"Param0 as a string: %s\nParam1 as a string: %s\nParam2 as a string: %s\n" +			"Param3 as a string: %s\nParam4 as a string: %s\nParam5 as a string: %s\n", +			param(0), param(1), param(2), param(3), param(5), param(5), +			paramString(0), paramString(1), paramString(2), paramString(3),  +			paramString(4), paramString(5)); +	} + +        void VMContext::o1_0x68(void) { +                debug("o1_0x68 was called with param0: '%d' and param1: '%d'", param(0), param(1)); +        }  } // end of namespace Kyra | 
