XeNTaX Forum Index
Forum MultiEx Commander Tools Tools Home
It is currently Sun Aug 20, 2017 8:02 pm

All times are UTC + 1 hour




Post new topic Reply to topic  [ 8 posts ] 
Author Message
 Post subject: Zoo Tycoon savegames
PostPosted: Tue Sep 07, 2010 1:20 am 
Offline
Site Admin
User avatar

Joined: Mon Sep 13, 2004 1:55 am
Posts: 703
Location: The wiki.
Has thanked: 107 times
Have thanks: 122 times

I've been having fun with this; see Zoo (Zoo Tycoon) on the wiki for what I have so far (and if you're aware of any other documentation or any savegame editors, I'd appreciate links :wink: ).

You can make the ads go away by registering


_________________
Welcome to Xentax!

Rules | Requests | Wiki

If you run across a post that breaks the rules, please PM Craptain, Mr.Mouse, or myself - we will handle it from there.


Top
 Profile  
 
 Post subject: Re: Zoo Tycoon savegames
PostPosted: Fri Oct 22, 2010 9:18 pm 
Offline
Site Admin
User avatar

Joined: Mon Sep 13, 2004 1:55 am
Posts: 703
Location: The wiki.
Has thanked: 107 times
Have thanks: 122 times
I don't suppose anyone got a copy of the wiki page before the DB corruption, did they? I didn't have the foresight to save an offline copy, Google didn't seem to cache the page, and I'd really prefer not to redo that work.

_________________
Welcome to Xentax!

Rules | Requests | Wiki

If you run across a post that breaks the rules, please PM Craptain, Mr.Mouse, or myself - we will handle it from there.


Top
 Profile  
 
 Post subject: Re: Zoo Tycoon savegames
PostPosted: Tue Dec 14, 2010 7:31 pm 
Offline
veteran

Joined: Sat Jun 20, 2009 1:47 pm
Posts: 94
Has thanked: 16 times
Have thanks: 13 times
You could try the Waybackmachine but as it looks there is no entry for the page. But http://web.archive.org/web/*/http://wiki.xentax.com/ is working.


Top
 Profile  
 
 Post subject: Re: Zoo Tycoon savegames
PostPosted: Tue Dec 14, 2010 8:16 pm 
Offline
Site Admin
User avatar

Joined: Mon Sep 13, 2004 1:55 am
Posts: 703
Location: The wiki.
Has thanked: 107 times
Have thanks: 122 times
I already thought of that, but Wayback doesn't display anything newer than six months old (and that's even assuming they archived the page in the first place).

I also thought of Google's cache, but it seems they didn't get it either: http://webcache.googleusercontent.com/search?q=cache:http://wiki.xentax.com/index.php/Zoo%2520(Zoo%2520Tycoon); http://webcache.googleusercontent.com/search?q=cache:http://wiki.xentax.com/index.php%3Ftitle%3DZoo%2520(Zoo%2520Tycoon). Does anyone know of any other website archivers that may have gotten it?

_________________
Welcome to Xentax!

Rules | Requests | Wiki

If you run across a post that breaks the rules, please PM Craptain, Mr.Mouse, or myself - we will handle it from there.


Top
 Profile  
 
 Post subject: Re: Zoo Tycoon savegames
PostPosted: Mon Jul 18, 2011 8:00 am 
Offline
Site Admin
User avatar

Joined: Mon Sep 13, 2004 1:55 am
Posts: 703
Location: The wiki.
Has thanked: 107 times
Have thanks: 122 times
After having nothing better to do, I spent more time on this and re-discovered much of what I'd already gotten, and then quite a bit more:

Code:
byte {8?}  @0000   - Header ("TZFBG\x0\x0\x0")
uint32 {4} @0008   - Unknown (always 0x09 0x04 0x00 0x00?)
uint32 {4} @000C   - Map width
uint32 {4} @0010   - Map height
uint32 {4} @0014   - Unknown (always 0x0B 0x00 0x00 0x00?)
uint32 {4} @0018   - Unknown (always 0x2A 0x00 0x00 0x00?)
uint32 {4} @001C   - Number of exhibits
uint32 {4} @0020   - Unknown (always 0x01 0x00 0x00 0x00?)

// for each exhibit (77 + x bytes per exhibit (?) )
   uint32 {4}         - Unknown
   uint32 {4}         - Length of exhibit name field
   byte {x}         - Exhibit name
   uint32 {4}         - Unknown
   uint32 {4}         - Unknown
   uint32 {4}         - Unknown
   uint32 {4}         - Unknown
   uint32 {4}         - Unknown
   uint32 {4}         - Unknown
   byte {25}         - Unknown (always null?)
   uint32 {4}         - Unknown
   uint32 {4}         - In-game date exhibit was constructed (bitshifted)
   uint32 {4}         - Unknown
   uint32 {4}         - Unknown
   uint32 {4}         - Unknown (always null?)

