[Scummvm-cvs-logs] SF.net SVN: scummvm: [24131] scummvm/trunk/engines/agos

kirben at users.sourceforge.net kirben at users.sourceforge.net
Fri Oct 6 06:51:30 CEST 2006


Revision: 24131
          http://svn.sourceforge.net/scummvm/?rev=24131&view=rev
Author:   kirben
Date:     2006-10-05 21:51:22 -0700 (Thu, 05 Oct 2006)

Log Message:
-----------
Add support for skipping introduction in Elivra 1/2/WW

Modified Paths:
--------------
    scummvm/trunk/engines/agos/agos.cpp
    scummvm/trunk/engines/agos/agos.h
    scummvm/trunk/engines/agos/debug.h
    scummvm/trunk/engines/agos/items.cpp
    scummvm/trunk/engines/agos/rooms.cpp

Modified: scummvm/trunk/engines/agos/agos.cpp
===================================================================
--- scummvm/trunk/engines/agos/agos.cpp	2006-10-06 00:36:13 UTC (rev 24130)
+++ scummvm/trunk/engines/agos/agos.cpp	2006-10-06 04:51:22 UTC (rev 24131)
@@ -1768,9 +1768,21 @@
 			}
 		}
 		if (_exitCutscene) {
-			if (getBitFlag(9)) {
-				endCutscene();
-				break;
+			if (getGameType() == GType_ELVIRA) {
+				if (_variableArray[105] == 0) {
+					_variableArray[105] = 255;
+					break;
+				}
+			} else if (getGameType() == GType_ELVIRA2 || getGameType() == GType_WW) {
+				if (_vgaWaitFor == 51) {
+					setBitFlag(244, 1);
+					break;
+				}
+			} else {
+				if (getBitFlag(9)) {
+					endCutscene();
+					break;
+				}
 			}
 		}
 		processSpecialKeys();

Modified: scummvm/trunk/engines/agos/agos.h
===================================================================
--- scummvm/trunk/engines/agos/agos.h	2006-10-06 00:36:13 UTC (rev 24130)
+++ scummvm/trunk/engines/agos/agos.h	2006-10-06 04:51:22 UTC (rev 24131)
@@ -1042,6 +1042,8 @@
 	void oww_textMenu();
 	void oww_ifDoorOpen();
 	void oww_opcode184();
+	void oww_opcode185();
+	void oww_opcode186();
 	void oww_opcode187();
 
 	// Opcodes, Simon 1 only

Modified: scummvm/trunk/engines/agos/debug.h
===================================================================
--- scummvm/trunk/engines/agos/debug.h	2006-10-06 00:36:13 UTC (rev 24130)
+++ scummvm/trunk/engines/agos/debug.h	2006-10-06 04:51:22 UTC (rev 24131)
@@ -245,12 +245,12 @@
 	/* 172 */
 	NULL,
 	NULL,
-	NULL,
-	"|LOCK_ZONES",
+	"W|UNK_174",
+	"|getDollar2",
 	/* 176 */
-	"|UNLOCK_ZONES",
-	"BBI|SCREEN_TEXT_POBJ",
-	"WWBB|GETPATHPOSN",
+	"IWBB|UNK_176",
+	"B|UNK_177",
+	"B|UNK_178",
 	"IWWJ|IS_ADJ_NOUN",
 	/* 180 */
 	"B|SET_BIT2",
@@ -258,10 +258,14 @@
 	"BJ|IS_BIT2_CLEAR",
 	"BJ|IS_BIT2_SET",
 	/* 184 */
-	"W|UNLOAD_ZONE",
-	"W|LOAD_SOUND_FILES",
-	"|UNFREEZE_ZONES",
-	"|FADE_TO_BLACK",
+	"T|UNK_184",
+	"T|UNK_185",
+	"B|UNK_186",
+	"|UNK_187",
+	/* 188 */
+	"I|UNK_188",
+	"|UNK_189",
+	"|UNK_190",
 };
 
 static const char *const simon1dos_opcode_name_table[256] = {

Modified: scummvm/trunk/engines/agos/items.cpp
===================================================================
--- scummvm/trunk/engines/agos/items.cpp	2006-10-06 00:36:13 UTC (rev 24130)
+++ scummvm/trunk/engines/agos/items.cpp	2006-10-06 04:51:22 UTC (rev 24131)
@@ -379,6 +379,8 @@
 	op[182] = &AGOSEngine::o_b2Zero;
 	op[183] = &AGOSEngine::o_b2NotZero;
 	op[184] = &AGOSEngine::oww_opcode184;
+	op[185] = &AGOSEngine::oww_opcode185;
+	op[186] = &AGOSEngine::oww_opcode186;
 	op[187] = &AGOSEngine::oww_opcode187;
 
 	// Code difference, check if triggered
@@ -399,8 +401,6 @@
 	op[176] = NULL;
 	op[177] = NULL;
 	op[178] = NULL;
-	op[185] = NULL;
-	op[186] = NULL;
 	op[188] = NULL;
 	op[189] = NULL;
 	op[190] = NULL;
@@ -1106,6 +1106,10 @@
 	uint vga_res = getVarOrWord();
 
 	_lockWord |= 0x80;
+
+	vc27_resetSprite();
+	vc29_stopAllSounds();
+
 	loadZone(vga_res);
 	_lockWord &= ~0x80;
 }
@@ -1870,9 +1874,9 @@
 	int16 f = getVarOrByte();
 
 	if (f == 1)
-		_subjectItem = _itemArrayPtr[getExitOf(i, d)];
+		_subjectItem = derefItem(getExitOf(i, d));
 	else
-		_objectItem = _itemArrayPtr[getExitOf(i, d)];
+		_objectItem = derefItem(getExitOf(i, d));
 }
 
 void AGOSEngine::oww_menu() {
@@ -1901,6 +1905,14 @@
 	printf("%s\n", getStringPtrByID(getNextStringID()));
 }
 
+void AGOSEngine::oww_opcode185() {
+	printf("%s\n", getStringPtrByID(getNextStringID()));
+}
+
+void AGOSEngine::oww_opcode186() {
+	printf("%s\n", getStringPtrByID(_longText[getVarOrByte()]));
+}
+
 void AGOSEngine::oww_opcode187() {
 }
 

Modified: scummvm/trunk/engines/agos/rooms.cpp
===================================================================
--- scummvm/trunk/engines/agos/rooms.cpp	2006-10-06 00:36:13 UTC (rev 24130)
+++ scummvm/trunk/engines/agos/rooms.cpp	2006-10-06 04:51:22 UTC (rev 24131)
@@ -245,8 +245,12 @@
 				}
 
 				while ((i = in.readUint16BE()) != 0) {
-					_itemArrayPtr[i] = (Item *)allocateItem(sizeof(Item));
-					readItemFromGamePc(&in, _itemArrayPtr[i]);
+					_itemArrayPtr[i + 1] = (Item *)allocateItem(sizeof(Item));
+					readItemFromGamePc(&in, _itemArrayPtr[i + 1]);
+
+					Item *tmp = _itemArrayPtr[i + 1];
+					tmp->child = 0;
+					tmp->parent = 0;
 				}
 				in.close();
 


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list