[Scummvm-cvs-logs] SF.net SVN: scummvm: [31152] scummvm/trunk/engines/kyra

athrxx at users.sourceforge.net athrxx at users.sourceforge.net
Mon Mar 17 02:34:24 CET 2008


Revision: 31152
          http://scummvm.svn.sourceforge.net/scummvm/?rev=31152&view=rev
Author:   athrxx
Date:     2008-03-16 18:34:24 -0700 (Sun, 16 Mar 2008)

Log Message:
-----------
- implement debugger commands: gamespeed and pass_codes
- implement opcode 151: meanWhileScene()
- fix dragon flight scene: this is still totally messed up, but at least the screen doesn't stay blank any more

Modified Paths:
--------------
    scummvm/trunk/engines/kyra/debugger.cpp
    scummvm/trunk/engines/kyra/debugger.h
    scummvm/trunk/engines/kyra/kyra_v2.cpp
    scummvm/trunk/engines/kyra/kyra_v2.h
    scummvm/trunk/engines/kyra/scene_v2.cpp
    scummvm/trunk/engines/kyra/script_v2.cpp

Modified: scummvm/trunk/engines/kyra/debugger.cpp
===================================================================
--- scummvm/trunk/engines/kyra/debugger.cpp	2008-03-17 00:40:00 UTC (rev 31151)
+++ scummvm/trunk/engines/kyra/debugger.cpp	2008-03-17 01:34:24 UTC (rev 31152)
@@ -235,6 +235,8 @@
 	DCmd_Register("scene_info",			WRAP_METHOD(Debugger_v2, cmd_sceneInfo));
 	DCmd_Register("scene_to_facing",	WRAP_METHOD(Debugger_v2, cmd_sceneToFacing));
 	DCmd_Register("give",				WRAP_METHOD(Debugger_v2, cmd_giveItem));
+	DCmd_Register("pass_codes",			WRAP_METHOD(Debugger_v2, cmd_passcodes));
+	DCmd_Register("gamespeed",			WRAP_METHOD(Debugger_v2, cmd_gamespeed));
 }
 
 bool Debugger_v2::cmd_enterScene(int argc, const char **argv) {
@@ -378,5 +380,39 @@
 	return true;
 }
 
+bool Debugger_v2::cmd_passcodes(int argc, const char **argv) {
+	if (argc == 2) {
+		int val = atoi(argv[1]);
+
+		if (val < 0 || val > 1) {
+			DebugPrintf("value must be either 1 (on) or 0 (off)\n");
+			return true;
+		}
+		
+		_vm->_dbgPass = val;		
+	} else {
+		DebugPrintf("Syntax: pass_codes <0/1>\n");
+	}
+
+	return true;
+}
+
+bool Debugger_v2::cmd_gamespeed(int argc, const char **argv) {
+	if (argc == 2) {
+		int val = atoi(argv[1]);
+
+		if (val < 1 || val > 1000) {
+			DebugPrintf("speed must lie between 1 and 1000 (default: 60)\n");
+			return true;
+		}
+
+		_vm->_tickLength = (uint8)(1000.0 / val);
+	} else {
+		DebugPrintf("Syntax: gamespeed <value>\n");
+	}
+
+	return true;
+}
+
 } // End of namespace Kyra
 

Modified: scummvm/trunk/engines/kyra/debugger.h
===================================================================
--- scummvm/trunk/engines/kyra/debugger.h	2008-03-17 00:40:00 UTC (rev 31151)
+++ scummvm/trunk/engines/kyra/debugger.h	2008-03-17 01:34:24 UTC (rev 31152)
@@ -82,6 +82,8 @@
 	bool cmd_characterInfo(int argc, const char **argv);
 	bool cmd_sceneToFacing(int argc, const char **argv);
 	bool cmd_giveItem(int argc, const char **argv);
+	bool cmd_passcodes(int argc, const char **argv);
+	bool cmd_gamespeed(int argc, const char **argv);
 };
 
 } // End of namespace Kyra

