[Scummvm-cvs-logs] CVS: scummvm/scumm dialogs.cpp,1.46,1.47 resource.cpp,1.75,1.76 script_v5.cpp,1.75,1.76 script_v6.cpp,1.109,1.110 scumm.h,1.185,1.186 scummvm.cpp,2.140,2.141

Max Horn fingolfin at users.sourceforge.net
Tue May 13 16:34:03 CEST 2003


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv16356

Modified Files:
	dialogs.cpp resource.cpp script_v5.cpp script_v6.cpp scumm.h 
	scummvm.cpp 
Log Message:
cleanup

Index: dialogs.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/dialogs.cpp,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -d -r1.46 -r1.47
--- dialogs.cpp	10 May 2003 21:49:57 -0000	1.46
+++ dialogs.cpp	13 May 2003 23:33:01 -0000	1.47
@@ -142,7 +142,7 @@
 	{98, "Play"}, 
 	{99, "Cancel"}, 
 	{100, "Quit"}, 
-	{101, "Ok"}, 
+	{101, "OK"}, 
 	{93, "Game paused"}, 
 };
 
@@ -155,7 +155,7 @@
 	{9, "Play"},
 	{10, "Cancel"},
 	{11, "Quit"},
-	{12, "Ok"},
+	{12, "OK"},
 	{4, "Game paused"}
 };
 #endif
