---
title: SPAZ - Space Pirates and Zombies
language: en
layout: default
created: 2013-08-13 02:19:14 +0200
updated: 2013-08-14 00:17:58 +0200
toc: false
tags:
  - know-how
  - software
  - games
---
Get decompiled savegame
=======================

Savegames are actually written to disk in a plaintext form and then compiled by the engine. The source file is deleted
afterwards. To obtain it under Linux:

1. save your game, name it e.g. "TEST"
1. find your savegame folder, it should be: `~/.local/share/spacepiratesandzombies/b_save/`
1. make sure there are the files `sg_TEST.cs.dso` and `si_TEST.cs` in that folder
1. touch an empty file `sg_TEST.cs` and make sure its permissions allow read/write for the user
1. now remove the write permission from the directory (`chmod a-w b_save`)
1. in the game, (may load first) and save again under the same name (overwrite!)
1. the `sg_TEST.cs` should now contain the full savegame


Compile after modifications
===========================

To make SPAZ load the modified file, you have to compile it first. SPAZ won't compile it on its own. But we can trick it:

1. find your SPAZ settings folder, it should be `~/.local/share/spacepiratesandzombies/b_settings/`
1. rename the files `spz_settings.cs` and `spz_settings.cs.dso` to something else
1. now copy your modified `sg_TEST.cs` into it and name it `spz_settings.cs`
1. run *SPAZ* from Steam, until you see the resolution/mod-pack selection screen, quit *SPAZ*
1. you should now find a file `spz_settings.cs.dso` in that folder - that's your compiled savegame
1. rename `spz_settings.cs` → `sg_TEST.cs` and `spz_settings.cs.dso` → `sg_TEST.cs.dso`
1. rename the original files back to `spz_settings.cs` and `spz_settings.cs.dso`


Calculate Checksum
==================

SPAZ does a primitive checksum validation on its savegames. If you take a look at the `si_TEST.cs`, you'll find
something like this:

~~~
TEST
2013 08 12 22 42 01
1
3
6
THE SOL SYSTEM
1.605
0
371866351
TEST2013 08 12 22 42 01136THE SOL SYSTEM1.6050371866351
~~~

The number in the last but one line is a decimal CRC32 checksum with its bytes negated (signed 4-byte integer). The
number occurs a second time at the end of the last line.

To calculate the number from our new file, first calculate the CRC32:

~~~
$ crc32 sg_TEST.cs.dso
e9d5c510
~~~

Now negate that value, so we get: ffffffff162a3aef. We only use the last 8 nibbles (last 4 bytes): `162a3aef`.

Finally, turn that into a signed decimal number: `371866351`. Done. This is our new checksum which goes right into
the `si_TEST.cs` file. Now you're able to load the modified savegame.


Further Reading
===============

* http://www.spacepiratesandzombies.com/forums/viewtopic.php?f=27&t=2967
* http://www.spacepiratesandzombies.com/forums/viewtopic.php?f=5&t=2372
