[Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.448,2.449 scumm.cpp,1.448,1.449 scumm.h,1.593,1.594 vars.cpp,1.124,1.125

Max Horn fingolfin at users.sourceforge.net
Wed Apr 20 13:35:21 CEST 2005


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

Modified Files:
	intern.h scumm.cpp scumm.h vars.cpp 
Log Message:
Split initScummVars and overload it; this makes it possible to define more VARS in subclasses

Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.448
retrieving revision 2.449
diff -u -d -r2.448 -r2.449
--- intern.h	20 Apr 2005 05:24:02 -0000	2.448
+++ intern.h	20 Apr 2005 20:34:24 -0000	2.449
@@ -61,6 +61,7 @@
 	virtual const char *getOpcodeDesc(byte i);
 
 	virtual void setupScummVars();
+	virtual void initScummVars();
 	virtual void decodeParseString();
 
 	virtual void readMAXS(int blockSize);
@@ -256,6 +257,7 @@
 	virtual const char *getOpcodeDesc(byte i);
 
 	virtual void setupScummVars();
+	virtual void initScummVars();
 	virtual void decodeParseString();
 
 	virtual void readIndexFile();
@@ -694,6 +696,8 @@
 	virtual void executeOpcode(byte i);
 	virtual const char *getOpcodeDesc(byte i);
 	
+	virtual void initScummVars();
+
 	virtual void readRoomsOffsets();
 	virtual void readGlobalObjects();
 	virtual void readIndexBlock(uint32 blocktype, uint32 itemsize);
@@ -763,7 +767,7 @@
 	WizParameters _wizParams;
 
 public:
-	ScummEngine_v72he(GameDetector *detector, OSystem *syst, const ScummGameSettings &gs, uint8 md5sum[16]) : ScummEngine_v70he(detector, syst, gs, md5sum) {}
+	ScummEngine_v72he(GameDetector *detector, OSystem *syst, const ScummGameSettings &gs, uint8 md5sum[16]);
 
 	virtual void scummInit();
 
@@ -773,6 +777,7 @@
 	virtual const char *getOpcodeDesc(byte i);
 
 	virtual void setupScummVars();
+	virtual void initScummVars();
 	virtual void readArrayFromIndexFile();
 
 	virtual byte *getStringAddress(int i);
@@ -861,6 +866,20 @@
 	void o72_getResourceSize();
 	void o72_setFilePath();
 	void o72_setWindowCaption();
+
+	byte VAR_NUM_ROOMS;
+	byte VAR_NUM_SCRIPTS;
+	byte VAR_NUM_SOUNDS;
+	byte VAR_NUM_COSTUMES;
+	byte VAR_NUM_IMAGES;
+	byte VAR_NUM_CHARSETS;
+	byte VAR_NUM_SPRITE_GROUPS;
+	byte VAR_NUM_SPRITES;
+	byte VAR_NUM_PALETTES;
+	byte VAR_NUM_UNK;
+	byte VAR_POLYGONS_ONLY;
+	byte VAR_WINDOWS_VERSION;
+	byte VAR_WIZ_TCOLOR;
 };
 
 class ScummEngine_v80he : public ScummEngine_v72he {
@@ -881,6 +900,8 @@
 	virtual void executeOpcode(byte i);
 	virtual const char *getOpcodeDesc(byte i);
 
+	virtual void initScummVars();
+
 	void loadImgSpot(int resId, int state, int16 &x, int16 &y);
 	void loadWizCursor(int resId);
 	void unknownE0(int x1, int y1, int x, int unk1, int unk2, int type, int id);
@@ -949,6 +970,8 @@
 	virtual void setupOpcodes();
 	virtual void executeOpcode(byte i);
 	virtual const char *getOpcodeDesc(byte i);
+
+	virtual void initScummVars();
 	
 	virtual void readMAXS(int blockSize);
 
@@ -1126,6 +1149,8 @@
 	virtual void scummInit();
 
 protected:
+	virtual void initScummVars();
+
 	virtual void readMAXS(int blockSize);
 
 	virtual void copyPalColor(int dst, int src);
@@ -1197,6 +1222,7 @@
 
 protected:
 	virtual void setupScummVars();
+	virtual void initScummVars();
 
 	virtual void readMAXS(int blockSize);
 	virtual void readGlobalObjects();

Index: scumm.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.cpp,v
retrieving revision 1.448
retrieving revision 1.449
diff -u -d -r1.448 -r1.449
--- scumm.cpp	20 Apr 2005 20:08:37 -0000	1.448
+++ scumm.cpp	20 Apr 2005 20:34:25 -0000	1.449
@@ -1046,22 +1046,9 @@
 	VAR_NUM_SCRIPT_CYCLES = 0xFF;
 	VAR_SCRIPT_CYCLE = 0xFF;
 
-	VAR_NUM_ROOMS = 0xFF;
-	VAR_NUM_SCRIPTS = 0xFF;
-	VAR_NUM_SOUNDS = 0xFF;
-	VAR_NUM_COSTUMES = 0xFF;
-	VAR_NUM_IMAGES = 0xFF;
-	VAR_NUM_CHARSETS = 0xFF;
 	VAR_NUM_GLOBAL_OBJS = 0xFF;
-	VAR_NUM_SPRITE_GROUPS = 0xFF;
-	VAR_NUM_SPRITES = 0xFF;
-	VAR_NUM_PALETTES = 0xFF;
-	VAR_NUM_UNK = 0xFF;
-	VAR_MOUSE_STATE = 0xFF;
-	VAR_POLYGONS_ONLY = 0xFF;
-	VAR_WINDOWS_VERSION = 0xFF;
 	VAR_KEY_STATE = 0xFF;
-	VAR_WIZ_TCOLOR = 0xFF;
+	VAR_MOUSE_STATE = 0xFF;
 
 	// Use g_scumm from error() ONLY
 	g_scumm = this;
@@ -1276,6 +1263,23 @@
 	free(_heV7RoomOffsets);
 }
 
