aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorMarisa-Chan2014-11-12 14:36:30 +0600
committerMarisa-Chan2014-11-12 14:36:30 +0600
commit7d92b44e09809f559db96ec029a6258d23d84fd0 (patch)
tree1e7d978b0b9c57f767c04f09efe00860a8f79de3 /engines
parent6f6d5fc24eb66b893f9871e773b9bd2632ab5ca5 (diff)
downloadscummvm-rg350-7d92b44e09809f559db96ec029a6258d23d84fd0.tar.gz
scummvm-rg350-7d92b44e09809f559db96ec029a6258d23d84fd0.tar.bz2
scummvm-rg350-7d92b44e09809f559db96ec029a6258d23d84fd0.zip
ZVISION: Nemesis and GI has difference in set_partial_screen color mask
Diffstat (limited to 'engines')
-rw-r--r--engines/zvision/graphics/render_manager.cpp10
-rw-r--r--engines/zvision/graphics/render_manager.h2
-rw-r--r--engines/zvision/scripting/actions.cpp18
3 files changed, 26 insertions, 4 deletions
diff --git a/engines/zvision/graphics/render_manager.cpp b/engines/zvision/graphics/render_manager.cpp
index 8411f190a7..3e146939e3 100644
--- a/engines/zvision/graphics/render_manager.cpp
+++ b/engines/zvision/graphics/render_manager.cpp
@@ -149,6 +149,16 @@ void RenderManager::renderImageToBackground(const Common::String &fileName, int1
surface.free();
}
+void RenderManager::renderImageToBackground(const Common::String &fileName, int16 destX, int16 destY, int16 keyX, int16 keyY) {
+ Graphics::Surface surface;
+ readImageToSurface(fileName, surface);
+
+ uint16 keycolor = *(uint16 *)surface.getBasePtr(keyX, keyY);
+
+ blitSurfaceToBkg(surface, destX, destY, keycolor);
+ surface.free();
+}
+
void RenderManager::readImageToSurface(const Common::String &fileName, Graphics::Surface &destination) {
Common::File file;
diff --git a/engines/zvision/graphics/render_manager.h b/engines/zvision/graphics/render_manager.h
index ae24ce4f58..d34ecf8ce0 100644
--- a/engines/zvision/graphics/render_manager.h
+++ b/engines/zvision/graphics/render_manager.h
@@ -185,6 +185,8 @@ public:
*/
void renderImageToBackground(const Common::String &fileName, int16 destX, int16 destY, uint32 colorkey);
+ void renderImageToBackground(const Common::String &fileName, int16 destX, int16 destY, int16 keyX, int16 keyY);
+
/**
* Sets the current background image to be used by the RenderManager and immediately
* blits it to the screen. (It won't show up until the end of the frame)
diff --git a/engines/zvision/scripting/actions.cpp b/engines/zvision/scripting/actions.cpp
index eb6b09308b..31f68d7953 100644
--- a/engines/zvision/scripting/actions.cpp
+++ b/engines/zvision/scripting/actions.cpp
@@ -815,10 +815,20 @@ ActionSetPartialScreen::ActionSetPartialScreen(ZVision *engine, int32 slotkey, c
bool ActionSetPartialScreen::execute() {
RenderManager *renderManager = _engine->getRenderManager();
- if (_backgroundColor >= 0)
- renderManager->renderImageToBackground(_fileName, _x, _y, _backgroundColor);
- else
- renderManager->renderImageToBackground(_fileName, _x, _y);
+
+ if (_engine->getGameId() == GID_NEMESIS) {
+ if (_backgroundColor)
+ renderManager->renderImageToBackground(_fileName, _x, _y, 0, 0);
+ else
+ renderManager->renderImageToBackground(_fileName, _x, _y);
+ } else {
+ if (_backgroundColor >= 0)
+ renderManager->renderImageToBackground(_fileName, _x, _y, _backgroundColor);
+ else if (_backgroundColor == -2)
+ renderManager->renderImageToBackground(_fileName, _x, _y, 0, 0);
+ else
+ renderManager->renderImageToBackground(_fileName, _x, _y);
+ }
return true;
}