aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine
diff options
context:
space:
mode:
authorWillem Jan Palenstijn2017-07-09 17:25:17 +0200
committerWillem Jan Palenstijn2017-07-09 22:56:04 +0200
commit820caf370e2c24e6aefd8b1b90227ca29564bab6 (patch)
tree053eaaf33fc0ea8e63be6c2265942251934181ac /engines/sci/engine
parent33cfcfd5ff626e8b341fdee3171bf1367191fe65 (diff)
downloadscummvm-rg350-820caf370e2c24e6aefd8b1b90227ca29564bab6.tar.gz
scummvm-rg350-820caf370e2c24e6aefd8b1b90227ca29564bab6.tar.bz2
scummvm-rg350-820caf370e2c24e6aefd8b1b90227ca29564bab6.zip
SCI32: Fix kObjectIntersect
It was using SCI16 calls to get the NowSeenRects. This fixes #9855.
Diffstat (limited to 'engines/sci/engine')
-rw-r--r--engines/sci/engine/kgraphics32.cpp13
1 files changed, 3 insertions, 10 deletions
diff --git a/engines/sci/engine/kgraphics32.cpp b/engines/sci/engine/kgraphics32.cpp
index 76ed27ae68..44a3517458 100644
--- a/engines/sci/engine/kgraphics32.cpp
+++ b/engines/sci/engine/kgraphics32.cpp
@@ -102,20 +102,14 @@ reg_t kSetNowSeen32(EngineState *s, int argc, reg_t *argv) {
// NOTE: MGDX is assumed to use the older kSetNowSeen since it was
// released before SQ6, but this has not been verified since it cannot be
// disassembled at the moment (Phar Lap Windows-only release)
+ // (See also getNowSeenRect)
if (getSciVersion() <= SCI_VERSION_2_1_EARLY ||
g_sci->getGameId() == GID_SQ6 ||
g_sci->getGameId() == GID_MOTHERGOOSEHIRES) {
- if (!found) {
- error("kSetNowSeen: Unable to find screen item %04x:%04x", PRINT_REG(argv[0]));
- }
return s->r_acc;
}
- if (!found) {
- warning("kSetNowSeen: Unable to find screen item %04x:%04x", PRINT_REG(argv[0]));
- }
-
return make_reg(0, found);
}
@@ -245,9 +239,8 @@ reg_t kSetPalStyleRange(EngineState *s, int argc, reg_t *argv) {
}
reg_t kObjectIntersect(EngineState *s, int argc, reg_t *argv) {
- Common::Rect objRect1 = g_sci->_gfxCompare->getNSRect(argv[0]);
- Common::Rect objRect2 = g_sci->_gfxCompare->getNSRect(argv[1]);
- return make_reg(0, objRect1.intersects(objRect2));
+ int16 area = g_sci->_gfxFrameout->kernelObjectIntersect(argv[0], argv[1]);
+ return make_reg(0, area);
}
reg_t kIsOnMe(EngineState *s, int argc, reg_t *argv) {