+ScummEngine_v72he::ScummEngine_v72he(GameDetector *detector, OSystem *syst, const ScummGameSettings &gs, uint8 md5sum[16])
+ : ScummEngine_v70he(detector, syst, gs, md5sum) {
+	VAR_NUM_ROOMS = 0xFF;
+	VAR_NUM_SCRIPTS = 0xFF;
+	VAR_NUM_SOUNDS = 0xFF;
+	VAR_NUM_COSTUMES = 0xFF;
+	VAR_NUM_IMAGES = 0xFF;
+	VAR_NUM_CHARSETS = 0xFF;
+	VAR_NUM_SPRITE_GROUPS = 0xFF;
+	VAR_NUM_SPRITES = 0xFF;
+	VAR_NUM_PALETTES = 0xFF;
+	VAR_NUM_UNK = 0xFF;
+	VAR_POLYGONS_ONLY = 0xFF;
+	VAR_WINDOWS_VERSION = 0xFF;
+	VAR_WIZ_TCOLOR = 0xFF;
+}
+
 #pragma mark -
 #pragma mark --- Initialization ---
 #pragma mark -

Index: scumm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.h,v
retrieving revision 1.593
retrieving revision 1.594
diff -u -d -r1.593 -r1.594
--- scumm.h	20 Apr 2005 19:59:17 -0000	1.593
+++ scumm.h	20 Apr 2005 20:34:26 -0000	1.594
@@ -405,7 +405,7 @@
 	int init(GameDetector &detector);
 
 	virtual void setupScummVars();
-	void initScummVars();
+	virtual void initScummVars();
 
 	virtual void scummInit();
 
@@ -1337,22 +1337,10 @@
 	byte VAR_SCRIPT_CYCLE;
 	byte VAR_NUM_SCRIPT_CYCLES;
 
-	byte VAR_NUM_ROOMS;
-	byte VAR_NUM_SCRIPTS;
-	byte VAR_NUM_SOUNDS;
-	byte VAR_NUM_COSTUMES;
-	byte VAR_NUM_IMAGES;
-	byte VAR_NUM_CHARSETS;
-	byte VAR_NUM_GLOBAL_OBJS;
-	byte VAR_NUM_SPRITE_GROUPS;
-	byte VAR_NUM_SPRITES;
-	byte VAR_NUM_PALETTES;
-	byte VAR_NUM_UNK;
+	byte VAR_NUM_GLOBAL_OBJS;	// Exists both in V7 and in V72HE
+
+	byte VAR_KEY_STATE;		// Used in parseEvents()
 	byte VAR_MOUSE_STATE;
