aboutsummaryrefslogtreecommitdiff
path: root/script.cpp
diff options
context:
space:
mode:
authorJames Brown2002-02-12 18:20:37 +0000
committerJames Brown2002-02-12 18:20:37 +0000
commitf620d138f6081488514f888706157eaeac3e19e5 (patch)
tree340e4b75e7d335c33bb6b8efabe2bab2256b87b9 /script.cpp
parent18dce61c9396bd56bdfa4a803da2af9b2c153b01 (diff)
downloadscummvm-rg350-f620d138f6081488514f888706157eaeac3e19e5.tar.gz
scummvm-rg350-f620d138f6081488514f888706157eaeac3e19e5.tar.bz2
scummvm-rg350-f620d138f6081488514f888706157eaeac3e19e5.zip
First part of Yazoo and mines work on making older scumm games work.
Not enough here to actually work yet, just the base groundwork needed. svn-id: r3567
Diffstat (limited to 'script.cpp')
-rw-r--r--script.cpp22
1 files changed, 17 insertions, 5 deletions
diff --git a/script.cpp b/script.cpp
index ae41708a25..6bdaa5bd88 100644
--- a/script.cpp
+++ b/script.cpp
@@ -37,7 +37,10 @@ void Scumm::runScript(int script, int a, int b, int16 *lvarptr) {
if (script < _numGlobalScripts) {
scriptPtr = getResourceAddress(rtScript, script);
- scriptOffs = 8;
+ if(_features & GF_SMALL_HEADER)
+ scriptOffs = 6;
+ else
+ scriptOffs = 8;
scriptType = WIO_GLOBAL;
} else {
scriptOffs = _localScriptList[script - _numGlobalScripts];
@@ -662,7 +665,7 @@ void Scumm::runVerbCode(int object, int entry, int a, int b, int16 *vars) {
slot = getScriptSlot();
offs = getVerbEntrypoint(object, entry);
- if (offs==0)
+ if (offs==0)
return;
vm.slot[slot].number = object;
@@ -700,13 +703,19 @@ int Scumm::getVerbEntrypoint(int obj, int entry) {
objptr = getOBCDFromObject(obj);
assert(objptr);
- verbptr = findResource(MKID('VERB'), objptr);
+ if(_features & GF_SMALL_HEADER)
+ verbptr = objptr+19;
+ else
+ verbptr = findResource(MKID('VERB'), objptr);
+
if (verbptr==NULL)
error("No verb block in object %d", obj);
verboffs = verbptr - objptr;
- verbptr += _resourceHeaderSize;
+ if(!(_features & GF_SMALL_HEADER))
+ verbptr += _resourceHeaderSize;
+
do {
if (!*verbptr)
return 0;
@@ -715,7 +724,10 @@ int Scumm::getVerbEntrypoint(int obj, int entry) {
verbptr += 3;
} while (1);
- return verboffs + READ_LE_UINT16(verbptr+1);
+ if(_features & GF_SMALL_HEADER)
+ return READ_LE_UINT16(verbptr+1);
+ else
+ return verboffs + READ_LE_UINT16(verbptr+1);
}