[Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.520,2.521 room.cpp,1.20,1.21 script_c64.cpp,2.17,2.18 scumm.cpp,1.576,1.577 scumm.h,1.639,1.640 verbs.cpp,1.140,1.141

kirben kirben at users.sourceforge.net
Wed Sep 14 01:21:22 CEST 2005


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

Modified Files:
	intern.h room.cpp script_c64.cpp scumm.cpp scumm.h verbs.cpp 
Log Message:

Selection screen partly working in C64 maniac.


Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.520
retrieving revision 2.521
diff -u -d -r2.520 -r2.521
--- intern.h	14 Sep 2005 04:18:29 -0000	2.520
+++ intern.h	14 Sep 2005 08:20:37 -0000	2.521
@@ -408,7 +408,16 @@
 	virtual int getVarOrDirectWord(byte mask);
 	virtual uint fetchScriptWord();
 
+	virtual void ifStateCommon(byte type);
+	virtual void ifNotStateCommon(byte type);
+	virtual void setStateCommon(byte type);
+	virtual void clearStateCommon(byte type);
+
+	int getObjectFlag();
+
 	/* Version C64 script opcodes */
+	void o_setState08();
+	void o_clearState08();
 	void o_stopCurrentScript();
 	void o_loadSound();
 	void o_animateActor();

Index: room.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/room.cpp,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -d -r1.20 -r1.21
--- room.cpp	30 Jul 2005 21:11:27 -0000	1.20
+++ room.cpp	14 Sep 2005 08:20:37 -0000	1.21
@@ -107,6 +107,7 @@
 
 	res.increaseResourceCounter();
 
+	_activeObject = 0;
 	_currentRoom = room;
 	VAR(VAR_ROOM) = room;
 

Index: script_c64.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_c64.cpp,v
retrieving revision 2.17
retrieving revision 2.18
diff -u -d -r2.17 -r2.18
--- script_c64.cpp	6 Sep 2005 15:50:55 -0000	2.17
+++ script_c64.cpp	14 Sep 2005 08:20:37 -0000	2.18
@@ -61,10 +61,10 @@
 		OPCODE(o2_panCameraTo),
 		OPCODE(o_unknown13),
 		/* 14 */
-		OPCODE(o5_print),
+		OPCODE(o_print_c64),
 		OPCODE(o2_actorFromPos),
 		OPCODE(o5_getRandomNr),
-		OPCODE(o2_clearState08),
+		OPCODE(o_clearState08),
 		/* 18 */
 		OPCODE(o_jumpRelative),
 		OPCODE(o_stopCurrentScript),
@@ -144,7 +144,7 @@
 		OPCODE(o5_setObjectName),
 		OPCODE(o2_actorFromPos),
 		OPCODE(o5_getActorMoving),
-		OPCODE(o2_clearState08),
+		OPCODE(o_clearState08),
 		/* 58 */
 		OPCODE(o_beginOverride),
 		OPCODE(o_stopCurrentScript),
@@ -182,7 +182,7 @@
 		OPCODE(o5_getObjectOwner),
 		/* 74 */
 		OPCODE(o5_getDist),
-		OPCODE(o5_printEgo),
+		OPCODE(o_printEgo_c64),
 		OPCODE(o2_walkActorToObject),
 		OPCODE(o2_clearState04),
 		/* 78 */
@@ -224,7 +224,7 @@
 		OPCODE(o5_print),
 		OPCODE(o2_actorFromPos),
 		OPCODE(o_stopCurrentScript),
-		OPCODE(o2_setState08),
+		OPCODE(o_setState08),
 		/* 98 */
 		OPCODE(o2_restart),
 		OPCODE(o_stopCurrentScript),
@@ -304,7 +304,7 @@
 		OPCODE(o5_setObjectName),
 		OPCODE(o2_actorFromPos),
 		OPCODE(o5_getActorMoving),
-		OPCODE(o2_setState08),
+		OPCODE(o_setState08),
 		/* D8 */
 		OPCODE(o_stopCurrentScript),
 		OPCODE(o_stopCurrentScript),
@@ -383,6 +383,58 @@
 	return _opcodesC64[i].desc;
 }
 
