diff options
author | Jussi Pitkanen | 2011-06-04 18:12:26 +0300 |
---|---|---|
committer | Eugene Sandulenko | 2011-08-13 23:26:29 +0100 |
commit | 4d4a558f7beda9e3732dd30f16a6e73f5e805df2 (patch) | |
tree | 217ab81b0137dbd567b5cd2efe7202f8d4d3e51b /engines/agi/loader_v1.cpp | |
parent | 1f680ecbc83f34749911dd45be130b0580eb37a9 (diff) | |
download | scummvm-rg350-4d4a558f7beda9e3732dd30f16a6e73f5e805df2.tar.gz scummvm-rg350-4d4a558f7beda9e3732dd30f16a6e73f5e805df2.tar.bz2 scummvm-rg350-4d4a558f7beda9e3732dd30f16a6e73f5e805df2.zip |
AGI: Do not try to pass filenames of disk images from the detector to engine
Diffstat (limited to 'engines/agi/loader_v1.cpp')
-rw-r--r-- | engines/agi/loader_v1.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/engines/agi/loader_v1.cpp b/engines/agi/loader_v1.cpp index 40f797286f..90655ec735 100644 --- a/engines/agi/loader_v1.cpp +++ b/engines/agi/loader_v1.cpp @@ -21,6 +21,7 @@ */ #include "agi/agi.h" +#include "common/md5.h" #define offsetTHS(track,head,sector) (512 * ((((track) * 2 + (head)) * 9) + (sector))) #define offset(sector) offsetTHS(sector / 18, (sector % 18) / 9, (sector % 18) % 9) @@ -41,6 +42,18 @@ namespace Agi { + +AgiLoader_v1::AgiLoader_v1(AgiEngine *vm) { + _vm = vm; + + // Find filenames for the disk images + Common::String md5Disk0, md5Disk1; + getBooterMD5Sums((AgiGameID)_vm->getGameID(), md5Disk0, md5Disk1); + diskImageExists(md5Disk0, _filenameDisk0); + if (!md5Disk1.empty()) + diskImageExists(md5Disk1, _filenameDisk1); +} + int AgiLoader_v1::detectGame() { return _vm->setupV2Game(_vm->getVersion()); } @@ -48,7 +61,7 @@ int AgiLoader_v1::detectGame() { int AgiLoader_v1::loadDir(AgiDir *agid, int offset, int num) { Common::File fp; - if (!fp.open(_dsk0Name)) + if (!fp.open(_filenameDisk0)) return errBadFileOpen; // Cleanup @@ -108,7 +121,7 @@ uint8 *AgiLoader_v1::loadVolRes(struct AgiDir *agid) { int sec = agid->offset >> 16; int off = agid->offset & 0xFFFF; - fp.open(_dsk0Name); + fp.open(_filenameDisk0); fp.seek(offset(sec) + off, SEEK_SET); int signature = fp.readUint16BE(); |