uint32 {4} @0024 - Unknown

// for each tile (10 bytes per tile)
   uint32 {4}         - Elevation
   uint8 {1}         - Slope type (North = top, East = right, South = bottom, West = left)
                     0x00 - None (TL:0, TR:0, BL:0, BR:0)
                     0x01 - Southwest floor down (TL:0, TR:-1, BL:-1, BR:-1)
                     0x02 - buggy/crashes
                     0x03 - buggy/crashes
                     0x04 - Southeast corner up (TL:0, TR:0, BL:1, BR:0)
                     0x05 - East side down (TL:0, TR:-1, BL:0, BR:-1)
                     0x06 - buggy/crashes
                     0x07 - buggy/crashes
                     0x08 - buggy/crashes
                     0x09 - buggy/crashes
                     0x0A - buggy/crashes
                     0x0B - buggy/crashes
                     0x0C - buggy/crashes
                     0x0D - buggy/crashes
                     0x0E - buggy/crashes
                     0x0F - buggy/crashes
                     0x10 - Southeast corner up (TL:0, TR:0, BL:0, BR:1)
                     0x11 - Northeast to Southwest center down (TL:0, TR:-1, BL:-1, BR:0)
                     0x12 - buggy/crashes
                     0x13 - buggy/crashes
                     0x14 - South side up (TL:0, TR:0, BL:1, BR:1)
                     0x15 - Northeast corner down (TL:0, TR:-1, BL:0, BR:0)
                     0x16 - buggy/crashes
                     0x17 - buggy/crashes
                     0x18 - buggy/crashes
                     0x19 - Southwest corner up to Northeast corner down (TL:0, TR:-1, BL:1, BR:0)
                     0x1A - buggy/crashes
                     0x1B - buggy/crashes
                     0x1C - buggy/crashes
                     0x1D - buggy/crashes
                     0x1E - buggy/crashes
                     0x1F - buggy/crashes
   uint8 {1}         - Terrain type (0x00 - Grass, 0x01 - Savannah Grass, 0x02 - Sand, 0x03 - Dirt, 0x04 - Rainforest Floor, 0x05 - Brown Stone, 0x06 - Gray Stone, 0x07 - Gravel, 0x08 - Snow, 0x09 - Fresh Water, 0x0A - Salt Water, 0x0B - Deciduous Floor, 0x0C - Waterfall, 0x0D - Coniferous Floor, 0x0E - Concrete, 0x0F - Asphalt, 0x10 - Trampled Terrain; all other values are treated as Grass (tested up to 0x4F))
   uint32 {4}         - Tile sides

uint32 {4}         - Number of objects?

// for each object (12 + x + x + x + x + ? ... bytes per object?)
   uint32 {4}         - Length of object identifier 1 field
   byte {x}         - Object identifier 1
   uint32 {4}         - Length of object identifier 2 field
   byte {x}         - Object identifier 2
   uint32 {4}         - Length of object identifier 3 field
   byte {x}         - Object identifier 3
   uint32 {4}         - Unknown
   uint32 {4}         - Unknown
   uint32 {4}         - Unknown
   uint32 {4}         - Unknown
   uint32 {4}         - Unknown
   uint32 {4}         - Unknown
   uint32 {4}         - Unknown
   uint32 {4}         - Unknown
   uint32 {4}         - Length of object name field
   byte {x}         - Object name
   ...

Obviously, there's still a lot of the format left to deduce, including an absolutely massive chunk following the objects/entities block that I have no idea at all what it's used for. For now, though, I'm more interested in just learning enough about the format to be able to add or remove rows and columns to the map (thus allowing me to resize them); this will require, at the very least, figuring out how the locations of exhibits and objects/entities is stored.

_________________
Welcome to Xentax!

Rules | Requests | Wiki

If you run across a post that breaks the rules, please PM Craptain, Mr.Mouse, or myself - we will handle it from there.


Top
 Profile  
 
 Post subject: Re: Zoo Tycoon savegames
PostPosted: Wed Jul 20, 2011 7:21 am 
Offline
Site Admin
User avatar

Joined: Wed Jan 15, 2003 6:45 pm
Posts: 4007
Location: Dungeons of Doom
Has thanked: 409 times
Have thanks: 549 times
Nice work! :D

_________________
Please like our Facebook page!


Top
 Profile  
 
 Post subject: Re: Zoo Tycoon savegames
PostPosted: Wed Jul 20, 2011 8:13 am 
Offline
Moderator

