[Scummvm-cvs-logs] CVS: scummvm/gob gob.cpp,1.32,1.33 gob.h,1.16,1.17 inter.h,1.8,1.9 inter_v1.cpp,1.6,1.7 inter_v2.cpp,1.2,1.3

Sven Hesse drmccoy at users.sourceforge.net
Sat Jan 14 01:58:02 CET 2006


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

Modified Files:
	gob.cpp gob.h inter.h inter_v1.cpp inter_v2.cpp 
Log Message:
Added copy protection skipping; Fixed Inter::getOpcodeGoblinDesc()


Index: gob.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gob/gob.cpp,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -d -r1.32 -r1.33
--- gob.cpp	8 Jan 2006 20:03:20 -0000	1.32
+++ gob.cpp	14 Jan 2006 09:57:20 -0000	1.33
@@ -233,6 +233,7 @@
 	_mixer->setVolumeForSoundType(Audio::Mixer::kMusicSoundType, ConfMan.getInt("music_volume"));
 
 	_features = features;
+	_copyProtection = ConfMan.getBool("copy_protection");
 }
 
 GobEngine::~GobEngine() {

Index: gob.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gob/gob.h,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- gob.h	8 Jan 2006 20:03:20 -0000	1.16
+++ gob.h	14 Jan 2006 09:57:20 -0000	1.17
@@ -100,6 +100,8 @@
 	Common::RandomSource _rnd;
 
 	int32 _features;
+	bool _copyProtection;
+
 	Game *_game;
 	Snd *_snd;
 	Video *_video;

Index: inter.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gob/inter.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- inter.h	10 Jan 2006 11:30:23 -0000	1.8
+++ inter.h	14 Jan 2006 09:57:20 -0000	1.9
@@ -73,7 +73,7 @@
 	virtual void executeGoblinOpcode(int i, int16 &extraData, int32 *retVarPtr, Goblin::Gob_Object *objDesc) = 0;
 	virtual const char *getOpcodeDrawDesc(byte i) = 0;
 	virtual const char *getOpcodeFuncDesc(byte i, byte j) = 0;
-	virtual const char *getOpcodeGoblinDesc(byte i) = 0;
+	virtual const char *getOpcodeGoblinDesc(int i) = 0;
 };
 
 class Inter_v1 : public Inter {
@@ -108,7 +108,7 @@
 	virtual void executeGoblinOpcode(int i, int16 &extraData, int32 *retVarPtr, Goblin::Gob_Object *objDesc);
 	virtual const char *getOpcodeDrawDesc(byte i);
 	virtual const char *getOpcodeFuncDesc(byte i, byte j);
-	virtual const char *getOpcodeGoblinDesc(byte i);
+	virtual const char *getOpcodeGoblinDesc(int i);
 
 	void o1_loadMult(void);
 	void o1_playMult(void);
@@ -296,7 +296,7 @@
 	virtual void executeGoblinOpcode(int i, int16 &extraData, int32 *retVarPtr, Goblin::Gob_Object *objDesc);
 	virtual const char *getOpcodeDrawDesc(byte i);
 	virtual const char *getOpcodeFuncDesc(byte i, byte j);
-	virtual const char *getOpcodeGoblinDesc(byte i);
+	virtual const char *getOpcodeGoblinDesc(int i);
 
 	void o2_drawStub(void) { warning("Gob2 stub"); }
 };

Index: inter_v1.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gob/inter_v1.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- inter_v1.cpp	10 Jan 2006 11:30:23 -0000	1.6
+++ inter_v1.cpp	14 Jan 2006 09:57:20 -0000	1.7
@@ -1616,15 +1616,14 @@
 	return _opcodesDrawV1[i].desc;
 }
 
-const char *Inter_v1::getOpcodeFuncDesc(byte i, byte j)
-{
+const char *Inter_v1::getOpcodeFuncDesc(byte i, byte j) {
 	if ((i > 4) || (j > 15))
 		return "";
 
 	return _opcodesFuncV1[i*16 + j].desc;
 }
 
-const char *Inter_v1::getOpcodeGoblinDesc(byte i) {
+const char *Inter_v1::getOpcodeGoblinDesc(int i) {
 	for (int j = 0; j < ARRAYSIZE(_goblinFuncLookUp); j++)
 		if (_goblinFuncLookUp[j][0] == i)
 			return _opcodesGoblinV1[_goblinFuncLookUp[j][1]].desc;
@@ -1633,7 +1632,21 @@
 
 bool Inter_v1::o1_callSub(char &cmdCount, int16 &counter, int16 &retFlag) {
 	char *storedIP = _vm->_global->_inter_execPtr;
-	_vm->_global->_inter_execPtr = (char *)_vm->_game->_totFileData + READ_LE_UINT16(_vm->_global->_inter_execPtr);
+
+//	_vm->_global->_inter_execPtr = (char *)_vm->_game->_totFileData + READ_LE_UINT16(_vm->_global->_inter_execPtr);
+
+	uint16 offset = READ_LE_UINT16(_vm->_global->_inter_execPtr);
+	debug(5, "tot = \"%s\", offset = %d", _vm->_game->_curTotFile, offset);
+
+	// Skipping the copy protection screen in Gobliiins
+	if (!_vm->_copyProtection && (_vm->_features & GF_GOB1) && (offset == 3905)
+			&& !scumm_stricmp(_vm->_game->_curTotFile, "intro.tot")) {
+		debug(2, "Skipping copy protection screen");
+		_vm->_global->_inter_execPtr += 2;
+		return false;
+	}
+	
+	_vm->_global->_inter_execPtr = (char *)_vm->_game->_totFileData + offset;
 
 	if (counter == cmdCount && retFlag == 2)
 		return true;

Index: inter_v2.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gob/inter_v2.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- inter_v2.cpp	10 Jan 2006 11:30:23 -0000	1.2
+++ inter_v2.cpp	14 Jan 2006 09:57:20 -0000	1.3
@@ -689,15 +689,14 @@
 	return _opcodesDrawV2[i].desc;
 }
 
-const char *Inter_v2::getOpcodeFuncDesc(byte i, byte j)
-{
+const char *Inter_v2::getOpcodeFuncDesc(byte i, byte j) {
 	if ((i > 4) || (j > 15))
 		return "";
 
 	return _opcodesFuncV2[i*16 + j].desc;
 }
 
-const char *Inter_v2::getOpcodeGoblinDesc(byte i) {
+const char *Inter_v2::getOpcodeGoblinDesc(int i) {
 	for (int j = 0; j < ARRAYSIZE(_goblinFuncLookUp); j++)
 		if (_goblinFuncLookUp[j][0] == i)
 			return _opcodesGoblinV2[_goblinFuncLookUp[j][1]].desc;





More information about the Scummvm-git-logs mailing list