diff options
author | Max Horn | 2003-05-19 00:17:34 +0000 |
---|---|---|
committer | Max Horn | 2003-05-19 00:17:34 +0000 |
commit | 33d1f15f97a53371aa2d2ecfca694d9ca600780b (patch) | |
tree | 23a945a75c9a6a90875e2e5e5ecf178307a666b5 | |
parent | 9cbc6904a0c6a6fc750ab600b7adeb2143abf110 (diff) | |
download | scummvm-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.cpp | 12 | ||||
-rw-r--r-- | scumm/scummvm.cpp | 6 |
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 |