[Scummvm-cvs-logs] SF.net SVN: scummvm:[35917] scummvm/trunk

athrxx at users.sourceforge.net athrxx at users.sourceforge.net
Mon Jan 19 00:50:33 CET 2009


Revision: 35917
          http://scummvm.svn.sourceforge.net/scummvm/?rev=35917&view=rev
Author:   athrxx
Date:     2009-01-18 23:50:31 +0000 (Sun, 18 Jan 2009)

Log Message:
-----------
LOL: basic music support and some cleanup

Modified Paths:
--------------
    scummvm/trunk/dists/engine-data/kyra.dat
    scummvm/trunk/engines/kyra/gui_lol.cpp
    scummvm/trunk/engines/kyra/lol.cpp
    scummvm/trunk/engines/kyra/lol.h
    scummvm/trunk/engines/kyra/resource.h
    scummvm/trunk/engines/kyra/scene_lol.cpp
    scummvm/trunk/engines/kyra/script_lol.cpp
    scummvm/trunk/engines/kyra/staticres.cpp
    scummvm/trunk/tools/create_kyradat/create_kyradat.cpp
    scummvm/trunk/tools/create_kyradat/create_kyradat.h
    scummvm/trunk/tools/create_kyradat/lol_cd.h
    scummvm/trunk/tools/create_kyradat/misc.h

Modified: scummvm/trunk/dists/engine-data/kyra.dat
===================================================================
(Binary files differ)

Modified: scummvm/trunk/engines/kyra/gui_lol.cpp
===================================================================
--- scummvm/trunk/engines/kyra/gui_lol.cpp	2009-01-18 22:02:22 UTC (rev 35916)
+++ scummvm/trunk/engines/kyra/gui_lol.cpp	2009-01-18 23:50:31 UTC (rev 35917)
@@ -336,7 +336,7 @@
 
 	if (_updateUnk2 == -1) {
 		_compassDirectionIndex = -1;
-		_updateUnk2 = _unkPara2 << 6;
+		_updateUnk2 = _currentDirection << 6;
 	}
 
 	int t = ((_updateUnk2 + 4) >> 3) & 0x1f;

Modified: scummvm/trunk/engines/kyra/lol.cpp
===================================================================
--- scummvm/trunk/engines/kyra/lol.cpp	2009-01-18 22:02:22 UTC (rev 35916)
+++ scummvm/trunk/engines/kyra/lol.cpp	2009-01-18 23:50:31 UTC (rev 35917)
@@ -96,7 +96,7 @@
 	_unkFlag = 0;
 	_scriptBoolSkipExec = _boolScriptFuncDone = false;
 	_unkScriptByte = 0;
-	_unkPara2 = 0;
+	_currentDirection = 0;
 	_currentBlock = 0;
 	memset(_scriptExecutedFuncs, 0, 18 * sizeof(uint16));
 
@@ -140,15 +140,19 @@
 	_dscBlockMap = _dscDoor1 = _dscShapeOvlIndex = 0;
 	_dscBlockIndex = 0;
 	_dscDimMap = 0;
-	_dscDoorX = _dscDoorY = 0;
+	_dscDoorMonsterX = _dscDoorMonsterY = 0;
 	_dscDoor4 = 0;
 
 	_ingameSoundList = 0;
+	_ingameSoundIndex = 0;
 	_ingameSoundListSize = 0;
+	_musicTrackMap = 0;
+	_curMusicTheme = -1;
+	_curMusicFileExt = 0;
 
 	_sceneDrawVar1 = _sceneDrawVar2 = _sceneDrawVar3 = _wllProcessFlag = 0;
 	_unkCmzU1 = _unkCmzU2 = 0;
-	_shpDoorX = _shpDoorY = _doorScaleW = _doorScaleH = 0;
+	_shpDmX = _shpDmY = _dmScaleW = _dmScaleH = 0;
 }
 
 LoLEngine::~LoLEngine() {
@@ -685,7 +689,7 @@
 	if (id & 0x4000)
 		buffer = _landsFile;
 	else
-		buffer = 0;	// TODO
+		buffer = _levelLangFile;
 
 	if (!buffer)
 		return 0;
@@ -1429,6 +1433,24 @@
 	}
 }
 
+void LoLEngine::snd_playTrack(int track) {
+	if (_unkGameFlag & 2) {
+		char filename[13];
+		int t = (track - 250) * 3;
+
+		if (_curMusicTheme != _musicTrackMap[t] || _curMusicFileExt != (char)_musicTrackMap[t + 1]) {
+			snprintf(filename, sizeof(filename), "LORE%02d%c", _musicTrackMap[t], (char)_musicTrackMap[t + 1]);
+			_sound->loadSoundFile(filename);
+			_curMusicTheme = _musicTrackMap[t];
+			_curMusicFileExt = (char)_musicTrackMap[t + 1];
+		}
+		
+		_sound->playTrack(_musicTrackMap[t + 2]);
+	} else {
+
+	}
+}
+
 #pragma mark - Opcodes
 
 typedef Common::Functor1Mem<EMCState*, int, LoLEngine> OpcodeV2;
