From 512f80552eefa34c56f61fbb6207108a6802ec62 Mon Sep 17 00:00:00 2001 From: James Brown Date: Sun, 3 Nov 2002 15:12:39 +0000 Subject: Indy3 only uses the low 4 bits of a variable svn-id: r5393 --- scumm/script.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'scumm') diff --git a/scumm/script.cpp b/scumm/script.cpp index f66b31c3f1..fef4acf855 100644 --- a/scumm/script.cpp +++ b/scumm/script.cpp @@ -330,6 +330,7 @@ int Scumm::readVar(uint var) var = 518; } #endif + checkRange(_numVariables - 1, 0, var, "Variable %d out of range(r)"); return _vars[var]; } @@ -362,7 +363,11 @@ int Scumm::readVar(uint var) } if (var & 0x4000) { - var &= 0xFFF; + if (_gameId == GID_INDY3_256) { + var &= 0xF; + } else { + var &= 0xFFF; + } checkRange(0x10, 0, var, "Local variable %d out of range(r)"); return vm.localvar[_currentScript][var]; } @@ -422,7 +427,12 @@ void Scumm::writeVar(uint var, int value) } if (var & 0x4000) { - var &= 0xFFF; + if (_gameId == GID_INDY3_256) { + var &= 0xF; + } else { + var &= 0xFFF; + } + checkRange(0x10, 0, var, "Local variable %d out of range(w)"); vm.localvar[_currentScript][var] = value; return; -- cgit v1.2.3