[Scummvm-cvs-logs] SF.net SVN: scummvm:[50507] scummvm/trunk/engines/sci/engine/kernel.cpp
m_kiewitz at users.sourceforge.net
m_kiewitz at users.sourceforge.net
Tue Jun 29 23:41:36 CEST 2010
Revision: 50507
http://scummvm.svn.sourceforge.net/scummvm/?rev=50507&view=rev
Author: m_kiewitz
Date: 2010-06-29 21:41:36 +0000 (Tue, 29 Jun 2010)
Log Message:
-----------
SCI: implemented version specific signatures, added special kDrawCel signature for SCI1.1 (PC)/kq6
Modified Paths:
--------------
scummvm/trunk/engines/sci/engine/kernel.cpp
Modified: scummvm/trunk/engines/sci/engine/kernel.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kernel.cpp 2010-06-29 21:13:19 UTC (rev 50506)
+++ scummvm/trunk/engines/sci/engine/kernel.cpp 2010-06-29 21:41:36 UTC (rev 50507)
@@ -225,14 +225,15 @@
#define SIG_SCI32 SCI_VERSION_2, SCI_VERSION_NONE
#define SIGFOR_ALL 0x4f
-#define SIGFOR_PC 1 << 0
+#define SIGFOR_DOS 1 << 0
#define SIGFOR_PC98 1 << 1
#define SIGFOR_WIN 1 << 2
#define SIGFOR_MAC 1 << 3
#define SIGFOR_AMIGA 1 << 4
#define SIGFOR_ATARI 1 << 5
+#define SIGFOR_PC SIGFOR_DOS|SIGFOR_WIN
-#define SIG_EVERYWHERE SIG_SCI32, SIGFOR_ALL
+#define SIG_EVERYWHERE SIG_SCIALL, SIGFOR_ALL
#define MAP_CALL(_name_) #_name_, k##_name_
@@ -258,7 +259,8 @@
{ MAP_CALL(NumCels), SIG_EVERYWHERE, "o", NULL, NULL },
{ MAP_CALL(CelWide), SIG_EVERYWHERE, "iOi*", NULL, NULL },
{ MAP_CALL(CelHigh), SIG_EVERYWHERE, "iOi*", NULL, NULL },
- { MAP_CALL(DrawCel), SIG_EVERYWHERE, "iiiiii*i*r*", NULL, NULL },
+ { MAP_CALL(DrawCel), SIG_SCI11, SIGFOR_PC, "iiiiii*i*r*", NULL, NULL },
+ { MAP_CALL(DrawCel), SIG_EVERYWHERE, "iiiiii*i*", NULL, NULL },
{ MAP_CALL(AddToPic), SIG_EVERYWHERE, "Il*", NULL, NULL },
{ MAP_CALL(NewWindow), SIG_SCIALL, SIGFOR_MAC, "*.", NULL, NULL },
{ MAP_CALL(NewWindow), SIG_EVERYWHERE, "iiiiZRi*", NULL, NULL },
@@ -595,10 +597,11 @@
int ignored = 0;
uint functionCount = _kernelNames.size();
byte platformMask = 0;
+ SciVersion myVersion = getSciVersion();
switch (g_sci->getPlatform()) {
case Common::kPlatformPC:
- platformMask = SIGFOR_PC;
+ platformMask = SIGFOR_DOS;
break;
case Common::kPlatformPC98:
platformMask = SIGFOR_PC98;
@@ -647,8 +650,10 @@
bool nameMatch = false;
while (kernelMap->name) {
if (sought_name == kernelMap->name) {
- if (platformMask & kernelMap->forPlatform)
- break;
+ if ((kernelMap->fromVersion == SCI_VERSION_NONE) || (kernelMap->fromVersion >= myVersion))
+ if ((kernelMap->toVersion == SCI_VERSION_NONE) || (kernelMap->toVersion <= myVersion))
+ if (platformMask & kernelMap->forPlatform)
+ break;
nameMatch = true;
}
kernelMap++;
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