[Scummvm-cvs-logs] CVS: scummvm/scumm script_v100he.cpp,NONE,2.1 intern.h,2.296,2.297 module.mk,1.42,1.43 script_v72he.cpp,2.159,2.160 script_v7he.cpp,2.101,2.102 script_v80he.cpp,2.52,2.53 scumm.cpp,1.249,1.250

Travis Howell kirben at users.sourceforge.net
Sat Oct 9 07:41:07 CEST 2004


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11919/scumm

Modified Files:
	intern.h module.mk script_v72he.cpp script_v7he.cpp 
	script_v80he.cpp scumm.cpp 
Added Files:
	script_v100he.cpp 
Log Message:

Inital support for later HE games with altered opcode table.


--- NEW FILE: script_v100he.cpp ---
/* ScummVM - Scumm Interpreter
 * Copyright (C) 2001  Ludvig Strigeus
 * Copyright (C) 2001-2004 The ScummVM project
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.

 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.

 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 *
 * $Header: /cvsroot/scummvm/scummvm/scumm/script_v100he.cpp,v 2.1 2004/10/09 14:33:31 kirben Exp $
[...1444 lines suppressed...]
			unkMessage2(_scriptPointer);
			break;
		}
		_scriptPointer += resStrLen(_scriptPointer) + 1;

		break;
	case 91:
		_string[m].loadDefault();
		if (n)
			_actorToPrintStrFor = pop();
		break;
	case 92:
		_string[m].saveDefault();
		break;
	default:
		error("decodeParseString: default case %d", b);
	}
}

} // End of namespace Scumm

Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.296
retrieving revision 2.297
diff -u -d -r2.296 -r2.297
--- intern.h	8 Oct 2004 22:58:49 -0000	2.296
+++ intern.h	9 Oct 2004 14:33:30 -0000	2.297
@@ -901,6 +901,46 @@
 	void o90_getActorAnimProgress();
 };
 
+class ScummEngine_v100he : public ScummEngine_v90he {
+protected:
+	typedef void (ScummEngine_v100he::*OpcodeProcV100he)();
+	struct OpcodeEntryV100he {
+		OpcodeProcV100he proc;
+		const char *desc;
+	};
+
+	const OpcodeEntryV100he *_opcodesV100he;
+
+public:
+	ScummEngine_v100he(GameDetector *detector, OSystem *syst, const ScummGameSettings &gs, uint8 md5sum[16]) : ScummEngine_v90he(detector, syst, gs, md5sum) {}
+
+protected:
+	virtual void setupOpcodes();
+	virtual void executeOpcode(byte i);
+	virtual const char *getOpcodeDesc(byte i);
+	
+	virtual void decodeParseString(int a, int b);
+
+	/* HE version 100 script opcodes */
+	void o100_actorOps();
+	void o100_arrayOps();
+	void o100_dim2dimArray();
+	void o100_dimArray();
+	void o100_drawObject();
+	void o100_unknown28();
+	void o100_resourceRoutines();
+	void o100_wizImageOps();
+	void o100_dim2dim2Array();
+	void o100_paletteOps();
+	void o100_roomOps();
+	void o100_startSound();
+	void o100_unknown26();
+	void o100_quitPauseRestart();
+	void o100_cursorCommand();
+	void o100_wait();
+	void o100_unknown25();
+};
+
 class ScummEngine_v7 : public ScummEngine_v6 {
 public:
 	ScummEngine_v7(GameDetector *detector, OSystem *syst, const ScummGameSettings &gs, uint8 md5sum[16]) : ScummEngine_v6(detector, syst, gs, md5sum) {}

Index: module.mk
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/module.mk,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -d -r1.42 -r1.43
--- module.mk	20 Sep 2004 22:04:05 -0000	1.42
+++ module.mk	9 Oct 2004 14:33:30 -0000	1.43
@@ -43,6 +43,7 @@
 	scumm/script_v72he.o \
 	scumm/script_v80he.o \
 	scumm/script_v90he.o \
+	scumm/script_v100he.o \
 	scumm/script_v8.o \
 	scumm/scumm.o \
 	scumm/sound.o \

Index: script_v72he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v72he.cpp,v
retrieving revision 2.159
retrieving revision 2.160
diff -u -d -r2.159 -r2.160
--- script_v72he.cpp	8 Oct 2004 22:58:49 -0000	2.159
+++ script_v72he.cpp	9 Oct 2004 14:33:31 -0000	2.160
@@ -793,7 +793,7 @@
 	int timer = pop();
 	int cmd = fetchScriptByte();
 
-	if (cmd == 10) {
+	if (cmd == 10 || cmd == 50) {
 		checkRange(3, 1, timer, "o72_getTimer: Timer %d out of range(%d)");
 		int diff = _system->getMillis() - _timers[timer];
 		push(diff);
@@ -806,7 +806,7 @@
 	int timer = pop();
 	int cmd = fetchScriptByte();
 
-	if (cmd == 158) {
+	if (cmd == 158 || cmd == 61) {
 		checkRange(3, 1, timer, "o72_setTimer: Timer %d out of range(%d)");
 		_timers[timer] = _system->getMillis();
 	} else {
@@ -850,16 +850,19 @@
 	int state = 0, y = -1, x = -1;
 
 	switch (subOp) {
+	case 6:
 	case 62:
 		state = pop();
 		y = pop();
 		x = pop();
 		break;
+	case 7:
 	case 63:
 		state = pop();
 		if (state == 0)
 			state = 1;
 		break;
+	case 40:
 	case 65:
 		state = 1;
 		y = pop();
@@ -2337,12 +2340,14 @@
 	type = fetchScriptByte();
 
 	switch (type) {
+	case 43: // HE 100
 	case 6: // number
 		if (!strcmp((char *)option, "NoPrinting"))
 			push(1);
 		else
 			push(0);
 		break;
+	case 77: // HE 100
 	case 7: // string
 		writeVar(0, 0);
 		defineArray(0, kStringArray, 0, 0, 0, 0);
@@ -2363,11 +2368,13 @@
 	type = fetchScriptByte();
 
 	switch (type) {
+	case 43: // HE 100
 	case 6: // number
 		value = pop();
 		copyScriptString(option);
 		debug(1,"o72_writeINI: %s set to %d", option, value);
 		break;
+	case 77: // HE 100
 	case 7: // string
 		copyScriptString(string);
 		copyScriptString(option);
@@ -2472,6 +2479,7 @@
 		break;
 	default:
 		warning("o72_getResourceSize: default type %d", subOp);
+		push(0);
 		return;
 	}
 

Index: script_v7he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v7he.cpp,v
retrieving revision 2.101
retrieving revision 2.102
diff -u -d -r2.101 -r2.102
--- script_v7he.cpp	5 Oct 2004 22:28:13 -0000	2.101
+++ script_v7he.cpp	9 Oct 2004 14:33:31 -0000	2.102
@@ -916,6 +916,8 @@
 	int fromId, toId;
 
 	switch (b) {
+	case 68: // HE 100
+	case 69: // HE 100
 	case 246:
 	case 248:
 		vert4y = pop();
@@ -928,9 +930,10 @@
 		vert1x = pop();
 		id = pop();
 
-		polygonStore(id, (b == 248), vert1x, vert1y, vert2x, vert2y, vert3x, vert3y, 
+		polygonStore(id, (b == 69 || b == 248), vert1x, vert1y, vert2x, vert2y, vert3x, vert3y, 
 					 vert4x, vert4y);
 		break;
+	case 28: // HE 100
 	case 247:
 		toId = pop();
 		fromId = pop();

Index: script_v80he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v80he.cpp,v
retrieving revision 2.52
retrieving revision 2.53
diff -u -d -r2.52 -r2.53
--- script_v80he.cpp	9 Oct 2004 05:15:12 -0000	2.52
+++ script_v80he.cpp	9 Oct 2004 14:33:31 -0000	2.53
@@ -502,6 +502,9 @@
 	int args[16];
 	int subOp = fetchScriptByte();
 
+	if (_heversion == 100)
+		subOp += 5;
+
 	switch (subOp) {
 	case 0x13: // Loads cursors from another resource
 		a = pop();

Index: scumm.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.cpp,v
retrieving revision 1.249
retrieving revision 1.250
diff -u -d -r1.249 -r1.250
--- scumm.cpp	8 Oct 2004 16:08:07 -0000	1.249
+++ scumm.cpp	9 Oct 2004 14:33:31 -0000	1.250
@@ -337,7 +337,7 @@
 	 GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0},
 
 	// Humongous Entertainment Scumm Version ?
-	{"ff5demo", "Freddi Fish 5: The Case of the Creature of Coral Cave (Demo)", GID_HEGAME, 6, 99, MDT_NONE,
+	{"ff5demo", "Freddi Fish 5: The Case of the Creature of Coral Cave (Demo)", GID_HEGAME, 6, 100, MDT_NONE,
 	 GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0},
 	{"freddicove", "Freddi Fish 5: The Case of the Creature of Coral Cave", GID_HEGAME, 6, 99, MDT_NONE,
 	 GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES | GF_MULTIPLE_VERSIONS, 0, 0},
@@ -364,6 +364,14 @@
 	 GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0},
 	{"Football2002", "Backyard Football 2002 (Demo)", GID_HEGAME, 6, 99, MDT_NONE,
 	 GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0},
+
+	// Humongous Entertainment Scumm Version ?
+	{"PuttTTT", "Putt-Putt Travels Through Time *updated)", GID_HEGAME, 6, 100, MDT_NONE,
+	 GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0},
+	{"SamsFunShop", "Pajama Sam's One-Stop Fun Shop", GID_HEGAME, 6, 100, MDT_NONE,
+	 GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0},
+
+
 #endif
 	{NULL, NULL, 0, 0, 0, MDT_NONE, 0, 0, 0}
 };
@@ -404,7 +412,7 @@
 	 GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0},
 	{"0ab19be9e2a3f6938226638b2a3744fe", "Putt-Putt Travels Through Time (updated Demo)", GID_HEGAME, 6, 98, MDT_NONE,
 	 GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0},
-	{"3de99ef0523f8ca7958faa3afccd035a", "Spyfox 1: Dry Cereal (Updated)", GID_HEGAME, 6, 98, MDT_NONE,
+	{"3de99ef0523f8ca7958faa3afccd035a", "Spyfox 1: Dry Cereal (Updated)", GID_HEGAME, 6, 100, MDT_NONE,
 	 GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0},
 	{"9d4ab3e0e1d1ebc6ba8a6a4c470ed184", "Spyfox 1: Dry Cereal (Updated Demo)", GID_HEGAME, 6, 98, MDT_NONE,
 	 GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0},
@@ -2833,6 +2841,9 @@
 	case 6:
 		switch (game.heversion) {
 #ifndef __PALM_OS__
+		case 100:
+			engine = new ScummEngine_v100he(detector, syst, game, md5sum);
+			break;
 		case 90:
 		case 98:
 		case 99:





More information about the Scummvm-git-logs mailing list