Modified: scummvm/trunk/engines/kyra/kyra_v2.cpp
===================================================================
--- scummvm/trunk/engines/kyra/kyra_v2.cpp	2008-03-17 00:40:00 UTC (rev 31151)
+++ scummvm/trunk/engines/kyra/kyra_v2.cpp	2008-03-17 01:34:24 UTC (rev 31152)
@@ -63,7 +63,7 @@
 	_drawNoShapeFlag = false;
 	_charPalEntry = 0;
 	_itemInHand = -1;
-	_unkSceneScreenFlag1 = false;
+	_unkSceneScreenFlag1 = true;
 	_noScriptEnter = true;
 	_currentChapter = 0;
 	_newChapterFile = 1;
@@ -102,7 +102,7 @@
 	_colorCodeFlag1 = 0;
 	_colorCodeFlag2 = -1;
 	_scriptCountDown = 0;
-	memset(_inputColorCode, 0, 7);
+	_dbgPass = 0;
 
 	_gamePlayBuffer = 0;
 	_unkBuf500Bytes = 0;

Modified: scummvm/trunk/engines/kyra/kyra_v2.h
===================================================================
--- scummvm/trunk/engines/kyra/kyra_v2.h	2008-03-17 00:40:00 UTC (rev 31151)
+++ scummvm/trunk/engines/kyra/kyra_v2.h	2008-03-17 01:34:24 UTC (rev 31152)
@@ -965,6 +965,7 @@
 	int o2_showChapterMessage(ScriptState *script);
 	int o2_restoreTalkTextMessageBkgd(ScriptState *script);
 	int o2_wsaClose(ScriptState *script);
+	int o2_meanWhileScene(ScriptState *script);	
 	int o2_displayWsaFrame(ScriptState *script);
 	int o2_displayWsaSequentialFramesLooping(ScriptState *script);
 	int o2_wsaOpen(ScriptState *script);
@@ -1165,6 +1166,7 @@
 	uint8 _presetColorCode[7];
 	uint8 _inputColorCode[7];
 	uint32 _scriptCountDown;
+	int _dbgPass;
 };
 
 } // end of namespace Kyra

