diff options
author | James Brown | 2002-02-12 18:20:37 +0000 |
---|---|---|
committer | James Brown | 2002-02-12 18:20:37 +0000 |
commit | f620d138f6081488514f888706157eaeac3e19e5 (patch) | |
tree | 340e4b75e7d335c33bb6b8efabe2bab2256b87b9 /script.cpp | |
parent | 18dce61c9396bd56bdfa4a803da2af9b2c153b01 (diff) | |
download | scummvm-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.cpp | 22 |
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); } |