diff options
Diffstat (limited to 'engines/adl/hires6.cpp')
-rw-r--r-- | engines/adl/hires6.cpp | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/engines/adl/hires6.cpp b/engines/adl/hires6.cpp index c3c4138bf0..c44a917a1b 100644 --- a/engines/adl/hires6.cpp +++ b/engines/adl/hires6.cpp @@ -164,6 +164,15 @@ void HiRes6Engine::init() { desc.volume = stream->readByte(); _diskDataDesc.push_back(desc); } + + // DataBlockPtr offsets for each disk + stream.reset(_boot->createReadStream(0x3, 0xf, 0x03)); + for (uint i = 0; i < sizeof(disks); ++i) { + DiskOffset offset; + offset.track = stream->readByte(); + offset.sector = stream->readByte(); + _diskOffsets.push_back(offset); + } } void HiRes6Engine::loadDisk(byte disk) { @@ -173,15 +182,23 @@ void HiRes6Engine::loadDisk(byte disk) { if (!_disk->open(disks[disk])) error("Failed to open disk image '%s'", disks[disk]); + _curDisk = 0; + + // Load item picture data (indexed on boot disk) + StreamPtr stream(_boot->createReadStream(0xb, 0xd, 0x08)); + _itemPics.clear(); + for (uint i = 0; i < IDI_HR6_NUM_ITEM_PICS; ++i) { + stream->readByte(); + _itemPics.push_back(readDataBlockPtr(*stream)); + } + _curDisk = disk; byte track = _diskDataDesc[disk].track; byte sector = _diskDataDesc[disk].sector; uint offset = _diskDataDesc[disk].offset; - applyDataBlockOffset(track, sector); - - StreamPtr stream; + applyDiskOffset(track, sector); for (uint block = 0; block < 7; ++block) { stream.reset(_disk->createReadStream(track, sector, offset, 1)); @@ -261,14 +278,6 @@ void HiRes6Engine::loadDisk(byte disk) { } } } - - // Load item picture data (indexed on boot disk) - stream.reset(_boot->createReadStream(0xb, 0xd, 0x08)); - _itemPics.clear(); - for (uint i = 0; i < IDI_HR6_NUM_ITEM_PICS; ++i) { - stream->readByte(); - _itemPics.push_back(readDataBlockPtr(*stream)); - } } void HiRes6Engine::initGameState() { @@ -354,11 +363,6 @@ void HiRes6Engine::showRoom() { _linesPrinted = 0; } -void HiRes6Engine::applyDataBlockOffset(byte &track, byte §or) const { - // FIXME: this uses a table - ++track; -} - void HiRes6Engine::printString(const Common::String &str) { Common::String s; uint found = 0; |