From 097e0a74a9cbd96532b853de4b2806ba96f2a693 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Thu, 19 May 2005 14:15:34 +0000 Subject: 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 --- scumm/util.h | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'scumm/util.h') 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); -- cgit v1.2.3