[Scummvm-cvs-logs] CVS: scummvm/scumm actor.h,1.11,1.12 debugger.cpp,1.14,1.15 intern.h,2.30,2.31 resource.cpp,1.53,1.54 script_v8.cpp,2.128,2.129 scummvm.cpp,2.45,2.46

James Brown ender at users.sourceforge.net
Sat Jan 25 22:18:01 CET 2003


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

Modified Files:
	actor.h debugger.cpp intern.h resource.cpp script_v8.cpp 
	scummvm.cpp 
Log Message:
LCA03 sync: Modified version of the untrap patch, debugger 
savegame/loadgame changes, attempts at making the ComI save/load screen 
(F1) work. The savegame part of the screen does not work due to a crash, 
the load part SHOULD... but something resets the saveload flags before 
they are processed (help! :)


Index: actor.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/actor.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- actor.h	6 Jan 2003 16:03:59 -0000	1.11
+++ actor.h	26 Jan 2003 06:17:24 -0000	1.12
@@ -127,9 +127,9 @@
 
 	void setBox(int box);
 	int updateActorDirection(bool is_walking);
-	void adjustActorPos();
 
 public:
+	void adjustActorPos();
 	AdjustBoxResult adjustXYToBeInBox(int dstX, int dstY, int pathfrom);
 
 	void setDirection(int direction);

Index: debugger.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/debugger.cpp,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- debugger.cpp	18 Jan 2003 16:26:53 -0000	1.14
+++ debugger.cpp	26 Jan 2003 06:17:25 -0000	1.15
@@ -284,25 +284,25 @@
 		_s->_saveLoadCompatible = false;
 		
 		_detach_now = true;
-	} else {
-		Debug_Printf("Syntax: savegame <slotnum>\n");
+		return false;
 	}
