Table of Contents

ZZT 4.0 (Unofficial)

ZZT 4.0 is a hex edit of ZZT 3.2 created by WiL for widespread use. The executable was released on November 25th, 2004.

Note that the non-NoMsg variant is unstable/buggy - see below.

Launching

While there is nothing stopping this ZZT hex edit from running on pre-80386 machines - including Zeta - at face value, it has been compressed with UPX without enabling the –8086 flag; as such, to run it on an 8086/80186/80286-class machine or Zeta, it must be decompressed first with upx -d.

Documentation

The major changes here:

ZZT's notorious 20k board limit has now been increased to a healthier 32k.
ZZT's equally notorious bottomw-row placement bug has been fixed.
ZZT's annoying water-glink sound effect is now removed.
ZZT is now 39k, smaller than the original executable.

Minor changes include:

Textual changes - also, untitled.zzt, temp.brd, and saved.sav will no longer be the default. Now by >default you must put in a name of your own. This means no more angst over accidentally saving over your >last board, saved game, or ZZT project.

In addition, ZZT 4.0 came with a separate NoMsg variant, additionally changing:

* in-game messages and sound effects (that i have found so far) removed: Except the invisible wall message and sound effect. I coudln't justify removing that one. And the key and door messages.
* No yellow borders.

Changes

Some of the documented changes are inaccurate with regards to the in-executable changes.

Functional

Branding

Description Location Original string Modified string
Configuration screen, second line (shareware) 0x1C44 Shareware version 3.2' New! ZZT Version 4.0
Configuration screen, second line (registered) 0x1C7A Version  3.2 Version  4.0
Copyright notice 0x1CA9 Created by Tim Sweeney By Tim Sweeney and WiL
Copyright notice 0x1D42 Copyright (c) 1991 Epic MegaGames, Press ... to abort' Public Domain since 1997.  ZZT 4.0 released in 2004,       ... to quit '
Shutdown notice (registered) 0x217F  Registered version -- Thank you for playing ZZT.  Thanks for playing!  ZZT 4.0 made by WiL.      .

Graphics/Names

Description Location Original string Modified string
Default save filename 0x2173 SAVED Empty (length set to 0)
Default exported board filename 0x2179 TEMP Empty (length set to 0)
Energizer pickup message 0x4468 Energizer - You are invincible Empty (length set to 0)
Default object name 0x4EF4 (ElementObjectTick), 0xBF4D (OopExecute) Interaction Empty (length set to 0)
Ammunition pickup message 0x56C5 Ammunition - 5 shots per container. Empty (length set to 0)
Gem pickup message 0x5750 Gems give you Health! Empty (length set to 0)
Fake wall message 0x5D8B A fake wall - secret passage! A fake wall - secret passage!U
Editor board name prompt 0x7AC0 Room's Title:, Board Name: (length edited)
Sidebar - default world name 0x109C1 Untitled Empty (length set to 0)

Sounds

Description Location Original Modified Comment
Water step sound 0x5F40 #64#1#80#1 Empty (length set to 0)

Bugs

Location Original Modified Comment
0x5BE0 0x00 0x2E This makes ElementPusherTick remove 46 bytes from the stack every time it is called, causing a stack underflow and a crash after exactly seven pusher ticks if nothing else is done. The intent of adding this seems to be a misplaced hex edit pertaining to the torch's pickup message, which immediately follows said method.

Changes (NoMsg variant)