@@ -1459,7 +1481,7 @@
 
 	// 0x08
 	Opcode(o2_testGameFlag);
-	Opcode(o2_loadLevelSupplemenaryFiles);
+	Opcode(o2_loadLevelGraphics);
 	Opcode(o2_loadCmzFile);
 	Opcode(o2_loadMonsterShapes);
 
@@ -1574,8 +1596,8 @@
 	// 0x54
 	OpcodeUnImpl();
 	OpcodeUnImpl();
+	Opcode(o2_loadLangFile);
 	OpcodeUnImpl();
-	OpcodeUnImpl();
 
 	// 0x58
 	OpcodeUnImpl();
@@ -1593,7 +1615,7 @@
 	OpcodeUnImpl();
 	OpcodeUnImpl();
 	OpcodeUnImpl();
-	OpcodeUnImpl();
+	Opcode(o2_playTrack);
 
 	// 0x64
 	OpcodeUnImpl();

Modified: scummvm/trunk/engines/kyra/lol.h
===================================================================
--- scummvm/trunk/engines/kyra/lol.h	2009-01-18 22:02:22 UTC (rev 35916)
+++ scummvm/trunk/engines/kyra/lol.h	2009-01-18 23:50:31 UTC (rev 35917)
@@ -260,8 +260,10 @@
 	// sound
 	void snd_playVoiceFile(int) { /* XXX */ }
 	void snd_playSoundEffect(int track, int volume);
+	void snd_playTrack(int track);
 
 	int _lastSfxTrack;
+	char _curMusicFileExt;
 
 	int _unkAudioSpecOffs;
 	bool _unkLangAudio;
@@ -269,6 +271,8 @@
 	char **_ingameSoundList;
 	int _ingameSoundListSize;
 
+	const uint8 *_musicTrackMap;
+	int _musicTrackMapSize;
 	const uint16 *_ingameSoundIndex;
 	int _ingameSoundIndexSize;
 	const uint8 *_ingameGMSoundIndex;
@@ -308,7 +312,7 @@
 	EMCData _scriptData;
 	bool _scriptBoolSkipExec;
 	uint8 _unkScriptByte;
-	uint16 _unkPara2;
+	uint16 _currentDirection;
 	uint16 _currentBlock;
 	bool _boolScriptFuncDone;
 	int16 _scriptExecutedFuncs[18];
@@ -318,7 +322,7 @@
 	// emc opcode
 	int o2_setGameFlag(EMCState *script);
 	int o2_testGameFlag(EMCState *script);
-	int o2_loadLevelSupplemenaryFiles(EMCState *script);
+	int o2_loadLevelGraphics(EMCState *script);
 	int o2_loadCmzFile(EMCState *script);
 	int o2_loadMonsterShapes(EMCState *script);
 	int o2_allocItemPropertiesBuffer(EMCState *script);
@@ -333,6 +337,8 @@
 	int o2_setGlobalVar(EMCState *script);
 	int o2_mapShapeToBlock(EMCState *script);
 	int o2_resetBlockShapeAssignment(EMCState *script);
+	int o2_loadLangFile(EMCState *script);
+	int o2_playTrack(EMCState *script);
 	int o2_setPaletteBrightness(EMCState *script);
 	int o2_assignCustomSfx(EMCState *script);
 
@@ -443,7 +449,7 @@
 	void loadMonsterShapes(const char *file, int monsterIndex, int b);
 	void releaseMonsterShapes(int monsterIndex);
 	void loadLevelShpDat(const char *shpFile, const char *datFile, bool flag);
-	void loadLevelSupplemenaryFiles(const char *file, int specialColor, int weight, int vcnLen, int vmpLen, const char *langFile);
+	void loadLevelGraphics(const char *file, int specialColor, int weight, int vcnLen, int vmpLen, const char *palFile);
 
 	void drawScene(int pageNum);
 
@@ -460,8 +466,9 @@
 	void drawLevelModifyScreenDim(int dim, int16 x1, int16 y1, int16 x2, int16 y2);
 	void drawDecorations(int index);
 	void drawIceShapes(int index, int iceShapeIndex);
+	void drawMonstersAndItems(int index);
 	void drawDoor(uint8 *shape, uint8 *table, int index, int unk2, int w, int h, int flags);
-	void drawDoorShapes(uint8 *shape, uint8 *table, int x, int y, int flags, const uint8 *ovl);
+	void drawDoorOrMonsterShape(uint8 *shape, uint8 *table, int x, int y, int flags, const uint8 *ovl);
 	void drawScriptShapes(int pageNum);
 	void updateSceneWindow();
 
