aboutsummaryrefslogtreecommitdiff
path: root/scumm
diff options
context:
space:
mode:
authorChris Apers2005-03-11 10:46:28 +0000
committerChris Apers2005-03-11 10:46:28 +0000
commit8e77e899d0967af3099258e4548f834edb53498b (patch)
tree13c6b2b05aecd4f2c925feae7a768b04e110607c /scumm
parentc75753c821ae9506fcfa6ad69fcd05f28f2ddce6 (diff)
downloadscummvm-rg350-8e77e899d0967af3099258e4548f834edb53498b.tar.gz
scummvm-rg350-8e77e899d0967af3099258e4548f834edb53498b.tar.bz2
scummvm-rg350-8e77e899d0967af3099258e4548f834edb53498b.zip
PalmOS : move MD5 table to a database too save memory and data segment space
svn-id: r17075
Diffstat (limited to 'scumm')
-rw-r--r--scumm/scumm.cpp28
1 files changed, 25 insertions, 3 deletions
diff --git a/scumm/scumm.cpp b/scumm/scumm.cpp
index 452050084c..508ff7878f 100644
--- a/scumm/scumm.cpp
+++ b/scumm/scumm.cpp
@@ -53,7 +53,11 @@
#include "scumm/resource.h"
#include "scumm/resource_v7he.h"
#include "scumm/scumm.h"
+#ifdef __PALM_OS__
+#include "extras/palm-scumm-md5.h"
+#else
#include "scumm/scumm-md5.h"
+#endif
#include "scumm/sound.h"
#include "scumm/verbs.h"
@@ -387,6 +391,7 @@ static const ScummGameSettings scumm_settings[] = {
//
// Please, add new entries sorted alpabetically
static const ScummGameSettings multiple_versions_md5_settings[] = {
+#ifndef __PALM_OS__
{"084ed0fa98a6d1e9368d67fe9cfbd417", "Freddi Fish 1: The Case of the Missing Kelp Seeds (Demo) (puttputt cd)", GID_HEGAME, 6, 71, 13, MDT_NONE,
GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0},
{"0ab19be9e2a3f6938226638b2a3744fe", "Putt-Putt Travels Through Time (Updated Demo)", GID_HEGAME, 6, 100, 31, MDT_NONE,
@@ -463,7 +468,7 @@ static const ScummGameSettings multiple_versions_md5_settings[] = {
GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0}, // PJSamDemo
{"e41de1c2a15abbcdbf9977e2d7e8a340", "Freddi Fish 2: The Case of the Haunted Schoolhouse (Updated Ru)", GID_HEGAME, 6, 100, 61, MDT_NONE, // FIXME: number of actors
GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0}, // FreddiCHSH
-
+#endif
{NULL, NULL, 0, 0, 0, MDT_NONE, 0, 0, 0, 0}
};
@@ -575,8 +580,12 @@ ScummEngine::ScummEngine(GameDetector *detector, OSystem *syst, const ScummGameS
sprintf(md5str + j*2, "%02x", (int)md5sum[j]);
}
const MD5Table *elem;
- elem = (const MD5Table *)bsearch(md5str, md5table, ARRAYSIZE(md5table)-1, sizeof(MD5Table), compareMD5Table);
-
+#ifdef __PALM_OS__
+ uint32 arraySize = MemPtrSize((void *)md5table) / sizeof(MD5Table) - 1;
+#else
+ uint32 arraySize = ARRAYSIZE(md5table) - 1;
+#endif
+ elem = (const MD5Table *)bsearch(md5str, md5table, arraySize, sizeof(MD5Table), compareMD5Table);
if (!elem)
printf("Unknown MD5 (%s)! Please report the details (language, platform, etc.) of this game to the ScummVM team\n", md5str);
@@ -3131,3 +3140,16 @@ Engine *Engine_SCUMM_create(GameDetector *detector, OSystem *syst) {
}
REGISTER_PLUGIN("Scumm Engine", Engine_SCUMM_gameList, Engine_SCUMM_create, Engine_SCUMM_detectGames)
+
+#ifdef __PALM_OS__
+#include "scumm_globals.h"
+
+_GINIT(Scumm_md5table)
+_GSETPTR(md5table, GBVARS_MD5TABLE_INDEX, MD5Table, GBVARS_SCUMM)
+_GEND
+
+_GRELEASE(Scumm_md5table)
+_GRELEASEPTR(GBVARS_MD5TABLE_INDEX, GBVARS_SCUMM)
+_GEND
+
+#endif