[Scummvm-cvs-logs] SF.net SVN: scummvm:[50085] scummvm/trunk/engines/sci
m_kiewitz at users.sourceforge.net
m_kiewitz at users.sourceforge.net
Sun Jun 20 19:08:39 CEST 2010
Revision: 50085
http://scummvm.svn.sourceforge.net/scummvm/?rev=50085&view=rev
Author: m_kiewitz
Date: 2010-06-20 17:08:39 +0000 (Sun, 20 Jun 2010)
Log Message:
-----------
SCI: implementing kPalVary(2)
Modified Paths:
--------------
scummvm/trunk/engines/sci/engine/kgraphics.cpp
scummvm/trunk/engines/sci/graphics/palette.cpp
scummvm/trunk/engines/sci/graphics/palette.h
Modified: scummvm/trunk/engines/sci/engine/kgraphics.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kgraphics.cpp 2010-06-20 16:48:52 UTC (rev 50084)
+++ scummvm/trunk/engines/sci/engine/kgraphics.cpp 2010-06-20 17:08:39 UTC (rev 50085)
@@ -653,7 +653,8 @@
ticks = argv[2].toUint16();
stepStop = argc >= 4 ? argv[3].toUint16() : 64;
direction = argc >= 5 ? argv[4].toUint16() : 1;
- g_sci->_gfxPalette->kernelPalVaryInit(paletteId, ticks, stepStop, direction);
+ if (g_sci->_gfxPalette->kernelPalVaryInit(paletteId, ticks, stepStop, direction))
+ return SIGNAL_REG;
warning("kPalVary(init) called with paletteId = %d, ticks = %d, stop = %d, direction = %d", paletteId, ticks, stepStop, direction);
} else {
warning("kPalVary(init) called with unsupported argc %d", argc);
@@ -664,9 +665,13 @@
warning("kPalVary(1) called with parameter %d (argc %d)", argv[1].toUint16(), argc);
break;
}
- case 2: { // Unknown
- // Called in QFG4 demo (1 parameter)
- warning("kPalVary(2) called with parameter %d (argc %d)", argv[1].toUint16(), argc);
+ case 2: { // Get Current Step
+ if (argc == 1) {
+ int16 currentStep = g_sci->_gfxPalette->kernelPalVaryGetCurrentStep();
+ return make_reg(0, currentStep);
+ } else {
+ warning("kPalVary(GetCurrentStep) called with unsupported argc %d", argc);
+ }
break;
}
case 3: { // DeInit
@@ -687,11 +692,11 @@
warning("kPalVary(5) called with parameter %d (argc %d)", argv[1].toUint16(), argc);
break;
}
- case 6: { // Pause
+ case 6: { // Pause/Resume
bool pauseState;
if (argc == 2) {
pauseState = argv[1].isNull() ? false : true;
- g_sci->_gfxPalette->kernelPalVaryToggle(pauseState);
+ g_sci->_gfxPalette->kernelPalVaryPause(pauseState);
warning("kPalVary(pause) called with state = %d", pauseState);
} else {
warning("kPalVary(pause) called with unsupported argc %d", argc);
Modified: scummvm/trunk/engines/sci/graphics/palette.cpp
===================================================================
--- scummvm/trunk/engines/sci/graphics/palette.cpp 2010-06-20 16:48:52 UTC (rev 50084)
+++ scummvm/trunk/engines/sci/graphics/palette.cpp 2010-06-20 17:08:39 UTC (rev 50085)
@@ -488,11 +488,11 @@
_palVaryDirection = 0;
}
-void GfxPalette::kernelPalVaryInit(GuiResourceId resourceId, uint16 ticks, uint16 stepStop, int16 direction) {
+bool GfxPalette::kernelPalVaryInit(GuiResourceId resourceId, uint16 ticks, uint16 stepStop, int16 direction) {
//kernelSetFromResource(resourceId, true);
//return;
if (_palVaryResourceId != -1) // another palvary is taking place, return
- return;
+ return false;
_palVaryResourceId = resourceId;
Resource *palResource = _resMan->findResource(ResourceId(kResourceTypePalette, resourceId), 0);
@@ -513,10 +513,20 @@
}
// Call signal increase every [ticks]
g_sci->getTimerManager()->installTimerProc(&palVaryCallback, 1000000 / 60 * ticks, this);
+ return true;
}
+ return false;
}
-void GfxPalette::kernelPalVaryToggle(bool pause) {
+int16 GfxPalette::kernelPalVaryGetCurrentStep() {
+ if (_palVaryDirection >= 0)
+ return _palVaryStep;
+ return -_palVaryStep;
+}
+
+void GfxPalette::kernelPalVaryPause(bool pause) {
+ if (_palVaryResourceId == -1)
+ return;
// this call is actually counting states, so calling this 3 times with true will require calling it later
// 3 times with false to actually remove pause
if (pause) {
Modified: scummvm/trunk/engines/sci/graphics/palette.h
===================================================================
--- scummvm/trunk/engines/sci/graphics/palette.h 2010-06-20 16:48:52 UTC (rev 50084)
+++ scummvm/trunk/engines/sci/graphics/palette.h 2010-06-20 17:08:39 UTC (rev 50085)
@@ -62,8 +62,9 @@
void kernelAnimateSet();
void kernelAssertPalette(GuiResourceId resourceId);
- void kernelPalVaryInit(GuiResourceId resourceId, uint16 ticks, uint16 stopPercentage, int16 direction);
- void kernelPalVaryToggle(bool pause);
+ bool kernelPalVaryInit(GuiResourceId resourceId, uint16 ticks, uint16 stopPercentage, int16 direction);
+ int16 kernelPalVaryGetCurrentStep();
+ void kernelPalVaryPause(bool pause);
void kernelPalVaryDeinit();
void palVaryUpdate();
void palVaryProcess(int signal, bool setPalette);
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