@@ -170,124 +170,36 @@
 
 
 const ScummVM::String ScummDialog::queryResString(int stringno) {
-	char *result;
-	int string;
+	byte *result;
 
 	if (stringno == 0)
 		return String();
 
 	if (_scumm->_features & GF_AFTER_V7)
-		string = _scumm->readVar(string_map_table_v7[stringno - 1].num);
+		result = _scumm->getStringAddressVar(string_map_table_v7[stringno - 1].num);
 	else if (_scumm->_features & GF_AFTER_V6)
-		string = _scumm->readVar(string_map_table_v6[stringno - 1].num);
+		result = _scumm->getStringAddressVar(string_map_table_v6[stringno - 1].num);
 	else
-		string = string_map_table_v5[stringno - 1].num;
+		result = _scumm->getStringAddress(string_map_table_v5[stringno - 1].num);
 
-	result = (char *)_scumm->getStringAddress(string);
 	if (result && *result == '/') {
 		byte tmp[256];
-		_scumm->translateText((byte *)result, tmp);
-		strcpy(result, (char *)tmp);
+		_scumm->translateText(result, tmp);
+		strcpy((char *)result, (char *)tmp);
 	}
 
-	if (!result || *result == '\0') {								// Gracelessly degrade to english :)
-		if (_scumm->_features & GF_AFTER_V6)
-			result = string_map_table_v6[stringno - 1].string;
-		else
-			result = string_map_table_v5[stringno - 1].string;
+	if (!result || *result == '\0') {	// Gracelessly degrade to english :)
+		return string_map_table_v5[stringno - 1].string;
 	}
 
 	// Convert to a proper string (take care of FF codes)
-	int value;
 	byte chr;
 	String tmp;
-
 	while ((chr = *result++)) {		
 		if (chr == 0xFF) {
-			chr = *result++;			
-			switch (chr) {
-			case 4: { // add value
-				value = _scumm->readVar(READ_LE_UINT16(result));
-				if (value < 0) {
-					tmp += '-';
-					value = -value;
-				}
-
-				int flag = 0;
-				int max = 10000;
-				do {
-					if (value >= max || flag) {
-						tmp += value / max + '0';
-						value %= max;
-						flag = 1;
-					}
-					max /= 10;
-					if (max == 1)
-						flag = 1;
-				} while (max);
-				result += 2;
-				break;
-			}
-
-			case 5: { //add verb
-				value = _scumm->readVar(READ_LE_UINT16(result));
-				int i;
-				if (!value)
-					break;
-				
-				for (i = 1; i < _scumm->_maxVerbs; i++) {
-					if (value == _scumm->_verbs[i].verbid && !_scumm->_verbs[i].type && !_scumm->_verbs[i].saveid) {
-						char *verb = (char *)_scumm->getResourceAddress(rtVerb, i);
-						if (verb) {
-							tmp += verb;
-						}
-						break;
-					}
-				}
-				result += 2;
-				break;
-			}
-
-			case 6: { // add object or actor name
-				value = _scumm->readVar(READ_LE_UINT16(result));
-				if (!value)
-					break;
-
-				char *name = (char *)_scumm->getObjOrActorName(value);
-				if (name) {
-					tmp += name;
-				}
-				result += 2;
-				break;
-			}
-			case 7: { // add string
-				value = READ_LE_UINT16(result);
-				if (_scumm->_features & GF_AFTER_V6 || _scumm->_gameId == GID_INDY3_256)			
-					value = _scumm->readVar(value);
-
-				if (value) {
-					char *str = (char *)_scumm->getStringAddress(value);
-					if (str) {
-						tmp += str;
-					}
-				}
-				result += 2;
-				break;
-			}
-				// Do these ever occur in the Gui?
-			case 9:
-			case 10:
-			case 12:
-			case 13:
-			case 14:				
-				result += 2;				
-			default:
-				warning("Ignoring unknown resource string of type %d", (int)chr);
-			}
-		} else {
-			if (chr != '@') {
-				tmp += chr;
-			}
+			result += 3;
+		} else if (chr != '@') {
+			tmp += chr;
 		}
 	}
 	return tmp;

Index: resource.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/resource.cpp,v
retrieving revision 1.75
retrieving revision 1.76
diff -u -d -r1.75 -r1.76
--- resource.cpp	8 May 2003 15:48:48 -0000	1.75
+++ resource.cpp	13 May 2003 23:33:01 -0000	1.76
@@ -1627,12 +1627,6 @@
 	debug(1, "Total allocated size=%d, locked=%d(%d)\n", _allocatedSize, lockedSize, lockedNum);
 }
 
-void Scumm::heapClear(int mode) {
-}
-
-void Scumm::unkHeapProc2(int a, int b) {
-}
-
 void Scumm::readMAXS() {
 	if (_features & GF_AFTER_V8) {                    // CMI
 		_fileHandle.seek(50 + 50, SEEK_CUR);            // 176 - 8

Index: script_v5.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v5.cpp,v
retrieving revision 1.75
retrieving revision 1.76
diff -u -d -r1.75 -r1.76
--- script_v5.cpp	10 May 2003 21:49:58 -0000	1.75
+++ script_v5.cpp	13 May 2003 23:33:01 -0000	1.76
@@ -1601,8 +1601,8 @@
 		break;
 
 	case 17:											// clear heap
-		heapClear(0);
-		unkHeapProc2(0, 0);
+		//heapClear(0);
+		//unkHeapProc2(0, 0);
 		break;
 	case 18:											// load charset
 		loadCharset(resid);

Index: script_v6.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v6.cpp,v
retrieving revision 1.109
retrieving revision 1.110
diff -u -d -r1.109 -r1.110
--- script_v6.cpp	12 May 2003 22:08:38 -0000	1.109
+++ script_v6.cpp	13 May 2003 23:33:01 -0000	1.110
@@ -2519,7 +2519,7 @@
 			enqueueObject(args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], 0);
 			break;
 		case 120:
-			// FIXME: isn't it likely that this does the same as the pre-V7 opcode with the same id?
+			// FIXME: isn't it likely that this does the same as the pre-V7 opcode with the same id, i.e. swapPalColors?
 			warning("o6_kernelSetFunctions: stub120(%d,%d)", args[1], args[2]);
 			break;
 		case 124:

Index: scumm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.h,v
retrieving revision 1.185
retrieving revision 1.186
diff -u -d -r1.185 -r1.186
--- scumm.h	13 May 2003 17:51:56 -0000	1.185
+++ scumm.h	13 May 2003 23:33:01 -0000	1.186
@@ -297,10 +297,6 @@
 		int32 localvar[NUM_SCRIPT_SLOT][26];
 	} vm;
 
-	struct {
-		int16 x, y;
-	} mouse;
-
 	// Constructor / Destructor
 	Scumm(GameDetector *detector, OSystem *syst);
 	virtual ~Scumm();
@@ -329,6 +325,7 @@
 	int checkKeyHit();
 	void convertKeysToClicks();
 	int getKeyInput();
+	void clearClickedStatus();
 
 	// Misc utility functions
 	void checkRange(int max, int min, int no, const char *str);
@@ -393,8 +390,14 @@
 	#define VAR(x)	scummVar(x, #x, __FILE__, __LINE__)
 	inline int32& scummVar(byte var, const char *varName, const char *file, int line)
 	{
-		if (var == 0xFF)
+		if (var == 0xFF) {
 			warning("Illegal access to variable %s in file %s, line %d", varName, file, line);
+			// Return a fake memory location, so that at least no innocent variable
+			// gets overwritten.
+			static int32 fake;
+			fake = 0;
+			return fake;
+		}
 		return _scummVars[var];
 	}
 
@@ -428,28 +431,22 @@
 protected:
 	int _keyPressed;
 	uint16 _lastKeyHit;
-	uint16 _mouseButStat;
-	byte _leftBtnPressed, _rightBtnPressed;
 
+	struct {
+		int16 x, y;
+	} mouse;
 	int16 _virtual_mouse_x, _virtual_mouse_y;
-	int _bootParam;
-	bool _dumpScripts, _hexdumpScripts;
-	int _showStack;
-	uint16 _debugMode, _soundCardType;
 
-	/* Not sure where this stuff goes */
-	uint16 _language;
-	void startScene(int room, Actor *a, int b);
-	byte *_objectOwnerTable, *_objectRoomTable, *_objectStateTable;
-	ObjectIDMap _objectIDMap;
-	byte _numObjectsInRoom;
-	int8 _userPut;
-	int _resourceHeaderSize;
-	void clearClickedStatus();
-	void startManiac();
+	uint16 _mouseButStat;
+	byte _leftBtnPressed, _rightBtnPressed;
 
-	/* GUI class */
-	void drawString(int a);
+	int _bootParam;		// The bootparam, to be passed to the script 1, the bootscript
+	
+	// Various options useful for debugging
+	bool _dumpScripts;
+	bool _hexdumpScripts;
+	bool _showStack;
+	uint16 _debugMode;
 
 protected:
 	/* Save/Load class - some of this may be GUI */
@@ -488,9 +485,6 @@
 	uint32 _maxHeapThreshold, _minHeapThreshold;
 	void lock(int type, int i);
 	void unlock(int type, int i);
-	void heapClear(int mode);
-	void unkHeapProc2(int a, int b);
-
 
 	/* Script VM - should be in Script class */
 	uint32 _localScriptList[NUM_LOCALSCRIPT];
@@ -509,6 +503,9 @@
 	void initializeLocals(int slot, int *vars);
 	int	getScriptSlot();
 
+	void startScene(int room, Actor *a, int b);
+	void startManiac();
+
 public:
 	void runScript(int script, int a, int b, int *lvarptr);
 	void stopScriptNr(int script);
@@ -528,9 +525,7 @@
 	void setResult(int result);
 	void push(int a);
 	int pop();
-public:
-	virtual int readVar(uint var);	// FIXME - should be protected, used in scumm/dialogs.cpp
-protected:
+	virtual int readVar(uint var);
 	virtual void writeVar(uint var, int value);
 	void runHook(int i);
 	bool isScriptInUse(int script);
@@ -567,6 +562,7 @@
 	byte _encbyte;
 	File _fileHandle;
 	uint32 _fileOffset;
+	int _resourceHeaderSize;
 	char *_exe_name;	// This is the name we use for opening resource files
 	char *_game_name;	// This is the game the user calls it, so use for saving
 	bool _dynamicRoomOffsets;
@@ -646,6 +642,11 @@
 	int findInventory(int owner, int index);
 	int getInventoryCount(int owner);
 
+protected:
+	byte *_objectOwnerTable, *_objectRoomTable, *_objectStateTable;
+	ObjectIDMap _objectIDMap;
+	byte _numObjectsInRoom;
+
 	void setupRoomObject(ObjectData *od, byte *room, byte *searchptr = NULL);
 	void removeObjectFromRoom(int obj);
 	void loadFlObject(uint object, uint room);
@@ -654,7 +655,9 @@
 	int findLocalObjectSlot();
 	void addObjectToInventory(uint obj, uint room);
 	void fixObjectFlags();
-	bool getClass(int obj, int cls);
+public:
+	bool getClass(int obj, int cls);		// Used in actor.cpp, hence public
+protected:
 	void putClass(int obj, int cls, bool set);
 	int getState(int obj);
 	void putState(int obj, int state);
@@ -674,7 +677,9 @@
 	int whereIsObject(int object);
 	int findObject(int x, int y);
 	void findObjectInRoom(FindObjectInRoom *fo, byte findWhat, uint object, uint room);	
-	int getObjectOrActorXY(int object, int &x, int &y);		 // Object and Actor...
+public:
+	int getObjectOrActorXY(int object, int &x, int &y);	// Used in actor.cpp, hence public
+protected:
 	int getObjActToObjActDist(int a, int b); // Not sure how to handle
 	byte *getObjOrActorName(int obj);		 // these three..
 
@@ -690,7 +695,9 @@
 protected:
 	/* Should be in Verb class */
 	uint16 _verbMouseOver;
-	int _inventoryOffset;	
+	int _inventoryOffset;
+	int8 _userPut;
+
 	void redrawVerbs();
 	void checkExecVerbs();
 	void verbMouseOver(int verb);
@@ -998,12 +1005,13 @@
 	int _charsetBufPos;
 	byte _charsetBuffer[512];
 
-	bool _noSubtitles;	// Skip all subtitles?
+	bool _noSubtitles;	// Whether to skip all subtitles
 
 	void initCharset(int charset);
 	void restoreCharsetBg();
 	bool hasCharsetMask(int x, int y, int x2, int y2);
 	void CHARSET_1();
+	void drawString(int a);
 	void drawDescString(byte *msg);
 	byte *addMessageToStack(byte *msg);
 	void addIntToStack(int var);
@@ -1019,6 +1027,7 @@
 	byte *_messagePtr;
 	int16 _talkDelay;
 	bool _keepText;
+	uint16 _language;
 	bool _existLanguageFile;
 	char *_languageBuffer;
 	struct langIndexNode *_languageIndex;

Index: scummvm.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scummvm.cpp,v
retrieving revision 2.140
retrieving revision 2.141
diff -u -d -r2.140 -r2.141
--- scummvm.cpp	13 May 2003 17:55:24 -0000	2.140
+++ scummvm.cpp	13 May 2003 23:33:01 -0000	2.141
@@ -252,7 +252,6 @@
 	_bootParam = 0;
 	_dumpScripts = false;
 	_debugMode = 0;
-	_soundCardType = 0;
 	_language = 0;
 	_objectOwnerTable = NULL;
 	_objectRoomTable = NULL;
@@ -534,9 +533,9 @@
 	_lastLoadedRoom = 0;
 	_expire_counter = 0;
 	_dynamicRoomOffsets = 0;
-	_shakeEnabled = 0;
-	_hexdumpScripts = 0;
-	_showStack = 0;
+	_shakeEnabled = false;
+	_hexdumpScripts = false;
+	_showStack = false;
 
 	if (_gameId == GID_ZAK256) {	// FmTowns is 320x240
 		_screenWidth = 320;





More information about the Scummvm-git-logs mailing list