[Scummvm-cvs-logs] SF.net SVN: scummvm:[34375] scummvm/trunk/engines/scumm

Kirben at users.sourceforge.net Kirben at users.sourceforge.net
Sat Sep 6 03:02:46 CEST 2008


Revision: 34375
          http://scummvm.svn.sourceforge.net/scummvm/?rev=34375&view=rev
Author:   Kirben
Date:     2008-09-06 01:02:45 +0000 (Sat, 06 Sep 2008)

Log Message:
-----------
Add debugInput opcode for HE 100 games.

Modified Paths:
--------------
    scummvm/trunk/engines/scumm/he/intern_he.h
    scummvm/trunk/engines/scumm/he/script_v100he.cpp
    scummvm/trunk/engines/scumm/he/script_v72he.cpp
    scummvm/trunk/engines/scumm/scumm.cpp

Modified: scummvm/trunk/engines/scumm/he/intern_he.h
===================================================================
--- scummvm/trunk/engines/scumm/he/intern_he.h	2008-09-05 22:16:43 UTC (rev 34374)
+++ scummvm/trunk/engines/scumm/he/intern_he.h	2008-09-06 01:02:45 UTC (rev 34375)
@@ -320,6 +320,8 @@
 	virtual bool handleNextCharsetCode(Actor *a, int *c);
 	virtual int convertMessageToString(const byte *msg, byte *dst, int dstSize);
 
+	void debugInput(byte *string);
+
 	/* HE version 72 script opcodes */
 	void o72_pushDWord();
 	void o72_getScriptString();
@@ -602,9 +604,12 @@
 
 	const OpcodeEntryV100he *_opcodesV100he;
 
+	byte _debugInputBuffer[256];
 public:
 	ScummEngine_v100he(OSystem *syst, const DetectorResult &dr) : ScummEngine_v99he(syst, dr) {}
 
+	virtual void resetScumm();
+
 protected:
 	virtual void setupOpcodes();
 	virtual void executeOpcode(byte i);
@@ -643,6 +648,7 @@
 	void o100_videoOps();
 	void o100_wait();
 	void o100_writeFile();
+	void o100_debugInput();
 	void o100_isResourceLoaded();
 	void o100_getResourceSize();
 	void o100_getSpriteGroupInfo();

Modified: scummvm/trunk/engines/scumm/he/script_v100he.cpp
===================================================================
--- scummvm/trunk/engines/scumm/he/script_v100he.cpp	2008-09-05 22:16:43 UTC (rev 34374)
+++ scummvm/trunk/engines/scumm/he/script_v100he.cpp	2008-09-06 01:02:45 UTC (rev 34375)
@@ -29,6 +29,7 @@
 
 #include "scumm/actor.h"
 #include "scumm/charset.h"
+#include "scumm/dialogs.h"
 #include "scumm/he/animation_he.h"
 #include "scumm/he/intern_he.h"
 #include "scumm/object.h"
@@ -256,7 +257,7 @@
 		OPCODE(o90_cond),
 		OPCODE(o90_cos),
 		/* A8 */
-		OPCODE(o6_invalid),
+		OPCODE(o100_debugInput),
 		OPCODE(o80_getFileSize),
 		OPCODE(o6_getActorFromXY),
 		OPCODE(o72_findAllObjects),
@@ -2345,6 +2346,30 @@
 	}
 }
 
+void ScummEngine_v100he::o100_debugInput() {
+	byte subOp = fetchScriptByte();
+
+	switch (subOp) {
+	case 0:
+		copyScriptString(_debugInputBuffer, sizeof(_debugInputBuffer));
+		break;
+	case 26:
+		pop();
+		break;
+	case 27:
+		copyScriptString(_debugInputBuffer, sizeof(_debugInputBuffer));
+		break;
+	case 80:
+		copyScriptString(_debugInputBuffer, sizeof(_debugInputBuffer));
+		break;
+	case 92:
+		debugInput(_debugInputBuffer);
+		break;
+	default:
+		error("o100_debugInput: default case %d", subOp);
+	}
+}
+
 void ScummEngine_v100he::o100_isResourceLoaded() {
 	// Reports percentage of resource loaded by queue
 	int type;

Modified: scummvm/trunk/engines/scumm/he/script_v72he.cpp
===================================================================
--- scummvm/trunk/engines/scumm/he/script_v72he.cpp	2008-09-05 22:16:43 UTC (rev 34374)
+++ scummvm/trunk/engines/scumm/he/script_v72he.cpp	2008-09-06 01:02:45 UTC (rev 34375)
@@ -1635,13 +1635,10 @@
 	_wiz->displayWizImage(&wi);
 }
 
-void ScummEngine_v72he::o72_debugInput() {
-	byte string[255];
+void ScummEngine_v72he::debugInput(byte* string) {
 	byte *debugInputString;
 
-	copyScriptString(string, sizeof(string));
-
-	DebugInputDialog dialog(this, (char*)string);
+	DebugInputDialog dialog(this, (char *)string);
 	runDialog(dialog);
 	while (!dialog.done) {
 		parseEvents();
@@ -1654,6 +1651,13 @@
 	push(readVar(0));
 }
 
+void ScummEngine_v72he::o72_debugInput() {
+	byte string[255];
+
+	copyScriptString(string, sizeof(string));
+	debugInput(string);
+}
+
 void ScummEngine_v72he::o72_jumpToScript() {
 	int args[25];
 	int script;

Modified: scummvm/trunk/engines/scumm/scumm.cpp
===================================================================
--- scummvm/trunk/engines/scumm/scumm.cpp	2008-09-05 22:16:43 UTC (rev 34374)
+++ scummvm/trunk/engines/scumm/scumm.cpp	2008-09-06 01:02:45 UTC (rev 34375)
@@ -1530,6 +1530,12 @@
 	byte *data = defineArray(129, kStringArray, 0, 0, 0, len);
 	memcpy(data, _filenamePattern.pattern, len);
 }
+
+void ScummEngine_v100he::resetScumm() {
+	ScummEngine_v99he::resetScumm();
+
+	memset(_debugInputBuffer, 0, sizeof(_debugInputBuffer));
+}
 #endif
 
 void ScummEngine::setupMusic(int midi) {


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