Joined: Tue Aug 09, 2005 10:10 pm
Posts: 387
Location: California
Has thanked: 0 time
Have thanks: 81 times
I started taking a look in passing because surprisingly I had a copy of this that I never opened.

strings are dword length, char[length]
bools are uint8

Code:
uint32 magic; // BFZT - Blue Fang | Zoo Tycoon
uint32 version; // base game is version 71 I guess? with the addons in the Complete Collection it's 106
uint32 locale; // only present if version >= 69, defaults to 1033 (enUS) if earlier
uint32 unknown3; // only present if version >= 82
uint32 width;
uint32 height;
uint32 unknown6;
uint32 unknown7;
uint32 exhibitCount;
exhibit exhibits[exhibitCount]
uint32 unknown10; // only present if version >= 64, may default to 2 otherwise? needs research
if (version >= 97)
  unknownData1 unknown11;
uint32 unknown12;
tile tiles[width*height];
uint32 objectCount;
object objects[objectCount];
int32 unknown16;
int32 unknown17;
int32 unknown18;
int32 unknown19;
int32 unknown20;
// further file needs research...

for exhibit:
  uint32 unknown0;
  uint32 unknown1;
  string name;
  int32 unknown3; // only present if version >= 21, defaults to -1 otherwise
  int32 unknown4; // only present if version >= 21, defaults to -1 otherwise
  int32 unknown5; // only present if version >= 21, defaults to -1 otherwise
  uint32 unknown6; // only present if version >= 34, defaults to 0 otherwise
  uint32 unknown7; // only present if version >= 34, defaults to 0 otherwise
  uint32 unknown8; // only present if version >= 34, defaults to 0 otherwise
  uint32 unknown9; // only present if version >= 34, defaults to 0 otherwise
  uint32 unknown10; // only present if version >= 34, defaults to 0 otherwise
  uint32 unknown11; // only present if version >= 34, defaults to 0 otherwise
  uint32 unknown12; // only present if version >= 34, defaults to 0 otherwise
  uint32 unknown13; // only present if version >= 34, defaults to 0 otherwise
  uint32 unknown14; // only present if version >= 34, defaults to 0 otherwise
  uint64 unknown15; // only present if version >= 34, defaults to 0 otherwise
  uint64 unknown16; // only present if version >= 37, defaults to 0 otherwise
  uint32 unknown17; // only present if version >= 83, defaults to 0 otherwise
  bool unknown18; // only present if version >= 85, defaults to false otherwise
  bool unknown19; // only present if version >= 90, defaults to false otherwise
  if (unknown19 == true)
    // unknown data... needs research
  if (unknown18 == true)
    uint32 unknown20;
    uint32 unknown21;
    bool unknown22; // only present if version >= 88, defaults to true otherwise
    uint32 unknown23; // only present if version >= 100, defaults to 100 otherwise
    uint32 unknown24; // only present if version >= 100, defaults to 100 otherwise
    uint32 unknown25; // only present if version >= 100, defaults to 100 otherwise

for unknownData1:
  uint32 unknownCount0; // only present if version >= 89, defaults to 0 otherwise
  // if unknownCount0 > 0 there's more data, needs research...
  uint16 unknown2; // only present if version >= 97, not sure what it defaults to, needs research
  uint16 unknown3; // only present if version >= 97, not sure what it defaults to, needs research

for tile:
  uint32 unknown0;
  uint8 unknown1;
  uint8 unknown2;
  uint32 unknown3;

for object:
  string unknown0;
  string unknown1;
  string unknown2;
  uint32 dataSize; // only present if version >= 70, defaults to 0 otherwise -- though I think following data will still probably be present
  uint8 data[dataSize]; // data depends on unknown0/unknown1/unknown2

_________________
http://blog.gib.me/

Don't ask me about localization tools; if you don't have the resources to develop them yourself you don't need them.


Top
 Profile  
 
 Post subject: Re: Zoo Tycoon savegames
PostPosted: Wed Jul 20, 2011 8:21 am 
Offline
Site Admin
User avatar

Joined: Mon Sep 13, 2004 1:55 am
Posts: 703
Location: The wiki.
Has thanked: 107 times
Have thanks: 122 times
Cool work, Rick, that helps fill in some gaps on my description (I only have the original Zoo Tycoon to play with, though I'm also going to have a look at the demos at some point); I'm not sure how closely you looked at what I've got so far, but I have some stuff you don't as well (for instance, I have the tile data almost completely figured out; I just need to finish up the slope values and re-figure out how the tile sides work). :)


_________________
Welcome to Xentax!

Rules | Requests | Wiki

If you run across a post that breaks the rules, please PM Craptain, Mr.Mouse, or myself - we will handle it from there.


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 8 posts ] 

All times are UTC + 1 hour


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group