+int ScummEngine_c64::getObjectFlag() {
+	if (_opcode & 0x40)
+		return _activeObject;
+	return fetchScriptByte();
+}
+
+void ScummEngine_c64::setStateCommon(byte type) {
+	int obj = getObjectFlag();
+	putState(obj, getState(obj) | type);
+}
+
+void ScummEngine_c64::clearStateCommon(byte type) {
+	int obj = getObjectFlag();
+	putState(obj, getState(obj) & ~type);
+}
+
+void ScummEngine_c64::ifStateCommon(byte type) {
+	int obj = getObjectFlag();
+
+	if ((getState(obj) & type) == 0) {
+		o_jumpRelative();
+	} else {
+		fetchScriptByte();
+		fetchScriptByte();
+	}
+}
+
+void ScummEngine_c64::ifNotStateCommon(byte type) {
+	int obj = getObjectFlag();
+
+	if ((getState(obj) & type) != 0) {
+		o_jumpRelative();
+	} else {
+		fetchScriptByte();
+		fetchScriptByte();
+	}
+}
+
+void ScummEngine_c64::o_setState08() {
+	int obj = getObjectFlag();
+	putState(obj, getState(obj) | 0x08);
+	markObjectRectAsDirty(obj);
+	clearDrawObjectQueue();
+}
+
+void ScummEngine_c64::o_clearState08() {
+	int obj = getObjectFlag();
+	putState(obj, getState(obj) & ~0x08);
+	markObjectRectAsDirty(obj);
+	clearDrawObjectQueue();
+}
+
 void ScummEngine_c64::o_stopCurrentScript() {
 	int script;
 
@@ -535,7 +587,7 @@
 }
 
 void ScummEngine_c64::o_print_c64() {
-	_actorToPrintStrFor = getVarOrDirectByte(PARAM_1);
+	_actorToPrintStrFor = fetchScriptByte();
 	decodeParseString();
 	warning("STUB: o_print_c64()");
 }

Index: scumm.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.cpp,v
retrieving revision 1.576
retrieving revision 1.577
diff -u -d -r1.576 -r1.577
--- scumm.cpp	13 Sep 2005 23:11:44 -0000	1.576
+++ scumm.cpp	14 Sep 2005 08:20:37 -0000	1.577
@@ -985,6 +985,7 @@
 	_numObjectsInRoom = 0;
 	_userPut = 0;
 	_userState = 0;
+	_activeObject = 0;
 	_resourceHeaderSize = 8;
 	_saveLoadFlag = 0;
 	_saveLoadSlot = 0;

Index: scumm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.h,v
retrieving revision 1.639
retrieving revision 1.640
diff -u -d -r1.639 -r1.640
--- scumm.h	30 Jul 2005 21:11:29 -0000	1.639
+++ scumm.h	14 Sep 2005 08:20:37 -0000	1.640
@@ -810,6 +810,8 @@
 	int8 _userPut;
 	uint16 _userState;
 
+	int _activeObject;
+
 	virtual void handleMouseOver(bool updateInventory);
 
 	void redrawVerbs();

Index: verbs.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/verbs.cpp,v
retrieving revision 1.140
retrieving revision 1.141
diff -u -d -r1.140 -r1.141
--- verbs.cpp	30 Jul 2005 21:11:32 -0000	1.140
+++ verbs.cpp	14 Sep 2005 08:20:37 -0000	1.141
@@ -385,6 +385,20 @@
 	if (VAR_MOUSE_STATE != 0xFF)
 		VAR(VAR_MOUSE_STATE) = _mouseAndKeyboardStat;
 
+	if (_platform == Common::kPlatformC64 && _gameId == GID_MANIAC) {
+		// TODO
+
+		int object = findObject(_mouse.x, _mouse.y);
+		if (object) {
+			_activeObject = object;
+			runObjectScript(object, 15, false, false, NULL);
+		} else {
+
+		}
+
+		return;
+	}
+
 	if (_mouseAndKeyboardStat < MBS_MAX_KEY) {
 		/* Check keypresses */
 		vs = &_verbs[1];





More information about the Scummvm-git-logs mailing list