aboutsummaryrefslogtreecommitdiff
path: root/scumm/util.h
diff options
context:
space:
mode:
authorEugene Sandulenko2005-05-19 14:15:34 +0000
committerEugene Sandulenko2005-05-19 14:15:34 +0000
commit097e0a74a9cbd96532b853de4b2806ba96f2a693 (patch)
tree0f4658150fedbbf373abd4854b02e176d3564779 /scumm/util.h
parent7d0d766988f68a8ab176d859f79467af414f5d87 (diff)
downloadscummvm-rg350-097e0a74a9cbd96532b853de4b2806ba96f2a693.tar.gz
scummvm-rg350-097e0a74a9cbd96532b853de4b2806ba96f2a693.tar.bz2
scummvm-rg350-097e0a74a9cbd96532b853de4b2806ba96f2a693.zip
o Implement direct disk reading for C64.
o Added new parameter to ScummEngine constructor which passed substitute file name index. It eliminates a long-standing hack and simplifies bundles porocessing considerably o Thus simplified detection/reading MM NES PRG file. svn-id: r18183
Diffstat (limited to 'scumm/util.h')
-rw-r--r--scumm/util.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/scumm/util.h b/scumm/util.h
index a687a83b41..989db6a001 100644
--- a/scumm/util.h
+++ b/scumm/util.h
@@ -111,6 +111,52 @@ public:
};
+class ScummC64File : public BaseScummFile {
+private:
+ Common::MemoryReadStream *_stream;
+ byte _roomDisks[59], _roomTracks[59], _roomSectors[59];
+
+ byte *_buf;
+
+ bool _maniac;
+ Common::String _disk1, _disk2;
+ int _openedDisk;
+
+ int _numGlobalObjects;
+ int _numRooms;
+ int _numCostumes;
+ int _numScripts;
+ int _numSounds;
+ const int *_resourcesPerFile;
+
+ bool openDisk(char num);
+
+ bool generateIndex();
+ bool generateResource(int res);
+
+ uint16 extractIndex(Common::WriteStream *out);
+ uint16 extractResource(Common::WriteStream *out, int res);
+
+ byte fileReadByte();
+ uint16 fileReadUint16LE();
+
+public:
+ ScummC64File(char *disk1, char *disk2, bool maniac);
+ void setEnc(byte value);
+
+ bool open(const char *filename, AccessMode mode = kFileReadMode);
+ bool openSubFile(const char *filename);
+
+ void close();
+ bool eof() { return _stream->eos(); }
+ uint32 pos() { return _stream->pos(); }
+ uint32 size() { return _stream->size(); }
+ void seek(int32 offs, int whence = SEEK_SET) { _stream->seek(offs, whence); }
+ uint32 read(void *dataPtr, uint32 dataSize) { return _stream->read(dataPtr, dataSize); }
+ uint32 write(const void *dataPtr, uint32 dataSize);
+};
+
+
/* Direction conversion functions (between old dir and new dir format) */
int newDirToOldDir(int dir);
int oldDirToNewDir(int dir);