Skip to content

Commit

Permalink
first commit
Browse files Browse the repository at this point in the history
  • Loading branch information
asiekierka committed Apr 19, 2020
0 parents commit 03d9d28
Show file tree
Hide file tree
Showing 27 changed files with 9,773 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
BIN
DIST
71 changes: 71 additions & 0 deletions BUILD.BAT
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
@echo off
if not exist BIN mkdir BIN
del BIN\*.*

if not exist DIST mkdir DIST
del DIST\*.*

echo.
echo [ Building BIN2PAS.EXE ]
echo.
TPC /B /EBIN /ITOOLS /UTOOLS TOOLS\BIN2PAS.PAS
if errorlevel 1 goto error

echo.
echo [ Building CSIPACK.EXE ]
echo.
TPC /B /EBIN /ITOOLS /UTOOLS TOOLS\CSIPACK.PAS
if errorlevel 1 goto error

echo.
echo [ Converting screens ]
echo.

BIN\CSIPACK /C SCREENS\M_FOREST.BIN BIN\M_FOREST.CSI
if errorlevel 1 goto error
BIN\BIN2PAS BIN\M_FOREST.CSI BIN\M_FOREST.PAS
if errorlevel 1 goto error
BIN\CSIPACK /C SCREENS\M_MONSTE.BIN BIN\M_MONSTE.CSI
if errorlevel 1 goto error
BIN\BIN2PAS BIN\M_MONSTE.CSI BIN\M_MONSTE.PAS
if errorlevel 1 goto error
BIN\CSIPACK /C SCREENS\M_PROVIN.BIN BIN\M_PROVIN.CSI
if errorlevel 1 goto error
BIN\BIN2PAS BIN\M_PROVIN.CSI BIN\M_PROVIN.PAS
if errorlevel 1 goto error
BIN\CSIPACK /C SCREENS\S_CONFIG.BIN BIN\S_CONFIG.CSI
if errorlevel 1 goto error
BIN\BIN2PAS BIN\S_CONFIG.CSI BIN\S_CONFIG.PAS
if errorlevel 1 goto error
BIN\CSIPACK /C SCREENS\S_ORDER.BIN BIN\S_ORDER.CSI
if errorlevel 1 goto error
BIN\BIN2PAS BIN\S_ORDER.CSI BIN\S_ORDER.PAS
if errorlevel 1 goto error
BIN\CSIPACK /C SCREENS\S_REGIST.BIN BIN\S_REGIST.CSI
if errorlevel 1 goto error
BIN\BIN2PAS BIN\S_REGIST.CSI BIN\S_REGIST.PAS
if errorlevel 1 goto error

echo.
echo [ Building SUPERZ.EXE ]
echo.
TPC /B /EBIN /GD /ISRC;BIN /USRC;BIN SRC\SUPERZ.PAS
if errorlevel 1 goto error

echo.
echo [ Compressing SUPERZ.EXE ]
echo.
cd BIN
..\TOOLS\LZEXE.EXE SUPERZ.EXE
cd ..

echo.
echo [ Creating DIST/ ]
echo.
copy BIN\SUPERZ.EXE DIST\SUPERZ.EXE
copy LICENSE.TXT DIST\LICENSE.TXT
goto done
:error
echo.
echo [ Error detected! Stopping. ]
:done
23 changes: 23 additions & 0 deletions LICENSE.TXT
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
Copyright (c) 2020 Adrian Siekierka

Based on a reconstruction of code from Super ZZT,
Copyright 1991 Epic MegaGames, used with permission.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

102 changes: 102 additions & 0 deletions README.MD
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
# The Reconstruction of Super ZZT

The Reconstruction of Super ZZT is a reverse-engineered recreation of the source code to the last official release of
Super ZZT, Super ZZT 2.0.

## Frequently Asked Questions

### What is Super ZZT?

Super ZZT is a sequel to ZZT, an adventure game created by Tim Sweeney. It was released in October 1991, providing
new built-in elements and a large, scrolling playfield.

