SimCity 2000 Saved Cities
Posted by kelvSYC on 7-20-2014
Here’s a break from the constant madness that is ROM hacking: the SimCity 2000 Saved Game file format.
SimCity 2000 largely follows the Interchange File Format standard, with the notable exception of the requirement that chunks be aligned on two-byte boundaries. Other notes:
- Most of the data within the SimCity 2000 save file is compressed using a form of run-length encoding. The RLE structures are mapped out, but I’ve not really implemented the script elements that will map them. This is because scripting is buggy and is a huge performance hit on the build (it’s a prerelease build that fixes a few bugs from the last official build, as explained in an earlier post). I’ve been told that the next release will fix this issue, but I don’t have even that build yet.
- Synalyze It! can’t really parse decompressed data while the data is compressed. The true meat-and-potatoes of the SimCity 2000 data is in fact compressed.
- CNAM chunks may occur at the end of a file, but I have not seen any save that has that.
- The string in the CNAM chunk appears to be “dirty Pascal string”. Perhaps putting it as a C-string starting at the second byte might be better.
Hopefully I can get a generic IFF grammar going, as well as its cousin the RIFF, based on this.
Changelists after the break.
Changes for 7-21-14:
- Initial release. Almost everything that’s not compressed has been mapped out.