[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