Super ZZT
Super ZZT (Tim Sweeney, Epic MegaGames, 1991; version 2.0 in 1992) is ZZT's sequel: big scrolling boards, new creatures, and a slightly different ZZT-OOP. This page lists everything that differs from ZZT 3.2; anything not listed works as described in the rest of this wiki.
Sources: the Reconstruction of Super ZZT (asie, MIT), which rebuilds Super ZZT 2.0's source, and the real
SUPERZ.EXE 2.0 from the freeware release, run in DOSBox. Examples marked tested were played in the real engine by
superzzt/test_examples.py and checked in the game's own save file.
Contents: Worlds and boards · ZZT-OOP changes · Movement · Text · Counters and flags · Elements · Keys · Debug console · Making Super ZZT worlds
Worlds and boards
| ZZT 3.2 | Super ZZT 2.0 | |
|---|---|---|
| Board size | 60 × 25 | 96 × 80, scrolling |
| Visible area | the whole board | a 24 × 20 window that follows the player |
| Boards per world | 101 | 33 (title + 32) |
| Stats per board | 150 | 128 |
| Flags | 10 | 16 |
| Board data | 20,000 bytes | 20,000 bytes (same buffer, much bigger board, so it fills faster) |
| File | .ZZT |
.SZT (header marker −2 instead of −1) |
source
- There are no dark boards and no torches. Boards also have no "message on entry" setting.
- The title board is shown with "Press ENTER to continue" when the player chooses Play. tested
- The world list on the title screen is fixed in the program (Proving Grounds, Lost Forest, Monster Zoo); other worlds
are started from the command line (
SUPERZ MYWORLD). - The editor is hidden: start with
SUPERZ /Eand then press E. KevEdit can't edit Super ZZT worlds. - Each board stores a camera offset (
DrawXOffset/DrawYOffset) for where the view starts.
ZZT-OOP changes
The same 27 commands, with these differences: source
| ZZT | Super ZZT | |
|---|---|---|
/dir and ?dir |
one step | one or more steps: /e 5 tested |
#WALK into a wall |
THUD every turn, keeps walking |
THUD once, then stops walking tested |
| 2 lines of text | a scroll window | a two-line message at the bottom tested |
| A window | 2+ lines | 3+ lines |
#GIVE/#TAKE counters |
TORCHES |
no torches; Z = Stones of Power tested |
Colour matching (#IF ANY, #CHANGE) |
bright colour must match exactly; fixed-colour kinds never match | compares the low 3 bits only, so fixed-colour kinds can match tested |
| Lock flag | stored in P2 | stored in P3 (P2 is now the step counter) |
Movement
/dir n and ?dir n move up to n steps (default 1). The object stops running its program until the steps are
done: it moves one step per turn. source tested
szt-steps@Ferry
#end
:touch
"All aboard!"
/e 6
"Here we are."
/dir nwaits while blocked (like ZZT's/dir), then continues.?dir ngives up the remaining steps as soon as it's blocked./i nwaitsnturns: the easiest timer in Super ZZT. tested- Any message (a touch, a shot, a
#send) cancels the remaining steps. source
szt-wait@Clock
#cycle 1
/i 30
#set rang
#end
#WALK stops at walls
In ZZT a walking object that hits something keeps getting THUD every turn. In Super ZZT it gets THUD once and
stops walking. To keep moving, start walking again in :thud. source tested
szt-walk@Bouncer
#walk e
#end
:thud
#set bumped
After the bump, Bouncer stands still.
Text
| Lines in one turn | ZZT | Super ZZT |
|---|---|---|
| 1 | one-line message | one-line message |
| 2 | scroll window | two-line message at the bottom (no pause) |
| 3+ | scroll window | scroll window |
source tested
szt-two-lines@Guard
#end
:touch
Halt!
Nobody passes.
The message area sits under the playfield, so Super ZZT's speech is usually written as short two-line lines. Choices
(!label;text) need a window, so a menu needs at least three lines in total.
Counters and flags
- Stones of Power (
Z) replace torches. The sidebar hides the counter until the first stone is found: it starts at −1, and touching a stone sets it to 0 and then adds 1. source - That means
#give z 1on a world where no stone was found yet leaves the counter at 0 (−1 + 1), still hidden. Give one more, or have the player find a real stone first. tested #take z nalways fails while the counter is −1.- 16 flags can be set at once. source tested
- Sidebar flags: a flag that starts with
Zis printed in the sidebar without theZ:#set Zlampshows lamp under the counters. Only one fits (each one is drawn in the same place, so the last one wins). A cheap "item held" display. source
szt-z@Shrine
#end
:touch
#give z 2
"The shrine glows."
#die
Elements
New in Super ZZT: source
Name (for #PUT/#CHANGE) |
What it is |
|---|---|
LAVA |
blocks the player ("Your way is blocked by lava.") |
FLOOR |
walkable decoration; also what forest becomes when cleared |
WATERN WATERS WATERW WATERE |
currents: walkable; they carry the player one square per turn in that direction (creatures aren't moved) |
WEB |
walkable; spiders only move along webs |
STONE |
a Stone of Power (Z), collected on touch |
ROTON |
creature that moves every tick, chasing the player with sideways swerves |
DRAGONPUP |
creature, pushable |
PAIRER |
creature, pushable |
SPIDER |
creature that moves on webs |
Gone from ZZT: TORCH and WATER (replaced by lava and currents). Names with spaces lose them (Dragon Pup → DRAGONPUP, Water N → WATERN). source
- Gems are pushable in Super ZZT. source
- Forest becomes green floor when walked through, instead of disappearing. source
Keys
While playing
| Key | ZZT | Super ZZT |
|---|---|---|
| Shift + arrow / Space | shoot | shoot (same) |
| T | torch | — (no torches) |
| H | help file | sends HINT to every object tested |
| R | — | restore a saved game |
S, P, B, Q/Esc, F, ? |
same as ZZT |
H is the "hint" button. Give a helpful object a :hint label: tested
szt-hint@Owl
#end
:hint
#set hinted
"Look behind the waterfall."
"Whoo."
Title screen
P play, R restore, I introduction, O ordering info, H high scores, Q/Esc quit, E editor (only with /E),
| debug console. source
Debug console
? while playing. The words are case-sensitive and must be typed in lowercase: source tested
| Type | Effect |
|---|---|
health |
+50 health |
ammo |
+20 ammo |
gems |
+5 gems |
keys |
all seven keys |
time |
30 more seconds |
z |
+1 Stone of Power |
noz |
hides the Stones counter again (−1) |
zap |
clears the squares around the player |
+name / -name |
set / clear a flag (any case) |
-all |
clears every flag |
Unlike ZZT, +health only sets a flag; the cheats have no +.
Making Super ZZT worlds
- Editors: ZEdit2 or the built-in editor (
SUPERZ /E). KevEdit doesn't support Super ZZT. - The big board is the feature: design for exploration and scrolling, with landmarks the player can see coming.
- Use
/dir nfor cutscenes and/i nfor timing; they replace long chains of/e/e/e. - Keep speech to two lines when you can: it doesn't stop the game.
- Plan around 128 stats and the same 20,000-byte board buffer on a board with 7,680 squares: big boards must be simple to stay small.
- This repository has
superzzt/szt.py(reads and writes.SZT, byte-exact on the three official worlds) andsuperzzt/lab.py(plays a world in the realSUPERZ.EXEand reads the save).