aboutsummaryrefslogtreecommitdiff
path: root/engines/agi/loader_v1.cpp
diff options
context:
space:
mode:
authorJussi Pitkanen2011-06-04 18:12:26 +0300
committerEugene Sandulenko2011-08-13 23:26:29 +0100
commit4d4a558f7beda9e3732dd30f16a6e73f5e805df2 (patch)
tree217ab81b0137dbd567b5cd2efe7202f8d4d3e51b /engines/agi/loader_v1.cpp
parent1f680ecbc83f34749911dd45be130b0580eb37a9 (diff)
downloadscummvm-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.cpp17
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();