@@ -488,8 +495,8 @@
 	uint8 **_levelShapes;
 
 	char _lastSuppFile[12];
-	char _lastSuppLangFile[12];
-	char *_lastSuppLangFilePtr;
+	char _lastOverridePalFile[12];
+	char *_lastOverridePalFilePtr;
 	int _lastSpecialColor;
 	int _lastSpecialColorWeight;
 
@@ -533,10 +540,10 @@
 	LevelShapeProperty *_levelFileData;
 
 	uint8 *_doorShapes[2];
-	int16 _shpDoorX;
-	int16 _shpDoorY;
-	int16 _doorScaleW;
-	int16 _doorScaleH;
+	int16 _shpDmX;
+	int16 _shpDmY;
+	int16 _dmScaleW;
+	int16 _dmScaleH;
 
 	uint8 _unkGameFlag;
 
@@ -575,8 +582,8 @@
 	int _dscBlockMapSize;
 	const uint8 *_dscDimMap;
 	int _dscDimMapSize;
-	const uint16 *_dscDoorScaleTable;
-	int _dscDoorScaleTableSize;
+	const uint16 *_dscDoorMonsterScaleTable;
+	int _dscDoorMonsterScaleTableSize;
 	const uint16 *_dscDoor4;
 	int _dscDoor4Size;
 	const uint8 *_dscShapeOvlIndex;
@@ -585,10 +592,10 @@
 	int _dscBlockIndexSize;
 	const uint8 *_dscDoor1;
 	int _dscDoor1Size;
-	const int16 *_dscDoorX;
-	int _dscDoorXSize;
-	const int16 *_dscDoorY;
-	int _dscDoorYSize;
+	const int16 *_dscDoorMonsterX;
+	int _dscDoorMonsterXSize;
+	const int16 *_dscDoorMonsterY;
+	int _dscDoorMonsterYSize;
 	
 	int _sceneDrawPage1;
 	int _sceneDrawPage2;

Modified: scummvm/trunk/engines/kyra/resource.h
===================================================================
--- scummvm/trunk/engines/kyra/resource.h	2009-01-18 22:02:22 UTC (rev 35916)
+++ scummvm/trunk/engines/kyra/resource.h	2009-01-18 23:50:31 UTC (rev 35917)
@@ -214,6 +214,7 @@
 	lolCharacterDefs,
 	lolIngameSfxFiles,
 	lolIngameSfxIndex,
+	lolMusicTrackMap,
 	lolIngameGMSfxIndex,
 	lolIngameMT32SfxIndex,
 	lolSpellProperties,

Modified: scummvm/trunk/engines/kyra/scene_lol.cpp
===================================================================
--- scummvm/trunk/engines/kyra/scene_lol.cpp	2009-01-18 22:02:22 UTC (rev 35916)
+++ scummvm/trunk/engines/kyra/scene_lol.cpp	2009-01-18 23:50:31 UTC (rev 35917)
@@ -60,7 +60,7 @@
 	_loadLevelFlag = 1;
 
 	char filename[16];
-	sprintf(filename, "level%d.ini", index);
+	sprintf(filename, "LEVEL%d.INI", index);
 	
 	int f = _levelFlagUnk & (1 << ((index + 0xff) & 0xff));
 
@@ -69,7 +69,7 @@
 	if (f)
 		loadLevelCMZ(index);
 
-	sprintf(filename, "level%d.inf", index);
+	sprintf(filename, "LEVEL%d.INF", index);
 	runInfScript(filename);
 
 	addLevelItems();
@@ -471,6 +471,7 @@
 			uint8 **of = &_buf4[(monsterIndex << 7) + (i << 5) + (ii << 1)];
 			int s = (i << 4) + ii + 17;
 			*of = _screen->makeShapeCopy(p, s);
+			
 			////TODO
 		}
 	}*/
@@ -577,16 +578,16 @@
 	}
 }
 
