diff options
| -rw-r--r-- | engines/lilliput/lilliput.cpp | 31 | ||||
| -rw-r--r-- | engines/lilliput/script.cpp | 22 | ||||
| -rw-r--r-- | engines/lilliput/script.h | 7 | 
3 files changed, 36 insertions, 24 deletions
| diff --git a/engines/lilliput/lilliput.cpp b/engines/lilliput/lilliput.cpp index 6953ea3e46..7c7f9a84f4 100644 --- a/engines/lilliput/lilliput.cpp +++ b/engines/lilliput/lilliput.cpp @@ -1346,12 +1346,15 @@ void LilliputEngine::sub12F37() {  	int index2 = 0;  	for (int i = 0; i < _word10807_ERULES; i++) { -		if (_rulesBuffer2_15[index1] == 1 ) { -			--_rulesBuffer2_15[index1]; -			if (_rulesBuffer2_15[index1] == 1) -				_scriptHandler->_array10B29[index2] = 1; -		} else -			_rulesBuffer2_15[index1] = 0; +		if (_rulesBuffer2_15[index1] != 0 ) { +			if (_rulesBuffer2_15[index1] == 1) { +				_rulesBuffer2_15[index1] = 0; +			} else { +				--_rulesBuffer2_15[index1]; +				if (_rulesBuffer2_15[index1] == 1) +					_scriptHandler->_array10B29[index2] = 1; +			}			 +		}  		index1 += 32;  		++index2; @@ -1610,23 +1613,23 @@ void LilliputEngine::displayHeroismIndicator() {  	int var1 = (_scriptHandler->_savedBuffer215Ptr[0] * 25) >> 8; -	if (var1 == _scriptHandler->_byte15FFA) +	if (var1 == _scriptHandler->_heroismLevel)  		return;  	displayFunction5();  	int var2 = 1; -	if (var1 > _scriptHandler->_byte15FFA) +	if (var1 > _scriptHandler->_heroismLevel)  		var1 = 150;  	else {  		var2 = -1;  		var1 = 40;  	} -	_scriptHandler->_byte15FFA += var2; - -	int index = _scriptHandler->_word15FFB + _scriptHandler->_word15FFD * 320 ; +	_scriptHandler->_heroismLevel += var2; +	 +	int index = _scriptHandler->_heroismBarX + _scriptHandler->_heroismBarBottomY * 320 ; -	var2 = _scriptHandler->_byte15FFA & 0xFF; +	var2 = _scriptHandler->_heroismLevel & 0xFF;  	if (var2 != 0) {  //		sub16064(var1, _scriptHandler->_byte15FFA);  		for (int i = 0; i < (var2 << 2); i++) { @@ -1637,9 +1640,9 @@ void LilliputEngine::displayHeroismIndicator() {  		}  	} -	if (25 - _scriptHandler->_byte15FFA != 0) { +	if (25 - _scriptHandler->_heroismLevel != 0) {  //		sub16064(23, 25 - _scriptHandler->_byte15FFA); -		var2 = (25 - _scriptHandler->_byte15FFA) << 2; +		var2 = (25 - _scriptHandler->_heroismLevel) << 2;  		for (int i = 0; i < var2; i++) {  			((byte *)_mainSurface->getPixels())[index] = 23;  			((byte *)_mainSurface->getPixels())[index + 1] = 23; diff --git a/engines/lilliput/script.cpp b/engines/lilliput/script.cpp index f34ec121cc..7400241ef7 100644 --- a/engines/lilliput/script.cpp +++ b/engines/lilliput/script.cpp @@ -41,8 +41,8 @@ LilliputScript::LilliputScript(LilliputEngine *vm) : _vm(vm), _currScript(NULL)  	_word16F00 = -1;  	_viewportCharacterTarget = -1;  	_word10804 = 0; -	_word15FFB = 0; -	_word15FFD = 0; +	_heroismBarX = 0; +	_heroismBarBottomY = 0;  	_viewportX = 0;  	_viewportY = 0;  	_word18776 = 0; @@ -63,6 +63,7 @@ LilliputScript::LilliputScript(LilliputEngine *vm) : _vm(vm), _currScript(NULL)  		_array16123[i] = 0;  		_array1614B[i] = 0;  		_array16173[i] = 0xFF; +		_array122C1[i] = 0;  	}  	for (int i = 0; i < 640; i++) { @@ -1571,7 +1572,11 @@ void LilliputScript::OC_resetWord16EFE() {  	warning("OC_resetWord16EFE");  }  void LilliputScript::OC_sub17CEF() { -	warning("OC_sub17CEF"); +	debugC(1, kDebugScript, "OC_sub17CEF()"); + +	int var1 = _currScript->readUint16LE(); +	sub1823E(_vm->_rulesBuffer2PrevIndx , var1, _vm->_ptr_rulesBuffer2_15); +	sub17B6C(0);  }  void LilliputScript::OC_sub17D1B() { @@ -1751,7 +1756,10 @@ void LilliputScript::OC_sub1834C() {  }  void LilliputScript::OC_sub18359() { -	warning("OC_sub18359"); +	debugC(1, kDebugScript, "OC_sub18359()"); + +	int var1 = _currScript->readUint16LE(); +	_array122C1[_vm->_rulesBuffer2PrevIndx] = var1;  }  void LilliputScript::OC_sub18367() {  	warning("OC_sub18367"); @@ -1876,7 +1884,7 @@ void LilliputScript::OC_sub1853B() {  	OC_PaletteFadeOut();  	displayMap = 0; -	_byte15FFA = 0; +	_heroismLevel = 0;  	sub130B6();  	_vm->displayFunction12(); @@ -1907,8 +1915,8 @@ void LilliputScript::OC_initArr18560() {  void LilliputScript::OC_sub18678() {  	debugC(1, kDebugScript, "OC_initArr18578()");  	_savedBuffer215Ptr = getBuffer215Ptr(); -	_word15FFB = _currScript->readUint16LE(); -	_word15FFD = _currScript->readUint16LE(); +	_heroismBarX = _currScript->readUint16LE(); +	_heroismBarBottomY = _currScript->readUint16LE();  }  void LilliputScript::OC_sub18690() { diff --git a/engines/lilliput/script.h b/engines/lilliput/script.h index 2a23063ed2..3d5e78111e 100644 --- a/engines/lilliput/script.h +++ b/engines/lilliput/script.h @@ -34,7 +34,7 @@ class LilliputScript {  public:  	byte displayMap;  	byte _byte12A04; -	byte _byte15FFA; +	byte _heroismLevel;  	byte _array10B29[40];  	byte _array122E9[20]; @@ -44,6 +44,7 @@ public:  	byte _array12811[40];  	byte _array10AB1[40];  	byte _array122FD[20]; +	byte _array122C1[40];  	short _array10B51[40 * 40];  	byte *_savedBuffer215Ptr; @@ -52,8 +53,8 @@ public:  	int _viewportY;  	int _viewportCharacterTarget;  	int _word1881B; -	int _word15FFB; -	int _word15FFD; +	int _heroismBarX; +	int _heroismBarBottomY;  	short _array12311[640];  	byte _array128EF[40]; | 
