Color
The ZZT engine uses the color text mode of the IBM PC. As such, by default, the world format supports 16 foreground colors and 8 background colors. In addition, the color can optionally be marked as blinking, in which case the foreground character appears and disappears at a hardware-specific rate (typically every 32 frames).
Color palette
The canon ZZT palette as used by the community matches the official definition of these colors as used on EGA and later adapters:
(TODO: Some kind of swatch?)
However, the engine does not guarantee these colors anywhere - it relies on the palette provided by the graphics adapter, emulator or engine port. As such, some notable variants exist:
- The official IBM 5153 color monitor has a different palette in practice[1]. While not common among ZZTers, this may have been the monitor used by the IBM PC configuration ZZT was developed on[2].
- Some graphics card adapters and monitors did not correctly convert color #6 to brown, instead displaying it as a dark yellow.
- On Windows XP (2000?) using NTVDM, a different palette is used altogether. (TODO) This was a popular platform for interacting with ZZT games throughout the early-mid 2000s.
Monochrome mode
ZZT includes a monochrome option, which translates the colors to shades of grey for users of monochrome display adapters.
Unfortunately, in the process of adapting the color translation algorithm to Super ZZT's user interface, it regressed the display of ZZT's worlds and interface. These changes got pulled into the ZZT codebase with version 3.1.
Accessing additional colors
In the built-in editor, most of these combinations are not used or only used for built-in elements and thus not exposed to the user.
In the editor
The built-in editor only supports directly editing elements in seven colors: blue, green, cyan, red, purple, yellow and white. These correspond to the seven bright colors in the default 16-color CGA palette.
However, non-standard colors can be used by copying an existing tile of such a color, for example by using a toolkit board, and placing it on your own board. Alternatively, one can use an external editor, which generally allow use of all supported colors.
Using ZZT-OOP
ZZT-OOP element kind statements only support seven named colors: blue, green, cyan, red, purple, yellow and white, matching the ones available in the built-in editor. With the exception of doors, named colors apply to an element's foreground color, and are paired with a black background.
A handful of additional colors can be obtained through ZZT-OOP by using the change and put commands on built-in entities with hard-coded colors. This was most likely first discovered by Tim Gallagher in 1992[3].
Below are examples of how to obtain gems of various colors using ZZT-OOP. These are also implemented as a demonstration board in the Mystical Winds Encyclopedia.
Dark colors on black
Brown on black
#put e torch
#change torch gem
Alternatively:
#put e bear
#change bear gem
Dark cyan on black
#put e ammo
#change ammo gem
Dark purple on black
#put e energizer
#change energizer gem
Gray on black
#put e shark
#change shark gem
Black on dark colors
Black on dark green
#put e forest
#change forest gem
Black on gray
#put e empty
#put e gem
White on dark colors
White on gray
#put e door
#change door gem
White on dark blue
#put e blue door
#change door gem
White on dark green
#put e green door
#change door gem
White on dark red
#put e red door
#change door gem
White on dark purple
#put e purple door
#change door gem
White on brown
#put e yellow door
#change door gem
Blinking white on black and dark colors
Blinking white on black
#put e forest
#change forest door
#change door gem
Blinking white on dark cyan
#put e ammo
#put e door
#put e gem
Note: The ammo won't automatically be overwritten by the newly-created door. You can delete it with #change ammo empty, or put the object next to an obstacle such that the ammo gets crushed when the door is created.
Blinking white on dark purple
#put e energizer
#put e door
#change door gem
Blinking white on brown
#put e torch
#put e door
#change door gem
Alternatively:
#put e bear
#put e door
#change door gem
Note: The bear needs to be crushed by an obstacle when the door is created.
Blinking white on gray
#put e shark
#put e door
#change door gem
References
- ↑ VileR. (2022, June). The IBM 5153's True CGA Palette and Color Output
- ↑ Sweeney, Tim. (2019, January 8). Honestly nobody has beaten IBM’s PC AT keyboard. Can still get them on EBay. Loud as hell though! Twitter.
- ↑ Gallagher, Tim. (1992). Tim's Toolkit.