-void LoLEngine::loadLevelSupplemenaryFiles(const char *file, int specialColor, int weight, int vcnLen, int vmpLen, const char *langFile) {
+void LoLEngine::loadLevelGraphics(const char *file, int specialColor, int weight, int vcnLen, int vmpLen, const char *palFile) {
 	if (file) {
 		_lastSpecialColor = specialColor;
 		_lastSpecialColorWeight = weight;
 		strcpy(_lastSuppFile, file);
-		if (langFile) {
-			strcpy(_lastSuppLangFile, langFile);
-			_lastSuppLangFilePtr = _lastSuppLangFile;
+		if (palFile) {
+			strcpy(_lastOverridePalFile, palFile);
+			_lastOverridePalFilePtr = _lastOverridePalFile;
 		} else {
-			_lastSuppLangFilePtr = 0;
+			_lastOverridePalFilePtr = 0;
 		}
 	}
 	
@@ -615,13 +616,14 @@
 	memcpy(_vcnExpTable, v, 128);
 	v += 128;
 	
-	if (_lastSuppLangFilePtr) {
-		if (_levelLangFile)
-			delete[] _levelLangFile;
-		_levelLangFile = _res->fileData(_lastSuppLangFilePtr, 0);
+	if (_lastOverridePalFilePtr) {
+		uint8 *tpal = _res->fileData(_lastOverridePalFilePtr, 0);
+		memcpy(_screen->_currentPalette, tpal, 384);
+		delete[] tpal;		
+	} else {
+		memcpy(_screen->_currentPalette, v, 384);
 	}
 
-	memcpy(_screen->_currentPalette, v, 384);
 	v += 384;
 	/*uint8 tmpPal = new uint8[384];
 	memcpy(tmpPal, _screen->_currentPalette + 384, 384);
@@ -757,7 +759,7 @@
 		updateSceneWindow();
 	}
 
-	generateBlockDrawingBuffer(_currentBlock, _unkPara2);
+	generateBlockDrawingBuffer(_currentBlock, _currentDirection);
 	drawVcnBlocks(_vcnBlocks, _blockDrawingBuffer, _vcnShift, _sceneDrawPage1);
 	drawSceneShapes();
 
@@ -782,13 +784,13 @@
 }
 
 void LoLEngine::generateBlockDrawingBuffer(int block, int b) {
-	_sceneDrawVar1 = _dscBlockMap[_unkPara2];
-	_sceneDrawVar2 = _dscBlockMap[_unkPara2 + 4];
-	_sceneDrawVar3 = _dscBlockMap[_unkPara2 + 8];
+	_sceneDrawVar1 = _dscBlockMap[_currentDirection];
+	_sceneDrawVar2 = _dscBlockMap[_currentDirection + 4];
+	_sceneDrawVar3 = _dscBlockMap[_currentDirection + 8];
 
 	memset(_blockDrawingBuffer, 0, 660 * sizeof(uint16));
 
-	_wllProcessFlag = ((block >> 5) + (block & 0x1f) + _unkPara2) & 1;
+	_wllProcessFlag = ((block >> 5) + (block & 0x1f) + _currentDirection) & 1;
 
 	if (_wllProcessFlag)
 		generateBlockDrawingBufferF1(0, 15, 1, -330, 22, 15);
@@ -1094,8 +1096,8 @@
 
 		drawIceShapes(t, 0);
 
-		//if (_curBlockCaps[t]->itemIndex && (w & 0x80))
-			//sub_3AA55(t);
+		if (_curBlockCaps[t]->itemIndex && (w & 0x80))
+			drawMonstersAndItems(t);
 
 		drawIceShapes(t, 1);
 
@@ -1216,7 +1218,7 @@
 		if (!scaleW || !scaleH)
 			continue;
 
-		uint8 d = (_unkPara2 + _dscUnk1[s]) & 3;
+		uint8 d = (_currentDirection + _dscUnk1[s]) & 3;
 		int8 l = _wllShapeMap[_curBlockCaps[index]->unk[d]];
 
 		uint8 *shapeData = 0;
@@ -1287,13 +1289,17 @@
 		return;
 }
 
+void LoLEngine::drawMonstersAndItems(int index) {
+
+}
+
 void LoLEngine::drawDoor(uint8 *shape, uint8 *table, int index, int unk2, int w, int h, int flags) {
-	uint8 c = _dscDoor1[(_unkPara2 << 5) + unk2];
+	uint8 c = _dscDoor1[(_currentDirection << 5) + unk2];
 	int r = (c / 5) + 5 * _dscDimMap[index];
 	uint16 d = _dscShapeOvlIndex[r];
 	uint16 t = (index << 5) + c;
 
-	_shpDoorY = _dscDoorY[t] + 120;
+	_shpDmY = _dscDoorMonsterY[t] + 120;
 
 	if (flags & 1) {
 		// TODO
@@ -1303,40 +1309,40 @@
 
 	if (flags & 2) {		
 		uint8 dimW = _dscDimMap[index];		
-		_doorScaleW = _dscDoorScaleTable[dimW << 1];
-		_doorScaleH = _dscDoorScaleTable[(dimW << 1) + 1];
+		_dmScaleW = _dscDoorMonsterScaleTable[dimW << 1];
+		_dmScaleH = _dscDoorMonsterScaleTable[(dimW << 1) + 1];
 		u = _dscDoor4[dimW];
 	}
 
 	d += 2;
 
-	if (!_doorScaleW || !_doorScaleH)
+	if (!_dmScaleW || !_dmScaleH)
 		return;
 
-	int s = _screen->getShapeScaledHeight(shape, _doorScaleH) >> 1;
+	int s = _screen->getShapeScaledHeight(shape, _dmScaleH) >> 1;
 
 	if (w)
-		w = (w * _doorScaleW) >> 8;
+		w = (w * _dmScaleW) >> 8;
 
 	if (h)
-		h = (h * _doorScaleH) >> 8;
+		h = (h * _dmScaleH) >> 8;
 
-	_shpDoorX = _dscDoorX[t] + w + 200;
-	_shpDoorY = _shpDoorY + 4 - s + h - u;
+	_shpDmX = _dscDoorMonsterX[t] + w + 200;
+	_shpDmY = _shpDmY + 4 - s + h - u;
 
 	if (d > 7)
 		d = 7;
 
 	uint8 *ovl = _screen->getLevelOverlay(d);
-	int doorScaledWitdh = _screen->getShapeScaledWidth(shape, _doorScaleW);
+	int doorScaledWitdh = _screen->getShapeScaledWidth(shape, _dmScaleW);
 	
-	_shpDoorX -= (doorScaledWitdh >> 1);
-	_shpDoorY -= s;
+	_shpDmX -= (doorScaledWitdh >> 1);
+	_shpDmY -= s;
 
-	drawDoorShapes(shape, table, _shpDoorX, _shpDoorY, flags, ovl);
+	drawDoorOrMonsterShape(shape, table, _shpDmX, _shpDmY, flags, ovl);
 }
 
-void LoLEngine::drawDoorShapes(uint8 *shape, uint8 *table, int x, int y, int flags, const uint8 *ovl) {
+void LoLEngine::drawDoorOrMonsterShape(uint8 *shape, uint8 *table, int x, int y, int flags, const uint8 *ovl) {
 	int flg = 0;
 
 	if (flags & 0x10)
@@ -1350,14 +1356,14 @@
 
 	if (flg & 0x1000) {
 		if (table)
-			_screen->drawShape(_sceneDrawPage1, shape, x, y, 13, flg | 0x9104, table, ovl, 1, _tlcTable1, _tlcTable2, _doorScaleW, _doorScaleH);			
+			_screen->drawShape(_sceneDrawPage1, shape, x, y, 13, flg | 0x9104, table, ovl, 1, _tlcTable1, _tlcTable2, _dmScaleW, _dmScaleH);			
 		else
-			_screen->drawShape(_sceneDrawPage1, shape, x, y, 13, flg | 0x1104, ovl, 1, _tlcTable1, _tlcTable2, _doorScaleW, _doorScaleH);			
+			_screen->drawShape(_sceneDrawPage1, shape, x, y, 13, flg | 0x1104, ovl, 1, _tlcTable1, _tlcTable2, _dmScaleW, _dmScaleH);			
 	} else {
 		if (table)
-			_screen->drawShape(_sceneDrawPage1, shape, x, y, 13, flg | 0x8104, table, ovl, 1, _doorScaleW, _doorScaleH);
+			_screen->drawShape(_sceneDrawPage1, shape, x, y, 13, flg | 0x8104, table, ovl, 1, _dmScaleW, _dmScaleH);
 		else
-			_screen->drawShape(_sceneDrawPage1, shape, x, y, 13, flg | 0x104, ovl, 1, _doorScaleW, _doorScaleH);
+			_screen->drawShape(_sceneDrawPage1, shape, x, y, 13, flg | 0x104, ovl, 1, _dmScaleW, _dmScaleH);
 	}
 }
 

Modified: scummvm/trunk/engines/kyra/script_lol.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script_lol.cpp	2009-01-18 22:02:22 UTC (rev 35916)
+++ scummvm/trunk/engines/kyra/script_lol.cpp	2009-01-18 23:50:31 UTC (rev 35917)
@@ -25,6 +25,7 @@
 
 #include "kyra/lol.h"
 #include "kyra/screen_lol.h"
+#include "kyra/resource.h"
 
 #include "common/endian.h"
 
@@ -103,7 +104,7 @@
 }
 
 int LoLEngine::o2_setGameFlag(EMCState *script) {
-	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::o2_setGameFlag(%p) (%d)", (const void *)script, stackPos(0));
+	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::o2_setGameFlag(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
 	if (stackPos(1))
 		_gameFlags[stackPos(0) >> 4] |= (1 << (stackPos(0) & 0x0f));
 	else
@@ -123,20 +124,20 @@
 	return 0;
 }
 
-int LoLEngine::o2_loadLevelSupplemenaryFiles(EMCState *script) {
-	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::o2_loadLevelSupplemenaryFiles(%p) (%d)", (const void *)script, stackPos(0));
-	loadLevelSupplemenaryFiles(stackPosString(0), stackPos(1), stackPos(2), stackPos(3), stackPos(4), (stackPos(5) == -1) ? 0 : stackPosString(5));
+int LoLEngine::o2_loadLevelGraphics(EMCState *script) {
+	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::o2_loadLevelGraphics(%p) (%s, %d, %d, %d, %d, %d)", (const void *)script, stackPosString(0), stackPos(1), stackPos(2), stackPos(3), stackPos(4), stackPos(5));
+	loadLevelGraphics(stackPosString(0), stackPos(1), stackPos(2), stackPos(3), stackPos(4), (stackPos(5) == -1) ? 0 : stackPosString(5));
 	return 1;
 }
 
 int LoLEngine::o2_loadCmzFile(EMCState *script) {
-	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::o2_loadCmzFile(%p) (%d)", (const void *)script, stackPos(0));
+	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::o2_loadCmzFile(%p) (%s)", (const void *)script, stackPosString(0));
 	loadCmzFile(stackPosString(0));
 	return 1;
 }
 
 int LoLEngine::o2_loadMonsterShapes(EMCState *script) {
-	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::o2_loadMonsterShapes(%p) (%d)", (const void *)script, stackPos(0));
+	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::o2_loadMonsterShapes(%p) (%s, %d, %d)", (const void *)script, stackPosString(0), stackPos(1), stackPos(2));
 	loadMonsterShapes(stackPosString(0), stackPos(1), stackPos(2));
 	return 1;
 }
@@ -149,7 +150,7 @@
 }
 
 int LoLEngine::o2_setItemProperty(EMCState *script) {
-	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::o2_setItemProperty(%p) (%d)", (const void *)script, stackPos(0));
+	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::o2_setItemProperty(%p) (%d, %d, %d, %d, %d, %d, %d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2), stackPos(3), stackPos(4), stackPos(5), stackPos(6), stackPos(7), stackPos(8), stackPos(9));
 	ItemProperty *tmp = &_itemProperties[stackPos(0)];
 	
 	tmp->nameStringId = stackPos(1);
@@ -165,12 +166,12 @@
 }
 
 int LoLEngine::o2_makeItem(EMCState *script) {
-	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::o2_makeItem(%p) (%d)", (const void *)script, stackPos(0));
+	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::o2_makeItem(%p) (%d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2));
 	return makeItem(stackPos(0), stackPos(1), stackPos(2));
 }
 
 int LoLEngine::o2_getItemPara(EMCState *script) {
-	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::o2_getItemPara(%p) (%d)", (const void *)script, stackPos(0));
+	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::o2_getItemPara(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
 	if(!stackPos(0))
 		return 0;
 
@@ -220,7 +221,7 @@
 }
 
 int LoLEngine::o2_getCharacterStat(EMCState *script) {
-	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::o2_getCharacterStat(%p) (%d)", (const void *)script, stackPos(0));
+	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::o2_getCharacterStat(%p) (%d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2));
 	LoLCharacter *c = &_characters[stackPos(0)];
 	int d = stackPos(2);
 
@@ -262,7 +263,7 @@
 }
 
 int LoLEngine::o2_setCharacterStat(EMCState *script) {
-	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::o2_setCharacterStat(%p) (%d)", (const void *)script, stackPos(0));
+	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::o2_setCharacterStat(%p) (%d, %d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2), stackPos(3));
 	LoLCharacter *c = &_characters[stackPos(0)];
 	int d = stackPos(2);
 	int e = stackPos(3);
@@ -308,20 +309,20 @@
 }
 
 int LoLEngine::o2_loadLevelShapes(EMCState *script) {
-	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::o2_loadLevelShapes(%p) (%d)", (const void *)script, stackPos(0));
+	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::o2_loadLevelShapes(%p) (%s, %s)", (const void *)script, stackPosString(0), stackPosString(1));
 	loadLevelShpDat(stackPosString(0), stackPosString(1), true);
 	return 1;
 }
 
 int LoLEngine::o2_closeLevelShapeFile(EMCState *script) {
-	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::o2_closeLevelShapeFile(%p) (%d)", (const void *)script, stackPos(0));
+	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::o2_closeLevelShapeFile(%p) ()", (const void *)script);
 	delete _lvlShpFileHandle;
 	_lvlShpFileHandle = 0;
 	return 1;
 }
 
 int LoLEngine::o2_loadDoorShapes(EMCState *script) {
-	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::o2_loadDoorShapes(%p) (%d)", (const void *)script, stackPos(0));
+	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::o2_loadDoorShapes(%p) (%s, %d, %d)", (const void *)script, stackPosString(0), stackPos(1), stackPos(2));
 	_screen->loadBitmap(stackPosString(0), 3, 3, 0);
 	const uint8 *p = _screen->getCPagePtr(2);
 	if (_doorShapes[0])
@@ -354,7 +355,7 @@
 }
 
 int LoLEngine::o2_setGlobalVar(EMCState *script) {
-	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::o2_setGlobalVar(%p) (%d)", (const void *)script, stackPos(0));
+	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::o2_setGlobalVar(%p) (%d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2));
 	//uint16 a = stackPos(1);
 	uint16 b = stackPos(2);
 	
@@ -365,7 +366,7 @@
 			setLF2(_currentBlock);			
 			break;
 		case 1:
-			_unkPara2 = b;
+			_currentDirection = b;
 			break;
 		case 2:
 			_currentLevel = b & 0xff;
@@ -420,8 +421,24 @@
 	return 1;
 }
 
+int LoLEngine::o2_loadLangFile(EMCState *script) {
+	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::o2_loadLangFile(%p) (%s)", (const void *)script, stackPosString(0));
+	char filename[13];
+	snprintf(filename, sizeof(filename), "%s.%s", stackPosString(0), _languageExt[_lang]);
+	if (_levelLangFile)
+		delete[] _levelLangFile;
+	_levelLangFile = _res->fileData(filename, 0);
+	return 1;
+}
+
+int LoLEngine::o2_playTrack(EMCState *script) {
+	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::o2_playTrack(%p) (%d)", (const void *)script, stackPos(0));
+	snd_playTrack(stackPos(0));
+	return 1;
+}
+
 int LoLEngine::o2_setPaletteBrightness(EMCState *script) {
-	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::o2_setPaletteBrightness(%p) (%d)", (const void *)script, stackPos(0));
+	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::o2_setPaletteBrightness(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
 	uint16 old = _brightness;
 	_brightness = stackPos(0);
 	if (stackPos(1) == 1)
@@ -430,7 +447,7 @@
 }
 
 int LoLEngine::o2_assignCustomSfx(EMCState *script) {
-	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::o2_assignCustomSfx(%p) (%d)", (const void *)script, stackPos(0));
+	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::o2_assignCustomSfx(%p) (%s, %d)", (const void *)script, stackPosString(0), stackPos(1));
 	const char *c = stackPosString(0);
 	int i = stackPos(1);
 

Modified: scummvm/trunk/engines/kyra/staticres.cpp
===================================================================
--- scummvm/trunk/engines/kyra/staticres.cpp	2009-01-18 22:02:22 UTC (rev 35916)
+++ scummvm/trunk/engines/kyra/staticres.cpp	2009-01-18 23:50:31 UTC (rev 35917)
@@ -43,7 +43,7 @@
 
 namespace Kyra {
 
-#define RESFILE_VERSION 34
+#define RESFILE_VERSION 35
 
 namespace {
 bool checkKyraDat(Common::SeekableReadStream *file) {
@@ -371,6 +371,7 @@
 		{ lolCharacterDefs, lolCharData, "CHARACTER.DEF" },
 		{ lolIngameSfxFiles, kStringList, "SFXFILES.TRA" },
 		{ lolIngameSfxIndex, kRawData, "SFXINDEX.MAP" },
+		{ lolMusicTrackMap, kRawData, "MUSIC.MAP" },
 		{ lolIngameGMSfxIndex, kRawData, "SFX_GM.MAP" },
 		{ lolIngameMT32SfxIndex, kRawData, "SFX_MT32.MAP" },
 		{ lolSpellProperties, lolSpellData, "SPELLS.DEF" },
@@ -1628,6 +1629,7 @@
 void LoLEngine::initStaticResource() {
 	_charDefaults = _staticres->loadCharData(lolCharacterDefs, _charDefaultsSize);	
 	_ingameSoundIndex = (const uint16 *)_staticres->loadRawData(lolIngameSfxIndex, _ingameSoundIndexSize);
+	_musicTrackMap = _staticres->loadRawData(lolMusicTrackMap, _musicTrackMapSize);
 	_ingameGMSoundIndex = _staticres->loadRawData(lolIngameGMSfxIndex, _ingameGMSoundIndexSize);
 	_ingameMT32SoundIndex = _staticres->loadRawData(lolIngameMT32SfxIndex, _ingameMT32SoundIndexSize);
 	_spellProperties = _staticres->loadSpellData(lolSpellProperties, _spellPropertiesSize);
@@ -1650,13 +1652,13 @@
 	_dscDim2 = (const int8 *)_staticres->loadRawData(lolDscDimData2, _dscDim2Size);
 	_dscBlockMap = _staticres->loadRawData(lolDscBlockMap, _dscBlockMapSize);
 	_dscDimMap = _staticres->loadRawData(lolDscDimMap, _dscDimMapSize);
-	_dscDoorScaleTable = (const uint16 *)_staticres->loadRawDataBe16(lolDscDoorScale, _dscDoorScaleTableSize);
+	_dscDoorMonsterScaleTable = (const uint16 *)_staticres->loadRawDataBe16(lolDscDoorScale, _dscDoorMonsterScaleTableSize);
 	_dscShapeOvlIndex = _staticres->loadRawData(lolDscOvlIndex, _dscShapeOvlIndexSize);
 	_dscDoor4 = (const uint16 *)_staticres->loadRawDataBe16(lolDscDoor4, _dscDoor4Size);
 	_dscBlockIndex = (const int8 *)_staticres->loadRawData(lolDscBlockIndex, _dscBlockIndexSize);
 	_dscDoor1 = _staticres->loadRawData(lolDscDoor1, _dscDoor1Size);
-	_dscDoorX = (const int16 *)_staticres->loadRawDataBe16(lolDscDoorX, _dscDoorXSize);
-	_dscDoorY = (const int16 *)_staticres->loadRawDataBe16(lolDscDoorY, _dscDoorYSize);
+	_dscDoorMonsterX = (const int16 *)_staticres->loadRawDataBe16(lolDscDoorX, _dscDoorMonsterXSize);
+	_dscDoorMonsterY = (const int16 *)_staticres->loadRawDataBe16(lolDscDoorY, _dscDoorMonsterYSize);
 
 	const char *const *tmpSndList = _staticres->loadStrings(lolIngameSfxFiles, _ingameSoundListSize);
 	_ingameSoundList = new char*[_ingameSoundListSize];

Modified: scummvm/trunk/tools/create_kyradat/create_kyradat.cpp
===================================================================
--- scummvm/trunk/tools/create_kyradat/create_kyradat.cpp	2009-01-18 22:02:22 UTC (rev 35916)
+++ scummvm/trunk/tools/create_kyradat/create_kyradat.cpp	2009-01-18 23:50:31 UTC (rev 35917)
@@ -31,7 +31,7 @@
 #include "md5.h"
 
 enum {
-	kKyraDatVersion = 34,
+	kKyraDatVersion = 35,
 	kIndexSize = 12
 };
 
@@ -266,6 +266,7 @@
 	{ lolCharacterDefs, kTypeRawData, "CHARACTER.DEF" },
 	{ lolIngameSfxFiles, k2TypeSfxList, "SFXFILES.TRA" },
 	{ lolIngameSfxIndex, kTypeRawData, "SFXINDEX.MAP" },
+	{ lolMusicTrackMap, kTypeRawData, "MUSIC.MAP" },
 	{ lolGMSfxIndex, kTypeRawData, "SFX_GM.MAP" },
 	{ lolMT32SfxIndex, kTypeRawData, "SFX_MT32.MAP" },
 	{ lolSpellProperties, kTypeRawData, "SPELLS.DEF" },

Modified: scummvm/trunk/tools/create_kyradat/create_kyradat.h
===================================================================
--- scummvm/trunk/tools/create_kyradat/create_kyradat.h	2009-01-18 22:02:22 UTC (rev 35916)
+++ scummvm/trunk/tools/create_kyradat/create_kyradat.h	2009-01-18 23:50:31 UTC (rev 35917)
@@ -179,6 +179,7 @@
 	lolCharacterDefs,
 	lolIngameSfxFiles,
 	lolIngameSfxIndex,
+	lolMusicTrackMap,
 	lolGMSfxIndex,
 	lolMT32SfxIndex,
 	lolSpellProperties,

Modified: scummvm/trunk/tools/create_kyradat/lol_cd.h
===================================================================
--- scummvm/trunk/tools/create_kyradat/lol_cd.h	2009-01-18 22:02:22 UTC (rev 35916)
+++ scummvm/trunk/tools/create_kyradat/lol_cd.h	2009-01-18 23:50:31 UTC (rev 35917)
@@ -2,6 +2,7 @@
 	{ lolCharacterDefs, 0x00029D60, 0x0002A1F2 },
 	{ lolIngameSfxFiles, 0x0002A330, 0x0002AC22 },
 	{ lolIngameSfxIndex, 0x0002AC22, 0x0002B00A },
+	{ lolMusicTrackMap, 0x0002A240, 0x0002A330 },	
 	{ lolGMSfxIndex, 0x0002B010, 0x0002B10A },
 	{ lolMT32SfxIndex, 0x0002B110, 0x0002B20A },
 	{ lolSpellProperties, 0x0002B5D0, 0x0002B6E8 },

Modified: scummvm/trunk/tools/create_kyradat/misc.h
===================================================================
--- scummvm/trunk/tools/create_kyradat/misc.h	2009-01-18 22:02:22 UTC (rev 35916)
+++ scummvm/trunk/tools/create_kyradat/misc.h	2009-01-18 23:50:31 UTC (rev 35917)
@@ -485,6 +485,7 @@
 	lolCharacterDefs,
 	lolIngameSfxFiles,
 	lolIngameSfxIndex,
+	lolMusicTrackMap,
 	lolGMSfxIndex,
 	lolMT32SfxIndex,
 	lolSpellProperties,


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list