-	return false;
+
+	Debug_Printf("Syntax: loadgame <slotnum>\n");
+	return true;
 }
 	
 bool ScummDebugger::Cmd_SaveGame(int argc, const char **argv) {
-	if (argc > 1) {
+	if (argc > 2) {
 		int slot = atoi(argv[1]);
-		
+
+		strcpy(_s->_saveLoadName, argv[2]);
 		_s->_saveLoadSlot = slot;
 		_s->_saveLoadFlag = 1;
 		_s->_saveLoadCompatible = false;
-		
-		_detach_now = true;
-	} else {
-		Debug_Printf("Syntax: savegame <slotnum>\n");
-	}
-	return false;
+	} else
+		Debug_Printf("Syntax: savegame <slotnum> <name>\n");
+
+	return true;
 }
 
 bool ScummDebugger::Cmd_Actor(int argc, const char **argv) {

Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.30
retrieving revision 2.31
diff -u -d -r2.30 -r2.31
--- intern.h	6 Jan 2003 13:41:29 -0000	2.30
+++ intern.h	26 Jan 2003 06:17:25 -0000	2.31
@@ -416,6 +416,7 @@
 	void o8_blastText();
 
 	void o8_cursorCommand();
+	void o8_createBoxMatrix();
 	void o8_resourceRoutines();
 	void o8_roomOps();
 	void o8_actorOps();

Index: resource.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/resource.cpp,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -d -r1.53 -r1.54
--- resource.cpp	19 Jan 2003 04:17:13 -0000	1.53
+++ resource.cpp	26 Jan 2003 06:17:25 -0000	1.54
@@ -1143,7 +1143,7 @@
 {
 	byte *b = getResourceAddress(rtString, i);
 	if (!b)
-		return b;
+		return NULL;
 
 	if (_features & GF_NEW_OPCODES)
 		return ((ArrayHeader *)b)->data;

Index: script_v8.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v8.cpp,v
retrieving revision 2.128
retrieving revision 2.129
diff -u -d -r2.128 -r2.129
--- script_v8.cpp	25 Jan 2003 12:13:41 -0000	2.128
+++ script_v8.cpp	26 Jan 2003 06:17:25 -0000	2.129
@@ -249,7 +249,7 @@
 		OPCODE(o6_pickupObject),
 		OPCODE(o6_setBoxFlags),
 		/* A8 */
-		OPCODE(o6_createBoxMatrix),
+		OPCODE(o8_createBoxMatrix),
 		OPCODE(o6_invalid),
 		OPCODE(o8_resourceRoutines),
 		OPCODE(o8_roomOps),
@@ -865,6 +865,20 @@
 	_vars[VAR_USERPUT] = _userPut;
 }
 
+void Scumm_v8::o8_createBoxMatrix()
+{
+	int i;
+	Actor *a;
+
+	createBoxMatrix();
+
+	for(i = 1; i < NUM_ACTORS; i++) {
+		a = &_actors[i];
+		if (a && a->isInCurrentRoom())
+			a->adjustActorPos();
+	}
+}
+
 void Scumm_v8::o8_resourceRoutines()
 {
 	// TODO
@@ -1457,15 +1471,35 @@
 	case 24:	// clearTextQueue
 		warning("o8_kernelSetFunctions: clearTextQueue()");
 		break;
-	case 25:	// saveGameWrite
-		warning("o8_kernelSetFunctions: saveGameWrite(%d, %d)", args[1], args[2]);
+	case 25: {	// saveGameReadName
+		SaveFileManager *mgr = _system->get_savefile_manager();
+		char *address = (char*)getStringAddress(args[2]);
+		char name[30];
+
+		if (!address) {
+			warning("o8_kernelSetFunctions: saveGameReadName failed finding slot string %d", args[2]);
+			break;
+		}
+		getSavegameName(args[1] - 1, name, mgr);
+		if (strlen(name) > 0 && strlen(name) < 30)
+			strcpy(address, name);
 		break;
-	case 26:	// saveGameRead
-		warning("o8_kernelSetFunctions: saveGameRead(%d, %d)", args[1], args[2]);
+	}
+	case 26: {	// saveGame?
+		//SaveFileManager *mgr = _system->get_savefile_manager();
+		//char *address = (char*)getStringAddress(args[2]);
+		char address[30];
+		warning("o8_kernelSetFunctions: saveGame?(%d, %s)", args[1], address);
 		break;
-	case 27:	// saveGameReadName
-		warning("o8_kernelSetFunctions: saveGameReadName(%d)", args[1]);
+	}
+	case 27: {	// FIXME: This doesn't work
+			// saveGameRead
+		_saveLoadSlot = 0;
+		_saveLoadFlag = 2;
+		_saveLoadCompatible = false;
+		warning("Sgl: %d\n", args[1]);
 		break;
+	}
 	case 28:	// saveGameStampScreenshot
 		warning("o8_kernelSetFunctions: saveGameStampScreenshot(%d, %d, %d, %d, %d, %d)", args[1], args[2], args[3], args[4], args[5], args[6]);
 		break;
@@ -1686,14 +1720,18 @@
 
 void Scumm_v8::o8_getStringWidth()
 {
+	char temp[1024];
 	int charset = pop();
 	int len = resStrLen(_scriptPointer);
 	int oldID = _charset->getCurID(); 
 	int width;
 	
+	// Parse the string to get rid of substitution codes
+	strcpy(temp, (char*)_scriptPointer);
+	addMessageToStack((byte*)&temp);
 	// Temporary set the specified charset id
 	_charset->setCurID(charset);
-	width = _charset->getStringWidth(0, _scriptPointer);
+	width = _charset->getStringWidth(0, (byte*)temp);
 	_charset->setCurID(oldID);
 	
 	push(width);

Index: scummvm.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scummvm.cpp,v
retrieving revision 2.45
retrieving revision 2.46
diff -u -d -r2.45 -r2.46
--- scummvm.cpp	24 Jan 2003 06:41:10 -0000	2.45
+++ scummvm.cpp	26 Jan 2003 06:17:25 -0000	2.46
@@ -1,6 +1,6 @@
 /* ScummVM - Scumm Interpreter
  * Copyright (C) 2001  Ludvig Strigeus
- * wCopyright (C) 2001/2002 The ScummVM project
+ * Copyright (C) 2001-2003 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
@@ -461,7 +461,7 @@
 	_vars[VAR_GAME_LOADED] = 0;
 	if (_saveLoadFlag) {
 		bool success;
-		const char *errMsg = "Succesfully saved game state to file:\n\n%s";
+		const char *errMsg = "Succesfully saved/loaded game state in file:\n\n%s";
 		char filename[256];
 
 		if (_saveLoadFlag == 1) {





More information about the Scummvm-git-logs mailing list