This is an old revision of the document!
Table of Contents
ClassicZoo
ClassicZoo is a fork of ZZT by Adrian “asie” Siekierka, started in late 2020 and initially released in March 2021. Its goal is to improve the ZZT experience while sticking close to the original engine's feel and keeping full compatibility.
If you'd like to learn more about ZZT, the Museum of ZZT is a good place to start. They also have a welcoming Discord server!
Also available on itch.io!
System requirements
Windows/Linux
… If you're running (a reasonably recent version of) Windows/Linux, you can run ClassicZoo.
DOS (IBM PC)
Minimum requirements
- IBM PC/XT with a minimum of 512KB RAM,
- CGA/Hercules-class graphics adapter.
Recommended requirements
- 386-class or better CPU,
- 1MB RAM,
- EGA/VGA-class graphics adapter.
DOS (NEC PC-9801)
Minimum requirements
- NEC PC-9801VM class machine,
- 640KB of RAM.
Recommended requirements
- PC-9801 machine with 386-class or better CPU,
- 1 MB of RAM.
Amiga
- 68000-class CPU or above (68000 accelerator or 68020+ recommended),
- 1MB of RAM minimum.
Help
Most help is provided in-game, available by pressing “H”.
Command line arguments (DOS)
ClassicZoo supports a few command line arguments on launch:
/NOEMS
- disable EMS extended memory support,/NOXMS
- disable XMS extended memory support,- (4.16+)
/NOSNOW
- force-disable CGA snow avoidance logic; by default, it is disabled if an EGA/VGA-compatible card is detected, however many CGA clone cards also do not suffer from CGA snow. This can improve performance.
Tips (Amiga)
- For better performance (and to run on 640×256 screens), run
setenv FPC_VIDEO_BUILTINFONT vga8
before launching the port. This may be fixed eventually, with ClassicZoo getting its own 8×8 font bundled.
Major features
- Increasing the board size limit from 20000 to 65500 bytes (65535 bytes on SDL2 ports).
- Increasing the board count limit from 101 to 256 boards.
- Major CPU and memory usage optimizations.
- Major editor enhancements: syntax highlighting, OOP import/export, STK color and element support, multiple patterns, block and OOP copy/paste, bugfixes
- Fixes for crash/hang engine bugs, while keeping compatibility.
- Subdirectory support in the file browser.
- Accessibility options: Neuromotor assistance.
- Builtin support for custom charsets/palettes (SDL2), CleanZZT.
- Support for new platforms: NEC PC-9801, Windows, Linux, Amiga…
The complete list of features is provided in the changelog, which is bundled with ClassicZoo.
Platform-specific
- (DOS) EMS/XMS extended memory support - effectively lifts the world size limit, as well as improving stability of large worlds on machines with lower amounts of free conventional memory.
- (Windows/Linux) Improved keyboard input logic, high quality sound rendering, advanced graphics configuration options.
Known issues
- (Amiga) No sound support. TODO
Screenshots
DOS (IBM PC)
DOS (NEC PC-9801)
Amiga
Downloads
In most cases, you want the build in bold for your platform.
If you're looking for game worlds, try the Museum of ZZT! Here are some recommendations:
Current version
ClassicZoo 4.32
Released on the 20th of February, 2022.
ClassicZoo 4.18
Released on the 31st of December, 2021. Older build with slightly lower memory requirements.
- Download (DOS - IBM PC)
- Download (libre build) (DOS - IBM PC)
- Download (extra reduced memory usage build) (DOS - IBM PC)
- Download (DOS - NEC PC-9801)
Experimental versions
Previous versions
ClassicZoo 4.31
Released on the 10th of February, 2022.
ClassicZoo 4.30
Released on the 30th of January, 2022. Hotfix build 1.
ClassicZoo 4.22
Released on the 25th of January, 2022. Hotfix build 1.
ClassicZoo 4.21
Released on the 1st of January, 2022.
ClassicZoo 4.20
Released on the 29th of December, 2021.
- Download (DOS - IBM PC)
- Download (libre build) (DOS - IBM PC)
- Download (DOS - NEC PC-9801)
- Download (Windows 32-bit, hotfix build “c”)
- Download (Windows 64-bit, hotfix build “c”)
- Download (Linux 64-bit - requires SDL2, hotfix build “c”)
- Download (Amiga, 68020+, AmigaOS 3.x)
- Download (Amiga, 68000, legacy)
ClassicZoo 4.17
Released on the 7th of December, 2021.
ClassicZoo 4.16
Released on the 13th of November, 2021.
ClassicZoo 4.15
Released on the 9th of August, 2021.
ClassicZoo 4.14
Released on the 11th of July, 2021.
ClassicZoo 4.13
Released on the 27th of May, 2021.
ClassicZoo 4.12
Released on the 13th of April, 2021.
ClassicZoo 4.11
Released on the 11th of April, 2021.
ClassicZoo 4.10
Released on the 6th of April, 2021.
ClassicZoo 4.03
Released on the 28th of March, 2021.
ClassicZoo 4.02
Released on the 27th of March, 2021.
ClassicZoo 4.01
Released on the 23rd of March, 2021.
ClassicZoo 4.0
Released on the 6th of March, 2021.
For world creators
ZZT 3.2 bugs fixed in ClassicZoo
The list of bugs fixed in ClassicZoo is deliberately weighed to focus on ones which lead to hangs and/or softlocks - this way, compatibility with existing ZZT 3.2 worlds can be maximized. Of course, proof of concept worlds which rely on arbitrary code execution exploits (like PortalZ or Hack the Matrix) will not work correctly.
For the following lists, [SDL2] mean a fix specific to Windows/Linux ports, while [DC] means a fix for which a warning will be emitted when a world tries to rely on it if “ZZT 3.2 compatibility” debugging is enabled in the options menu.
In Strict mode, the following engine-related bugs are fixed:
- Buggy saving behaviour for boards above 20000 bytes - the limit is now 65500 bytes. [DC]
- Crash upon binding an object which is already bound to another object - stabilizes
Binders Keepers
-style tricks. [DC] - Crash upon deleting the stat from a scroll which already has its stat missing - fixes
#become
and/dir
in a scroll. [DC] - Crash upon drawing a cycle 0 transporter.
- Crash upon element recursively pushing itself - fixes
#go idle
in a scroll, as well as duplicating a pushable element onto a Player. [DC] - Crash upon loading the final board of a Super Locked world.
- Crash upon trying to create a text window with more than 1024 lines.
- Minor centipede edge cases - should not affect production worlds.
- Missing BoardDrawTile() call in conveyor logic - this serves only as a minor visual fix and does not impact gameplay.
- Unreliable handling of element IDs above 53 - ZZT 3.2's official maximum. [SDL2] [DC]
In Normal mode, the following additional bugs are fixed:
- Conveyor stat swapping - this prevents a rarely-exploited way to swap stats, causing strange glitches and often leading to destroying the Player, soft-locking the game.
FAQ
- Q: Which build and executable of ClassicZoo should I use?
- A: For a given platform, the regular build (in bold) is the best option.
- For low-memory DOS platforms, ClassicZoo 4.1x is kept around due to its (slightly) smaller runtime memory requirements.
- The libre DOS build is provided for projects which do not wish to utilize non-libre code included by Turbo Pascal's compiler. However, it has a memory usage penalty and a larger binary size.
- Q: Should I use DOSBox or Zeta with ClassicZoo?
- A: Use the native SDL2 build! It's much better than either option.
- Q: I'd like to make a ZZT 3.2-compatible game. How can I ensure ClassicZoo's bugfixes don't get in the way?
- A: The “?DCOMPAT” command in the editor build serves exactly this purpose. If enabled, it will emit a warning when most bugs fixed by ClassicZoo are encountered - including behaviours which are unreliable in ZZT 3.2, but not always a crash or hang (like double #BIND).