[Scummvm-cvs-logs] SF.net SVN: scummvm:[50100] scummvm/trunk/engines/sci
m_kiewitz at users.sourceforge.net
m_kiewitz at users.sourceforge.net
Sun Jun 20 23:12:16 CEST 2010
Revision: 50100
http://scummvm.svn.sourceforge.net/scummvm/?rev=50100&view=rev
Author: m_kiewitz
Date: 2010-06-20 21:12:15 +0000 (Sun, 20 Jun 2010)
Log Message:
-----------
SCI: implemented kPalVary(changeTicks)
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 20:52:31 UTC (rev 50099)
+++ scummvm/trunk/engines/sci/engine/kgraphics.cpp 2010-06-20 21:12:15 UTC (rev 50100)
@@ -673,7 +673,7 @@
warning("kPalVary(reverse) called with ticks = %d, stop = %d, direction = %d", ticks, stepStop, direction);
return make_reg(0, result);
} else {
- warning("kPalVary(1) called with parameter %d (argc %d)", argv[1].toUint16(), argc);
+ warning("kPalVary(reverse) called with parameter %d (argc %d)", argv[1].toUint16(), argc);
}
}
case 2: { // Get Current Step
@@ -694,13 +694,18 @@
}
break;
}
- case 4: { // Unknown
- warning("kPalVary(4) called with parameter %d (argc %d)", argv[1].toUint16(), argc);
+ case 4: { // Change Target
+ // seems to be 1 parameter, we should find a game that is using this feature before implementing it
+ warning("kPalVary(changeTarget) called with parameter %d (argc %d)", argv[1].toUint16(), argc);
break;
}
- case 5: { // Unknown
- // Called in xmas 1992 demo (2 parameters)
- warning("kPalVary(5) called with parameter %d (argc %d)", argv[1].toUint16(), argc);
+ case 5: { // Change ticks
+ if (argc == 2) {
+ uint16 ticks = argv[1].toUint16();
+ g_sci->_gfxPalette->kernelPalVaryChangeTicks(ticks);
+ } else {
+ warning("kPalVary(changeTicks) called with parameter %d (argc %d)", argv[1].toUint16(), argc);
+ }
break;
}
case 6: { // Pause/Resume
Modified: scummvm/trunk/engines/sci/graphics/palette.cpp
===================================================================
--- scummvm/trunk/engines/sci/graphics/palette.cpp 2010-06-20 20:52:31 UTC (rev 50099)
+++ scummvm/trunk/engines/sci/graphics/palette.cpp 2010-06-20 21:12:15 UTC (rev 50100)
@@ -519,6 +519,10 @@
g_sci->getTimerManager()->installTimerProc(&palVaryCallback, 1000000 / 60 * ticks, this);
}
+void GfxPalette::palVaryRemoveTimer() {
+ g_sci->getTimerManager()->removeTimerProc(&palVaryCallback);
+}
+
bool GfxPalette::kernelPalVaryInit(GuiResourceId resourceId, uint16 ticks, uint16 stepStop, uint16 direction) {
if (_palVaryResourceId != -1) // another palvary is taking place, return
return false;
@@ -564,6 +568,14 @@
return -_palVaryStep;
}
+void GfxPalette::kernelPalVaryChangeTicks(uint16 ticks) {
+ _palVaryTicks = ticks;
+ if (_palVaryStep - _palVaryStepStop) {
+ palVaryRemoveTimer();
+ palVaryInstallTimer();
+ }
+}
+
void GfxPalette::kernelPalVaryPause(bool pause) {
if (_palVaryResourceId == -1)
return;
@@ -578,7 +590,7 @@
}
void GfxPalette::kernelPalVaryDeinit() {
- g_sci->getTimerManager()->removeTimerProc(&palVaryCallback);
+ palVaryRemoveTimer();
_palVaryResourceId = -1; // invalidate the target palette
}
@@ -624,7 +636,7 @@
// We don't need updates anymore, if we reached end-position
if (_palVaryStep == _palVaryStepStop)
- g_sci->getTimerManager()->removeTimerProc(&palVaryCallback);
+ palVaryRemoveTimer();
if (_palVaryStep == 0)
_palVaryResourceId = -1;
Modified: scummvm/trunk/engines/sci/graphics/palette.h
===================================================================
--- scummvm/trunk/engines/sci/graphics/palette.h 2010-06-20 20:52:31 UTC (rev 50099)
+++ scummvm/trunk/engines/sci/graphics/palette.h 2010-06-20 21:12:15 UTC (rev 50100)
@@ -66,6 +66,7 @@
bool kernelPalVaryInit(GuiResourceId resourceId, uint16 ticks, uint16 stepStop, uint16 direction);
int16 kernelPalVaryReverse(int16 ticks, uint16 stepStop, int16 direction);
int16 kernelPalVaryGetCurrentStep();
+ void kernelPalVaryChangeTicks(uint16 ticks);
void kernelPalVaryPause(bool pause);
void kernelPalVaryDeinit();
void palVaryUpdate();
@@ -77,6 +78,7 @@
private:
void palVaryInit();
void palVaryInstallTimer();
+ void palVaryRemoveTimer();
bool palVaryLoadTargetPalette(GuiResourceId resourceId);
static void palVaryCallback(void *refCon);
void palVaryIncreaseSignal();
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