V2 walkbox matrix fixes

svn-id: r7657
This commit is contained in:
Max Horn 2003-05-19 00:17:34 +00:00
parent 9cbc6904a0
commit 33d1f15f97
2 changed files with 14 additions and 4 deletions

View file

@ -566,12 +566,22 @@ int Scumm::getPathToDestBox(byte from, byte to) {
byte *boxm; byte *boxm;
byte i; byte i;
int dest = -1; int dest = -1;
const int numOfBoxes = getNumBoxes();
if (from == to) if (from == to)
return to; return to;
assert(from < numOfBoxes);
assert(to < numOfBoxes);
boxm = getBoxMatrixBaseAddr(); boxm = getBoxMatrixBaseAddr();
if (_features & GF_AFTER_V2) {
i = boxm[from];
boxm += numOfBoxes;
return boxm[to];
}
i = 0; i = 0;
while (i != from) { while (i != from) {
while (*boxm != 0xFF) while (*boxm != 0xFF)

View file

@ -1358,9 +1358,9 @@ void Scumm::initRoomSubBlocks() {
createResource(rtMatrix, 2, size); createResource(rtMatrix, 2, size);
memcpy(getResourceAddress(rtMatrix, 2), ptr, size); memcpy(getResourceAddress(rtMatrix, 2), ptr, size);
ptr += size; ptr += size;
if (_features & GF_AFTER_V2) if (_features & GF_AFTER_V2) {
size = (READ_LE_UINT16(roomptr + 0x0A) - *(roomptr + 0x15)) - size; size = numOfBoxes * (numOfBoxes + 1);
else if (_features & GF_OLD_BUNDLE) } else if (_features & GF_OLD_BUNDLE)
// FIXME. This is an evil HACK!!! // FIXME. This is an evil HACK!!!
size = (READ_LE_UINT16(roomptr + 0x0A) - READ_LE_UINT16(roomptr + 0x15)) - size; size = (READ_LE_UINT16(roomptr + 0x0A) - READ_LE_UINT16(roomptr + 0x15)) - size;
else else