Some small note about CAIRN file format
Today, I finished the 2026 video game about climbing CAIRN.
There is a pretty nasty thing about that game: While you can, at all time, load any previous save, this isn’t possible once you finish the game (under certain condition).
Given I did wanted to do some stuff after that (and I couldn’t find a save online. So here is a save at the nearest it is possible to the end of the game), I decided to figure how to edit the save to convince to game to still load it.
Note: the save files are located at C:\users\USERNAME\Saved Games\TheGameBakers\Cairn_RETAIL\SAVEGAMES\RETAIL\STORY, under ~/.local/share/Steam/steamapps/compatdata/1588550/pfx/drive_c on Linux. They are named SLOT_X.CPK, with X being an alphabet number, starting from A. Corrupted saves are not displayed in the menu.
In addition, it is usefull to say the game save a lot of log in AppData/LocalLow/TheGameBakers/Cairn/. Included a backtrace of when loading a save failed (and so not displayed in the menu).
Also, contain fun stuff such as [21:18:31][Log] #Savegame# According to SocialManager, player is not Deluxe. If you read this log message with the intention of finding the deluxe code to hack it, best of luck & happy pirating :), which almost looks like a challenge.
So, saves. I haven’t looked further than what was needed to restore a save into a workable save. This require two things:
- Removing the "game finished" mark
- Removing the last autosave
The save format
Given that giving a textual description is probably not very appropriate, here is a imhex script instead:
struct Header {
u8 magic[8];
u8 unknown[8];
};
struct FileMeta {
u32 position;
u32 size;
u8 unk1[4];
u32 unk2; // timestamp?
u8 unk4[5];
char name[139];
if (position != 0xFFFFFFFF) {
char content[size] @ position;
}
};
struct CEPECK {
Header header;
FileMeta files[0x800];
};
CEPECK content @ 0;
The CPK file is a sort of archive which can store up to 0x800 files. The file info (the FileMeta struct) start at 0x16. The list has a static size, empty entry have a position of 0xFFFFFFFF. All position are relative to the start of the file.
Editing the save
Step 1: removing the "game finished" flag: You will need to locate the RUNINFOS/RUN.BIN file content (follow the position), and modify the byte at position + 0x1E to be 0x00 instead of 0x01. (If you ask, I figured that out by just replacing this section by the content of a new file. Finding the exact byte was... Guesswork that was valid on the first try).
Step 2: removing the last autosave: I don’t know what this autosave correspond to, but when you load it, you fall into the void, for some reason. For this, you will need to load the save in the game (and quit). You will see, in the TGBTools.Savegame.log log file, something akin to [21:18:37][Log] [DISK] #Savegame# Read 40535 bytes as savegame AUTO_INPACK_2026.03.22_17.26.44. Once that is done, locate the entry in the .CPK file, and just make it unloadable by changing the file. On my side, I haven’t digged deeper than changing the extension to .SAVE and changing a few characters to E in the file name.
With all that done, your once unloadable file will now be loadable. And will bring you to the pre-final autosave. You have a cutscene, but you can just skip it and bring the path history mode to load any previous save.
Some more observation
There is also a curious META file, with the SAVEPAK magic. I have no idea what it does, but even changing a nibble in it make the save unloadable, same as copying this content from one save to another. On the other hand, it isn’t a checksum of the files, otherwise the previous changes wouldn’t work. Truly a mystery. I don’t really care about.
Also, this game doesn’t appear to have backtracking in mind. That was why I wanted to restore my game. But even the option the game offer you for that doesn’t let you play it. Thought, to be honest, I do find it is not very fun. Not because the descent phase, but due to horizontal walking. Doesn’t help that I back-tracked from about the latest possible point, which for some spoilery reason, make you permanently (even) slower.
And... That is all. Hope that is usefull for someone willing to do some more digging. On my side, I’ll probably not touch that game again for some time. Still, 20€ well spent.