[Scummvm-cvs-logs] scummvm master -> 5f81b52890c1a0a25d539239e1b7625d17db238b

sev- sev at scummvm.org
Sat Apr 30 01:09:16 CEST 2016


This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
7406559a1f SCUMM HE: More structure variable mapping
91a91309bf SCUMM HE: Renamed logic/moonbase.cpp to moonbase_logic.cpp
73b8dfe5ce SCUMM HE: Initial code for Moonbase-specific class
5f81b52890 SCUMM HE: Enhanced drawWizImage call arguments


Commit: 7406559a1f7fbe4afd5fc1b490bcfb5364b5c0b4
    https://github.com/scummvm/scummvm/commit/7406559a1f7fbe4afd5fc1b490bcfb5364b5c0b4
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-04-29T21:09:19+02:00

Commit Message:
SCUMM HE: More structure variable mapping

Changed paths:
    engines/scumm/he/sprite_he.cpp
    engines/scumm/he/sprite_he.h
    engines/scumm/he/wiz_he.cpp
    engines/scumm/he/wiz_he.h



diff --git a/engines/scumm/he/sprite_he.cpp b/engines/scumm/he/sprite_he.cpp
index 56c116e..ecae484 100644
--- a/engines/scumm/he/sprite_he.cpp
+++ b/engines/scumm/he/sprite_he.cpp
@@ -386,7 +386,7 @@ int Sprite::getSpriteGeneralProperty(int spriteId, int type) {
 	case 0x7B:
 		return _spriteTable[spriteId].imgFlags;
 	case 0x7D:
-		return _spriteTable[spriteId].field_90;
+		return _spriteTable[spriteId].conditionBits;
 	case 0x7E:
 		return _spriteTable[spriteId].animProgress;
 	default:
@@ -758,7 +758,7 @@ void Sprite::setSpriteGeneralProperty(int spriteId, int type, int value) {
 		_spriteTable[spriteId].flags |= kSFChanged | kSFNeedRedraw;
 		break;
 	case 0x7D:
-		_spriteTable[spriteId].field_90 = value;
+		_spriteTable[spriteId].conditionBits = value;
 		_spriteTable[spriteId].flags |= kSFChanged | kSFNeedRedraw;
 		break;
 	case 0x7E:
@@ -799,7 +799,7 @@ void Sprite::resetSprite(int spriteId) {
 	_spriteTable[spriteId].priority = 0;
 	_spriteTable[spriteId].field_84 = 0;
 	_spriteTable[spriteId].imgFlags = 0;
-	_spriteTable[spriteId].field_90 = 0;
+	_spriteTable[spriteId].conditionBits = 0;
 
 	if (_vm->_game.heversion >= 100) {
 		_spriteTable[spriteId].flags &= ~kSFMarkDirty;
@@ -1292,7 +1292,7 @@ void Sprite::processImages(bool arg) {
 
 		wiz.spriteId = spi->id;
 		wiz.spriteGroup = spi->group;
-		wiz.field_23EA = spi->field_90;
+		wiz.conditionBits = spi->conditionBits;
 		spi->curImageState = wiz.img.state = imageState;
 		spi->curImage = wiz.img.resNum = image;
 		wiz.processFlags = kWPFNewState | kWPFSetPos;
@@ -1426,7 +1426,7 @@ void Sprite::saveOrLoadSpriteData(Serializer *s) {
 		MKLINE(SpriteInfo, field_84, sleInt32, VER(48)),
 		MKLINE(SpriteInfo, classFlags, sleInt32, VER(48)),
 		MKLINE(SpriteInfo, imgFlags, sleInt32, VER(48)),
-		MKLINE(SpriteInfo, field_90, sleInt32, VER(48)),
+		MKLINE(SpriteInfo, conditionBits, sleInt32, VER(48)),
 		MKEND()
 	};
 
diff --git a/engines/scumm/he/sprite_he.h b/engines/scumm/he/sprite_he.h
index e31ccbf..b1a7641 100644
--- a/engines/scumm/he/sprite_he.h
+++ b/engines/scumm/he/sprite_he.h
@@ -79,7 +79,7 @@ struct SpriteInfo {
 	int32 field_84;
 	int32 classFlags;
 	int32 imgFlags;
-	int32 field_90;
+	int32 conditionBits;
 };
 
 struct SpriteGroup {
diff --git a/engines/scumm/he/wiz_he.cpp b/engines/scumm/he/wiz_he.cpp
index ac4be36..5cd07f2 100644
--- a/engines/scumm/he/wiz_he.cpp
+++ b/engines/scumm/he/wiz_he.cpp
@@ -2074,9 +2074,9 @@ void Wiz::displayWizComplexImage(const WizParameters *params) {
 		shadow = params->img.shadow;
 	}
 	int zbuffer = 0;
-	if (params->processFlags & 0x200000) {
+	if (params->processFlags & kWPFZBuffer) {
 		zbuffer = params->img.zbuffer;
-		debug(0, "displayWizComplexImage() unhandled flag 0x200000");
+		debug(0, "displayWizComplexImage() unhandled flag kWPFZBuffer");
 	}
 	const Common::Rect *r = NULL;
 	if (params->processFlags & kWPFClipBox) {
diff --git a/engines/scumm/he/wiz_he.h b/engines/scumm/he/wiz_he.h
index 02e101b..82a2c3e 100644
--- a/engines/scumm/he/wiz_he.h
+++ b/engines/scumm/he/wiz_he.h
@@ -102,10 +102,10 @@ struct WizParameters {
 	FontProperties fontProperties;
 	EllipseProperties ellipseProperties;
 	Common::Rect box2;
-	int field_23DE;
+	int blendFlags;
 	int spriteId;
 	int spriteGroup;
-	int field_23EA;
+	int conditionBits;
 	WizImage img;
 };
 
@@ -138,7 +138,8 @@ enum WizProcessFlags {
 	kWPFFillColor = 0x20000,
 	kWPFClipBox2 = 0x40000,
 	kWPFMaskImg = 0x80000,
-	kWPFParams = 0x100000
+	kWPFParams = 0x100000,
+	kWPFZBuffer = 0x200000
 };
 
 enum {


Commit: 91a91309bf80cefc7730e5bec7f948a111428152
    https://github.com/scummvm/scummvm/commit/91a91309bf80cefc7730e5bec7f948a111428152
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-04-29T21:42:34+02:00

Commit Message:
SCUMM HE: Renamed logic/moonbase.cpp to moonbase_logic.cpp

Changed paths:
  A engines/scumm/he/logic/moonbase_logic.cpp
  R engines/scumm/he/logic/moonbase.cpp
    engines/scumm/module.mk



diff --git a/engines/scumm/he/logic/moonbase.cpp b/engines/scumm/he/logic/moonbase.cpp
deleted file mode 100644
index 3fcf30d..0000000
--- a/engines/scumm/he/logic/moonbase.cpp
+++ /dev/null
@@ -1,189 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "scumm/he/intern_he.h"
-#include "scumm/he/logic_he.h"
-
-namespace Scumm {
-
-/**
- * Logic code for:
- *     Moonbase Commander
- */
-class LogicHEmoonbase : public LogicHE {
-public:
-	LogicHEmoonbase(ScummEngine_v90he *vm) : LogicHE(vm) {}
-
-	int versionID();
-
-	int32 dispatch(int op, int numArgs, int32 *args);
-
-private:
-	void op_create_multi_state_wiz(int op, int numArgs, int32 *args);
-	void op_load_multi_channel_wiz(int op, int numArgs, int32 *args);
-	void op_wiz_from_multi_channel_wiz(int op, int numArgs, int32 *args);
-	void op_dos_command(int op, int numArgs, int32 *args);
-	void op_set_fow_sentinel(int op, int numArgs, int32 *args);
-	void op_set_fow_information(int op, int numArgs, int32 *args);
-	void op_set_fow_image(int op, int numArgs, int32 *args);
-	void op_ai_test_kludge(int op, int numArgs, int32 *args);
-	void op_ai_master_control_program(int op, int numArgs, int32 *args);
-	void op_ai_reset(int op, int numArgs, int32 *args);
-	void op_ai_set_type(int op, int numArgs, int32 *args);
-	void op_ai_clean_up(int op, int numArgs, int32 *args);
-};
-
-int LogicHEmoonbase::versionID() {
-	if (_vm->_game.features & GF_DEMO)
-		return -100;
-	else if (strcmp(_vm->_game.variant, "1.1") == 0)
-		return 110;
-	else
-		return 100;
-}
-
-#define OP_CREATE_MULTI_STATE_WIZ		100
-#define OP_LOAD_MULTI_CHANNEL_WIZ		101
-#define OP_WIZ_FROM_MULTI_CHANNEL_WIZ	102
-#define OP_DOS_COMMAND					103
-#define OP_SET_FOW_SENTINEL				104
-#define OP_SET_FOW_INFORMATION			105
-#define OP_SET_FOW_IMAGE				106
-
-#define OP_AI_TEST_KLUDGE				10000
-#define OP_AI_MASTER_CONTROL_PROGRAM	10001
-#define OP_AI_RESET						10002
-#define OP_AI_SET_TYPE					10003
-#define OP_AI_CLEAN_UP					10004
-
-int32 LogicHEmoonbase::dispatch(int op, int numArgs, int32 *args) {
-	switch (op) {
-	case OP_CREATE_MULTI_STATE_WIZ:
-		op_create_multi_state_wiz(op, numArgs, args);
-		break;
-	case OP_LOAD_MULTI_CHANNEL_WIZ:
-		op_load_multi_channel_wiz(op, numArgs, args);
-		break;
-	case OP_WIZ_FROM_MULTI_CHANNEL_WIZ:
-		op_wiz_from_multi_channel_wiz(op, numArgs, args);
-		break;
-	case OP_DOS_COMMAND:
-		op_dos_command(op, numArgs, args);
-		break;
-	case OP_SET_FOW_SENTINEL:
-		op_set_fow_sentinel(op, numArgs, args);
-		break;
-	case OP_SET_FOW_INFORMATION:
-		op_set_fow_information(op, numArgs, args);
-		break;
-	case OP_SET_FOW_IMAGE:
-		op_set_fow_image(op, numArgs, args);
-		break;
-
-	case OP_AI_TEST_KLUDGE:
-		op_ai_test_kludge(op, numArgs, args);
-		break;
-	case OP_AI_MASTER_CONTROL_PROGRAM:
-		op_ai_master_control_program(op, numArgs, args);
-		break;
-	case OP_AI_RESET:
-		op_ai_reset(op, numArgs, args);
-		break;
-	case OP_AI_SET_TYPE:
-		op_ai_set_type(op, numArgs, args);
-		break;
-	case OP_AI_CLEAN_UP:
-		op_ai_clean_up(op, numArgs, args);
-		break;
-
-	default:
-		LogicHE::dispatch(op, numArgs, args);
-	}
-
-	return 0;
-}
-
-void LogicHEmoonbase::op_create_multi_state_wiz(int op, int numArgs, int32 *args) {
-	warning("STUB: op_create_multi_state_wiz()");
-	LogicHE::dispatch(op, numArgs, args);
-}
-
-void LogicHEmoonbase::op_load_multi_channel_wiz(int op, int numArgs, int32 *args) {
-	warning("STUB: op_load_multi_channel_wiz()");
-	LogicHE::dispatch(op, numArgs, args);
-}
-
-void LogicHEmoonbase::op_wiz_from_multi_channel_wiz(int op, int numArgs, int32 *args) {
-	warning("STUB: op_wiz_from_multi_channel_wiz()");
-	LogicHE::dispatch(op, numArgs, args);
-}
-
-void LogicHEmoonbase::op_dos_command(int op, int numArgs, int32 *args) {
-	warning("STUB: op_dos_command()");
-	LogicHE::dispatch(op, numArgs, args);
-}
-
-void LogicHEmoonbase::op_set_fow_sentinel(int op, int numArgs, int32 *args) {
-	warning("STUB: op_set_fow_sentinel()");
-	LogicHE::dispatch(op, numArgs, args);
-}
-
-void LogicHEmoonbase::op_set_fow_information(int op, int numArgs, int32 *args) {
-	warning("STUB: op_set_fow_information()");
-	LogicHE::dispatch(op, numArgs, args);
-}
-
-void LogicHEmoonbase::op_set_fow_image(int op, int numArgs, int32 *args) {
-	warning("STUB: op_set_fow_image()");
-	LogicHE::dispatch(op, numArgs, args);
-}
-
-void LogicHEmoonbase::op_ai_test_kludge(int op, int numArgs, int32 *args) {
-	warning("STUB: op_ai_test_kludge()");
-	LogicHE::dispatch(op, numArgs, args);
-}
-
-void LogicHEmoonbase::op_ai_master_control_program(int op, int numArgs, int32 *args) {
-	warning("STUB: op_ai_master_control_program()");
-	LogicHE::dispatch(op, numArgs, args);
-}
-
-void LogicHEmoonbase::op_ai_reset(int op, int numArgs, int32 *args) {
-	warning("STUB: op_ai_reset)");
-	LogicHE::dispatch(op, numArgs, args);
-}
-
-void LogicHEmoonbase::op_ai_set_type(int op, int numArgs, int32 *args) {
-	warning("STUB: op_ai_set_type()");
-	LogicHE::dispatch(op, numArgs, args);
-}
-
-void LogicHEmoonbase::op_ai_clean_up(int op, int numArgs, int32 *args) {
-	warning("STUB: op_ai_clean_up()");
-	LogicHE::dispatch(op, numArgs, args);
-}
-
-LogicHE *makeLogicHEmoonbase(ScummEngine_v90he *vm) {
-	return new LogicHEmoonbase(vm);
-}
-
-} // End of namespace Scumm
diff --git a/engines/scumm/he/logic/moonbase_logic.cpp b/engines/scumm/he/logic/moonbase_logic.cpp
new file mode 100644
index 0000000..3fcf30d
--- /dev/null
+++ b/engines/scumm/he/logic/moonbase_logic.cpp
@@ -0,0 +1,189 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "scumm/he/intern_he.h"
+#include "scumm/he/logic_he.h"
+
+namespace Scumm {
+
+/**
+ * Logic code for:
+ *     Moonbase Commander
+ */
+class LogicHEmoonbase : public LogicHE {
+public:
+	LogicHEmoonbase(ScummEngine_v90he *vm) : LogicHE(vm) {}
+
+	int versionID();
+
+	int32 dispatch(int op, int numArgs, int32 *args);
+
+private:
+	void op_create_multi_state_wiz(int op, int numArgs, int32 *args);
+	void op_load_multi_channel_wiz(int op, int numArgs, int32 *args);
+	void op_wiz_from_multi_channel_wiz(int op, int numArgs, int32 *args);
+	void op_dos_command(int op, int numArgs, int32 *args);
+	void op_set_fow_sentinel(int op, int numArgs, int32 *args);
+	void op_set_fow_information(int op, int numArgs, int32 *args);
+	void op_set_fow_image(int op, int numArgs, int32 *args);
+	void op_ai_test_kludge(int op, int numArgs, int32 *args);
+	void op_ai_master_control_program(int op, int numArgs, int32 *args);
+	void op_ai_reset(int op, int numArgs, int32 *args);
+	void op_ai_set_type(int op, int numArgs, int32 *args);
+	void op_ai_clean_up(int op, int numArgs, int32 *args);
+};
+
+int LogicHEmoonbase::versionID() {
+	if (_vm->_game.features & GF_DEMO)
+		return -100;
+	else if (strcmp(_vm->_game.variant, "1.1") == 0)
+		return 110;
+	else
+		return 100;
+}
+
+#define OP_CREATE_MULTI_STATE_WIZ		100
+#define OP_LOAD_MULTI_CHANNEL_WIZ		101
+#define OP_WIZ_FROM_MULTI_CHANNEL_WIZ	102
+#define OP_DOS_COMMAND					103
+#define OP_SET_FOW_SENTINEL				104
+#define OP_SET_FOW_INFORMATION			105
+#define OP_SET_FOW_IMAGE				106
+
+#define OP_AI_TEST_KLUDGE				10000
+#define OP_AI_MASTER_CONTROL_PROGRAM	10001
+#define OP_AI_RESET						10002
+#define OP_AI_SET_TYPE					10003
+#define OP_AI_CLEAN_UP					10004
+
+int32 LogicHEmoonbase::dispatch(int op, int numArgs, int32 *args) {
+	switch (op) {
+	case OP_CREATE_MULTI_STATE_WIZ:
+		op_create_multi_state_wiz(op, numArgs, args);
+		break;
+	case OP_LOAD_MULTI_CHANNEL_WIZ:
+		op_load_multi_channel_wiz(op, numArgs, args);
+		break;
+	case OP_WIZ_FROM_MULTI_CHANNEL_WIZ:
+		op_wiz_from_multi_channel_wiz(op, numArgs, args);
+		break;
+	case OP_DOS_COMMAND:
+		op_dos_command(op, numArgs, args);
+		break;
+	case OP_SET_FOW_SENTINEL:
+		op_set_fow_sentinel(op, numArgs, args);
+		break;
+	case OP_SET_FOW_INFORMATION:
+		op_set_fow_information(op, numArgs, args);
+		break;
+	case OP_SET_FOW_IMAGE:
+		op_set_fow_image(op, numArgs, args);
+		break;
+
+	case OP_AI_TEST_KLUDGE:
+		op_ai_test_kludge(op, numArgs, args);
+		break;
+	case OP_AI_MASTER_CONTROL_PROGRAM:
+		op_ai_master_control_program(op, numArgs, args);
+		break;
+	case OP_AI_RESET:
+		op_ai_reset(op, numArgs, args);
+		break;
+	case OP_AI_SET_TYPE:
+		op_ai_set_type(op, numArgs, args);
+		break;
+	case OP_AI_CLEAN_UP:
+		op_ai_clean_up(op, numArgs, args);
+		break;
+
+	default:
+		LogicHE::dispatch(op, numArgs, args);
+	}
+
+	return 0;
+}
+
+void LogicHEmoonbase::op_create_multi_state_wiz(int op, int numArgs, int32 *args) {
+	warning("STUB: op_create_multi_state_wiz()");
+	LogicHE::dispatch(op, numArgs, args);
+}
+
+void LogicHEmoonbase::op_load_multi_channel_wiz(int op, int numArgs, int32 *args) {
+	warning("STUB: op_load_multi_channel_wiz()");
+	LogicHE::dispatch(op, numArgs, args);
+}
+
+void LogicHEmoonbase::op_wiz_from_multi_channel_wiz(int op, int numArgs, int32 *args) {
+	warning("STUB: op_wiz_from_multi_channel_wiz()");
+	LogicHE::dispatch(op, numArgs, args);
+}
+
+void LogicHEmoonbase::op_dos_command(int op, int numArgs, int32 *args) {
+	warning("STUB: op_dos_command()");
+	LogicHE::dispatch(op, numArgs, args);
+}
+
+void LogicHEmoonbase::op_set_fow_sentinel(int op, int numArgs, int32 *args) {
+	warning("STUB: op_set_fow_sentinel()");
+	LogicHE::dispatch(op, numArgs, args);
+}
+
+void LogicHEmoonbase::op_set_fow_information(int op, int numArgs, int32 *args) {
+	warning("STUB: op_set_fow_information()");
+	LogicHE::dispatch(op, numArgs, args);
+}
+
+void LogicHEmoonbase::op_set_fow_image(int op, int numArgs, int32 *args) {
+	warning("STUB: op_set_fow_image()");
+	LogicHE::dispatch(op, numArgs, args);
+}
+
+void LogicHEmoonbase::op_ai_test_kludge(int op, int numArgs, int32 *args) {
+	warning("STUB: op_ai_test_kludge()");
+	LogicHE::dispatch(op, numArgs, args);
+}
+
+void LogicHEmoonbase::op_ai_master_control_program(int op, int numArgs, int32 *args) {
+	warning("STUB: op_ai_master_control_program()");
+	LogicHE::dispatch(op, numArgs, args);
+}
+
+void LogicHEmoonbase::op_ai_reset(int op, int numArgs, int32 *args) {
+	warning("STUB: op_ai_reset)");
+	LogicHE::dispatch(op, numArgs, args);
+}
+
+void LogicHEmoonbase::op_ai_set_type(int op, int numArgs, int32 *args) {
+	warning("STUB: op_ai_set_type()");
+	LogicHE::dispatch(op, numArgs, args);
+}
+
+void LogicHEmoonbase::op_ai_clean_up(int op, int numArgs, int32 *args) {
+	warning("STUB: op_ai_clean_up()");
+	LogicHE::dispatch(op, numArgs, args);
+}
+
+LogicHE *makeLogicHEmoonbase(ScummEngine_v90he *vm) {
+	return new LogicHEmoonbase(vm);
+}
+
+} // End of namespace Scumm
diff --git a/engines/scumm/module.mk b/engines/scumm/module.mk
index 416a8f7..c348191 100644
--- a/engines/scumm/module.mk
+++ b/engines/scumm/module.mk
@@ -136,7 +136,7 @@ MODULE_OBJS += \
 	he/logic/basketball.o \
 	he/logic/football.o \
 	he/logic/funshop.o \
-	he/logic/moonbase.o \
+	he/logic/moonbase_logic.o \
 	he/logic/puttrace.o \
 	he/logic/soccer.o
 endif


Commit: 73b8dfe5ce54232080ba7e425dc877fd4854e1a0
    https://github.com/scummvm/scummvm/commit/73b8dfe5ce54232080ba7e425dc877fd4854e1a0
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-04-29T22:22:20+02:00

Commit Message:
SCUMM HE: Initial code for Moonbase-specific class

Changed paths:
  A engines/scumm/he/moonbase/moonbase.cpp
  A engines/scumm/he/moonbase/moonbase.h
    engines/scumm/he/intern_he.h
    engines/scumm/he/logic/moonbase_logic.cpp
    engines/scumm/he/wiz_he.cpp
    engines/scumm/module.mk
    engines/scumm/scumm.cpp



diff --git a/engines/scumm/he/intern_he.h b/engines/scumm/he/intern_he.h
index 370f54c..a8d7e84 100644
--- a/engines/scumm/he/intern_he.h
+++ b/engines/scumm/he/intern_he.h
@@ -27,6 +27,8 @@
 #ifdef ENABLE_HE
 #include "scumm/he/floodfill_he.h"
 #include "scumm/he/wiz_he.h"
+
+#include "scumm/he/moonbase/moonbase.h"
 #endif
 #include "scumm/actor_he.h"	// For AuxBlock & AuxEntry
 
@@ -244,6 +246,10 @@ public:
 	void queueAuxEntry(int actorNum, int subIndex);
 
 	void remapHEPalette(const uint8 *src, uint8 *dst);
+
+public:
+	/* Moonbase stuff */
+	Moonbase *_moonbase;
 };
 
 class ScummEngine_v72he : public ScummEngine_v71he {
diff --git a/engines/scumm/he/logic/moonbase_logic.cpp b/engines/scumm/he/logic/moonbase_logic.cpp
index 3fcf30d..22b0b18 100644
--- a/engines/scumm/he/logic/moonbase_logic.cpp
+++ b/engines/scumm/he/logic/moonbase_logic.cpp
@@ -42,9 +42,10 @@ private:
 	void op_load_multi_channel_wiz(int op, int numArgs, int32 *args);
 	void op_wiz_from_multi_channel_wiz(int op, int numArgs, int32 *args);
 	void op_dos_command(int op, int numArgs, int32 *args);
-	void op_set_fow_sentinel(int op, int numArgs, int32 *args);
+	void op_set_fow_sentinel(int32 *args);
 	void op_set_fow_information(int op, int numArgs, int32 *args);
 	void op_set_fow_image(int op, int numArgs, int32 *args);
+
 	void op_ai_test_kludge(int op, int numArgs, int32 *args);
 	void op_ai_master_control_program(int op, int numArgs, int32 *args);
 	void op_ai_reset(int op, int numArgs, int32 *args);
@@ -90,7 +91,7 @@ int32 LogicHEmoonbase::dispatch(int op, int numArgs, int32 *args) {
 		op_dos_command(op, numArgs, args);
 		break;
 	case OP_SET_FOW_SENTINEL:
-		op_set_fow_sentinel(op, numArgs, args);
+		op_set_fow_sentinel(args);
 		break;
 	case OP_SET_FOW_INFORMATION:
 		op_set_fow_information(op, numArgs, args);
@@ -142,9 +143,12 @@ void LogicHEmoonbase::op_dos_command(int op, int numArgs, int32 *args) {
 	LogicHE::dispatch(op, numArgs, args);
 }
 
-void LogicHEmoonbase::op_set_fow_sentinel(int op, int numArgs, int32 *args) {
-	warning("STUB: op_set_fow_sentinel()");
-	LogicHE::dispatch(op, numArgs, args);
+void LogicHEmoonbase::op_set_fow_sentinel(int32 *args) {
+	debug(2, "op_set_fow_sentinel(%d, %d, %d)", args[0], args[1], args[2]);
+
+	_vm->_moonbase->_fowSentinelImage = args[0];
+	_vm->_moonbase->_fowSentinelState = args[1];
+	_vm->_moonbase->_fowSentinelConditionBits = args[2];
 }
 
 void LogicHEmoonbase::op_set_fow_information(int op, int numArgs, int32 *args) {
diff --git a/engines/scumm/he/moonbase/moonbase.cpp b/engines/scumm/he/moonbase/moonbase.cpp
new file mode 100644
index 0000000..1319f56
--- /dev/null
+++ b/engines/scumm/he/moonbase/moonbase.cpp
@@ -0,0 +1,40 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "scumm/he/intern_he.h"
+
+namespace Scumm {
+
+Moonbase::Moonbase() {
+	_fowSentinelImage = -1;
+	_fowSentinelState = -1;
+	_fowSentinelConditionBits = 0;
+}
+
+Moonbase::~Moonbase() {
+}
+
+void Moonbase::renderFOW() {
+	warning("STUB: renderFOW()");
+}
+
+} // End of namespace Scumm
diff --git a/engines/scumm/he/moonbase/moonbase.h b/engines/scumm/he/moonbase/moonbase.h
new file mode 100644
index 0000000..0fa6b42
--- /dev/null
+++ b/engines/scumm/he/moonbase/moonbase.h
@@ -0,0 +1,47 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef SCUMM_HE_MOONBASE_H
+#define SCUMM_HE_MOONBASE_H
+
+#ifdef ENABLE_HE
+
+namespace Scumm {
+
+class Moonbase {
+public:
+	Moonbase();
+	~Moonbase();
+
+	void renderFOW();
+
+public:
+	int _fowSentinelImage;
+	int _fowSentinelState;
+	uint16 _fowSentinelConditionBits;
+};
+
+#endif
+
+} // End of namespace Scumm
+
+#endif
diff --git a/engines/scumm/he/wiz_he.cpp b/engines/scumm/he/wiz_he.cpp
index 5cd07f2..3abadc7 100644
--- a/engines/scumm/he/wiz_he.cpp
+++ b/engines/scumm/he/wiz_he.cpp
@@ -2116,6 +2116,14 @@ void Wiz::displayWizComplexImage(const WizParameters *params) {
 			if (flags & kWIFIsPolygon) {
 				drawWizPolygon(params->img.resNum, state, po_x, flags, shadow, dstResNum, palette);
 			} else {
+				if (_vm->_game.id == GID_MOONBASE) {
+					if (params->img.resNum == _vm->_moonbase->_fowSentinelImage &&
+							state == _vm->_moonbase->_fowSentinelState &&
+							params->conditionBits == _vm->_moonbase->_fowSentinelConditionBits)
+						_vm->_moonbase->renderFOW();
+				}
+
+
 				drawWizImage(params->img.resNum, state, 0, 0, po_x, po_y, params->img.zorder, shadow, zbuffer, r, flags, dstResNum, _vm->getHEPaletteSlot(palette));
 			}
 		}
diff --git a/engines/scumm/module.mk b/engines/scumm/module.mk
index c348191..5462ad3 100644
--- a/engines/scumm/module.mk
+++ b/engines/scumm/module.mk
@@ -138,7 +138,8 @@ MODULE_OBJS += \
 	he/logic/funshop.o \
 	he/logic/moonbase_logic.o \
 	he/logic/puttrace.o \
-	he/logic/soccer.o
+	he/logic/soccer.o \
+	he/moonbase/moonbase.o
 endif
 
 # This module can be built as a plugin
diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp
index e711861..746e74d 100644
--- a/engines/scumm/scumm.cpp
+++ b/engines/scumm/scumm.cpp
@@ -733,7 +733,7 @@ ScummEngine_v0::ScummEngine_v0(OSystem *syst, const DetectorResult &dr)
 	VAR_ACTIVE_VERB = 0xFF;
 
 	if (strcmp(dr.fp.pattern, "maniacdemo.d64") == 0 )
-		_game.features |= GF_DEMO; 
+		_game.features |= GF_DEMO;
 }
 
 ScummEngine_v6::ScummEngine_v6(OSystem *syst, const DetectorResult &dr)
@@ -832,9 +832,16 @@ ScummEngine_v71he::ScummEngine_v71he(OSystem *syst, const DetectorResult &dr)
 	_skipProcessActors = 0;
 
 	VAR_WIZ_TCOLOR = 0xFF;
+
+	/* Moonbase stuff */
+	_moonbase = 0;
+
+	if (_game.id == GID_MOONBASE)
+		_moonbase = new Moonbase();
 }
 
 ScummEngine_v71he::~ScummEngine_v71he() {
+	delete _moonbase;
 	delete _wiz;
 }
 


Commit: 5f81b52890c1a0a25d539239e1b7625d17db238b
    https://github.com/scummvm/scummvm/commit/5f81b52890c1a0a25d539239e1b7625d17db238b
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-04-30T01:07:09+02:00

Commit Message:
SCUMM HE: Enhanced drawWizImage call arguments

Changed paths:
    engines/scumm/he/wiz_he.cpp
    engines/scumm/he/wiz_he.h



diff --git a/engines/scumm/he/wiz_he.cpp b/engines/scumm/he/wiz_he.cpp
index 3abadc7..82979e5 100644
--- a/engines/scumm/he/wiz_he.cpp
+++ b/engines/scumm/he/wiz_he.cpp
@@ -1429,12 +1429,12 @@ void Wiz::displayWizImage(WizImage *pwi) {
 		drawWizPolygon(pwi->resNum, pwi->state, pwi->x1, pwi->flags, 0, 0, 0);
 	} else {
 		const Common::Rect *r = NULL;
-		drawWizImage(pwi->resNum, pwi->state, 0, 0, pwi->x1, pwi->y1, 0, 0, 0, r, pwi->flags, 0, _vm->getHEPaletteSlot(0));
+		drawWizImage(pwi->resNum, pwi->state, 0, 0, pwi->x1, pwi->y1, 0, 0, 0, r, pwi->flags, 0, _vm->getHEPaletteSlot(0), 0);
 	}
 }
 
-uint8 *Wiz::drawWizImage(int resNum, int state, int maskNum, int maskState, int x1, int y1, int zorder, int shadow, int zbuffer, const Common::Rect *clipBox, int flags, int dstResNum, const uint8 *palPtr) {
-	debug(3, "drawWizImage(resNum %d, state %d maskNum %d maskState %d x1 %d y1 %d flags 0x%X zorder %d shadow %d zbuffer %d dstResNum %d)", resNum, state, maskNum, maskState, x1, y1, flags, zorder, shadow, zbuffer, dstResNum);
+uint8 *Wiz::drawWizImage(int resNum, int state, int maskNum, int maskState, int x1, int y1, int zorder, int shadow, int zbuffer, const Common::Rect *clipBox, int flags, int dstResNum, const uint8 *palPtr, uint16 conditionBits) {
+	debug(3, "drawWizImage(resNum %d, state %d maskNum %d maskState %d x1 %d y1 %d flags 0x%X zorder %d shadow %d zbuffer %d dstResNum %d conditionBits: 0x%x)", resNum, state, maskNum, maskState, x1, y1, flags, zorder, shadow, zbuffer, dstResNum, conditionBits);
 	uint8 *dataPtr;
 	uint8 *dst = NULL;
 
@@ -1747,7 +1747,7 @@ void Wiz::captureWizPolygon(int resNum, int maskNum, int maskState, int id1, int
 
 	assert(maskNum);
 	const Common::Rect *r = NULL;
-	const uint8 *src = drawWizImage(maskNum, maskState, 0, 0, 0, 0, 0, 0, 0, r, kWIFBlitToMemBuffer, 0, 0);
+	const uint8 *src = drawWizImage(maskNum, maskState, 0, 0, 0, 0, 0, 0, 0, r, kWIFBlitToMemBuffer, 0, 0, 0);
 	getWizImageDim(maskNum, maskState, srcw, srch);
 
 	dstw = wp->bound.width();
@@ -1815,7 +1815,7 @@ void Wiz::drawWizPolygonTransform(int resNum, int state, Common::Point *wp, int
 				debug(0, "drawWizPolygonTransform() unhandled flag 0x800000");
 			}
 
-			srcWizBuf = drawWizImage(resNum, state, 0, 0, 0, 0, 0, shadow, 0, r, flags, 0, _vm->getHEPaletteSlot(palette));
+			srcWizBuf = drawWizImage(resNum, state, 0, 0, 0, 0, 0, shadow, 0, r, flags, 0, _vm->getHEPaletteSlot(palette), 0);
 		} else {
 			assert(_vm->_bytesPerPixel == 1);
 			uint8 *dataPtr = _vm->getResourceAddress(rtImage, resNum);
@@ -1826,7 +1826,7 @@ void Wiz::drawWizPolygonTransform(int resNum, int state, Common::Point *wp, int
 		}
 	} else {
 		if (getWizImageData(resNum, state, 0) != 0) {
-			srcWizBuf = drawWizImage(resNum, state, 0, 0, 0, 0, 0, shadow, 0, r, kWIFBlitToMemBuffer, 0, _vm->getHEPaletteSlot(palette));
+			srcWizBuf = drawWizImage(resNum, state, 0, 0, 0, 0, 0, shadow, 0, r, kWIFBlitToMemBuffer, 0, _vm->getHEPaletteSlot(palette), 0);
 		} else {
 			uint8 *dataPtr = _vm->getResourceAddress(rtImage, resNum);
 			assert(dataPtr);
@@ -2001,7 +2001,7 @@ void Wiz::flushWizBuffer() {
 			drawWizPolygon(pwi->resNum, pwi->state, pwi->x1, pwi->flags, pwi->shadow, 0, pwi->palette);
 		} else {
 			const Common::Rect *r = NULL;
-			drawWizImage(pwi->resNum, pwi->state, 0, 0, pwi->x1, pwi->y1, pwi->zorder, pwi->shadow, pwi->zbuffer, r, pwi->flags, 0, _vm->getHEPaletteSlot(pwi->palette));
+			drawWizImage(pwi->resNum, pwi->state, 0, 0, pwi->x1, pwi->y1, pwi->zorder, pwi->shadow, pwi->zbuffer, r, pwi->flags, 0, _vm->getHEPaletteSlot(pwi->palette), 0);
 		}
 	}
 	_imagesNum = 0;
@@ -2023,7 +2023,7 @@ void Wiz::loadWizCursor(int resId, int palette) {
 
 	const Common::Rect *r = NULL;
 	_cursorImage = true;
-	uint8 *cursor = drawWizImage(resId, 0, 0, 0, 0, 0, 0, 0, 0, r, kWIFBlitToMemBuffer, 0, _vm->getHEPaletteSlot(palette));
+	uint8 *cursor = drawWizImage(resId, 0, 0, 0, 0, 0, 0, 0, 0, r, kWIFBlitToMemBuffer, 0, _vm->getHEPaletteSlot(palette), 0);
 	_cursorImage = false;
 
 	int32 cw, ch;
@@ -2109,7 +2109,7 @@ void Wiz::displayWizComplexImage(const WizParameters *params) {
 		++_imagesNum;
 	} else {
 		if (sourceImage != 0) {
-			drawWizImage(params->sourceImage, 0, params->img.resNum, state, po_x, po_y, params->img.zorder, shadow, zbuffer, r, flags, dstResNum, _vm->getHEPaletteSlot(palette));
+			drawWizImage(params->sourceImage, 0, params->img.resNum, state, po_x, po_y, params->img.zorder, shadow, zbuffer, r, flags, dstResNum, _vm->getHEPaletteSlot(palette), 0);
 		} else if (params->processFlags & (kWPFScaled | kWPFRotate)) {
 			drawWizComplexPolygon(params->img.resNum, state, po_x, po_y, shadow, rotationAngle, scale, r, flags, dstResNum, palette);
 		} else {
@@ -2124,7 +2124,7 @@ void Wiz::displayWizComplexImage(const WizParameters *params) {
 				}
 
 
-				drawWizImage(params->img.resNum, state, 0, 0, po_x, po_y, params->img.zorder, shadow, zbuffer, r, flags, dstResNum, _vm->getHEPaletteSlot(palette));
+				drawWizImage(params->img.resNum, state, 0, 0, po_x, po_y, params->img.zorder, shadow, zbuffer, r, flags, dstResNum, _vm->getHEPaletteSlot(palette), params->conditionBits);
 			}
 		}
 	}
diff --git a/engines/scumm/he/wiz_he.h b/engines/scumm/he/wiz_he.h
index 82a2c3e..e5567ce 100644
--- a/engines/scumm/he/wiz_he.h
+++ b/engines/scumm/he/wiz_he.h
@@ -211,7 +211,7 @@ public:
 	void displayWizImage(WizImage *pwi);
 	void processWizImage(const WizParameters *params);
 
-	uint8 *drawWizImage(int resNum, int state, int maskNum, int maskState, int x1, int y1, int zorder, int shadow, int field_390, const Common::Rect *clipBox, int flags, int dstResNum, const uint8 *palPtr);
+	uint8 *drawWizImage(int resNum, int state, int maskNum, int maskState, int x1, int y1, int zorder, int shadow, int zbuffer, const Common::Rect *clipBox, int flags, int dstResNum, const uint8 *palPtr, uint16 conditionBits);
 	void drawWizPolygon(int resNum, int state, int id, int flags, int shadow, int dstResNum, int palette);
 	void drawWizComplexPolygon(int resNum, int state, int po_x, int po_y, int shadow, int angle, int zoom, const Common::Rect *r, int flags, int dstResNum, int palette);
 	void drawWizPolygonTransform(int resNum, int state, Common::Point *wp, int flags, int shadow, int dstResNum, int palette);






More information about the Scummvm-git-logs mailing list