[Scummvm-cvs-logs] SF.net SVN: scummvm: [31170] scummvm/trunk/engines/kyra
athrxx at users.sourceforge.net
athrxx at users.sourceforge.net
Tue Mar 18 00:32:27 CET 2008
Revision: 31170
http://scummvm.svn.sourceforge.net/scummvm/?rev=31170&view=rev
Author: athrxx
Date: 2008-03-17 16:32:26 -0700 (Mon, 17 Mar 2008)
Log Message:
-----------
- implement opcode 29: o2_drawShape
Modified Paths:
--------------
scummvm/trunk/engines/kyra/kyra_v2.h
scummvm/trunk/engines/kyra/script_v2.cpp
Modified: scummvm/trunk/engines/kyra/kyra_v2.h
===================================================================
--- scummvm/trunk/engines/kyra/kyra_v2.h 2008-03-17 23:29:25 UTC (rev 31169)
+++ scummvm/trunk/engines/kyra/kyra_v2.h 2008-03-17 23:32:26 UTC (rev 31170)
@@ -466,6 +466,7 @@
void refreshAnimObjectsIfNeed();
void updateItemAnimations();
+ void flagAnimObjUnk8();
void flagAnimObjsForRefresh();
void updateCharFacing();
@@ -972,6 +973,7 @@
int o2_wsaOpen(ScriptState *script);
int o2_displayWsaSequentialFrames(ScriptState *script);
int o2_displayWsaSequence(ScriptState *script);
+ int o2_drawShape(ScriptState *script);
int o2_addItemToCurScene(ScriptState *script);
int o2_checkForItem(ScriptState *script);
int o2_removeItemSlotFromInventory(ScriptState *script);
Modified: scummvm/trunk/engines/kyra/script_v2.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script_v2.cpp 2008-03-17 23:29:25 UTC (rev 31169)
+++ scummvm/trunk/engines/kyra/script_v2.cpp 2008-03-17 23:32:26 UTC (rev 31170)
@@ -355,6 +355,33 @@
return 0;
}
+int KyraEngine_v2::o2_drawShape(ScriptState *script) {
+ debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_drawShape(%p) (%d, %d, %d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2), stackPos(3), stackPos(4));
+
+ uint8 *shp = getShapePtr(stackPos(0) + 64);
+ int x = stackPos(1);
+ int y = stackPos(2);
+ uint8 dsFlag = stackPos(3) & 0xff;
+ uint8 modeFlag = stackPos(4) & 0xff;
+
+ if (modeFlag) {
+ _screen->drawShape(2, shp, x, y, 2, dsFlag ? 1 : 0);
+ } else {
+ _screen->hideMouse();
+ restorePage3();
+ _screen->drawShape(2, shp, x, y, 2, dsFlag ? 1 : 0);
+ memcpy(_gamePlayBuffer, _screen->getCPagePtr(3), 46080);
+ _screen->drawShape(0, shp, x, y, 2, dsFlag ? 1 : 0);
+
+ flagAnimObjsForRefresh();
+ flagAnimObjUnk8();
+ refreshAnimObjectsIfNeed();
+ _screen->showMouse();
+ }
+
+ return 0;
+}
+
int KyraEngine_v2::o2_addItemToCurScene(ScriptState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_addItemToCurScene(%p) (%d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2));
const int16 id = stackPos(0);
@@ -543,7 +570,7 @@
_screen->drawShape(0, _sceneShapeTable[shape], x, y, 2, flag);
- //sub_B521();
+ flagAnimObjUnk8();
flagAnimObjsForRefresh();
refreshAnimObjectsIfNeed();
_screen->showMouse();
@@ -1468,7 +1495,7 @@
Opcode(o2_displayWsaSequence),
// 0x1c
OpcodeUnImpl(),
- OpcodeUnImpl(),
+ Opcode(o2_drawShape),
Opcode(o2_addItemToCurScene),
OpcodeUnImpl(),
// 0x20
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