Like I mentioned in the topic where I introduced myself, I became interested in the .zoo file format that Zoo Tycoon 1 uses. This was right after implementing support for reading several binary formats that RCT uses. And so I set about investigating the format, with the goals of 1) hacking the saves and doing interesting stuff that the game does not normally allow, and 2) import the landscape into OpenRCT2.
Today, the focus is on the former. ZT1 does not include a map editor, and while you can enter developer mode to move the zoo walls a bit further towards the edge, you cannot increase the visible space and actually make your map bigger. So you’re basically stuck with a few standard sizes like 75×75 or 150×150.
Or are you? The map size is actually saved in the .zoo file, as you can see when looking at via a hex editor:
Now, just modifying this value will result in a crash. This is expected - the terrain data is saved in a continuous stream of mapSizeX × mapSizeY elements. So a 75×75 map contains 5625 elements, while a 150×150 map contains 22500 elements. For 233×233, we need 54289. Since I started with the Large Grassy Zoo map, which is 150×150, that thus means 54289 - 22500 = 31789 additional elements, inserted at the correct place. Note how quickly this number increases compared to map size - that’s exponential growth for you. This is not just me showing off maths though - it means quickly increasing memory usage. The map size is saved using a 32-bit integer, which has a theoretical maximum of about 2.1 billion (or 4.2 billion in certain circumstances). In practice though, testing with different map sizes has shown that 233×233 is the maximum that ZT1 will load. Anything bigger and it will freeze while attempting to load.
But then, having a 233×233 map is still quite an improvement from 150×150, is it not? Here is a screenshot. You can see the original borders of the Large Grassy Zoo map and the zoo wall continuing:
Zoo Tycoon 1’s extreme zoom makes it difficult to get an oversight of the size. But here is a neat trick to measure map size: use a dirt path, which costs $10 per tile and just divide by 10:
(In this example, I built the path outside the zoo walls using dev mode, but even if you build it within your zoo it should be easy to see that this map is indeed 233×233.)
Now, I’m sure you’re keen to try it out yourself. Well, for the low, low price of €49,95... nah, just kidding. Here it is.
enlarged5c.zoo