-	byte VAR_POLYGONS_ONLY;
-	byte VAR_WINDOWS_VERSION;
-	byte VAR_KEY_STATE;
-	byte VAR_WIZ_TCOLOR;
 };
 
 } // End of namespace Scumm

Index: vars.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/vars.cpp,v
retrieving revision 1.124
retrieving revision 1.125
diff -u -d -r1.124 -r1.125
--- vars.cpp	20 Apr 2005 18:21:12 -0000	1.124
+++ vars.cpp	20 Apr 2005 20:34:44 -0000	1.125
@@ -480,60 +480,97 @@
 	VAR_SYNC = 134;
 }
 
-void ScummEngine::initScummVars() {
+void ScummEngine_v2::initScummVars() {
 
 	// This needs to be at least greater than 40 to get the more
 	// elaborate version of the EGA Zak into. I don't know where
 	// else it makes any difference.
 	if (_gameId == GID_ZAK)
 		VAR(VAR_MACHINE_SPEED) = 0x7FFF;
+}
 
-	if (_version <= 2)
-		return;
+void ScummEngine_v5::initScummVars() {
+	ScummEngine::initScummVars();
 
 	if (_version >= 4 && _version <= 5)
 		VAR(VAR_V5_TALK_STRING_Y) = -0x50;
 
-	if (_version == 8) {	// Fixme: How do we deal with non-cd installs?
+	if (VAR_CURRENT_LIGHTS != 0xFF) {
+		// Setup light
+		VAR(VAR_CURRENT_LIGHTS) = LIGHTMODE_actor_base | LIGHTMODE_actor_color | LIGHTMODE_screen;
+	}
+	
+	if (_gameId == GID_MONKEY || _gameId == GID_MONKEY_SEGA)
+		_scummVars[74] = 1225;
+}
+
+void ScummEngine_v7::initScummVars() {
+	ScummEngine::initScummVars();
+
+	if (_version == 8) {	// FIXME: How do we deal with non-cd installs?
 		VAR(VAR_CURRENTDISK) = 1;
 		VAR(VAR_LANGUAGE) = _language;
-	} else if (_version >= 7) {
+	} else {
 		VAR(VAR_V6_EMSSPACE) = 10000;
 		VAR(VAR_NUM_GLOBAL_OBJS) = _numGlobalObjects - 1;
-	} else if (_heversion >= 70) {
-		VAR(VAR_NUM_SOUND_CHANNELS) = 8;
-		VAR(VAR_MUSIC_CHANNEL) = 1;
-		VAR(VAR_SOUND_CHANNEL) = 2;
+	}
 
-		if (_heversion >= 72) {
-			VAR(VAR_NUM_ROOMS) = _numRooms - 1;
-			VAR(VAR_NUM_SCRIPTS) = _numScripts - 1;
-			VAR(VAR_NUM_SOUNDS) = _numSounds - 1;
-			VAR(VAR_NUM_COSTUMES) = _numCostumes - 1;
-			VAR(VAR_NUM_IMAGES) = _numImages - 1;
-			VAR(VAR_NUM_CHARSETS) = _numCharsets - 1;
-			VAR(VAR_NUM_GLOBAL_OBJS) = _numGlobalObjects - 1;
-		}
-		if (_heversion >= 80) {
-			VAR(78) = 1;
-			VAR(VAR_WINDOWS_VERSION) = 40;
+	VAR(VAR_DEFAULT_TALK_DELAY) = 60;
+	VAR(VAR_VOICE_MODE) = ConfMan.getBool("subtitles");
+}
 
-			VAR(VAR_NUM_ACTIVE_SOUND_CHANNELS) = (_heversion >= 90) ? 8 : 4;
-		}
-		if (_heversion >= 90) {
-			VAR(VAR_SCRIPT_CYCLE) = 1;
-			VAR(VAR_NUM_SCRIPT_CYCLES) = 1;
-		}
-		if (_heversion >= 95) {
-			VAR(VAR_NUM_SPRITE_GROUPS) = MAX(64, _numSprites / 4) - 1;
-			VAR(VAR_NUM_SPRITES) = _numSprites - 1;
-			VAR(VAR_WIZ_TCOLOR) = 5;
-		}
-		if (_heversion >= 99) {
-			VAR(VAR_NUM_PALETTES) = _numPalettes;
-			VAR(VAR_NUM_UNK) = _numUnk;
-		}
-	} else {
+void ScummEngine_v70he::initScummVars() {
+	ScummEngine::initScummVars();
+
+	VAR(VAR_NUM_SOUND_CHANNELS) = 8;
+	VAR(VAR_MUSIC_CHANNEL) = 1;
+	VAR(VAR_SOUND_CHANNEL) = 2;
+}
+
+void ScummEngine_v72he::initScummVars() {
+	ScummEngine_v70he::initScummVars();
+
+	VAR(VAR_NUM_ROOMS) = _numRooms - 1;
+	VAR(VAR_NUM_SCRIPTS) = _numScripts - 1;
+	VAR(VAR_NUM_SOUNDS) = _numSounds - 1;
+	VAR(VAR_NUM_COSTUMES) = _numCostumes - 1;
+	VAR(VAR_NUM_IMAGES) = _numImages - 1;
+	VAR(VAR_NUM_CHARSETS) = _numCharsets - 1;
+	VAR(VAR_NUM_GLOBAL_OBJS) = _numGlobalObjects - 1;
+}
+
+void ScummEngine_v80he::initScummVars() {
+	ScummEngine_v72he::initScummVars();
+
+	VAR(78) = 1;
+	VAR(VAR_WINDOWS_VERSION) = 40;
+
+	VAR(VAR_NUM_ACTIVE_SOUND_CHANNELS) = (_heversion >= 90) ? 8 : 4;
+}
+
+void ScummEngine_v90he::initScummVars() {
+	ScummEngine_v80he::initScummVars();
+
+	VAR(VAR_SCRIPT_CYCLE) = 1;
+	VAR(VAR_NUM_SCRIPT_CYCLES) = 1;
+
+	if (_heversion >= 95) {
+		VAR(VAR_NUM_SPRITE_GROUPS) = MAX(64, _numSprites / 4) - 1;
+		VAR(VAR_NUM_SPRITES) = _numSprites - 1;
+		VAR(VAR_WIZ_TCOLOR) = 5;
+	}
+}
+
+void ScummEngine_v99he::initScummVars() {
+	ScummEngine_v90he::initScummVars();
+
+	VAR(VAR_NUM_PALETTES) = _numPalettes;
+	VAR(VAR_NUM_UNK) = _numUnk;
+}
+
+void ScummEngine::initScummVars() {
+
+	if (_heversion < 70 && _version <= 6) {
 		switch (_midiDriver) {
 		case MD_NULL:  VAR(VAR_SOUNDCARD) = 0; break;
 		case MD_PCSPK:
@@ -610,19 +647,6 @@
 			VAR(VAR_V6_EMSSPACE) = 10000;
 	}
 	
-	if (VAR_CURRENT_LIGHTS != 0xFF) {
-		// Setup light
-		VAR(VAR_CURRENT_LIGHTS) = LIGHTMODE_actor_base | LIGHTMODE_actor_color | LIGHTMODE_screen;
-	}
-	
-	if (_gameId == GID_MONKEY || _gameId == GID_MONKEY_SEGA)
-		_scummVars[74] = 1225;
-
-	if (_version >= 7) {
-		VAR(VAR_DEFAULT_TALK_DELAY) = 60;
-		VAR(VAR_VOICE_MODE) = ConfMan.getBool("subtitles");
-	}
-
 	if (VAR_FADE_DELAY != 0xFF)
 		VAR(VAR_FADE_DELAY) = 3;
 		





More information about the Scummvm-git-logs mailing list