asiekierka / reconstruction-of-zzt

The Reconstruction of ZZT
Other
350 stars 42 forks source link
dos turbo-pascal zzt

The Reconstruction of ZZT

The Reconstruction of ZZT is a reverse-engineered recreation of the source code to the last official release of ZZT, ZZT 3.2. The output executable is byte-for-byte identical with said release, which means that the source code accurately represents the original engine's behavior.

The intent behind this project is to facilitate improved preservation and accessibility of ZZT's worlds and community, as well as facilitate new, exciting developments.

Frequently Asked Questions

What is ZZT?

ZZT is an adventure game created by Tim Sweeney and released in January 1991 for DOS computers. What set it apart was the inclusion of a fully-featured world editor in the shareware release. Since then, ZZT has gone on to inspire thousands of players and game creators all around the world.

You can learn more about ZZT through the Museum of ZZT.

How can I run the original ZZT on a modern computer?

There are many ways to run ZZT on a modern PC. While pretty much anything capable of running DOS will do the trick, the recommended ones are:

Where can I find ZZT worlds to play?

The official ZZT worlds originally released with the game can be found here.

Beyond that, I highly recommend checking out the Museum of ZZT, particularly its Featured Games section, to find amazing worlds created by the ZZT community over the past three decades.

How can I create ZZT worlds of my own?

ZZT comes with a built-in editor and documentation - just press "E"!

However, please note that the community has since created more powerful editors, the most popular of which is KevEdit. This is currently the recommended solution. Dr. Dos has created a live stream series on YouTube detailing how to use Zeta and KevEdit to create your own ZZT worlds.

How was the source code reconstructed?

Very patiently! I wrote an article on my blog in an attempt to describe the journey, as well as the tools and techniques I utilized in the process.

What is part of this open-source release?

This release's binary distribution includes:

The source code includes the source format for both ZZT.EXE and ZZT.DAT, as well as relevant tools.

Why did the source code have to be reconstructed?

This is because the original source code to ZZT was lost a long time ago.

I'm a ZZTer from back in the day and I have some backups from that period. Are they still useful?

Yes! There are many ZZT worlds, utilities, and other documents which have not yet been preserved. If you'd like to share them and see them be adequately catalogued and preserved, please contact me at (kontakt at asie dot pl) - or get in touch with the Museum of ZZT community.

Directory structure

License

The Reconstruction of ZZT is licensed under the terms of the MIT license as described in LICENSE.TXT, with the exception of certain files included with this release:

    LZEXE.EXE v0.91    (c) 1989 Fabrice BELLARD

    Ce programme fait parti du domaine public (FREEWARE),  donc vous pouvez
  l'utiliser, le copier et le distribuer sans problème. Et vous pouvez même
  en faire un usage commercial, c'est à dire compacter des fichiers EXE que
  vous allez vendre. Mais la vente de LZEXE.EXE est interdite.

Compiling

Requirements

Instructions

  1. Ensure that TPC.EXE from Turbo Pascal is available on your PATH (f.e. SET PATH=C:\TP;%PATH%).
  2. From the source code directory, run BUILD.BAT.
  3. The DIST directory will contain files comprising the release as outlined in the FAQ.

If the source code has not been modified, the resulting ZZT.EXE file should be byte-for-byte identical with the ZZT.EXE bundled with ZZT 3.2.

Compilation FAQ

Can the Reconstruction be compiled with Free Pascal instead?

If you'd rather stick to an entirely free software stack for building ZZT, that is also possible, albeit not without modifications:

Please note that, as Free Pascal's RTL is significantly larger, the resulting binary is likewise about 40KB larger - leaving less memory space for game worlds.

What are all the "unk"-prefixed variables?

These are variables which are not used at all anywhere in the source code, but are assumed to exist in the stack or data segments, affecting relevant variable offsets and stack checks. They are required for byte-level equivalence, but you are free to remove them and get a functionally equivalent version of the engine - with the exception of some structures, like TStat, which are serialized to disk.

Recipe for five better friends

  1. Fix 5 annoying bugs in ZZT.
  2. Give a copy of each bugfix to a friend, neighbor or business associate.
  3. You now have five better friends.

Greetings

I'd like to thank everyone who has spent the last few years contributing to the rebirth of the small ZZT community. It is thanks to your passion and dedication that this project has been made possible.