Bringing back the Dream in DreamZZT

It may not be as exciting as the iPhone, but I have some DreamZZT news:

I got on-the-fly board compression/decompression working. Instead of requiring over 6MB of RAM to run Town of ZZT, it now uses less than 600KB. Only the board you’re currently on is decompressed, the rest of the game remains compressed until needed.

This enables several important things:

* The Dreamcast build works again! It still has a few quirks that need to be worked out, but Town is fully playable on the Dreamcast again. There’s a slight pause as boards are compressed/decompressed, but otherwise the game runs fine. I currently have no plans to enable the online leaderboard for the Dreamcast, as the number of people with Dreamcasts that also have BBAs and are interested in ZZT is probably around 3, including me.

* The saved games and world files written by DreamZZT are now compatible with the original ZZT. If for some crazy reason you prefer DreamZZT’s editor over kevedit, you can use DreamZZT to create worlds compatible with the original ZZT. You can also exchange saved games between the two.

Why weren’t they compatible before?

ZZT has an extra field that stored the size of each compressed board in the world file. This value was ignored by DreamZZT, since it decompressed all the boards as it loaded the file. It also didn’t know how large each compressed board would be, as it compressed each board as it was writing the file. Now that the boards are always compressed, DreamZZT knows ahead of time how large each board will be, and can fill in this value.

As a side note, KevEdit also ignores this value, so you can load old DreamZZT games in KevEdit and then save them again to make them compatible with original ZZT.

DreamZZT 3.0.6 is still on track for a stable release on Saturday.