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  | 
