diff options
Diffstat (limited to 'sky/disk.cpp')
-rw-r--r-- | sky/disk.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/sky/disk.cpp b/sky/disk.cpp index 390e973289..eee2fb02ad 100644 --- a/sky/disk.cpp +++ b/sky/disk.cpp @@ -127,11 +127,15 @@ uint8 *SkyDisk::loadFile(uint16 fileNr, uint8 *dest) { _fileOffset = READ_LE_UINT32((filePtr + 2)) & 0x0ffffff; - cflag = (uint8)((_fileOffset >> (23)) & 0x1); - _fileOffset = (((1 << (23)) ^ 0xFFFFFFFF) & _fileOffset); - - if (cflag) - _fileOffset <<= 4; + cflag = (uint8)((_fileOffset >> 23) & 0x1); + _fileOffset &= 0x7FFFFF; + + if (cflag) { + if (SkyState::_systemVars.gameVersion == 331) + _fileOffset <<= 3; + else + _fileOffset <<= 4; + } _fixedDest = dest; _fileDest = dest; |