[Scummvm-cvs-logs] SF.net SVN: scummvm:[39187] scummvm/trunk/engines/kyra
athrxx at users.sourceforge.net
athrxx at users.sourceforge.net
Sat Mar 7 16:46:21 CET 2009
Revision: 39187
http://scummvm.svn.sourceforge.net/scummvm/?rev=39187&view=rev
Author: athrxx
Date: 2009-03-07 15:46:21 +0000 (Sat, 07 Mar 2009)
Log Message:
-----------
LOL: - implemented some opcodes(
Modified Paths:
--------------
scummvm/trunk/engines/kyra/lol.cpp
scummvm/trunk/engines/kyra/lol.h
scummvm/trunk/engines/kyra/script_lol.cpp
Modified: scummvm/trunk/engines/kyra/lol.cpp
===================================================================
--- scummvm/trunk/engines/kyra/lol.cpp 2009-03-07 15:29:52 UTC (rev 39186)
+++ scummvm/trunk/engines/kyra/lol.cpp 2009-03-07 15:46:21 UTC (rev 39187)
@@ -194,7 +194,9 @@
_pageBuffer1 = _pageBuffer2 = 0;
memset(_charStatsTemp, 0, 5 * sizeof(int));
-
+
+ _unkBt1 = _unkBt2 = 0;
+
_buttonData = 0;
_activeButtons = 0;
_preserveEvents = false;
@@ -741,7 +743,7 @@
_availableSpells[0] = 0;
setupScreenDims();
- //memset(_unkWordArraySize8, 0x100, 8);
+ memset(_unkWordArraySize8, 0x100, 8);
static int selectIds[] = { -9, -1, -8, -5 };
addCharacter(selectIds[_charSelection]);
Modified: scummvm/trunk/engines/kyra/lol.h
===================================================================
--- scummvm/trunk/engines/kyra/lol.h 2009-03-07 15:29:52 UTC (rev 39186)
+++ scummvm/trunk/engines/kyra/lol.h 2009-03-07 15:46:21 UTC (rev 39187)
@@ -305,6 +305,8 @@
// timers
void setupTimers();
void enableTimer(int id);
+ void enableSysTimer(int sysTimer);
+ void disableSysTimer(int sysTimer);
void timerProcessDoors(int timerNum);
void timerProcessMonsters(int timerNum);
@@ -518,6 +520,7 @@
int olol_clearDialogueField(EMCState *script);
int olol_getUnkArrayVal(EMCState *script);
int olol_setUnkArrayVal(EMCState *script);
+ int olol_getGlobalVar(EMCState *script);
int olol_setGlobalVar(EMCState *script);
int olol_mapShapeToBlock(EMCState *script);
int olol_resetBlockShapeAssignment(EMCState *script);
@@ -530,12 +533,14 @@
int olol_releaseTimScript(EMCState *script);
int olol_initDialogueSequence(EMCState *script);
int olol_restoreSceneAfterDialogueSequence(EMCState *script);
+ int olol_getItemInHand(EMCState *script);
int olol_giveItemToMonster(EMCState *script);
int olol_loadLangFile(EMCState *script);
int olol_playSoundEffect(EMCState *script);
int olol_stopTimScript(EMCState *script);
int olol_playCharacterScriptChat(EMCState *script);
int olol_loadSoundFile(EMCState *script);
+ int olol_stopCharacterSpeech(EMCState *script);
int olol_setPaletteBrightness(EMCState *script);
int olol_printMessage(EMCState *script);
int olol_playDialogueTalkText(EMCState *script);
@@ -985,9 +990,11 @@
// misc
void delay(uint32 millis, bool cUpdate = false, bool isMainLoop = false);
- void enableSysTimer(int sysTimer);
- void disableSysTimer(int sysTimer);
+ uint8 _unkBt1;
+ uint8 _unkBt2;
+ uint16 _unkWordArraySize8[8];
+
uint8 *_pageBuffer1;
uint8 *_pageBuffer2;
Modified: scummvm/trunk/engines/kyra/script_lol.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script_lol.cpp 2009-03-07 15:29:52 UTC (rev 39186)
+++ scummvm/trunk/engines/kyra/script_lol.cpp 2009-03-07 15:46:21 UTC (rev 39187)
@@ -455,8 +455,46 @@
return 1;
}
+int LoLEngine::olol_getGlobalVar(EMCState *script) {
+ debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_getGlobalVar(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
+
+ switch (stackPos(0)) {
+ case 0:
+ return _currentBlock;
+ case 1:
+ return _currentDirection;
+ case 2:
+ return _currentLevel;
+ case 3:
+ return _itemInHand;
+ case 4:
+ return _brightness;
+ case 5:
+ return _credits;
+ case 6:
+ return _unkWordArraySize8[stackPos(1)];
+ case 8:
+ return _updateFlags;
+ case 9:
+ return _lampStatusUnk;
+ case 10:
+ return _sceneDefaultUpdate;
+ case 11:
+ return _unkBt1;
+ case 12:
+ return _unkBt2;
+ case 13:
+ return _speechFlag;
+ default:
+ break;
+ }
+
+ return 0;
+}
+
int LoLEngine::olol_setGlobalVar(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_setGlobalVar(%p) (%d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2));
+ uint16 a = stackPos(1);
uint16 b = stackPos(2);
switch (stackPos(0)) {
@@ -487,7 +525,7 @@
break;
case 6:
- //TODO
+ _unkWordArraySize8[a] = b;
break;
case 7:
@@ -514,11 +552,11 @@
break;
case 11:
- //TODO
+ _unkBt1 = a & 0xff;
break;
case 12:
- //TODO
+ _unkBt2 = a & 0xff;
break;
default:
@@ -714,6 +752,11 @@
return 1;
}
+int LoLEngine::olol_getItemInHand(EMCState *script) {
+ debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_getItemInHand(%p))", (const void *)script);
+ return _itemInHand;
+}
+
int LoLEngine::olol_giveItemToMonster(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_giveItemToMonster(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
if (stackPos(0) == -1)
@@ -757,6 +800,13 @@
return 1;
}
+int LoLEngine::olol_stopCharacterSpeech(EMCState *script) {
+ debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_stopCharacterSpeech(%p)", (const void *)script);
+ snd_stopSpeech(1);
+ updatePortraits();
+ return 1;
+}
+
int LoLEngine::olol_setPaletteBrightness(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_setPaletteBrightness(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
uint16 old = _brightness;
@@ -1099,7 +1149,7 @@
OpcodeUnImpl();
Opcode(olol_getUnkArrayVal);
Opcode(olol_setUnkArrayVal);
- OpcodeUnImpl();
+ Opcode(olol_getGlobalVar);
// 0x30
Opcode(olol_setGlobalVar);
@@ -1153,7 +1203,7 @@
Opcode(olol_releaseTimScript);
Opcode(olol_initDialogueSequence);
Opcode(olol_restoreSceneAfterDialogueSequence);
- OpcodeUnImpl();
+ Opcode(olol_getItemInHand);
// 0x54
OpcodeUnImpl();
@@ -1188,7 +1238,7 @@
// 0x68
OpcodeUnImpl();
OpcodeUnImpl();
- OpcodeUnImpl();
+ Opcode(olol_stopCharacterSpeech);
Opcode(olol_setPaletteBrightness);
// 0x6C
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