It seems that you're using an outdated browser. Some things may not work as they should (or don't work at all).
We suggest you upgrade newer and better browser like: Chrome, Firefox, Internet Explorer or Opera

×
There is a critical bug in Shockolate engine for System Shock:

Number of entries within savegame files is growing every time when you save the game or enter another location using an elevator. When number of entries reaches data type limit, game engine crashes on the next saving or using an elevator. Therefore, you are no longer able to continue playing System Shock.

Shockolate version: 0.7.7 (latest release) However, it seems that this bug is still present in the latest version of the source code.

How to fix it:

1. Download source code:

Latest release
Latest unreleased version

2. Open file:

/src/Libraries/RES/Source/resfile.c

3. Find code:

case ROM_EDITCREATE:
if (prf->pedit) {
ResReadEditInfo(prf);
ResReadDir(prf, filenum);
} else {
fseek(fd, fileHead.dirOffset, SEEK_SET);
fread(&dirHead, 1, sizeof(ResDirHeader), fd);
ResReadDirEntries(filenum, &dirHead);
}
break;
4. Add line "ResPack(filenum);" right after "ResReadDir(prf, filenum);":

case ROM_EDITCREATE:
if (prf->pedit) {
ResReadEditInfo(prf);
ResReadDir(prf, filenum);
ResPack(filenum);// Packing resource to fix bug with savegames
} else {
fseek(fd, fileHead.dirOffset, SEEK_SET);
fread(&dirHead, 1, sizeof(ResDirHeader), fd);
ResReadDirEntries(filenum, &dirHead);
}
break;
5. Save "resfile.c"

6. Rebuild game engine following instructions for your operating system

ResPack function removes junk entries from a savegame file and reduces it's size significantly. As far as I understand, it does not delete data, that is necessary to play the game. However, I have not spent much time testing. Use at your own risk.

P.S. I don't have a github account. If anyone wants to report the issue there or apply a pull request with the fix, feel free to do so. ;)
Post edited April 16, 2020 by AlexTerranova
https://github.com/Interrupt/systemshock/issues/357
I completed playing System Shock with fix applied. :) There were no save-related issues. So, the fix seems to be safe at least for Shockolate version 0.7.7.
feel free to check their discord - pretty sure they wouldn't mind a few more contributors.