diff options
Diffstat (limited to 'engines/sci/engine/kscripts.cpp')
-rw-r--r-- | engines/sci/engine/kscripts.cpp | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/engines/sci/engine/kscripts.cpp b/engines/sci/engine/kscripts.cpp index 0e29ccf783..77ef92b349 100644 --- a/engines/sci/engine/kscripts.cpp +++ b/engines/sci/engine/kscripts.cpp @@ -102,15 +102,9 @@ reg_t kLock(EngineState *s, int argc, reg_t *argv) { } reg_t kResCheck(EngineState *s, int argc, reg_t *argv) { - Resource *res = NULL; + Resource *res = nullptr; ResourceType restype = g_sci->getResMan()->convertResType(argv[0].toUint16()); - if (restype == kResourceTypeVMD) { - char fileName[10]; - sprintf(fileName, "%d.vmd", argv[1].toUint16()); - return make_reg(0, Common::File::exists(fileName)); - } - if ((restype == kResourceTypeAudio36) || (restype == kResourceTypeSync36)) { if (argc >= 6) { uint noun = argv[2].toUint16() & 0xff; @@ -124,7 +118,16 @@ reg_t kResCheck(EngineState *s, int argc, reg_t *argv) { res = g_sci->getResMan()->testResource(ResourceId(restype, argv[1].toUint16())); } - return make_reg(0, res != NULL); +#ifdef ENABLE_SCI32 + // GK2 stores some VMDs inside of resource volumes, but usually they are + // streamed from the filesystem + if (res == nullptr && restype == kResourceTypeVMD) { + const Common::String fileName = Common::String::format("%u.vmd", argv[1].toUint16()); + return make_reg(0, Common::File::exists(fileName)); + } +#endif + + return make_reg(0, res != nullptr); } reg_t kClone(EngineState *s, int argc, reg_t *argv) { |