diff options
author | Max Horn | 2002-12-27 15:11:43 +0000 |
---|---|---|
committer | Max Horn | 2002-12-27 15:11:43 +0000 |
commit | 6311835f798542c9506365bf7cd2102096df7ff5 (patch) | |
tree | 9ff76c982db0bd9bf2fe5cb763ed24b2792da3ad /scumm/script.cpp | |
parent | 8049e0625811b4fef2113f08a348cb6fba273cbf (diff) | |
download | scummvm-rg350-6311835f798542c9506365bf7cd2102096df7ff5.tar.gz scummvm-rg350-6311835f798542c9506365bf7cd2102096df7ff5.tar.bz2 scummvm-rg350-6311835f798542c9506365bf7cd2102096df7ff5.zip |
fixed verb entry code for V8
svn-id: r6199
Diffstat (limited to 'scumm/script.cpp')
-rw-r--r-- | scumm/script.cpp | 38 |
1 files changed, 26 insertions, 12 deletions
diff --git a/scumm/script.cpp b/scumm/script.cpp index b694ef02b8..3f5d5edd9b 100644 --- a/scumm/script.cpp +++ b/scumm/script.cpp @@ -883,18 +883,32 @@ int Scumm::getVerbEntrypoint(int obj, int entry) if (!(_features & GF_SMALL_HEADER)) verbptr += _resourceHeaderSize; - do { - if (!*verbptr) - return 0; - if (*verbptr == entry || *verbptr == 0xFF) - break; - verbptr += 3; - } while (1); - - if (_features & GF_SMALL_HEADER) - return READ_LE_UINT16(verbptr + 1); - else - return verboffs + READ_LE_UINT16(verbptr + 1); + if (_features & GF_AFTER_V8) { + uint32 *ptr = (uint32 *)verbptr; + uint32 verb; + do { + verb = READ_LE_UINT32(ptr); + if (!verb) + return 0; + if (verb == (uint32)entry || verb == 0xFFFFFFFF) + break; + ptr += 2; + } while (1); + return verboffs + 8 + READ_LE_UINT32(ptr + 1); + } else { + do { + if (!*verbptr) + return 0; + if (*verbptr == entry || *verbptr == 0xFF) + break; + verbptr += 3; + } while (1); + + if (_features & GF_SMALL_HEADER) + return READ_LE_UINT16(verbptr + 1); + else + return verboffs + READ_LE_UINT16(verbptr + 1); + } } void Scumm::endCutscene() |