[Scummvm-cvs-logs] SF.net SVN: scummvm: [31665] scummvm/trunk/engines/kyra
lordhoto at users.sourceforge.net
lordhoto at users.sourceforge.net
Wed Apr 23 19:08:34 CEST 2008
Revision: 31665
http://scummvm.svn.sourceforge.net/scummvm/?rev=31665&view=rev
Author: lordhoto
Date: 2008-04-23 10:08:34 -0700 (Wed, 23 Apr 2008)
Log Message:
-----------
- Implemented opcode: 14: o3_moveCharacter
- Fixed opcode 44 and renamed it to o3_handItemSet, this fixes loads of input and enter scene facing problems.
Modified Paths:
--------------
scummvm/trunk/engines/kyra/kyra_v3.h
scummvm/trunk/engines/kyra/scene_v3.cpp
scummvm/trunk/engines/kyra/script_v3.cpp
Modified: scummvm/trunk/engines/kyra/kyra_v3.h
===================================================================
--- scummvm/trunk/engines/kyra/kyra_v3.h 2008-04-23 16:06:33 UTC (rev 31664)
+++ scummvm/trunk/engines/kyra/kyra_v3.h 2008-04-23 17:08:34 UTC (rev 31665)
@@ -587,6 +587,7 @@
int o3_getCharacterScene(ScriptState *script);
int o3_getMalcolmsSpirit(ScriptState *script);
int o3_trySceneChange(ScriptState *script);
+ int o3_moveCharacter(ScriptState *script);
int o3_showSceneFileMessage(ScriptState *script);
int o3_showBadConscience(ScriptState *script);
int o3_hideBadConscience(ScriptState *script);
@@ -599,7 +600,7 @@
int o3_setGameFlag(ScriptState *script);
int o3_setHandItem(ScriptState *script);
int o3_removeHandItem(ScriptState *script);
- int o3_getHandItem(ScriptState *script);
+ int o3_handItemSet(ScriptState *script);
int o3_hideMouse(ScriptState *script);
int o3_addSpecialExit(ScriptState *script);
int o3_setMousePos(ScriptState *script);
@@ -619,6 +620,7 @@
int o3_stopMusic(ScriptState *script);
int o3_playMusicTrack(ScriptState *script);
int o3_playSoundEffect(ScriptState *script);
+ int o3_blockOutRegion(ScriptState *script);
int o3_getRand(ScriptState *script);
int o3_defineRoomEntrance(ScriptState *script);
int o3_setSpecialSceneScriptRunTime(ScriptState *script);
Modified: scummvm/trunk/engines/kyra/scene_v3.cpp
===================================================================
--- scummvm/trunk/engines/kyra/scene_v3.cpp 2008-04-23 16:06:33 UTC (rev 31664)
+++ scummvm/trunk/engines/kyra/scene_v3.cpp 2008-04-23 17:08:34 UTC (rev 31665)
@@ -136,11 +136,9 @@
_sceneExit3 = _sceneList[sceneId].exit3;
_sceneExit4 = _sceneList[sceneId].exit4;
-
while (_system->getMillis() < waitUntilTimer)
_system->delayMillis(10);
-
musicUpdate(0);
initSceneScript(unk3);
musicUpdate(0);
Modified: scummvm/trunk/engines/kyra/script_v3.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script_v3.cpp 2008-04-23 16:06:33 UTC (rev 31664)
+++ scummvm/trunk/engines/kyra/script_v3.cpp 2008-04-23 17:08:34 UTC (rev 31665)
@@ -132,6 +132,12 @@
}
}
+int KyraEngine_v3::o3_moveCharacter(ScriptState *script) {
+ debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v3::o3_moveCharacter(%p) (%d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2));
+ moveCharacter(stackPos(0), stackPos(1), stackPos(2));
+ return 0;
+}
+
int KyraEngine_v3::o3_showSceneFileMessage(ScriptState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v3::o3_showSceneFileMessage(%p) (%d)", (const void *)script, stackPos(0));
showMessage((const char*)getTableEntry(_scenesFile, stackPos(0)), 0xFF, 0xF0);
@@ -216,9 +222,9 @@
return 0;
}
-int KyraEngine_v3::o3_getHandItem(ScriptState *script) {
- debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v3::o3_getHandItem(%p) ()", (const void *)script);
- return _itemInHand;
+int KyraEngine_v3::o3_handItemSet(ScriptState *script) {
+ debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v3::o3_handItemSet(%p) ()", (const void *)script);
+ return _handItemSet;
}
int KyraEngine_v3::o3_hideMouse(ScriptState *script) {
@@ -618,6 +624,22 @@
return 0;
}
+int KyraEngine_v3::o3_blockOutRegion(ScriptState *script) {
+ debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v3::o3_blockOutRegion(%p) (%d, %d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2), stackPos(3));
+ const int x1 = stackPos(0);
+ int y1 = stackPos(1);
+ const int x2 = stackPos(2);
+ int y2 = stackPos(3);
+
+ if (y1 < _maskPageMinY)
+ y1 = _maskPageMinY;
+ if (y2 > _maskPageMaxY)
+ y2 = _maskPageMaxY;
+
+ _screen->blockOutRegion(x1, y1, x2-x1+1, y2-y1+1);
+ return 0;
+}
+
int KyraEngine_v3::o3_getRand(ScriptState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v3::o3_getRand(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
assert(stackPos(0) < stackPos(1));
@@ -978,8 +1000,8 @@
// 0x0c
OpcodeUnImpl();
Opcode(o3_trySceneChange);
+ Opcode(o3_moveCharacter);
OpcodeUnImpl();
- OpcodeUnImpl();
// 0x10
OpcodeUnImpl();
Opcode(o3_showSceneFileMessage);
@@ -1016,7 +1038,7 @@
Opcode(o3_setHandItem);
Opcode(o3_removeHandItem);
// 0x2c
- Opcode(o3_getHandItem);
+ Opcode(o3_handItemSet);
Opcode(o3_hideMouse);
Opcode(o3_addSpecialExit);
Opcode(o3_setMousePos);
@@ -1076,7 +1098,7 @@
OpcodeUnImpl();
OpcodeUnImpl();
// 0x5c
- OpcodeUnImpl();
+ Opcode(o3_blockOutRegion);
Opcode(o3_dummy);
OpcodeUnImpl();
OpcodeUnImpl();
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