You can learn more about ZZT and its modern-day community from [the README](https://github.com/asiekierka/reconstruction-of-zzt/blob/master/README.MD)
of the Reconstruction of ZZT.

### How can I create Super ZZT worlds of my own?

Unlike ZZT, Super ZZT's built-in editor needs to be activated by using the "/E" command-line switch.
After doing so, you can press "E" just like in ZZT.

Please note that the popular third-party tool, KevEdit, does not support Super ZZT worlds. Other editors
exist which do, like ZAP and ZEdit2.

### What is part of this open-source release?

This release's binary distribution includes the Super ZZT engine executable, SUPERZ.EXE.

The source code includes the source format for SUPERZ.EXE, as well as relevant tools.

### Is this open-source release byte-accurate, like the previous one?

Short answer: Sort of.

Long answer: Almost all of the code is byte-accurate. However, Super ZZT utilizes TheDraw's Crunched Screen Image
decompression routine for its ANSI art graphical displays. As I did not manage to find clear
licensing terms for said routine, UNCRLIB.PAS contains a clean implementation of it. This ensures that the
binary produced by this repository is MIT-licensed, even if a non-consequential part of it differs. However,
it is possible to replace UNCRLIB.PAS with the original implementation and get a .EXE byte-accurate to
Super ZZT 2.0.

### Why did the source code have to be reconstructed?

This is because the original source code to Super ZZT [was lost a long time ago](https://web.archive.org/web/19991010013339/http://www.epicgames.com/zzt.htm) alongside ZZT's.

### 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 and Super 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

* **BIN** - output directory for EXE and TPU files,
* **DIST** - output directory for the binary distribution,
* **SCREENS** - 80x25 .BIN screen video data for graphical screens used in Super ZZT,
* **SRC** - the reconstructed Super ZZT source code,
* **SUPERZ.PAS** - main source file,
* **TOOLS** - tools used when building:
* **BIN2PAS.PAS** - BIN2PAS, a tool for converting binary files into Pascal units,
* **CSIPACK.PAS** - CSIPACK, a tool for compressing and decompressing Crunched Screen Images,
* **LZEXE.EXE** - LZEXE, a .EXE compression tool by Fabrice Bellard,
* **BUILD.BAT** - source code build script,
* **LICENSE.TXT** - licensing terms for the source code release.

## License

The Reconstruction of Super 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:

* **TOOLS/LZEXE.DOC**, **TOOLS/LZEXE.EXE**:

```
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

* DOS-compatible environment (f.e. DOSBox),
* Turbo Pascal 5.5 (if you don't have it, it's officially available for free via Embarcadero's Antique Software website).

### 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.

### Compilation FAQ

#### 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.

## Greetings

As always, I'd like to thank everyone who has spent the last few years contributing to the rebirth of the small ZZT community.
Binary file added SCREENS/M_FOREST.BIN
Binary file not shown.
Binary file added SCREENS/M_MONSTE.BIN
Binary file not shown.
Binary file added SCREENS/M_PROVIN.BIN
Binary file not shown.
1 change: 1 addition & 0 deletions SCREENS/S_CONFIG.BIN
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
����������������������������������������������������������������������������������x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x��������x��������x��������x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x���x�x�H�H�H�H�H�x�H�H�H�H�H�x�x�H�H�H�x�H�x�H�H�x�H�H�H�H�x�H�H�H�x�H�H�H�x�x����� ������� ��x�x�x�  �x�H�H�H�H�x�H�H�H�H�H�H�H�x�H�H�H�x�x���x�x�x H�H�H H�H H�x H�H�H�x�x H�H�H�x H�x�H H�x H�H�H H�x H�H�H�x H�H H�x�x�x�x� ������� ����x�x�x�  �x�x H�H�H�x H�H H�H H�x�H�x H�H H�x�x���x�x�x H�H�x H�x H�x H�H�H�x�x�H�H H�H H�H�H H�x H�x�x�x�x H�H�H�x H�H�H�H�H�  ��� ��  ��� �x�x�x�x  �x�x�H�H H�x H�x H�H H�H H�x H�x H�x�x���x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�H�H�H�H�H���x�x�x�x�x��x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x���s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s���8                                                                            �8���8                                                                            �8���8                                                                            �8���8                                                                            �8���8                                                                            �8���8                                                                            �8���8                                                                            �8���8                                                                            �8���8                                                                            �8���8                                                                            �8���8                                                                            �8���8                                                                            �8���8                                                                            �8���8                                                                            �8���8                                                                            �8���8                                                                            �8��s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�{�s s sCpopppyprpipgphptp p1p9p9p1p pEpppipcp pMpepgpapGpapmpepsp.p p pTphpipsp pgpapmpep pipsp psphpaprpepwpaprpep,p p ppplpepapspep psphpaprpep piptp!p p�s�{
Binary file added SCREENS/S_ORDER.BIN
Binary file not shown.
Binary file added SCREENS/S_REGIST.BIN
Binary file not shown.
Loading

0 comments on commit 03d9d28

Please sign in to comment.