aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Horn2003-05-19 00:17:34 +0000
committerMax Horn2003-05-19 00:17:34 +0000
commit33d1f15f97a53371aa2d2ecfca694d9ca600780b (patch)
tree23a945a75c9a6a90875e2e5e5ecf178307a666b5
parent9cbc6904a0c6a6fc750ab600b7adeb2143abf110 (diff)
downloadscummvm-rg350-33d1f15f97a53371aa2d2ecfca694d9ca600780b.tar.gz
scummvm-rg350-33d1f15f97a53371aa2d2ecfca694d9ca600780b.tar.bz2
scummvm-rg350-33d1f15f97a53371aa2d2ecfca694d9ca600780b.zip
V2 walkbox matrix fixes
svn-id: r7657
-rw-r--r--scumm/boxes.cpp12
-rw-r--r--scumm/scummvm.cpp6
2 files changed, 14 insertions, 4 deletions
diff --git a/scumm/boxes.cpp b/scumm/boxes.cpp
index ec0d3ea3cd..ae7d0c2839 100644
--- a/scumm/boxes.cpp
+++ b/scumm/boxes.cpp
@@ -566,12 +566,22 @@ int Scumm::getPathToDestBox(byte from, byte to) {
byte *boxm;
byte i;
int dest = -1;
-
+ const int numOfBoxes = getNumBoxes();
+
if (from == to)
return to;
+ assert(from < numOfBoxes);
+ assert(to < numOfBoxes);
+
boxm = getBoxMatrixBaseAddr();
+ if (_features & GF_AFTER_V2) {
+ i = boxm[from];
+ boxm += numOfBoxes;
+ return boxm[to];
+ }
+
i = 0;
while (i != from) {
while (*boxm != 0xFF)
diff --git a/scumm/scummvm.cpp b/scumm/scummvm.cpp
index 15cb9554df..036a99a3d7 100644
--- a/scumm/scummvm.cpp
+++ b/scumm/scummvm.cpp
@@ -1358,9 +1358,9 @@ void Scumm::initRoomSubBlocks() {
createResource(rtMatrix, 2, size);
memcpy(getResourceAddress(rtMatrix, 2), ptr, size);
ptr += size;
- if (_features & GF_AFTER_V2)
- size = (READ_LE_UINT16(roomptr + 0x0A) - *(roomptr + 0x15)) - size;
- else if (_features & GF_OLD_BUNDLE)
+ if (_features & GF_AFTER_V2) {
+ size = numOfBoxes * (numOfBoxes + 1);
+ } else if (_features & GF_OLD_BUNDLE)
// FIXME. This is an evil HACK!!!
size = (READ_LE_UINT16(roomptr + 0x0A) - READ_LE_UINT16(roomptr + 0x15)) - size;
else