Modified: scummvm/trunk/engines/kyra/scene_v2.cpp
===================================================================
--- scummvm/trunk/engines/kyra/scene_v2.cpp	2008-03-17 00:40:00 UTC (rev 31151)
+++ scummvm/trunk/engines/kyra/scene_v2.cpp	2008-03-17 01:34:24 UTC (rev 31152)
@@ -665,7 +665,7 @@
 }
 
 void KyraEngine_v2::initSceneScreen(int unk1) {
-	if (_unkSceneScreenFlag1) {
+	/*if (_unkSceneScreenFlag1) {
 		_screen->copyRegion(0, 0, 0, 0, 320, 144, 2, 0);
 		return;
 	}
@@ -678,7 +678,19 @@
 	_screen->copyRegion(0, 0, 0, 0, 320, 144, 2, 0);
 
 	if (_noScriptEnter)
+		memcpy(_screen->getPalette(0), _screen->getPalette(1), 384);*/
+
+	if (_unkSceneScreenFlag1 || _noScriptEnter) {
+		memset(_screen->getPalette(0), 0, 384);
+		_screen->setScreenPalette(_screen->getPalette(0));
+	}
+
+	_screen->copyRegion(0, 0, 0, 0, 320, 144, 2, 0);
+
+	if (_unkSceneScreenFlag1 || _noScriptEnter) {
 		memcpy(_screen->getPalette(0), _screen->getPalette(1), 384);
+		_screen->setScreenPalette(_screen->getPalette(0));
+	}
 
 	updateCharPal(0);
 

Modified: scummvm/trunk/engines/kyra/script_v2.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script_v2.cpp	2008-03-17 00:40:00 UTC (rev 31151)
+++ scummvm/trunk/engines/kyra/script_v2.cpp	2008-03-17 01:34:24 UTC (rev 31152)
@@ -175,6 +175,27 @@
 	return 0;
 }
 
+int KyraEngine_v2::o2_meanWhileScene(ScriptState *script) {
+	debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_meanWhileScene(%p) (%d)", (const void *)script, stackPos(0));
+	static const uint8 jpSubtitle[] = { 0x88, 0xEA, 0x95, 0xFB, 0x81, 0x45, 0x81, 0x45, 0x81, 0x45 };
+	const char *cpsfile = stackPosString(0);
+	const char *palfile = stackPosString(1);
+
+	_screen->loadBitmap(cpsfile, 3, 3, 0);
+	memcpy(_screen->getPalette(2), _screen->_currentPalette, 768);
+	_screen->loadPalette(palfile, _screen->getPalette(2));
+	_screen->fillRect(0, 0, 319, 199, 207);
+	_screen->setScreenPalette(_screen->getPalette(2));
+	_screen->copyRegion(0, 0, 0, 0, 320, 200, 2, 0);
+	if (!scumm_stricmp(cpsfile, "_MEANWIL.CPS") && _flags.lang == Common::JA_JPN) {
+		Screen::FontId o = _screen->setFont(Screen::FID_6_FNT);
+		_screen->printText((const char*)jpSubtitle, 140, 176, 255, 132);
+		_screen->setFont(o);
+	}
+	_screen->updateScreen();
+	return 0;
+}
+
 int KyraEngine_v2::o2_displayWsaFrame(ScriptState *script) {
 	debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_displayWsaFrame(%p) (%d, %d, %d, %d, %d, %d, %d, %d, %d)", (const void *)script,
 			stackPos(0), stackPos(1), stackPos(2), stackPos(3), stackPos(4), stackPos(5), stackPos(6), stackPos(7), stackPos(8));
@@ -944,7 +965,7 @@
 	_inputColorCode[0] = stackPos(0) & 0xff;
 	for (int i = 0; i < 7; i++) {
 		if (_presetColorCode[i] != _inputColorCode[6 - i])
-			return 0;
+			return _dbgPass;
 	}
 	return 1;
 }
@@ -1115,13 +1136,13 @@
 
 int KyraEngine_v2::o2_mushroomEffect(ScriptState *script) {
 	debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_mushroomEffect(%p)", (const void *)script);
-	memcpy(_screen->getPalette(1), _screen->_currentPalette, 768);
+	memcpy(_screen->getPalette(2), _screen->_currentPalette, 768);
 
 	for (int i = 1; i < 768; i += 3)
 		_screen->_currentPalette[i] = 0;	
 	snd_playSoundEffect(106);
 	_screen->fadePalette(_screen->_currentPalette, 90, &_updateFunctor);
-	memcpy(_screen->_currentPalette, _screen->getPalette(1), 768);
+	memcpy(_screen->_currentPalette, _screen->getPalette(2), 768);
 	
 	for (int i = 0; i < 768; i += 3) {
 		_screen->_currentPalette[i] = _screen->_currentPalette[i + 1] = 0;
@@ -1132,7 +1153,7 @@
 	snd_playSoundEffect(106);
 	_screen->fadePalette(_screen->_currentPalette, 90, &_updateFunctor);
 	
-	memcpy(_screen->_currentPalette, _screen->getPalette(1), 768);
+	memcpy(_screen->_currentPalette, _screen->getPalette(2), 768);
 	_screen->fadePalette(_screen->_currentPalette, 30, &_updateFunctor);	
 
 	return 0;
@@ -1555,7 +1576,7 @@
 		Opcode(o2_getHiddenItemsEntry),
 		Opcode(o2_mushroomEffect),
 		Opcode(o2_wsaClose),
-		OpcodeUnImpl(),
+		Opcode(o2_meanWhileScene),
 		// 0x98
 		Opcode(o2_customChat),
 		Opcode(o2_customChatFinish),


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list