diff options
| author | Strangerke | 2012-05-18 16:48:49 +0200 | 
|---|---|---|
| committer | Eugene Sandulenko | 2018-03-28 17:36:57 +0200 | 
| commit | 3a102e6f24f756d7dad15c709dd32be8c46f19c1 (patch) | |
| tree | 8c80f168e413d2531b2ff77aa0e4fe736d81b9aa | |
| parent | 1c0efa5581b7ed86fcff12f9431a8daba465493c (diff) | |
| download | scummvm-rg350-3a102e6f24f756d7dad15c709dd32be8c46f19c1.tar.gz scummvm-rg350-3a102e6f24f756d7dad15c709dd32be8c46f19c1.tar.bz2 scummvm-rg350-3a102e6f24f756d7dad15c709dd32be8c46f19c1.zip  | |
LILLIPUT: Some more renaming, fix issue in OC_sub17640, implement OC_sub18690
| -rw-r--r-- | engines/lilliput/lilliput.cpp | 36 | ||||
| -rw-r--r-- | engines/lilliput/lilliput.h | 14 | ||||
| -rw-r--r-- | engines/lilliput/script.cpp | 168 | ||||
| -rw-r--r-- | engines/lilliput/script.h | 10 | 
4 files changed, 115 insertions, 113 deletions
diff --git a/engines/lilliput/lilliput.cpp b/engines/lilliput/lilliput.cpp index d5700be5a1..97f7239874 100644 --- a/engines/lilliput/lilliput.cpp +++ b/engines/lilliput/lilliput.cpp @@ -203,8 +203,8 @@ LilliputEngine::LilliputEngine(OSystem *syst, const LilliputGameDescription *gd)  		_rulesBuffer2_10[i] = 0;  		_rulesBuffer2_11[i] = 0;  		_rulesBuffer2_12[i] = 0; -		_rulesBuffer2_13[i] = 0; -		_rulesBuffer2_14[i] = 0; +		_rulesBuffer2_13_posX[i] = 0; +		_rulesBuffer2_14_posY[i] = 0;  		_array1289F[i] = 0xFFFF;  	} @@ -1135,7 +1135,7 @@ void LilliputEngine::displayFunction18(int var1, int var2, int var3, int var4) {  }  void LilliputEngine::displayString(byte *buf, Common::Point pos) { -	debugC(2, kDebugEngineTBC, "displayString(buf, %d - %d)", pos.x, pos.y); +	debugC(2, kDebugEngine, "displayString(%s, %d - %d)", buf, pos.x, pos.y);  	int index = (pos.y * 320) + pos.x; @@ -1148,7 +1148,7 @@ void LilliputEngine::displayString(byte *buf, Common::Point pos) {  }  void LilliputEngine::displayChar(int index, int var1) { -	debugC(2, kDebugEngineTBC, "displayChar(%d, %d)", index, var1); +	debugC(2, kDebugEngine, "displayChar(%d, %d)", index, var1);  	int indexVga = index;  	int indexChar = var1 << 5; @@ -1633,15 +1633,15 @@ void LilliputEngine::sub16A08(int index) {  }  void LilliputEngine::addCharToBuf(byte character) { -	debugC(2, kDebugEngineTBC, "addCharToBuf(%c)", character); +	debugC(2, kDebugEngine, "addCharToBuf(%c)", character);  	_displayStringBuf[_displayStringIndex] = character;  	if (_displayStringIndex < 158)  		++_displayStringIndex;  } -void LilliputEngine::prepareGoldAmount(int param1) { -	debugC(2, kDebugEngineTBC, "prepareGoldAmount(%d)", param1); +void LilliputEngine::numberToString(int param1) { +	debugC(2, kDebugEngine, "numberToString(%d)", param1);  	static const int _array18AE3[6] = {10000, 1000, 100, 10, 1}; @@ -2454,8 +2454,8 @@ void LilliputEngine::loadRules() {  		_rulesBuffer2_10[j] = f.readByte();  		_rulesBuffer2_11[j] = f.readByte();  		_rulesBuffer2_12[j] = f.readByte(); -		_rulesBuffer2_13[j] = f.readByte(); -		_rulesBuffer2_14[j] = f.readByte(); +		_rulesBuffer2_13_posX[j] = f.readByte(); +		_rulesBuffer2_14_posY[j] = f.readByte();  		for (int k = 0; k < 32; k++)  			_characterVariables_[(j * 32) + k] = f.readByte(); @@ -2546,10 +2546,10 @@ void LilliputEngine::loadRules() {  		_rulesBuffer13_1[i] = f.readByte();  	for (int i = 0 ; i < 20; i++) -		_interfaceHotspotsX[i] = f.readUint16LE(); +		_interfaceHotspotsX[i] = f.readSint16LE();  	for (int i = 0 ; i < 20; i++) -		_interfaceHotspotsY[i] = f.readUint16LE(); +		_interfaceHotspotsY[i] = f.readSint16LE();  	for (int i = 0; i < 20; i++) {  		byte curByte = f.readByte(); @@ -2611,16 +2611,16 @@ void LilliputEngine::initPalette() {  	_system->getPaletteManager()->setPalette(_curPalette, 0, 256);  } -void LilliputEngine::sub170EE(int index) { -	debugC(1, kDebugEngineTBC, "sub170EE(%d)", index); +void LilliputEngine::setCurrentCharacter(int index) { +	debugC(1, kDebugEngine, "setCurrentCharacter(%d)", index);  	_currentScriptCharacter = index;  	assert (index < 40); -	int var2 = _characterPositionX[index]; -	int var4 = _characterPositionY[index]; +	int posX = _characterPositionX[index]; +	int posY = _characterPositionY[index]; -	_currentScriptCharacterPos = Common::Point(var2 >> 3, var4 >> 3); +	_currentScriptCharacterPos = Common::Point(posX >> 3, posY >> 3);  	_currentCharacterVariables = getCharacterVariablesPtr(_currentScriptCharacter * 32);  } @@ -2637,7 +2637,7 @@ void LilliputEngine::handleMenu() {  	if ((_byte12FCE == 1) && (_byte16F07_menuId != 3))  		return; -	sub170EE(_word10804); +	setCurrentCharacter(_word10804);  	debugC(1, kDebugScriptTBC, "========================== Menu Script ==============================");  	_scriptHandler->runMenuScript(ScriptStream(_menuScript, _menuScriptSize));  	debugC(1, kDebugScriptTBC, "========================== End of Menu Script=============================="); @@ -2668,7 +2668,7 @@ void LilliputEngine::handleGameScripts() {  	_scriptHandler->_characterScriptEnabled[index] = 0; -	sub170EE(index); +	setCurrentCharacter(index);  	_word16EFE = _array11D49[index]; diff --git a/engines/lilliput/lilliput.h b/engines/lilliput/lilliput.h index 93b1ff17d5..84b1a60105 100644 --- a/engines/lilliput/lilliput.h +++ b/engines/lilliput/lilliput.h @@ -161,8 +161,8 @@ public:  	byte _rulesBuffer2_10[40];  	byte _rulesBuffer2_11[40];  	byte _rulesBuffer2_12[40]; -	byte _rulesBuffer2_13[40]; -	byte _rulesBuffer2_14[40]; +	byte _rulesBuffer2_13_posX[40]; +	byte _rulesBuffer2_14_posY[40];  	byte _characterVariables_[1400 + 3120];  	byte *_currentCharacterVariables;  	byte _rulesBuffer2_16[40 * 32]; @@ -187,8 +187,8 @@ public:  	Common::Point _rulesBuffer12Pos4[40];  	int _word12F68_ERULES;  	byte _rulesBuffer13_1[20]; -	int _interfaceHotspotsX[20]; -	int _interfaceHotspotsY[20]; +	int16 _interfaceHotspotsX[20]; +	int16 _interfaceHotspotsY[20];  	byte _rulesBuffer13_4[20];  	int16 _array10999PosX[40];  	int16 _array109C1PosY[40]; @@ -216,7 +216,7 @@ public:  	void newInt8();  	void update(); -	void display16x16IndexedBuf(byte *buf, int var1, Common::Point pos); +	void display16x16IndexedBuf(byte *buf, int index, Common::Point pos);  	void display16x16Buf(byte *buf, Common::Point pos);  	void SaveSurfaceUnderMouseCursor(byte *buf, Common::Point pos);  	void fill16x16Rect(byte col, Common::Point pos); @@ -267,7 +267,7 @@ public:  	byte sub16799(int index, Common::Point param1);  	int getDirection(Common::Point param1, Common::Point param2);  	void addCharToBuf(byte character); -	void prepareGoldAmount(int param1); +	void numberToString(int param1);  	void sub12F37();  	byte sub16675(int idx, Common::Point var1);  	void sub16685(int idx, Common::Point var1); @@ -343,7 +343,7 @@ public:  	void pollEvent(); -	void sub170EE(int index); +	void setCurrentCharacter(int index);  	void sub130DD();  	void moveCharacters();  	void setNextDisplayCharacter(int var1); diff --git a/engines/lilliput/script.cpp b/engines/lilliput/script.cpp index 2e43114399..2f784f8373 100644 --- a/engines/lilliput/script.cpp +++ b/engines/lilliput/script.cpp @@ -353,7 +353,7 @@ void LilliputScript::handleOpcodeType2(int curWord) {  		OC_resetWord16EFE();  		break;  	case 0x24: -		OC_sub17CEF(); +		OC_enableCurrentCharacterScript();  		break;  	case 0x25:  		OC_IncCurrentCharacterVar1(); @@ -464,7 +464,7 @@ void LilliputScript::handleOpcodeType2(int curWord) {  		OC_sub18367();  		break;  	case 0x49: -		OC_sub17D04(); +		OC_enableCharacterScript();  		break;  	case 0x4A:  		OC_sub18387(); @@ -512,7 +512,7 @@ void LilliputScript::handleOpcodeType2(int curWord) {  		OC_initSmallAnim();  		break;  	case 0x59: -		OC_sub18678(); +		OC_setCharacterHeroismBar();  		break;  	case 0x5A:  		OC_sub18690(); @@ -545,7 +545,7 @@ void LilliputScript::handleOpcodeType2(int curWord) {  		OC_sub1875D_snd();  		break;  	case 0x64: -		OC_sub18764(); +		OC_setArray128E();  		break;  	case 0x65:  		OC_initGameAreaDisplay(); @@ -647,7 +647,7 @@ static const OpCode opCodes2[] = {  /* 0x21 */	{ "OC_sub17CB9", 3, kImmediateValue, kGetValue1, kImmediateValue, kNone, kNone },   /* 0x22 */	{ "OC_sub17CD1", 2, kImmediateValue, kImmediateValue, kNone, kNone, kNone },  /* 0x23 */	{ "OC_resetWord16EFE", 0, kNone, kNone, kNone, kNone, kNone },  -/* 0x24 */	{ "OC_sub17CEF", 1, kImmediateValue, kNone, kNone, kNone, kNone },   // stop script +/* 0x24 */	{ "OC_enableCurrentCharacterScript", 1, kImmediateValue, kNone, kNone, kNone, kNone },   // stop script  /* 0x25 */	{ "OC_IncCurrentCharacterVar1", 0, kNone, kNone, kNone, kNone, kNone },   /* 0x26 */	{ "OC_sub17D23", 2, kImmediateValue, kgetPosFromScript, kNone, kNone, kNone },   /* 0x27 */	{ "OC_sub17E6D", 1, kImmediateValue, kNone, kNone, kNone, kNone },  @@ -684,7 +684,7 @@ static const OpCode opCodes2[] = {  /* 0x46 */	{ "OC_sub1834C", 1, kImmediateValue, kNone, kNone, kNone, kNone },   /* 0x47 */	{ "OC_setArray122C1", 1, kImmediateValue, kNone, kNone, kNone, kNone },   /* 0x48 */	{ "OC_sub18367", 0, kNone, kNone, kNone, kNone, kNone },  -/* 0x49 */	{ "OC_sub17D04", 2, kGetValue1, kImmediateValue, kNone, kNone, kNone },  +/* 0x49 */	{ "OC_enableCharacterScript", 2, kGetValue1, kImmediateValue, kNone, kNone, kNone },   /* 0x4a */	{ "OC_sub18387", 2, kGetValue1, kImmediateValue, kNone, kNone, kNone },   /* 0x4b */	{ "OC_setDebugFlag", 0, kNone, kNone, kNone, kNone, kNone },   /* 0x4c */	{ "OC_setByte14837", 0, kNone, kNone, kNone, kNone, kNone },  @@ -700,7 +700,7 @@ static const OpCode opCodes2[] = {  /* 0x56 */	{ "OC_initGameAreaDisplay", 0, kNone, kNone, kNone, kNone, kNone },   /* 0x57 */	{ "OC_sub1864D", 6, kGetValue1, kImmediateValue, kImmediateValue, kImmediateValue, kImmediateValue},   /* 0x58 */	{ "OC_initSmallAnim", 11, kImmediateValue, kImmediateValue, kImmediateValue, kImmediateValue, kImmediateValue },  -/* 0x59 */	{ "OC_sub18678", 4, kGetValue1, kImmediateValue, kImmediateValue, kImmediateValue, kNone },  +/* 0x59 */	{ "OC_setCharacterHeroismBar", 4, kGetValue1, kImmediateValue, kImmediateValue, kImmediateValue, kNone },   /* 0x5a */	{ "OC_sub18690", 2, kGetValue1, kgetPosFromScript, kNone, kNone, kNone },  //TODO  /* 0x5b */	{ "OC_setViewPortCharacterTarget", 1, kGetValue1, kNone, kNone, kNone, kNone },  /* 0x5c */	{ "OC_sub186A1", 3, kGetValue1, kImmediateValue, kImmediateValue, kNone, kNone },  //TODO @@ -711,7 +711,7 @@ static const OpCode opCodes2[] = {  /* 0x61 */	{ "OC_sub1873F_snd", 1, kgetPosFromScript, kNone, kNone, kNone, kNone },   /* 0x62 */	{ "OC_sub18746_snd", 1, kImmediateValue, kNone, kNone, kNone, kNone },   /* 0x63 */	{ "OC_sub1875D_snd", 0, kNone, kNone, kNone, kNone, kNone },  -/* 0x64 */	{ "OC_sub18764", 2, kGetValue1, kImmediateValue, kNone, kNone, kNone },  +/* 0x64 */	{ "OC_setArray128E", 2, kGetValue1, kImmediateValue, kNone, kNone, kNone },   /* 0x65 */	{ "OC_initGameAreaDisplay", 0, kNone, kNone, kNone, kNone, kNone }  }; @@ -1022,8 +1022,8 @@ void LilliputScript::computeOperation(byte *bufPtr, int oper, int var3) {  	}  } -void LilliputScript::sub1823E(byte index, byte var1, byte *curBufPtr) { -	debugC(1, kDebugScriptTBC, "sub1823E(%d, %d, curBufPtr)", index, var1); +void LilliputScript::enableCharacterScript(byte index, byte var1, byte *curBufPtr) { +	debugC(1, kDebugScript, "enableCharacterScript(%d, %d, curBufPtr)", index, var1);  	assert (index < 40);  	_characterScriptEnabled[index] = 1; @@ -1174,7 +1174,7 @@ void LilliputScript::decodePackedText(char *buf) {  				var1 = buf[index];  				++index;  				if (var1 == '#') { -					_vm->prepareGoldAmount(_byte18823); +					_vm->numberToString(_byte18823);  				}  			} else {  				_vm->addCharToBuf(var1); @@ -1307,11 +1307,11 @@ Common::Point LilliputScript::getPosFromScript() {  	switch(tmpVal) {  	case 0xFF:  		assert((_vm->_currentScriptCharacter >= 0) && (_vm->_currentScriptCharacter < 40)); -		return Common::Point(_vm->_rulesBuffer2_13[_vm->_currentScriptCharacter], _vm->_rulesBuffer2_14[_vm->_currentScriptCharacter]); +		return Common::Point(_vm->_rulesBuffer2_13_posX[_vm->_currentScriptCharacter], _vm->_rulesBuffer2_14_posY[_vm->_currentScriptCharacter]);  	case 0xFE: {  		int8 index = curWord & 0xFF;  		assert((index >= 0) && (index < 40)); -		return Common::Point(_vm->_rulesBuffer2_13[index], _vm->_rulesBuffer2_14[index]); +		return Common::Point(_vm->_rulesBuffer2_13_posX[index], _vm->_rulesBuffer2_14_posY[index]);  		}  	case 0xFD:  		return _vm->_currentScriptCharacterPos; @@ -1481,7 +1481,7 @@ byte LilliputScript::OC_compWord18776() {  }  byte LilliputScript::OC_checkSaveFlag() { -	debugC(1, kDebugScriptTBC, "OC_checkSaveFlag()"); +	debugC(1, kDebugScript, "OC_checkSaveFlag()");  	if (_vm->_saveFlag)  		return 1; @@ -1602,7 +1602,7 @@ byte LilliputScript::OC_compareRandomCharacterId() {  }  byte LilliputScript::OC_IsCurrentCharacterIndex() { -	debugC(1, kDebugScriptTBC, "OC_IsCurrentCharacterIndex()"); +	debugC(1, kDebugScript, "OC_IsCurrentCharacterIndex()");  	int tmpVal = getValue1();  	if (tmpVal == _vm->_currentScriptCharacter) @@ -1611,10 +1611,9 @@ byte LilliputScript::OC_IsCurrentCharacterIndex() {  }  byte LilliputScript::OC_sub175C8() { -	debugC(1, kDebugScriptTBC, "OC_sub175C8()"); +	debugC(1, kDebugScript, "OC_sub175C8()");  	byte var4 = _currScript->readUint16LE() & 0xFF; -  	int tmpVal = _currScript->readUint16LE();  	if (tmpVal < 2000) { @@ -1643,11 +1642,9 @@ byte LilliputScript::OC_sub175C8() {  	byte var4b = tmpVal & 0xFF;  	for (int i = 0; i < _vm->_numCharacters; i++) {  		int var1 = _array10B51[(_vm->_currentScriptCharacter * 40) + i]; -		if ((var1 & 0xFF) >= var4) { -			if (_vm->_rulesBuffer2_12[i] == var4b) { -				_word16F00 = i; -				return 1; -			} +		if (((var1 & 0xFF) >= var4) && (_vm->_rulesBuffer2_12[i] == var4b)) { +			_word16F00 = i; +			return 1;  		}  	}	 @@ -1655,41 +1652,13 @@ byte LilliputScript::OC_sub175C8() {  }  byte LilliputScript::OC_sub17640() { -	debugC(1, kDebugScriptTBC, "OC_sub176C4()"); +	debugC(1, kDebugScript, "OC_sub176C4()");  	int var4 = _currScript->readUint16LE();  	int index = _vm->_currentScriptCharacter * 40;  	int tmpVal = _currScript->readUint16LE(); -	if (tmpVal >= 2000) { -		int var1 = tmpVal; - -		if (var1 == 3000) { -			for (int i = 0; i < _vm->_numCharacters; i++) { -				tmpVal = _array10B51[index + i]; -				byte v1 = tmpVal & 0xFF; -				byte v2 = tmpVal >> 8; -				if ((v1 >= (var4 & 0xFF)) && (v2 < (var4 & 0xFF))) { -					_word16F00 = i; -					return 1; -				} -			} -			return 0; -		} else { -			var1 -= 2000; -			var4 &= ((var1 & 0xFF) << 8); -			for (int i = 0; i < _vm->_numCharacters; i++) { -				tmpVal = _array10B51[index + i]; -				byte v1 = tmpVal & 0xFF; -				byte v2 = tmpVal >> 8; -				if ((v1 >= (var4 & 0xFF)) && (v2 < (var4 & 0xFF)) && (_vm->_rulesBuffer2_12[i] != (var4 >> 8))) { -					_word16F00 = i; -					return 1; -				} -			} -			return 0; -		} -	} else { +	if (tmpVal < 2000) {  		_currScript->seek(_currScript->pos() - 2);  		int subIndex = getValue1();  		tmpVal = _array10B51[index + subIndex]; @@ -1700,6 +1669,33 @@ byte LilliputScript::OC_sub17640() {  		_word16F00 = subIndex;  		return 1;  	} + +	int var1 = tmpVal; +	if (var1 == 3000) { +		for (int i = 0; i < _vm->_numCharacters; i++) { +			tmpVal = _array10B51[index + i]; +			byte v1 = tmpVal & 0xFF; +			byte v2 = tmpVal >> 8; +			if ((v1 >= (var4 & 0xFF)) && (v2 < (var4 & 0xFF))) { +				_word16F00 = i; +				return 1; +			} +		} +		return 0; +	}  + +	var1 -= 2000; +	var4 = ((var1 & 0xFF) << 8) + (var4 & 0xFF); +	for (int i = 0; i < _vm->_numCharacters; i++) { +		tmpVal = _array10B51[index + i]; +		byte v1 = tmpVal & 0xFF; +		byte v2 = tmpVal >> 8; +		if ((v1 >= (var4 & 0xFF)) && (v2 < (var4 & 0xFF)) && (_vm->_rulesBuffer2_12[i] == (var4 >> 8))) { +			_word16F00 = i; +			return 1; +		} +	} +	return 0;  }  byte LilliputScript::OC_sub176C4() { @@ -1811,7 +1807,7 @@ byte LilliputScript::OC_IsCharacterValid() {  }  byte LilliputScript::OC_compWord16EFE() { -	debugC(1, kDebugScriptTBC, "OC_compWord16EFE()"); +	debugC(1, kDebugScript, "OC_compWord16EFE()");  	byte curByte = _currScript->readUint16LE() & 0xFF;  	byte tmpVal = _vm->_word16EFE >> 8; @@ -1824,7 +1820,7 @@ byte LilliputScript::OC_compWord16EFE() {  }  byte LilliputScript::OC_AreCurrentCharacterVar0AndVar1EqualsTo() { -	debugC(1, kDebugScriptTBC, "OC_AreCurrentCharacterVar0AndVar1EqualsTo()"); +	debugC(1, kDebugScript, "OC_AreCurrentCharacterVar0AndVar1EqualsTo()");  	byte var1 = _currScript->readUint16LE() & 0xFF;  	byte var2 = _currScript->readUint16LE() & 0xFF; @@ -1838,7 +1834,7 @@ byte LilliputScript::OC_AreCurrentCharacterVar0AndVar1EqualsTo() {  }  byte LilliputScript::OC_CurrentCharacterVar0Equals() { -	debugC(1, kDebugScriptTBC, "OC_CurrentCharacterVar0Equals()"); +	debugC(1, kDebugScript, "OC_CurrentCharacterVar0Equals()");  	byte curByte = (_currScript->readUint16LE() & 0xFF);  	assert(_vm->_currentCharacterVariables != NULL); @@ -1920,7 +1916,7 @@ byte LilliputScript::OC_skipNextOpcode() {  }  byte LilliputScript::OC_CurrentCharacterVar2Equals1() { -	debugC(1, kDebugScriptTBC, "OC_CurrentCharacterVar2Equals1()"); +	debugC(1, kDebugScript, "OC_CurrentCharacterVar2Equals1()");  	assert(_vm->_currentCharacterVariables != NULL);  	if (_vm->_currentCharacterVariables[2] == 1) @@ -1980,7 +1976,7 @@ byte LilliputScript::OC_sub1790F() {  }  byte LilliputScript::OC_CurrentCharacterVar1Equals() { -	debugC(1, kDebugScriptTBC, "OC_CurrentCharacterVar1Equals()"); +	debugC(1, kDebugScript, "OC_CurrentCharacterVar1Equals()");  	assert(_vm->_currentCharacterVariables != NULL);  	byte curByte = (_currScript->readUint16LE() & 0xFF); @@ -2004,7 +2000,7 @@ byte LilliputScript::OC_sub1793E() {  }  byte LilliputScript::OC_CurrentCharacterVar3Equals1() { -	debugC(1, kDebugScriptTBC, "OC_CurrentCharacterVar3Equals1()"); +	debugC(1, kDebugScript, "OC_CurrentCharacterVar3Equals1()");  	assert(_vm->_currentCharacterVariables != NULL);  	if (_vm->_currentCharacterVariables[3] == 1) @@ -2361,7 +2357,7 @@ void LilliputScript::OC_callScript() {  	int index = _currScript->readUint16LE();  	int var1 = getValue1(); -	_vm->sub170EE(var1); +	_vm->setCurrentCharacter(var1);  	int tmpIndex = _vm->_currentScriptCharacter;  	assert(index < _vm->_gameScriptIndexSize); @@ -2380,11 +2376,11 @@ void LilliputScript::OC_callScript() {  	_currScript = _scriptStack.pop(); -	_vm->sub170EE(tmpIndex); +	_vm->setCurrentCharacter(tmpIndex);  }  void LilliputScript::OC_callScriptAndReturn() { -	debugC(1, kDebugScriptTBC, "OC_callScriptAndReturn()"); +	debugC(1, kDebugScript, "OC_callScriptAndReturn()");  	OC_callScript();  	sub17B6C(0); @@ -2468,7 +2464,7 @@ void LilliputScript::OC_sub17C76() {  void LilliputScript::OC_sub17AFC() {  	debugC(1, kDebugScriptTBC, "OC_sub17AFC()");  	int var1 = getValue1(); -	_vm->sub170EE(var1); +	_vm->setCurrentCharacter(var1);  }  void LilliputScript::sub171AF(int var1, int var2, int var4) { @@ -2535,11 +2531,11 @@ void LilliputScript::OC_resetWord16EFE() {  	_vm->_word16EFE = 0xFFFF;  } -void LilliputScript::OC_sub17CEF() { -	debugC(1, kDebugScriptTBC, "OC_sub17CEF()"); +void LilliputScript::OC_enableCurrentCharacterScript() { +	debugC(1, kDebugScriptTBC, "OC_enableCurrentCharacterScript()");  	int var1 = _currScript->readUint16LE(); -	sub1823E(_vm->_currentScriptCharacter , var1, _vm->_currentCharacterVariables); +	enableCharacterScript(_vm->_currentScriptCharacter , var1, _vm->_currentCharacterVariables);  	sub17B6C(0);  } @@ -2917,7 +2913,7 @@ void LilliputScript::OC_sub18213() {  			maxItem = _array1813BPos[i].x;  		}  	} -	sub1823E(_vm->_currentScriptCharacter, maxItem, _vm->_currentCharacterVariables); +	enableCharacterScript(_vm->_currentScriptCharacter, maxItem, _vm->_currentCharacterVariables);  }  void LilliputScript::OC_sub18252() { @@ -3002,13 +2998,13 @@ void LilliputScript::OC_sub18367() {  	_vm->_currentCharacterVariables[3] = 0;  } -void LilliputScript::OC_sub17D04() { -	debugC(1, kDebugScriptTBC, "OC_sub17D04()"); +void LilliputScript::OC_enableCharacterScript() { +	debugC(1, kDebugScript, "OC_enableCharacterScript()");  	int16 index = getValue1();  	byte var2 = _currScript->readUint16LE() & 0xFF; -	sub1823E(index, var2, _vm->getCharacterVariablesPtr(index * 32)); +	enableCharacterScript(index, var2, _vm->getCharacterVariablesPtr(index * 32));  }  void LilliputScript::OC_sub18387() { @@ -3036,13 +3032,13 @@ void LilliputScript::OC_setByte14837() {  void LilliputScript::OC_sub183A2() {  	warning("OC_sub183A2");  } +  void LilliputScript::OC_sub183C6() {  	debugC(1, kDebugScriptTBC, "OC_sub183C6()"); -	int var1 = _currScript->readUint16LE(); -	int var2 = _currScript->readUint16LE(); -	_array122FD[var1] = (var2 & 0xff); -	_array122E9[var1] = 1; +	int index = _currScript->readUint16LE(); +	_array122FD[index] = (_currScript->readUint16LE() & 0xff); +	_array122E9[index] = 1;  	_vm->displayInterfaceHotspots();  } @@ -3113,7 +3109,7 @@ void LilliputScript::displayNumber(byte var1, Common::Point pos) {  	_vm->_displayStringBuf[2] = 32;  	_vm->_displayStringBuf[3] = 0; -	_vm->prepareGoldAmount(var1); +	_vm->numberToString(var1);  	_vm->displayString(_vm->_displayStringBuf, pos);  } @@ -3207,15 +3203,21 @@ void LilliputScript::OC_initSmallAnim() {  		_vm->_smallAnims[index]._frameIndex[i] = _currScript->readUint16LE();  } -void LilliputScript::OC_sub18678() { -	debugC(1, kDebugScriptTBC, "OC_initArr18578()"); +void LilliputScript::OC_setCharacterHeroismBar() { +	debugC(1, kDebugScript, "OC_setCharacterHeroismBar()"); +  	_savedBuffer215Ptr = getCharacterVariablePtr();  	_heroismBarX = _currScript->readUint16LE();  	_heroismBarBottomY = _currScript->readUint16LE();  }  void LilliputScript::OC_sub18690() { -	warning("OC_sub18690"); +	debugC(1, kDebugScriptTBC, "OC_sub18690()"); + +	int index = getValue1(); +	Common::Point pos = getPosFromScript(); +	_vm->_rulesBuffer2_13_posX[index] = pos.x; +	_vm->_rulesBuffer2_14_posY[index] = pos.y;  }  void LilliputScript::OC_setViewPortCharacterTarget() { @@ -3257,7 +3259,7 @@ void LilliputScript::OC_sub186E5_snd() {  }  void LilliputScript::OC_sub1870A_snd() { -	debugC(1, kDebugScriptTBC, "OC_sub1870A_snd()"); +	debugC(1, kDebugScript, "OC_sub1870A_snd()");  	Common::Point var3 = getPosFromScript();  	Common::Point var4 = var3; @@ -3302,19 +3304,19 @@ void LilliputScript::OC_sub18746_snd() {  }  void LilliputScript::OC_sub1875D_snd() { -	debugC(1, kDebugScriptTBC, "OC_sub1875D_snd()"); +	debugC(1, kDebugScript, "OC_sub1875D_snd()");  	_vm->_soundHandler->contentFct6();  } -void LilliputScript::OC_sub18764() { -	debugC(1, kDebugScriptTBC, "OC_sub18764()"); +void LilliputScript::OC_setArray128E() { +	debugC(1, kDebugScript, "OC_setArray128E()");  	int index = getValue1(); -	int var1 = _currScript->readUint16LE(); +	int val = _currScript->readUint16LE();  	assert(index < 40); -	_array128EF[index] = var1 & 0xFF; +	_array128EF[index] = val & 0xFF;  }  } // End of namespace diff --git a/engines/lilliput/script.h b/engines/lilliput/script.h index f73121a100..4bd8ad31a5 100644 --- a/engines/lilliput/script.h +++ b/engines/lilliput/script.h @@ -121,7 +121,7 @@ private:  	byte handleOpcodeType1(int curWord);  	void handleOpcodeType2(int curWord); -	void sub1823E(byte index, byte var1, byte *curBufPtr); +	void enableCharacterScript(byte index, byte var1, byte *curBufPtr);  	void sub17B6C(int var1);  	void sub16C86(int index, byte *buf);  	void sub16C5C(int index, byte var3); @@ -234,7 +234,7 @@ private:  	void OC_sub17CB9();  	void OC_sub17CD1();  	void OC_resetWord16EFE(); -	void OC_sub17CEF(); +	void OC_enableCurrentCharacterScript();  	void OC_IncCurrentCharacterVar1();  	void OC_sub17D23();  	void OC_sub17E6D(); @@ -272,7 +272,7 @@ private:  	void OC_sub1834C();  	void OC_setArray122C1();  	void OC_sub18367(); -	void OC_sub17D04(); +	void OC_enableCharacterScript();  	void OC_sub18387();  	void OC_setDebugFlag();  	void OC_setByte14837(); @@ -288,7 +288,7 @@ private:  	void OC_initGameAreaDisplay();  	void OC_sub1864D();  	void OC_initSmallAnim(); -	void OC_sub18678(); +	void OC_setCharacterHeroismBar();  	void OC_sub18690();  	void OC_setViewPortCharacterTarget();  	void OC_sub186A1(); @@ -299,7 +299,7 @@ private:  	void OC_sub1873F_snd();  	void OC_sub18746_snd();  	void OC_sub1875D_snd(); -	void OC_sub18764(); +	void OC_setArray128E();  };  } // End of namespace Lilliput  | 
